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; date = datainc;
real pagatt; real pagatt;
real ncatt;
real totfat; real totfat;
TImporto pagprec; TImporto pagprec;
TImporto pag; TImporto pag;
TImporto ncprec;
TImporto nc;
bool dok = is_date_ok(date, month, liqmonth, year_int); bool dok = is_date_ok(date, month, liqmonth, year_int);
TPartite_array arrpart; TPartite_array arrpart;
const long numreg = _mov->get_long(MOV_NUMREG); 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(); totfat += importo.valore();
pagprec += rp.calcola_pagato_al(false, inizio, inizio, inizio); pagprec.normalize(sez); pagprec += rp.calcola_pagato_al(false, inizio, inizio, inizio); pagprec.normalize(sez);
pag += rp.calcola_pagato_al(false, fine, fine, fine); pag.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)) if ((diffpayed && dok) || (pag.valore() > totfat))
pag.set(sez, totfat); pag.set(sez, totfat);
pagatt = pag.valore() - pagprec.valore(); pagatt = pag.valore() - pagprec.valore();
if (pagatt > ZERO) if (pagatt > ZERO)
dok = true; 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 impon_det; // Imponibile detraibile
real impos_det; // Imposta detraibile real impos_det; // Imposta detraibile
if (pagatt > ZERO) if (pagatt > ZERO || ncatt > ZERO)
{ {
if (pag.valore() >= totfat) if (pag.valore() >= totfat)
{ {
TDate from(_mov->get(MOV_DATAREG)); TDate from(_mov->get(MOV_DATAREG));
real impprec; real impprec;
real ivaprec; real ivaprec;
real ncprec;
real val;
if (month < 13) if (month < 13)
{ {
@ -1030,6 +1043,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const int items = arrpart.items(); const int items = arrpart.items();
const char sez = (tipomov == vendita ? 'A' : 'D'); const char sez = (tipomov == vendita ? 'A' : 'D');
TImporto pagtmp; 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()) 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, endp, endp, endp, 9);
pagtmp -= rp.calcola_pagato_al(false, from, from, from, 9); pagtmp -= rp.calcola_pagato_al(false, from, from, from, 9);
pagtmp.normalize(sez); 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()) if (!pagtmp.is_zero())
{ {
real perc = pagtmp.valore() / totfat; const real perc = pagtmp.valore() / totfat;
real imp = imponibile_orig * perc; val = imponibile_orig * perc;
real iva = imposta_orig * perc; val.round(TCurrency::get_firm_dec());
impprec += val;
imp.round(TCurrency::get_firm_dec()); val = imposta_orig * perc;
impprec += imp; val.round(TCurrency::get_firm_dec());
iva.round(TCurrency::get_firm_dec()); ivaprec += val;
ivaprec += iva;
} }
// 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; from = endp;
} }
} }
@ -1070,6 +1097,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const int items = arrpart.items(); const int items = arrpart.items();
const char sez = (tipomov == vendita ? 'A' : 'D'); const char sez = (tipomov == vendita ? 'A' : 'D');
TImporto pagtmp; TImporto pagtmp;
TImporto nctmp;
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next()) 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 += rp.calcola_pagato_al(false, to, to, to, 9);
pagtmp.normalize(sez); pagtmp.normalize(sez);
nctmp += rp.calcola_pagato_al(false, to, to, to, 0x19);
nctmp.normalize(sez);
pagtmp -= nctmp;
} }
} }
if (!pagtmp.is_zero()) if (!pagtmp.is_zero())
{ {
real perc = pagtmp.valore() / totfat; const real perc = pagtmp.valore() / totfat;
real imp = imponibile_orig * perc; real val = imponibile_orig * perc;
real iva = imposta_orig * perc;
imp.round(TCurrency::get_firm_dec()); val.round(TCurrency::get_firm_dec());
impprec = imp; impprec = val;
iva.round(TCurrency::get_firm_dec()); val = imposta_orig * perc;
ivaprec = iva; val.round(TCurrency::get_firm_dec());
ivaprec = val;
} }
if (!nctmp.is_zero())
ncprec = nctmp.valore();
} }
} }
} }
incdiff_imp = imponibile_orig - impprec; incdiff_imp = imponibile_orig - impprec;
incdiff_iva = imposta_orig - ivaprec; 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 else
{ {
@ -1113,7 +1158,18 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
diff_imp = imponibile_orig - incdiff_imp; diff_imp = imponibile_orig - incdiff_imp;
diff_iva = imposta_orig - incdiff_iva; 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 else
if (difftopay) 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, analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
impon_det, impos_det, impon_ind, impos_ind); impon_det, impos_det, impon_ind, impos_ind);
// qui // qui
for (int is_detraibile = 0; is_detraibile < 2; is_detraibile++) 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(); const char sez = sum.sezione();
if (mode & 0x1) 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(sez, pag.get_real(PAGSCA_RITENUTE));
totale += TImporto(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC)); 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(); cur.change_to_firm_val();
abb = cur.get_num(); abb = cur.get_num();
} }
totale += TImporto(sez, abb); totale += TImporto(sez, abb);
} }
} }
if (in_val && !val && (mode & 0x4)) // Voglio anche le differenze cambio if (in_val && !val && (mode & 0x4)) // Voglio anche le differenze cambio