diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index e5082d586..9b869acc1 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -398,6 +398,9 @@ bool TLiquidazione_app::update_firm(int month, bool recalc) _pla->zero("R16"); _pla->zero("R17"); _pla->zero("R18"); + _pla->zero("R19"); + _pla->zero("R20"); + _pla->zero("R21"); _pla->put("S1","0"); _pla->put("S2","0"); _pla->put("S3", "0"); @@ -917,6 +920,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & real esenti_c1a = ZERO; real esenti_c3_bam = ZERO; // Beni ammorizzabili esenti c3 real esenti_c1a_bam = ZERO; // Beni ammorizzabili esenti c1a + real esenti_num_amm; real esenti_b14 = ZERO; real vendite_rev = ZERO; // Vendire in reverse charge (da escludere in prorata) real cred_fattrit; @@ -1499,6 +1503,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI const real perciva = _iva->get_real("R0") / CENTO; int ivarimb = !_iva->get_bool("B4"); // non escluso calcolo rimb. per al. media + const bool den_prorata = _iva->get_bool("B7"); // denominatore prorata nel caso di calcolo pro rata con numeratore e denominatore const TString4 tipocr_s = _rmoviva->get(RMI_TIPOCR); const int tipocr = atoi(tipocr_s); @@ -2207,28 +2212,31 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & } // operazioni esenti + if (tipoiva == "ES" && !imponibile.is_zero()) { if (tipomov == vendita) { if (sosp_imp != normale && sosp_imp != vol_affari) // CM500308 { - if (tipoes_v == "B1") // C1 + if (tipoes_v == "B1") esenti_c1 += imponibile; - else if (tipoes_v == "B2") // C2 + else if (tipoes_v == "B2") esenti_c2 += imponibile; - else if (tipoes_v == "B3") // C3 + else if (tipoes_v == "B3") { esenti_c3 += imponibile; if (tipocr == 4) esenti_c3_bam += imponibile; } - else if (tipoes_v == "B4") // C1A + else if (tipoes_v == "B4") { esenti_c1a += imponibile; if (tipocr == 4) esenti_c1a_bam += imponibile; } + if (den_prorata && tipocr == 4) + esenti_num_amm += imponibile; // se e' il caso sommare esenti per rimborso if (isrimbinfr) esni_rimb += imponibile; @@ -2922,11 +2930,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & // Somma i vari prorata calcolati per gli anni precedenti prorata += prorata_precedente1 + prorata_precedente2; - prorata += prorata_diff; - if (!lia.get_bool("B7")) - prorata = ZERO; - acquisti_iva -= prorata; // Rettifica acquisti_iva - fdiffinc_iva_acq -= prorata_diff; // Rettifica acquisti_iva differiti incassati + prorata += prorata_diff; +/* if (!lia.get_bool("B7")) + prorata = ZERO; */ + acquisti_iva -= prorata; // Rettifica acquisti_iva + fdiffinc_iva_acq -= prorata_diff; // Rettifica acquisti_iva differiti incassati } look_plm(month, codatt, true); @@ -3029,7 +3037,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & _pum->put("R6", esenti_c3); _pum->put("R13", esenti_c1a); _pum->put("S4", esenti_c3_bam); - _pum->put("S5", esenti_c1a_bam); + _pum->put("S5", esenti_c1a_bam); + _pum->put("S6", esenti_num_amm); _pum->put("R7", esenti_b14); _pum->put("R12", esni_rimb); _pum->put("R28", vendite_rev); // Vendite in reverse charge da escludere da prorata @@ -4251,37 +4260,36 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) vol_aff_2 += vf2; vol_aff_l += _pla->get_real("R0"); // volume affari lordo - real es_c1 = _pla->get_real("R1"); // Tipo esenzione B1 - real es_c2 = _pla->get_real("R2"); - real es_c3 = _pla->get_real("R3"); - real es_c1a = _pla->get_real("R15"); - real es_c3_am = _pla->get_real("R16"); - real es_c1a_am = _pla->get_real("R17"); + real es_b1 = _pla->get_real("R1"); // Tipo esenzione B1 + real es_b2 = _pla->get_real("R2"); + real es_b3 = _pla->get_real("R3"); + real es_b4 = _pla->get_real("R15"); + real es_b3_am = _pla->get_real("R16"); + real es_b4_am = _pla->get_real("R17"); real csamm = _pla->get_real("R4"); real ven_rev = _pla->get_real("R18"); + real num_amm = _pla->get_real("R21"); real prorata; real conguaglio; real topay; - + real ris; // gia' esclusi: NS, B3, cess. amm + real rsd; + real rsn; // calcola nuovo prorata dal 1998 per ogni attivita' (miste: 1+2) if (_prorata_nd) { - const real rsd = _pla->get_real("R20"); - const real rsn = _pla->get_real("R19"); - - if (rsd != ZERO) - prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita' + rsd = _pla->get_real("R20") + num_amm; + rsn = _pla->get_real("R19"); } else { - const real ris = vf1 + vf2; // gia' esclusi: NS, B3, cess. amm - const real rsd = ris - (es_c1a - es_c1a_am) - (es_c3 - es_c3_am) - ven_rev; - const real rsn = rsd - es_c1; - - if (!rsd.is_zero()) - prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilitą: reciproco della detraibilitą + ris = vf1 + vf2; // gia' esclusi: NS, B3, cess. amm + rsd = ris - (es_b4 - es_b4_am) - (es_b3 - es_b3_am) - ven_rev; + rsn = rsd - es_b1; } + if (rsd != ZERO) + prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita' prorata.round(0); // calcolo conguaglio -- se positivo e' a debito if (prorata > ZERO && lia.get_bool("B7")) @@ -4614,6 +4622,7 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) real volaff1; real volaff2; real ven_rev; + real num_amm; TString4 codiva,reg,tiva; TToken_string va7("",'!'); @@ -4638,6 +4647,8 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) iva_acq = _pla->get_real("R11"); ven_rev = _pla->get_real("R18"); volaff1 -= _pla->get_real("R34"); + num_amm = _pla->get_real("R21");; + // Per avere un risultato corretto, si deve totalizzare PIM->R3 per codice iva // e quindi effettuare lo scorporo dell'imponibile e aggiungere al relativo volume d'affari @@ -4746,6 +4757,7 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) es_c1a += _pum->get_real("R13"); es_c3_am += _pum->get_real("S4"); es_c1a_am += _pum->get_real("S5"); + num_amm += _pum->get_real("S6"); cess_amm += _pum->get_real("R0"); ven_rev += _pum->get_real("R28"); @@ -4840,6 +4852,7 @@ void TLiquidazione_app::recalc_annual(const char* att, bool & first) { _pla->put("R19", num_pro_rata); _pla->put("R20", den_pro_rata); + _pla->put("R21", num_amm); } _pla->rewrite(); } diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index 4823753a1..3a3198288 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -1098,16 +1098,17 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool real v1 = _pla->get_real("R14"); // Volume d'affari I attivitą real v2 = _pla->get_real("S1"); // Volume d'affari II attivitą real ris = v1 + v2; - real e1 = _pla->get_real("R1"); // Totale vendite esenti C1 - real e2 = _pla->get_real("R2"); // Totale vendite esenti C2 - real e3 = _pla->get_real("R3"); // Totale vendite esenti C3 - real e4 = _pla->get_real("R15"); // Totale vendite esenti C1A - real e5 = _pla->get_real("R16"); // Totale vendite beni ammortizzabili esenti C3 - real e6 = _pla->get_real("R17"); // Totale vendite beni ammortizzabili esenti C1A + real e1 = _pla->get_real("R1"); // Totale vendite esenti B1 + real e2 = _pla->get_real("R2"); // Totale vendite esenti B2 + real e3 = _pla->get_real("R3"); // Totale vendite esenti B3 + real e4 = _pla->get_real("R15"); // Totale vendite esenti B4 + real e5 = _pla->get_real("R16"); // Totale vendite beni ammortizzabili esenti B3 + real e6 = _pla->get_real("R17"); // Totale vendite beni ammortizzabili esenti B4 real bam = _pla->get_real("R4"); // Cessione beni ammortizzabili real vrc = _pla->get_real("R18"); // Vendite reverse charge real iaq = _pla->get_real("R11"); // IVA acquisti real ppg = _pla->get_real("R12"); // pro-rata pagato + real num_amm = _pla->get_real("R21"); // calcola nuovo prorata per ogni attivita' (miste: 1+2) real prorata; real rsd; @@ -1115,20 +1116,16 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool if (_prorata_nd) { - rsd = _pla->get_real("R20"); + rsd = _pla->get_real("R20") + num_amm; rsn = _pla->get_real("R19"); - - if (!rsd.is_zero()) - prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita' } else { rsd = ris - (e3 - e5) - (e4 - e6) - vrc; rsn = rsd - e1; - - if (!rsd.is_zero()) - prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita' } + if (!rsd.is_zero()) + prorata = CENTO - (rsn * CENTO / rsd); // Percentuale di indetraibilita: reciproco della percentuale di detraibilita' prorata.round(0); real co = 0.0; @@ -1149,7 +1146,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool _DescrItem* dd = new _DescrItem(ANNUAL); - // MonsterFish: arrotonda all'Euro C1,C2,C3,C1A + // MonsterFish: arrotonda all'Euro B1,B2,B3,B4 round_imposta(e1); round_imposta(e2); round_imposta(e3); @@ -1159,6 +1156,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool round_imposta(bam); round_imposta(ris); round_imposta(vrc); + round_imposta(num_amm); // segna flag prorata if ((e1+e2+e3+e4) > ZERO) @@ -1180,6 +1178,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool dd->_ra0 = rsn; dd->_ra1 = rsd; dd->_ra2 = vrc; + dd->_ra3 = num_amm; t->_arr.add(dd); } } @@ -2834,45 +2833,52 @@ bool TLiquidazione_app::set_annual(_DescrItem& d) row++; if (_prorata_nd) { - set_row(row++, FR("Numeratore pro-rata @69g%r"), &(d._ra0)); - set_row(row++, FR("Denominatore @69g%r"), &(d._ra1)); + set_row(row++, FR(" - Numeratore pro-rata @69g%r"), &d._ra0); + set_row(row++, FR(" - cessioni esenti di beni ammortizzabili @69g%r"), &d._ra3); + const real tot = d._ra0 + d._ra3; + + if (tot != ZERO) + { + set_row(row++, FR("@69g----------------")); + set_row(row++, FR("@6gTotale @69g%r"), &tot); + row++; + } + set_row(row++, FR(" - Denominatore @69g%r"), &d._ra1); } else { - set_row(row++, FR(" - Volume d'affari @69g%r"), &(vol_aff)); - set_row(row++, FR("C1 - Operazioni esenti escluse da nr. 1 a 9 e 11 art. 10 @69g%r"), &(d._r1)); - set_row(row++, FR("C2 - Operazioni esenti di cui nr. 11 art. 10 @69g%r"), &(d._r4)); - set_row(row++, FR("C3 - Operazioni esenti da nr. 1 a 9 art. 10 @69g%r"), &(d._r5)); - set_row(row++, FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &(d._r8)); + set_row(row++, FR(" - Volume d'affari @69g%r"), &vol_aff); + set_row(row++, FR("B1 - Operazioni esenti escluse da nr. 1 a 9 e 11 art. 10 @69g%r"), &d._r1); + set_row(row++, FR("B2 - Operazioni esenti di cui nr. 11 art. 10 @69g%r"), &d._r4); + set_row(row++, FR("B3 - Operazioni esenti da nr. 1 a 9 art. 10 @69g%r"), &d._r5); + set_row(row++, FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &d._r8); const real diff1 = d._r5 - d._r8; if (diff1 != ZERO) { set_row(row++, FR("@69g----------------")); - set_row(row++, FR("6g Differenza @69g%r"), &(diff1)); + set_row(row++, FR("6gDifferenza @69g%r"), &diff1); row++; } - set_row(row++, FR("C1A - Operazioni esenti di cui all'art.10 n. 27 quinquies @69g%r"), &(d._r7)); - set_row(row++, FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &(d._r9)); + set_row(row++, FR("B4 - Operazioni esenti di cui all'art.10 n. 27 quinquies @69g%r"), &d._r7); + set_row(row++, FR("@6gdi cui cessione beni ammortizzabili @69g%r"), &d._r9); const real diff2 = d._r7 - d._r9; if (diff2 != ZERO) { set_row(row++, FR("@69g----------------")); - set_row(row++, FR("6g Differenza @69g%r"), &(diff2)); + set_row(row++, FR("6gDifferenza @69g%r"), &diff2); row++; } - set_row(row++, FR(" - Vendite Reverse Charge @69g%r"), &(d._ra2)); - set_row(row++, FR("Numeratore pro-rata @69g%r"), &(d._ra0)); - set_row(row++, FR(" Volume d'affari - C3(senza beni amm.) - C1A(senza beni amm.) - vendite reverse charge ")); - set_row(row++, FR("Denominatore @69g%r"), &(d._ra1)); - set_row(row++, FR(" Denominatore - C1 ")); + set_row(row++, FR(" - Vendite Reverse Charge @69g%r"), &d._ra2); + row++; + set_row(row++, FR(" - Numeratore pro-rata @69g%r"), &d._ra0); + set_row(row++, FR(" Volume d'affari - B3(senza beni amm.) - B4(senza beni amm.) - vendite reverse charge ")); + set_row(row++, FR(" - Denominatore @69g%r"), &d._ra1); + set_row(row++, FR(" Denominatore - B1 ")); } -// set_row(row++, FR("Volume d'affari @69g%r"), &vol_aff); -// set_row(row++, FR("Totale vendite al fine del calcolo del pro-rata @69g%r"), &vol_aff); - set_print_zero(false); } return ret;