From 8f7d3a77cb22dfd8a6c218d3b78d489460ca109b Mon Sep 17 00:00:00 2001 From: angelo Date: Mon, 15 Apr 1996 16:55:59 +0000 Subject: [PATCH] Corretto errore MI1043. Aggiunta la stampa dei 3 decimali per la stampa in valuta (prima era a 2). Risistemate intestazioni e calcoli sulle note di credito, non assegnati ecc. git-svn-id: svn://10.65.10.50/trunk@2731 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sc/sc2300.cpp | 119 ++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 56 deletions(-) diff --git a/sc/sc2300.cpp b/sc/sc2300.cpp index 218dcd7d7..1edf88bb6 100755 --- a/sc/sc2300.cpp +++ b/sc/sc2300.cpp @@ -177,7 +177,7 @@ void TStampaScaduto::compute_all(TPartita& p) const char* field = (_stvaluta && rs.in_valuta()) ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO; const char* sfield = (_stvaluta && rs.in_valuta()) ? SCAD_IMPORTOVAL : SCAD_IMPORTO; const char ssez = rp.sezione(); - TImporto scd,pag,bf; + TImporto scd,pag,bf,work_imp; if (d > _limop) continue; scd += TImporto(ssez,rs.get_real(sfield)); // Importo in scadenza... pag += rs.importo_pagato(_stvaluta,7); // Quanto e' stato pagato per questa scadenza? @@ -187,20 +187,18 @@ void TStampaScaduto::compute_all(TPartita& p) const TRiga_partite& sum = p.riga(pp); const char sez = sum.sezione(); const int tipomov = sum.get_int(PART_TIPOMOV); - switch (tipomov) - { - case 5: // Insoluto (aumenta scd) - scd += TImporto(sez,pg.get_real(field)); - break; - case 2: // Nota di credito assegnata (storna da scd) - scd -= TImporto(sez,pg.get_real(field)); - break; - default: - break; + // Se tipomov e' 5 (Insoluto) aumenta scdz; se tipomov e' 2 (Nota di credito assegnata) + // storna da scdz. In entrambi i casi si ha l'operatore +=, perche' nel TImporto e' gia' + // compresa la sezione opposta + if (tipomov==5 || tipomov==2) + { + work_imp = TImporto(sez,pg.get_real(field)); + scd += work_imp; + pag -= work_imp; } if ((tipomov==3 || tipomov==5) && _tipost==clienti && _gcr!=0) { - TDate data_pag(sum.get_date(PART_DATAPAG)); // This will be PART_DATAPAG + 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 (data_pag >= _limbf && data_pag <= _limscad) @@ -209,7 +207,7 @@ void TStampaScaduto::compute_all(TPartita& p) } char norm='D'; if (_tipost == fornitori) norm = 'A'; - pag.normalize(norm); scd.normalize(norm); bf.normalize(norm); + pag.normalize((norm=='D') ? 'A' : 'D'); scd.normalize(norm); bf.normalize(norm); real res,a,b; a = pag.valore(); b = scd.valore(); buonf = bf.valore(); if (_uns > 0.0) // Rettifica i pagamenti con i non assegnati { @@ -224,15 +222,24 @@ void TStampaScaduto::compute_all(TPartita& p) _unsnc -= gap; } res = b - a; // Scadenze - pagati = scaduto per questo gruppo di rate + if (b == 0.0) // Se le scadenze sono a zero, vuol dire che sono state stornate + res = 0.0; // da qualche nota di credito o non assegnato percio' non si ha residuo + if (res < 0.0) // Significa che l'importo pagato e' maggiore dell'importo in scadenza { // c'e' un residuo positivo, e quindi va memorizzato + res *= -1.0; // cambia il segno res_pagati+= res; // Residui pagati in piu' res = 0.0; } if (d > _limscad) nonscad += res; else - res -= res_pagati; //Detrae dal residuo scaduto eventuali pagamenti in piu' effettuati + { + // Detrae dal residuo scaduto eventuali pagamenti in piu' effettuati + real gap = (res_pagati > res ? res : res_pagati); + res -= gap; + res_pagati -= gap; + } if (d < _limscad && d >= (TDate&)_s_date[0]) s1 += res; if (d < (TDate&)_s_date[0] && d >= (TDate&)_s_date[1]) @@ -258,47 +265,47 @@ void TStampaScaduto::compute_all(TPartita& p) } if (residuo != 0.0) { - if (_stvaluta && _codval != " ") _residuo = residuo.string(".2"); + if (_stvaluta && _codval != " ") _residuo = residuo.string(".3"); else _residuo = residuo.string("."); } if (nonscad != 0.0) { - if (_stvaluta && _codval != " ") _nonscad = nonscad.string(".2"); + if (_stvaluta && _codval != " ") _nonscad = nonscad.string(".3"); else _nonscad = nonscad.string("."); } if (buonf != 0.0) { - if (_stvaluta && _codval != " ") _buonfin = buonf.string(".2"); + if (_stvaluta && _codval != " ") _buonfin = buonf.string(".3"); else _buonfin = buonf.string("."); } if (s1 != 0.0) { - if (_stvaluta && _codval != " ") _sc_1 = s1.string(".2"); + if (_stvaluta && _codval != " ") _sc_1 = s1.string(".3"); else _sc_1 = s1.string("."); } if (s2 != 0.0) { - if (_stvaluta && _codval != " ") _sc_2 = s2.string(".2"); + if (_stvaluta && _codval != " ") _sc_2 = s2.string(".3"); else _sc_2 = s2.string("."); } if (s3 != 0.0) { - if (_stvaluta && _codval != " ") _sc_3 = s3.string(".2"); + if (_stvaluta && _codval != " ") _sc_3 = s3.string(".3"); else _sc_3 = s3.string("."); } if (s4 != 0.0) { - if (_stvaluta && _codval != " ") _sc_4 = s4.string(".2"); + if (_stvaluta && _codval != " ") _sc_4 = s4.string(".3"); else _sc_4 = s4.string("."); } if (s5 != 0.0) { - if (_stvaluta && _codval != " ") _sc_5 = s5.string(".2"); + if (_stvaluta && _codval != " ") _sc_5 = s5.string(".3"); else _sc_5 = s5.string("."); } if (s6 != 0.0) { - if (_stvaluta && _codval != " ") _sc_6 = s6.string(".2"); + if (_stvaluta && _codval != " ") _sc_6 = s6.string(".3"); else _sc_6 = s6.string("."); } // Aggiorna i totali... @@ -630,42 +637,42 @@ void TStampaScaduto::print_totali_rows(int& nriga, bool what) _LineTotal& v = (_LineTotal&)xassoc[k]; if (k != " ") set_row(nriga,"@37g%-3s",(const char*)k); - if (_stvaluta && k != " ") value = v._rd.string(".2"); + if (_stvaluta && k != " ") value = v._rd.string(".3"); else value = v._rd.string("."); if (v._rd != 0.0) - set_row(nriga,"@41g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._ns.string(".2"); + set_row(nriga,"@41g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._ns.string(".3"); else value = v._ns.string("."); if (v._ns != 0.0) - set_row(nriga,"@59g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._bf.string(".2"); + set_row(nriga,"@60g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._bf.string(".3"); else value = v._bf.string("."); if (v._bf != 0.0) - set_row(nriga,"@77g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s1.string(".2"); + set_row(nriga,"@79g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s1.string(".3"); else value = v._s1.string("."); if (v._s1 != 0.0) - set_row(nriga,"@95g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s2.string(".2"); + set_row(nriga,"@98g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s2.string(".3"); else value = v._s2.string("."); if (v._s2 != 0.0) - set_row(nriga,"@113g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s3.string(".2"); + set_row(nriga,"@117g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s3.string(".3"); else value = v._s3.string("."); if (v._s3 != 0.0) - set_row(nriga,"@131g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s4.string(".2"); + set_row(nriga,"@136g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s4.string(".3"); else value = v._s4.string("."); if (v._s4 != 0.0) - set_row(nriga,"@149g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s5.string(".2"); + set_row(nriga,"@155g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s5.string(".3"); else value = v._s5.string("."); if (v._s5 != 0.0) - set_row(nriga,"@167g%17s",(const char*) value); - if (_stvaluta && k != " ") value = v._s6.string(".2"); + set_row(nriga,"@174g%18s",(const char*) value); + if (_stvaluta && k != " ") value = v._s6.string(".3"); else value = v._s6.string("."); if (v._s6 != 0.0) - set_row(nriga,"@185g%17s",(const char*) value); + set_row(nriga,"@193g%18s",(const char*) value); set_row(++nriga,""); } xassoc.destroy(); // Distrugge il totale appena stampato @@ -714,7 +721,7 @@ void TStampaScaduto::print_header() case fornitori: case clienti: { - TString rw(203); + TString rw(211); TString s1,s2; int o = 0; // Offset per scaglioni. set_header (soh++, "Ditta : %ld %s@158gData@163g%s @190gPag. @#", @@ -734,11 +741,11 @@ void TStampaScaduto::print_header() rw.fill('-'); set_header(soh++, (const char *) rw); set_header(soh++,"CODICE@18gC O G N O M E E N O M E "); - set_header(soh++,"Riferim.@12gNumero@20gNumero@27gData@46gResiduo@94g" + set_header(soh++,"Riferim.@12gNumero@20gNumero@27gData@50gResiduo@102g" "---------------------------------------------- S C A D U T O " "----------------------------------------------"); set_header(soh++,"partita@12gDocum.@20gProt.@27gDocumento@38gValuta" - "@46gDocumento@64gNon Scaduto@82g%s@100g%s@118g%s@136g%s@154g%s@172g%s@190g%s", + "@50gDocumento@67gNon Scaduto@86g%s@112g%s@129g%s@148g%s@167g%s@185g%s@204g%s", (const char*)s1,scaglioni[0],scaglioni[1+o],scaglioni[2+o], scaglioni[3+o],scaglioni[4+o],(const char*) s2); set_header(soh++,(const char *)rw); @@ -746,7 +753,7 @@ void TStampaScaduto::print_header() } case altri: // Piano dei conti { - TString rw(180); + TString rw(183); set_header (soh++, "Ditta : %ld %s@152gData@157g%s @170gPag. @#", firm, (const char *)s, (const char *)datas); set_header(soh++,"@79g** SCADUTO **"); @@ -755,10 +762,10 @@ void TStampaScaduto::print_header() rw.fill('-'); set_header(soh++, (const char *) rw); set_header(soh++,"CONTO@18gD E S C R I Z I O N E"); - set_header(soh++,"Riferim.@12gNumero@20gNumero@27gData@46gResiduo@94g" + set_header(soh++,"Riferim.@12gNumero@20gNumero@27gData@50gResiduo@102g" "-------------------------- S C A D U T O -------------------------"); set_header(soh++,"partita@12gDocum.@20gProt.@27gDocumento@38gValuta" - "@46gDocumento@64gNon Scaduto@100g%s@118g%s@136g%s@154g%s@172g%s", + "@50gDocumento@67gNon Scaduto@112g%s@129g%s@148g%s@167g%s@185g%s", scaglioni[0],scaglioni[5],scaglioni[6], scaglioni[7],scaglioni[8]); set_header(soh++,(const char *)rw); @@ -783,15 +790,15 @@ void TStampaScaduto::set_page_part(int& nriga) set_row(nriga,"#2t/@7s",&_anno,FLD(LF_PARTITE,PART_NUMPART)); set_row(nriga,"@12g#t@20g#5t",&_numdoc,&_protiva); set_row(nriga,"@26g#t@37g#t",&_datadoc,&_codval); - set_row(nriga,"@41g#17t",&_residuo); - set_row(nriga,"@59g#17t",&_nonscad); - set_row(nriga,"@77g#17t",&_buonfin); - set_row(nriga,"@95g#17t",&_sc_1); - set_row(nriga,"@113g#17t",&_sc_2); - set_row(nriga,"@131g#17t",&_sc_3); - set_row(nriga,"@149g#17t",&_sc_4); - set_row(nriga,"@167g#17t",&_sc_5); - set_row(nriga,"@185g#17t",&_sc_6); + set_row(nriga,"@41g#18t",&_residuo); + set_row(nriga,"@60g#18t",&_nonscad); + set_row(nriga,"@79g#18t",&_buonfin); + set_row(nriga,"@98g#18t",&_sc_1); + set_row(nriga,"@117g#18t",&_sc_2); + set_row(nriga,"@136g#18t",&_sc_3); + set_row(nriga,"@155g#18t",&_sc_4); + set_row(nriga,"@174g#18t",&_sc_5); + set_row(nriga,"@193g#18t",&_sc_6); } void TStampaScaduto::set_page(int file, int counter)