Cambiato il metodo di calcolo per salvo B.F. Ora per il primo pagamento
all'interno del ciclo per rata in compute_all(), viene usata la data scadenza della rata stessa. Questo a patto che sia un effetto ( tipo pagamento >=2 e <=7). git-svn-id: svn://10.65.10.50/trunk@2961 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b8c4b4a029
commit
4d72002241
@ -184,7 +184,26 @@ void TStampaScaduto::compute_all(TPartita& p)
|
|||||||
TImporto scd,pag,bf,work_imp;
|
TImporto scd,pag,bf,work_imp;
|
||||||
scd += TImporto(ssez,rs.get_real(sfield)); // Importo in scadenza...
|
scd += TImporto(ssez,rs.get_real(sfield)); // Importo in scadenza...
|
||||||
pag += rs.importo_pagato(_stvaluta,7); // Quanto e' stato pagato per questa scadenza?
|
pag += rs.importo_pagato(_stvaluta,7); // Quanto e' stato pagato per questa scadenza?
|
||||||
for (int pp = rs.last(); pp > 0; pp = rs.pred(pp)) // Browse all rows (pagamenti)
|
|
||||||
|
// Scorre le righe di pagamento per trovare la riga corripondente alla prima data pagamento
|
||||||
|
// di questa rata. Motivo: il primo pagamento delle rata corrente, effettuato tramite effetto
|
||||||
|
// (ai fini del calcolo B.F.) deve essere considerato con la data scadenza
|
||||||
|
const int lst = rs.last();
|
||||||
|
int prima_riga_pagamento = -1;
|
||||||
|
TDate first_date;// data relativa alla prima riga di pagamento
|
||||||
|
for (int pp = rs.first(); pp <= lst; pp = rs.succ(pp))
|
||||||
|
{
|
||||||
|
const TRiga_partite& sum = p.riga(pp);
|
||||||
|
TDate current_date(sum.get_date(PART_DATAPAG));
|
||||||
|
int tipo_pag = rs.get_int(SCAD_TIPOPAG);
|
||||||
|
if (tipo_pag>=2 && tipo_pag<=7) //Incasso tramite effetto
|
||||||
|
if (prima_riga_pagamento==-1 || first_date > current_date)
|
||||||
|
{
|
||||||
|
first_date = current_date;
|
||||||
|
prima_riga_pagamento = pp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (pp = rs.first(); pp <= lst; pp = rs.succ(pp)) // Browse all rows (pagamenti)
|
||||||
{
|
{
|
||||||
const TRectype pg = rs.row(pp);
|
const TRectype pg = rs.row(pp);
|
||||||
const TRiga_partite& sum = p.riga(pp);
|
const TRiga_partite& sum = p.riga(pp);
|
||||||
@ -203,11 +222,16 @@ void TStampaScaduto::compute_all(TPartita& p)
|
|||||||
{
|
{
|
||||||
TDate data_pag(sum.get_date(PART_DATAPAG));
|
TDate data_pag(sum.get_date(PART_DATAPAG));
|
||||||
int tipo_pag = rs.get_int(SCAD_TIPOPAG);
|
int tipo_pag = rs.get_int(SCAD_TIPOPAG);
|
||||||
if (tipo_pag!=1 && tipo_pag!=8 && tipo_pag!= 9 && data_pag.ok()) //Incasso tramite effetto
|
if (tipo_pag>=2 && tipo_pag<=7 && data_pag.ok()) //Incasso tramite effetto
|
||||||
|
{
|
||||||
|
if (prima_riga_pagamento > -1 && prima_riga_pagamento == pp)
|
||||||
|
data_pag = d; // Se e' il primo pagamento(in ordine di data) di questa rata
|
||||||
|
// prende la data di scadenza relativa.
|
||||||
if (data_pag >= _limbf && data_pag <= _limscad)
|
if (data_pag >= _limbf && data_pag <= _limscad)
|
||||||
bf += TImporto(sez,pg.get_real(field));
|
bf += TImporto(sez,pg.get_real(field));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
char norm='D';
|
char norm='D';
|
||||||
if (_tipost == fornitori) norm = 'A';
|
if (_tipost == fornitori) norm = 'A';
|
||||||
pag.normalize((norm=='D') ? 'A' : 'D'); scd.normalize(norm); bf.normalize((norm=='D') ? 'A' : 'D');
|
pag.normalize((norm=='D') ? 'A' : 'D'); scd.normalize(norm); bf.normalize((norm=='D') ? 'A' : 'D');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user