Corretto MI6160, MI6161, MI2259, MI2262.

git-svn-id: svn://10.65.10.50/trunk@3966 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-12-06 08:23:24 +00:00
parent b177b0ab6f
commit 40211f0926

View File

@ -1353,28 +1353,31 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
} }
void TLiquidazione_app::iva11_set_arr(const TString& codatt) void TLiquidazione_app::iva11_set_arr(const TString& codatt)
// viene chiamata quando vengonon scorsi i movimenti del mese, settando gran parte degli elementi di _iva11_arr. // viene chiamata quando vengono scorsi i movimenti del mese, settando gran parte degli elementi di _iva11_arr.
{ {
// My God! Che 2 palle riestrarre tutte le informazioni
const TString16 tipodoc = _mov->get("TIPODOC"); const TString16 tipodoc = _mov->get("TIPODOC");
const real imponibile = _rmoviva->get_real("IMPONIBILE");
const real imposta = _rmoviva->get_real("IMPOSTA");
const bool intra = _rmoviva->get_bool("INTRA"); const bool intra = _rmoviva->get_bool("INTRA");
const int tipocr = _rmoviva->get_int("TIPOCR"); const int tipocr = _rmoviva->get_int("TIPOCR");
const int tipodet = _rmoviva->get_int("TIPODET"); const int tipodet = _rmoviva->get_int("TIPODET");
const TString codiva = _iva->get("CODTAB"); real imponibile = _rmoviva->get_real("IMPONIBILE");
real imposta = _rmoviva->get_real("IMPOSTA");
const TString16 codiva = _iva->get("CODTAB");
const TString tipoiva = _iva->get("S1"); const TString tipoiva = _iva->get("S1");
const real ali = _iva->get_real("R0"); const real ali = _iva->get_real("R0");
const TString tipoes_v = _iva->get("S2"); const TString16 tipoes_v = _iva->get("S2");
const TString tipoes_a = _iva->get("S9"); const TString16 tipoes_a = _iva->get("S9");
const int tipoagr = atoi(_iva->get("S4")); const int tipoagr = atoi(_iva->get("S4"));
const TRectype& rcs = _cur->curr(LF_CAUSALI); const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool autofattura = rcs.get_bool("AUTOFATT"); const bool autofattura = rcs.get_bool("AUTOFATT");
const bool valintra = rcs.get_bool("VALINTRA"); const bool valintra = rcs.get_bool("VALINTRA");
const bool sosp_imp = _reg->get_bool("B1"); const bool sosp_imp = _reg->get_bool("B1");
const bool corrisp = _reg->get_bool("B0");
tiporeg tipomov = (tiporeg)_reg->get_long("I0"); tiporeg tipomov = (tiporeg)_reg->get_long("I0");
const bool is_vendita = tipomov == vendita; const bool is_vendita = tipomov == vendita;
const bool is_acquisto = tipomov == acquisto; const bool is_acquisto = tipomov == acquisto;
_BolgArray b_arr; _BolgArray b_arr;
const bool is_key = _iva11_arr.is_key(codatt); const bool is_key = _iva11_arr.is_key(codatt);
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr; _BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
@ -1424,6 +1427,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
if (tipodoc != "BD") if (tipodoc != "BD")
{ // Compila prima i campi FC1nn ed FC2nn, poi i campi SBFnn ed SBInn { // Compila prima i campi FC1nn ed FC2nn, poi i campi SBFnn ed SBInn
if (tipodet != 9)
{
if (ali == 2.00) if (ali == 2.00)
{ {
array.add(imponibile,TAB11_FC101); array.add(imponibile,TAB11_FC101);
@ -1475,8 +1480,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
array.add(imponibile,TAB11_FC112); array.add(imponibile,TAB11_FC112);
else if (tipoes_a == "15") else if (tipoes_a == "15")
array.add(imponibile,TAB11_FC113); array.add(imponibile,TAB11_FC113);
}
if (tipodet == 9) else
{ {
array.add(imponibile,TAB11_FC114); array.add(imponibile,TAB11_FC114);
if (_sind11) if (_sind11)
@ -1484,6 +1489,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
} }
if (intra) // Compila i campi SBFnn if (intra) // Compila i campi SBFnn
{
if (tipodet != 9)
{ {
if (ali == 4.00) if (ali == 4.00)
{ {
@ -1524,8 +1531,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
array.add(imponibile,TAB11_SBF09); array.add(imponibile,TAB11_SBF09);
else if (tipoes_a == "14") else if (tipoes_a == "14")
array.add(imponibile,TAB11_SBF10); array.add(imponibile,TAB11_SBF10);
}
if (tipodet == 9) else
{ {
array.add(imponibile,TAB11_SBF11); array.add(imponibile,TAB11_SBF11);
if (_sind11) if (_sind11)
@ -1538,9 +1545,15 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
if (is_vendita) if (is_vendita)
{ {
if (corrisp && tipoiva != "VE" && (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC") )
{
real p = ali/CENTO;
lordo2netto(imponibile,imposta,p);// In tal caso scorpora l'iva dall'imponibile...
}
if (!valintra) if (!valintra)
{ {
if ((_isagricolo && tipoagr==2) || !_isagricolo) if (tipodoc != "AF" && ((_isagricolo && tipoagr==2) || !_isagricolo))
{ {
if (ali == 4.00) if (ali == 4.00)
{ {
@ -1687,7 +1700,7 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
tiporeg treg; tiporeg treg;
int tipocr,tipodet,tagr; int tipocr,tipodet,tagr;
real aliq, imp, iva, vtot, atot, ivav, ivaa; real aliq, imp, iva, vtot, atot, ivav, ivaa;
TString cur_att; TString16 cur_att;
_BolgArray b_arr; _BolgArray b_arr;
const bool is_key = _iva11_arr.is_key(codatt); const bool is_key = _iva11_arr.is_key(codatt);
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr; _BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
@ -1738,6 +1751,9 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
if (tipodet == 1) if (tipodet == 1)
array.add(iva,TAB11_B14); array.add(iva,TAB11_B14);
// FBC???: tipo detr != 9
if (tipodet != 9)
{
if (aliq == 4.00) if (aliq == 4.00)
{ {
array.add(_pim->get_real("R9"),TAB11_FBC101); array.add(_pim->get_real("R9"),TAB11_FBC101);
@ -1780,6 +1796,7 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
array.add(_pim->get_real("R9"),TAB11_FBC108); array.add(_pim->get_real("R9"),TAB11_FBC108);
if (a11 == "15") if (a11 == "15")
array.add(_pim->get_real("R9"),TAB11_FBC109); array.add(_pim->get_real("R9"),TAB11_FBC109);
}
} // is_acquisto } // is_acquisto
if (is_vendita) if (is_vendita)
@ -1827,7 +1844,7 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
} }
else else
//acquisti //acquisti
if (tipodet != 9) // Evita di sommare gli quelli con tipo detraibilita' 9 (MI2209) if (tipodet != 9) // Evita di sommare quelli con tipo detraibilita' 9 (MI2209)
{ {
atot += imp; ivaa+=iva; atot += imp; ivaa+=iva;
} }
@ -1995,7 +2012,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
differita = FALSE; differita = FALSE;
} }
} }
{
for (int m = 1; m <= 13; m++) for (int m = 1; m <= 13; m++)
{ {
// ciclo su tutti i mesi del caso (1 o 3; // ciclo su tutti i mesi del caso (1 o 3;
@ -2011,9 +2028,13 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
// a debito: IVA vendite, debito precedente // a debito: IVA vendite, debito precedente
// a credito: IVA acquisti, ulteriori detrazioni 1 e 2 // a credito: IVA acquisti, ulteriori detrazioni 1 e 2
if (!_isagricolo)
{
iva_vend += _plm->get_real("R0"); iva_vend += _plm->get_real("R0");
iva_acq += _plm->get_real("R1"); iva_acq += _plm->get_real("R1");
risultato += (_plm->get_real("R0") - _plm->get_real("R1")); risultato += (_plm->get_real("R0") - _plm->get_real("R1"));
} // le storie per l'agricolo sono piu' sotto, oltre la fine del do..while()
detrazioni+= (_plm->get_real("R3") + _plm->get_real("R4")); detrazioni+= (_plm->get_real("R3") + _plm->get_real("R4"));
res_debt += _plm->get_real("R0"); res_debt += _plm->get_real("R0");
res_cred += _plm->get_real("R1"); res_cred += _plm->get_real("R1");
@ -2093,7 +2114,6 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
attc++; attc++;
if (differita) if (differita)
_year = format("%d", atoi(_year)+1); _year = format("%d", atoi(_year)+1);
} // fine else
if (!(_isdifferita && is_first_month(month+deltam))) if (!(_isdifferita && is_first_month(month+deltam)))
{ {
@ -2125,6 +2145,30 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
} }
} // end ciclo su attivita' } // 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();
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;
risultato += (iva_vend - iva_acq);
break;
}
continue;
}
} // __ end of _isagricolo
if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente) if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente)
{ {
// toglie credito precedente // toglie credito precedente
@ -2422,7 +2466,10 @@ void TLiquidazione_app::recalc_annual(const char* att)
real volaff1 = 0.0; real volaff1 = 0.0;
real volaff2 = 0.0; real volaff2 = 0.0;
real imp_ifs = 0.0; real imp_ifs = 0.0;
real imp_af = 0.0;
real imp_a36 = 0.0;
TString16 codiva,reg,tiva; TString16 codiva,reg,tiva;
TToken_string a36("",'!');
int tipoatt = att[strlen(att) -1] - '0'; int tipoatt = att[strlen(att) -1] - '0';
TString aaa(att); TString aaa(att);
@ -2452,6 +2499,10 @@ void TLiquidazione_app::recalc_annual(const char* att)
const bool corrisp = _reg->get_bool("B0"); const bool corrisp = _reg->get_bool("B0");
const bool simp = _reg->get_bool("B1"); const bool simp = _reg->get_bool("B1");
imp_ifs = _pim->get_real("R0"); imp_ifs = _pim->get_real("R0");
imp_af = _pim->get_real("R7");
a36 = _pim->get("S0");
imp_a36 = a36.get(0);
imp_ifs -= imp_af + imp_a36; // Toglie le autofatture e le op. A36
if (corrisp) imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS if (corrisp) imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
if ( // ESCLUSI: if ( // ESCLUSI: