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