From 8193f022ad979dced2e4613a8be9d270fc5b0f5e Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 28 Nov 1997 14:55:54 +0000 Subject: [PATCH] Corretti errori MI6315, MI6316, MI6317, relativi al nuovo prospetto agricolo 1998: i corrispettivi non inca$$ati non vanno considerati nel calcolo del prospetto; inoltre le Fatture fiscali non vanno riscorporate e le fatture con scontrino non vanno aggiunte. Effettuate modifiche per IVA11'97: nuovi campi, nuove aliquote. git-svn-id: svn://10.65.10.50/trunk@5671 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg4301.cpp | 381 ++++++++++++++++++++++++++++---------------------- 1 file changed, 215 insertions(+), 166 deletions(-) diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index 7c87d3b4e..079733ee5 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -663,7 +663,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) // speciale in liquidazione annuale bool autodafe = tipodoc == "AF"; //Adesso il tipocr==4 non c'entra piu' un tubo // vendite art. 40 c. 5/6/8 acq.intra., con trattamento - // speciale in liquidazione annuale (A13 in stampa) + // speciale in liquidazione annuale (A14 in stampa) bool art40 = (tipodoc != "AF" && tipoiva != "NS" && !rcs.get_bool("AUTOFATT") && rcs.get_bool("VALINTRA") && !intra); // indica acquisti per rivendita; viene messo in B4 di PIM per // indicare che e' soggetto al ricalcolo IVA (se voluto) in modo @@ -838,7 +838,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) if (isrimbinfr) esni_rimb += imponibile; } - else if (tipoes_a == "12") + else if (tipoes_a == "14") esenti_b14 += imponibile; } @@ -896,42 +896,50 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) */ if (tipomov == vendita) { - agr_imp = imponibile; - agr_iva = imposta; - const real p = _iva->get_real("R0") / CENTO; - - if (corrisp) - lordo2netto(agr_imp,agr_iva,p); - - if (tipoagr == 1) // Ora si utilizza solo il segnalino 1 - { - agr_1 += agr_iva; - agr_1i += agr_imp; - - // Nuovo regime agricolo dal 1998: si sommino per codice iva di compensazione (da reperire su PCON) - if (_isagr98) - { - TString ivacomp("00"); // Se non esiste o non si trova il conto questo e' il default (fa un poco schifo ma e' cosi') - - if (_cur->is_first_match(-AGR_PCON1)) // Esiste il conto ? - // Bien, allora controlliamo se e' un ricavo... - if (_pcon_1_r->get_int(PCN_INDBIL) == 4) - if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ? - { - if (look_iva(_pcon_2_r->get(PCN_IVACOMP))) - ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione - } - look_pia(month, codatt, codiva, ivacomp, TRUE); // Crea il record in tabella se non esiste - real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna... - _pia->put("R0", pia_imp); - _pia->put("B0", TRUE); // Seguo l'esempio dei PIM per il ricalcolo acquisti alla fine del ciclo - _pia->rewrite(); // Semplice, no? - } - } - else if (tipoagr == 2) + if (!noninc) // Salta i non incassati { - agr_2 += agr_iva; - agr_2i += agr_imp; + agr_imp = imponibile; + agr_iva = imposta; + const real p = _iva->get_real("R0") / CENTO; + const bool is_not_fs = tipodoc != "FS"; + + // Se si tratta di Fattura Fiscale o Fattura Scontrino, non scorpora + if (corrisp && tipodoc != "FF" && is_not_fs) + lordo2netto(agr_imp,agr_iva,p); + + if (tipoagr == 1) // Ora si utilizza solo il segnalino 1 + { + if (is_not_fs) // Se e' FS non aggiunge al totale vend. Ia parte tab A + { + agr_1 += agr_iva; + agr_1i += agr_imp; + } + + // Nuovo regime agricolo dal 1998: si sommino per codice iva di compensazione (da reperire su PCON) + if (_isagr98) + { + TString ivacomp("00"); // Se non esiste o non si trova il conto questo e' il default (fa un poco schifo ma e' cosi') + + if (_cur->is_first_match(-AGR_PCON1)) // Esiste il conto ? + // Bien, allora controlliamo se e' un ricavo... + if (_pcon_1_r->get_int(PCN_INDBIL) == 4) + if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ? + { + if (look_iva(_pcon_2_r->get(PCN_IVACOMP))) + ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione + } + look_pia(month, codatt, codiva, ivacomp, TRUE); // Crea il record in tabella se non esiste + real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna... + _pia->put("R0", pia_imp); + _pia->put("B0", TRUE); // Seguo l'esempio dei PIM per il ricalcolo acquisti alla fine del ciclo + _pia->rewrite(); // Semplice, no? + } + } + else if (tipoagr == 2 && is_not_fs) + { + agr_2 += agr_iva; + agr_2i += agr_imp; + } } } else if (tipodet == 0) @@ -1047,8 +1055,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) /* i conturbanti art. 40 c. 5/6/8 a.i. */ TToken_string kr(_pim->get("S0"),'!'); - real a13i(kr.get(0)); - real a13v(kr.get(1)); + real a14i(kr.get(0)); + real a14v(kr.get(1)); /* le porche fatture in ritardo */ TToken_string fr(_pim->get("S1"),'!'); @@ -1199,9 +1207,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) // Vengono piazzati in una TToken_string con separatore = a '!'. // La TToken_string viene registrata in S0. // La describe_pim() sommera' tutte le storie, scorporandoli - // dalle vendite e assegnandoli al codice A13 in caso di liq annuale. - a13i += imponibile; - a13v += imposta; + // dalle vendite e assegnandoli al codice A14 in caso di liq annuale. + a14i += imponibile; + a14v += imposta; } if (corrisp && !true_corrisp) @@ -1235,9 +1243,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) _pim->put("B4", (_isricacq && was_riv) ? "X" : ""); _pim->put("S5", tipoiva); - // art 40 c. 5/6/8 per A13. - kr.add(a13i.string(), 0); - kr.add(a13v.string(), 1); + // art 40 c. 5/6/8 per A14. + kr.add(a14i.string(), 0); + kr.add(a14v.string(), 1); _pim->put("S0",kr); @@ -1529,53 +1537,63 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) array.add(imponibile,TAB11_FC102); array.add(imposta,TAB11_FC202); } - else if (ali == 8.50) + else if (ali == 6.00) { array.add(imponibile,TAB11_FC103); array.add(imposta,TAB11_FC203); } - else if (ali == 9.00) + else if (ali == 7.50) { array.add(imponibile,TAB11_FC104); array.add(imposta,TAB11_FC204); } - else if (ali == 10.00) + else if (ali == 8.50) { array.add(imponibile,TAB11_FC105); array.add(imposta,TAB11_FC205); } - else if (ali == 13.00) + else if (ali == 9.00) { array.add(imponibile,TAB11_FC106); array.add(imposta,TAB11_FC206); } - else if (ali == 16.00) + else if (ali == 10.00) { array.add(imponibile,TAB11_FC107); array.add(imposta,TAB11_FC207); } - else if (ali == 19.00) + else if (ali == 16.00) { array.add(imponibile,TAB11_FC108); array.add(imposta,TAB11_FC208); } - - if (tipoes_a == "13") + else if (ali == 19.00) + { array.add(imponibile,TAB11_FC109); - else if (tipoes_a == "10") + array.add(imposta,TAB11_FC209); + } + else if (ali == 20.00) + { array.add(imponibile,TAB11_FC110); - else if (tipoes_a == "11") + array.add(imposta,TAB11_FC210); + } + + if (tipoes_a == "15") array.add(imponibile,TAB11_FC111); else if (tipoes_a == "12") array.add(imponibile,TAB11_FC112); - else if (tipoes_a == "14") + else if (tipoes_a == "13") array.add(imponibile,TAB11_FC113); + else if (tipoes_a == "14") + array.add(imponibile,TAB11_FC114); + else if (tipoes_a == "16") + array.add(imponibile,TAB11_FC115); } else { - array.add(imponibile,TAB11_FC114); + array.add(imponibile,TAB11_FC116); if (_sind11) - array.add(imposta,TAB11_FC114); + array.add(imposta,TAB11_FC116); } if (intra) // Compila i campi SBFnn @@ -1587,46 +1605,56 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) array.add(imponibile,TAB11_SBF01); array.add(imposta,TAB11_SBI01); } - else if (ali == 9.00) + else if (ali == 6.00) { array.add(imponibile,TAB11_SBF02); array.add(imposta,TAB11_SBI02); } - else if (ali == 10.00) + else if (ali == 7.50) { array.add(imponibile,TAB11_SBF03); array.add(imposta,TAB11_SBI03); } - else if (ali == 13.00) + else if (ali == 9.00) { array.add(imponibile,TAB11_SBF04); array.add(imposta,TAB11_SBI04); } - else if (ali == 16.00) + else if (ali == 10.00) { array.add(imponibile,TAB11_SBF05); array.add(imposta,TAB11_SBI05); } - else if (ali == 19.00) + else if (ali == 16.00) { array.add(imponibile,TAB11_SBF06); array.add(imposta,TAB11_SBI06); } - - if (tipoes_a == "13") + else if (ali == 19.00) + { array.add(imponibile,TAB11_SBF07); - else if (tipoes_a == "10") + array.add(imposta,TAB11_SBI07); + } + else if (ali == 20.00) + { array.add(imponibile,TAB11_SBF08); - else if (tipoes_a == "11") + array.add(imposta,TAB11_SBI08); + } + + if (tipoes_a == "15") array.add(imponibile,TAB11_SBF09); else if (tipoes_a == "12") array.add(imponibile,TAB11_SBF10); + else if (tipoes_a == "13") + array.add(imponibile,TAB11_SBF11); + else if (tipoes_a == "14") + array.add(imponibile,TAB11_SBF12); } else { - array.add(imponibile,TAB11_SBF11); + array.add(imponibile,TAB11_SBF13); if (_sind11) - array.add(imposta,TAB11_SBF11); + array.add(imposta,TAB11_SBF13); } } } @@ -1643,31 +1671,31 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) if (tipoes_v.not_empty()) // Inutile fare troppi controlli... { if (tipoes_v == "24") - array.add(imponibile,TAB11_EC107); + array.add(imponibile,TAB11_EC106); if (tipoes_v == "21") - array.add(imponibile,TAB11_EC108); + array.add(imponibile,TAB11_EC107); else if (tipoes_v == "B1") - array.add(imponibile,TAB11_EC109); + array.add(imponibile,TAB11_EC108); else if (tipoes_v == "B2") - array.add(imponibile,TAB11_EC110); + array.add(imponibile,TAB11_EC109); else if (tipoes_v == "B3") - array.add(imponibile,TAB11_EC111); + array.add(imponibile,TAB11_EC110); else if (tipoes_v == "25") - array.add(imponibile,TAB11_EC112); + array.add(imponibile,TAB11_EC111); else if (tipoes_v == "22") - array.add(imponibile,TAB11_EC114); + array.add(imponibile,TAB11_EC113); else if (tipoes_v == "20") - array.add(imponibile,TAB11_EC115); + array.add(imponibile,TAB11_EC114); else if (tipoes_v == "G7A") - array.add(imponibile,TAB11_EC116); + array.add(imponibile,TAB11_EC115); else if (tipoes_v == "G7B") - array.add(imponibile,TAB11_EC117); + array.add(imponibile,TAB11_EC116); else if (tipoes_v == "R9") // Divenuto obsoleto prima ancora di utilizzarlo... array.add(imponibile,TAB11_R9,LF_TAB1100B); } if (tipocr == 4 && tipodoc != "AF" && !sosp_imp) - array.add(imponibile,TAB11_EC113); + array.add(imponibile,TAB11_EC112); } if (!(corrisp && tipoiva != "VE" && (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC"))) @@ -1676,12 +1704,12 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) if (tipodoc == "AF") { array.add(imponibile,TAB11_A35); - array.add(imposta,TAB11_L2); + array.add(imposta,TAB11_L2,LF_TAB1100B); } else if (valintra && !intra) { array.add(imponibile,TAB11_A35BIS); - array.add(imposta,TAB11_L2BIS); + array.add(imposta,TAB11_L2BIS,LF_TAB1100B); } if (!autofattura && !sosp_imp && intra && tipoes_v == "22") @@ -1700,8 +1728,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) } if (intra && t1_3) { - array.add(imponibile,TAB11_ABME01); - array.add(imposta,TAB11_ABVE01); + array.add(imponibile,TAB11_ABME01,LF_TAB1100B); + array.add(imposta,TAB11_ABVE01,LF_TAB1100B); } } else if (ali == 4.00) @@ -1713,11 +1741,11 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) } if (intra && t1_3) { - array.add(imponibile,TAB11_ABME02); - array.add(imposta,TAB11_ABVE02); + array.add(imponibile,TAB11_ABME02,LF_TAB1100B); + array.add(imposta,TAB11_ABVE02,LF_TAB1100B); } } - else if (ali == 8.50) + else if (ali == 6.00) { if (t1) { @@ -1726,11 +1754,11 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) } if (intra && t1_3) { - array.add(imponibile,TAB11_ABME03); - array.add(imposta,TAB11_ABVE03); + array.add(imponibile,TAB11_ABME03,LF_TAB1100B); + array.add(imposta,TAB11_ABVE03,LF_TAB1100B); } } - else if (ali == 9.00) + else if (ali == 7.50) { if (t1) { @@ -1739,8 +1767,34 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) } if (intra && t1_3) { - array.add(imponibile,TAB11_ABME04); - array.add(imposta,TAB11_ABVE04); + array.add(imponibile,TAB11_ABME04,LF_TAB1100B); + array.add(imposta,TAB11_ABVE04,LF_TAB1100B); + } + } + else if (ali == 8.50) + { + if (t1) + { + array.add(imponibile,TAB11_AGME05,LF_TAB1100B); + array.add(imposta,TAB11_AGVE05,LF_TAB1100B); + } + if (intra && t1_3) + { + array.add(imponibile,TAB11_ABME05,LF_TAB1100B); + array.add(imposta,TAB11_ABVE05,LF_TAB1100B); + } + } + else if (ali == 9.00) + { + if (t1) + { + array.add(imponibile,TAB11_AGME06,LF_TAB1100B); + array.add(imposta,TAB11_AGVE06,LF_TAB1100B); + } + if (intra && t1_3) + { + array.add(imponibile,TAB11_ABME06,LF_TAB1100B); + array.add(imposta,TAB11_ABVE06,LF_TAB1100B); } } } @@ -1763,7 +1817,7 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) TToken_string tt("",'!'); tiporeg treg; int tipocr,tipodet,tagr; - real aliq, imp, iva, lor, vtot, atot, ivav, ivaa, adf, adi, a13i, a13v; + real aliq, imp, iva, lor, vtot, atot, ivav, ivaa, adf, adi, a14i, a14v; TString16 cur_att; const bool is_key = _iva11_arr.is_key(codatt); @@ -1824,51 +1878,56 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) if (tipodet == 1) array.add(iva,TAB11_B14); - // FBC???: tipo detr != 9 + // XC???: tipo detr != 9 if (tipodet != 9) { if (aliq == 4.00) { - array.add(_pim->get_real("R9"),TAB11_FBC101); - array.add(_pim->get_real("R10"),TAB11_FBC201); + array.add(_pim->get_real("R9"),TAB11_XC101); + array.add(_pim->get_real("R10"),TAB11_XC201); + } + else if (aliq == 6.00) + { + array.add(_pim->get_real("R9"),TAB11_XC102); + array.add(_pim->get_real("R10"),TAB11_XC202); + } + else if (aliq == 7.50) + { + array.add(_pim->get_real("R9"),TAB11_XC103); + array.add(_pim->get_real("R10"),TAB11_XC203); + } + else if (aliq == 9.00) + { + array.add(_pim->get_real("R9"),TAB11_XC104); + array.add(_pim->get_real("R10"),TAB11_XC204); + } + else if (aliq == 10.00) + { + array.add(_pim->get_real("R9"),TAB11_XC105); + array.add(_pim->get_real("R10"),TAB11_XC205); + } + else if (aliq == 16.00) + { + array.add(_pim->get_real("R9"),TAB11_XC106); + array.add(_pim->get_real("R10"),TAB11_XC206); + } + else if (aliq == 19.00) + { + array.add(_pim->get_real("R9"),TAB11_XC107); + array.add(_pim->get_real("R10"),TAB11_XC207); + } + else if (aliq == 20.00) + { + array.add(_pim->get_real("R9"),TAB11_XC108); + array.add(_pim->get_real("R10"),TAB11_XC208); } - else - if (aliq == 9.00) - { - array.add(_pim->get_real("R9"),TAB11_FBC102); - array.add(_pim->get_real("R10"),TAB11_FBC202); - } - else - if (aliq == 10.00) - { - array.add(_pim->get_real("R9"),TAB11_FBC103); - array.add(_pim->get_real("R10"),TAB11_FBC203); - } - else - if (aliq == 13.00) - { - array.add(_pim->get_real("R9"),TAB11_FBC104); - array.add(_pim->get_real("R10"),TAB11_FBC204); - } - else - if (aliq == 16.00) - { - array.add(_pim->get_real("R9"),TAB11_FBC105); - array.add(_pim->get_real("R10"),TAB11_FBC205); - } - else - if (aliq == 19.00) - { - array.add(_pim->get_real("R9"),TAB11_FBC106); - array.add(_pim->get_real("R10"),TAB11_FBC206); - } - if (a11 == "10") - array.add(_pim->get_real("R9"),TAB11_FBC107); - if (a11 == "11" || a11 == "12") - array.add(_pim->get_real("R9"),TAB11_FBC108); - if (a11 == "14") - array.add(_pim->get_real("R9"),TAB11_FBC109); + if (a11 == "12") + array.add(_pim->get_real("R9"),TAB11_XC109); + if (a11 == "13" || a11 == "14") + array.add(_pim->get_real("R9"),TAB11_XC110); + if (a11 == "16") + array.add(_pim->get_real("R9"),TAB11_XC111); } } // is_acquisto @@ -1889,40 +1948,35 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) } tt = _pim->get("S0"); - a13i = tt.get(0); - a13v = tt.get(1); - adf = imp - _pim->get_real("R7") - a13i + _pim->get_real("R5"); - adi = iva - _pim->get_real("R8") - a13v + _pim->get_real("R6"); + a14i = tt.get(0); + a14v = tt.get(1); + adf = imp - _pim->get_real("R7") - a14i + _pim->get_real("R5"); + adi = iva - _pim->get_real("R8") - a14v + _pim->get_real("R6"); if (aliq == 4.00) { array.add(adf,TAB11_EC101); array.add(adi,TAB11_EC201); } - else if (aliq == 9.00) + else if (aliq == 10.00) { array.add(adf,TAB11_EC102); array.add(adi,TAB11_EC202); } - else if (aliq == 10.00) + else if (aliq == 16.00) { array.add(adf,TAB11_EC103); array.add(adi,TAB11_EC203); } - else if (aliq == 13.00) + else if (aliq == 19.00) { array.add(adf,TAB11_EC104); array.add(adi,TAB11_EC204); } - else if (aliq == 16.00) + else if (aliq == 20.00) { array.add(adf,TAB11_EC105); array.add(adi,TAB11_EC205); } - else if (aliq == 19.00) - { - array.add(adf,TAB11_EC106); - array.add(adi,TAB11_EC206); - } } } // is_vendita @@ -1954,42 +2008,37 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) array.add(imp,TAB11_EC101); array.add(iva,TAB11_EC201); } - else if (cc->_aliquota == 9.00) + else if (cc->_aliquota == 10.00) { array.add(imp,TAB11_EC102); array.add(iva,TAB11_EC202); } - else if (cc->_aliquota == 10.00) + else if (cc->_aliquota == 16.00) { array.add(imp,TAB11_EC103); array.add(iva,TAB11_EC203); } - else if (cc->_aliquota == 13.00) + else if (cc->_aliquota == 19.00) { array.add(imp,TAB11_EC104); array.add(iva,TAB11_EC204); } - else if (cc->_aliquota == 16.00) + else if (cc->_aliquota == 20.00) { array.add(imp,TAB11_EC105); array.add(iva,TAB11_EC205); } - else if (cc->_aliquota == 19.00) - { - array.add(imp,TAB11_EC106); - array.add(iva,TAB11_EC206); - } } - // Mmmhh.. Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115 - real r16, r17; + // Mmmhh.. Rettifica l'importo di EC114: EC114 = EC115 + EC116 + EC114 + real r15, r16; + if (array.is_key(TAB11_EC115)) + r15 = ((_Iva11Item&)array[TAB11_EC115]).value(); if (array.is_key(TAB11_EC116)) r16 = ((_Iva11Item&)array[TAB11_EC116]).value(); - if (array.is_key(TAB11_EC117)) - r17 = ((_Iva11Item&)array[TAB11_EC117]).value(); - r17+=r16; - array.add(r17,TAB11_EC115); + r16+=r15; + array.add(r16,TAB11_EC114); // Calcola le maledette aliquote medie... @@ -2017,7 +2066,7 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) array.add(_plm->get_real("R10"),TAB11_T5,LF_TAB1100B); array.add(_plm->get_real("R11"),TAB11_T6,LF_TAB1100B); } - array.add(_plm->get_real("R0"),TAB11_IVVENR); + array.add(_plm->get_real("R0"),TAB11_IVVENR,LF_TAB1100B); } //_iva11_arr.add(codatt,array,is_key); } @@ -2616,9 +2665,9 @@ void TLiquidazione_app::recalc_annual(const char* att) real volaff2 = 0.0; real imp_ifs = 0.0; real imp_af = 0.0; - real imp_a13 = 0.0; + real imp_a14 = 0.0; TString16 codiva,reg,tiva; - TToken_string a13("",'!'); + TToken_string a14("",'!'); int tipoatt = att[strlen(att) -1] - '0'; TString aaa(att); @@ -2656,9 +2705,9 @@ void TLiquidazione_app::recalc_annual(const char* att) const bool simp = _reg->get_bool("B1"); imp_ifs = _pim->get_real("R0"); imp_af = _pim->get_real("R7"); - a13 = _pim->get("S0"); - imp_a13 = a13.get(0); - imp_ifs -= imp_af + imp_a13; // Toglie le autofatture e le op. A13 + a14 = _pim->get("S0"); + imp_a14 = a14.get(0); + imp_ifs -= imp_af + imp_a14; // Toglie le autofatture e le op. A14 if ( // ESCLUSI: strcmp(att,*_pim_codatt) != 0 ||