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
|
||||
BEGIN
|
||||
PROMPT 2 8 "Comune:Stato "
|
||||
PROMPT 2 8 "Comune: Stato "
|
||||
FIELD LF_CLIFO->STATOCF
|
||||
FLAGS "Z"
|
||||
USE %STA
|
||||
|
@ -96,7 +96,9 @@ TMask* TPrimanota_application::load_mask(int n)
|
||||
TSheet_field& ps = (TSheet_field&)m->field(FS_RATESHEET);
|
||||
ps.set_notify(pag_notify);
|
||||
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:
|
||||
if (m)
|
||||
|
@ -15,7 +15,7 @@ END
|
||||
|
||||
BOOLEAN F_STAMPATO
|
||||
BEGIN
|
||||
FIELD STAMPATO
|
||||
FIELD STAMPATO
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
|
@ -1644,18 +1644,14 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
if (key == K_TAB && f.active())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
|
||||
const char cf = app().clifo();
|
||||
TLocalisamfile& clifo = ((TEdit_field&)f).browse()->cursor()->file();
|
||||
|
||||
if (clifo.get_char(CLI_TIPOCF) != cf || clifo.get(CLI_CODCF) != f.get())
|
||||
{
|
||||
clifo.setkey(1);
|
||||
clifo.put(CLI_TIPOCF, cf);
|
||||
clifo.put(CLI_CODCF, f.get());
|
||||
clifo.read();
|
||||
CHECK(clifo.good(), "Impossibile ritrovare il clifo");
|
||||
}
|
||||
const char cf = app().clifo();
|
||||
TRelation cliforel(LF_CLIFO); cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF");
|
||||
TRectype& clifo = cliforel.curr();
|
||||
clifo.put(CLI_TIPOCF, cf);
|
||||
clifo.put(CLI_CODCF, f.get());
|
||||
cliforel.read();
|
||||
|
||||
if (!suspended_handler(f, key))
|
||||
return FALSE;
|
||||
|
||||
@ -1671,6 +1667,21 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
|
||||
const TString& s = clifo.get(CLI_CODPAG);
|
||||
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);
|
||||
@ -1682,18 +1693,6 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
if (f.focusdirty())
|
||||
{
|
||||
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())
|
||||
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 reset_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_handler(TMask_field& f, KEY key);
|
||||
|
111
cg/cg2104.cpp
111
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
|
||||
TToken_string ts(36), ns(36);
|
||||
TString16 banca;
|
||||
|
||||
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = 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)
|
||||
{
|
||||
case K_SPACE:
|
||||
break;
|
||||
case K_ENTER:
|
||||
ns = ps.row(r);
|
||||
ts = rws.row(r);
|
||||
|
||||
news = ns.get(0);
|
||||
newp = ns.get(2);
|
||||
newi = ns.get(1);
|
||||
newt = ns.get(3);
|
||||
newi = ns.get();
|
||||
newp = ns.get();
|
||||
newt = ns.get();
|
||||
|
||||
// qui viene il bello, si fa per dire
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
case K_DEL:
|
||||
case K_INS:
|
||||
@ -99,7 +103,7 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
||||
rdiff, mcomm, need_recalc);
|
||||
// see if rdiff changed
|
||||
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)
|
||||
{
|
||||
@ -107,10 +111,10 @@ bool TPrimanota_application::pag_notify(TSheet_field&, int r, KEY k)
|
||||
// put data as they are
|
||||
TToken_string& trw = pag.rata(r);
|
||||
TToken_string srw = trw;
|
||||
if (m_scad) trw.add(news,3);
|
||||
if (m_perc) trw.add(newp,1);
|
||||
if (m_imp) trw.add(newi,4);
|
||||
if (m_tipo) trw.add(newt,2);
|
||||
if (m_scad) trw.add(news,3);
|
||||
if (m_imp) trw.add(newi,4);
|
||||
// validate the payment
|
||||
if ((ahiahi = pag.validate()) != P_OK)
|
||||
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.force_update(r);
|
||||
}
|
||||
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
|
||||
if (key == K_TAB && m.is_running() && app().is_saldaconto())
|
||||
{
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
if (app().pagamento() != NULL)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
@ -208,8 +233,10 @@ void TPrimanota_application::set_scadenze(TMask& m)
|
||||
const real imponibile(m.get(F_IMPONIBILI));
|
||||
const real imposta(m.get(F_IMPOSTE));
|
||||
const real spese(0.0);
|
||||
const real cambio(m.get(S_CAMBIO));
|
||||
|
||||
TPagamento& pag = *pagamento();
|
||||
pag.set_cambio(cambio);
|
||||
|
||||
m.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
m.set(FS_NAMEPAG, pag.name());
|
||||
@ -226,6 +253,7 @@ void TPrimanota_application::set_scadenze(TMask& m)
|
||||
|
||||
// prepara lo sheet
|
||||
pag.set_sheet(ps);
|
||||
|
||||
_pag_rows = ps.rows_array();
|
||||
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 real cambio(testa.get("CAMBIO"));
|
||||
|
||||
|
||||
const TRectype& prima = _rel->cg(0);
|
||||
const char sezione = prima.get_char("SEZIONE"); // Dare/Avere
|
||||
const int nriga = 1;
|
||||
@ -282,7 +309,7 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
||||
int npart = part.prima_fattura(nreg);
|
||||
bool fromscratch = FALSE;
|
||||
|
||||
if (npart != -1) // la gh'e'
|
||||
if (npart > 0) // la gh'e'
|
||||
{
|
||||
|
||||
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)
|
||||
{
|
||||
pag.set_rate_auto();
|
||||
}
|
||||
else
|
||||
{
|
||||
pag.zap_rate();
|
||||
@ -319,8 +348,28 @@ bool TPrimanota_application::read_scadenze(TMask& m)
|
||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
pag.set_rata(i-1, importo, scad, tipop, ulc, paid);
|
||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
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
|
||||
}
|
||||
@ -360,10 +409,10 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
||||
const TString16 codcaus(causale().codice());
|
||||
const TString16 codval (m.get(S_VALUTA));
|
||||
const real cambio (m.get(S_CAMBIO));
|
||||
const TString16 agente (m.get(FS_AGENTE));
|
||||
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);
|
||||
|
||||
const int row = newgame->prima_fattura(nreg);
|
||||
@ -377,10 +426,10 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
||||
partita.put(PART_DATAREG, dreg);
|
||||
partita.put(PART_DATADOC, ddoc);
|
||||
partita.put(PART_NUMDOC, ndoc);
|
||||
partita.put(PART_REG, reg);
|
||||
partita.put(PART_DESCR, desc);
|
||||
partita.put(PART_PROTIVA, protiva);
|
||||
partita.put(PART_CODCAUS, codcaus);
|
||||
partita.put(PART_REG, reg);
|
||||
partita.put(PART_PROTIVA, protiva);
|
||||
partita.put(PART_SEZ, sezione);
|
||||
partita.put(PART_CODVAL, codval);
|
||||
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_SPESE, pag.spese());
|
||||
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
partita.elimina_rate();
|
||||
for (int i = 0; i < pag.n_rate(); i++)
|
||||
{
|
||||
{
|
||||
TToken_string& row = ps.row(i);
|
||||
|
||||
TRiga_scadenze& scadenza = partita.new_row();
|
||||
|
||||
scadenza.put(SCAD_CODPAG, pag.code());
|
||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
||||
scadenza.put(SCAD_IMPORTO, pag.tpay_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.zero(SCAD_IMPORTOVAL);
|
||||
}
|
||||
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_CODABIPR, pag.codabipr(i)); // TBI
|
||||
// scadenza.put(SCAD_CODCABPR, pag.codcabpr(i)); // TBI
|
||||
scadenza.put(SCAD_CODAG, agente);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -970,23 +970,6 @@ int TPrimanota_application::nuovo_pagamento(TPartita& partita, int nriga, int ra
|
||||
causale().bill(caus = 1, contro); // ... prende il primo
|
||||
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;
|
||||
}
|
||||
|
||||
|
100
cg/cg21rata.uml
100
cg/cg21rata.uml
@ -1,4 +1,4 @@
|
||||
PAGE "Rata pagamento" -1 -1 50 8
|
||||
PAGE "Rata pagamento" -1 -1 50 13
|
||||
|
||||
DATE 101
|
||||
BEGIN
|
||||
@ -12,18 +12,31 @@ BEGIN
|
||||
FLAGS "R"
|
||||
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
|
||||
PROMPT 1 2 "Percentuale "
|
||||
PICTURE ".3"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER 104 2 0
|
||||
NUMBER 105 2 0
|
||||
BEGIN
|
||||
PROMPT 1 4 "Tipo pagamento "
|
||||
PROMPT 1 5 "Tipo pagamento "
|
||||
SHEET "Codice|Tipo pagamento@32"
|
||||
INPUT 104
|
||||
INPUT 105
|
||||
ITEM "1|Rimessa diretta o contanti"
|
||||
ITEM "2|Tratta"
|
||||
ITEM "3|Ricevuta Bancaria"
|
||||
@ -32,16 +45,84 @@ BEGIN
|
||||
ITEM "6|Lettera di credito"
|
||||
ITEM "7|Tratta accettata"
|
||||
ITEM "8|Altro pagamento"
|
||||
OUTPUT 104
|
||||
OUTPUT 105
|
||||
OUTPUT 106
|
||||
END
|
||||
|
||||
STRING 105 32
|
||||
STRING 106 32
|
||||
BEGIN
|
||||
PROMPT 1 5 "Descrizione "
|
||||
PROMPT 1 6 "Descrizione "
|
||||
FLAGS "D"
|
||||
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
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
@ -53,4 +134,5 @@ BEGIN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -10,3 +10,12 @@
|
||||
#define FS_MCOMM 510
|
||||
#define FS_RESET 511
|
||||
#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
|
||||
|
||||
|
170
cg/cg21sld.uml
170
cg/cg21sld.uml
@ -1,85 +1,183 @@
|
||||
PAGE "Registrazione Scadenze" -1 -1 77 20
|
||||
|
||||
GROUPBOX DLG_NULL 79 3
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bScadenzario"
|
||||
PROMPT 1 0 "@bGestione scadenzario"
|
||||
END
|
||||
|
||||
|
||||
NUMBER FS_IMPONIBILI 15
|
||||
BEGIN
|
||||
PROMPT 1 2 "Imponibili "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
PROMPT 1 1 "Imponibili "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
END
|
||||
|
||||
NUMBER FS_IMPOSTE 15
|
||||
BEGIN
|
||||
PROMPT 29 2 "Imposte "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
PROMPT 29 1 "Imposte "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
END
|
||||
|
||||
NUMBER FS_SPESE 15
|
||||
BEGIN
|
||||
PROMPT 54 2 "Spese "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
PROMPT 54 1 "Spese "
|
||||
PICTURE "."
|
||||
FLAGS "DR"
|
||||
END
|
||||
|
||||
|
||||
RADIOBUTTON FS_RDIFFER 31
|
||||
BEGIN
|
||||
PROMPT 1 4 "Opzioni ricalcolo rate"
|
||||
ITEM "1|Differenziate" MESSAGE DISABLE,FS_NRATE
|
||||
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE ENABLE,FS_NRATE
|
||||
ITEM "3|Uguali dall'ultima modificata" MESSAGE DISABLE,FS_NRATE
|
||||
ITEM "4|Uguali finche' possibile" MESSAGE DISABLE,FS_NRATE
|
||||
PROMPT 1 2 "Opzioni ricalcolo rate"
|
||||
ITEM "1|Differenziate" MESSAGE DISABLE,FS_NRATE
|
||||
ITEM "2|Uguali (obbligate dalla 2a)" MESSAGE ENABLE,FS_NRATE
|
||||
ITEM "3|Uguali dall'ultima modificata" MESSAGE DISABLE,FS_NRATE
|
||||
ITEM "4|Uguali finche' possibile" MESSAGE DISABLE,FS_NRATE
|
||||
END
|
||||
|
||||
NUMBER FS_NRATE 3 0
|
||||
BEGIN
|
||||
PROMPT 36 8 "Numero di rate "
|
||||
PROMPT 36 6 "Numero di rate "
|
||||
END
|
||||
|
||||
BOOLEAN FS_RECALC
|
||||
BEGIN
|
||||
PROMPT 58 7 "Ricalcolo automatico"
|
||||
MESSAGE TRUE ENABLE,FS_RDIFFER|ENABLE,FS_MCOMM|K_SPACE,FS_RDIFFER
|
||||
MESSAGE FALSE DISABLE,FS_RDIFFER|DISABLE,FS_MCOMM|DISABLE,FS_NRATE
|
||||
HELP "Attiva/disattiva il ricalcolo automatico delle scadenze"
|
||||
PROMPT 58 5 "Ricalcolo automatico"
|
||||
MESSAGE TRUE ENABLE,FS_RDIFFER|ENABLE,FS_MCOMM|K_SPACE,FS_RDIFFER
|
||||
MESSAGE FALSE DISABLE,FS_RDIFFER|DISABLE,FS_MCOMM|DISABLE,FS_NRATE
|
||||
HELP "Attiva/disattiva il ricalcolo automatico delle scadenze"
|
||||
END
|
||||
|
||||
BOOLEAN FS_MCOMM
|
||||
BEGIN
|
||||
PROMPT 36 7 "Mese commerciale"
|
||||
PROMPT 36 5 "Mese commerciale"
|
||||
END
|
||||
|
||||
|
||||
STRING FS_NAMEPAG 27
|
||||
BEGIN
|
||||
PROMPT 36 5 "Pagamento "
|
||||
FLAGS "D"
|
||||
PROMPT 36 3 "Pagamento "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING FS_TIPOPR 27
|
||||
BEGIN
|
||||
PROMPT 36 6 "Tipo prima rata "
|
||||
FLAGS "D"
|
||||
PROMPT 36 4 "Tipo prima rata "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER FS_NSABI 5
|
||||
BEGIN
|
||||
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
|
||||
|
||||
SPREADSHEET FS_RATESHEET 0 8
|
||||
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 1 10 "Rate"
|
||||
ITEM "Scadenza@10"
|
||||
ITEM "Importo@15"
|
||||
ITEM "Percentuale@12"
|
||||
ITEM "Tipo"
|
||||
ITEM "Pagamento@32"
|
||||
PROMPT 0 11 "Rate"
|
||||
ITEM "Scadenza@10"
|
||||
ITEM "Importo@15"
|
||||
ITEM "In Valuta@15"
|
||||
ITEM "Percentuale@12"
|
||||
ITEM "Tipo"
|
||||
ITEM "Pagamento@32"
|
||||
ITEM "Ns.ABI"
|
||||
ITEM "Ns.CAB"
|
||||
ITEM "Vs.ABI"
|
||||
ITEM "Vs.CAB"
|
||||
ITEM "Pagata"
|
||||
END
|
||||
|
||||
BUTTON FS_RESET 7 1
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Reset"
|
||||
PROMPT 1 -1 "Reset"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
2682
cg/pagament.cpp
2682
cg/pagament.cpp
File diff suppressed because it is too large
Load Diff
@ -29,9 +29,10 @@ class TPagamento : public TObject
|
||||
real _imponibile; // imponibile da affettare
|
||||
real _imposta; // imposta da affettare
|
||||
real _spese; // spese da affettare
|
||||
real _cambio; // cambio valuta
|
||||
TDistrib _slicer; // affettatrice
|
||||
bool _new; // non letto da database
|
||||
TArray _rate; // rate medesime
|
||||
TString_array _rate; // rate medesime
|
||||
char _inscad; // inizio scadenze: S1
|
||||
bool _mcomm; // mese commerciale: B0
|
||||
bool _rdiff; // rate differenziate: B1
|
||||
@ -47,6 +48,7 @@ class TPagamento : public TObject
|
||||
int _int_rate;
|
||||
|
||||
int _rata_ifield(int n, int f) const;
|
||||
long _rata_lfield(int n, int f) const;
|
||||
real _rata_rfield(int n, int f) const;
|
||||
TDate _rata_dfield(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 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);}
|
||||
TDate data_rata(int n) const { return _rata_dfield(n,3);}
|
||||
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
||||
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);}
|
||||
real tpay_rata(int n) const { return _rata_rfield(n,4);}
|
||||
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; }
|
||||
bool mese_commerciale() const { return _mcomm; }
|
||||
bool rate_differenziate() const { return _rdiff; }
|
||||
int tipo_prima_rata() const { return _tpr; }
|
||||
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& code() const { return _code; }
|
||||
const char* desc_tpr() const;
|
||||
@ -101,6 +103,7 @@ public:
|
||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||
void set_code(const char* c) { _code = c; }
|
||||
void set_round(int n) { _round = n; }
|
||||
void set_cambio(const real& ex);
|
||||
|
||||
// check consistency: returns word with errors flagged, 0 if ok
|
||||
word validate() const;
|
||||
@ -121,9 +124,10 @@ public:
|
||||
TToken_string& set_rata (int index, real perc, int day, int type,
|
||||
const char* ulc = NULL, const char* imp = NULL,
|
||||
const char* data = NULL);
|
||||
|
||||
// questa calcola percentuali e scadenze a partire dagli importi
|
||||
TToken_string& set_rata (int index, real& howmuch, const TDate& date, int type,
|
||||
const char* ulc, bool pagato);
|
||||
TToken_string& set_rata(int index, const real& howmuch, const real& quanto,
|
||||
const TDate& date, int type, const char* ulc, bool pagata);
|
||||
|
||||
// settano tipo rata e ult. class default per le rate; se bool = TRUE
|
||||
// modificano anche le eventuali rate esistenti
|
||||
|
@ -229,11 +229,20 @@ bool TRiga_scadenze::in_valuta() const
|
||||
}
|
||||
|
||||
// Controlla se la rata e' stata completamente pagata
|
||||
bool TRiga_scadenze::chiusa() const
|
||||
{
|
||||
TImporto imp(importo_da_pagare(TRUE));
|
||||
imp += importo_pagato(TRUE, 0x3);
|
||||
return imp.is_zero();
|
||||
bool TRiga_scadenze::chiusa(bool update) const
|
||||
{
|
||||
bool chiusa;
|
||||
if (update)
|
||||
{
|
||||
TImporto imp(importo_da_pagare(TRUE));
|
||||
imp += importo_pagato(TRUE, 0x3);
|
||||
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)
|
||||
@ -877,7 +886,7 @@ bool TPartita::chiusa(bool update)
|
||||
for (int r = part.last(); r > 0; r--)
|
||||
{
|
||||
const TRiga_scadenze& scad = part.rata(r);
|
||||
if (!scad.chiusa())
|
||||
if (!scad.chiusa(update))
|
||||
{
|
||||
forse_chiusa = FALSE;
|
||||
break;
|
||||
|
@ -125,7 +125,7 @@ protected: // TRecord_tree
|
||||
virtual TObject* dup() const { return new TRiga_scadenze(*this); }
|
||||
|
||||
public:
|
||||
bool chiusa() const;
|
||||
bool chiusa(bool update = FALSE) const;
|
||||
|
||||
bool in_valuta() const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user