diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index 37535b720..70dda37cc 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -1978,6 +1978,11 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) real iva_acq = 0.0; real conguaglio = 0.0; + // totali per regimi agricoli + real acq_noCEE = 0.0; + real imp_agr1 = 0.0; + real imp_agr2 = 0.0; + // totali per agenzie viaggio real c_iCEE = 0.0; real c_eCEE = 0.0; @@ -2040,8 +2045,24 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) risultato += (_plm->get_real("R0") - _plm->get_real("R1")); res_debt += _plm->get_real("R0"); res_cred += _plm->get_real("R1"); - } // le storie per l'agricolo sono piu' sotto, oltre la fine del do..while() - + } + else + { + // Tiene aggiornata l'iva vendite + iva_vend += _plm->get_real("R6"); + // Tiene aggiornata l'iva acquisti, che andra' rettificata all'uscita + // secondo la formula: + // iva_acq = iva_acq + iva detraibile calcolata + // l'iva detraibile calcolata e' a sua volta fatta cosi' + // sum(plm->R11) * { sum(pum->R11) / [sum(pum->R11) + sum(pum->R10)]} + // dove plm->R11 = acquisti misti fuori CEE + // pum->R10 = tot. imponibile reg agr. 1 + // pum->R11 = tot. imponibile reg agr. 2 + iva_acq += _plm->get_real("R7"); + acq_noCEE += _plm->get_real("R11"); + imp_agr1 += _pum->get_real("R10"); + imp_agr2 += _pum->get_real("R11"); + } detrazioni+= (_plm->get_real("R3") + _plm->get_real("R4")); // detrazioni solo non in regime agricolo @@ -2151,29 +2172,18 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) } // end ciclo su attivita' if (_isagricolo) - { // Ora si deve rettificare risultato in questo modo: - // risultato += (cessioni non in reg. agr. - (acq. non in reg. agr - beni amm. + iva detr) - // ovvero - // risultato += (d._r1 - (d._r2 + d._r10); - // Utilizza solo d._r2 perche' gia' non comprensivo dei beni ammortizzabili - // Giusto per fare qualcosa di nuovo e non ricalcolare ogni volta gli stessi importi - // si reperisce REGAGR da _descr_arr - const int items = _descr_arr.items(); + { + real perc; // percentuale di deducibilita' + real iva_ded; // iva deducibile - for (int i = 0; i < items; i++) - { - _DescrItem& d = (_DescrItem&)_descr_arr[i]; - if (d._flags == REGAGR) - { - iva_vend = d._r1; - iva_acq = d._r2 + d._r10; - res_debt += iva_vend; - res_cred += iva_acq; - risultato += (iva_vend - iva_acq); - break; - } - continue; - } + perc = imp_agr2 /(imp_agr1 + imp_agr2); + perc.round(2); + iva_ded = acq_noCEE * perc; + iva_ded.round(ROUND_LIRA); + iva_acq += iva_ded; + res_debt += iva_vend; + res_cred += iva_acq; + risultato += (iva_vend - iva_acq); } // __ end of _isagricolo if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente) diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index d458787b1..830d8d7cb 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -349,7 +349,7 @@ void TLiquidazione_app::describe_agricolo(int month, const char* codatt) d->_r7 += _pum->get_real("R10"); d->_r8 += _pum->get_real("R11"); } - // Aggiungo anche questi, perche' oltre che servire in stampa, servono anche in write_liq() + // Aggiungo anche questi per comodita' futura. // in caso di ditta a regime agricolo // alias: // _r9 mantiene la percentuale (gia' arrotondata!)