Patch level : 12.0 938

Files correlati     : cg5.exe cg5500b.msk cg5500c.msk
Commento            :

Attivati acconto e interessi con ricalcolo nei trimestrali.

Aggiunta 13 nei trimestrali e sistemata la visualizzazione dei trimestrali.

Corrette diciture pro rata a da C1 C2 C3 C1a in B1 B2 B3 B4

Calcolato il pro rata mensile sempre

Detratti gli i beni ammortizzabili esenti venduti nel calcolo pro rata con numeratore e denominatore (da verificare)
This commit is contained in:
Alessandro Bonazzi 2020-02-08 11:01:06 +01:00
parent feb5200475
commit 125d03e77b
2 changed files with 80 additions and 61 deletions

View File

@ -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();
}

View File

@ -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;