Gestione scadenze in valuta
git-svn-id: svn://10.65.10.50/trunk@1880 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
32fbac862b
commit
0a0939e127
@ -178,7 +178,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_STATOCF 3
|
NUMBER F_STATOCF 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Comune:Stato "
|
PROMPT 2 8 "Comune: Stato "
|
||||||
FIELD LF_CLIFO->STATOCF
|
FIELD LF_CLIFO->STATOCF
|
||||||
FLAGS "Z"
|
FLAGS "Z"
|
||||||
USE %STA
|
USE %STA
|
||||||
|
@ -97,6 +97,8 @@ TMask* TPrimanota_application::load_mask(int n)
|
|||||||
ps.set_notify(pag_notify);
|
ps.set_notify(pag_notify);
|
||||||
m->set_handler(FS_RESET, reset_handler);
|
m->set_handler(FS_RESET, reset_handler);
|
||||||
m->set_handler(FS_NRATE, nrate_handler);
|
m->set_handler(FS_NRATE, nrate_handler);
|
||||||
|
m->set_handler(FS_NSCAB, codcab_handler);
|
||||||
|
m->set_handler(FS_VSCAB, codcab_handler);
|
||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
if (m)
|
if (m)
|
||||||
|
@ -1646,16 +1646,12 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
|
|
||||||
const char cf = app().clifo();
|
const char cf = app().clifo();
|
||||||
TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
|
TRelation cliforel(LF_CLIFO); cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF");
|
||||||
|
TRectype& clifo = cliforel.curr();
|
||||||
if (clifo.get_char(CLI_TIPOCF) != cf || clifo.get(CLI_CODCF) != f.get())
|
|
||||||
{
|
|
||||||
clifo.setkey(1);
|
|
||||||
clifo.put(CLI_TIPOCF, cf);
|
clifo.put(CLI_TIPOCF, cf);
|
||||||
clifo.put(CLI_CODCF, f.get());
|
clifo.put(CLI_CODCF, f.get());
|
||||||
clifo.read();
|
cliforel.read();
|
||||||
CHECK(clifo.good(), "Impossibile ritrovare il clifo");
|
|
||||||
}
|
|
||||||
if (!suspended_handler(f, key))
|
if (!suspended_handler(f, key))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -1671,6 +1667,21 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
const TString& s = clifo.get(CLI_CODPAG);
|
const TString& s = clifo.get(CLI_CODPAG);
|
||||||
if (s.not_empty()) m.set(F_CODPAG, s, TRUE);
|
if (s.not_empty()) m.set(F_CODPAG, s, TRUE);
|
||||||
|
|
||||||
|
if (app().is_saldaconto())
|
||||||
|
{
|
||||||
|
if (m.field(S_VALUTA).active())
|
||||||
|
{
|
||||||
|
const TString& valuta = clifo.get(CLI_CODVAL);
|
||||||
|
if (valuta.not_empty())
|
||||||
|
m.set(S_VALUTA, valuta, TRUE);
|
||||||
|
}
|
||||||
|
m.set(FS_VSABI, clifo.get(CLI_CODABI));
|
||||||
|
m.set(FS_VSCAB, clifo.get(CLI_CODCAB));
|
||||||
|
m.send_key(K_TAB, FS_VSCAB);
|
||||||
|
m.set(FS_AGENTE, cliforel.curr(LF_CFVEN).get(CLI_CODAG), TRUE);
|
||||||
|
m.send_key(K_TAB, FS_AGENTE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool occas = clifo.get_bool(CLI_OCCAS);
|
const bool occas = clifo.get_bool(CLI_OCCAS);
|
||||||
@ -1682,18 +1693,6 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
if (f.focusdirty())
|
if (f.focusdirty())
|
||||||
{
|
{
|
||||||
app().add_cgs_tot(m);
|
app().add_cgs_tot(m);
|
||||||
|
|
||||||
if (m.field(S_VALUTA).active())
|
|
||||||
{
|
|
||||||
const TString16 valuta(clifo.get("CODVAL"));
|
|
||||||
if (valuta.not_empty() && valuta != m.get(S_VALUTA))
|
|
||||||
{
|
|
||||||
TTable val("%val");
|
|
||||||
val.put("CODTAB", valuta);
|
|
||||||
if (val.read() == NOERR)
|
|
||||||
m.set(S_VALUTA, valuta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (occas && app().occas_mask().get(O_CODICE).empty())
|
if (occas && app().occas_mask().get(O_CODICE).empty())
|
||||||
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
||||||
}
|
}
|
||||||
|
@ -113,6 +113,7 @@ class TPrimanota_application : public TRelation_application
|
|||||||
static bool codpag_handler(TMask_field& f, KEY key);
|
static bool codpag_handler(TMask_field& f, KEY key);
|
||||||
static bool reset_handler(TMask_field& f, KEY key);
|
static bool reset_handler(TMask_field& f, KEY key);
|
||||||
static bool nrate_handler(TMask_field& f, KEY key);
|
static bool nrate_handler(TMask_field& f, KEY key);
|
||||||
|
static bool codcab_handler(TMask_field& f, KEY key);
|
||||||
|
|
||||||
static bool iva_notify(TSheet_field& s, int r, KEY key);
|
static bool iva_notify(TSheet_field& s, int r, KEY key);
|
||||||
static bool iva_handler(TMask_field& f, KEY key);
|
static bool iva_handler(TMask_field& f, KEY key);
|
||||||
|
101
cg/cg2104.cpp
101
cg/cg2104.cpp
@ -27,6 +27,7 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
|
|
||||||
// ts contiene la vecchia riga, ns la nuova
|
// ts contiene la vecchia riga, ns la nuova
|
||||||
TToken_string ts(36), ns(36);
|
TToken_string ts(36), ns(36);
|
||||||
|
TString16 banca;
|
||||||
|
|
||||||
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE;
|
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE;
|
||||||
bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE;
|
bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE;
|
||||||
@ -39,16 +40,14 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
|
|
||||||
switch (k)
|
switch (k)
|
||||||
{
|
{
|
||||||
case K_SPACE:
|
|
||||||
break;
|
|
||||||
case K_ENTER:
|
case K_ENTER:
|
||||||
ns = ps.row(r);
|
ns = ps.row(r);
|
||||||
ts = rws.row(r);
|
ts = rws.row(r);
|
||||||
|
|
||||||
news = ns.get(0);
|
news = ns.get(0);
|
||||||
newp = ns.get(2);
|
newi = ns.get();
|
||||||
newi = ns.get(1);
|
newp = ns.get();
|
||||||
newt = ns.get(3);
|
newt = ns.get();
|
||||||
|
|
||||||
// qui viene il bello, si fa per dire
|
// qui viene il bello, si fa per dire
|
||||||
if (news != ts.get(0)) // modificata data scadenza
|
if (news != ts.get(0)) // modificata data scadenza
|
||||||
@ -71,6 +70,11 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
{
|
{
|
||||||
mod = m_tipo = TRUE;
|
mod = m_tipo = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
banca = ns.get(5); ts.add(banca, 6);
|
||||||
|
banca = ns.get(6); ts.add(banca, 7);
|
||||||
|
banca = ns.get(7); ts.add(banca, 8);
|
||||||
|
banca = ns.get(8); ts.add(banca, 9);
|
||||||
break;
|
break;
|
||||||
case K_DEL:
|
case K_DEL:
|
||||||
case K_INS:
|
case K_INS:
|
||||||
@ -99,7 +103,7 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
rdiff, mcomm, need_recalc);
|
rdiff, mcomm, need_recalc);
|
||||||
// see if rdiff changed
|
// see if rdiff changed
|
||||||
msk->set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
msk->set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||||
msk->set(FS_NRATE, format("%d", pag.n_rate()));
|
msk->set(FS_NRATE, pag.n_rate());
|
||||||
}
|
}
|
||||||
if (!recalc)
|
if (!recalc)
|
||||||
{
|
{
|
||||||
@ -107,10 +111,10 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
// 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_perc) trw.add(newp,1);
|
if (m_perc) trw.add(newp,1);
|
||||||
if (m_imp) trw.add(newi,4);
|
|
||||||
if (m_tipo) trw.add(newt,2);
|
if (m_tipo) trw.add(newt,2);
|
||||||
|
if (m_scad) trw.add(news,3);
|
||||||
|
if (m_imp) trw.add(newi,4);
|
||||||
// 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;
|
||||||
@ -130,7 +134,6 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
|||||||
ps.row(r) = rws.row(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
|
||||||
@ -171,10 +174,10 @@ bool TPrimanota_application::reset_handler(TMask_field& f, KEY key)
|
|||||||
bool TPrimanota_application::nrate_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::nrate_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
|
||||||
|
|
||||||
if (key == K_TAB && m.is_running() && app().is_saldaconto())
|
if (key == K_TAB && m.is_running() && app().is_saldaconto())
|
||||||
{
|
{
|
||||||
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
if (app().pagamento() != NULL)
|
if (app().pagamento() != NULL)
|
||||||
{
|
{
|
||||||
app().pagamento()->set_numero_rate(atoi(f.get()), /*TBI*/-1);
|
app().pagamento()->set_numero_rate(atoi(f.get()), /*TBI*/-1);
|
||||||
@ -186,6 +189,28 @@ bool TPrimanota_application::nrate_handler(TMask_field& f, KEY key)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TPrimanota_application::codcab_handler(TMask_field& f, KEY key)
|
||||||
|
{
|
||||||
|
if (key == K_TAB && f.focusdirty())
|
||||||
|
{
|
||||||
|
const TMask& m = f.mask();
|
||||||
|
const short id = f.dlg() == FS_NSCAB ? FS_NSABI : FS_VSABI;
|
||||||
|
const int pos = id == FS_NSABI ? 5 : 7;
|
||||||
|
const TString16 abi = m.get(id);
|
||||||
|
const TString16 cab = m.get(id+1);
|
||||||
|
|
||||||
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
|
for (int i = ps.items()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
TToken_string& row = ps.row(i);
|
||||||
|
row.add(abi, pos);
|
||||||
|
row.add(cab, pos+1);
|
||||||
|
}
|
||||||
|
ps.force_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void TPrimanota_application::reset_pagamento()
|
void TPrimanota_application::reset_pagamento()
|
||||||
{
|
{
|
||||||
@ -208,8 +233,10 @@ void TPrimanota_application::set_scadenze(TMask& m)
|
|||||||
const real imponibile(m.get(F_IMPONIBILI));
|
const real imponibile(m.get(F_IMPONIBILI));
|
||||||
const real imposta(m.get(F_IMPOSTE));
|
const real imposta(m.get(F_IMPOSTE));
|
||||||
const real spese(0.0);
|
const real spese(0.0);
|
||||||
|
const real cambio(m.get(S_CAMBIO));
|
||||||
|
|
||||||
TPagamento& pag = *pagamento();
|
TPagamento& pag = *pagamento();
|
||||||
|
pag.set_cambio(cambio);
|
||||||
|
|
||||||
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||||
m.set(FS_NAMEPAG, pag.name());
|
m.set(FS_NAMEPAG, pag.name());
|
||||||
@ -226,6 +253,7 @@ void TPrimanota_application::set_scadenze(TMask& m)
|
|||||||
|
|
||||||
// prepara lo sheet
|
// prepara lo sheet
|
||||||
pag.set_sheet(ps);
|
pag.set_sheet(ps);
|
||||||
|
|
||||||
_pag_rows = ps.rows_array();
|
_pag_rows = ps.rows_array();
|
||||||
m.set(FS_NRATE, pag.n_rate());
|
m.set(FS_NRATE, pag.n_rate());
|
||||||
|
|
||||||
@ -267,7 +295,6 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
const TString16 codval (testa.get("CODVAL"));
|
const TString16 codval (testa.get("CODVAL"));
|
||||||
const real cambio(testa.get("CAMBIO"));
|
const real cambio(testa.get("CAMBIO"));
|
||||||
|
|
||||||
|
|
||||||
const TRectype& prima = _rel->cg(0);
|
const TRectype& prima = _rel->cg(0);
|
||||||
const char sezione = prima.get_char("SEZIONE"); // Dare/Avere
|
const char sezione = prima.get_char("SEZIONE"); // Dare/Avere
|
||||||
const int nriga = 1;
|
const int nriga = 1;
|
||||||
@ -282,7 +309,7 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
int npart = part.prima_fattura(nreg);
|
int npart = part.prima_fattura(nreg);
|
||||||
bool fromscratch = FALSE;
|
bool fromscratch = FALSE;
|
||||||
|
|
||||||
if (npart != -1) // la gh'e'
|
if (npart > 0) // la gh'e'
|
||||||
{
|
{
|
||||||
|
|
||||||
const TRiga_partite& partita = part.riga(npart);
|
const TRiga_partite& partita = part.riga(npart);
|
||||||
@ -308,7 +335,9 @@ bool TPrimanota_application::read_scadenze(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();
|
||||||
@ -320,7 +349,27 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
|||||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||||
pag.set_rata(i-1, importo, scad, tipop, ulc, paid);
|
if (scadenza.in_valuta())
|
||||||
|
{
|
||||||
|
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
||||||
|
pag.set_rata(i-1, impval, importo, scad, tipop, ulc, paid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid);
|
||||||
|
|
||||||
|
TToken_string& str = ps.row(i-1);
|
||||||
|
str.add(scadenza.get(SCAD_CODABIPR), 6);
|
||||||
|
str.add(scadenza.get(SCAD_CODCABPR), 7);
|
||||||
|
str.add(scadenza.get(SCAD_CODABI), 8);
|
||||||
|
str.add(scadenza.get(SCAD_CODCAB), 9);
|
||||||
|
if (i == 1)
|
||||||
|
{
|
||||||
|
m.set(FS_NSABI, str.get(6));
|
||||||
|
m.set(FS_NSCAB, str.get(7));
|
||||||
|
m.set(FS_VSABI, str.get(8));
|
||||||
|
m.set(FS_VSCAB, str.get(9));
|
||||||
|
m.set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} //else
|
} //else
|
||||||
}
|
}
|
||||||
@ -360,8 +409,8 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
const TString16 codcaus(causale().codice());
|
const TString16 codcaus(causale().codice());
|
||||||
const TString16 codval (m.get(S_VALUTA));
|
const TString16 codval (m.get(S_VALUTA));
|
||||||
const real cambio (m.get(S_CAMBIO));
|
const real cambio (m.get(S_CAMBIO));
|
||||||
|
const TString16 agente (m.get(FS_AGENTE));
|
||||||
const char sezione = get_cgs_imp(0).sezione(); // Dare/Avere
|
const char sezione = get_cgs_imp(0).sezione(); // Dare/Avere
|
||||||
CHECK(sezione > ' ', "Invalid section in row 0");
|
|
||||||
|
|
||||||
const TBill clifo(cgs().row(0), 2, 0x3);
|
const TBill clifo(cgs().row(0), 2, 0x3);
|
||||||
newgame = new TPartita(clifo, anno, numpart);
|
newgame = new TPartita(clifo, anno, numpart);
|
||||||
@ -377,10 +426,10 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
partita.put(PART_DATAREG, dreg);
|
partita.put(PART_DATAREG, dreg);
|
||||||
partita.put(PART_DATADOC, ddoc);
|
partita.put(PART_DATADOC, ddoc);
|
||||||
partita.put(PART_NUMDOC, ndoc);
|
partita.put(PART_NUMDOC, ndoc);
|
||||||
partita.put(PART_REG, reg);
|
|
||||||
partita.put(PART_DESCR, desc);
|
partita.put(PART_DESCR, desc);
|
||||||
partita.put(PART_PROTIVA, protiva);
|
|
||||||
partita.put(PART_CODCAUS, codcaus);
|
partita.put(PART_CODCAUS, codcaus);
|
||||||
|
partita.put(PART_REG, reg);
|
||||||
|
partita.put(PART_PROTIVA, protiva);
|
||||||
partita.put(PART_SEZ, sezione);
|
partita.put(PART_SEZ, sezione);
|
||||||
partita.put(PART_CODVAL, codval);
|
partita.put(PART_CODVAL, codval);
|
||||||
partita.put(PART_CAMBIO, cambio);
|
partita.put(PART_CAMBIO, cambio);
|
||||||
@ -388,19 +437,33 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
|||||||
partita.put(PART_IMPOSTA, pag.imposta());
|
partita.put(PART_IMPOSTA, pag.imposta());
|
||||||
partita.put(PART_SPESE, pag.spese());
|
partita.put(PART_SPESE, pag.spese());
|
||||||
|
|
||||||
|
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||||
partita.elimina_rate();
|
partita.elimina_rate();
|
||||||
for (int i = 0; i < pag.n_rate(); i++)
|
for (int i = 0; i < pag.n_rate(); i++)
|
||||||
{
|
{
|
||||||
TRiga_scadenze& scadenza = partita.new_row();
|
TToken_string& row = ps.row(i);
|
||||||
|
|
||||||
|
TRiga_scadenze& scadenza = partita.new_row();
|
||||||
scadenza.put(SCAD_CODPAG, pag.code());
|
scadenza.put(SCAD_CODPAG, pag.code());
|
||||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
||||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
||||||
|
if (partita.in_valuta())
|
||||||
|
{
|
||||||
|
scadenza.put(SCAD_IMPORTO, pag.tlit_rata(i));
|
||||||
|
scadenza.put(SCAD_IMPORTOVAL, pag.tpay_rata(i));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
scadenza.put(SCAD_IMPORTO, pag.tpay_rata(i));
|
scadenza.put(SCAD_IMPORTO, pag.tpay_rata(i));
|
||||||
|
scadenza.zero(SCAD_IMPORTOVAL);
|
||||||
|
}
|
||||||
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
||||||
|
scadenza.put(SCAD_CODABIPR, row.get(5));
|
||||||
|
scadenza.put(SCAD_CODCABPR, row.get(6));
|
||||||
|
scadenza.put(SCAD_CODABI, row.get(7));
|
||||||
|
scadenza.put(SCAD_CODCAB, row.get(8));
|
||||||
scadenza.put(SCAD_PAGATA, pag.ratapagata(i));
|
scadenza.put(SCAD_PAGATA, pag.ratapagata(i));
|
||||||
// scadenza.put(SCAD_CODABIPR, pag.codabipr(i)); // TBI
|
scadenza.put(SCAD_CODAG, agente);
|
||||||
// scadenza.put(SCAD_CODCABPR, pag.codcabpr(i)); // TBI
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -970,23 +970,6 @@ int TPrimanota_application::nuovo_pagamento(TPartita& partita, int nriga, int ra
|
|||||||
causale().bill(caus = 1, contro); // ... prende il primo
|
causale().bill(caus = 1, contro); // ... prende il primo
|
||||||
contro.put(pagamento, TRUE); // Scrive conto contropartita
|
contro.put(pagamento, TRUE); // Scrive conto contropartita
|
||||||
|
|
||||||
/* TBG Da regalare a Ferdinando
|
|
||||||
if (conto.tipo() > ' ') // Se cliente o fornitore cerca sua banca
|
|
||||||
{
|
|
||||||
TRelation cliforel(LF_CLIFO);
|
|
||||||
cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF");
|
|
||||||
TRectype& clifo = cliforel.curr();
|
|
||||||
|
|
||||||
clifo.put(CLI_TIPOCF, conto.tipo());
|
|
||||||
clifo.put(CLI_CODCF, conto.codclifo());
|
|
||||||
const int err = cliforel.read();
|
|
||||||
CHECK(err == NOERR, "Chiss'e' fregato il clifo");
|
|
||||||
|
|
||||||
pagamento.put(PAGSCA_CODABI, clifo.get(CLI_CODABI));
|
|
||||||
pagamento.put(PAGSCA_CODCAB, clifo.get(CLI_CODCAB));
|
|
||||||
pagamento.put(PAGSCA_CODAG, cliforel.lfile(LF_CFVEN).get(CLI_CODAG));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return nrigp;
|
return nrigp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
PAGE "Rata pagamento" -1 -1 50 8
|
PAGE "Rata pagamento" -1 -1 50 13
|
||||||
|
|
||||||
DATE 101
|
DATE 101
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -12,18 +12,31 @@ BEGIN
|
|||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER 103 8 3
|
BOOLEAN 111
|
||||||
|
BEGIN
|
||||||
|
PROMPT 41 3 "Pagata"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 103 15 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Importo valuta "
|
||||||
|
PICTURE ".2"
|
||||||
|
FLAGS "R"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 104 8 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Percentuale "
|
PROMPT 1 2 "Percentuale "
|
||||||
PICTURE ".3"
|
PICTURE ".3"
|
||||||
FLAGS "R"
|
FLAGS "R"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER 104 2 0
|
NUMBER 105 2 0
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Tipo pagamento "
|
PROMPT 1 5 "Tipo pagamento "
|
||||||
SHEET "Codice|Tipo pagamento@32"
|
SHEET "Codice|Tipo pagamento@32"
|
||||||
INPUT 104
|
INPUT 105
|
||||||
ITEM "1|Rimessa diretta o contanti"
|
ITEM "1|Rimessa diretta o contanti"
|
||||||
ITEM "2|Tratta"
|
ITEM "2|Tratta"
|
||||||
ITEM "3|Ricevuta Bancaria"
|
ITEM "3|Ricevuta Bancaria"
|
||||||
@ -32,16 +45,84 @@ BEGIN
|
|||||||
ITEM "6|Lettera di credito"
|
ITEM "6|Lettera di credito"
|
||||||
ITEM "7|Tratta accettata"
|
ITEM "7|Tratta accettata"
|
||||||
ITEM "8|Altro pagamento"
|
ITEM "8|Altro pagamento"
|
||||||
OUTPUT 104
|
|
||||||
OUTPUT 105
|
OUTPUT 105
|
||||||
|
OUTPUT 106
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING 105 32
|
STRING 106 32
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Descrizione "
|
PROMPT 1 6 "Descrizione "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER 107 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "Ns. Banca ABI "
|
||||||
|
FLAGS "Z"
|
||||||
|
USE %BAN
|
||||||
|
INPUT CODTAB[1,5] 107
|
||||||
|
INPUT CODTAB[6,10] 108
|
||||||
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
|
OUTPUT 107 CODTAB[1,5]
|
||||||
|
OUTPUT 108 CODTAB[6,10]
|
||||||
|
OUTPUT 126 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 108 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 27 8 "Ns. Banca CAB "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY ALL 107
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 126 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 8 ""
|
||||||
|
USE %BAN KEY 2
|
||||||
|
INPUT S0 126
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
|
COPY OUTPUT 107
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 109 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Vs. Banca ABI "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY USE 107
|
||||||
|
INPUT CODTAB[1,5] 109
|
||||||
|
INPUT CODTAB[6,10] 110
|
||||||
|
COPY DISPLAY 107
|
||||||
|
OUTPUT 108 CODTAB[1,5]
|
||||||
|
OUTPUT 109 CODTAB[6,10]
|
||||||
|
OUTPUT 128 S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 110 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 27 9 "Vs. Banca CAB "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY ALL 109
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 128 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 10 ""
|
||||||
|
COPY USE 109
|
||||||
|
INPUT S0 128
|
||||||
|
COPY DISPLAY 126
|
||||||
|
COPY OUTPUT 109
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 10 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -12 -1 ""
|
||||||
@ -53,4 +134,5 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
@ -10,3 +10,12 @@
|
|||||||
#define FS_MCOMM 510
|
#define FS_MCOMM 510
|
||||||
#define FS_RESET 511
|
#define FS_RESET 511
|
||||||
#define FS_NRATE 512
|
#define FS_NRATE 512
|
||||||
|
#define FS_NSABI 513
|
||||||
|
#define FS_NSCAB 514
|
||||||
|
#define FS_DESCNSABI 515
|
||||||
|
#define FS_VSABI 516
|
||||||
|
#define FS_VSCAB 517
|
||||||
|
#define FS_DESCVSABI 518
|
||||||
|
#define FS_AGENTE 519
|
||||||
|
#define FS_DESCAGENTE 520
|
||||||
|
|
||||||
|
124
cg/cg21sld.uml
124
cg/cg21sld.uml
@ -1,27 +1,27 @@
|
|||||||
PAGE "Registrazione Scadenze" -1 -1 77 20
|
PAGE "Registrazione Scadenze" -1 -1 77 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 79 3
|
TEXT DLG_NULL
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 1 "@bScadenzario"
|
PROMPT 1 0 "@bGestione scadenzario"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER FS_IMPONIBILI 15
|
NUMBER FS_IMPONIBILI 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Imponibili "
|
PROMPT 1 1 "Imponibili "
|
||||||
PICTURE "."
|
PICTURE "."
|
||||||
FLAGS "DR"
|
FLAGS "DR"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER FS_IMPOSTE 15
|
NUMBER FS_IMPOSTE 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 29 2 "Imposte "
|
PROMPT 29 1 "Imposte "
|
||||||
PICTURE "."
|
PICTURE "."
|
||||||
FLAGS "DR"
|
FLAGS "DR"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER FS_SPESE 15
|
NUMBER FS_SPESE 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 54 2 "Spese "
|
PROMPT 54 1 "Spese "
|
||||||
PICTURE "."
|
PICTURE "."
|
||||||
FLAGS "DR"
|
FLAGS "DR"
|
||||||
END
|
END
|
||||||
@ -29,7 +29,7 @@ END
|
|||||||
|
|
||||||
RADIOBUTTON FS_RDIFFER 31
|
RADIOBUTTON FS_RDIFFER 31
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Opzioni ricalcolo rate"
|
PROMPT 1 2 "Opzioni ricalcolo rate"
|
||||||
ITEM "1|Differenziate" MESSAGE DISABLE,FS_NRATE
|
ITEM "1|Differenziate" MESSAGE DISABLE,FS_NRATE
|
||||||
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE ENABLE,FS_NRATE
|
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE ENABLE,FS_NRATE
|
||||||
ITEM "3|Uguali dall'ultima modificata" MESSAGE DISABLE,FS_NRATE
|
ITEM "3|Uguali dall'ultima modificata" MESSAGE DISABLE,FS_NRATE
|
||||||
@ -38,12 +38,12 @@ END
|
|||||||
|
|
||||||
NUMBER FS_NRATE 3 0
|
NUMBER FS_NRATE 3 0
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 8 "Numero di rate "
|
PROMPT 36 6 "Numero di rate "
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN FS_RECALC
|
BOOLEAN FS_RECALC
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 58 7 "Ricalcolo automatico"
|
PROMPT 58 5 "Ricalcolo automatico"
|
||||||
MESSAGE TRUE ENABLE,FS_RDIFFER|ENABLE,FS_MCOMM|K_SPACE,FS_RDIFFER
|
MESSAGE TRUE ENABLE,FS_RDIFFER|ENABLE,FS_MCOMM|K_SPACE,FS_RDIFFER
|
||||||
MESSAGE FALSE DISABLE,FS_RDIFFER|DISABLE,FS_MCOMM|DISABLE,FS_NRATE
|
MESSAGE FALSE DISABLE,FS_RDIFFER|DISABLE,FS_MCOMM|DISABLE,FS_NRATE
|
||||||
HELP "Attiva/disattiva il ricalcolo automatico delle scadenze"
|
HELP "Attiva/disattiva il ricalcolo automatico delle scadenze"
|
||||||
@ -51,30 +51,128 @@ END
|
|||||||
|
|
||||||
BOOLEAN FS_MCOMM
|
BOOLEAN FS_MCOMM
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 7 "Mese commerciale"
|
PROMPT 36 5 "Mese commerciale"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
STRING FS_NAMEPAG 27
|
STRING FS_NAMEPAG 27
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 5 "Pagamento "
|
PROMPT 36 3 "Pagamento "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FS_TIPOPR 27
|
STRING FS_TIPOPR 27
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 36 6 "Tipo prima rata "
|
PROMPT 36 4 "Tipo prima rata "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET FS_RATESHEET 0 8
|
NUMBER FS_NSABI 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 10 "Rate"
|
PROMPT 2 8 "Ns. Banca ABI "
|
||||||
|
FLAGS "Z"
|
||||||
|
USE %BAN
|
||||||
|
INPUT CODTAB[1,5] FS_NSABI
|
||||||
|
INPUT CODTAB[6,10] FS_NSCAB
|
||||||
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
|
OUTPUT FS_NSABI CODTAB[1,5]
|
||||||
|
OUTPUT FS_NSCAB CODTAB[6,10]
|
||||||
|
OUTPUT FS_DESCNSABI S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER FS_NSCAB 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 8 "CAB "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY ALL FS_NSABI
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FS_DESCNSABI 50 37
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 8 ""
|
||||||
|
USE %BAN KEY 2
|
||||||
|
INPUT S0 FS_DESCNSABI
|
||||||
|
DISPLAY "Denominazione@50" S0
|
||||||
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
|
COPY OUTPUT FS_NSABI
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER FS_VSABI 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Vs. Banca ABI "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY USE FS_NSABI
|
||||||
|
INPUT CODTAB[1,5] FS_VSABI
|
||||||
|
INPUT CODTAB[6,10] FS_VSCAB
|
||||||
|
COPY DISPLAY FS_NSABI
|
||||||
|
OUTPUT FS_VSABI CODTAB[1,5]
|
||||||
|
OUTPUT FS_VSCAB CODTAB[6,10]
|
||||||
|
OUTPUT FS_DESCVSABI S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER FS_VSCAB 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 9 "CAB "
|
||||||
|
FLAGS "Z"
|
||||||
|
COPY ALL FS_VSABI
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FS_DESCVSABI 50 37
|
||||||
|
BEGIN
|
||||||
|
PROMPT 40 9 ""
|
||||||
|
COPY USE FS_DESCNSABI
|
||||||
|
INPUT S0 FS_DESCVSABI
|
||||||
|
COPY DISPLAY FS_DESCNSABI
|
||||||
|
COPY OUTPUT FS_VSABI
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FS_AGENTE 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Agente "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE AGE
|
||||||
|
INPUT CODTAB FS_AGENTE
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione @50" S0
|
||||||
|
OUTPUT FS_AGENTE CODTAB
|
||||||
|
OUTPUT FS_DESCAGENTE S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FS_DESCAGENTE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 27 10 ""
|
||||||
|
USE AGE KEY 2
|
||||||
|
INPUT S0 FS_DESCAGENTE
|
||||||
|
DISPLAY "Descrizione @50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT FS_AGENTE
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET FS_RATESHEET
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 11 "Rate"
|
||||||
ITEM "Scadenza@10"
|
ITEM "Scadenza@10"
|
||||||
ITEM "Importo@15"
|
ITEM "Importo@15"
|
||||||
|
ITEM "In Valuta@15"
|
||||||
ITEM "Percentuale@12"
|
ITEM "Percentuale@12"
|
||||||
ITEM "Tipo"
|
ITEM "Tipo"
|
||||||
ITEM "Pagamento@32"
|
ITEM "Pagamento@32"
|
||||||
|
ITEM "Ns.ABI"
|
||||||
|
ITEM "Ns.CAB"
|
||||||
|
ITEM "Vs.ABI"
|
||||||
|
ITEM "Vs.CAB"
|
||||||
|
ITEM "Pagata"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FS_RESET 7 1
|
BUTTON FS_RESET 7 1
|
||||||
|
208
cg/pagament.cpp
208
cg/pagament.cpp
@ -1,6 +1,4 @@
|
|||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <relapp.h>
|
|
||||||
|
|
||||||
#include "pagament.h"
|
#include "pagament.h"
|
||||||
|
|
||||||
#include <mov.h>
|
#include <mov.h>
|
||||||
@ -8,13 +6,18 @@
|
|||||||
#include <scadenze.h>
|
#include <scadenze.h>
|
||||||
#include <pagsca.h>
|
#include <pagsca.h>
|
||||||
|
|
||||||
|
|
||||||
int TPagamento::_rata_ifield(int n, int f) const
|
int TPagamento::_rata_ifield(int n, int f) const
|
||||||
{
|
{
|
||||||
TToken_string& t = (TToken_string&)_rate[n];
|
TToken_string& t = (TToken_string&)_rate[n];
|
||||||
return t.get_int(f);
|
return t.get_int(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long TPagamento::_rata_lfield(int n, int f) const
|
||||||
|
{
|
||||||
|
TToken_string& t = (TToken_string&)_rate[n];
|
||||||
|
return t.get_long(f);
|
||||||
|
}
|
||||||
|
|
||||||
real TPagamento::_rata_rfield(int n, int f) const
|
real TPagamento::_rata_rfield(int n, int f) const
|
||||||
{
|
{
|
||||||
TToken_string& t = (TToken_string&)_rate[n];
|
TToken_string& t = (TToken_string&)_rate[n];
|
||||||
@ -29,21 +32,16 @@ TDate TPagamento::_rata_dfield(int n, int f) const
|
|||||||
|
|
||||||
const char* TPagamento::_rata_sfield(int n, int f) const
|
const char* TPagamento::_rata_sfield(int n, int f) const
|
||||||
{
|
{
|
||||||
static char kak[6];
|
static char kak[16];
|
||||||
TToken_string& t = (TToken_string&)_rate[n];
|
TToken_string& t = (TToken_string&)_rate[n];
|
||||||
strcpy(kak,t.get(f));
|
const char* k = t.get(f);
|
||||||
|
if (k != NULL)
|
||||||
|
strncpy(kak, k, 16);
|
||||||
|
else
|
||||||
|
kak[0] = '\0';
|
||||||
return kak;
|
return kak;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TPagamento::ratapagata(int n)
|
|
||||||
{
|
|
||||||
TToken_string& t = (TToken_string&)_rate[n];
|
|
||||||
return t.items() > 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void TPagamento::set_intervallo_rate(int in)
|
void TPagamento::set_intervallo_rate(int in)
|
||||||
{
|
{
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
@ -53,8 +51,7 @@ void TPagamento::set_intervallo_rate(int in)
|
|||||||
for (int i = 0; i < n_rate(); i++)
|
for (int i = 0; i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& ts = rata(i);
|
TToken_string& ts = rata(i);
|
||||||
ts.add(i == 0 ? (scad_rata(0) == 0 ? "0" : format("%d",in))
|
ts.add(i == 0 ? (scad_rata(0) == 0 ? 0 : in) : in, 0);
|
||||||
: format("%d",in), 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +59,7 @@ void TPagamento::set_mese_commerciale(bool v, int& sscad)
|
|||||||
{
|
{
|
||||||
_dirty = FALSE;
|
_dirty = FALSE;
|
||||||
if (_mcomm == v) return;
|
if (_mcomm == v) return;
|
||||||
if (sscad == -1) sscad = 30;
|
if (sscad < 0) sscad = 30;
|
||||||
|
|
||||||
if ((sscad % 30) != 0) sscad = 30 * ((sscad/30)+1);
|
if ((sscad % 30) != 0) sscad = 30 * ((sscad/30)+1);
|
||||||
set_intervallo_rate(sscad);
|
set_intervallo_rate(sscad);
|
||||||
@ -83,7 +80,7 @@ void TPagamento::set_rate_differenziate(int v)
|
|||||||
TToken_string& tt = rata(i);
|
TToken_string& tt = rata(i);
|
||||||
tt.add(p,1);
|
tt.add(p,1);
|
||||||
}
|
}
|
||||||
_rdiff = !(v == 2);
|
_rdiff = (v != 2);
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,25 +99,26 @@ void TPagamento::set_tipo_prima_rata(int v, int sscad)
|
|||||||
tt.add(tipo_rata(i-1),2);
|
tt.add(tipo_rata(i-1),2);
|
||||||
tt.add(ulc_rata(i-1),5);
|
tt.add(ulc_rata(i-1),5);
|
||||||
}
|
}
|
||||||
_rate.add(NULL,0);
|
_rate.destroy(0);
|
||||||
_rate.pack();
|
_rate.pack();
|
||||||
}
|
}
|
||||||
else if ( _tpr < 4 && v > 3)
|
else
|
||||||
|
if ( _tpr < 4 && v > 3)
|
||||||
{
|
{
|
||||||
TToken_string* ttn = new TToken_string(32);
|
TToken_string* ttn = new TToken_string(32);
|
||||||
ttn->add(0,0);
|
ttn->add(0, 0);
|
||||||
ttn->add(0,1);
|
ttn->add(0, 1);
|
||||||
ttn->add(1,2);
|
ttn->add(1, 2);
|
||||||
ttn->add("",3);
|
ttn->add("", 3);
|
||||||
ttn->add("",4);
|
ttn->add("", 4);
|
||||||
ttn->add("",5);
|
ttn->add("", 5);
|
||||||
_rate.insert(ttn,0);
|
_rate.insert(ttn,0);
|
||||||
for (int i = 0; i < (n_rate()-1); i++)
|
for (int i = 0; i < (n_rate()-1); i++)
|
||||||
{
|
{
|
||||||
TToken_string& tt = rata(i);
|
TToken_string& tt = rata(i);
|
||||||
tt.add(scad_rata(i+1),0);
|
tt.add(scad_rata(i+1),0);
|
||||||
tt.add(tipo_rata(i+1),2);
|
tt.add(tipo_rata(i+1),2);
|
||||||
tt.add(ulc_rata(i+1),5);
|
tt.add(ulc_rata(i+1), 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_tpr = v;
|
_tpr = v;
|
||||||
@ -192,10 +190,8 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
for (i = first; sum < real(100.0); i++)
|
for (i = first; sum < real(100.0); i++)
|
||||||
{
|
{
|
||||||
if ((real(100.0) - sum) < p)
|
if ((real(100.0) - sum) < p)
|
||||||
@ -221,12 +217,21 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
|||||||
}
|
}
|
||||||
// erase remaining
|
// erase remaining
|
||||||
for (; i < nr; i++)
|
for (; i < nr; i++)
|
||||||
_rate.add(NULL,i);
|
_rate.destroy(i);
|
||||||
_rate.pack();
|
_rate.pack();
|
||||||
|
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPagamento::set_cambio(const real& cambio)
|
||||||
|
{
|
||||||
|
if (cambio.sign() <= 0)
|
||||||
|
_cambio = 1.0;
|
||||||
|
else
|
||||||
|
_cambio = cambio;
|
||||||
|
set_round(_cambio == 1.0 ? 0 : 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void TPagamento::next_scad(TDate& d, int scad, bool mcomm, int rata)
|
void TPagamento::next_scad(TDate& d, int scad, bool mcomm, int rata)
|
||||||
{
|
{
|
||||||
@ -322,7 +327,7 @@ void TPagamento::remove_rata(int i)
|
|||||||
{
|
{
|
||||||
// non fa nessun ricalcolo, si limita ad impacchettare se
|
// non fa nessun ricalcolo, si limita ad impacchettare se
|
||||||
// necessario
|
// necessario
|
||||||
_rate.add(NULL,i);
|
_rate.destroy(i);
|
||||||
_rate.pack();
|
_rate.pack();
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
}
|
}
|
||||||
@ -330,31 +335,39 @@ void TPagamento::remove_rata(int i)
|
|||||||
TToken_string& TPagamento::add_rata(real perc, int day, int type, const char* ulc)
|
TToken_string& TPagamento::add_rata(real perc, int day, int type, const char* ulc)
|
||||||
{
|
{
|
||||||
TToken_string* tt = new TToken_string(16);
|
TToken_string* tt = new TToken_string(16);
|
||||||
|
|
||||||
tt->add(day); // scadenza
|
tt->add(day); // scadenza
|
||||||
tt->add(perc.string()); // percentuale
|
tt->add(perc.string()); // percentuale
|
||||||
tt->add(type); // tipo
|
tt->add(type); // tipo
|
||||||
tt->add("");
|
tt->add(""); // data
|
||||||
tt->add("");
|
tt->add(""); // importo
|
||||||
tt->add(ulc);
|
tt->add(ulc); // ulc
|
||||||
|
|
||||||
_rate.add(tt);
|
_rate.add(tt);
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
return *tt;
|
return *tt;
|
||||||
}
|
}
|
||||||
|
|
||||||
TToken_string& TPagamento::set_rata (int index, real perc, int day, int type,
|
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)
|
|
||||||
{
|
{
|
||||||
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
TToken_string* tt = (TToken_string*)_rate.objptr(index);
|
||||||
const bool nwr = (tt == NULL);
|
const bool nwr = (tt == NULL);
|
||||||
if (nwr) tt = new TToken_string(16);
|
if (nwr) tt = new TToken_string(64);
|
||||||
|
|
||||||
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
|
||||||
tt->add(data == NULL ? "" : data,3);
|
tt->add(data == NULL ? "" : data, 3);
|
||||||
tt->add(imp == NULL ? "" : imp,4);
|
tt->add(imp == NULL ? "" : imp, 4);
|
||||||
tt->add(ulc == NULL ? "" : ulc,5);
|
tt->add(ulc == NULL ? "" : ulc, 5);
|
||||||
|
if (imp && *imp > ' ' && _cambio != 1.0)
|
||||||
|
{
|
||||||
|
real implit(imp);
|
||||||
|
implit *= _cambio;
|
||||||
|
implit.round();
|
||||||
|
tt->add(implit.string(), 7);
|
||||||
|
}
|
||||||
|
|
||||||
if (!nwr)
|
if (!nwr)
|
||||||
{
|
{
|
||||||
@ -392,7 +405,7 @@ void TPagamento::set_percrata(int i, real r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TToken_string& TPagamento::set_rata(int index, real& howmuch,
|
TToken_string& TPagamento::set_rata(int index, const real& howmuch, const real& quanto,
|
||||||
const 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
|
||||||
@ -401,31 +414,29 @@ TToken_string& TPagamento::set_rata(int index, real& howmuch,
|
|||||||
|
|
||||||
const bool nwr = (tt == NULL); // nuova rata
|
const bool nwr = (tt == NULL); // nuova rata
|
||||||
|
|
||||||
if (nwr) tt = new TToken_string(16);
|
if (nwr) tt = new TToken_string(64);
|
||||||
|
|
||||||
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;
|
||||||
real toshare(_tpr < 4 ? _firstr : _secndr);
|
real toshare(_tpr < 4 ? _firstr : _secndr);
|
||||||
|
|
||||||
|
real hm = howmuch;
|
||||||
if (index == first && _tpr > 0 && _tpr < 4)
|
if (index == first && _tpr > 0 && _tpr < 4)
|
||||||
howmuch -= _secndr;
|
hm -= _secndr;
|
||||||
|
|
||||||
real perc = (_tpr > 3 && index == 0) ? ZERO : howmuch/toshare;
|
|
||||||
|
|
||||||
if (index == first && _tpr > 0 && _tpr < 4)
|
|
||||||
howmuch += _secndr;
|
|
||||||
|
|
||||||
|
real perc = (_tpr > 3 && index == 0) ? ZERO : hm/toshare;
|
||||||
perc *= real(100.0);
|
perc *= real(100.0);
|
||||||
perc.round(2);
|
perc.round(2);
|
||||||
|
|
||||||
tt->add(day,0); // scadenza
|
tt->cut(0);
|
||||||
tt->add(perc.string(),1); // percentuale
|
tt->add(day); // 0 - scadenza
|
||||||
tt->add(type,2); // tipo
|
tt->add(perc.string()); // 1 - percentuale
|
||||||
tt->add(date.string(),3);
|
tt->add(type); // 2 - tipo
|
||||||
tt->add(howmuch.string(),4);
|
tt->add(date.string()); // 3 - data
|
||||||
tt->add(ulc,5);
|
tt->add(howmuch.string()); // 4 - importo
|
||||||
if (pagato) tt->add("X",6);
|
tt->add(ulc); // 5 - ulc(era?)
|
||||||
|
tt->add(pagato ? "X" : " "); // 6 - pagata
|
||||||
|
tt->add(quanto.string()); // 7 - Importo in lire
|
||||||
if (!nwr)
|
if (!nwr)
|
||||||
{
|
{
|
||||||
if (index > _rate.items())
|
if (index > _rate.items())
|
||||||
@ -542,7 +553,7 @@ const char* TPagamento::desc_tipo(int i) const
|
|||||||
case 7: o = "Tratta accettata"; break;
|
case 7: o = "Tratta accettata"; break;
|
||||||
case 8: o = "Rapporti interban. diretti"; break;
|
case 8: o = "Rapporti interban. diretti"; break;
|
||||||
case 9: o = "Bonifici"; break;
|
case 9: o = "Bonifici"; break;
|
||||||
case 10: o = "Altro pagamento"; break;
|
default: o = "Altro pagamento"; break;
|
||||||
}
|
}
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
@ -569,7 +580,7 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
int oldscad = scad_rata(0);
|
int oldscad = scad_rata(0);
|
||||||
TDate lastdate = data_rata(0);
|
TDate lastdate = data_rata(0);
|
||||||
int first = _tpr < 4 ? 0 : 1;
|
int first = _tpr < 4 ? 0 : 1;
|
||||||
TArray srate(_rate); // rate come erano
|
TString_array srate(_rate); // rate come erano
|
||||||
|
|
||||||
if (srate.items() > 1)
|
if (srate.items() > 1)
|
||||||
{
|
{
|
||||||
@ -578,13 +589,13 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
oldscad = scad_rata(1);
|
oldscad = scad_rata(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oldscad == 0) oldscad = 30;
|
if (oldscad <= 0) oldscad = 30;
|
||||||
if (oldtype == 0) oldtype = 1;
|
if (oldtype <= 0) oldtype = 1;
|
||||||
|
|
||||||
if (new_value != NULL)
|
if (new_value != NULL)
|
||||||
{
|
{
|
||||||
newv = new_value;
|
newv = new_value;
|
||||||
rmax = is_perc_modified? real(100.0) : (_tpr < 4 ? _firstr : _secndr);
|
rmax = is_perc_modified ? real(100.0) : (_tpr < 4 ? _firstr : _secndr);
|
||||||
if (newv > rmax) return P_RSUM;
|
if (newv > rmax) return P_RSUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -703,13 +714,13 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
TToken_string& trt = rata(row+1);
|
TToken_string& trt = rata(row+1);
|
||||||
trt.add(remainder.string(), is_perc_modified ? 1 : 4);
|
trt.add(remainder.string(), is_perc_modified ? 1 : 4);
|
||||||
for(int j = row+2; j < srate.items(); j++)
|
for(int j = row+2; j < srate.items(); j++)
|
||||||
_rate.add(NULL,j);
|
_rate.destroy(j);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// l'importante e' esagerare
|
// l'importante e' esagerare
|
||||||
for(int j = row+1; j < srate.items(); j++)
|
for(int j = row+1; j < srate.items(); j++)
|
||||||
_rate.add(NULL,j);
|
_rate.destroy(j);
|
||||||
|
|
||||||
TToken_string& trt = add_rata(is_perc_modified ? remainder : (real) 0.0,
|
TToken_string& trt = add_rata(is_perc_modified ? remainder : (real) 0.0,
|
||||||
oldscad, oldtype);
|
oldscad, oldtype);
|
||||||
@ -738,7 +749,7 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
|
|
||||||
// cancelliamo tutto, va'
|
// cancelliamo tutto, va'
|
||||||
for (int j = frs; j < srate.items(); j++)
|
for (int j = frs; j < srate.items(); j++)
|
||||||
_rate.add(NULL,j);
|
_rate.destroy(j);
|
||||||
|
|
||||||
if (rdiff == 2 && srate.items() > 1)
|
if (rdiff == 2 && srate.items() > 1)
|
||||||
{
|
{
|
||||||
@ -914,7 +925,7 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
else // exhausted
|
else // exhausted
|
||||||
{
|
{
|
||||||
for(int j = row+1; j < srate.items(); j++)
|
for(int j = row+1; j < srate.items(); j++)
|
||||||
_rate.add(NULL,j);
|
_rate.destroy(j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1014,7 +1025,7 @@ bool TPagamento::read(TTable* t, TTable* r)
|
|||||||
t = new TTable("%CPG");
|
t = new TTable("%CPG");
|
||||||
istnew = TRUE;
|
istnew = TRUE;
|
||||||
}
|
}
|
||||||
t->zero(); t->put("CODTAB",_code);
|
t->zero(); t->put("CODTAB", _code);
|
||||||
if (t->read() != NOERR) return FALSE;
|
if (t->read() != NOERR) return FALSE;
|
||||||
|
|
||||||
_rate.destroy();
|
_rate.destroy();
|
||||||
@ -1046,13 +1057,14 @@ bool TPagamento::read(TTable* t, TTable* r)
|
|||||||
r = new TTable("%RPG");
|
r = new TTable("%RPG");
|
||||||
isrnew = TRUE;
|
isrnew = TRUE;
|
||||||
}
|
}
|
||||||
TString s(16);
|
|
||||||
|
|
||||||
|
TString16 s;
|
||||||
for (int i = 0; ;i++)
|
for (int i = 0; ;i++)
|
||||||
{
|
{
|
||||||
r->zero(); s.format("%s%3d",(const char*)_code, i);
|
r->zero(); s.format("%s%3d",(const char*)_code, i);
|
||||||
r->put("CODTAB", (const char*)s);
|
r->put("CODTAB", (const char*)s);
|
||||||
if (r->read() != NOERR) break;
|
if (r->read() != NOERR)
|
||||||
|
break;
|
||||||
TToken_string* tt = new TToken_string(16);
|
TToken_string* tt = new TToken_string(16);
|
||||||
tt->add((const char*)(r->get("I0"))); // scadenza
|
tt->add((const char*)(r->get("I0"))); // scadenza
|
||||||
tt->add((const char*)(r->get("R0"))); // percentuale
|
tt->add((const char*)(r->get("R0"))); // percentuale
|
||||||
@ -1079,12 +1091,13 @@ int TPagamento::write(TTable& r)
|
|||||||
// Scrive soltanto le righe di pagamento; si assume sia stata chiamata da una
|
// Scrive soltanto le righe di pagamento; si assume sia stata chiamata da una
|
||||||
// relapp, che ha scritto il file principale
|
// relapp, che ha scritto il file principale
|
||||||
|
|
||||||
TString s(16); int err = NOERR;
|
TString16 s;
|
||||||
|
int err = NOERR;
|
||||||
|
|
||||||
for (int i = 0; err == NOERR && i < n_rate(); i++)
|
for (int i = 0; err == NOERR && i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
||||||
r.put("CODTAB", (const char*)s);
|
r.put("CODTAB", s);
|
||||||
r.put("I0", (long)scad_rata(i));
|
r.put("I0", (long)scad_rata(i));
|
||||||
r.put("R0", perc_rata(i).string());
|
r.put("R0", perc_rata(i).string());
|
||||||
r.put("I1", (long)tipo_rata(i));
|
r.put("I1", (long)tipo_rata(i));
|
||||||
@ -1096,12 +1109,12 @@ int TPagamento::write(TTable& r)
|
|||||||
|
|
||||||
int TPagamento::rewrite(TTable& r)
|
int TPagamento::rewrite(TTable& r)
|
||||||
{
|
{
|
||||||
TString s(16); int err = NOERR;
|
TString16 s; int err = NOERR;
|
||||||
|
|
||||||
for (int i = 0; err == NOERR && i < n_rate(); i++)
|
for (int i = 0; err == NOERR && i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
||||||
r.put("CODTAB", (const char*)s);
|
r.put("CODTAB", s);
|
||||||
bool was = (r.read() == NOERR);
|
bool was = (r.read() == NOERR);
|
||||||
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
r.zero(); s.format("%s%3d",(const char*)_code, i);
|
||||||
r.put("CODTAB", (const char*)s);
|
r.put("CODTAB", (const char*)s);
|
||||||
@ -1111,6 +1124,7 @@ int TPagamento::rewrite(TTable& r)
|
|||||||
r.put("S1", ulc_rata(i));
|
r.put("S1", ulc_rata(i));
|
||||||
err = (was ? r.rewrite() : r.write());
|
err = (was ? r.rewrite() : r.write());
|
||||||
}
|
}
|
||||||
|
|
||||||
// erase possible rates > current n. rates
|
// erase possible rates > current n. rates
|
||||||
for (;err == NOERR;i++)
|
for (;err == NOERR;i++)
|
||||||
{
|
{
|
||||||
@ -1242,28 +1256,48 @@ void TPagamento::set_total(const real& imponibile, const real& imposta, const re
|
|||||||
|
|
||||||
void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
||||||
{
|
{
|
||||||
sf.destroy(-1);
|
|
||||||
if (_inited && _rate.items() > 0)
|
if (_inited && _rate.items() > 0)
|
||||||
{
|
{
|
||||||
|
const bool in_valuta = _cambio != 1.0;
|
||||||
|
|
||||||
// si istanzia uno sheet di primanota
|
// si istanzia uno sheet di primanota
|
||||||
for (int i = 0; i < n_rate(); i++)
|
for (int i = 0; i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& ts = sf.row(-1);
|
TToken_string& ts = sf.row(i);
|
||||||
// istanzia, o stronzo
|
// istanzia, o stronzo
|
||||||
ts.add((const char*)data_rata(i));
|
ts.add((const char*)data_rata(i), 0); // 0 - Data scadenza
|
||||||
ts.add(tpay_rata(i).string());
|
if (in_valuta)
|
||||||
ts.add(perc_rata(i).string());
|
|
||||||
ts.add(tipo_rata(i));
|
|
||||||
ts.add(desc_tipo(tipo_rata(i)));
|
|
||||||
if (ratapagata(i))
|
|
||||||
{
|
{
|
||||||
sf.disable_cell(1,1); // importo
|
ts.add(tlit_rata(i).string(), 1); // 1 - Importo in lire
|
||||||
sf.disable_cell(1,2); // percentuale
|
ts.add(tpay_rata(i).string(), 2); // 2 - Importo in valuta
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
}
|
|
||||||
else if (_rate.items() > 0) // not inited: set edit sheet
|
|
||||||
{
|
{
|
||||||
|
ts.add(tpay_rata(i).string(), 1); // 1 - Importo
|
||||||
|
ts.add("", 2);
|
||||||
|
}
|
||||||
|
ts.add(perc_rata(i).string(), 3); // 3 - Percentuale
|
||||||
|
ts.add(tipo_rata(i), 4); // 4 - Tipo rata
|
||||||
|
ts.add(desc_tipo(tipo_rata(i)), 5); // 5 - Descrizione tipo rata
|
||||||
|
// 6,7,8,9 - Banche
|
||||||
|
const bool paid = ratapagata(i);
|
||||||
|
ts.add(paid ? "X" : "", 10); // 10 - Pagaya
|
||||||
|
if (paid)
|
||||||
|
{
|
||||||
|
sf.disable_cell(i,1); // importo
|
||||||
|
sf.disable_cell(i,2); // in valuta
|
||||||
|
sf.disable_cell(i,3); // percentuale
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; i < sf.items(); i++)
|
||||||
|
sf.destroy(i);
|
||||||
|
|
||||||
|
sf.enable_column(2, in_valuta);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (_rate.items() > 0) // not inited: set edit sheet
|
||||||
|
{
|
||||||
|
sf.destroy();
|
||||||
for (int i = 0, scr = 0; i < n_rate(); i++)
|
for (int i = 0, scr = 0; i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& s = sf.row(-1);
|
TToken_string& s = sf.row(-1);
|
||||||
@ -1294,6 +1328,7 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
s.add(ulc_rata(i));
|
s.add(ulc_rata(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_tpr > 3)
|
if (_tpr > 3)
|
||||||
{
|
{
|
||||||
// disabilita campi da non toccare sulla prima rata
|
// disabilita campi da non toccare sulla prima rata
|
||||||
@ -1307,12 +1342,13 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
sf.disable_cell(0,1); // percentuale
|
sf.disable_cell(0,1); // percentuale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
TPagamento::TPagamento(const char* codtab, const char* data) :
|
TPagamento::TPagamento(const char* codtab, const char* data) :
|
||||||
_slicer(0.0,0), _new(FALSE), _imponibile(0.0), _imposta(0.0),
|
_slicer(0.0,0), _new(FALSE), _imponibile(0.0), _imposta(0.0),
|
||||||
_spese(0.0), _code(codtab), _dirty(FALSE), _inited(FALSE),
|
_spese(0.0), _cambio(1.0), _code(codtab), _dirty(FALSE), _inited(FALSE),
|
||||||
_def_tpr(1), _def_ulc(""), _round(0), _int_rate(30)
|
_def_tpr(1), _def_ulc(""), _round(0), _int_rate(30)
|
||||||
{
|
{
|
||||||
_fixd[0] = _fixd[1] = _fixd[2] = 0;
|
_fixd[0] = _fixd[1] = _fixd[2] = 0;
|
||||||
|
@ -29,9 +29,10 @@ class TPagamento : public TObject
|
|||||||
real _imponibile; // imponibile da affettare
|
real _imponibile; // imponibile da affettare
|
||||||
real _imposta; // imposta da affettare
|
real _imposta; // imposta da affettare
|
||||||
real _spese; // spese da affettare
|
real _spese; // spese da affettare
|
||||||
|
real _cambio; // cambio valuta
|
||||||
TDistrib _slicer; // affettatrice
|
TDistrib _slicer; // affettatrice
|
||||||
bool _new; // non letto da database
|
bool _new; // non letto da database
|
||||||
TArray _rate; // rate medesime
|
TString_array _rate; // rate medesime
|
||||||
char _inscad; // inizio scadenze: S1
|
char _inscad; // inizio scadenze: S1
|
||||||
bool _mcomm; // mese commerciale: B0
|
bool _mcomm; // mese commerciale: B0
|
||||||
bool _rdiff; // rate differenziate: B1
|
bool _rdiff; // rate differenziate: B1
|
||||||
@ -47,6 +48,7 @@ class TPagamento : public TObject
|
|||||||
int _int_rate;
|
int _int_rate;
|
||||||
|
|
||||||
int _rata_ifield(int n, int f) const;
|
int _rata_ifield(int n, int f) const;
|
||||||
|
long _rata_lfield(int n, int f) const;
|
||||||
real _rata_rfield(int n, int f) const;
|
real _rata_rfield(int n, int f) const;
|
||||||
TDate _rata_dfield(int n, int f) const;
|
TDate _rata_dfield(int n, int f) const;
|
||||||
const char* _rata_sfield(int n, int f) const;
|
const char* _rata_sfield(int n, int f) const;
|
||||||
@ -65,21 +67,21 @@ public:
|
|||||||
real imposta() const { return _imposta; }
|
real imposta() const { return _imposta; }
|
||||||
real spese() const { return _spese; }
|
real spese() const { return _spese; }
|
||||||
|
|
||||||
int tipo_rata(int n) const { return _rata_ifield(n,2);}
|
|
||||||
real perc_rata(int n) const { return _rata_rfield(n,1);}
|
|
||||||
int scad_rata(int n) const { return _rata_ifield(n,0);}
|
int scad_rata(int n) const { return _rata_ifield(n,0);}
|
||||||
|
real perc_rata(int n) const { return _rata_rfield(n,1);}
|
||||||
|
int tipo_rata(int n) const { return _rata_ifield(n,2);}
|
||||||
TDate data_rata(int n) const { return _rata_dfield(n,3);}
|
TDate data_rata(int n) const { return _rata_dfield(n,3);}
|
||||||
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
||||||
const char* ulc_rata(int n) const { return _rata_sfield(n,5);}
|
const char* ulc_rata(int n) const { return _rata_sfield(n,5);}
|
||||||
|
bool ratapagata(int n) const { return _rata_sfield(n,6)[0] > ' ';}
|
||||||
|
real tlit_rata(int n) const { return _rata_rfield(n,7);}
|
||||||
|
|
||||||
char inizio_scadenza() const { return _inscad; }
|
char inizio_scadenza() const { return _inscad; }
|
||||||
bool mese_commerciale() const { return _mcomm; }
|
bool mese_commerciale() const { return _mcomm; }
|
||||||
bool rate_differenziate() const { return _rdiff; }
|
bool rate_differenziate() const { return _rdiff; }
|
||||||
int tipo_prima_rata() const { return _tpr; }
|
int tipo_prima_rata() const { return _tpr; }
|
||||||
int decs() const { return _round; }
|
int decs() const { return _round; }
|
||||||
|
|
||||||
// mi scuso per la mancanza di underscore, ma mi piaceva cosi'
|
|
||||||
bool ratapagata(int n);
|
|
||||||
|
|
||||||
const TString& name() const { return _name; }
|
const TString& name() const { return _name; }
|
||||||
const TString& code() const { return _code; }
|
const TString& code() const { return _code; }
|
||||||
const char* desc_tpr() const;
|
const char* desc_tpr() const;
|
||||||
@ -101,6 +103,7 @@ public:
|
|||||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||||
void set_code(const char* c) { _code = c; }
|
void set_code(const char* c) { _code = c; }
|
||||||
void set_round(int n) { _round = n; }
|
void set_round(int n) { _round = n; }
|
||||||
|
void set_cambio(const real& ex);
|
||||||
|
|
||||||
// check consistency: returns word with errors flagged, 0 if ok
|
// check consistency: returns word with errors flagged, 0 if ok
|
||||||
word validate() const;
|
word validate() const;
|
||||||
@ -121,9 +124,10 @@ public:
|
|||||||
TToken_string& set_rata (int index, real perc, int day, int type,
|
TToken_string& set_rata (int index, real perc, int day, int type,
|
||||||
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, const TDate& date, int type,
|
TToken_string& set_rata(int index, const real& howmuch, const real& quanto,
|
||||||
const char* ulc, bool pagato);
|
const TDate& date, int type, const char* ulc, bool pagata);
|
||||||
|
|
||||||
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
||||||
// modificano anche le eventuali rate esistenti
|
// modificano anche le eventuali rate esistenti
|
||||||
|
@ -229,11 +229,20 @@ bool TRiga_scadenze::in_valuta() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Controlla se la rata e' stata completamente pagata
|
// Controlla se la rata e' stata completamente pagata
|
||||||
bool TRiga_scadenze::chiusa() const
|
bool TRiga_scadenze::chiusa(bool update) const
|
||||||
{
|
{
|
||||||
|
bool chiusa;
|
||||||
|
if (update)
|
||||||
|
{
|
||||||
TImporto imp(importo_da_pagare(TRUE));
|
TImporto imp(importo_da_pagare(TRUE));
|
||||||
imp += importo_pagato(TRUE, 0x3);
|
imp += importo_pagato(TRUE, 0x3);
|
||||||
return imp.is_zero();
|
chiusa = imp.is_zero();
|
||||||
|
((TRectype*)this)->put(SCAD_PAGATA, chiusa ? "X" : "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
chiusa = get_bool(SCAD_PAGATA);
|
||||||
|
|
||||||
|
return chiusa;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calcola il totale dei pagamenti (eventualmente in valuta)
|
// Calcola il totale dei pagamenti (eventualmente in valuta)
|
||||||
@ -877,7 +886,7 @@ bool TPartita::chiusa(bool update)
|
|||||||
for (int r = part.last(); r > 0; r--)
|
for (int r = part.last(); r > 0; r--)
|
||||||
{
|
{
|
||||||
const TRiga_scadenze& scad = part.rata(r);
|
const TRiga_scadenze& scad = part.rata(r);
|
||||||
if (!scad.chiusa())
|
if (!scad.chiusa(update))
|
||||||
{
|
{
|
||||||
forse_chiusa = FALSE;
|
forse_chiusa = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -125,7 +125,7 @@ protected: // TRecord_tree
|
|||||||
virtual TObject* dup() const { return new TRiga_scadenze(*this); }
|
virtual TObject* dup() const { return new TRiga_scadenze(*this); }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool chiusa() const;
|
bool chiusa(bool update = FALSE) const;
|
||||||
|
|
||||||
bool in_valuta() const;
|
bool in_valuta() const;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user