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
This commit is contained in:
angelo 1997-11-28 14:55:54 +00:00
parent 1a365afd3a
commit 8193f022ad

View File

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