Gestione saldaconto
git-svn-id: svn://10.65.10.50/trunk@1148 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e5be670ab1
commit
69c57c5a6f
@ -39,11 +39,13 @@
|
||||
#define F_DENCOMNASC 135
|
||||
#define F_CODSTAT 130
|
||||
#define F_CODPAG 131
|
||||
#define F_DESPAG 231
|
||||
#define F_RAGSOC1 132
|
||||
#define F_CODABI 133
|
||||
#define F_CODBAN 134
|
||||
#define F_DESBAN 140
|
||||
#define F_CODVAL 136
|
||||
#define F_DESVAL 236
|
||||
#define F_FIDO 139
|
||||
#define F_LOCALITACF 144
|
||||
#define F_CODAG 145
|
||||
@ -59,6 +61,7 @@
|
||||
#define F_PTEL3 155
|
||||
#define F_TEL3 156
|
||||
#define F_CODLIN 157
|
||||
#define F_DESLIN 257
|
||||
|
||||
#define F_TIPOCFVEN 158
|
||||
#define F_CODCFVEN 159
|
||||
|
127
cg/cg2100.cpp
127
cg/cg2100.cpp
@ -114,8 +114,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
||||
TMask& cgm = cg.sheet_mask();
|
||||
|
||||
if (n == 1) // movimento non IVA
|
||||
{
|
||||
cgm.set_handler(100, showpartite_handler); // bottoncino riga
|
||||
{
|
||||
m->set_handler(S_TOTDOC, totdoc_handler);
|
||||
m->set_handler(S_SPESE, speserimb_handler);
|
||||
m->set_handler(S_ALSPESE, altrespese_handler);
|
||||
@ -124,6 +123,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
||||
m->set_handler(S_RITPROF, ritprof_handler);
|
||||
m->set_handler(S_DIFFCAMB, diffcamb_handler);
|
||||
}
|
||||
|
||||
cgm.set_handler(101, dareavere_handler);
|
||||
cgm.set_handler(102, dareavere_handler);
|
||||
cgm.set_handler(105, cg_conto_handler);
|
||||
@ -190,7 +190,6 @@ bool TPrimanota_application::user_destroy()
|
||||
if (_msk[m] != NULL) delete _msk[m];
|
||||
|
||||
if (_pag) delete _pag;
|
||||
if (_pag_rows != NULL) delete _pag_rows;
|
||||
|
||||
delete _giornale;
|
||||
delete _causale;
|
||||
@ -220,14 +219,15 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
if (cod != NULL)
|
||||
ok = causale().read(cod, year);
|
||||
|
||||
bool nob = FALSE, dob = FALSE, sal = FALSE;
|
||||
bool nob = FALSE, dob = FALSE;
|
||||
TipoIVA iva = nessuna_iva;
|
||||
_is_saldaconto = FALSE;
|
||||
|
||||
if (ok)
|
||||
{
|
||||
_is_saldaconto = sal = gestione_saldaconto() && causale().saldaconto();
|
||||
dob = sal | causale().data_doc();
|
||||
nob = sal | causale().num_doc();
|
||||
_is_saldaconto = gestione_saldaconto() && causale().saldaconto();
|
||||
dob = _is_saldaconto | causale().data_doc();
|
||||
nob = _is_saldaconto | causale().num_doc();
|
||||
iva = causale().iva();
|
||||
}
|
||||
|
||||
@ -239,20 +239,28 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
m->efield(F_NUMDOC).check_type(nob ? CHECK_REQUIRED : CHECK_NORMAL); // Num. doc. obbligatorio
|
||||
m->efield(F_DATADOC).check_type(dob ? CHECK_REQUIRED : CHECK_NORMAL); // Data doc. obbligatoria
|
||||
|
||||
if (iva != nessuna_iva)
|
||||
if (iva == nessuna_iva)
|
||||
{
|
||||
TMask& cgm = cgs().sheet_mask();
|
||||
cgm.set_handler(100, _is_saldaconto ? showpartite_handler : NULL); // bottoncino riga
|
||||
cgm.enable(100, _is_saldaconto);
|
||||
}
|
||||
else
|
||||
{
|
||||
m->enable_page(2, sal);
|
||||
m->enable_page(2, _is_saldaconto);
|
||||
|
||||
m->efield(F_CODPAG).check_type(sal ? CHECK_REQUIRED : CHECK_NORMAL);// Cod. pag. obbligatorio
|
||||
const bool av = causale().reg().agenzia_viaggi();
|
||||
m->show(F_DATA74TER, av);
|
||||
if (!av) m->reset(F_DATA74TER);
|
||||
m->efield(F_CODPAG).check_type(_is_saldaconto ? CHECK_REQUIRED : CHECK_NORMAL);// Cod. pag. obbligatorio
|
||||
|
||||
m->show(F_ANNORIF, sal); // Mostra/nasconde anno e riferimento partita
|
||||
m->show(F_NUMRIF, sal);
|
||||
m->show(F_ANNORIF, _is_saldaconto); // Mostra/nasconde anno e riferimento partita
|
||||
m->show(F_NUMRIF, _is_saldaconto);
|
||||
|
||||
m->enable(F_ANNORIF, ins); // Dis/abilita anno e riferimento partita
|
||||
m->enable(F_NUMRIF, ins);
|
||||
m->field(F_NUMRIF).set_justify(iva == iva_acquisti ? _num_for : _num_cli);
|
||||
|
||||
const bool av = causale().reg().agenzia_viaggi();
|
||||
m->show(F_DATA74TER, av);
|
||||
if (!av) m->reset(F_DATA74TER);
|
||||
|
||||
if (ins)
|
||||
{
|
||||
@ -288,9 +296,8 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
|
||||
if (err)
|
||||
{
|
||||
error_box("Il conto %d %d %ld della causale e' %s",
|
||||
tc.gruppo(), tc.conto(), tc.sottoconto(),
|
||||
err == 1 ? "sconosciuto" : "sospeso");
|
||||
error_box("Il conto della riga %d della causale e' %s",
|
||||
i, err == 1 ? "sconosciuto" : "sospeso");
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -302,18 +309,23 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
|
||||
if (iva == nessuna_iva)
|
||||
{
|
||||
char tipr = ' ';
|
||||
|
||||
// non si cagano gli importi totali
|
||||
if (nriga < 8) continue;
|
||||
|
||||
switch(nriga)
|
||||
char tipr = ' ';
|
||||
if (_is_saldaconto) switch(nriga)
|
||||
{
|
||||
case 8: tipr = 'P'; break;
|
||||
case 9: tipr = 'A'; break;
|
||||
case 10: tipr = 'G'; break;
|
||||
case 11: tipr = 'R'; break;
|
||||
}
|
||||
case 8:
|
||||
tipr = 'P'; break;
|
||||
case 9:
|
||||
tipr = 'A'; break;
|
||||
case 10:
|
||||
tipr = 'G'; break;
|
||||
case 11:
|
||||
tipr = 'R'; break;
|
||||
default:
|
||||
tipr = ' '; break;
|
||||
}
|
||||
const int pos = set_cgs_row(-1,zero,tc,desc,tipr);
|
||||
if (sezione > ' ')
|
||||
cgs().disable_cell(pos, sezione == 'A' ? 0 : 1);
|
||||
@ -335,6 +347,8 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
// Certified 100%
|
||||
void TPrimanota_application::print()
|
||||
{
|
||||
TExternal_app stampa("cg3 -0");
|
||||
@ -433,7 +447,11 @@ void TPrimanota_application::init_mask(TMask& m)
|
||||
const bool valintra = causale().valintra();
|
||||
const bool corrisp = causale().corrispettivi();
|
||||
|
||||
if (_iva != nessuna_iva)
|
||||
if (_iva == nessuna_iva)
|
||||
{
|
||||
m.enable(-5, _is_saldaconto); // Abilita campi saldaconto
|
||||
}
|
||||
else
|
||||
{
|
||||
char clig, forg;
|
||||
if (_iva == iva_acquisti)
|
||||
@ -539,27 +557,6 @@ void TPrimanota_application::init_modify_mode(TMask& m)
|
||||
calcola_imp(); // Calcola totale imponibile ed imposte
|
||||
}
|
||||
|
||||
|
||||
// Legge un conto da una riga contabile o iva di prima nota
|
||||
bool TPrimanota_application::get_conto(const TRectype& r, TBill& c) const
|
||||
{
|
||||
c.set(r.get_int("GRUPPO"), r.get_int("CONTO"),
|
||||
r.get_long("SOTTOCONTO"), r.get_char("TIPOC"));
|
||||
if (r.num() == LF_RMOVIVA)
|
||||
c.tipo_cr(r.get_int("TIPOCR"));
|
||||
return c.ok();
|
||||
}
|
||||
|
||||
// Scrive un conto su una riga di prima nota
|
||||
void TPrimanota_application::put_conto(TRectype& r, const TBill& c) const
|
||||
{
|
||||
r.put("TIPOC", c.tipo());
|
||||
r.put("GRUPPO", c.gruppo());
|
||||
r.put("CONTO", c.conto());
|
||||
r.put("SOTTOCONTO", c.sottoconto());
|
||||
}
|
||||
|
||||
|
||||
// Controlla sulla causale se il segno del totale documento (ritsoc=FALSE)
|
||||
// o quello delle ritenute sociali (ritsoc=TRUE) e' invertito rispetto al normale
|
||||
bool TPrimanota_application::test_swap(bool ritsoc)
|
||||
@ -618,7 +615,7 @@ int TPrimanota_application::read(TMask& m)
|
||||
TImporto import(sezione, im);
|
||||
import.add_to(riga); // Dare/Avere 101-102
|
||||
|
||||
TBill conto; get_conto(r, conto);
|
||||
TBill conto; conto.get(r);
|
||||
riga.add(conto.string(0x3)); // Conto 103-107
|
||||
_saldi.aggiorna(conto, im, sezione, FALSE);
|
||||
|
||||
@ -676,7 +673,7 @@ int TPrimanota_application::read(TMask& m)
|
||||
}
|
||||
riga.add(imposta.string()); // Imposta 104
|
||||
|
||||
TBill c; get_conto(r, c);
|
||||
TBill c; c.get(r);
|
||||
c.add_to(riga, 4, 0x7); // Conto 105-110
|
||||
|
||||
ivas().row(i) = riga;
|
||||
@ -732,7 +729,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
|
||||
|
||||
r.put("SEZIONE", n.sezione()); // Sezione
|
||||
r.put("IMPORTO", n.valore()); // Importo
|
||||
put_conto(r, conto); // Conto
|
||||
conto.put(r); // Conto
|
||||
|
||||
row.get(); // Codice descrizione
|
||||
r.put("DESCR", row.get()); // Descrizione riga
|
||||
@ -816,7 +813,7 @@ void TPrimanota_application::mask2rel(const TMask& m)
|
||||
const TBill c(row, -1, 0x1);
|
||||
const int rimp = bill2pos(c, 'I')+1;
|
||||
r.put("RIGAIMP", rimp);
|
||||
put_conto(r, c);
|
||||
c.put(r);
|
||||
}
|
||||
}
|
||||
|
||||
@ -859,16 +856,16 @@ int TPrimanota_application::write(const TMask& m)
|
||||
if (iva() != nessuna_iva)
|
||||
{
|
||||
causale().reg().reread(); // Aggiorna protocollo IVA
|
||||
if (!gestione_saldaconto() && !m.get_bool(F_SOLAIVA))
|
||||
{
|
||||
const TString16 causimm(causale().causale_inc_imm());
|
||||
if (causimm.not_empty())
|
||||
genera_incasso(causimm);
|
||||
}
|
||||
if (_is_saldaconto)
|
||||
write_scadenze(m);
|
||||
else
|
||||
if (!m.get_bool(F_SOLAIVA))
|
||||
{
|
||||
const TString16 causimm(causale().causale_inc_imm());
|
||||
if (causimm.not_empty())
|
||||
genera_incasso(causimm);
|
||||
}
|
||||
}
|
||||
|
||||
if (gestione_saldaconto() && causale().saldaconto())
|
||||
write_scadenze(m);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -883,7 +880,7 @@ int TPrimanota_application::rewrite(const TMask& m)
|
||||
_saldi.registra();
|
||||
check_saldi();
|
||||
}
|
||||
if (gestione_saldaconto() && causale().saldaconto())
|
||||
if (_is_saldaconto && iva() != nessuna_iva)
|
||||
write_scadenze(m);
|
||||
return err;
|
||||
}
|
||||
@ -916,7 +913,7 @@ HIDDEN bool incasso_handler(TMask_field& f, KEY k)
|
||||
const TImporto imp(m.get(sid)[0], val);
|
||||
tot += imp;
|
||||
}
|
||||
if (tot.valore() != ZERO)
|
||||
if (!tot.is_zero())
|
||||
return f.error_box("Il movimento e' sbilaciato di %s", tot.valore().string("."));
|
||||
}
|
||||
return TRUE;
|
||||
@ -926,7 +923,7 @@ HIDDEN bool incasso_handler(TMask_field& f, KEY k)
|
||||
void TPrimanota_application::genera_incasso(const char* causimm)
|
||||
{
|
||||
TMask m("cg2100i");
|
||||
if (iva() == iva_acquisti) m.set_caption("Movimento di TPagamento immediato");
|
||||
if (iva() == iva_acquisti) m.set_caption("Movimento di pagamento immediato");
|
||||
|
||||
m.set_handler(F_DATAREG, datareg_handler);
|
||||
m.set_handler(F_DATACOMP, datacomp_handler);
|
||||
@ -1053,7 +1050,7 @@ void TPrimanota_application::genera_incasso(const char* causimm)
|
||||
for (int r = 0; r < i; r++)
|
||||
{
|
||||
const TRectype& rec = inc.cg(r);
|
||||
TBill c; get_conto(rec, c);
|
||||
TBill c; c.get(rec);
|
||||
const real im(rec.get("IMPORTO"));
|
||||
const char sezione = rec.get_char("SEZIONE");
|
||||
_saldi.aggiorna(c, im, sezione, TRUE);
|
||||
|
12
cg/cg2100.h
12
cg/cg2100.h
@ -127,5 +127,17 @@
|
||||
#define K_ANNOES 514
|
||||
#define K_DATACOMP 515
|
||||
|
||||
// Scadenze
|
||||
|
||||
#define S_ANNO 101
|
||||
#define S_NUM 102
|
||||
#define S_SCADENZE 103
|
||||
|
||||
#define S_RATA 101
|
||||
#define S_DATA 102
|
||||
#define S_IMPORTOVAL 103
|
||||
#define S_IMPORTO 104
|
||||
#define S_DESCR 105
|
||||
#define S_TIPO 106
|
||||
|
||||
#endif
|
||||
|
@ -19,7 +19,7 @@ BEGIN
|
||||
FLAGS "FRD"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
OUTPUT K_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
@ -35,8 +35,7 @@ NUMBER F_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FIELD NUMREG
|
||||
FLAGS "RD"
|
||||
KEY 1
|
||||
FLAGS "DGR"
|
||||
MESSAGE COPY,K_NUMREG
|
||||
END
|
||||
|
||||
@ -46,6 +45,7 @@ BEGIN
|
||||
HELP "Data in cui viene effettuata l'operazione"
|
||||
FIELD DATAREG
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATAREG
|
||||
END
|
||||
|
||||
|
||||
@ -55,6 +55,7 @@ BEGIN
|
||||
HELP "Data di competenza dell'operazione"
|
||||
FIELD DATACOMP
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,K_DATACOMP
|
||||
END
|
||||
|
||||
NUMBER F_ANNOES 4
|
||||
@ -62,7 +63,7 @@ BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FIELD ANNOES
|
||||
MESSAGE COPY,K_ANNOES
|
||||
FLAGS "DZ"
|
||||
FLAGS "DGZ"
|
||||
END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
@ -203,66 +204,72 @@ END
|
||||
|
||||
NUMBER S_TOTDOC 15 0
|
||||
BEGIN
|
||||
PROMPT 1 10 "Totale documento "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 1 10 "Totale documento "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
BEGIN
|
||||
PROMPT 0 11 "Voci di spesa"
|
||||
PROMPT 0 9 "Voci di spesa per saldaconto"
|
||||
END
|
||||
|
||||
|
||||
NUMBER S_SPESE 15 0
|
||||
BEGIN
|
||||
PROMPT 1 12 "Spese e rimborsi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 1 12 "Spese e rimborsi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER S_ALSPESE 15 0
|
||||
BEGIN
|
||||
PROMPT 39 12 "Altre spese "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 39 12 "Altre spese "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
|
||||
NUMBER S_ABBATT 15 0
|
||||
BEGIN
|
||||
PROMPT 1 14 "Abbuoni attivi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 1 14 "Abbuoni attivi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER S_ABBPASS 15 0
|
||||
BEGIN
|
||||
PROMPT 39 14 "Abbuoni passivi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 39 14 "Abbuoni passivi "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER S_RITPROF 15 0
|
||||
BEGIN
|
||||
PROMPT 1 16 "Ritenuta prof. "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 1 16 "Ritenuta prof. "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
|
||||
NUMBER S_DIFFCAMB 15 0
|
||||
BEGIN
|
||||
PROMPT 39 16 "Diff. cambio "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
PROMPT 39 16 "Diff. cambio "
|
||||
HELP ""
|
||||
FLAGS "R"
|
||||
PICTURE "."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -289,15 +296,12 @@ END
|
||||
NUMBER K_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 56 3 "Operazione n. "
|
||||
FIELD NUMREG
|
||||
FLAGS "RD"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE K_DATAREG
|
||||
BEGIN
|
||||
PROMPT 1 3 "Data operazione "
|
||||
HELP "Data in cui viene effettuata l'operazione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -305,35 +309,30 @@ END
|
||||
DATE K_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 1 4 "Data di competenza "
|
||||
HELP "Data di competenza dell'operazione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER K_ANNOES 4
|
||||
BEGIN
|
||||
PROMPT 56 4 "Esercizio "
|
||||
FIELD ANNOES
|
||||
FLAGS "D"
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING K_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
HELP "Codice della causale generante l'operazione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
HELP "Descrizione della causale generante l'operazione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST K_PROVVISORIO 1 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
HELP "Indicare se si tratta di movimento provvisorio"
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
ITEM "N|Si (non cancellabile)"
|
||||
@ -350,14 +349,12 @@ END
|
||||
DATE K_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
HELP "Data del documento generante il movimento"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING K_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 56 7 "Documento n. "
|
||||
HELP "Numero del documento generante il movimento"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -402,4 +399,4 @@ ENDMASK
|
||||
|
||||
#include "cg21cg.uml"
|
||||
|
||||
z
|
||||
z
|
||||
|
@ -91,8 +91,11 @@ real TPrimanota_application::totale_documento()
|
||||
bool TPrimanota_application::showpartite_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
warning_box("TRULLALLERO TRULLALLA\', LA PARTITA ECCOLA QUA!");
|
||||
{
|
||||
TSheet_field& s = app().cgs();
|
||||
TToken_string& r = s.row(s.selected());
|
||||
const TBill c(r, 2, 0x1);
|
||||
app().edit_partite(c);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -390,7 +393,7 @@ return n;
|
||||
HIDDEN int compare_rows(const TObject** o1, const TObject** o2)
|
||||
{
|
||||
// Totale, Rit.Fisc., Rit.Soc., da riga IVA, riga contabile, IVA detr., IVA non detr.
|
||||
static char* sort_order = "TFSI DN";
|
||||
const char* const sort_order = "TFSI DNGAPRLC";
|
||||
|
||||
const TToken_string* r1 = (const TToken_string*)*o1;
|
||||
const TToken_string* r2 = (const TToken_string*)*o2;
|
||||
@ -1085,6 +1088,7 @@ bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Gestore del sottoconto dello sheet IVA
|
||||
bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (!suspended_handler(f, key))
|
||||
@ -1649,12 +1653,14 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
||||
bool TPrimanota_application::totale_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
TMask& m = f.mask();
|
||||
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
app().add_cgs_tot(f.mask());
|
||||
f.mask().field(F_CODIVA).on_hit();
|
||||
if (app().is_saldaconto() && !(f.mask().get(F_CODPAG).blank()))
|
||||
app().set_scadenze(f.mask());
|
||||
app().add_cgs_tot(m);
|
||||
m.field(F_CODIVA).on_hit();
|
||||
if (app().is_saldaconto() && m.get(F_CODPAG).not_empty())
|
||||
app().set_scadenze(m);
|
||||
}
|
||||
|
||||
if (key == K_ENTER && f.get().empty())
|
||||
|
23
cg/cg2102.h
23
cg/cg2102.h
@ -62,7 +62,7 @@ class TPrimanota_application : public TRelation_application
|
||||
int _mode; // Modo maschera corrente
|
||||
|
||||
TBill _conto_ricavo; // Conto di ricavo del clifo
|
||||
TArray* _pag_rows;
|
||||
TString_array _pag_rows;
|
||||
|
||||
static bool showpartite_handler(TMask_field& f, KEY k);
|
||||
static bool speserimb_handler(TMask_field& f, KEY k);
|
||||
@ -113,12 +113,14 @@ class TPrimanota_application : public TRelation_application
|
||||
|
||||
void reset_sheet_row(TSheet_field& s, int n);
|
||||
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual void print();
|
||||
protected: // TApplication
|
||||
virtual void on_firm_change();
|
||||
virtual void on_config_change();
|
||||
virtual void print();
|
||||
|
||||
protected: // TRelation_application
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual bool changing_mask(int mode);
|
||||
virtual TMask* get_mask(int mode);
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
@ -132,15 +134,13 @@ protected:
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual bool remove();
|
||||
|
||||
protected:
|
||||
void check_saldi();
|
||||
void genera_incasso(const char* causimm);
|
||||
|
||||
TMask* load_mask(int n);
|
||||
TMask& occas_mask() { return *load_mask(3); }
|
||||
|
||||
bool get_conto(const TRectype& r, TBill& c) const;
|
||||
void put_conto(TRectype& r, const TBill& c) const;
|
||||
|
||||
void mask2rel(const TMask& m);
|
||||
|
||||
TipoIVA iva() const { return _iva; }
|
||||
@ -156,7 +156,7 @@ protected:
|
||||
TSheet_field& cgs() const;
|
||||
TSheet_field& ivas() const;
|
||||
TSheet_field& pags() const;
|
||||
TArray* pag_rows() const { return _pag_rows; }
|
||||
TString_array& pag_rows() { return _pag_rows; }
|
||||
|
||||
static int bill2pos(const TBill& conto, char tipo);
|
||||
static TipoIVA reg2IVA(const char* registro, int anno);
|
||||
@ -194,7 +194,7 @@ protected:
|
||||
int set_cgs_row(int n, const TImporto& importo, TBill& conto, const char* desc, char tipo);
|
||||
void disable_cgs_cells(int n, char tipo);
|
||||
void add_cgs_tot(TMask& m);
|
||||
// void add_cgs_tot_noiva(TMask& m);
|
||||
|
||||
void add_cgs_rit(bool fisc);
|
||||
void add_cgs_row_noniva(TipoConto t);
|
||||
void generazione_righe_cg(int r);
|
||||
@ -202,12 +202,13 @@ protected:
|
||||
void reset_cgs_row(int n) { reset_sheet_row(cgs(), n); }
|
||||
void reset_ivas_row(int n) { reset_sheet_row(ivas(), n); }
|
||||
|
||||
TPagamento* pagamento() { return _pag; }
|
||||
TPagamento& pagamento() { CHECK(_pag, "Pagamento nullo"); return *_pag; }
|
||||
void set_pagamento(const char* c, const char* d);
|
||||
void reset_pagamento();
|
||||
void set_scadenze(TMask& m);
|
||||
bool read_scadenze(const TMask& m);
|
||||
void write_scadenze(const TMask& m);
|
||||
bool edit_partite(const TBill& b);
|
||||
|
||||
static TPrimanota_application& app() { return (TPrimanota_application&)main_app(); }
|
||||
|
||||
|
549
cg/cg2104.cpp
549
cg/cg2104.cpp
@ -3,18 +3,22 @@
|
||||
// fv 24/8/94
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#include <sheet.h>
|
||||
|
||||
#include "cg2102.h"
|
||||
#include "cg2100.h"
|
||||
#include "cg21sld.h"
|
||||
#include "pagament.h"
|
||||
|
||||
#include <partite.h>
|
||||
#include <scadenze.h>
|
||||
|
||||
bool TPrimanota_application::pag_notify(int r, KEY k)
|
||||
{
|
||||
TPagamento* pag = app().pagamento();
|
||||
TSheet_field* ps = &(app().pags());
|
||||
TMask* msk = &(app().curr_mask());
|
||||
TArray* rws = app().pag_rows();
|
||||
TPagamento& pag = app().pagamento();
|
||||
TSheet_field& ps = app().pags();
|
||||
TMask* msk = &(app().curr_mask());
|
||||
TString_array& rws = app().pag_rows();
|
||||
|
||||
int rdiff = atoi(msk->get(FS_RDIFFER));
|
||||
|
||||
@ -35,8 +39,8 @@ bool TPrimanota_application::pag_notify(int r, KEY k)
|
||||
case K_SPACE:
|
||||
break;
|
||||
case K_ENTER:
|
||||
ns = ps->row(r);
|
||||
ts = (TToken_string&)(*rws)[r];
|
||||
ns = ps.row(r);
|
||||
ts = rws.row(r);
|
||||
|
||||
news = ns.get(0);
|
||||
newp = ns.get(1);
|
||||
@ -44,15 +48,15 @@ bool TPrimanota_application::pag_notify(int r, KEY k)
|
||||
newt = ns.get(3);
|
||||
|
||||
// qui viene il bello, si fa per dire
|
||||
if (strcmp(ts.get(0),news) != 0) // modificata data scadenza
|
||||
if (news != ts.get(0)) // modificata data scadenza
|
||||
{
|
||||
mod = m_scad = TRUE;
|
||||
}
|
||||
if (strcmp(ts.get(1),newp) != 0) // modificata percentuale
|
||||
if (newp != ts.get(1)) // modificata percentuale
|
||||
{
|
||||
mod = m_perc = TRUE;
|
||||
}
|
||||
if (strcmp(ts.get(2),newi) != 0) // modificato importo
|
||||
if (newi != ts.get(2)) // modificato importo
|
||||
{
|
||||
// se si modifica la percentuale l'importo non viene cagato
|
||||
if ((recalc && !m_perc) || (!recalc))
|
||||
@ -60,7 +64,7 @@ bool TPrimanota_application::pag_notify(int r, KEY k)
|
||||
mod = m_imp = TRUE;
|
||||
}
|
||||
}
|
||||
if (strcmp(ts.get(3),newt) != 0) // modificato tipo pagamento
|
||||
if (newt != ts.get(3)) // modificato tipo pagamento
|
||||
{
|
||||
mod = m_tipo = TRUE;
|
||||
}
|
||||
@ -83,67 +87,67 @@ bool TPrimanota_application::pag_notify(int r, KEY k)
|
||||
if (mod && recalc)
|
||||
{
|
||||
// ricalcola sheet come sai fare tu
|
||||
ahiahi = pag->recalc_rate(r, m_perc,
|
||||
((m_perc || m_imp) ?
|
||||
(m_perc ? (const char*)newp : (const char*)newi) :
|
||||
NULL),
|
||||
(m_scad ? (const char*)news : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
rdiff, mcomm, need_recalc);
|
||||
ahiahi = pag.recalc_rate(r, m_perc,
|
||||
((m_perc || m_imp) ?
|
||||
(m_perc ? (const char*)newp : (const char*)newi) :
|
||||
NULL),
|
||||
(m_scad ? (const char*)news : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
rdiff, mcomm, need_recalc);
|
||||
// see if rdiff changed
|
||||
msk->field(FS_RDIFFER).set(pag->rate_differenziate() ? "1" : "2");
|
||||
msk->field(FS_RDIFFER).set(pag.rate_differenziate() ? "1" : "2");
|
||||
}
|
||||
if (!recalc)
|
||||
{
|
||||
ahiahi = P_OK;
|
||||
// put data as they are
|
||||
TToken_string& trw = pag->rata(r);
|
||||
TToken_string& trw = pag.rata(r);
|
||||
TToken_string srw = trw;
|
||||
if (m_scad) trw.add(news,3);
|
||||
if (m_perc) trw.add(newp,1);
|
||||
if (m_imp) trw.add(newi,4);
|
||||
if (m_tipo) trw.add(newt,2);
|
||||
// validate the payment
|
||||
if ((ahiahi = pag->validate()) != P_OK)
|
||||
pag->rata(r) = srw;
|
||||
if ((ahiahi = pag.validate()) != P_OK)
|
||||
pag.rata(r) = srw;
|
||||
}
|
||||
if (ahiahi) // any error?
|
||||
// rimetti le righe com'erano prima
|
||||
if (ahiahi) // any error? Rimetti le righe com'erano prima
|
||||
{
|
||||
beep();
|
||||
|
||||
// se gli errori sono voluti, spiegali
|
||||
if (!recalc)
|
||||
{
|
||||
TString s(256);
|
||||
pag->strerr(ahiahi,s);
|
||||
TString256 s;
|
||||
pag.strerr(ahiahi,s);
|
||||
warning_box(s);
|
||||
}
|
||||
|
||||
ps->row(r) = (TToken_string&)(*rws)[r];
|
||||
ps->force_update(r);
|
||||
ps.row(r) = rws.row(r);
|
||||
ps.force_update(r);
|
||||
}
|
||||
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// ridefinisci lo sheet sulla base delle nuove rate
|
||||
pag->set_sheet(*ps);
|
||||
ps->force_update(-1);
|
||||
rws->destroy();
|
||||
(*rws) = ps->rows_array();
|
||||
}
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// ridefinisci lo sheet sulla base delle nuove rate
|
||||
pag.set_sheet(ps);
|
||||
ps.force_update();
|
||||
rws = ps.rows_array();
|
||||
}
|
||||
}
|
||||
|
||||
return doit;
|
||||
}
|
||||
|
||||
bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty() && app().is_saldaconto())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
|
||||
if (key == K_TAB && (f.focusdirty() || !m.is_running()) && app().is_saldaconto())
|
||||
{
|
||||
TString dt(f.mask().get(F_DATAREG));
|
||||
app().set_pagamento(f.get(),dt);
|
||||
app().set_scadenze(f.mask());
|
||||
const TString16 dt(m.get(F_DATAREG));
|
||||
app().set_pagamento(f.get(), dt);
|
||||
app().set_scadenze(m);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -159,49 +163,49 @@ void TPrimanota_application::set_scadenze(TMask& m)
|
||||
real imponibile(0.0);
|
||||
real imposta(0.0);
|
||||
real spese(0.0);
|
||||
TString dt(m.get(F_DATAREG));
|
||||
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
|
||||
if (_pag->is_new())
|
||||
|
||||
TPagamento& pag = pagamento();
|
||||
|
||||
if (pag.is_new())
|
||||
{
|
||||
m.disable_page(2);
|
||||
return;
|
||||
}
|
||||
else m.enable_page(2);
|
||||
|
||||
m.field(FS_RDIFFER).set(_pag->rate_differenziate() ? "1" : "2");
|
||||
m.field(FS_NAMEPAG).set(_pag->name());
|
||||
m.field(FS_TIPOPR).set(_pag->desc_tpr());
|
||||
m.field(FS_MCOMM).set(_pag->mese_commerciale() ? "X" : "");
|
||||
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
m.set(FS_NAMEPAG, pag.name());
|
||||
m.set(FS_TIPOPR, pag.desc_tpr());
|
||||
m.set(FS_MCOMM, pag.mese_commerciale() ? "X" : "");
|
||||
|
||||
TSheet_field& iva_sh = ivas();
|
||||
|
||||
for (int i = 0; i < iva_sh.items(); i++)
|
||||
{
|
||||
TToken_string& tt = iva_sh.row(i);
|
||||
real mpo(tt.get(0));
|
||||
real imp(tt.get(3));
|
||||
const real mpo(tt.get(0));
|
||||
imponibile += mpo;
|
||||
const real imp(tt.get(3));
|
||||
imposta += imp;
|
||||
}
|
||||
|
||||
m.field(FS_IMPONIBILE).set(imponibile.string());
|
||||
m.field(FS_IMPOSTA).set(imposta.string());
|
||||
m.field(FS_SPESE).set(spese.string());
|
||||
m.field(FS_RECALC).set("X");
|
||||
m.set(FS_IMPONIBILE, imponibile.string());
|
||||
m.set(FS_IMPOSTA, imposta.string());
|
||||
m.set(FS_SPESE, spese.string());
|
||||
m.set(FS_RECALC, "X");
|
||||
|
||||
_pag->set_total(imponibile, imposta, spese);
|
||||
_pag->set_rate_auto();
|
||||
pag.set_total(imponibile, imposta, spese);
|
||||
pag.set_rate_auto();
|
||||
bool new_part = TRUE;
|
||||
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
|
||||
// prepara lo sheet
|
||||
_pag->set_sheet(ps);
|
||||
if (_pag_rows != NULL) delete _pag_rows;
|
||||
_pag_rows = new TArray(ps.rows_array());
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
|
||||
// se la prima rata e' fissa non si tocca
|
||||
if (_pag->tipo_prima_rata() > 0)
|
||||
if (pag.tipo_prima_rata() > 0)
|
||||
{
|
||||
ps.disable_cell(0,0);
|
||||
ps.disable_cell(0,1);
|
||||
@ -215,7 +219,6 @@ bool TPrimanota_application::read_scadenze(const TMask& m)
|
||||
real imponibile(0.0);
|
||||
real imposta(0.0);
|
||||
real spese(0.0);
|
||||
TString dt(m.get(F_DATAREG));
|
||||
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
|
||||
@ -237,8 +240,9 @@ bool TPrimanota_application::read_scadenze(const TMask& m)
|
||||
m.field(FS_IMPOSTA).set(imposta.string());
|
||||
m.field(FS_SPESE).set(spese.string());
|
||||
m.field(FS_RECALC).set("X");
|
||||
|
||||
_pag->set_total(imponibile, imposta, spese);
|
||||
|
||||
TPagamento& pag = pagamento();
|
||||
pag.set_total(imponibile, imposta, spese);
|
||||
|
||||
TLocalisamfile partita (LF_PARTITE);
|
||||
TLocalisamfile scadenza(LF_SCADENZE);
|
||||
@ -265,26 +269,26 @@ bool TPrimanota_application::read_scadenze(const TMask& m)
|
||||
int nriga = 1;
|
||||
int numrig = 1;
|
||||
|
||||
partita.put("TIPOCF", tipocf);
|
||||
partita.put("GRUPPO", gruppo);
|
||||
partita.put("CONTO", conto);
|
||||
partita.put("SOTTOCONTO", sottoconto);
|
||||
partita.put("ANNO", anno);
|
||||
partita.put("NUMPART", numpart);
|
||||
partita.put("NRIGA", nriga);
|
||||
// partita.put("TIPOCF", tipocf);
|
||||
// partita.put("GRUPPO", gruppo);
|
||||
// partita.put("CONTO", conto);
|
||||
// partita.put("SOTTOCONTO", sottoconto);
|
||||
partita.put(PART_ANNO, anno);
|
||||
partita.put(PART_NUMPART, numpart);
|
||||
partita.put(PART_NRIGA, nriga);
|
||||
|
||||
bool fromscratch = FALSE;
|
||||
|
||||
if (partita.read() == NOERR)
|
||||
{
|
||||
// se si e' specificato un codice pagamento diverso si rifa' da capo
|
||||
if (_pag->code() != partita.get("CODPAG"))
|
||||
if (pag.code() != partita.get("CODPAG"))
|
||||
fromscratch = TRUE;
|
||||
// se invece la maschera contiene importi diversi da quelli
|
||||
// registrati si passa la palla al culano
|
||||
else if (imponibile != partita.get_real("IMPORTO") ||
|
||||
imposta != partita.get_real("IMPOSTA") ||
|
||||
spese != partita.get_real("SPESE"))
|
||||
else if (imponibile != partita.get_real(PART_IMPORTO) ||
|
||||
imposta != partita.get_real(PART_IMPOSTA) ||
|
||||
spese != partita.get_real(PART_SPESE))
|
||||
{
|
||||
fromscratch = !yesno_box("Gli importi totali delle scadenze sono stati modificati rispetto"
|
||||
" all'ultima registrazione. Si desidera mantenere"
|
||||
@ -293,32 +297,31 @@ bool TPrimanota_application::read_scadenze(const TMask& m)
|
||||
if(!fromscratch) m.field(FS_RECALC).set("");
|
||||
}
|
||||
if (fromscratch)
|
||||
_pag->set_rate_auto();
|
||||
pag.set_rate_auto();
|
||||
else
|
||||
{
|
||||
_pag->zap_rate();
|
||||
pag.zap_rate();
|
||||
|
||||
for (int i = 0; ; i++)
|
||||
{
|
||||
// cerca rata
|
||||
scadenza.zero();
|
||||
scadenza.put("TIPOCF", tipocf);
|
||||
scadenza.put("GRUPPO", gruppo);
|
||||
scadenza.put("CONTO", conto);
|
||||
scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
// scadenza.put("TIPOCF", tipocf);
|
||||
// scadenza.put("GRUPPO", gruppo);
|
||||
// scadenza.put("CONTO", conto);
|
||||
// scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put(PART_ANNO, anno);
|
||||
scadenza.put(PART_NUMPART, numpart);
|
||||
scadenza.put(PART_NRATA, i+1);
|
||||
|
||||
if (scadenza.read() == NOERR)
|
||||
{
|
||||
real importo = scadenza.get("IMPORTOVAL");
|
||||
TDate scad = scadenza.get("DATASCAD");
|
||||
int tipop = scadenza.get_int("TIPOPAG");
|
||||
bool paid = scadenza.get_bool("PAGATA");
|
||||
TString ulc(scadenza.get("ULTCLASS"));
|
||||
|
||||
_pag->set_rata(i, importo, scad, tipop, ulc, paid);
|
||||
const 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);
|
||||
pag.set_rata(i, importo, scad, tipop, ulc, paid);
|
||||
}
|
||||
else break;
|
||||
} // for
|
||||
@ -327,152 +330,124 @@ bool TPrimanota_application::read_scadenze(const TMask& m)
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
_pag->set_sheet(ps);
|
||||
|
||||
if (_pag_rows != NULL) delete _pag_rows;
|
||||
_pag_rows = new TArray(ps.rows_array());
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
|
||||
// se la prima rata e' fissa non si tocca
|
||||
if (_pag->tipo_prima_rata() > 0)
|
||||
{
|
||||
ps.disable_cell(0,0);
|
||||
ps.disable_cell(0,1);
|
||||
ps.disable_cell(0,2);
|
||||
ps.disable_cell(0,3);
|
||||
}
|
||||
if (pag.tipo_prima_rata() > 0)
|
||||
ps.disable_cell(0,-1);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TPrimanota_application::write_scadenze(const TMask& m)
|
||||
{
|
||||
real imponibile(0.0);
|
||||
real imposta(0.0);
|
||||
real spese(0.0);
|
||||
real imponibile(0.0);
|
||||
real imposta(0.0);
|
||||
real spese(0.0);
|
||||
|
||||
// should never happen but it doesn't hurt
|
||||
if (_rel->cg(0).empty()) return;
|
||||
CHECK(!_rel->cg(0).empty(), "Missing first line");
|
||||
|
||||
TLocalisamfile partita (LF_PARTITE);
|
||||
TLocalisamfile scadenza(LF_SCADENZE);
|
||||
|
||||
TString nreg(_rel->lfile().get("NUMREG"));
|
||||
TString ndoc(_rel->lfile().get("NUMDOC"));
|
||||
TString tmov(_rel->lfile().get("TIPOMOV"));
|
||||
TDate ddoc(_rel->lfile().get_date("DATADOC"));
|
||||
TDate dreg(_rel->lfile().get_date("DATAREG"));
|
||||
TString reg (_rel->lfile().get("REG"));
|
||||
TString protiva(_rel->lfile().get("PROTIVA"));
|
||||
TString codcaus(_rel->lfile().get("CODCAUS"));
|
||||
TString codval (_rel->lfile().get("CODVAL"));
|
||||
TString cambio (_rel->lfile().get("CAMBIO"));
|
||||
TRectype& r = _rel->lfile().curr();
|
||||
|
||||
TString nreg(r.get("NUMREG"));
|
||||
TString ndoc(r.get("NUMDOC"));
|
||||
TString tmov(r.get("TIPOMOV"));
|
||||
TDate ddoc(r.get_date("DATADOC"));
|
||||
TDate dreg(r.get_date("DATAREG"));
|
||||
TString reg (r.get("REG"));
|
||||
TString desc(r.get("DESCR"));
|
||||
TString protiva(r.get("PROTIVA"));
|
||||
TString codcaus(r.get("CODCAUS"));
|
||||
TString codval (r.get("CODVAL"));
|
||||
TString cambio (r.get("CAMBIO"));
|
||||
|
||||
TString numpart = m.get(F_NUMRIF);
|
||||
TString anno = m.get(F_ANNORIF);
|
||||
const int anno = m.get_int(F_ANNORIF);
|
||||
|
||||
char sezione = _rel->cg(0).get_char("SEZIONE"); // Dare/Avere
|
||||
char tipocf = _rel->cg(0).get_char("TIPOC"); // Cliente || Fornitore || Uncazzo
|
||||
int gruppo = (tipocf == 'C' || tipocf == 'F') ? 0 :
|
||||
_rel->cg(0).get_char("GRUPPO");
|
||||
int conto = (tipocf == 'C' || tipocf == 'F') ? 0 :
|
||||
_rel->cg(0).get_char("fCONTO");
|
||||
int gruppo = (tipocf == 'C' || tipocf == 'F') ? 0 : _rel->cg(0).get_char("GRUPPO");
|
||||
int conto = (tipocf == 'C' || tipocf == 'F') ? 0 : _rel->cg(0).get_char("CONTO");
|
||||
long sottoconto = _rel->cg(0).get_long("SOTTOCONTO");
|
||||
int nriga = 1;
|
||||
int numrig = 1;
|
||||
|
||||
partita.put("TIPOCF", tipocf);
|
||||
partita.put("GRUPPO", gruppo);
|
||||
partita.put("CONTO", conto);
|
||||
partita.put("SOTTOCONTO", sottoconto);
|
||||
// partita.put("TIPOCF", tipocf);
|
||||
// partita.put("GRUPPO", gruppo);
|
||||
// partita.put("CONTO", conto);
|
||||
// partita.put("SOTTOCONTO", sottoconto);
|
||||
partita.put("ANNO", anno);
|
||||
partita.put("NUMPART", numpart);
|
||||
partita.put("NRIGA", nriga);
|
||||
|
||||
bool fromscratch = FALSE, new_part = TRUE;
|
||||
|
||||
TPagamento& pag = pagamento();
|
||||
|
||||
if (partita.read() == NOERR)
|
||||
{
|
||||
// se si e' specificato un codice pagamento diverso si rifa' da capo
|
||||
if (_pag->code() != partita.get("CODPAG"))
|
||||
if (pag.code() != partita.get("CODPAG"))
|
||||
fromscratch = TRUE;
|
||||
new_part = FALSE;
|
||||
}
|
||||
|
||||
// se modificato riaggiusta partite e scadenze
|
||||
if (_pag->dirty() || new_part)
|
||||
// riaggiusta partite e scadenze
|
||||
if (new_part)
|
||||
{
|
||||
if (new_part)
|
||||
{
|
||||
partita.zero();
|
||||
partita.put("TIPOCF", tipocf);
|
||||
partita.put("GRUPPO", gruppo);
|
||||
partita.put("CONTO", conto);
|
||||
partita.put("SOTTOCONTO", sottoconto);
|
||||
partita.put("ANNO", anno);
|
||||
partita.put("NUMPART", numpart);
|
||||
partita.put("NRIGA", nriga);
|
||||
}
|
||||
partita.zero();
|
||||
partita.put("TIPOCF", tipocf);
|
||||
partita.put("GRUPPO", gruppo);
|
||||
partita.put("CONTO", conto);
|
||||
partita.put("SOTTOCONTO", sottoconto);
|
||||
partita.put("ANNO", anno);
|
||||
partita.put("NUMPART", numpart);
|
||||
partita.put("NRIGA", nriga);
|
||||
}
|
||||
|
||||
// put data on partita
|
||||
partita.put("TIPOMOV",tmov);
|
||||
partita.put("NREG", nreg);
|
||||
partita.put("DATAREG",dreg);
|
||||
partita.put("DATADOC",ddoc);
|
||||
partita.put("REG", reg);
|
||||
partita.put("PROTIVA",protiva);
|
||||
partita.put("CODCAUS",codcaus);
|
||||
partita.put("SEZ", sezione);
|
||||
partita.put("CODPAG", _pag->code());
|
||||
partita.put("CODVAL", codval);
|
||||
partita.put("CAMBIO", cambio);
|
||||
partita.put("IMPORTO",_pag->imponibile());
|
||||
partita.put("IMPOSTA",_pag->imposta());
|
||||
partita.put("SPESE", _pag->spese());
|
||||
partita.put("NUMRIG", numrig);
|
||||
// put data on partita
|
||||
partita.put("TIPOMOV",tmov);
|
||||
partita.put("NREG", nreg);
|
||||
partita.put("DATAREG",dreg);
|
||||
partita.put("DATADOC",ddoc);
|
||||
partita.put("REG", reg);
|
||||
partita.put("DESCR", desc);
|
||||
partita.put("PROTIVA",protiva);
|
||||
partita.put("CODCAUS",codcaus);
|
||||
partita.put("SEZ", sezione);
|
||||
partita.put("CODPAG", pag.code());
|
||||
partita.put("CODVAL", codval);
|
||||
partita.put("CAMBIO", cambio);
|
||||
partita.put("IMPORTO",pag.imponibile());
|
||||
partita.put("IMPOSTA",pag.imposta());
|
||||
partita.put("SPESE", pag.spese());
|
||||
partita.put("NUMRIG", numrig);
|
||||
|
||||
if (new_part) partita.write();
|
||||
else partita.rewrite();
|
||||
if (new_part) partita.write();
|
||||
else partita.rewrite();
|
||||
|
||||
bool new_scad = FALSE;
|
||||
bool new_scad = FALSE;
|
||||
|
||||
for (int i = 0; i < _pag->n_rate(); i++)
|
||||
{
|
||||
new_scad = FALSE;
|
||||
scadenza.zero();
|
||||
scadenza.put("TIPOCF", tipocf);
|
||||
scadenza.put("GRUPPO", gruppo);
|
||||
scadenza.put("CONTO", conto);
|
||||
scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
|
||||
if (scadenza.read() != NOERR)
|
||||
{
|
||||
new_scad = TRUE;
|
||||
scadenza.zero();
|
||||
scadenza.put("TIPOCF", tipocf);
|
||||
scadenza.put("GRUPPO", gruppo);
|
||||
scadenza.put("CONTO", conto);
|
||||
scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
}
|
||||
// set everything
|
||||
scadenza.put("CODPAG", _pag->code());
|
||||
scadenza.put("TIPOPAG", _pag->tipo_rata(i));
|
||||
scadenza.put("ULTCLASS", _pag->ulc_rata(i));
|
||||
scadenza.put("IMPORTOVAL",_pag->tpay_rata(i));
|
||||
scadenza.put("DATASCAD", _pag->data_rata(i));
|
||||
scadenza.put("PAGATA", _pag->ratapagata(i));
|
||||
|
||||
if (new_scad) scadenza.write();
|
||||
else scadenza.rewrite();
|
||||
}
|
||||
// elimina eventuali altre scadenze oltre l'ultima registrata
|
||||
for (; !new_scad ; i++)
|
||||
{
|
||||
for (int i = 0; i < pag.n_rate(); i++)
|
||||
{
|
||||
new_scad = FALSE;
|
||||
scadenza.zero();
|
||||
// scadenza.put("TIPOCF", tipocf);
|
||||
// scadenza.put("GRUPPO", gruppo);
|
||||
// scadenza.put("CONTO", conto);
|
||||
// scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
|
||||
if (scadenza.read() != NOERR)
|
||||
{
|
||||
new_scad = TRUE;
|
||||
scadenza.zero();
|
||||
scadenza.put("TIPOCF", tipocf);
|
||||
scadenza.put("GRUPPO", gruppo);
|
||||
@ -481,10 +456,184 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
|
||||
if (scadenza.read() == NOERR)
|
||||
scadenza.remove();
|
||||
else new_scad = TRUE;
|
||||
}
|
||||
// set everything
|
||||
scadenza.put("CODPAG", pag.code());
|
||||
scadenza.put("TIPOPAG", pag.tipo_rata(i));
|
||||
scadenza.put("ULTCLASS", pag.ulc_rata(i));
|
||||
scadenza.put("IMPORTO", pag.tpay_rata(i));
|
||||
scadenza.put("DATASCAD", pag.data_rata(i));
|
||||
scadenza.put("PAGATA", pag.ratapagata(i));
|
||||
|
||||
if (new_scad) scadenza.write();
|
||||
else scadenza.rewrite();
|
||||
}
|
||||
|
||||
// elimina eventuali altre scadenze oltre l'ultima registrata
|
||||
for (; !new_scad ; i++)
|
||||
{
|
||||
scadenza.zero();
|
||||
// scadenza.put("TIPOCF", tipocf);
|
||||
// scadenza.put("GRUPPO", gruppo);
|
||||
// scadenza.put("CONTO", conto);
|
||||
// scadenza.put("SOTTOCONTO", sottoconto);
|
||||
scadenza.put("ANNO", anno);
|
||||
scadenza.put("NUMPART", numpart);
|
||||
scadenza.put("NRATA", i+1);
|
||||
|
||||
if (scadenza.read() == NOERR)
|
||||
scadenza.remove();
|
||||
else new_scad = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Sheet partite
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TPrimanota_application::edit_partite(const TBill& b)
|
||||
{
|
||||
begin_wait();
|
||||
|
||||
TString80 caption("Partite aperte del conto ");
|
||||
caption << b.gruppo() << ' ' << b.conto() << ' ' << b.sottoconto();
|
||||
|
||||
TArray_sheet a(-1, -1, 0, 0, caption, "Anno|Numero@7|Descrizione@50|Importo@15R|Sezione");
|
||||
|
||||
TLocalisamfile partita(LF_PARTITE);
|
||||
partita.setkey(2); // Chiave per conto
|
||||
|
||||
partita.zero();
|
||||
if (b.tipo() != ' ') // Ignora gruppo e conto dei clifo
|
||||
{
|
||||
partita.put(PART_TIPOCF, b.tipo());
|
||||
partita.put(PART_SOTTOCONTO, b.sottoconto());
|
||||
}
|
||||
else b.put(partita.curr()); // Scrive completamente i conti normali
|
||||
|
||||
TRectype recpar(partita.curr()); // Record campione
|
||||
|
||||
int ult, anno; // Anno ultima partita
|
||||
TString16 last, num; // Ultimo numero partita e numero corrente
|
||||
TString desc; // Descrizione prima partita del gruppo
|
||||
TImporto saldo; // Saldo ultima parita
|
||||
TToken_string r(80);
|
||||
|
||||
for (int err = partita.read(_isgteq); err == NOERR && partita.curr() == recpar; err = partita.next())
|
||||
{
|
||||
num = partita.get(PART_NUMPART);
|
||||
anno = partita.get_int(PART_ANNO);
|
||||
if (num == last && anno == ult) // Se la partita e' la stessa ...
|
||||
{
|
||||
const TImporto i(partita.get_char(PART_SEZ), partita.get_real(PART_IMPORTO));
|
||||
saldo += i; // ... incrementa totale
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!saldo.is_zero()) // Se il saldo non e' nullo allora e' aperta
|
||||
{
|
||||
r.cut(0);
|
||||
r.add(ult); r.add(last); r.add(desc);
|
||||
r.add(saldo.valore().string(".")); r.add(saldo.sezione());
|
||||
a.add(r); // Aggiunge partita alla lista
|
||||
}
|
||||
ult = anno;
|
||||
last = num;
|
||||
desc = partita.get(PART_DESCR);
|
||||
saldo.set(partita.get_char(PART_SEZ), partita.get_real(PART_IMPORTO));
|
||||
}
|
||||
}
|
||||
|
||||
if (!saldo.is_zero()) // Aggiunge ultima partita se aperta
|
||||
{
|
||||
r.cut(0);
|
||||
r.add(ult); r.add(last); r.add(desc);
|
||||
r.add(saldo.valore().string(".")); r.add(saldo.sezione());
|
||||
a.add(r);
|
||||
}
|
||||
|
||||
end_wait();
|
||||
|
||||
const KEY k = a.items() > 0 ? a.run() : K_ESC;
|
||||
if (k != K_ENTER)
|
||||
return FALSE;
|
||||
|
||||
anno = a.row().get_int(0);
|
||||
num = a.row().get(1);
|
||||
|
||||
TMask m("cg2100s");
|
||||
m.set(S_ANNO, anno);
|
||||
m.set(S_NUM, num);
|
||||
|
||||
TSheet_field& s = (TSheet_field&)m.field(S_SCADENZE);
|
||||
TString_array& sr = s.rows_array();
|
||||
|
||||
TLocalisamfile scadenza(LF_SCADENZE);
|
||||
scadenza.zero(); scadenza.put(SCAD_ANNO, anno); scadenza.put(SCAD_NUMPART, num);
|
||||
|
||||
const TRectype recsca(scadenza.curr());
|
||||
|
||||
for (err = scadenza.read(_isgteq);
|
||||
err == NOERR && scadenza.curr() == recsca;
|
||||
err = scadenza.next())
|
||||
{
|
||||
r.cut(0);
|
||||
r.add(scadenza.get(SCAD_NRATA));
|
||||
r.add(scadenza.get(SCAD_DATASCAD));
|
||||
r.add(scadenza.get(SCAD_IMPORTOVAL));
|
||||
r.add(scadenza.get(SCAD_IMPORTO));
|
||||
r.add("");
|
||||
r.add("S");
|
||||
sr.add(r);
|
||||
}
|
||||
|
||||
partita.setkey(1);
|
||||
partita.zero(); partita.put(PART_ANNO, anno); partita.put(PART_NUMPART, num);
|
||||
recpar = partita.curr();
|
||||
|
||||
const TString16 curreg(curr_mask().get(F_NUMREG)); // Numero registrazione corrente
|
||||
desc.cut(0);
|
||||
|
||||
for (err = partita.read(_isgteq); err == NOERR && partita.curr() == recpar; err = partita.next())
|
||||
{
|
||||
const int rata = partita.get_int(PART_NRATA); // Legge eventuale numero rata
|
||||
|
||||
if (desc.empty())
|
||||
{
|
||||
desc = partita.get(PART_DESCR); // Aggiorna descrizione scadenze
|
||||
for (int i = 0; i < sr.items(); i++)
|
||||
{
|
||||
TToken_string& t = sr.row(i);
|
||||
if (t.get(S_DESCR-101)[0] <= ' ')
|
||||
t.add(desc, S_DESCR-101);
|
||||
}
|
||||
}
|
||||
|
||||
if (rata < 1 || partita.get(PART_REG).not_empty())
|
||||
continue;
|
||||
|
||||
for (int i = sr.items()-1; i >= 0; i--) // Cerca scadenza corrispondente
|
||||
if (sr.row(i).get_int(0) == rata) break;
|
||||
|
||||
if (i < 0)
|
||||
error_box("Non esiste una scadenza per la rata %d", rata);
|
||||
|
||||
r.cut(0);
|
||||
r.add(rata);
|
||||
r.add(partita.get(PART_DATADOC));
|
||||
r.add(partita.get(PART_IMPORTOVAL));
|
||||
r.add(partita.get(PART_IMPORTO));
|
||||
r.add(desc);
|
||||
r.add("P");
|
||||
i = sr.insert(r, i >= 0 ? i+1 : -1);
|
||||
|
||||
if (partita.get(PART_NREG) != curreg)
|
||||
s.disable_cell(i, -1);
|
||||
}
|
||||
|
||||
s.force_update();
|
||||
m.run();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1,52 +1,55 @@
|
||||
PAGE "Rata pagamento" -1 -1 50 7
|
||||
PAGE "Rata pagamento" -1 -1 50 8
|
||||
|
||||
DATE 101
|
||||
BEGIN
|
||||
PROMPT 1 2 "Scadenza "
|
||||
PROMPT 1 1 "Scadenza "
|
||||
END
|
||||
|
||||
NUMBER 102 8 0
|
||||
NUMBER 102 8 3
|
||||
BEGIN
|
||||
PROMPT 1 3 "Percentuale "
|
||||
PROMPT 1 2 "Percentuale "
|
||||
PICTURE ".3"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER 103 15 0
|
||||
NUMBER 103 15
|
||||
BEGIN
|
||||
PROMPT 1 4 "Importo "
|
||||
PROMPT 1 3 "Importo "
|
||||
PICTURE "."
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER 104 2 0
|
||||
BEGIN
|
||||
PROMPT 1 5 "Tipo pagamento "
|
||||
HELP ""
|
||||
SHEET "Codice|Tipo pagamento@32"
|
||||
INPUT 104
|
||||
OUTPUT 104
|
||||
OUTPUT 105
|
||||
ITEM "1|Rimessa diretta o contanti"
|
||||
ITEM "2|Tratta"
|
||||
ITEM "3|Ricevuta Bancaria"
|
||||
ITEM "4|Cessione"
|
||||
ITEM "5|Paghero'"
|
||||
ITEM "6|Lettera di credito"
|
||||
ITEM "7|Tratta accettata"
|
||||
ITEM "8|Altro pagamento"
|
||||
PROMPT 1 4 "Tipo pagamento "
|
||||
SHEET "Codice|Tipo pagamento@32"
|
||||
INPUT 104
|
||||
ITEM "1|Rimessa diretta o contanti"
|
||||
ITEM "2|Tratta"
|
||||
ITEM "3|Ricevuta Bancaria"
|
||||
ITEM "4|Cessione"
|
||||
ITEM "5|Paghero'"
|
||||
ITEM "6|Lettera di credito"
|
||||
ITEM "7|Tratta accettata"
|
||||
ITEM "8|Altro pagamento"
|
||||
OUTPUT 104
|
||||
OUTPUT 105
|
||||
END
|
||||
|
||||
STRING 105 36
|
||||
STRING 105 32
|
||||
BEGIN
|
||||
PROMPT 22 6 ""
|
||||
FLAGS "D"
|
||||
PROMPT 1 5 "Descrizione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -81,7 +81,7 @@ bool TDeleteprovv_app::menu(MENU_TAG)
|
||||
mov.put(MOV_NUMREG, m.get(F_FROMREG));
|
||||
const TRecnotype first = cur.read();
|
||||
|
||||
const TRecnotype total = last-first+1;
|
||||
const TRecnotype total = first >= 0L ? last-first+1 : 0L;
|
||||
TString80 caption("Cancellazione di ");
|
||||
add_plural(caption, total, "movimento");
|
||||
|
||||
|
@ -162,9 +162,9 @@ bool TParametri_ditta::postprocess_config(TMask& mask, TConfig& config)
|
||||
const long ditta = get_firm();
|
||||
ditte.put("CODDITTA", ditta);
|
||||
ditte.read();
|
||||
if (ditte.get("DINIZIOATT").empty())
|
||||
return error_box("La gestione della liquidazione differita richiede "
|
||||
"la data di inizio attivita' sull'anagrafica della ditta.");
|
||||
if (ditte.get("DINIZIOATT").empty())
|
||||
error_box("La gestione della liquidazione differita richiede "
|
||||
"la data di inizio attivita' sull'anagrafica della ditta.");
|
||||
|
||||
char freqiva = ditte.get_char("FREQVIVA");
|
||||
|
||||
@ -175,8 +175,8 @@ bool TParametri_ditta::postprocess_config(TMask& mask, TConfig& config)
|
||||
freqiva = lia.get_char("S7");
|
||||
|
||||
if (freqiva != 'M')
|
||||
return error_box("La gestione della liquidazione differita richiede "
|
||||
"la frequenza dei versamenti IVA mensile.");
|
||||
error_box("La gestione della liquidazione differita richiede "
|
||||
"la frequenza dei versamenti IVA mensile.");
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <relation.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
#include <viswin.h>
|
||||
|
||||
#include "cg5500a.h"
|
||||
|
||||
@ -161,7 +162,7 @@ void Visliq_app::build_nomiditte()
|
||||
{
|
||||
// check no archivi
|
||||
fr = "??";
|
||||
bool good = prefhndl->exist(dt.get_long("CODDITTA"));
|
||||
bool good = prefix().exist(dt.get_long("CODDITTA"));
|
||||
|
||||
if (good)
|
||||
{
|
||||
|
@ -92,15 +92,14 @@ void TRipristino_liq::build_nomiditte()
|
||||
{
|
||||
// check no archivi
|
||||
fr = "??";
|
||||
bool good = prefhndl->exist(dt.get_long("CODDITTA"));
|
||||
bool good = prefix().exist(dt.get_long("CODDITTA"));
|
||||
|
||||
if (good)
|
||||
{
|
||||
// check no parametri liquidazione
|
||||
lia.zero();
|
||||
TString diocan = format("%05ld%4s", dt.get_long("CODDITTA"),
|
||||
(const char*)_year);
|
||||
lia.put("CODTAB", diocan);
|
||||
const TString16 cod(format("%05ld%4s", dt.get_long("CODDITTA"), (const char*)_year));
|
||||
lia.put("CODTAB", cod);
|
||||
if (lia.read() != NOERR) good = FALSE;
|
||||
else fr = lia.get("S7");
|
||||
}
|
||||
|
37
cg/conto.cpp
37
cg/conto.cpp
@ -81,6 +81,43 @@ const TBill& TBill::add_to(TToken_string& ts, int from, int mode)
|
||||
}
|
||||
|
||||
|
||||
const char* TBill::file2type(int num) const
|
||||
{
|
||||
const char* t = "TIPOC";
|
||||
|
||||
switch (num)
|
||||
{
|
||||
case LF_PARTITE:
|
||||
t = "TIPOCF"; break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
void TBill::put(TRectype& r) const
|
||||
{
|
||||
r.put(file2type(r.num()), tipo());
|
||||
r.put("GRUPPO", gruppo());
|
||||
r.put("CONTO", conto());
|
||||
r.put("SOTTOCONTO", sottoconto());
|
||||
}
|
||||
|
||||
bool TBill::get(const TRectype& r)
|
||||
{
|
||||
set(r.get_int("GRUPPO"),
|
||||
r.get_int("CONTO"),
|
||||
r.get_long("SOTTOCONTO"),
|
||||
r.get_char(file2type(r.num())));
|
||||
|
||||
if (r.num() == LF_RMOVIVA)
|
||||
tipo_cr(r.get_int("TIPOCR"));
|
||||
|
||||
return ok();
|
||||
}
|
||||
|
||||
|
||||
// Certified 100%
|
||||
bool TBill::ok() const
|
||||
{
|
||||
|
17
cg/conto.h
17
cg/conto.h
@ -1,12 +1,8 @@
|
||||
#ifndef __CONTO_H
|
||||
#define __CONTO_H
|
||||
|
||||
#ifndef __STRINGS_H
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
#ifndef __REAL_H
|
||||
#include <real.h>
|
||||
#ifndef __ISAM_H
|
||||
#include <isam.h>
|
||||
#endif
|
||||
|
||||
class TBill : public TSortable
|
||||
@ -24,11 +20,13 @@ protected:
|
||||
virtual const char* class_name() const { return "Conto"; }
|
||||
|
||||
const TBill& copy(const TBill& b);
|
||||
const char* file2type(int logicnum) const;
|
||||
|
||||
public:
|
||||
TBill(int g = 0, int c = 0, long s = 0L, char t = ' ', const char* d = NULL, int r = -1)
|
||||
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d), _sezione(' ')
|
||||
{ set(g,c,s,t,d,r);}
|
||||
: _tipo(t), _gruppo(g), _conto(c), _sottoconto(s), _descrizione(d),
|
||||
_sezione(' '), _sospeso(FALSE)
|
||||
{ set(g,c,s,t,d,r);}
|
||||
|
||||
TBill(TToken_string& tgcsd, int from, int mode = 0);
|
||||
TBill(const TBill& b) { copy(b); }
|
||||
@ -57,6 +55,9 @@ public:
|
||||
bool sospeso() const { return _sospeso; } // _sospeso e' letto nella read()
|
||||
char sezione() const { return _sezione; }
|
||||
|
||||
void put(TRectype& r) const;
|
||||
bool get(const TRectype& r);
|
||||
|
||||
const char* string(int mode = 0);
|
||||
};
|
||||
|
||||
|
@ -210,9 +210,10 @@ TToken_string& TPagamento::set_rata (int index, real perc, int day, int type,
|
||||
const char* ulc, const char* imp,
|
||||
const char* data)
|
||||
{
|
||||
bool nwr = FALSE;
|
||||
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
||||
if (nwr = (tt == NULL)) tt = new TToken_string(16);
|
||||
const bool nwr = (tt == NULL);
|
||||
if (nwr) tt = new TToken_string(16);
|
||||
|
||||
tt->add(day,0); // scadenza
|
||||
tt->add(perc.string(),1); // percentuale
|
||||
tt->add(type,2); // tipo
|
||||
@ -221,18 +222,18 @@ TToken_string& TPagamento::set_rata (int index, real perc, int day, int type,
|
||||
tt->add(ulc == NULL ? "" : ulc,5);
|
||||
|
||||
if (!nwr)
|
||||
{
|
||||
if (index > _rate.items())
|
||||
{
|
||||
error_box("Rate non contigue");
|
||||
delete tt;
|
||||
}
|
||||
}
|
||||
{
|
||||
if (index > _rate.items())
|
||||
{
|
||||
error_box("Rate non contigue");
|
||||
delete tt;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_rate.add(tt,index);
|
||||
_dirty = TRUE;
|
||||
}
|
||||
{
|
||||
_rate.add(tt,index);
|
||||
_dirty = TRUE;
|
||||
}
|
||||
return *tt;
|
||||
}
|
||||
|
||||
@ -248,14 +249,15 @@ void TPagamento::set_imprata(int i, real r)
|
||||
tt.add(r.string(), 4);
|
||||
}
|
||||
|
||||
TToken_string& TPagamento::set_rata(int index, real howmuch,
|
||||
TDate& date, int type,const char* ulc, bool pagato)
|
||||
TToken_string& TPagamento::set_rata(int index, const real& howmuch,
|
||||
const TDate& date, int type,const char* ulc, bool pagato)
|
||||
{
|
||||
// calcola percentuali e scadenze a partire dagli importi
|
||||
bool nwr = FALSE;
|
||||
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
||||
if (nwr = (tt == NULL))
|
||||
tt = new TToken_string(16);
|
||||
|
||||
const bool nwr = (tt == NULL); // nuova rata
|
||||
|
||||
if (nwr) tt = new TToken_string(16);
|
||||
|
||||
TDate oldd = index > 0 ? data_rata(index -1) : _inizio;
|
||||
int day = date - oldd;
|
||||
@ -273,18 +275,18 @@ TToken_string& TPagamento::set_rata(int index, real howmuch,
|
||||
if (pagato) tt->add("X",6);
|
||||
|
||||
if (!nwr)
|
||||
{
|
||||
if (index > _rate.items())
|
||||
{
|
||||
if (index > _rate.items())
|
||||
{
|
||||
error_box("Rate non contigue");
|
||||
delete tt;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_rate.add(tt,index);
|
||||
_dirty = TRUE;
|
||||
}
|
||||
{
|
||||
_rate.add(tt, index);
|
||||
_dirty = TRUE;
|
||||
}
|
||||
return *tt;
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ public:
|
||||
const char* ulc = NULL, const char* imp = NULL,
|
||||
const char* data = NULL);
|
||||
// questa calcola percentuali e scadenze a partire dagli importi
|
||||
TToken_string& set_rata (int index, real howmuch, TDate& date, int type,
|
||||
TToken_string& set_rata (int index, const real& howmuch, const TDate& date, int type,
|
||||
const char* ulc, bool pagato);
|
||||
|
||||
void remove_rata(int r);
|
||||
|
Loading…
x
Reference in New Issue
Block a user