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
* vedi al calcolo if (autodafe) si tengono da parte
* 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 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);
}
}
else
else // puo' essere: differita e mese > 1 o non differita e mese qualunque
{
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");
}
} // fine ciclo sul mese
// counter attivita' per evitare troppi versamenti
attc++;
} // fine ciclo su attivita'
} // fine else
if (!(_isdifferita && is_first_month(month)))
{
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);
real ivm = (c_mCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA);
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 (month < 13)
if (month < 13) // va bene anche se differita sommando deltam (che e' 0 normalmente)
{
// toglie credito precedente
cred_prec = credito_prec(month);
cred_prec = credito_prec(month+deltam);
risultato -= cred_prec;
res_cred += cred_prec;
// 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;
res_debt += debt_precd;
}
else
{
// 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;
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)
{
@ -1523,7 +1502,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
real csamm = _pla->get_real("R4");
// 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);
if (!ris.is_zero())
prorata = (es_b1/ris) * CENTO;
@ -1532,7 +1511,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (prorata != _prorata)
{
// calcolo conguaglio -- se positivo e' a debito
real topay = iaq * (prorata / CENTO);
real topay = (iaq + ppg) * (prorata / CENTO);
conguaglio = topay - ppg;
conguaglio.round(ROUND_LIRA);
}
@ -1645,9 +1624,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
_lim->put("R10",interesse_trimestrale(_month));
// totale conguaglio su tutte le attivita'
_lim->put("R7", tot_cong);
_lim->put("R8", versamenti);
_lim->put("R9", vers_int);
_lim->put("R7", tot_cong);
_lim->put("R8", versamenti);
_lim->put("R9", vers_int);
_lam->put("R0", iva_vend);
_lam->put("R1", iva_acq);
_lam->put("R2", cred_prec);

View File

@ -90,6 +90,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
imposta.ceil();
if (ci->_totale.sign() < 0) imposta = -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
look_plm(month, codatt);
@ -213,9 +217,14 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
_VentItem* vv = (_VentItem*)&_vent_arr[j];
real imponibile = dst.get();
real div(1.0); div += vv->_aliquota;
real totale = imponibile;
real imposta = imponibile - (imponibile/div);
imposta.ceil(ROUND_LIRA);
imponibile -= imposta;
// quadratura del cerchione
real delta = totale - imponibile - imposta;
if (!delta.is_zero())
imposta += delta;
// aggiusto l'IVA vendite nei plm
look_plm(month, codatt);
@ -230,15 +239,23 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
_pam->rewrite();
// 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");
imposta += _pim->get_real("R1");
_pim->put("R0", imponibile);
_pim->put("R1", imposta);
_pim->put("S4", vv->_other);
// segnale per comodita'
// segnale per comodita' in stampa prospetto
_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();
}
}
@ -253,18 +270,19 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
}
// questa serve per il rimborso secondo le
// nuove cazzonorme
class rObj : public TObject
{
public:
real _imp;
real _iva;
real _perc;
rObj() {}
virtual ~rObj() {}
};
// questa servIVA per il rimborso secondo le
// nuove cazzonorme, mai entrate in vigore ma
// devotamente programmate
//class rObj : public TObject
//{
//public:
// real _imp;
// real _iva;
// real _perc;
//
// rObj() {}
// virtual ~rObj() {}
//};
// 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
rimborsami = ala > alv;
if (rimborsami)
{
// 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)
{
// calcolo conguaglio -- se positivo e' a debito
topay = iaq * (pr / CENTO);
topay = (iaq + ppg) * (pr / CENTO);
co = topay - ppg;
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->_r11 = (const char*)_lim->get("R10"); // tasso di interesse
d->_f1 = is_first_month(month);
if (_is_visliq)
{
// 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++,"@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);
else
set_row(rw++,"@11gCredito precedente@58g%r", &cred_prec);
@ -1301,7 +1303,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
if (_is_visliq)
{
// 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
{