From 4d720022413ede0325ad4a34d6e94e99faeaaa81 Mon Sep 17 00:00:00 2001 From: angelo Date: Tue, 4 Jun 1996 14:37:21 +0000 Subject: [PATCH] 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 --- sc/sc2300.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/sc/sc2300.cpp b/sc/sc2300.cpp index 4980f4133..0d613d5bd 100755 --- a/sc/sc2300.cpp +++ b/sc/sc2300.cpp @@ -184,7 +184,26 @@ void TStampaScaduto::compute_all(TPartita& p) TImporto scd,pag,bf,work_imp; scd += TImporto(ssez,rs.get_real(sfield)); // Importo in 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 TRiga_partite& sum = p.riga(pp); @@ -203,9 +222,14 @@ void TStampaScaduto::compute_all(TPartita& p) { TDate data_pag(sum.get_date(PART_DATAPAG)); 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) bf += TImporto(sez,pg.get_real(field)); + } } } char norm='D';