Patch level : 10.0

Files correlati     : cg4.exe
Ricompilazione Demo : [ ]
Commento            :
Corretto (da Bonazzi) calcolo IVA differita per note di credito


git-svn-id: svn://10.65.10.50/branches/R_10_00@22594 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-03-01 16:52:59 +00:00
parent c6e5188da8
commit adfea52a8d
2 changed files with 91 additions and 22 deletions

View File

@ -850,9 +850,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
date = datainc;
real pagatt;
real ncatt;
real totfat;
TImporto pagprec;
TImporto pag;
TImporto ncprec;
TImporto nc;
bool dok = is_date_ok(date, month, liqmonth, year_int);
TPartite_array arrpart;
const long numreg = _mov->get_long(MOV_NUMREG);
@ -878,15 +881,23 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
totfat += importo.valore();
pagprec += rp.calcola_pagato_al(false, inizio, inizio, inizio); pagprec.normalize(sez);
pag += rp.calcola_pagato_al(false, fine, fine, fine); pag.normalize(sez);
// Inizio aggiunte di Bonazzi del 16/02/2012
ncprec += rp.calcola_pagato_al(false, inizio, inizio, inizio, 0x1F); ncprec.normalize(sez);
nc += rp.calcola_pagato_al(false, fine, fine, fine, 0x1F); nc.normalize(sez);
// Fine aggiunte di Bonazzi del 16/02/2012
}
}
if ((diffpayed && dok) || (pag.valore() > totfat))
pag.set(sez, totfat);
pagatt = pag.valore() - pagprec.valore();
if (pagatt > ZERO)
dok = true;
// Inizio aggiunte di Bonazzi del 16/02/2012
ncatt = nc.valore() - ncprec.valore();
pagatt -= ncatt;
// Fine aggiunte di Bonazzi del 16/02/2012
}
}
@ -1002,13 +1013,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
real impon_det; // Imponibile detraibile
real impos_det; // Imposta detraibile
if (pagatt > ZERO)
if (pagatt > ZERO || ncatt > ZERO)
{
if (pag.valore() >= totfat)
{
TDate from(_mov->get(MOV_DATAREG));
real impprec;
real ivaprec;
real ncprec;
real val;
if (month < 13)
{
@ -1030,6 +1043,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const int items = arrpart.items();
const char sez = (tipomov == vendita ? 'A' : 'D');
TImporto pagtmp;
// Inizio aggiunte di Bonazzi del 16/02/2012
TImporto nctmp;
// Fine aggiunte di Bonazzi del 16/02/2012
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next())
{
@ -1042,20 +1058,31 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
pagtmp += rp.calcola_pagato_al(false, endp, endp, endp, 9);
pagtmp -= rp.calcola_pagato_al(false, from, from, from, 9);
pagtmp.normalize(sez);
// Inizio aggiunte di Bonazzi del 16/02/2012
nctmp += rp.calcola_pagato_al(false, endp, endp, endp, 0x19);
nctmp -= rp.calcola_pagato_al(false, from, from, from, 0x19);
nctmp.normalize(sez);
pagtmp -= nctmp;
// Fine aggiunte di Bonazzi del 16/02/2012
}
}
if (!pagtmp.is_zero())
{
real perc = pagtmp.valore() / totfat;
const real perc = pagtmp.valore() / totfat;
real imp = imponibile_orig * perc;
real iva = imposta_orig * perc;
imp.round(TCurrency::get_firm_dec());
impprec += imp;
iva.round(TCurrency::get_firm_dec());
ivaprec += iva;
val = imponibile_orig * perc;
val.round(TCurrency::get_firm_dec());
impprec += val;
val = imposta_orig * perc;
val.round(TCurrency::get_firm_dec());
ivaprec += val;
}
// Inizio aggiunte di Bonazzi del 16/02/2012
if (!nctmp.is_zero())
ncprec += nctmp.valore();
// Fine aggiunte di Bonazzi del 16/02/2012
from = endp;
}
}
@ -1070,6 +1097,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const int items = arrpart.items();
const char sez = (tipomov == vendita ? 'A' : 'D');
TImporto pagtmp;
TImporto nctmp;
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next())
{
@ -1081,24 +1109,41 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
pagtmp += rp.calcola_pagato_al(false, to, to, to, 9);
pagtmp.normalize(sez);
nctmp += rp.calcola_pagato_al(false, to, to, to, 0x19);
nctmp.normalize(sez);
pagtmp -= nctmp;
}
}
if (!pagtmp.is_zero())
{
real perc = pagtmp.valore() / totfat;
real imp = imponibile_orig * perc;
real iva = imposta_orig * perc;
const real perc = pagtmp.valore() / totfat;
real val = imponibile_orig * perc;
imp.round(TCurrency::get_firm_dec());
impprec = imp;
iva.round(TCurrency::get_firm_dec());
ivaprec = iva;
val.round(TCurrency::get_firm_dec());
impprec = val;
val = imposta_orig * perc;
val.round(TCurrency::get_firm_dec());
ivaprec = val;
}
if (!nctmp.is_zero())
ncprec = nctmp.valore();
}
}
}
incdiff_imp = imponibile_orig - impprec;
incdiff_iva = imposta_orig - ivaprec;
ncatt -= ncprec;
const real ncperc = ncatt / totfat;
val = imponibile_orig * ncperc;
val.round(TCurrency::get_firm_dec());
diff_imp = -val;
incdiff_imp -= val;
val = imposta_orig * ncperc;
val.round(TCurrency::get_firm_dec());
diff_iva = -val;
incdiff_iva -= val;
}
else
{
@ -1113,7 +1158,18 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
diff_imp = imponibile_orig - incdiff_imp;
diff_iva = imposta_orig - incdiff_iva;
}
const real ncperc = ncatt / totfat;
real val = imponibile_orig * ncperc;
val.round(TCurrency::get_firm_dec());
diff_imp = -val;
incdiff_imp -= val;
val = imposta_orig * ncperc;
val.round(TCurrency::get_firm_dec());
diff_iva = -val;
incdiff_iva -= val;
}
}
else
if (difftopay)
@ -1131,6 +1187,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
impon_det, impos_det, impon_ind, impos_ind);
// qui
for (int is_detraibile = 0; is_detraibile < 2; is_detraibile++)
{

View File

@ -316,8 +316,20 @@ TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate & al, int mode)
const char sez = sum.sezione();
if (mode & 0x1)
totale += TImporto(sez, pag.get_real(imp_field));
if (!in_val && (mode & 0x8)) // Le ritenute non esistono nei pagamenti in valuta
{
// Inizio aggiunte di Bonazzi del 16/02/2012
if (mode & 0x10) // solo le note di credito
{
const tipo_movimento tm = (tipo_movimento)sum.get_int(PART_TIPOMOV);
if (tm == tm_nota_credito)
totale += TImporto(sez, pag.get_real(imp_field));
}
else // tutto
totale += TImporto(sez, pag.get_real(imp_field));
// Fine aggiunte di Bonazzi del 16/02/2012
}
if (!in_val && (mode & 0x8)) // Le ritenute non esistono nei pagamenti in valuta
{
totale += TImporto(sez, pag.get_real(PAGSCA_RITENUTE));
totale += TImporto(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC));
@ -335,8 +347,8 @@ TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate & al, int mode)
cur.change_to_firm_val();
abb = cur.get_num();
}
totale += TImporto(sez, abb);
}
totale += TImporto(sez, abb);
}
}
if (in_val && !val && (mode & 0x4)) // Voglio anche le differenze cambio