diff --git a/sc/sc2200.cpp b/sc/sc2200.cpp index 6cb006313..0b373f9d4 100755 --- a/sc/sc2200.cpp +++ b/sc/sc2200.cpp @@ -162,7 +162,7 @@ public: bool in_cache(TString& k); // ritorna vero se ci sono gia' non assegnati in _uns_cache; void look_in_cache(real& a, real& b, TAssoc_array& uns, TAssoc_array& unsnc, TString& k); void calcola_unassigned(TString& k); - void calcola_pagamenti(real& imp_scad, int riga, int rata); // calcola i pagamenti effettuati per questa rata e il residuo eventuale + void calcola_pagamenti(real& imp_scad, int riga, int rata, TBill& bill); // calcola i pagamenti effettuati per questa rata e il residuo eventuale TStampaScadenzario(); }; @@ -318,7 +318,7 @@ void TStampaScadenzario::look_in_cache(real& a, real& b, TAssoc_array& uns, TAss if (unsnc.is_key(k)) b = (real&)unsnc[k]; } -void TStampaScadenzario::calcola_pagamenti(real& imp_scad, int riga, int rata) +void TStampaScadenzario::calcola_pagamenti(real& imp_scad, int riga, int rata, TBill& bill) { TAssoc_array& uns = (TAssoc_array&) _uns_cache[0]; TAssoc_array& unsnc = (TAssoc_array&) _uns_cache[1]; @@ -348,7 +348,11 @@ void TStampaScadenzario::calcola_pagamenti(real& imp_scad, int riga, int rata) } } char norm = 'D'; - if (_tipost == fornitori) norm = 'A'; + if (_tipost == fornitori) + norm = 'A'; + else + if (_tipost == altri && bill.find()) + norm = bill.sezione(); totalep.normalize((norm=='D') ? 'A' : 'D'); scdz.normalize(norm); _w_imp_pag = totalep.valore(); @@ -426,7 +430,7 @@ bool TStampaScadenzario::preprocess_page(int file, int counter) if (!cs.checked(c->read(_isequal))) // Se non e' stato selezionato salta alla prossima scdz return FALSE; */ - const TBill bill(rc); + TBill bill(rc); if (!_m->selected(bill)) return FALSE; @@ -450,7 +454,7 @@ bool TStampaScadenzario::preprocess_page(int file, int counter) k << annop << nump; if (!in_cache(k)) calcola_unassigned(k); - TRiga_partite& row = _p->riga(_p->first()); + TRiga_partite& row = _p->riga(nrigap); _datareg = row.get_date(PART_DATAREG).string(brief); _datadoc = row.get_date(PART_DATADOC).string(brief); _numdoc = row.get(PART_NUMDOC); @@ -466,7 +470,7 @@ bool TStampaScadenzario::preprocess_page(int file, int counter) *_descrizione = _caus->get(CAU_DESCR); } } - calcola_pagamenti(imp_scad,nrigap,nratap); + calcola_pagamenti(imp_scad,nrigap,nratap, bill); if (_w_imp_res == 0.0 && ! _ratesald || imp_scad == 0.0) // Se la rata e' stata saldata e non e' abilitato il flag di stampa return FALSE; // oppure l'importo in scadenza e' 0 allora salta alla prossima scadenza