Correzione alla stampa riepilogo progressivi relativamente allo

scorporo dei corrispettivi (campo R3 in PIM).


git-svn-id: svn://10.65.10.50/trunk@4138 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-02-19 08:46:05 +00:00
parent 0b6a298ced
commit 2d4a8bddba

View File

@ -125,6 +125,7 @@ class TProgressivi_iva : public TPrintapp
bool _st_inizio_anno, _prima_pagina;
TIva_array _iva_array,_iva1_array;
TGen_array _gen_array,_gen1_array;
TAssoc_array _corr_array;
TString _cap,_cofi,_paiva,_ragsoc,_comunefis,_provfis,_viafis,_codivamsk,_codattmsk;
TString _datast, _cod_att;
Importi _mesi[13];
@ -143,6 +144,7 @@ public:
virtual bool preprocess_page(int,int);
virtual print_action postprocess_page(int,int);
void lordo2netto(const real& totale, real& imponibile, real& imposta, const real& aliquota);
void cerca_i_pim();
void azzera_mesi();
void get_dati_ditta();
@ -179,6 +181,17 @@ const char* TProgressivi_iva::desc_attivita(const char* codatt)
return TMP;
}
void TProgressivi_iva::lordo2netto(const real& totale, real& imponibile, real& imposta, const real& aliquota)
{
imposta = (abs(totale) * aliquota)/(aliquota + 1.00);
imposta.ceil();
if (totale.sign() < 0) imposta = -imposta;
imponibile = totale - imposta;
real delta = totale - imponibile - imposta;
if (!delta.is_zero())
imposta += delta;
}
const char* TProgressivi_iva::desc_iva(const TString& cod)
{
@ -256,10 +269,15 @@ void TProgressivi_iva::look_pim()
{
TTable pim("PIM");
TTable reg("REG");
TTable tabiva("%IVA");
TString80 codtab;
TString16 codatt,codiva,tipoiva,codreg;
TToken_string a13("",'!');
real imponibile, imposta,afi,afv,a13i,a13v;
real corr_item,*cp,aliquota;
bool is_key;
_corr_array.destroy();
for (pim.first(); !pim.eof(); pim.next())
{
@ -296,6 +314,13 @@ void TProgressivi_iva::look_pim()
if (reg.read() != NOERR) reg.zero();
const bool corrisp = reg.get_bool("B0");
is_key = _corr_array.is_key(codiva);
corr_item = ZERO;
real& ci = is_key ? (real&) _corr_array[codiva] : corr_item;
ci += pim.get_real("R3"); // accumula i corrispettivi
if (!is_key)
_corr_array.add(codiva,ci);
while (classify_pim(pim.curr(), imponibile, imposta, tipo, TRUE))
{
switch(tipo)
@ -355,6 +380,19 @@ void TProgressivi_iva::look_pim()
}
}
}
// Scorpora i corrispettivi
for (cp = (real*) _corr_array.first_item(); cp != NULL; cp = (real*) _corr_array.succ_item())
{
codiva = _corr_array.get_hashobj()->key();
tabiva.put("CODTAB",codiva);
if (tabiva.read() == NOERR) aliquota = tabiva.get_real("R0");
else aliquota = ZERO;
lordo2netto(*cp,imponibile,imposta,aliquota/100.0);
if (_mese != 13)
_gen_array.add_riga(codiva,imponibile,imposta,ZERO,ZERO,ZERO,ZERO);
if (_st_inizio_anno || _mese == 13) //lo metto in un array a parte
_gen1_array.add_riga(codiva,imponibile,imposta,ZERO,ZERO,ZERO,ZERO);
}
_gen_array.sort(compare_rows); // ordinamento per codice iva
_gen1_array.sort(compare_rows); // ordinamento per codice iva
}