Skudlerations
git-svn-id: svn://10.65.10.50/trunk@910 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9fb1deb9da
commit
fbe1a7d7f3
11
cg/cg4300.h
11
cg/cg4300.h
@ -172,7 +172,9 @@ class TLiquidazione_app : public TPrint_application
|
|||||||
bool _isbenzinaro; // regime benzinaro
|
bool _isbenzinaro; // regime benzinaro
|
||||||
bool _isannual; // dichiarazione annuale
|
bool _isannual; // dichiarazione annuale
|
||||||
bool _mixed; // attivita' mista
|
bool _mixed; // attivita' mista
|
||||||
bool _isriepilogo; // 13a liq
|
bool _isriepilogo; // 13a liq
|
||||||
|
bool _isannual_12; // annuale con mese = 12 (trimestre)
|
||||||
|
bool _isendliq; // annuale o riepilogo
|
||||||
bool _isservizio; // servizi, professionisti, artisti
|
bool _isservizio; // servizi, professionisti, artisti
|
||||||
bool _isrimborso; // vuole il rimborso infraannuale
|
bool _isrimborso; // vuole il rimborso infraannuale
|
||||||
bool _isricacq; // ricalcolo imposte acq. riv (par. ditta)
|
bool _isricacq; // ricalcolo imposte acq. riv (par. ditta)
|
||||||
@ -302,6 +304,7 @@ public:
|
|||||||
bool update_firm (int month, bool recalc = TRUE);
|
bool update_firm (int month, bool recalc = TRUE);
|
||||||
bool update_att (int month, const char* codatt, bool recalc = TRUE);
|
bool update_att (int month, const char* codatt, bool recalc = TRUE);
|
||||||
void zero_att (int month, const char* codatt);
|
void zero_att (int month, const char* codatt);
|
||||||
|
void zero_annual (int month);
|
||||||
void recalc_att (int month, const char* codatt);
|
void recalc_att (int month, const char* codatt);
|
||||||
void recalc_annual (const char* codatt);
|
void recalc_annual (const char* codatt);
|
||||||
_DescrItem* recalc_rimborso(int month, const char* codatts);
|
_DescrItem* recalc_rimborso(int month, const char* codatts);
|
||||||
@ -400,7 +403,8 @@ public:
|
|||||||
static bool is_trim (int x);
|
static bool is_trim (int x);
|
||||||
// is_month_ok controlla che il mese passato sia
|
// is_month_ok controlla che il mese passato sia
|
||||||
// da prendere in considerazione per la liquidazione
|
// da prendere in considerazione per la liquidazione
|
||||||
// controllando il regime trimestrale o mensile
|
// controllando il regime trimestrale o mensile e
|
||||||
|
// il ricalcolo annuale
|
||||||
bool is_month_ok(int x, int mtocalc);
|
bool is_month_ok(int x, int mtocalc);
|
||||||
// is_month_ok_strict controlla che il mese sia OK per la
|
// is_month_ok_strict controlla che il mese sia OK per la
|
||||||
// liquidazione, ma ritorna TRUE per le trimestrali solo
|
// liquidazione, ma ritorna TRUE per le trimestrali solo
|
||||||
@ -408,8 +412,9 @@ public:
|
|||||||
bool is_month_ok_strict(int x, int month = -1);
|
bool is_month_ok_strict(int x, int month = -1);
|
||||||
bool is_date_ok (TDate& d, int month);
|
bool is_date_ok (TDate& d, int month);
|
||||||
bool is_first_month (int m);
|
bool is_first_month (int m);
|
||||||
|
int liq_month(int x);
|
||||||
|
|
||||||
int previous_month (int m);
|
int previous_month (int m);
|
||||||
bool check_month(int m, int mref);
|
|
||||||
|
|
||||||
// Funzioni accessorie: estrazione deleghe
|
// Funzioni accessorie: estrazione deleghe
|
||||||
bool set_deleghe();
|
bool set_deleghe();
|
||||||
|
384
cg/cg4301.cpp
384
cg/cg4301.cpp
@ -38,26 +38,62 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
if (_selected[(long)l])
|
if (_selected[(long)l])
|
||||||
{
|
{
|
||||||
TToken_string& nomeditta = _ditte->row(l);
|
TToken_string& nomeditta = _ditte->row(l);
|
||||||
|
int save_month = _month;
|
||||||
|
|
||||||
|
/* -------------------------------------------------------------
|
||||||
|
* leggi parametri ditta necessari; stabilisci se annuale,
|
||||||
|
* se si' metti _month a 13
|
||||||
|
* istanzia _freqviva, _isbenzinaro, _isannual, _isriepilogo
|
||||||
|
* --------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
_nditte->zero();
|
_nditte->zero();
|
||||||
_nditte->curr().put("CODDITTA",nomeditta.get_long(1));
|
_nditte->curr().put("CODDITTA",nomeditta.get_long(1));
|
||||||
_nditte->read();
|
_nditte->read();
|
||||||
|
_freqviva = nomeditta.get(3);
|
||||||
|
bool mens = _freqviva == "M";
|
||||||
|
|
||||||
|
// determina attivita' prevalente e istanzia cazzuole
|
||||||
|
// per vedere che Kazzo di liquidazione calcolare
|
||||||
|
TString attprev = _nditte->curr().get("CODATTPREV");
|
||||||
|
TLocalisamfile& atts = _nditte->lfile(LF_ATTIV);
|
||||||
|
atts.zero();
|
||||||
|
atts.put("CODDITTA",nomeditta.get_long(1));
|
||||||
|
atts.put("CODATT", attprev);
|
||||||
|
if (atts.read() != NOERR) atts.zero();
|
||||||
|
// istanzia benzinaro
|
||||||
|
_isbenzinaro = atts.get_bool("ART74/4");
|
||||||
|
|
||||||
|
// riaggiusta relazione
|
||||||
|
_nditte->read();
|
||||||
|
|
||||||
|
// decidi per stocazzo di annuale
|
||||||
|
// per QUALSIASI annuale il mese diventa 13
|
||||||
|
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
|
||||||
|
(_month == 13 && (mens || _isbenzinaro));
|
||||||
|
_isriepilogo = _month == 13 && !mens;
|
||||||
|
if (_isannual) _month = 13; // che ti piaccia o no
|
||||||
|
|
||||||
|
|
||||||
TApplication::set_firm(nomeditta.get_long(1));
|
TApplication::set_firm(nomeditta.get_long(1));
|
||||||
_prind->addstatus(1);
|
_prind->addstatus(1);
|
||||||
|
|
||||||
_freqviva = nomeditta.get(3);
|
|
||||||
/*
|
/*
|
||||||
* trimestrali impropriamente selezionate per mesi intermedi
|
* trimestrali impropriamente selezionate per mesi intermedi
|
||||||
* provocano il ricalcolo dei progressivi mensili ma non la stampa
|
* provocano il ricalcolo dei progressivi mensili ma non la stampa
|
||||||
*/
|
*/
|
||||||
_canprint = is_month_ok_strict(_month);
|
_canprint = is_month_ok_strict(_month) || _month == 13;
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------
|
||||||
|
* Ricalcola i mesi necessari, tutti se annuale
|
||||||
|
* --------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
int need_refresh = FALSE;
|
int need_refresh = FALSE;
|
||||||
if (_recalc != ever)
|
if (_recalc != ever)
|
||||||
{
|
{
|
||||||
for (int m = 1; m < _month; m++)
|
for (int m = 1; m < _month; m++)
|
||||||
if (!look_lim(m) || !_lim->get_bool("B0"))
|
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
||||||
{
|
{
|
||||||
need_refresh = TRUE;
|
need_refresh = TRUE;
|
||||||
break;
|
break;
|
||||||
@ -69,11 +105,10 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
_recalc = ever;
|
_recalc = ever;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int m = 1; m <= _month; m++)
|
for (int m = 1; m <= _month; m++) // fino a 13 compreso
|
||||||
if (is_month_ok(m, _month) || _recalc == ever)
|
if (is_month_ok(m, _month) || _recalc == ever)
|
||||||
{
|
{
|
||||||
if (_prind->iscancelled())
|
if (_prind->iscancelled()) break;
|
||||||
break;
|
|
||||||
update_firm(m);
|
update_firm(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,11 +116,13 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
||||||
// successivi (evitando problemi per credito precedente)
|
// successivi (evitando problemi per credito precedente)
|
||||||
for (m = _month+1; m <= 13; m++)
|
for (m = _month+1; m <= 13; m++)
|
||||||
if (is_month_ok_strict(m) && look_lim(m))
|
if ((is_month_ok_strict(m) || m == 13) && look_lim(m))
|
||||||
{
|
{
|
||||||
_lim->put("B0","");
|
_lim->put("B0","");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_month = save_month;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool canc = _prind->iscancelled();
|
bool canc = _prind->iscancelled();
|
||||||
@ -105,7 +142,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
// Ritorna FALSE soltanto se il ricalcolo era necessario e non e'
|
// Ritorna FALSE soltanto se il ricalcolo era necessario e non e'
|
||||||
// stato effettuato per scelta dello stronzo commercialista.
|
// stato effettuato per scelta dello stronzo commercialista.
|
||||||
|
|
||||||
look_lim(month, TRUE);
|
look_lim(liq_month(month), TRUE);
|
||||||
|
|
||||||
if (_isregis && _lim->get_bool("B1"))
|
if (_isregis && _lim->get_bool("B1"))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -115,7 +152,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
TConfig cnf1(CONFIG_STUDIO, "cg");
|
TConfig cnf1(CONFIG_STUDIO, "cg");
|
||||||
_isricacq = cnf1.get_bool("RicAcq");
|
_isricacq = cnf1.get_bool("RicAcq");
|
||||||
|
|
||||||
// ricalcolo normale
|
// ricalcolo normale
|
||||||
|
// TBI lim c'e' solo per i trimestri
|
||||||
bool ok = _lim->get_bool("B0");
|
bool ok = _lim->get_bool("B0");
|
||||||
if (ok && !recalc) return TRUE;
|
if (ok && !recalc) return TRUE;
|
||||||
bool calc = (_recalc == ever || (_recalc == one && month == _month));
|
bool calc = (_recalc == ever || (_recalc == one && month == _month));
|
||||||
@ -153,10 +191,10 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
|
|
||||||
for (int tipoatt = 1; tipoatt <= (_mixed ? 2 : 1); tipoatt++)
|
for (int tipoatt = 1; tipoatt <= (_mixed ? 2 : 1); tipoatt++)
|
||||||
{
|
{
|
||||||
TString cattiv(codatt);
|
TString cattiv(codatt); bool waspla;
|
||||||
|
|
||||||
cattiv << tipoatt;
|
cattiv << tipoatt;
|
||||||
if (tipoatt == 1 && look_pla(cattiv, FALSE))
|
if (tipoatt == 1 && (waspla = look_pla(cattiv, FALSE)))
|
||||||
{
|
{
|
||||||
_p8 = _pla->get_real("R5");
|
_p8 = _pla->get_real("R5");
|
||||||
_p8b = _pla->get_real("R6");
|
_p8b = _pla->get_real("R6");
|
||||||
@ -165,27 +203,36 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
_isplafond = !(_p8.is_zero() && _p8b.is_zero() &&
|
_isplafond = !(_p8.is_zero() && _p8b.is_zero() &&
|
||||||
_p9.is_zero());
|
_p9.is_zero());
|
||||||
_isservizio = _pla->get("S7") == "S";
|
_isservizio = _pla->get("S7") == "S";
|
||||||
_mixed = _pla->get("S7") == "M" || _pla->get("S7") == "E";
|
_mixed = _pla->get("S7") == "M" || _pla->get("S7") == "E";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_isservizio = _nditte->curr(LF_ATTIV).get("TIPOATT") == "S";
|
_isservizio = _nditte->curr(LF_ATTIV).get("TIPOATT") == "S";
|
||||||
|
|
||||||
_isviaggio = _nditte->curr(LF_ATTIV).get_bool("REG74TER");
|
_isviaggio = _nditte->curr(LF_ATTIV).get_bool("REG74TER");
|
||||||
_isagricolo = _nditte->curr(LF_ATTIV).get_bool("REGAGR");
|
_isagricolo = _nditte->curr(LF_ATTIV).get_bool("REGAGR");
|
||||||
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
|
|
||||||
bool mens = _freqviva == "M";
|
|
||||||
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
|
|
||||||
(_month == 13 && (mens || _isbenzinaro));
|
|
||||||
_isriepilogo = _month == 13;
|
|
||||||
_isvent = FALSE;
|
_isvent = FALSE;
|
||||||
|
|
||||||
|
if (tipoatt == 1 && waspla && month == 13)
|
||||||
|
{
|
||||||
|
// azzera pla dove serve
|
||||||
|
_pla->put("R0","");
|
||||||
|
_pla->put("R1","");
|
||||||
|
_pla->put("R2","");
|
||||||
|
_pla->put("R3","");
|
||||||
|
_pla->put("R4","");
|
||||||
|
_pla->put("S1","0|0");
|
||||||
|
_pla->put("S2","0");
|
||||||
|
_pla->put("S3","0");
|
||||||
|
_pla->rewrite();
|
||||||
|
}
|
||||||
|
|
||||||
for (_reg->first(); !_isvent && _reg->good(); _reg->next())
|
for (_reg->first(); !_isvent && _reg->good(); _reg->next())
|
||||||
{
|
{
|
||||||
if (codatt == _reg->get("S8") && _reg->get_int("I0") == 2)
|
if (codatt == _reg->get("S8") && _reg->get_int("I0") == 2)
|
||||||
_isvent = _reg->get_bool("B3");
|
_isvent = _reg->get_bool("B3");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((month != 13 || _isannual) && (calc || !recalc))
|
if (calc || !recalc)
|
||||||
if (!update_att(month, cattiv))
|
if (!update_att(month, cattiv))
|
||||||
describe_error("Attivita' non ricalcolate: possibili errori",
|
describe_error("Attivita' non ricalcolate: possibili errori",
|
||||||
codatt);
|
codatt);
|
||||||
@ -221,7 +268,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
|
|
||||||
// aggiorna le liquidazioni
|
// aggiorna le liquidazioni
|
||||||
if (calc || !recalc)
|
if (calc || !recalc)
|
||||||
write_liq(month, atts);
|
if (is_month_ok_strict(month) || month == 13)
|
||||||
|
write_liq(month, atts);
|
||||||
|
|
||||||
// rimborso infraannuale
|
// rimborso infraannuale
|
||||||
_DescrItem* rimb_d = NULL;
|
_DescrItem* rimb_d = NULL;
|
||||||
@ -260,11 +308,16 @@ bool TLiquidazione_app::update_att(int month, const char* codatt,
|
|||||||
{
|
{
|
||||||
zero_att(month,codatt);
|
zero_att(month,codatt);
|
||||||
recalc_att(month,codatt);
|
recalc_att(month,codatt);
|
||||||
recalc_ventilation(month, codatt);
|
|
||||||
recalc_corrispettivi(month, codatt);
|
|
||||||
|
|
||||||
if (month == 13)
|
if (month == 13)
|
||||||
recalc_annual(codatt);
|
recalc_annual(codatt);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nei PIM della 13a vanno solo alcune stranezze,
|
||||||
|
// mi rifiuto di pensare che vadano ventilate
|
||||||
|
// o corrispettivizzicizzate
|
||||||
|
recalc_ventilation(month, codatt);
|
||||||
|
recalc_corrispettivi(month, codatt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ok || calc;
|
return ok || calc;
|
||||||
}
|
}
|
||||||
@ -344,7 +397,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
for (; _cur->pos() < items; ++(*_cur))
|
for (; _cur->pos() < items; ++(*_cur))
|
||||||
{
|
{
|
||||||
TDate date(_mov_r->get("DATAREG"));
|
TDate date(_mov_r->get("DATAREG"));
|
||||||
TString16 reg = _mov_r->get("REG");
|
TString16 reg = _mov_r->get("REG");
|
||||||
bool isreg = look_reg(_mov_r->get("REG"));
|
bool isreg = look_reg(_mov_r->get("REG"));
|
||||||
TString16 tipodoc = _mov_r->get("TIPODOC");
|
TString16 tipodoc = _mov_r->get("TIPODOC");
|
||||||
/*
|
/*
|
||||||
@ -394,6 +447,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
|
|
||||||
TString codiva = _iva->get("CODTAB");
|
TString codiva = _iva->get("CODTAB");
|
||||||
TString tipoiva = _iva->get("S1");
|
TString tipoiva = _iva->get("S1");
|
||||||
|
TString riga11_v = _iva->get("S0");
|
||||||
int tipoes_v = (int)_iva->get_long("I3");
|
int tipoes_v = (int)_iva->get_long("I3");
|
||||||
int tipoes_a = (int)_iva->get_long("I4");
|
int tipoes_a = (int)_iva->get_long("I4");
|
||||||
int tipoagr = atoi(_iva->get("S4"));
|
int tipoagr = atoi(_iva->get("S4"));
|
||||||
@ -410,7 +464,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
int rigaimp = _rmoviva->get_int("RIGAIMP");
|
int rigaimp = _rmoviva->get_int("RIGAIMP");
|
||||||
// autofatture art. 17 per non residenti, con trattamento
|
// autofatture art. 17 per non residenti, con trattamento
|
||||||
// speciale in liquidazione annuale
|
// speciale in liquidazione annuale
|
||||||
bool autodafe = (tipodoc == "AF" && tipocr == 4);
|
bool autodafe = (tipodoc == "AF" && tipocr == 4);
|
||||||
|
// validi per calcolo volume di affari settano
|
||||||
|
// flag che va in B2 di pim
|
||||||
|
bool isvolaff = (tipomov == vendita && tipocr != 4 &&
|
||||||
|
tipoiva != "NS" && tipoiva != "ES" &&
|
||||||
|
!(tipoiva == "ES" &&
|
||||||
|
(riga11_v == "B3" || riga11_v.empty())));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* puo' capitare per motivi brutalmente prassici
|
* puo' capitare per motivi brutalmente prassici
|
||||||
@ -427,17 +487,22 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if(rigaimp > 9) continue;
|
if(rigaimp > 9) continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In liq. annuale si totalizzano nelle vendite
|
* In liq. annuale si totalizzano
|
||||||
* solo le stranezze che seguono
|
* solo le stranezze che seguono
|
||||||
*/
|
*/
|
||||||
if (month == 13 && tipomov == vendita &&
|
if (month == 13)
|
||||||
(!rcs.get_bool("AUTOFATT") && tipoiva != "NS"))
|
{
|
||||||
{
|
// si contano soltanto le vendite.
|
||||||
if (tipodoc == "AF" ||
|
bool okc = tipomov == vendita;
|
||||||
(!rcs.get_bool("INTRACOM") && !rcs.get_bool("VALINTRA")))
|
// purche' ...
|
||||||
continue;
|
bool cond1 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc == "AF");
|
||||||
}
|
// oppure ...
|
||||||
|
bool cond2 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc != "AF" &&
|
||||||
|
rcs.get_bool("INTRACOM") && rcs.get_bool("VALINTRA"));
|
||||||
|
if (!(okc && (cond1 || cond2)))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// *****************************************
|
// *****************************************
|
||||||
// casi particolari
|
// casi particolari
|
||||||
// *****************************************
|
// *****************************************
|
||||||
@ -679,19 +744,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
*/
|
*/
|
||||||
if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC")
|
if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC")
|
||||||
{
|
{
|
||||||
|
_pim_r->put("I0",LORDO);
|
||||||
// questi sono corrispettivi davvero; comportamento normale
|
// questi sono corrispettivi davvero; comportamento normale
|
||||||
if (tipoiva == "VE") // da ventilare
|
if (tipoiva == "VE") // da ventilare
|
||||||
{
|
{
|
||||||
lor += imponibile;
|
lor += imponibile;
|
||||||
_pim_r->put("I0",LORDO);
|
|
||||||
add_vendite(month, reg, tipodet, imponibile);
|
add_vendite(month, reg, tipodet, imponibile);
|
||||||
}
|
}
|
||||||
else // non da ventilare, con imposta gia' conteggiata
|
else // non da ventilare, con imposta gia' conteggiata
|
||||||
{
|
{
|
||||||
real perc = _iva->get_real("R0") / CENTO;
|
real perc = _iva->get_real("R0")/CENTO;
|
||||||
lor += imponibile + imposta;
|
lor += imponibile + imposta;
|
||||||
_pim_r->put("I0",LORDO);
|
if (liq)
|
||||||
if (liq) add_corrisp(month, reg, imponibile, perc, tipodet, codiva);
|
add_corrisp(month, reg, imponibile, perc, tipodet, codiva);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tipodoc == "FS")
|
else if (tipodoc == "FS")
|
||||||
@ -756,6 +821,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
adi += imposta;
|
adi += imposta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_pim_r->put("B2",isvolaff);
|
||||||
_pim_r->put("R0",imp);
|
_pim_r->put("R0",imp);
|
||||||
_pim_r->put("R1",ivp);
|
_pim_r->put("R1",ivp);
|
||||||
_pim_r->put("R2",lor);
|
_pim_r->put("R2",lor);
|
||||||
@ -907,7 +973,14 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
real a_meCEE = 0.0;
|
real a_meCEE = 0.0;
|
||||||
real cred_cost = 0.0;
|
real cred_cost = 0.0;
|
||||||
real deb_mens = 0.0;
|
real deb_mens = 0.0;
|
||||||
real perc_r = 0.0;
|
real perc_r = 0.0;
|
||||||
|
|
||||||
|
// totali per annuali
|
||||||
|
real vol_aff_1 = 0.0;
|
||||||
|
real vol_aff_2 = 0.0;
|
||||||
|
real vol_aff_t = 0.0;
|
||||||
|
real vol_aff_l = 0.0;
|
||||||
|
real tot_cong = 0.0;
|
||||||
|
|
||||||
bool differita = FALSE;
|
bool differita = FALSE;
|
||||||
int attc = 0; // counter attivita'
|
int attc = 0; // counter attivita'
|
||||||
@ -953,7 +1026,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int m = 1; m <= 12; 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;
|
||||||
// tutti se annuale)
|
// tutti se annuale)
|
||||||
@ -1012,8 +1085,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
// benzinaro le conta solo in annuale,
|
// benzinaro le conta solo in annuale,
|
||||||
// non benzinaro solo in periodica
|
// non benzinaro solo in periodica
|
||||||
// TBC vedi se distinguere rett. benzinai / autotrasport,
|
// TBC vedi se distinguere rett. benzinai / autotrasport,
|
||||||
if ((_isbenzinaro && month == 13) ||
|
if ((_isbenzinaro && _isannual) ||
|
||||||
(!_isbenzinaro && month < 13))
|
(!_isbenzinaro && !_isannual))
|
||||||
{
|
{
|
||||||
risultato += _lim->get_real("R5");
|
risultato += _lim->get_real("R5");
|
||||||
rettifiche += _lim->get_real("R5");
|
rettifiche += _lim->get_real("R5");
|
||||||
@ -1036,10 +1109,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
a_mCEE += _plm->get_real("R10");
|
a_mCEE += _plm->get_real("R10");
|
||||||
a_meCEE += _plm->get_real("R11");
|
a_meCEE += _plm->get_real("R11");
|
||||||
}
|
}
|
||||||
// counter attivita' per evitare troppi versamenti
|
} // fine ciclo sul mese
|
||||||
attc++;
|
// counter attivita' per evitare troppi versamenti
|
||||||
} // fine ciclo sul mese
|
attc++;
|
||||||
}
|
} // fine ciclo su attivita'
|
||||||
|
|
||||||
if (!(_isdifferita && is_first_month(month)))
|
if (!(_isdifferita && is_first_month(month)))
|
||||||
{
|
{
|
||||||
@ -1091,6 +1164,77 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
res_cred += cred_prec;
|
res_cred += cred_prec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (month == 13)
|
||||||
|
{
|
||||||
|
// totalizza volumi affari e calcola nuovo prorata
|
||||||
|
// per tutte le attivita'
|
||||||
|
atts.restart();
|
||||||
|
while ((tmpatt = atts.get()) != NULL)
|
||||||
|
{
|
||||||
|
TString att(tmpatt);
|
||||||
|
int tipoatt = att[att.len() -1] - '0';
|
||||||
|
if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
|
||||||
|
{
|
||||||
|
look_pla(att);
|
||||||
|
TToken_string tt(_pla->get("S1"));
|
||||||
|
real vf1(tt.get(0));
|
||||||
|
real vf2(tt.get(1));
|
||||||
|
real iaq(_pla->get("S2")); // IVA acquisti
|
||||||
|
real ppg(_pla->get("S3")); // pro-rata pagato
|
||||||
|
|
||||||
|
vol_aff_1 += vf1;
|
||||||
|
vol_aff_2 += vf2;
|
||||||
|
vol_aff_t = vf1 + vf2;
|
||||||
|
vol_aff_l += _pla->get_real("R0"); // volume affari lordo
|
||||||
|
|
||||||
|
real es_b1 = _pla->get_real("R1");
|
||||||
|
real es_b2 = _pla->get_real("R2");
|
||||||
|
real es_b3 = _pla->get_real("R3");
|
||||||
|
real csamm = _pla->get_real("R4");
|
||||||
|
|
||||||
|
// calcola nuovo prorata per ogni attivita' (miste: 1+2)
|
||||||
|
real ris = vol_aff_t + csamm + es_b3;
|
||||||
|
real prorata(0.0);
|
||||||
|
if (!ris.is_zero())
|
||||||
|
prorata = (es_b1/ris) * CENTO;
|
||||||
|
real conguaglio = 0.0;
|
||||||
|
prorata.round(-2);
|
||||||
|
if (prorata != _prorata)
|
||||||
|
{
|
||||||
|
// calcolo conguaglio -- se positivo e' a debito
|
||||||
|
real topay = iaq * (prorata / CENTO);
|
||||||
|
conguaglio = topay - ppg;
|
||||||
|
conguaglio.round(ROUND_LIRA);
|
||||||
|
}
|
||||||
|
_pla->put("R9", conguaglio);
|
||||||
|
_pla->put("R10",prorata);
|
||||||
|
tot_cong += conguaglio;
|
||||||
|
_pla->rewrite();
|
||||||
|
|
||||||
|
// scrivi nuovo prorata in tabella anno successivo
|
||||||
|
TString yr = _year;
|
||||||
|
_year = format("%d", atoi(_year) + 1);
|
||||||
|
look_pla(att, TRUE);
|
||||||
|
_pla->put("R8", prorata);
|
||||||
|
_pla->rewrite();
|
||||||
|
_year = yr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
look_lia();
|
||||||
|
_lia->put("R1", vol_aff_l);
|
||||||
|
_lia->put("R2", vol_aff_1);
|
||||||
|
_lia->put("R3", vol_aff_2);
|
||||||
|
_lia->put("R4", acc_dec);
|
||||||
|
_lia->put("R5", cred_cost);
|
||||||
|
_lia->rewrite();
|
||||||
|
}
|
||||||
|
|
||||||
|
// comprende anche il conguaglio prorata
|
||||||
|
risultato += tot_cong;
|
||||||
|
if (tot_cong.sign() > 0) res_debt += tot_cong;
|
||||||
|
if (tot_cong.sign() < 0) res_cred += tot_cong;
|
||||||
|
|
||||||
look_lim(month,TRUE);
|
look_lim(month,TRUE);
|
||||||
// azzeriamo tutto
|
// azzeriamo tutto
|
||||||
@ -1110,10 +1254,13 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
(month >= 12 && _freqviva == "M"))
|
(month >= 12 && _freqviva == "M"))
|
||||||
{
|
{
|
||||||
risultato -= versamenti_IVA(12,"7");
|
risultato -= versamenti_IVA(12,"7");
|
||||||
acc_dec = versamenti_IVA(12,"7");
|
acc_dec = versamenti_IVA(12,"7");
|
||||||
|
res_cred += acc_dec;
|
||||||
}
|
}
|
||||||
|
|
||||||
risultato.round(month == 13 ? ROUND_MILLELIRE : ROUND_LIRA);
|
// in annuale si arrotondera' a 1000 in stampa
|
||||||
|
// se no il conguaglio prorata fa casino
|
||||||
|
risultato.round(ROUND_LIRA);
|
||||||
|
|
||||||
_lim->put("R0",risultato);
|
_lim->put("R0",risultato);
|
||||||
_lim->put("R2",cred_cost);
|
_lim->put("R2",cred_cost);
|
||||||
@ -1135,7 +1282,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
* non benzinari
|
* non benzinari
|
||||||
*/
|
*/
|
||||||
if (_freqviva == "T" && risultato.sign() > 0 &&
|
if (_freqviva == "T" && risultato.sign() > 0 &&
|
||||||
month < 12 && !_isbenzinaro)
|
month < 13 && !_isbenzinaro)
|
||||||
{
|
{
|
||||||
real interesse = interesse_trimestrale(_month);
|
real interesse = interesse_trimestrale(_month);
|
||||||
real ivi = risultato * (interesse / CENTO);
|
real ivi = risultato * (interesse / CENTO);
|
||||||
@ -1148,7 +1295,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
_lim->put("R9", vers_int);
|
_lim->put("R9", vers_int);
|
||||||
|
|
||||||
// scrivi: totali IVA vendite e acquisti, credito prec,
|
// scrivi: totali IVA vendite e acquisti, credito prec,
|
||||||
// debito prec, acconto
|
// debito prec, acconto, totale conguaglio prorata
|
||||||
// cosi' si fa una volta sola in stampa
|
// cosi' si fa una volta sola in stampa
|
||||||
|
|
||||||
tt = iva_vend.string(); tt.add(iva_acq.string());
|
tt = iva_vend.string(); tt.add(iva_acq.string());
|
||||||
@ -1158,109 +1305,94 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
tt = cred_prec.string(); tt.add(debt_precd.string());
|
tt = cred_prec.string(); tt.add(debt_precd.string());
|
||||||
_lim->put("S2", tt);
|
_lim->put("S2", tt);
|
||||||
tt = acc_dec.string();
|
tt = acc_dec.string();
|
||||||
_lim->put("S3", tt);
|
_lim->put("S3", tt);
|
||||||
|
// totale conguaglio su tutte le attivita'
|
||||||
|
_lim->put("S4", tot_cong.string());
|
||||||
|
|
||||||
|
|
||||||
_lim->put("B0","X");
|
_lim->put("B0","X");
|
||||||
if (_isfinal)
|
if (_isfinal)
|
||||||
_lim->put("B1", "X");
|
_lim->put("B1", "X");
|
||||||
_lim->rewrite();
|
_lim->rewrite();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TLiquidazione_app::recalc_annual(const char* att)
|
void TLiquidazione_app::recalc_annual(const char* att)
|
||||||
{
|
{
|
||||||
// calcolo volume d'affari e altro
|
// viene chiamata 2 volte per le att. miste; PLA e' stata
|
||||||
// TBI/C: volume d'affari separato per
|
// azzerata dove serve da update_firm se siamo all'annuale
|
||||||
// le eventuali 2 attivita'
|
|
||||||
|
|
||||||
real es_b1 = 0.0;
|
real es_b1 = 0.0;
|
||||||
real es_b2 = 0.0;
|
real es_b2 = 0.0;
|
||||||
real es_b3 = 0.0;
|
real es_b3 = 0.0;
|
||||||
real cess_amm = 0.0;
|
real cess_amm = 0.0;
|
||||||
real vendite = 0.0;
|
real vendite = 0.0;
|
||||||
real pro_pag = 0.0;
|
real pro_pag = 0.0;
|
||||||
real acq_iva = 0.0; // per conguaglio prorata
|
real iva_acq = 0.0;
|
||||||
real acq = 0.0;
|
real ven_lrd = 0.0;
|
||||||
real ivlac = 0.0;
|
real volaff1 = 0.0;
|
||||||
real ivven = 0.0;
|
real volaff2 = 0.0;
|
||||||
real ven_lrd = 0.0;
|
|
||||||
|
|
||||||
int tipoatt = att[strlen(att) -1] - '0';
|
int tipoatt = att[strlen(att) -1] - '0';
|
||||||
|
|
||||||
TString aaa(att);
|
TString aaa(att);
|
||||||
|
|
||||||
if (tipoatt == 2)
|
look_pla(aaa);
|
||||||
{
|
TToken_string tt(_pla->get("S1"));
|
||||||
// istanzia ai valori precedenti, calcolati per l'attivita' 1
|
volaff1 = tt.get(0);
|
||||||
// look_pla forza a 1 il tipo attivita' (un solo pla per anno)
|
volaff1 = tt.get(1);
|
||||||
if (look_pla(aaa))
|
vendite = _pla->get_real("R0");
|
||||||
{
|
es_b1 = _pla->get_real("R1");
|
||||||
vendite = _pla->get_real("R0");
|
es_b2 = _pla->get_real("R2");
|
||||||
es_b1 = _pla->get_real("R1");
|
es_b3 = _pla->get_real("R3");
|
||||||
es_b2 = _pla->get_real("R2");
|
cess_amm = _pla->get_real("R4");
|
||||||
es_b3 = _pla->get_real("R3");
|
pro_pag = (const char*)_pla->get("S3");
|
||||||
cess_amm = _pla->get_real("R4");
|
iva_acq = (const char*)_pla->get("S2");
|
||||||
ivven = _pla->get_real("R11");
|
|
||||||
ivlac = _pla->get_real("R12");
|
|
||||||
ven_lrd = _pla->get_real("R13");
|
|
||||||
acq = _pla->get_real("R14");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 1; i <= 12; i++)
|
// 1) Calcola volume di affari dai PIM, controllando il
|
||||||
|
// flag B2 settato da update_att per i progressivi che
|
||||||
|
// entrano nel calcolo
|
||||||
|
|
||||||
|
for (_pim->first(); !_pim->eof(); _pim->next())
|
||||||
{
|
{
|
||||||
// ricalcola se necessario
|
if (_year != (const char*)_pim_anno || aaa != (const char*)_pim_codatt)
|
||||||
if (i != 12 && !update_att(i,aaa,FALSE))
|
continue;
|
||||||
describe_error("Attivita' non ricalcolata: "
|
if (_pim->get_bool("B2"))
|
||||||
"possibili errori",att);
|
{
|
||||||
look_ptm(i,aaa); look_plm(i,aaa);
|
if (tipoatt == 1) volaff1 += _pim->get_real("R0");
|
||||||
|
else volaff2 += _pim->get_real("R0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2) calcola esenti, cessioni, lordo vendite, prorata pagato
|
||||||
|
// e IVA acquisti dai plm/ptm
|
||||||
|
|
||||||
|
for (int i = 1; i <= 13; i++)
|
||||||
|
{
|
||||||
|
if (!look_ptm(i,aaa) || !look_plm(i,aaa))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// vendite lorde; sa la madonna a cosa servono
|
||||||
real vend(_ptm->get("S3"));
|
real vend(_ptm->get("S3"));
|
||||||
ven_lrd += vend; // lordo vendite
|
ven_lrd += vend;
|
||||||
|
iva_acq += _plm->get_real("R1");
|
||||||
// non entra l'IVA per calcolo volume affari
|
|
||||||
vendite += (vend - _plm->get_real("R0"));
|
|
||||||
real eb3(_ptm->get("S0"));
|
real eb3(_ptm->get("S0"));
|
||||||
es_b1 += _ptm->get_real("R13");
|
es_b1 += _ptm->get_real("R13");
|
||||||
es_b2 += _ptm->get_real("R14");
|
es_b2 += _ptm->get_real("R14");
|
||||||
es_b3 += eb3;
|
es_b3 += eb3;
|
||||||
acq_iva += _plm->get_real("R1");
|
|
||||||
cess_amm += _ptm->get_real("R10");
|
cess_amm += _ptm->get_real("R10");
|
||||||
pro_pag += _plm->get_real("R2");
|
pro_pag += _plm->get_real("R2");
|
||||||
real aax(_ptm->get("S2"));
|
|
||||||
acq += aax - // rilevanti per aliquota media
|
|
||||||
_ptm->get_real("R3") - // toglie ammortizz. etc
|
|
||||||
_ptm->get_real("R5") - // non detraibili non ci sono
|
|
||||||
_ptm->get_real("R8");
|
|
||||||
ivlac += _plm->get_real("R1") - // idem per IVE
|
|
||||||
_ptm->get_real("R4") -
|
|
||||||
_ptm->get_real("R9") -
|
|
||||||
_ptm->get_real("R12");
|
|
||||||
ivven += _plm->get_real("R0");
|
|
||||||
}
|
|
||||||
|
|
||||||
// calcolo prorata
|
|
||||||
real prorata = (es_b1/(vendite - cess_amm - es_b3)) * CENTO;
|
|
||||||
real conguaglio = 0.0;
|
|
||||||
prorata.round(ROUND_LIRA);
|
|
||||||
if (prorata != _prorata)
|
|
||||||
{
|
|
||||||
// calcolo conguaglio -- se positivo e' a debito
|
|
||||||
real topay = acq_iva * (prorata / CENTO);
|
|
||||||
conguaglio = topay - pro_pag;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
look_pla(aaa);
|
tt = volaff1.string(); tt.add(volaff2.string());
|
||||||
_pla->put("R0", vendite);
|
|
||||||
_pla->put("R1", es_b1);
|
_pla->put("R0", ven_lrd);
|
||||||
_pla->put("R2", es_b2);
|
_pla->put("R1", es_b1);
|
||||||
_pla->put("R3", es_b3);
|
_pla->put("R2", es_b2);
|
||||||
_pla->put("R4", cess_amm);
|
_pla->put("R3", es_b3);
|
||||||
_pla->put("R9", prorata);
|
_pla->put("R4", cess_amm);
|
||||||
_pla->put("R10", conguaglio);
|
_pla->put("S1", tt);
|
||||||
_pla->put("R11", ivven);
|
_pla->put("S2", iva_acq.string());
|
||||||
_pla->put("R12", ivlac);
|
_pla->put("S3", pro_pag.string());
|
||||||
_pla->put("R13", ven_lrd);
|
|
||||||
_pla->put("R14", acq);
|
|
||||||
_pla->rewrite();
|
_pla->rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "cg4300.h"
|
#include "cg4300.h"
|
||||||
|
|
||||||
bool TLiquidazione_app::is_trim(int x)
|
bool TLiquidazione_app::is_trim(int x)
|
||||||
// TRUE se il mese passato e' un trimestre
|
// TRUE se il mese passato e' un trimestre
|
||||||
{ return x == 3 || x == 6 || x == 9 || x == 12; }
|
{ return x == 3 || x == 6 || x == 9 || x == 12; }
|
||||||
|
|
||||||
bool TLiquidazione_app::is_month_ok_strict(int x, int month)
|
bool TLiquidazione_app::is_month_ok_strict(int x, int month)
|
||||||
@ -24,15 +24,15 @@ bool TLiquidazione_app::is_month_ok_strict(int x, int month)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::is_month_ok(int x, int mtocalc)
|
bool TLiquidazione_app::is_month_ok(int x, int mtocalc)
|
||||||
// TRUE se il mese passato e' compatibile con il mese da calcolare
|
// TRUE se il mese passato e' compatibile con il mese da calcolare
|
||||||
// rispetto al regime di liquidazione scelto
|
// rispetto al regime di liquidazione scelto
|
||||||
{
|
{
|
||||||
bool ret = x == mtocalc;
|
bool ret = x == mtocalc;
|
||||||
if (!ret && _freqviva == "T" && mtocalc != 13)
|
if (!ret && _freqviva == "T" && mtocalc != 13)
|
||||||
{
|
{
|
||||||
// aggiusta al trimestre il mese da calcolare
|
// aggiusta al trimestre il mese da calcolare
|
||||||
mtocalc += 2 - ((mtocalc-1) % 3);
|
mtocalc += 2 - ((mtocalc-1) % 3);
|
||||||
ret = x >= (mtocalc - 3) && x <= mtocalc;
|
ret = x > (mtocalc - 3) && x <= mtocalc;
|
||||||
}
|
}
|
||||||
else if (!ret && mtocalc == 13)
|
else if (!ret && mtocalc == 13)
|
||||||
{
|
{
|
||||||
@ -42,6 +42,14 @@ bool TLiquidazione_app::is_month_ok(int x, int mtocalc)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TLiquidazione_app::liq_month(int x)
|
||||||
|
// ritorna il mese da liquidare (= LIM presente)
|
||||||
|
// che corrisponde al mese passato
|
||||||
|
{
|
||||||
|
if (x == 13 || _freqviva == "M")
|
||||||
|
return x;
|
||||||
|
else return x + (2 - ((x-1) % 3));
|
||||||
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::is_first_month(int m)
|
bool TLiquidazione_app::is_first_month(int m)
|
||||||
{
|
{
|
||||||
@ -51,32 +59,22 @@ bool TLiquidazione_app::is_first_month(int m)
|
|||||||
|
|
||||||
int TLiquidazione_app::previous_month(int m)
|
int TLiquidazione_app::previous_month(int m)
|
||||||
{
|
{
|
||||||
if (m == 13) m = 12;
|
// vale per LIM (mese o trimestre precedente)
|
||||||
if (_freqviva == "M")
|
if (_freqviva == "M")
|
||||||
return m == 1 ? 1 : m - 1;
|
return m == 1 ? 1 : m - 1;
|
||||||
else return m == 3 ? 3 : m - 3;
|
else return m == 3 ? 3 : m - 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::check_month(int m, int m2)
|
|
||||||
// se si sta ricalcolando una liquidazione
|
|
||||||
// annuale di check, ritorna TRUE per tutti i
|
|
||||||
// mesi, altrimenti solo per quello in corso
|
|
||||||
// di calcolo
|
|
||||||
{
|
|
||||||
return (_isannual || _isriepilogo) ? m < 13 : m == m2;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TLiquidazione_app::is_date_ok(TDate& d, int month)
|
bool TLiquidazione_app::is_date_ok(TDate& d, int month)
|
||||||
// TRUE se la data (di mov o pim) passata va considerata nel
|
// TRUE se la data (di mov o pim) passata va considerata nel
|
||||||
// ricalcolo dei progressivi mensili per il mese e anno
|
// ricalcolo dei progressivi mensili per il mese e anno
|
||||||
// selezionati; se month == 13 vanno bene tutte purche'
|
// selezionati; se month == 13 vanno bene tutte purche'
|
||||||
// sia giusto l'anno
|
// sia giusto l'anno
|
||||||
{
|
{
|
||||||
if (month == 13)
|
if (d.month() > month || d.year() != atoi(_year))
|
||||||
return month < 13 && d.year() == atoi(_year);
|
|
||||||
else if (d.month() > month || d.year() != atoi(_year))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else return d.month() == month;
|
if (month == 13) return d.month() <= month;
|
||||||
|
else return d.month() == month;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -366,13 +364,13 @@ bool TLiquidazione_app::look_lia(bool create, int year)
|
|||||||
|
|
||||||
real TLiquidazione_app::result_liq(int month)
|
real TLiquidazione_app::result_liq(int month)
|
||||||
// risultato esatto della liquidazione del mese month, <0 a credito
|
// risultato esatto della liquidazione del mese month, <0 a credito
|
||||||
// > 0 a debito; non comprende il conguaglio prorata (annuale)
|
// > 0 a debito; comprende TUTTI, anche il conguaglio prorata in annuale
|
||||||
{
|
{
|
||||||
real r(0.0);
|
real r(0.0);
|
||||||
// ulteriori detrazioni, acconti, versamenti,
|
// ulteriori detrazioni, acconti, versamenti,
|
||||||
// rettifiche sono gia' comprese in R0
|
// rettifiche sono gia' comprese in R0
|
||||||
if (look_lim(month))
|
if (look_lim(month))
|
||||||
r = _lim->get_real("R0");
|
r = _lim->get_real("R0");
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,6 +398,7 @@ real TLiquidazione_app::credito_prec(int month)
|
|||||||
|
|
||||||
if (is_first_month(month))
|
if (is_first_month(month))
|
||||||
{
|
{
|
||||||
|
// credito inizio anno
|
||||||
if (look_lia())
|
if (look_lia())
|
||||||
c = _lia->get_real("R0");
|
c = _lia->get_real("R0");
|
||||||
// e' positivo o 0
|
// e' positivo o 0
|
||||||
|
@ -104,9 +104,6 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
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);
|
||||||
|
|
||||||
// segnale per comodita'
|
|
||||||
_pim->put("B1","X");
|
|
||||||
_pim->rewrite();
|
_pim->rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -155,8 +152,7 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
TString att(codatt);
|
TString att(codatt);
|
||||||
if (tipocr == 1 && mese == m &&
|
if (tipocr == 1 && mese == m && att == (const char*)(*_pim_codatt))
|
||||||
att == (const char*)(*_pim_codatt))
|
|
||||||
{
|
{
|
||||||
look_iva(*_pim_codiva);
|
look_iva(*_pim_codiva);
|
||||||
|
|
||||||
@ -243,4 +239,4 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_ptm->put("S4",totacq.string());
|
_ptm->put("S4",totacq.string());
|
||||||
_ptm->put("S5",totven.string());
|
_ptm->put("S5",totven.string());
|
||||||
_ptm->rewrite();
|
_ptm->rewrite();
|
||||||
}
|
}
|
@ -82,7 +82,7 @@ void TLiquidazione_app::describe_att(int month, const char* codatt, bool isresul
|
|||||||
describe_agricolo(month, codatt);
|
describe_agricolo(month, codatt);
|
||||||
if (atts.items() == 1 && _isviaggio)
|
if (atts.items() == 1 && _isviaggio)
|
||||||
describe_viaggio(month, codatt);
|
describe_viaggio(month, codatt);
|
||||||
if (isresult || _isannual)
|
if (isresult || month == 13)
|
||||||
describe_pims(month,codatt);
|
describe_pims(month,codatt);
|
||||||
if (atts.items() == 1)
|
if (atts.items() == 1)
|
||||||
describe_consistence(codatt);
|
describe_consistence(codatt);
|
||||||
@ -161,8 +161,6 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt)
|
|||||||
{
|
{
|
||||||
if (!_isvent) return;
|
if (!_isvent) return;
|
||||||
|
|
||||||
if (_isriepilogo || _isannual) month = 12;
|
|
||||||
|
|
||||||
_DescrItem* d = new _DescrItem(VENTILA);
|
_DescrItem* d = new _DescrItem(VENTILA);
|
||||||
TString att(codatt);
|
TString att(codatt);
|
||||||
|
|
||||||
@ -352,8 +350,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
_pim->get_real("R2").is_zero())
|
_pim->get_real("R2").is_zero())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (strcmp((const char*)*_pim_codatt, att) == 0 &&
|
if (strcmp((const char*)*_pim_codatt, att) == 0 &&
|
||||||
(is_month_ok(atoi(*_pim_mese),month) || _isannual) &&
|
(is_month_ok(atoi(*_pim_mese),month)) &&
|
||||||
_year == (const char*)*_pim_anno)
|
_year == (const char*)*_pim_anno)
|
||||||
{
|
{
|
||||||
// vedi se c'e' gia' un item corrispondente
|
// vedi se c'e' gia' un item corrispondente
|
||||||
@ -423,7 +421,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
|
|
||||||
// si scorporano solo per l'annuale, altrimenti
|
// si scorporano solo per l'annuale, altrimenti
|
||||||
// vengono normalmente considerati nelle vendite
|
// vengono normalmente considerati nelle vendite
|
||||||
if (_isannual)
|
if (month == 13)
|
||||||
{
|
{
|
||||||
adf = _pim->get_real("R7");
|
adf = _pim->get_real("R7");
|
||||||
adi = _pim->get_real("R8");
|
adi = _pim->get_real("R8");
|
||||||
@ -475,7 +473,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
|
|
||||||
for (int m = 1; m <= month && m < 13; m++)
|
for (int m = 1; m <= month && m < 13; m++)
|
||||||
{
|
{
|
||||||
if (!is_month_ok(m,month) && !(_isannual || _isriepilogo)) continue;
|
if (!is_month_ok(m,month)) continue;
|
||||||
|
|
||||||
atts.restart();
|
atts.restart();
|
||||||
while ((tmpatt = atts.get()) != NULL)
|
while ((tmpatt = atts.get()) != NULL)
|
||||||
@ -536,26 +534,28 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
|||||||
} // for (mese ok)
|
} // for (mese ok)
|
||||||
|
|
||||||
// annual follows in _arr
|
// annual follows in _arr
|
||||||
if ((_isannual || _isriepilogo) && ref != "ALL")
|
if (month == 13 && ref != "ALL")
|
||||||
{
|
{
|
||||||
// tutte quelle cose che vanno alla liquidazione annuale, come il
|
// tutte quelle cose che vanno alla liquidazione annuale, come il
|
||||||
// calcolo del prorata o del nuovo plafond o ....
|
// calcolo del prorata o del nuovo plafond o ....
|
||||||
if (look_pla(codatt))
|
if (look_pla(codatt))
|
||||||
{
|
{
|
||||||
real v = _pla->get_real("R0");
|
TToken_string tt(_pla->get("S1"));
|
||||||
|
real v1 = tt.get(0); real v2 = tt.get(1);
|
||||||
|
real v = v1 + v2;
|
||||||
real e1 = _pla->get_real("R1");
|
real e1 = _pla->get_real("R1");
|
||||||
real e2 = _pla->get_real("R2");
|
real e2 = _pla->get_real("R2");
|
||||||
real e3 = _pla->get_real("R3");
|
real e3 = _pla->get_real("R3");
|
||||||
real am = _pla->get_real("R4");
|
real am = _pla->get_real("R4");
|
||||||
real pr = _pla->get_real("R9");
|
real pr = _pla->get_real("R10");
|
||||||
real co = _pla->get_real("R10");
|
real co = _pla->get_real("R9");
|
||||||
|
|
||||||
_DescrItem* dd = new _DescrItem(ANNUAL);
|
_DescrItem* dd = new _DescrItem(ANNUAL);
|
||||||
|
|
||||||
// prorata
|
// prorata
|
||||||
if (!_prorata.is_zero())
|
if (!_prorata.is_zero())
|
||||||
dd->_f0 |= IS_PRORATA;
|
dd->_f0 |= IS_PRORATA;
|
||||||
dd->_r0 = v - am - e3;
|
dd->_r0 = v;
|
||||||
dd->_r1 = e1;
|
dd->_r1 = e1;
|
||||||
dd->_r2 = pr;
|
dd->_r2 = pr;
|
||||||
dd->_r3 = co;
|
dd->_r3 = co;
|
||||||
@ -594,18 +594,10 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
|
|||||||
d->_s2 = _lim->get("S2");
|
d->_s2 = _lim->get("S2");
|
||||||
d->_s3 = _lim->get("S3");
|
d->_s3 = _lim->get("S3");
|
||||||
d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse
|
d->_r11 = (const char*)_lim->get("R10"); // tasso di interesse
|
||||||
|
|
||||||
|
real cong(_lim->get("S4")); // totale conguaglio prorata
|
||||||
|
d->_r10 = cong;
|
||||||
|
|
||||||
if (month == 13)
|
|
||||||
{
|
|
||||||
TToken_string a(codatts);
|
|
||||||
for (int i = 0; i < a.items(); i++)
|
|
||||||
{
|
|
||||||
TString att = a.get();
|
|
||||||
look_pla(att);
|
|
||||||
// r10 = conguaglio prorata
|
|
||||||
d->_r10 += _pla->get_real("R10");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// aggiunge eventuale satellite per rimborso infraannuale
|
// aggiunge eventuale satellite per rimborso infraannuale
|
||||||
if (di != NULL) d->_arr.add(di);
|
if (di != NULL) d->_arr.add(di);
|
||||||
|
|
||||||
@ -974,6 +966,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
|
|||||||
real& interessi = d._r7;
|
real& interessi = d._r7;
|
||||||
real& versamenti = d._r8;
|
real& versamenti = d._r8;
|
||||||
real& vers_int = d._r9;
|
real& vers_int = d._r9;
|
||||||
|
real& conguaglio = d._r10;
|
||||||
TToken_string tt(d._s0);
|
TToken_string tt(d._s0);
|
||||||
real iva_vend(tt.get(0));
|
real iva_vend(tt.get(0));
|
||||||
real iva_acq(tt.get(1));
|
real iva_acq(tt.get(1));
|
||||||
@ -1003,12 +996,9 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
|
|||||||
_is_visliq ? "$[r]" : "", &rimborso);
|
_is_visliq ? "$[r]" : "", &rimborso);
|
||||||
|
|
||||||
// conguaglio prorata
|
// conguaglio prorata
|
||||||
if (d._r10.sign() > 0)
|
if (conguaglio.sign() > 0)
|
||||||
{
|
{
|
||||||
real r = abs(d._r10);
|
set_row(rw++,"@11gConguaglio pro-rata@75g%r", &conguaglio);
|
||||||
set_row(rw++,"@11gConguaglio pro-rata@75g%r", &r);
|
|
||||||
res_debt += d._r10;
|
|
||||||
risultato += d._r10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// debito liq. precedente < 50000
|
// debito liq. precedente < 50000
|
||||||
@ -1043,12 +1033,9 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
|
|||||||
set_row(rw++,"@11gVersamenti integrativi@58g%r", &vers_int);
|
set_row(rw++,"@11gVersamenti integrativi@58g%r", &vers_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d._r10.sign() < 0)
|
if (conguaglio.sign() < 0)
|
||||||
{
|
{
|
||||||
real r = abs(d._r10);
|
set_row(rw++,"@11gConguaglio pro-rata@58g%r", &conguaglio);
|
||||||
set_row(rw++,"@11gConguaglio pro-rata@58g%r", &r);
|
|
||||||
res_cred += d._r10;
|
|
||||||
risultato -= d._r10;
|
|
||||||
}
|
}
|
||||||
set_row(rw++,"@11gRISULTATO@58g%r", &res_cred);
|
set_row(rw++,"@11gRISULTATO@58g%r", &res_cred);
|
||||||
|
|
||||||
@ -1060,12 +1047,14 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
|
|||||||
{
|
{
|
||||||
if (risultato.sign() < 0)
|
if (risultato.sign() < 0)
|
||||||
{
|
{
|
||||||
real iva = abs(risultato);
|
real iva = abs(risultato);
|
||||||
|
if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
|
||||||
set_row(rw++,"@23gCREDITO ATTUALE@58g%r",&iva);
|
set_row(rw++,"@23gCREDITO ATTUALE@58g%r",&iva);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
real iva = risultato + interessi;
|
real iva = risultato + interessi;
|
||||||
|
if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
|
||||||
if (!iva.is_zero())
|
if (!iva.is_zero())
|
||||||
{
|
{
|
||||||
if (!interessi.is_zero())
|
if (!interessi.is_zero())
|
||||||
@ -1073,7 +1062,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
|
|||||||
set_row(rw++,"@23gIVA DOVUTA@75g%r",&risultato);
|
set_row(rw++,"@23gIVA DOVUTA@75g%r",&risultato);
|
||||||
set_row(rw++,"@23gInteresse %6.2r %%@75g%r",&interesse, &interessi);
|
set_row(rw++,"@23gInteresse %6.2r %%@75g%r",&interesse, &interessi);
|
||||||
}
|
}
|
||||||
if (iva >= IVA_DA_RIPORTARE || _isannual)
|
if (iva >= IVA_DA_RIPORTARE || _isannual || _isriepilogo)
|
||||||
set_row(rw++,"@23gIVA DA VERSARE@75g%r",&iva);
|
set_row(rw++,"@23gIVA DA VERSARE@75g%r",&iva);
|
||||||
else
|
else
|
||||||
set_row(rw++,"@23gIVA DA VERSARE@85g0 (%s < 50.000)",
|
set_row(rw++,"@23gIVA DA VERSARE@85g0 (%s < 50.000)",
|
||||||
|
@ -98,9 +98,9 @@ bool TLiquidazione_app::extract_deleghe()
|
|||||||
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
|
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
|
||||||
bool mens = _freqviva == "M";
|
bool mens = _freqviva == "M";
|
||||||
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
|
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
|
||||||
(_month == 13 && (mens || _isbenzinaro));
|
(_month == 13 && (mens || _isbenzinaro));
|
||||||
_isriepilogo = _month == 13;
|
_isriepilogo = _month == 13;
|
||||||
|
_isendliq = _isannual || _isriepilogo;
|
||||||
extract_delega(_month);
|
extract_delega(_month);
|
||||||
}
|
}
|
||||||
_prind->addstatus(1);
|
_prind->addstatus(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user