sc0101.cpp Corretti conflitti
sc1200.cpp Corretta apertura partite da saldi sc1200a.uml Aggiustata maschera git-svn-id: svn://10.65.10.50/trunk@2100 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
24492c5ec1
commit
7cb6b921f8
110
sc/sc0101.cpp
110
sc/sc0101.cpp
@ -23,27 +23,32 @@ protected: // TMask
|
||||
virtual void start_run();
|
||||
virtual bool stop_run(KEY k);
|
||||
|
||||
protected:
|
||||
protected:
|
||||
static bool totdoc_handler(TMask_field& f, KEY k);
|
||||
static bool pag_notify(TSheet_field& ps, int r, KEY k);
|
||||
static bool pag_handler(TMask_field& f, KEY key);
|
||||
static bool reset_handler(TMask_field& f, KEY key);
|
||||
static bool recalc_handler(TMask_field& f, KEY key);
|
||||
static bool nrate_handler(TMask_field& f, KEY key);
|
||||
static bool codcab_handler(TMask_field& f, KEY key);
|
||||
|
||||
|
||||
TPagamento& pagamento() const { return *_pag; }
|
||||
TSheet_field& pag_sheet() const { return (TSheet_field&)field(FS_RATESHEET); }
|
||||
void pag2sheet();
|
||||
|
||||
void read_scadenze();
|
||||
void write_scadenze() const;
|
||||
|
||||
public:
|
||||
TFattura_mask(TRiga_partite& fattura, const TString& codpag);
|
||||
virtual ~TFattura_mask() {}
|
||||
virtual ~TFattura_mask();
|
||||
};
|
||||
|
||||
TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag)
|
||||
: TMask("sc0100b"), _fattura(fattura), _pag(NULL)
|
||||
{
|
||||
{
|
||||
enable(FS_IMPONIBILI);
|
||||
set_handler(FS_IMPONIBILI, totdoc_handler);
|
||||
set_handler(FS_RESET, reset_handler);
|
||||
set_handler(FS_RECALC, recalc_handler);
|
||||
set_handler(FS_NRATE, nrate_handler);
|
||||
@ -54,10 +59,15 @@ TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag)
|
||||
pag_sheet().set_handler(pag_handler);
|
||||
|
||||
const TRiga_partite& partita = _fattura;
|
||||
const TString16 datadoc = partita.get(PART_DATADOC);
|
||||
const TString datadoc = partita.get(PART_DATADOC);
|
||||
_pag = new TPagamento(codpag, datadoc);
|
||||
}
|
||||
|
||||
|
||||
TFattura_mask::~TFattura_mask()
|
||||
{
|
||||
delete _pag;
|
||||
}
|
||||
|
||||
void TFattura_mask::start_run()
|
||||
{
|
||||
read_scadenze();
|
||||
@ -71,6 +81,14 @@ bool TFattura_mask::stop_run(KEY k)
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TFattura_mask::pag2sheet()
|
||||
{
|
||||
TPagamento& pag = pagamento();
|
||||
TSheet_field& ps = pag_sheet();
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
{
|
||||
if (k == K_INS || k == K_DEL)
|
||||
@ -87,7 +105,7 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
const int impos = in_valuta ? 2 : 1;
|
||||
|
||||
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE;
|
||||
bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE;
|
||||
bool m_scad = FALSE, m_tipo = FALSE, m_ulc = FALSE, mod = FALSE;
|
||||
word ahiahi = P_OK;
|
||||
|
||||
const bool recalc = fm.get_bool(FS_RECALC);
|
||||
@ -100,6 +118,7 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
const TString newi = ns.get(impos); // Imponibile (lire o valuta)
|
||||
const TString newp = ns.get(3); // Percentuale
|
||||
const TString newt = ns.get(4); // Tipo pagamento
|
||||
const TString newu = ns.get(5); // Ulteriore classificazione
|
||||
|
||||
// qui viene il bello, si fa per dire
|
||||
if (news != ts.get(0)) // modificata data scadenza
|
||||
@ -114,7 +133,8 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
}
|
||||
if (newt != ts.get(4)) // modificato tipo pagamento
|
||||
mod = m_tipo = TRUE;
|
||||
|
||||
if (newu != ts.get(5)) // modificato tipo pagamento
|
||||
mod = m_ulc = TRUE;
|
||||
|
||||
// settato da recalc_rate se occorre ridefinire lo sheet
|
||||
// aggiungendo o togliendo righe
|
||||
@ -128,7 +148,8 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
(m_perc ? (const char*)newp : (const char*)newi) :
|
||||
NULL),
|
||||
(m_scad ? (const char*)news : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
(m_ulc ? (const char*)newu : NULL),
|
||||
rdiff, mcomm, need_recalc);
|
||||
// see if rdiff changed
|
||||
fm.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
@ -163,13 +184,27 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// ridefinisci lo sheet sulla base delle nuove rate
|
||||
pag.set_sheet(ps);
|
||||
rws = ps.rows_array();
|
||||
fm.pag2sheet();
|
||||
}
|
||||
|
||||
return doit;
|
||||
}
|
||||
|
||||
|
||||
bool TFattura_mask::totdoc_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_TAB && f.focusdirty())
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = fm.pagamento();
|
||||
const real tot(f.get());
|
||||
pag.set_total(tot, ZERO, ZERO);
|
||||
pag.set_rate_auto();
|
||||
fm.pag2sheet();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB || key == K_ENTER)
|
||||
@ -218,13 +253,9 @@ bool TFattura_mask::nrate_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
|
||||
pag.set_numero_rate(atoi(f.get()));
|
||||
if (pag.dirty())
|
||||
{
|
||||
TSheet_field& ps = (TSheet_field&)fm.field(FS_RATESHEET);
|
||||
pag.set_sheet(ps);
|
||||
}
|
||||
fm.pag2sheet();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -235,7 +266,7 @@ bool TFattura_mask::codcab_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const short id = f.dlg() == FS_NSCAB ? FS_NSABI : FS_VSABI;
|
||||
const int pos = id == FS_NSABI ? 6 : 8;
|
||||
const int pos = id == FS_NSABI ? 7 : 9;
|
||||
const TString16 abi = m.get(id);
|
||||
const TString16 cab = m.get(id+1);
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
@ -284,11 +315,11 @@ void TFattura_mask::read_scadenze()
|
||||
for (int i = 1; i <= partita.rate(); i++)
|
||||
{
|
||||
const TRiga_scadenze& scadenza = partita.rata(i);
|
||||
real importo = scadenza.get(SCAD_IMPORTO);
|
||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
real importo = scadenza.get(SCAD_IMPORTO);
|
||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||
const TString ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
if (scadenza.in_valuta())
|
||||
{
|
||||
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
||||
@ -298,23 +329,22 @@ void TFattura_mask::read_scadenze()
|
||||
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid);
|
||||
|
||||
TToken_string& str = ps.row(i-1);
|
||||
str.add(scadenza.get(SCAD_CODABIPR), 6);
|
||||
str.add(scadenza.get(SCAD_CODCABPR), 7);
|
||||
str.add(scadenza.get(SCAD_CODABI), 8);
|
||||
str.add(scadenza.get(SCAD_CODCAB), 9);
|
||||
str.add(scadenza.get(SCAD_CODABIPR), 7);
|
||||
str.add(scadenza.get(SCAD_CODCABPR), 8);
|
||||
str.add(scadenza.get(SCAD_CODABI), 9);
|
||||
str.add(scadenza.get(SCAD_CODCAB), 10);
|
||||
if (i == 1)
|
||||
{
|
||||
set(FS_NSABI, str.get(6));
|
||||
set(FS_NSCAB, str.get(7));
|
||||
set(FS_VSABI, str.get(8));
|
||||
set(FS_VSCAB, str.get(9));
|
||||
set(FS_NSABI, str.get(7));
|
||||
set(FS_NSCAB, str.get(8));
|
||||
set(FS_VSABI, str.get(9));
|
||||
set(FS_VSCAB, str.get(10));
|
||||
set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
pag.set_rate_auto();
|
||||
}
|
||||
|
||||
@ -324,13 +354,12 @@ void TFattura_mask::read_scadenze()
|
||||
set(FS_MCOMM, pag.mese_commerciale() ? "X" : "");
|
||||
set(FS_RECALC, "X", TRUE);
|
||||
set(FS_NRATE, pag.n_rate());
|
||||
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
|
||||
|
||||
// se la prima rata e' fissa non si tocca
|
||||
if (pag.tipo_prima_rata() > 3)
|
||||
ps.disable_cell(0,-1);
|
||||
|
||||
pag2sheet();
|
||||
}
|
||||
|
||||
void TFattura_mask::write_scadenze() const
|
||||
@ -379,8 +408,6 @@ void TFattura_mask::write_scadenze() const
|
||||
|
||||
bool TGame_mask::edit_fattura(TPartita& p, int nriga)
|
||||
{
|
||||
TString16 codpag;
|
||||
|
||||
const bool nuova = nriga <= 0;
|
||||
if (nuova)
|
||||
nriga = nuova_riga(p);
|
||||
@ -404,10 +431,11 @@ bool TGame_mask::edit_fattura(TPartita& p, int nriga)
|
||||
|
||||
void TSaldaconto_app::edit_partite(const TMask& m)
|
||||
{
|
||||
TBill b; // Legge il conto della riga selezionata
|
||||
b.set(m.get_int(F_GRUPPO), m.get_int(F_CONTO),
|
||||
m.get_long(F_SOTTOCONTO), m.get(F_TIPO)[0]);
|
||||
|
||||
const char t = m.get(F_TIPO)[0];
|
||||
const int g = m.get_int(F_GRUPPO);
|
||||
const int c = m.get_int(F_CONTO);
|
||||
const long s = m.get_long(F_SOTTOCONTO)
|
||||
const TBill b(g, c, s, t); // Legge il conto della riga selezionata
|
||||
TGame_mask gm(b, 0, 0);
|
||||
gm.run();
|
||||
if (gm.changed() && yesno_box("Si vogliono salvare le partite modificate?"))
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include <applicat.h>
|
||||
#include <config.h>
|
||||
#include <mask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
@ -24,7 +25,10 @@ class TCreatepart_app : public TApplication
|
||||
TLocalisamfile* _scadenze;
|
||||
TLocalisamfile* _pagsca;
|
||||
|
||||
int _anno;
|
||||
bool _num_cli, _num_for;
|
||||
|
||||
protected: // Applicat
|
||||
virtual void on_config_change();
|
||||
|
||||
protected:
|
||||
|
||||
@ -32,7 +36,7 @@ protected:
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
|
||||
bool zap_partite();
|
||||
bool zap_partite(int anno);
|
||||
|
||||
public:
|
||||
|
||||
@ -65,14 +69,20 @@ bool TCreatepart_app::destroy()
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
void TCreatepart_app::on_config_change()
|
||||
{
|
||||
TConfig cd(CONFIG_DITTA);
|
||||
_num_cli = cd.get_bool("NrCliDx");
|
||||
_num_for = cd.get_bool("NrForDx");
|
||||
}
|
||||
|
||||
bool TCreatepart_app::zap_partite()
|
||||
bool TCreatepart_app::zap_partite(int anno)
|
||||
{
|
||||
bool first = TRUE;
|
||||
for (_partite->first(); !_partite->eof(); _partite->read(_isgreat))
|
||||
for (_partite->first(); !_partite->eof(); _partite->next())
|
||||
{
|
||||
// ignora saldaconto altri esercizi
|
||||
if (_partite->get_long(PART_ANNO) != _anno)
|
||||
if (_partite->get_long(PART_ANNO) != anno)
|
||||
continue;
|
||||
|
||||
if (first)
|
||||
@ -127,7 +137,7 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
_anno = m.get_int(F_ANNO);
|
||||
const int anno = m.get_int(F_ANNO);
|
||||
desccl = m.get(F_DESCCL);
|
||||
descfo = m.get(F_DESCFO);
|
||||
|
||||
@ -135,11 +145,11 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
m.set(F_NUMPART, n_part);
|
||||
|
||||
// sputtana tutto il saldaculo
|
||||
if (!zap_partite())
|
||||
if (!zap_partite(anno))
|
||||
continue;
|
||||
|
||||
TRelation saldi(LF_SALDI);
|
||||
saldi.curr().put(SLD_ANNOES, _anno);
|
||||
saldi.curr().put(SLD_ANNOES, anno);
|
||||
|
||||
TCursor cur(&saldi, "", 1, &saldi.curr(), &saldi.curr());
|
||||
const long items = cur.items();
|
||||
@ -162,7 +172,7 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
TSaldo sld;
|
||||
|
||||
// ciuccia il saldo e vedi se e' movimentato nell'esercizio corrente
|
||||
if (!sld.ultima_immissione_verifica(_anno, gruppo, conto, sottoc, indbil, 1))
|
||||
if (!sld.ultima_immissione_verifica(anno, gruppo, conto, sottoc, indbil, 1))
|
||||
{
|
||||
// non movimentato: se e' conto patrimoniale....
|
||||
if (!(indbil == 1 || indbil == 2 || indbil == 5))
|
||||
@ -171,12 +181,12 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
continue;
|
||||
}
|
||||
// .. vedi saldo esercizio precedente, altrimenti inkul
|
||||
sld.saldofin_esprec(_anno, gruppo, conto, sottoc);
|
||||
sld.saldofin_esprec(anno, gruppo, conto, sottoc);
|
||||
}
|
||||
|
||||
// genera importo con sezione appropriata
|
||||
TImporto saldo(cur.curr().get_char(SLD_FLAGSALINI), sld.saldoini());
|
||||
TImporto pdare('D', sld.prgdare());
|
||||
TImporto pdare('D', sld.prgdare());
|
||||
TImporto pavere('A', sld.prgavere());
|
||||
|
||||
saldo += pdare;
|
||||
@ -188,13 +198,16 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
if (!saldo.is_zero())
|
||||
{
|
||||
const TBill clifo(gruppo, conto, sottoc, cf);
|
||||
TPartita game(clifo, _anno, "*");
|
||||
|
||||
TString16 numero("*");
|
||||
if ((cf == 'C' && _num_cli) || (cf == 'F' && _num_for))
|
||||
numero.right_just(7);
|
||||
TPartita game(clifo, anno, numero);
|
||||
|
||||
TRiga_partite& riga = game.new_row();
|
||||
riga.put(PART_DATAREG, today);
|
||||
riga.put(PART_DATADOC, today);
|
||||
riga.put(PART_SEZ, saldo.sezione());
|
||||
riga.put(PART_IMPORTO, saldo.valore());
|
||||
riga.put(PART_DATAREG, today);
|
||||
riga.put(PART_DATADOC, today);
|
||||
riga.put(PART_SEZ, saldo.sezione());
|
||||
riga.put(PART_IMPORTO, saldo.valore());
|
||||
riga.put(PART_DESCR, cf == 'C' ? desccl : descfo);
|
||||
|
||||
// cazzata dare/avere/fare/baciare/cagare
|
||||
@ -226,7 +239,7 @@ bool TCreatepart_app::menu(MENU_TAG)
|
||||
end_wait();
|
||||
}
|
||||
else
|
||||
message_box("Nessun saldo presente per l'esercizio %d", _anno);
|
||||
message_box("Nessun saldo presente per l'esercizio %d", anno);
|
||||
} // while run
|
||||
|
||||
return FALSE;
|
||||
|
@ -10,17 +10,17 @@ END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 31 1 "@bATTENZIONE"
|
||||
PROMPT 31 1 "@bATTENZIONE"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 14 3 "@bLa generazione della partite puo' richiedere"
|
||||
PROMPT 14 3 "@bLa generazione della partite puo' richiedere"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 18 4 "@btempo. Siate certi di voler proseguire."
|
||||
PROMPT 18 4 "@btempo. Siate certi di voler proseguire."
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
@ -33,8 +33,7 @@ BEGIN
|
||||
DISPLAY "Data fine esercizio " D1
|
||||
OUTPUT F_ANNO CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
HELP "Anno di esercizio del quale si desidera la generazione delle partite"
|
||||
WARNING "L' anno di esercizio e' obbligatorio"
|
||||
WARNING "Anno di esercizio assente"
|
||||
END
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user