Patch level :4.0

Files correlati     :cg7.exe
Ricompilazione Demo : [ ]
Commento            :aggiunto il trattamento delle ive parzialmente indetraibili nel programma enrichettico


git-svn-id: svn://10.65.10.50/trunk@14791 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-01-25 15:48:20 +00:00
parent 4a6b388bd4
commit be9173fe19

@ -287,6 +287,8 @@ protected:
long calcola_fattura_originale(long nreg) const;
bool calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec,
real& imponibile, real& totdoc, real& totpagato, real& iva_indetraibile) const;
void calcola_imposte(const real& importo, const real& imposta,
const TString& codind, real& iva_det, real& iva_ind) const;
public:
const real get_importo() {return _importo;}
@ -633,8 +635,8 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
//accresce l'importo tot_imp relativo alla coppia codiva+codconto corrente
const real imponibile = pn.iva(l).get_real(RMI_IMPONIBILE);
const real imposta = pn.iva(l).get_real(RMI_IMPOSTA);
const TString4 tipodet = pn.iva(l).get(RMI_TIPODET);
pn.analizza_riga_IVA(imponibile, imposta, caus, anno, codiva, tipodet, imp_detr,
const TString4 codind = pn.iva(l).get(RMI_TIPODET);
pn.analizza_riga_IVA(imponibile, imposta, caus, anno, codiva, codind, imp_detr,
iva_detr, imp_indetr, iva_indetr);
*tot_imp += imp_detr + imp_indetr + iva_indetr;
//aggiungere qui eventuale imposta
@ -956,6 +958,34 @@ void TInvioP::lettura_conti(TAssoc_array& assoc, const char tipoconto)
}
}
void TInvioP::calcola_imposte(const real& importo, const real& imposta,
const TString& codind, real& iva_det, real& iva_ind) const
{
iva_det = imposta;
iva_ind = ZERO;
//esiste un codice di indetraibilita'?
if (codind.full())
{
real perc = ZERO;
const TRectype& rec = cache().get("%DET", codind);
if (rec.empty())
{
if (strchr("139", codind[0]) != NULL) // Clausola di salvaguardia
perc = CENTO;
}
else
{
if (rec.get_int("I0") > 0)
perc = rec.get_real("R0");
}
//valori delle varie ive
iva_ind = imposta * perc / CENTO;
iva_ind.round(2);
iva_det = imposta - iva_ind;
}
}
bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec, real& imponibile, real& totdoc, real& totpagato, real& iva_indetraibile) const
{
totpagato = pag_rec.get_real(PAGSCA_IMPORTO);
@ -1012,20 +1042,24 @@ bool TInvioP::calcola_imponibile_totdoc(const long nreg, const TRectype& pag_rec
if (conto.indicatore_bilancio() != 5)
{
const real importo = rmoviva.get_real(RMI_IMPONIBILE);
real iva = rmoviva.get_real(RMI_IMPOSTA);
const TString& tipodet = rmoviva.get(RMI_TIPODET);
const real iva = rmoviva.get_real(RMI_IMPOSTA);
//trattamento delle ive indetraibili!
const TString& codind = rmoviva.get(RMI_TIPODET);
imponibile += importo;
if (tipodet.full())
real iva_det, iva_ind;
//calcola i valori dell'iva detraibile e delle ive indetraibili in diverse percentuali
calcola_imposte(importo, iva, codind, iva_det, iva_ind);
//se esiste un'iva indetraibile..
if (iva_ind != ZERO)
{
//serve per i casi speciali con fdr in regime fidcale diverso da quello..
//..della fattura
iva_indetraibile += iva;
imponibile += iva;
iva_indetraibile += iva_ind;
imponibile += iva_ind;
}
else
imposta += iva;
}
//l'iva detraibile va sempre bene sommata alle imposte
imposta += iva_det;
}
}
totdoc = totale_documento(pn); //tot doc con ritenute fiscali + ritenute sociali