Errori corretti acconti, ecc.

git-svn-id: svn://10.65.10.50/trunk@1978 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-10-18 14:44:50 +00:00
parent f210ec8e9d
commit 4d483384b0
4 changed files with 77 additions and 40 deletions

View File

@ -83,7 +83,7 @@ bool TLiquidazione_app::user_create()
ditta = subj.get_long(2); ditta = subj.get_long(2);
char rcl = *(subj.get(3)); char rcl = *(subj.get(3));
_recalc_only = rcl == 'C'; _recalc_only = rcl == 'C';
_is_visliq = rcl == 'V'; _is_visliq = rcl == 'V';
// S/s = stampa senza ricalcolo (minuscolo = definitivo) // S/s = stampa senza ricalcolo (minuscolo = definitivo)
// L/l = stampa con ricalcolo se necessario (minuscolo = definitivo) // L/l = stampa con ricalcolo se necessario (minuscolo = definitivo)
// C = solo ricalcolo // C = solo ricalcolo
@ -218,7 +218,7 @@ bool TLiquidazione_app::user_create()
if (!look_lia()) if (!look_lia())
{ end_wait(); return FALSE; } { end_wait(); return FALSE; }
_nditte->zero(); _nditte->zero();
_nditte_r->put("CODDITTA", ditta); _nditte_r->put("CODDITTA", ditta);
_nditte->read(); _nditte->read();

View File

@ -153,12 +153,11 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
_isdiffacc = cnf.get_bool("GeLiDi"); //usato per stampa acconto in coda ai registri _isdiffacc = cnf.get_bool("GeLiDi"); //usato per stampa acconto in coda ai registri
_isdifferita = _isdiffacc && _month != 13; _isdifferita = _isdiffacc && _month != 13;
_isintr = !cnf.get_bool("InTrTr") && _freqviva != "M"; _isintr = !cnf.get_bool("InTrTr") && _freqviva != "M";
bool gest4 = FALSE; //usato alla riga 342 per stampa acconto
if (_isbenzinaro) if (_isbenzinaro)
gest4 = cnf.get_bool("GesT74"); _gest4 = cnf.get_bool("GesT74");
// controlla che il periodo corrente non sia l'inizio dell'attivita' // controlla che il periodo corrente non sia l'inizio dell'attivita'
// nel caso, differita va a FALSE // nel caso, differita va a FALSE
_monthinatt = 1; _monthinatt = 1;
TDate inatt(_nditte->lfile().get("DINIZIOATT")); TDate inatt(_nditte->lfile().get("DINIZIOATT"));
if (is_in_liq_period(inatt)) _isdifferita = FALSE; if (is_in_liq_period(inatt)) _isdifferita = FALSE;
if (inatt.year() == atoi(_year)) _monthinatt = inatt.month(); if (inatt.year() == atoi(_year)) _monthinatt = inatt.month();
@ -342,9 +341,9 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
//dell'acconto in coda al resto //dell'acconto in coda al resto
if (_isregis && stliq) if (_isregis && stliq)
if ((month == 12 && _freqviva == "M") || if ((month == 12 && _freqviva == "M") ||
(month == 12 && _isbenzinaro && gest4) || (month == 12 && _isbenzinaro && _gest4) ||
(_isannual && _freqviva == "T" && !_isbenzinaro) || (_isannual && _freqviva == "T" && !_isbenzinaro) ||
(_isannual && _isbenzinaro && !gest4)) (_isannual && _isbenzinaro && !_gest4))
describe_liqacc(); describe_liqacc();
} }
return ok || calc; return ok || calc;
@ -1633,8 +1632,12 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
/* /*
* acconto dicembre se previsto * acconto dicembre se previsto
*/ */
if ((month == 12 && _isbenzinaro) || //if ((month == 12 && _isbenzinaro) ||
(month >= 12 && _freqviva == "M")) // (month >= 12 && _freqviva == "M"))
if ((month >= 12 && _freqviva == "M") ||
(month == 12 && _isbenzinaro && _gest4) ||
(_isannual && _freqviva == "T" && !_isbenzinaro) ||
(_isannual && _isbenzinaro && !_gest4))
{ {
risultato -= versamenti_IVA(12,"7"); risultato -= versamenti_IVA(12,"7");
acc_dec = versamenti_IVA(12,"7"); acc_dec = versamenti_IVA(12,"7");
@ -1670,7 +1673,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
* Ora gestito esplicitamente nei parametri ditta, forzato * Ora gestito esplicitamente nei parametri ditta, forzato
* FALSE per ditte mensili e liq. annuale * FALSE per ditte mensili e liq. annuale
*/ */
if (_isintr && month < 13) //if (_isintr && month < 13)
if ((_isintr && ((month != 12 || (_isbenzinaro && !_gest4)))))
{ {
real interesse = interesse_trimestrale(_month); real interesse = interesse_trimestrale(_month);
real ivi = risultato * (interesse / CENTO); real ivi = risultato * (interesse / CENTO);
@ -1679,7 +1683,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
} }
// questo serve anche per la visualizzazione e per l'estrazione deleghe // questo serve anche per la visualizzazione e per l'estrazione deleghe
if (_isintr && month < 13) //if (_isintr && month < 13)
if ((_isintr && ((month != 12 || (_isbenzinaro && !_gest4)))))
_lim->put("R10",interesse_trimestrale(_month)); _lim->put("R10",interesse_trimestrale(_month));
// totale conguaglio su tutte le attivita' // totale conguaglio su tutte le attivita'
@ -1696,8 +1701,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
if (!_recalc_only) if (!_recalc_only)
_lim->put("B0","X"); _lim->put("B0","X");
if (_isfinal) _lim->put("B1", "X");
if (_isfinal) _lim->put("B1", "X");
if (wasdifferita) _isdifferita = TRUE; if (wasdifferita) _isdifferita = TRUE;

View File

@ -835,7 +835,18 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month)
} }
return d; return d;
*/ */
if (!look_del(month,1) && !look_del(month,7)) return NULL; bool stampa_vers = FALSE;
if (_lim->get_real("R0") > ZERO)
{
real iva = _lim->get_real("R0") + _lim->get_real("R14");
if (_isannual) iva.round(ROUND_MILLELIRE);
if (iva >= IVA_DA_RIPORTARE)
stampa_vers = TRUE;
}
if (_freqviva == "T" && _isannual) month = 12;
if (!look_del(month,1) && !look_del(month,7) && !stampa_vers) return NULL;
_DescrItem* d = new _DescrItem(DELEGA); _DescrItem* d = new _DescrItem(DELEGA);
@ -851,22 +862,24 @@ _DescrItem* TLiquidazione_app::describe_deleghe(int month)
d->_d0 = _del->get_date("D0"); d->_d0 = _del->get_date("D0");
} // altrimenti lascia tutto in bianco e ci scriveranno i dati a mano } // altrimenti lascia tutto in bianco e ci scriveranno i dati a mano
} }
if (look_del(month,7)) if (_freqviva == "M" ||
{ (_freqviva == "T" && _isannual))
d->_s4 = "ACC"; if (look_del(month,7))
TToken_string t;
if (_del->get_bool("B0"))
{ {
t.add(_del->get("S2")); d->_s4 = "ACC";
t.add(_del->get("S1")); TToken_string t;
t.add(_del->get("S7")); if (_del->get_bool("B0"))
t.add(_del->get("S8")); {
t.add(_del->get_real("R0").string()); t.add(_del->get("S2"));
t.add(_del->get("D0")); t.add(_del->get("S1"));
} t.add(_del->get("S7"));
d->_s5 = t; t.add(_del->get("S8"));
} t.add(_del->get_real("R0").string());
t.add(_del->get("D0"));
}
d->_s5 = t;
}
return d; return d;
} }
@ -1406,6 +1419,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
set_row(5,"@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r"); set_row(5,"@11g@bCALCOLO LIQUIDAZIONE D'IMPOSTA@r");
set_row(6,""); int rw = 7; set_row(6,""); int rw = 7;
set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,""); set_row(rw++," @66gCredito@84gDebito"); set_row(rw++,"");
if (_isannual) iva_vend.round(ROUND_MILLELIRE);
set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &iva_vend); set_row(rw++,"@11gIva sulle operazioni di vendita@75g%r", &iva_vend);
set_row(rw++,"%s@11gRettifiche IVA a debito%s@75g%r", set_row(rw++,"%s@11gRettifiche IVA a debito%s@75g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_debt); _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_debt);
@ -1414,28 +1428,33 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
// conguaglio prorata // conguaglio prorata
if (conguaglio.sign() > 0) if (conguaglio.sign() > 0)
{
set_row(rw++,"@11gConguaglio pro-rata@75g%r", &conguaglio); set_row(rw++,"@11gConguaglio pro-rata@75g%r", &conguaglio);
}
// debito liq. precedente < 50000 // debito liq. precedente < 50000
if (debt_prec > ZERO) if (debt_prec > ZERO)
set_row(rw++,"@11gDebito da liquidazione precedente@75g%r", &debt_prec); set_row(rw++,"@11gDebito da liquidazione precedente@75g%r", &debt_prec);
if (_isannual) res_debt.round(ROUND_MILLELIRE);
set_row(rw++,"@11gRISULTATO@75g%r", &res_debt); set_row(rw++,"@11gRISULTATO@75g%r", &res_debt);
if (_isannual) iva_acq.round(ROUND_MILLELIRE);
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) cred_prec.round(ROUND_MILLELIRE);
if (_isannual || d._f1) 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);
if (!acc_dec.is_zero()) if (!acc_dec.is_zero())
{
if (_isannual) acc_dec.round(ROUND_MILLELIRE);
set_row(rw++,"%s@11gVersamento acconto dicembre%s@58g%r", set_row(rw++,"%s@11gVersamento acconto dicembre%s@58g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &acc_dec); _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &acc_dec);
}
if (!detrazioni.is_zero()) if (!detrazioni.is_zero())
{
if (_isannual) detrazioni.round(ROUND_MILLELIRE);
set_row(rw++,"@11gUlteriori detrazioni@58g%r", &detrazioni); set_row(rw++,"@11gUlteriori detrazioni@58g%r", &detrazioni);
}
set_row(rw++,"%s@11gRettifiche IVA a credito%s@58g%r", set_row(rw++,"%s@11gRettifiche IVA a credito%s@58g%r",
_is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_cred); _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &rett_cred);
@ -1458,6 +1477,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
cg = -cg; cg = -cg;
set_row(rw++,"@11gConguaglio pro-rata@58g%r", &cg); set_row(rw++,"@11gConguaglio pro-rata@58g%r", &cg);
} }
if (_isannual) res_cred.round(ROUND_MILLELIRE);
set_row(rw++,"@11gRISULTATO@58g%r", &res_cred); set_row(rw++,"@11gRISULTATO@58g%r", &res_cred);
// se non c'e' nulla da versare stampa solo una riga vuota // se non c'e' nulla da versare stampa solo una riga vuota

View File

@ -444,7 +444,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
case tt: case tt:
case tm: case tm:
// base calcolo: 13a anno precedente. Rideterm. per eventuale acconto // base calcolo: 13a anno precedente. Rideterm. per eventuale acconto
if (!look_lim(12)) error = 2; // TBC sara' 13a davvero? Secondo me e' 12 if (!look_lim(13)) error = 2; // TBC sara' 13a davvero? Secondo me e' 12
else else
{ {
bc += _lim->get_real("R0"); bc += _lim->get_real("R0");
@ -520,18 +520,15 @@ else if (_basecalc == incorso)
// calcola l'acconto // calcola l'acconto
if (look_lim(12)) //posiziona anche la tabella lam if (look_lim(12)) //posiziona anche la tabella lam
{ {
// TBC trimestrali, differite // bc = result_liq(12);
//bc = result_liq(12);
// somma i non fatturati/non annotati // somma i non fatturati/non annotati
//bc += inf + ina; // bc += inf + ina;
cre = _lim->get_real("R12"); cre = _lim->get_real("R12");
//quando calcolo la 12° ci vado a sommare il //quando calcolo la 12° ci vado a sommare il
//versa. dovuto all'acconto //versa. dovuto all'acconto
//allora devo ricalcolarmi l'effettivo credito //allora devo ricalcolarmi l'effettivo credito
cre -= _lim->get_real("R11"); cre -= _lim->get_real("R11");
//bc -= _lim->get_real("R11");
deb = _lim->get_real("R13") + inf + ina; deb = _lim->get_real("R13") + inf + ina;
bc = deb - cre; bc = deb - cre;
@ -581,6 +578,16 @@ else error = 1;
for (int i = 1; i <= _month; i++) for (int i = 1; i <= _month; i++)
if (is_month_plain(i)) if (is_month_plain(i))
update_firm(i); update_firm(i);
//18/10/1995
_lim->put("B0","");
_lim->rewrite();
if (look_lim(13))
{
_lim->put("B0","");
_lim->rewrite();
}
//fine
_isprint = TRUE; _isprint = TRUE;
} }
@ -589,7 +596,11 @@ if (look_lia())
{ {
TConfig cnf(CONFIG_DITTA, "cg"); TConfig cnf(CONFIG_DITTA, "cg");
isdifferita = cnf.get_bool("GeLiDi"); isdifferita = cnf.get_bool("GeLiDi");
if (isdifferita && _basecalc == incorso) acc *= real(double(2/3)); if (isdifferita && _basecalc == incorso)
{
acc *= real(2.0);
acc /= real(3.0);
}
_lia->put("R4",acc); _lia->put("R4",acc);
_lia->put("R7",iva_ven); _lia->put("R7",iva_ven);
_lia->put("R8",iva_acq); _lia->put("R8",iva_acq);