Modificate calcola_saldo_al e Triga_partita::importo

git-svn-id: svn://10.65.10.50/trunk@2277 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-12-12 12:37:01 +00:00
parent 5bc72dc683
commit 5a9ca6285e
3 changed files with 42 additions and 17 deletions

View File

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

View File

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

View File

@ -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,