From 5a9ca6285e181c67a8a6752fecb8e42c30b14b81 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 12 Dec 1995 12:37:01 +0000 Subject: [PATCH] Modificate calcola_saldo_al e Triga_partita::importo git-svn-id: svn://10.65.10.50/trunk@2277 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2105.cpp | 4 ++-- cg/saldacon.cpp | 47 ++++++++++++++++++++++++++++++++++++----------- cg/saldacon.h | 8 ++++---- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/cg/cg2105.cpp b/cg/cg2105.cpp index e4721c56c..9fff35777 100755 --- a/cg/cg2105.cpp +++ b/cg/cg2105.cpp @@ -628,13 +628,13 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) rsal.add("Saldo rata ", 4); rsal << ra; if (!scad.chiusa()) { - TImporto sl = scad.residuo(FALSE, 0x7); + TImporto sl = scad.residuo(FALSE); gm.add_importo(rsal, sl); tot_lit += sl; if (in_valuta) { - sl = scad.residuo(TRUE, 0x3); + sl = scad.residuo(TRUE, 0xB); gm.add_importo(rsal, sl, TRUE); tot_val += sl; } diff --git a/cg/saldacon.cpp b/cg/saldacon.cpp index 4c5b74cd2..3ea7e1fed 100755 --- a/cg/saldacon.cpp +++ b/cg/saldacon.cpp @@ -318,11 +318,9 @@ TImporto TRiga_scadenze::importo_pagato(bool val, int mode) const const char sez = sum.sezione(); if (mode & 0x1) - { totale += TImporto(sez, pag.get_real(imp_field)); - if (!in_val) - totale += TImporto(sez, pag.get_real(PAGSCA_RITENUTE)); - } + if ((mode & 0x8) && !in_val) + totale += TImporto(sez, pag.get_real(PAGSCA_RITENUTE)); if (mode & 0x2) // Voglio anche gli abbuoni { @@ -669,7 +667,7 @@ int TRiga_partite::rata_con_abbuoni_diffcam() const // E' possibile considerare o meno IMPORTO, ABBUONI e DIFFCAM TImporto TRiga_partite::importo(bool valuta, int mode) const { - CHECKD(mode > 0 && mode < 8, "Bad importo mode ", mode); + CHECKD(mode > 0 && mode < 16, "Bad importo mode ", mode); const bool in_lire = !in_valuta(); if (valuta && in_lire) valuta = FALSE; @@ -690,7 +688,7 @@ TImporto TRiga_partite::importo(bool valuta, int mode) const } else { - if (in_lire && (mode & 0x1)) + if (in_lire && (mode & 0x8)) i.valore() += get_real(PART_RITENUTE); if ((mode & 0x2) && !abbuoni.is_zero()) @@ -1121,7 +1119,7 @@ void TPartita::calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImp for (int r = last(); r > 0; r = pred(r)) { const TRiga_partite& row = riga(r); - const TImporto i(row.importo(FALSE, 0x1)); + const TImporto i(row.importo(FALSE, 0x9)); const tipo_movimento tipo = row.tipo(); switch (tipo) @@ -1169,15 +1167,42 @@ TImporto TPartita::calcola_saldo(bool valuta) const return saldo; } -TImporto TPartita::calcola_saldo_al(const TDate& al, bool valuta) const +TImporto TPartita::calcola_saldo_al(bool valuta,const TDate& al, const TDate& data_rischio) const { TImporto saldo; + const bool calcolo_rischio = data_rischio.ok(); + for (int r = last(); r > 0; r = pred(r)) { const TRiga_partite& row = riga(r); - const TDate data = row.get(row.is_fattura() ? PART_DATADOC : PART_DATAPAG); - if (data < al) - saldo += row.importo(valuta); + if (row.is_fattura()) + { + for (int s = row.rate(); s > 0 ;s--) + { + const TRiga_scadenze & rata = row.rata(s); + const TDate data(rata.get(SCAD_DATASCAD)); + + if (data < al) + saldo += rata.importo(valuta); + } + } + else + { + const TDate data = row.get(PART_DATAPAG); + if (calcolo_rischio) + { + const int tipopag = row.get_int(PART_TIPOPAG); + if (tipopag < 2 || tipopag > 7 || data <= data_rischio) + saldo += row.importo(valuta); + else + if (data < al) + saldo += row.importo(valuta); + } + if (data < al) + saldo += row.importo(valuta); + + } + } return saldo; } diff --git a/cg/saldacon.h b/cg/saldacon.h index b3112c8f1..dc7efe289 100755 --- a/cg/saldacon.h +++ b/cg/saldacon.h @@ -149,9 +149,9 @@ public: TPartita& partita() const; TRiga_partite& riga() const { return *_riga; } // Riga partite - TImporto importo_pagato(bool val, int mode = 0x7) const; + TImporto importo_pagato(bool val, int mode = 0xF) const; TImporto importo(bool val) const; - TImporto residuo(bool val, int mode = 0x7) const; // Differenza delle due funzioni precedenti + TImporto residuo(bool val, int mode = 0xF) const; // Differenza delle due funzioni precedenti TRiga_scadenze(TRiga_partite* riga); TRiga_scadenze(const TRiga_scadenze& s); @@ -191,7 +191,7 @@ public: int rata_con_abbuoni_diffcam() const; char sezione() const { return get_char(PART_SEZ); } - TImporto importo(bool valuta, int mode = 0x7) const; + TImporto importo(bool valuta, int mode = 0xF) const; bool in_valuta() const { return get(PART_CODVAL).not_empty(); } @@ -275,7 +275,7 @@ public: void update_reg(long nreg, const TRectype& mov); void calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImporto& imp) const; TImporto calcola_saldo(bool valuta) const; - TImporto calcola_saldo_al(const TDate& al, bool valuta) const; + TImporto calcola_saldo_al(bool valuta, const TDate& al, const TDate& data_rischio = botime) const; bool modifica_pagamento(const TRectype& new_pag, const TValuta& valuta, char& old_ap, TImporto& old_abb, TImporto& old_diffcam,