Aggiunto calcolo esposto

git-svn-id: svn://10.65.10.50/trunk@2931 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-29 08:41:10 +00:00
parent f274c85033
commit 02f055ba13
2 changed files with 79 additions and 4 deletions

View File

@ -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);

View File

@ -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);