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
This commit is contained in:
angelo 1996-04-15 16:55:59 +00:00
parent 7447506b41
commit 8f7d3a77cb

View File

@ -177,7 +177,7 @@ void TStampaScaduto::compute_all(TPartita& p)
const char* field = (_stvaluta && rs.in_valuta()) ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO; const char* field = (_stvaluta && rs.in_valuta()) ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO;
const char* sfield = (_stvaluta && rs.in_valuta()) ? SCAD_IMPORTOVAL : SCAD_IMPORTO; const char* sfield = (_stvaluta && rs.in_valuta()) ? SCAD_IMPORTOVAL : SCAD_IMPORTO;
const char ssez = rp.sezione(); const char ssez = rp.sezione();
TImporto scd,pag,bf; TImporto scd,pag,bf,work_imp;
if (d > _limop) continue; if (d > _limop) continue;
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?
@ -187,20 +187,18 @@ void TStampaScaduto::compute_all(TPartita& p)
const TRiga_partite& sum = p.riga(pp); const TRiga_partite& sum = p.riga(pp);
const char sez = sum.sezione(); const char sez = sum.sezione();
const int tipomov = sum.get_int(PART_TIPOMOV); const int tipomov = sum.get_int(PART_TIPOMOV);
switch (tipomov) // 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'
case 5: // Insoluto (aumenta scd) // compresa la sezione opposta
scd += TImporto(sez,pg.get_real(field)); if (tipomov==5 || tipomov==2)
break; {
case 2: // Nota di credito assegnata (storna da scd) work_imp = TImporto(sez,pg.get_real(field));
scd -= TImporto(sez,pg.get_real(field)); scd += work_imp;
break; pag -= work_imp;
default:
break;
} }
if ((tipomov==3 || tipomov==5) && _tipost==clienti && _gcr!=0) 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); 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!=1 && tipo_pag!=8 && tipo_pag!= 9 && data_pag.ok()) //Incasso tramite effetto
if (data_pag >= _limbf && data_pag <= _limscad) if (data_pag >= _limbf && data_pag <= _limscad)
@ -209,7 +207,7 @@ void TStampaScaduto::compute_all(TPartita& p)
} }
char norm='D'; char norm='D';
if (_tipost == fornitori) norm = 'A'; 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(); real res,a,b; a = pag.valore(); b = scd.valore(); buonf = bf.valore();
if (_uns > 0.0) // Rettifica i pagamenti con i non assegnati if (_uns > 0.0) // Rettifica i pagamenti con i non assegnati
{ {
@ -224,15 +222,24 @@ void TStampaScaduto::compute_all(TPartita& p)
_unsnc -= gap; _unsnc -= gap;
} }
res = b - a; // Scadenze - pagati = scaduto per questo gruppo di rate 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 if (res < 0.0) // Significa che l'importo pagato e' maggiore dell'importo in scadenza
{ // c'e' un residuo positivo, e quindi va memorizzato { // c'e' un residuo positivo, e quindi va memorizzato
res *= -1.0; // cambia il segno
res_pagati+= res; // Residui pagati in piu' res_pagati+= res; // Residui pagati in piu'
res = 0.0; res = 0.0;
} }
if (d > _limscad) if (d > _limscad)
nonscad += res; nonscad += res;
else 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]) if (d < _limscad && d >= (TDate&)_s_date[0])
s1 += res; s1 += res;
if (d < (TDate&)_s_date[0] && d >= (TDate&)_s_date[1]) 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 (residuo != 0.0)
{ {
if (_stvaluta && _codval != " ") _residuo = residuo.string(".2"); if (_stvaluta && _codval != " ") _residuo = residuo.string(".3");
else _residuo = residuo.string("."); else _residuo = residuo.string(".");
} }
if (nonscad != 0.0) if (nonscad != 0.0)
{ {
if (_stvaluta && _codval != " ") _nonscad = nonscad.string(".2"); if (_stvaluta && _codval != " ") _nonscad = nonscad.string(".3");
else _nonscad = nonscad.string("."); else _nonscad = nonscad.string(".");
} }
if (buonf != 0.0) if (buonf != 0.0)
{ {
if (_stvaluta && _codval != " ") _buonfin = buonf.string(".2"); if (_stvaluta && _codval != " ") _buonfin = buonf.string(".3");
else _buonfin = buonf.string("."); else _buonfin = buonf.string(".");
} }
if (s1 != 0.0) 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("."); else _sc_1 = s1.string(".");
} }
if (s2 != 0.0) 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("."); else _sc_2 = s2.string(".");
} }
if (s3 != 0.0) 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("."); else _sc_3 = s3.string(".");
} }
if (s4 != 0.0) 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("."); else _sc_4 = s4.string(".");
} }
if (s5 != 0.0) 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("."); else _sc_5 = s5.string(".");
} }
if (s6 != 0.0) 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("."); else _sc_6 = s6.string(".");
} }
// Aggiorna i totali... // Aggiorna i totali...
@ -630,42 +637,42 @@ void TStampaScaduto::print_totali_rows(int& nriga, bool what)
_LineTotal& v = (_LineTotal&)xassoc[k]; _LineTotal& v = (_LineTotal&)xassoc[k];
if (k != " ") if (k != " ")
set_row(nriga,"@37g%-3s",(const char*)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("."); else value = v._rd.string(".");
if (v._rd != 0.0) if (v._rd != 0.0)
set_row(nriga,"@41g%17s",(const char*) value); set_row(nriga,"@41g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._ns.string(".2"); if (_stvaluta && k != " ") value = v._ns.string(".3");
else value = v._ns.string("."); else value = v._ns.string(".");
if (v._ns != 0.0) if (v._ns != 0.0)
set_row(nriga,"@59g%17s",(const char*) value); set_row(nriga,"@60g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._bf.string(".2"); if (_stvaluta && k != " ") value = v._bf.string(".3");
else value = v._bf.string("."); else value = v._bf.string(".");
if (v._bf != 0.0) if (v._bf != 0.0)
set_row(nriga,"@77g%17s",(const char*) value); set_row(nriga,"@79g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s1.string(".2"); if (_stvaluta && k != " ") value = v._s1.string(".3");
else value = v._s1.string("."); else value = v._s1.string(".");
if (v._s1 != 0.0) if (v._s1 != 0.0)
set_row(nriga,"@95g%17s",(const char*) value); set_row(nriga,"@98g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s2.string(".2"); if (_stvaluta && k != " ") value = v._s2.string(".3");
else value = v._s2.string("."); else value = v._s2.string(".");
if (v._s2 != 0.0) if (v._s2 != 0.0)
set_row(nriga,"@113g%17s",(const char*) value); set_row(nriga,"@117g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s3.string(".2"); if (_stvaluta && k != " ") value = v._s3.string(".3");
else value = v._s3.string("."); else value = v._s3.string(".");
if (v._s3 != 0.0) if (v._s3 != 0.0)
set_row(nriga,"@131g%17s",(const char*) value); set_row(nriga,"@136g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s4.string(".2"); if (_stvaluta && k != " ") value = v._s4.string(".3");
else value = v._s4.string("."); else value = v._s4.string(".");
if (v._s4 != 0.0) if (v._s4 != 0.0)
set_row(nriga,"@149g%17s",(const char*) value); set_row(nriga,"@155g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s5.string(".2"); if (_stvaluta && k != " ") value = v._s5.string(".3");
else value = v._s5.string("."); else value = v._s5.string(".");
if (v._s5 != 0.0) if (v._s5 != 0.0)
set_row(nriga,"@167g%17s",(const char*) value); set_row(nriga,"@174g%18s",(const char*) value);
if (_stvaluta && k != " ") value = v._s6.string(".2"); if (_stvaluta && k != " ") value = v._s6.string(".3");
else value = v._s6.string("."); else value = v._s6.string(".");
if (v._s6 != 0.0) if (v._s6 != 0.0)
set_row(nriga,"@185g%17s",(const char*) value); set_row(nriga,"@193g%18s",(const char*) value);
set_row(++nriga,""); set_row(++nriga,"");
} }
xassoc.destroy(); // Distrugge il totale appena stampato xassoc.destroy(); // Distrugge il totale appena stampato
@ -714,7 +721,7 @@ void TStampaScaduto::print_header()
case fornitori: case fornitori:
case clienti: case clienti:
{ {
TString rw(203); TString rw(211);
TString s1,s2; TString s1,s2;
int o = 0; // Offset per scaglioni. int o = 0; // Offset per scaglioni.
set_header (soh++, "Ditta : %ld %s@158gData@163g%s @190gPag. @#", set_header (soh++, "Ditta : %ld %s@158gData@163g%s @190gPag. @#",
@ -734,11 +741,11 @@ void TStampaScaduto::print_header()
rw.fill('-'); rw.fill('-');
set_header(soh++, (const char *) rw); 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++,"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 " "---------------------------------------------- S C A D U T O "
"----------------------------------------------"); "----------------------------------------------");
set_header(soh++,"partita@12gDocum.@20gProt.@27gDocumento@38gValuta" 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], (const char*)s1,scaglioni[0],scaglioni[1+o],scaglioni[2+o],
scaglioni[3+o],scaglioni[4+o],(const char*) s2); scaglioni[3+o],scaglioni[4+o],(const char*) s2);
set_header(soh++,(const char *)rw); set_header(soh++,(const char *)rw);
@ -746,7 +753,7 @@ void TStampaScaduto::print_header()
} }
case altri: // Piano dei conti case altri: // Piano dei conti
{ {
TString rw(180); TString rw(183);
set_header (soh++, "Ditta : %ld %s@152gData@157g%s @170gPag. @#", set_header (soh++, "Ditta : %ld %s@152gData@157g%s @170gPag. @#",
firm, (const char *)s, (const char *)datas); firm, (const char *)s, (const char *)datas);
set_header(soh++,"@79g** SCADUTO **"); set_header(soh++,"@79g** SCADUTO **");
@ -755,10 +762,10 @@ void TStampaScaduto::print_header()
rw.fill('-'); rw.fill('-');
set_header(soh++, (const char *) rw); set_header(soh++, (const char *) rw);
set_header(soh++,"CONTO@18gD E S C R I Z I O N E"); 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 -------------------------"); "-------------------------- S C A D U T O -------------------------");
set_header(soh++,"partita@12gDocum.@20gProt.@27gDocumento@38gValuta" 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[0],scaglioni[5],scaglioni[6],
scaglioni[7],scaglioni[8]); scaglioni[7],scaglioni[8]);
set_header(soh++,(const char *)rw); 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,"#2t/@7s",&_anno,FLD(LF_PARTITE,PART_NUMPART));
set_row(nriga,"@12g#t@20g#5t",&_numdoc,&_protiva); set_row(nriga,"@12g#t@20g#5t",&_numdoc,&_protiva);
set_row(nriga,"@26g#t@37g#t",&_datadoc,&_codval); set_row(nriga,"@26g#t@37g#t",&_datadoc,&_codval);
set_row(nriga,"@41g#17t",&_residuo); set_row(nriga,"@41g#18t",&_residuo);
set_row(nriga,"@59g#17t",&_nonscad); set_row(nriga,"@60g#18t",&_nonscad);
set_row(nriga,"@77g#17t",&_buonfin); set_row(nriga,"@79g#18t",&_buonfin);
set_row(nriga,"@95g#17t",&_sc_1); set_row(nriga,"@98g#18t",&_sc_1);
set_row(nriga,"@113g#17t",&_sc_2); set_row(nriga,"@117g#18t",&_sc_2);
set_row(nriga,"@131g#17t",&_sc_3); set_row(nriga,"@136g#18t",&_sc_3);
set_row(nriga,"@149g#17t",&_sc_4); set_row(nriga,"@155g#18t",&_sc_4);
set_row(nriga,"@167g#17t",&_sc_5); set_row(nriga,"@174g#18t",&_sc_5);
set_row(nriga,"@185g#17t",&_sc_6); set_row(nriga,"@193g#18t",&_sc_6);
} }
void TStampaScaduto::set_page(int file, int counter) void TStampaScaduto::set_page(int file, int counter)