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:
parent
c6e5188da8
commit
adfea52a8d
@ -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++)
|
||||
{
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user