Liquidazion funzion perfezion nonostant ducoion

git-svn-id: svn://10.65.10.50/trunk@1624 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-07-20 10:29:38 +00:00
parent eb32e8ff41
commit 3de042b53a
3 changed files with 2270 additions and 2270 deletions

View File

@ -869,7 +869,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
* le maledette autofatture non residenti art. 17 * le maledette autofatture non residenti art. 17
* vedi al calcolo if (autodafe) si tengono da parte * vedi al calcolo if (autodafe) si tengono da parte
* La stampa le scorpora solo IN SEDE di dichiarazione annuale * La stampa le scorpora solo IN SEDE di dichiarazione annuale
* NELL'OTTICA di una PIU' CORRETTA e CONSONA ......................
*/ */
real adf = _pim->get_real("R7"); real adf = _pim->get_real("R7");
real adi = _pim->get_real("R8"); real adi = _pim->get_real("R8");
@ -1328,7 +1327,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
_year = format("%d", atoi(_year)+1); _year = format("%d", atoi(_year)+1);
} }
} }
else else // puo' essere: differita e mese > 1 o non differita e mese qualunque
{ {
for (int m = 1; m <= 13; m++) for (int m = 1; m <= 13; m++)
{ {
@ -1417,15 +1416,16 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
a_meCEE += _plm->get_real("R11"); a_meCEE += _plm->get_real("R11");
} }
} // fine ciclo sul mese } // fine ciclo sul mese
// counter attivita' per evitare troppi versamenti // counter attivita' per evitare troppi versamenti
attc++; attc++;
} // fine ciclo su attivita' } // fine else
if (!(_isdifferita && is_first_month(month))) if (!(_isdifferita && is_first_month(month)))
{ {
if (_isviaggio) if (_isviaggio)
{ {
// calcolo credito costo, debito mensile, perc. ripart. // calcolo credito costo, debito mensile, perc. ripart.
perc_r = (a_mCEE * CENTO)/(a_mCEE + a_meCEE); perc_r = (a_mCEE * CENTO)/(a_mCEE + a_meCEE);
real ivm = (c_mCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA); real ivm = (c_mCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA);
real tc = (c_iCEE + ivm); real tc = (c_iCEE + ivm);
@ -1449,51 +1449,30 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
} }
} }
} }
} } // end ciclo su attivita'
if (!(_isdifferita && is_first_month(month))) if (!(_isdifferita && is_first_month(month)))
{ {
if (month < 13) if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente)
{ {
// toglie credito precedente // toglie credito precedente
cred_prec = credito_prec(month); cred_prec = credito_prec(month+deltam);
risultato -= cred_prec; risultato -= cred_prec;
res_cred += cred_prec; res_cred += cred_prec;
// vedi se c'era un debito precedente per debiti < 50.000 // vedi se c'era un debito precedente per debiti < 50.000
debt_precd = debt_prec(month); debt_precd = debt_prec(month+deltam);
risultato += debt_precd; risultato += debt_precd;
res_debt += debt_precd; res_debt += debt_precd;
} }
else else
{ {
// per l'annuale considera solo il credito a inizio anno // per l'annuale considera solo il credito a inizio anno
cred_prec = credito_prec(1); cred_prec = credito_prec(_freqviva == "M" ? 1 : 3);
risultato -= cred_prec; risultato -= cred_prec;
res_cred += cred_prec; res_cred += cred_prec;
} }
} }
else if (_isdifferita && !is_first_month(month) && month < 13)
{
// toglie credito precedente
cred_prec = credito_prec(month);
risultato -= cred_prec;
res_cred += cred_prec;
// vedi se c'era un debito precedente per debiti < 50.000
debt_precd = debt_prec(month);
risultato += debt_precd;
res_debt += debt_precd;
// folie bergere: se il mese precedente, che e' poi questo che ho calcolato,
// era a credito, devo tener conto del credito precedente che e' quello di
// questo mese (Vladimiro MI3170), ovvero devo RADDOPPIARE il credito, il che
// e' semplicemente roba da matti
if (!cred_prec.is_zero())
{
risultato -= cred_prec;
res_cred += cred_prec;
cred_prec += cred_prec; // AH AH UAH IH UHU
}
}
if (month == 13) if (month == 13)
{ {
@ -1523,7 +1502,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
real csamm = _pla->get_real("R4"); real csamm = _pla->get_real("R4");
// calcola nuovo prorata per ogni attivita' (miste: 1+2) // calcola nuovo prorata per ogni attivita' (miste: 1+2)
real ris = vol_aff_t - csamm - es_b3; real ris = vol_aff_t - csamm - es_b3; // gia' esclusi NS
real prorata(0.0); real prorata(0.0);
if (!ris.is_zero()) if (!ris.is_zero())
prorata = (es_b1/ris) * CENTO; prorata = (es_b1/ris) * CENTO;
@ -1532,7 +1511,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (prorata != _prorata) if (prorata != _prorata)
{ {
// calcolo conguaglio -- se positivo e' a debito // calcolo conguaglio -- se positivo e' a debito
real topay = iaq * (prorata / CENTO); real topay = (iaq + ppg) * (prorata / CENTO);
conguaglio = topay - ppg; conguaglio = topay - ppg;
conguaglio.round(ROUND_LIRA); conguaglio.round(ROUND_LIRA);
} }
@ -1645,9 +1624,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
_lim->put("R10",interesse_trimestrale(_month)); _lim->put("R10",interesse_trimestrale(_month));
// totale conguaglio su tutte le attivita' // totale conguaglio su tutte le attivita'
_lim->put("R7", tot_cong); _lim->put("R7", tot_cong);
_lim->put("R8", versamenti); _lim->put("R8", versamenti);
_lim->put("R9", vers_int); _lim->put("R9", vers_int);
_lam->put("R0", iva_vend); _lam->put("R0", iva_vend);
_lam->put("R1", iva_acq); _lam->put("R1", iva_acq);
_lam->put("R2", cred_prec); _lam->put("R2", cred_prec);

View File

@ -90,6 +90,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
imposta.ceil(); imposta.ceil();
if (ci->_totale.sign() < 0) imposta = -imposta; if (ci->_totale.sign() < 0) imposta = -imposta;
real imponibile = ci->_totale - imposta; real imponibile = ci->_totale - imposta;
// quadratura del cerchione
real delta = ci->_totale - imponibile - imposta;
if (!delta.is_zero())
imposta += delta;
// aggiusto l'IVA vendite nei plm // aggiusto l'IVA vendite nei plm
look_plm(month, codatt); look_plm(month, codatt);
@ -213,9 +217,14 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
_VentItem* vv = (_VentItem*)&_vent_arr[j]; _VentItem* vv = (_VentItem*)&_vent_arr[j];
real imponibile = dst.get(); real imponibile = dst.get();
real div(1.0); div += vv->_aliquota; real div(1.0); div += vv->_aliquota;
real totale = imponibile;
real imposta = imponibile - (imponibile/div); real imposta = imponibile - (imponibile/div);
imposta.ceil(ROUND_LIRA); imposta.ceil(ROUND_LIRA);
imponibile -= imposta; imponibile -= imposta;
// quadratura del cerchione
real delta = totale - imponibile - imposta;
if (!delta.is_zero())
imposta += delta;
// aggiusto l'IVA vendite nei plm // aggiusto l'IVA vendite nei plm
look_plm(month, codatt); look_plm(month, codatt);
@ -230,15 +239,23 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
_pam->rewrite(); _pam->rewrite();
// Aggiorno i luridi pim // Aggiorno i luridi pim
look_pim(month, codatt, vi->_codreg, "0", vv->_codiva, vi->_tipodet, TRUE); bool was = look_pim(month, codatt, vi->_codreg, "0", vv->_codiva, vi->_tipodet, TRUE);
imponibile += _pim->get_real("R0"); imponibile += _pim->get_real("R0");
imposta += _pim->get_real("R1"); imposta += _pim->get_real("R1");
_pim->put("R0", imponibile); _pim->put("R0", imponibile);
_pim->put("R1", imposta); _pim->put("R1", imposta);
_pim->put("S4", vv->_other); _pim->put("S4", vv->_other);
// segnale per comodita' // segnale per comodita' in stampa prospetto
_pim->put("B1","X"); _pim->put("B1","X");
// se e' nuovo, il segnale per usare l'importo nel calcolo del rimborso
// viene amorosamente messo a quanto il codice IVA prevede
if (!was)
{
look_iva(vv->_codiva);
_pim->put("I1", (long)vendita);
if (!_iva->get_bool("B4")) _pim->put("B3", "X");
}
_pim->rewrite(); _pim->rewrite();
} }
} }
@ -253,18 +270,19 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
} }
// questa serve per il rimborso secondo le // questa servIVA per il rimborso secondo le
// nuove cazzonorme // nuove cazzonorme, mai entrate in vigore ma
class rObj : public TObject // devotamente programmate
{ //class rObj : public TObject
public: //{
real _imp; //public:
real _iva; // real _imp;
real _perc; // real _iva;
// real _perc;
rObj() {} //
virtual ~rObj() {} // rObj() {}
}; // virtual ~rObj() {}
//};
// defines per stabilire quale cazzo di metodo piace oggi alla prassi // defines per stabilire quale cazzo di metodo piace oggi alla prassi
@ -490,6 +508,7 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
// vedi condizioni // vedi condizioni
rimborsami = ala > alv; rimborsami = ala > alv;
if (rimborsami) if (rimborsami)
{ {
// vedi di quanto ala eccede alv; deve essere > 10% // vedi di quanto ala eccede alv; deve essere > 10%

View File

@ -696,7 +696,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
if (pr != _prorata) if (pr != _prorata)
{ {
// calcolo conguaglio -- se positivo e' a debito // calcolo conguaglio -- se positivo e' a debito
topay = iaq * (pr / CENTO); topay = (iaq + ppg) * (pr / CENTO);
co = topay - ppg; co = topay - ppg;
co.round(ROUND_LIRA); co.round(ROUND_LIRA);
} }
@ -755,6 +755,8 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
d->_s3 = _lim->get_real("R13").string(); d->_s3 = _lim->get_real("R13").string();
d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse
d->_f1 = is_first_month(month);
if (_is_visliq) if (_is_visliq)
{ {
// tutti i versamenti, sempre e comunque // tutti i versamenti, sempre e comunque
@ -1283,7 +1285,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_row(rw++,"@11gRISULTATO@75g%r", &res_debt); set_row(rw++,"@11gRISULTATO@75g%r", &res_debt);
set_row(rw++,"@11gIva sulle operazioni di acquisto@58g%r", &iva_acq); set_row(rw++,"@11gIva sulle operazioni di acquisto@58g%r", &iva_acq);
if (_isannual) if (_isannual || d._f1)
set_row(rw++,"@11gCredito inizio anno@58g%r", &cred_prec); set_row(rw++,"@11gCredito inizio anno@58g%r", &cred_prec);
else else
set_row(rw++,"@11gCredito precedente@58g%r", &cred_prec); set_row(rw++,"@11gCredito precedente@58g%r", &cred_prec);
@ -1301,7 +1303,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (_is_visliq) if (_is_visliq)
{ {
// stampa ad uso visualizzazione liquidazione IVA // stampa ad uso visualizzazione liquidazione IVA
// set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti); set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti);
} }
else else
{ {