Corretti diversi cazzaroli
git-svn-id: svn://10.65.10.50/trunk@855 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a1a7b2c36a
commit
59acd28d41
@ -282,7 +282,6 @@ public:
|
||||
virtual bool user_destroy();
|
||||
virtual bool set_print(int i);
|
||||
|
||||
|
||||
// cazzatelle per handlers
|
||||
TArray_sheet* get_ditte_sheet() { return _ditte; }
|
||||
TBit_array& get_selected() { return _selected; }
|
||||
@ -386,6 +385,7 @@ public:
|
||||
|
||||
// tutti i controlli del mondo sui mesi da calcolare
|
||||
static bool is_trim (int x);
|
||||
static bool is_in_trim (int x, int t);
|
||||
bool is_month_ok (int x, int month = -1);
|
||||
bool is_date_ok (TDate& d, int month);
|
||||
bool is_first_month (int m);
|
||||
|
138
cg/cg4301.cpp
138
cg/cg4301.cpp
@ -11,6 +11,9 @@
|
||||
|
||||
// -------------------- QUI comincia l'avventura --------------------------
|
||||
|
||||
// che nel gennaio 1995 non solo non e' finita, ma si fa
|
||||
// ogni giorno piu' odiosa e nevrastenica
|
||||
|
||||
bool TLiquidazione_app::recalc_all()
|
||||
{
|
||||
_prind = new TProgind(_selected.ones()*2, _printonly ?
|
||||
@ -169,12 +172,10 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
||||
_isviaggio = _nditte->curr(LF_ATTIV).get_bool("REG74TER");
|
||||
_isagricolo = _nditte->curr(LF_ATTIV).get_bool("REGAGR");
|
||||
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
|
||||
// _freqviva = look_lia() ? _lia->get("S7") : _nditte->curr().get("FREQVIVA");
|
||||
bool mens = _freqviva == "M";
|
||||
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
|
||||
(_month == 13 && (mens || _isbenzinaro));
|
||||
_isriepilogo = _month == 13;
|
||||
|
||||
(_month == 13 && (mens || _isbenzinaro));
|
||||
_isriepilogo = _month == 13;
|
||||
_isvent = FALSE;
|
||||
|
||||
for (_reg->first(); !_isvent && _reg->good(); _reg->next())
|
||||
@ -212,7 +213,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
||||
while (_nditte->next_match(LF_ATTIV));
|
||||
|
||||
// se quater stampa riepilogo
|
||||
if (/* atts.items() > 1*/ quater && month == _month)
|
||||
if (quater && month == _month)
|
||||
describe_att(month,atts);
|
||||
|
||||
// occorre poterla chiamare altre volte con mesi diversi
|
||||
@ -403,6 +404,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
bool intra = _rmoviva->get_bool("INTRA");
|
||||
int tipoatt = _rmoviva->get_int("TIPOATT");
|
||||
int rigaimp = _rmoviva->get_int("RIGAIMP");
|
||||
// autofatture art. 17 per non residenti, con trattamento
|
||||
// speciale in liquidazione annuale
|
||||
bool autodafe = (tipodoc == "AF" && tipocr == 4);
|
||||
|
||||
/*
|
||||
* puo' capitare per flags prassiani
|
||||
* SENSU Sergio 1995, Guido
|
||||
*/
|
||||
if (tipoatt == 0) tipoatt = 1;
|
||||
|
||||
if(tipoatt != tipatt) continue;
|
||||
|
||||
@ -421,10 +431,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
totintra += imposta;
|
||||
|
||||
// Altre cose di cui tener conto
|
||||
if (tipomov == acquisto && (tipocr == 1 || tipocr == 5)
|
||||
&& _isricacq)
|
||||
// Acquisto beni per rivendita (solo se l'apposito parametro ditta
|
||||
// e' settato)
|
||||
if (tipomov == acquisto && (tipocr == 1 || tipocr == 5))
|
||||
/*
|
||||
* Acquisto beni per rivendita sono comunque sommati, ma
|
||||
* vengono considerati in ventilazione solo se l'apposito
|
||||
* parametro ditta e' settato, piu' altre condizioni (vedi
|
||||
* recalc_ventilation())
|
||||
*/
|
||||
{
|
||||
acq_riv += imponibile;
|
||||
acq_riv_iva += imposta;
|
||||
@ -444,7 +457,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
ult_detr += imponibile * real(DETRAZIONE_6PERCENTO);
|
||||
}
|
||||
else if (tipomov == vendita && tipocr == 4)
|
||||
// Vendite strum. art 17 (cess. amm.???)
|
||||
// Vendite strum. art 17 (cess. amm.)
|
||||
// anche autofatture e anche nell'annuale
|
||||
// (Sergio 1995)
|
||||
{
|
||||
cess_amm += imponibile;
|
||||
cess_amm_iva += imposta;
|
||||
@ -461,11 +476,24 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
spgen += imponibile;
|
||||
spgen_iva += imposta;
|
||||
}
|
||||
|
||||
|
||||
// operazioni per calcolo rimborso infracazzuale
|
||||
if ((tipoiva == "ES" || tipoiva == "NI") && ivarimb)
|
||||
{
|
||||
for_rimb += imponibile;
|
||||
if (tipomov == acquisto &&
|
||||
(tipoiva == "ES" || tipoiva == "NI") &&
|
||||
ivarimb)
|
||||
{
|
||||
/*
|
||||
* solo determinati tipi costo (Scudler 1995)
|
||||
*/
|
||||
if (tipocr == 0 || tipocr == 1 || tipocr == 5)
|
||||
{
|
||||
/*
|
||||
* se agricolo, vale solo se tipoagr == 2
|
||||
* cfr. disegnini Scudler 1995
|
||||
*/
|
||||
if (!_isagricolo || (_isagricolo && tipoagr == 2))
|
||||
for_rimb += imponibile;
|
||||
}
|
||||
}
|
||||
|
||||
// operazioni esenti
|
||||
@ -491,11 +519,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
}
|
||||
|
||||
// plafond
|
||||
if (_isplafond && tipomov == acquisto &&
|
||||
if (_isplafond && tipomov == acquisto && !_isannual &&
|
||||
tipoiva == "NI" && tipopla != 0)
|
||||
{
|
||||
add_plafond(month, codatt, tipopla, imponibile, tipodoc == "BD");
|
||||
}
|
||||
|
||||
// agenzie viaggio (CHECK imponibili etc.)
|
||||
if (_isviaggio)
|
||||
switch (tipoag)
|
||||
@ -556,22 +585,34 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
|
||||
look_pim(month, codatt, reg, tipocr_s, codiva, tipodet, TRUE);
|
||||
|
||||
// se liq == FALSE gli importi non contano ai fini
|
||||
// del calcolo liquidazione
|
||||
/*
|
||||
* se liq == FALSE gli importi non contano ai fini
|
||||
* del calcolo liquidazione
|
||||
*/
|
||||
bool liq = !(tipodet == 1 || tipodet == 3 || tipodet == 9);
|
||||
|
||||
real imp = _pim_r->get_real("R0"); // imponibile
|
||||
real ivp = _pim_r->get_real("R1"); // IVA su imp.
|
||||
real lor = _pim_r->get_real("R2"); // lordo
|
||||
// le maledette fatture con scontrino sono sul registro dei
|
||||
// corrispettivi, ma vanno riportate nelle vendite in stampa;
|
||||
// dunque, le sommiamo in R5 e R6 di PIM anche se continuiamo
|
||||
// a riportare il totale in R0 e R1. La stampa (describe_pim)
|
||||
// dovra' scorporare
|
||||
real lor = _pim_r->get_real("R2"); // lordo
|
||||
/*
|
||||
* le maledette fatture con scontrino sono sul registro dei
|
||||
* corrispettivi, ma vanno riportate nelle vendite in stampa;
|
||||
* dunque, le sommiamo in R5 e R6 di PIM anche se continuiamo
|
||||
* a riportare il totale in R0 e R1. La stampa (describe_pim)
|
||||
* dovra' scorporare
|
||||
*/
|
||||
real ifs = _pim_r->get_real("R5"); // imponibile fatture con scontrino
|
||||
real vfs = _pim_r->get_real("R6"); // IVA fatt. con scontrino
|
||||
/*
|
||||
* le maledette autofatture non residenti art. 17
|
||||
* vedi al calcolo if (autodafe)
|
||||
*/
|
||||
real adf = _pim_r->get_real("R7");
|
||||
real adi = _pim_r->get_real("R8");
|
||||
|
||||
if (liq && tipomov == vendita && !corrisp) // i corrispettivi sono gestiti a parte
|
||||
|
||||
if (liq && tipomov == vendita && !corrisp)
|
||||
// i corrispettivi sono gestiti a parte
|
||||
{
|
||||
// totale vendite
|
||||
vendite += imponibile;
|
||||
@ -652,12 +693,29 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
ivp += imposta;
|
||||
_pim_r->put("I0",NETTO);
|
||||
}
|
||||
|
||||
if (autodafe)
|
||||
{
|
||||
/*
|
||||
* Si devono riportare a parte in annuale
|
||||
* e non comparire nel riepilogo del codice IVA
|
||||
* corrispondente, solo se la liq. e' annuale
|
||||
* Li metto in S0 di pim (imp|iva) e li sommo anche nelle
|
||||
* vendite; la describe_pim() dovra' sommarli su tutti i
|
||||
* pim, scorporarli dalle vendite corrispondenti
|
||||
* e assegnarli al codice IVA A35 in caso di liq. annuale
|
||||
*/
|
||||
adf += imponibile;
|
||||
adi += imposta;
|
||||
}
|
||||
|
||||
_pim_r->put("R0",imp);
|
||||
_pim_r->put("R1",ivp);
|
||||
_pim_r->put("R2",lor);
|
||||
_pim_r->put("R5",ifs);
|
||||
_pim_r->put("R6",vfs);
|
||||
_pim_r->put("R7",adf);
|
||||
_pim_r->put("R8",adi);
|
||||
_pim->rewrite();
|
||||
}
|
||||
while (_cur->next_match(LF_RMOVIVA));
|
||||
@ -673,13 +731,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
prorata = acquisti_iva * (_prorata / CENTO);
|
||||
prorata.round(ROUND_LIRA);
|
||||
}
|
||||
look_plm(month, codatt, TRUE);
|
||||
|
||||
// ACHTUNG: l'iva sulle vendite e' calcolata sommando anche i
|
||||
// corrispettivi; non tiene conto quindi delle imposte calcolate
|
||||
// con la ventilazione (che vanno sottratte) ne' di quelle
|
||||
// calcolate per le agenzie di viaggio (che sembra non vadano
|
||||
// sottratte per il calcolo del volume di affari)
|
||||
look_plm(month, codatt, TRUE);
|
||||
|
||||
/*
|
||||
* ACHTUNG: l'iva sulle vendite e' calcolata sommando anche i
|
||||
* corrispettivi; non tiene conto quindi delle imposte calcolate
|
||||
* con la ventilazione (che vanno sottratte) ne' di quelle
|
||||
* calcolate per le agenzie di viaggio (che sembra non vadano
|
||||
* sottratte per il calcolo del volume di affari)
|
||||
*/
|
||||
|
||||
_plm->put("R2", prorata);
|
||||
|
||||
@ -691,16 +751,18 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
_plm->put("R8", acq_noCEE);
|
||||
_plm->put("R9", corr_misCEE);
|
||||
_plm->put("R10",acq_misCEE);
|
||||
_plm->put("R11",acq_misnoCEE);
|
||||
// calcola base da base e credito di costo
|
||||
// indi abilmente trova il codiva e calcola l'iva del caso
|
||||
_plm->put("R11",acq_misnoCEE);
|
||||
|
||||
/*
|
||||
* calcola base da base e credito di costo
|
||||
* indi abilmente trova il codiva e calcola l'iva del caso
|
||||
*/
|
||||
real rip = acq_misCEE / (acq_misCEE + acq_misnoCEE);
|
||||
real corr_imp = corr_misCEE * rip; corr_imp.round(ROUND_LIRA);
|
||||
corr_imp += corr_CEE;
|
||||
real cost_detr = acq_misCEE * acq_CEE;
|
||||
real base_imp = corr_imp - (cost_detr
|
||||
+ credito_costo_prec(month, codatt));
|
||||
|
||||
real debito = 0.0;
|
||||
|
||||
if (base_imp.sign() < 0)
|
||||
@ -735,7 +797,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
acquisti_iva -= (agr_acq + leasing_iva + ammort_iva + ammort_6_iva);
|
||||
vendite_iva -= (agr_ven + agr_conf + agr_acc);
|
||||
}
|
||||
// COSA MI TOCCA FARE
|
||||
|
||||
// COSA MI TOCCA FARE (per campare, of course)
|
||||
// due numeri nello stesso campo
|
||||
TToken_string s(40);
|
||||
|
||||
_plm->put("R0", vendite_iva);
|
||||
@ -831,7 +895,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
}
|
||||
}
|
||||
// toglie credito precedente decrementato di ev. rimborsi chiesti
|
||||
// e acconto versato e rettifiche a debito
|
||||
// e acconto versato e rettificato come da manuale
|
||||
risultato -= credito_prec(month);
|
||||
ris_cred += credito_prec(month);
|
||||
|
||||
|
@ -13,6 +13,28 @@ bool TLiquidazione_app::is_trim(int x)
|
||||
// TRUE se il mese passato e' un trimestre
|
||||
{ return x == 3 || x == 6 || x == 9 || x == 12; }
|
||||
|
||||
bool TLiquidazione_app::is_in_trim(int x, int t)
|
||||
// TRUE se il mese passato e' nel trimestre t
|
||||
{
|
||||
bool ret = FALSE;
|
||||
switch(t)
|
||||
{
|
||||
case 3:
|
||||
ret = x >= 1 && x <= 3;
|
||||
break;
|
||||
case 6:
|
||||
ret = x >= 4 && x <= 6;
|
||||
break;
|
||||
case 9:
|
||||
ret = x >= 7 && x <= 9;
|
||||
break;
|
||||
case 12:
|
||||
ret = x >= 10 && x <= 12;
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool TLiquidazione_app::is_month_ok(int x, int month)
|
||||
// TRUE se il mese passato e' compatibile con il regime
|
||||
// di liquidazione e (opz) non e' maggiore di quello scelto
|
||||
@ -386,7 +408,8 @@ real TLiquidazione_app::credito_prec(int month)
|
||||
{
|
||||
if (_recalc != needed)
|
||||
{
|
||||
describe_error("Ricalcolo non eseguito: possibili errori credito precedente","ALL");
|
||||
describe_error("Ricalcolo non eseguito: possibili errori "
|
||||
"credito precedente","ALL");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -405,7 +428,8 @@ real TLiquidazione_app::credito_prec(int month)
|
||||
}
|
||||
look_lim(month);
|
||||
|
||||
if (c.sign() < 0) c = abs(c); else c = real(0.0);
|
||||
if (c.sign() < 0) c = abs(c);
|
||||
else c = real(0.0);
|
||||
return c;
|
||||
}
|
||||
|
||||
@ -426,11 +450,12 @@ real TLiquidazione_app::credito_costo_prec(int month, const char* codatt)
|
||||
{
|
||||
bool ok = look_lim(previous_month(month));
|
||||
if (!ok || !_lim->get_bool("B0"))
|
||||
{
|
||||
if (_recalc != needed)
|
||||
{
|
||||
describe_error("Ricalcolo non eseguito: possibili errori credito di costo","ALL");
|
||||
}
|
||||
{
|
||||
if (_recalc != needed)
|
||||
{
|
||||
describe_error("Ricalcolo non eseguito: possibili errori "
|
||||
"credito di costo","ALL");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Super Prassi a questo punto vorrebbe una update_firm
|
||||
|
@ -145,9 +145,12 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
||||
int mese = atoi(*_pim_mese);
|
||||
int tipodet = atoi(*_pim_tipodet);
|
||||
|
||||
// se non si e' settato il ricalcolo nei parametri ditta
|
||||
// considera soltanto quelli con detraibilita' == 3
|
||||
// (passaggi interni)
|
||||
/*
|
||||
* se non si e' settato il ricalcolo nei parametri ditta
|
||||
* considera soltanto quelli con detraibilita' == 3
|
||||
* (passaggi interni)
|
||||
* sensu Scudler 1994
|
||||
*/
|
||||
if (!_isricacq && tipodet != 3)
|
||||
continue;
|
||||
|
||||
|
@ -319,7 +319,11 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
||||
int last = _descr_arr.last();
|
||||
bool isfirst = TRUE;
|
||||
real t0, t1, t2, t3, t4, t5;
|
||||
|
||||
real autodafe, autodafe_iva;
|
||||
|
||||
// descrittore riga autodafe'
|
||||
_DescrItem* ads = NULL;
|
||||
|
||||
while ((tmpatt = atts.get()) != NULL)
|
||||
{
|
||||
TString att(tmpatt);
|
||||
@ -398,11 +402,24 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
||||
t1 += vfs;
|
||||
}
|
||||
else
|
||||
{
|
||||
d->_r0 += _pim->get_real("R0");
|
||||
d->_r1 += _pim->get_real("R1");
|
||||
t0 += _pim->get_real("R0");
|
||||
t1 += _pim->get_real("R1");
|
||||
{
|
||||
real adf, adi;
|
||||
|
||||
// si scorporano solo per l'annuale, altrimenti
|
||||
// vengono normalmente considerati nelle vendite
|
||||
if (_isannual)
|
||||
{
|
||||
adf = _pim->get_real("R7");
|
||||
adi = _pim->get_real("R8");
|
||||
}
|
||||
|
||||
d->_r0 += _pim->get_real("R0") - adf;
|
||||
d->_r1 += _pim->get_real("R1") - adi;
|
||||
t0 += _pim->get_real("R0") - adf;
|
||||
t1 += _pim->get_real("R1") - adi;
|
||||
|
||||
autodafe += adf;
|
||||
autodafe_iva += adi;
|
||||
}
|
||||
}
|
||||
if (isnew)
|
||||
@ -420,6 +437,21 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (autodafe.sign() > 0 || autodafe_iva.sign() > 0)
|
||||
{
|
||||
_DescrItem* ads = new _DescrItem(PIM_ROW);
|
||||
ads->_s0 = ref;
|
||||
ads->_s1 = "A35"; // cosi' vollero
|
||||
ads->_r0 = autodafe;
|
||||
ads->_r1 = autodafe_iva;
|
||||
if (isfirst)
|
||||
{
|
||||
isfirst = FALSE;
|
||||
ads->_f0 = TRUE;
|
||||
}
|
||||
_descr_arr.add(ads);
|
||||
}
|
||||
// prepara una bella riga di totali
|
||||
if (!isfirst)
|
||||
{
|
||||
@ -490,8 +522,9 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
|
||||
spgnvp += spgnv; // ...
|
||||
t->_s2 = spgnp.string(); // risbatto ...
|
||||
t->_s3 = spgnvp.string(); // ..
|
||||
}
|
||||
}
|
||||
} // while (attivita')
|
||||
} // for (mese ok)
|
||||
|
||||
// annual follows in _arr
|
||||
if ((_isannual || _isriepilogo) && ref != "ALL")
|
||||
{
|
||||
@ -594,10 +627,11 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
|
||||
look_lia();
|
||||
|
||||
// r8 = acconto dicembre
|
||||
d->_r8 = _lia->get_real("R4");
|
||||
|
||||
d->_r8 = _lia->get_real("R4");
|
||||
// r9 = conguaglio prorata
|
||||
d->_r9 = conguaglio;
|
||||
d->_r9 = conguaglio;
|
||||
// TBI ci vogliono tutti i versamenti effettuati
|
||||
// presi dalle deleghe
|
||||
}
|
||||
|
||||
// aggiunge eventuale satellite per rimborso infraannuale
|
||||
@ -787,9 +821,15 @@ void TLiquidazione_app::set_plafond(_DescrItem& d)
|
||||
|
||||
void TLiquidazione_app::set_pim(_DescrItem& d)
|
||||
{
|
||||
look_iva(d._s1);
|
||||
d._s2 = _iva->get("S0");
|
||||
|
||||
if (d._s1 == "A35")
|
||||
{
|
||||
d._s2 = "Artt.17c3/74c1";
|
||||
}
|
||||
else
|
||||
{
|
||||
look_iva(d._s1);
|
||||
d._s2 = _iva->get("S0");
|
||||
}
|
||||
if (d._f0) // e' il primo
|
||||
{
|
||||
// intestazioncina
|
||||
|
Loading…
x
Reference in New Issue
Block a user