From 02f055ba131120be9845d4b35798fc13783ce778 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 29 May 1996 08:41:10 +0000 Subject: [PATCH] Aggiunto calcolo esposto git-svn-id: svn://10.65.10.50/trunk@2931 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/saldacon.cpp | 77 ++++++++++++++++++++++++++++++++++++++++++++++++- cg/saldacon.h | 6 ++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/cg/saldacon.cpp b/cg/saldacon.cpp index 8b9670a56..6d0496a1d 100755 --- a/cg/saldacon.cpp +++ b/cg/saldacon.cpp @@ -805,6 +805,80 @@ TImporto TRiga_partite::importo(bool valuta, int mode) const return i; } +// Calcola l'esposto e l' esposto SBF +TImporto TRiga_partite::esposto(bool valuta, const TDate & data_scad, const TDate & data_rischio, bool & sbf) const +{ + TImporto esposto; + + sbf = FALSE; + const int nrigp = get_int(PART_NRIGA); + const char sez = sezione(); + const int last = _partita->last(); + const TDate datapag(get_date(PART_DATAPAG)); + const bool rischio = data_scad != data_rischio; + bool found_pag = FALSE; + + for (int row = last; row > 0; row = _partita->pred(row)) + { + const TRiga_partite & riga = _partita->riga(row); + if (riga.is_fattura()) + { + const int lastr = riga.rate(); + for (int rata = lastr; rata > 0; rata--) + { + const TRiga_scadenze& scad = riga.rata(rata); + if (scad.exist(nrigp)) + { + const TRectype & pag = scad.row(nrigp); + const TImporto imp(sez, pag.get_real(valuta ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO)); + TDate data(scad.get(SCAD_DATASCAD)); + const int lasts = scad.last(); + + found_pag = TRUE; + for (int p = scad.first(); p <= lasts; p = scad.succ(p)) + { + if (p != nrigp) + { + const TRiga_partite & prow = partita().riga(p); + const int tp = prow.get_int(PART_TIPOPAG); + if (tp >= 2 && tp <= 7) + { + const TDate dataprow = prow.get(PART_DATAPAG); + if (dataprow < datapag) + { + data = datapag; + break; + } + } + } + } + if (rischio && data > data_rischio && data <= data_scad) + { + esposto += imp; + sbf = TRUE; + } + else + if (data > data_scad) + esposto += imp; + } + } + } + } + if (!found_pag) + { + const TImporto imp(importo(valuta, 0x1)); + if (rischio && datapag > data_rischio && datapag <= data_scad) + { + esposto += imp; + sbf = TRUE; + } + else + if (datapag > data_scad) + esposto += imp; + } + return esposto; +} + /////////////////////////////////////////////////////////// // TPartita /////////////////////////////////////////////////////////// @@ -1211,7 +1285,8 @@ bool TPartita::esiste(int nriga, int nrata, int nrigp) const return _unassigned.exist(nrigp); const bool esiste_riga = _part.exist(nriga); - if (!esiste_riga || nrata <= 0) // Riga non esistente o rata nulla + if (!esiste_riga || nrata <= + 0) // Riga non esistente o rata nulla return esiste_riga; const TRiga_partite& r = riga(nriga); diff --git a/cg/saldacon.h b/cg/saldacon.h index 0085296dc..66a131292 100755 --- a/cg/saldacon.h +++ b/cg/saldacon.h @@ -62,8 +62,7 @@ public: /////////////////////////////////////////////////////////// -// Valuta -/////////////////////////////////////////////////////////// +// Valuta /////////////////////////////////////////////////////////// class TValuta : public TSortable { @@ -203,7 +202,8 @@ public: char sezione() const { return get_char(PART_SEZ); } TImporto importo(bool valuta, int mode = 0xF) const; - + TImporto esposto(bool valuta, const TDate & data_scad, const TDate & data_rischio, bool & sbf) const; + bool in_valuta() const; bool update(const TRectype& vec, const TRectype& nuo, const char* field);