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:
parent
0b6a298ced
commit
2d4a8bddba
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user