diff --git a/cg/saldacon.cpp b/cg/saldacon.cpp index 6d0496a1d..7f75ca862 100755 --- a/cg/saldacon.cpp +++ b/cg/saldacon.cpp @@ -1459,14 +1459,15 @@ TImporto TPartita::calcola_saldo(bool valuta) const return saldo; } -TImporto TPartita::calcola_saldo_al(bool valuta,const TDate& al, const TDate& data_rischio) const +TImporto TPartita::calcola_saldo_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio) const { TImporto saldo; - const bool calcolo_rischio = data_rischio.ok(); +// const bool calcolo_rischio = data_rischio.ok(); for (int r = last(); r > 0; r = pred(r)) { const TRiga_partite& row = riga(r); +/* vecchia implementazione if (row.is_fattura()) { for (int s = row.rate(); s > 0 ;s--) @@ -1496,9 +1497,23 @@ TImporto TPartita::calcola_saldo_al(bool valuta,const TDate& al, const TDate& da else if (data <= al) saldo += row.importo(valuta); - - } - +*/ + const TDate data(row.get(PART_DATAREG)); + + if (data <= al) + { + saldo += row.importo(valuta); + if (!row.is_fattura()) + { + const int tipopag = row.get_int(PART_TIPOPAG); + + if (tipopag >= 2 && tipopag <= 7) + { + bool sbf = FALSE; + saldo -= row.esposto(valuta, data_scaduto, data_rischio, sbf); + } + } + } } return saldo; } diff --git a/cg/saldacon.h b/cg/saldacon.h index 66a131292..b4d196ada 100755 --- a/cg/saldacon.h +++ b/cg/saldacon.h @@ -296,7 +296,7 @@ public: void update_reg(long nreg, const TRectype& mov, TPartite_array& pa); void calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImporto& imp) const; TImporto calcola_saldo(bool valuta) const; - TImporto calcola_saldo_al(bool valuta, const TDate& al, const TDate& data_rischio = botime) const; + TImporto calcola_saldo_al(bool valuta, const TDate& al, const TDate& data_scaduto, const TDate& data_rischio) const; real calcola_scaduto_al(bool valuta, const TDate& al = botime) const; TImporto importo_pagato_unassigned(bool val, int mode = 0xF) const; diff --git a/sc/sc2100.cpp b/sc/sc2100.cpp index 4a737d5e2..84dbb3d37 100755 --- a/sc/sc2100.cpp +++ b/sc/sc2100.cpp @@ -1364,8 +1364,9 @@ int TStampaEC_application::print_ec() // if (game.chiusa()) // { const TDate& dir = f.data_inizio_rischio(); - const TDate& dlo = f.data_limite_operazione(); - const TImporto saldo = game.calcola_saldo_al(f.in_valuta(), dlo, dir); + const TDate& dlo = f.data_limite_operazione(); + const TDate& dls = f.data_limite_scaduto(); + const TImporto saldo = game.calcola_saldo_al(f.in_valuta(), dlo, dls, dir); if (saldo.is_zero()) { int r = 0; diff --git a/sc/sc2400.cpp b/sc/sc2400.cpp index 94635440c..b9b7f7a15 100755 --- a/sc/sc2400.cpp +++ b/sc/sc2400.cpp @@ -170,7 +170,7 @@ int TStampaSol_application::print_sol() // se il saldo della partita chiude in avere va sommato ad unreferenced const TRiga_partite& sum = game.riga(game.first()); TString valuta(sum.get(PART_CODVAL)); - unreferenced = game.calcola_saldo_al(game.in_valuta() && f.in_valuta(),data_limite_soll); + unreferenced = game.calcola_saldo_al(game.in_valuta() && f.in_valuta(),data_limite_soll, data_limite_scad, data_limite_scad); if (unreferenced.valore() > ZERO && unreferenced.sezione() == 'A') { unreferenced.normalize('A'); //per i non assegnati/anticipi c'e' solo la colonna AVERE