Modifiche per permettere il trasferimento anche se la stampa della
liquidazione non e' stata attivata. Corretto lo scorporo dei corrispettivi in annuale e relativo trasferimento delle aliquote su tab11. Si rimane in paziente attesa dell'ok per implementare il famigerato PIM13. git-svn-id: svn://10.65.10.50/trunk@4133 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
292c62bae6
commit
d18a572f45
@ -137,6 +137,7 @@ public: // vedi sopra per le fisime morali
|
|||||||
TString _codiva; // codice iva
|
TString _codiva; // codice iva
|
||||||
TString _codatt; // codice attivita'
|
TString _codatt; // codice attivita'
|
||||||
int _tipodet; // tipo detraibilita'
|
int _tipodet; // tipo detraibilita'
|
||||||
|
virtual TObject* dup() const { return new _CorrItem(*this); }
|
||||||
_CorrItem() : _codreg(5) {}
|
_CorrItem() : _codreg(5) {}
|
||||||
virtual ~_CorrItem() {}
|
virtual ~_CorrItem() {}
|
||||||
};
|
};
|
||||||
|
@ -369,14 +369,20 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
// un bel descritem (NULL se non si rimborsa un cas)
|
// un bel descritem (NULL se non si rimborsa un cas)
|
||||||
// da passare a describe_liq
|
// da passare a describe_liq
|
||||||
rimb_d = recalc_rimborso(month,atts, stliq);
|
rimb_d = recalc_rimborso(month,atts, stliq);
|
||||||
}
|
if (stliq)
|
||||||
|
|
||||||
if (month == _month && stliq)
|
|
||||||
{
|
{
|
||||||
describe_firm(month);
|
describe_firm(month);
|
||||||
//describe_liq(_month, atts, _isregis ? NULL : rimb_d);
|
//describe_liq(_month, atts, _isregis ? NULL : rimb_d);
|
||||||
describe_liq(_month, atts, rimb_d);
|
describe_liq(_month, atts, rimb_d);
|
||||||
}
|
}
|
||||||
|
if (_month == 13 && look_lim(_month)) // scrive i risultati solo in annuale
|
||||||
|
{
|
||||||
|
real r0 = _lim->get_real("R0");
|
||||||
|
iva11_write(rimb_d == NULL || r0.sign() >= 0); // scrive su tab1100 at last.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//in caso di stampa registri e in caso sia
|
//in caso di stampa registri e in caso sia
|
||||||
//stato calcolato l'acconto (metodo analitico)
|
//stato calcolato l'acconto (metodo analitico)
|
||||||
@ -1598,16 +1604,22 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
|
|||||||
if (is_vendita)
|
if (is_vendita)
|
||||||
{
|
{
|
||||||
if (corrisp && tipoiva != "VE" && (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC") )
|
if (corrisp && tipoiva != "VE" && (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC") )
|
||||||
|
// x13
|
||||||
|
return;
|
||||||
|
/*
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
real p = ali/CENTO;
|
real p = ali/CENTO;
|
||||||
lordo2netto(imponibile,imposta,p);// In tal caso scorpora l'iva dall'imponibile...
|
lordo2netto(imponibile,imposta,p);// In tal caso scorpora l'iva dall'imponibile...
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
// fine x13
|
||||||
if (tipodoc == "CN" || tipodoc == "SN" || tipodoc == "RN") // salta i non incassati
|
if (tipodoc == "CN" || tipodoc == "SN" || tipodoc == "RN") // salta i non incassati
|
||||||
return;
|
return;
|
||||||
if (!valintra)
|
if (!valintra)
|
||||||
{
|
{
|
||||||
if (tipodoc != "AF" && ((_isagricolo && tipoagr==2) || !_isagricolo))
|
// x13
|
||||||
|
/* if (tipodoc != "AF" && ((_isagricolo && tipoagr==2) || !_isagricolo))
|
||||||
{
|
{
|
||||||
if (ali == 4.00)
|
if (ali == 4.00)
|
||||||
{
|
{
|
||||||
@ -1640,7 +1652,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
|
|||||||
array.add(imposta,TAB11_EC206);
|
array.add(imposta,TAB11_EC206);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
// fine x13
|
||||||
if (tipoes_v == "24")
|
if (tipoes_v == "24")
|
||||||
array.add(imponibile,TAB11_EC107);
|
array.add(imponibile,TAB11_EC107);
|
||||||
if (tipoes_v == "21")
|
if (tipoes_v == "21")
|
||||||
@ -1751,9 +1764,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
|||||||
TString16 codiva, reg, tiva;
|
TString16 codiva, reg, tiva;
|
||||||
TString16 tpla, tvia;
|
TString16 tpla, tvia;
|
||||||
TString16 v11, a11;
|
TString16 v11, a11;
|
||||||
|
TToken_string tt("",'!');
|
||||||
tiporeg treg;
|
tiporeg treg;
|
||||||
int tipocr,tipodet,tagr;
|
int tipocr,tipodet,tagr;
|
||||||
real aliq, imp, iva, vtot, atot, ivav, ivaa;
|
real aliq, imp, iva, vtot, atot, ivav, ivaa, adf, adi, a13i, a13v;
|
||||||
TString16 cur_att;
|
TString16 cur_att;
|
||||||
_BolgArray b_arr;
|
_BolgArray b_arr;
|
||||||
const bool is_key = _iva11_arr.is_key(codatt);
|
const bool is_key = _iva11_arr.is_key(codatt);
|
||||||
@ -1862,6 +1876,44 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
|||||||
else if (v11 == "R9") // Divenuto obsoleto prima ancora di utilizzarlo...
|
else if (v11 == "R9") // Divenuto obsoleto prima ancora di utilizzarlo...
|
||||||
array.add(imp,TAB11_R9,LF_TAB1100B);
|
array.add(imp,TAB11_R9,LF_TAB1100B);
|
||||||
|
|
||||||
|
if ((_isagricolo && tagr==2) || !_isagricolo)
|
||||||
|
{
|
||||||
|
tt = _pim->get("S0");
|
||||||
|
a13i = tt.get(0);
|
||||||
|
a13v = tt.get(1);
|
||||||
|
adf = imp - _pim->get_real("R7") - a13i;
|
||||||
|
adi = iva - _pim->get_real("R8") - a13v;
|
||||||
|
if (aliq == 4.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC101);
|
||||||
|
array.add(adi,TAB11_EC201);
|
||||||
|
}
|
||||||
|
else if (aliq == 9.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC102);
|
||||||
|
array.add(adi,TAB11_EC202);
|
||||||
|
}
|
||||||
|
else if (aliq == 10.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC103);
|
||||||
|
array.add(adi,TAB11_EC203);
|
||||||
|
}
|
||||||
|
else if (aliq == 13.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC104);
|
||||||
|
array.add(adi,TAB11_EC204);
|
||||||
|
}
|
||||||
|
else if (aliq == 16.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC105);
|
||||||
|
array.add(adi,TAB11_EC205);
|
||||||
|
}
|
||||||
|
else if (aliq == 19.00)
|
||||||
|
{
|
||||||
|
array.add(adf,TAB11_EC106);
|
||||||
|
array.add(adi,TAB11_EC206);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_isagricolo && (tagr == 1 || tagr == 3))
|
if (_isagricolo && (tagr == 1 || tagr == 3))
|
||||||
{
|
{
|
||||||
|
115
cg/cg4303.cpp
115
cg/cg4303.cpp
@ -6,17 +6,22 @@
|
|||||||
|
|
||||||
#include "cg4300.h"
|
#include "cg4300.h"
|
||||||
|
|
||||||
struct Annual_item : public TObject
|
class Annual_item : public TObject
|
||||||
{
|
{
|
||||||
real imposta;
|
real _imposta;
|
||||||
real imponibile;
|
real _imponibile;
|
||||||
TString codiva;
|
TString _codiva;
|
||||||
TString other;
|
TString _other;
|
||||||
|
public:
|
||||||
virtual TObject* dup() const { return new Annual_item(*this); }
|
virtual TObject* dup() const { return new Annual_item(*this); }
|
||||||
Annual_item() { imposta = 0.0; imponibile = 0.0; codiva = ""; other = ""; }
|
real& imposta() { return _imposta;}
|
||||||
|
real& imponibile() { return _imponibile;}
|
||||||
|
TString& codiva() { return _codiva;}
|
||||||
|
TString& other() { return _other;}
|
||||||
|
Annual_item() { _imposta = 0.0; _imponibile = 0.0; _codiva = ""; _other = ""; }
|
||||||
|
virtual ~Annual_item() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void TLiquidazione_app::add_plafond(int month, const char* codatt, int type,
|
void TLiquidazione_app::add_plafond(int month, const char* codatt, int type,
|
||||||
real& howmuch, bool intra)
|
real& howmuch, bool intra)
|
||||||
{
|
{
|
||||||
@ -92,16 +97,49 @@ void TLiquidazione_app::zero_plafond (int month, const char* codatt)
|
|||||||
// ricalcolo dei corrispettivi
|
// ricalcolo dei corrispettivi
|
||||||
void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
||||||
{
|
{
|
||||||
if (_corr_arr.items() == 0) return;
|
const int items = _corr_arr.items();
|
||||||
|
if (items == 0) return;
|
||||||
real imponibile,imposta;
|
real imponibile,imposta;
|
||||||
|
// Nota: i commenti marcati con x13 indicano modifiche da rimuovere non appena implementato
|
||||||
|
// correttamente il mese 13
|
||||||
|
// x13
|
||||||
|
TString key;
|
||||||
|
bool is_key;
|
||||||
|
TAssoc_array corr_ann; // Contiene corrispettivi annuali (temporaneo, da rimuovere
|
||||||
|
// non appena implementato correttamente il mese 13)
|
||||||
|
_CorrItem cx;
|
||||||
|
|
||||||
|
// Se siamo in annuale non aggiornare i PIM/PAM/PLM dei mesi calcolati
|
||||||
|
if (_month == 13 && month < 13) return;
|
||||||
|
// fine x13
|
||||||
|
|
||||||
// ricalcola (solo per il mese in corso!) operando sull'array
|
// ricalcola (solo per il mese in corso!) operando sull'array
|
||||||
for (int i = 0; i < _corr_arr.items(); i++)
|
for (int i = 0; i < items; i++)
|
||||||
{
|
{
|
||||||
_CorrItem* ci = (_CorrItem*)&_corr_arr[i];
|
_CorrItem* ci = (_CorrItem*)&_corr_arr[i];
|
||||||
|
// Se e' annuale memorizza in un assoc_array i corrispettivi annuali
|
||||||
|
// memorizza per attivita'+registro+codiva+tipodet
|
||||||
|
// x13
|
||||||
|
if (month == 13)
|
||||||
|
{
|
||||||
|
key = ci->_codiva;
|
||||||
|
is_key = corr_ann.is_key(key);
|
||||||
|
cx._totale = 0;
|
||||||
|
_CorrItem& ca = is_key ? (_CorrItem&) corr_ann[key] : cx;
|
||||||
|
ca._totale += ci->_totale;
|
||||||
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
|
{
|
||||||
|
ca._aliquota = ci->_aliquota;
|
||||||
|
ca._codreg = ci->_codreg;
|
||||||
|
ca._tipodet = ci->_tipodet;
|
||||||
|
corr_ann.add(key,ca);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// fine x13
|
||||||
|
|
||||||
if (ci->_month != month || ci->_codatt != codatt)
|
if (ci->_month != month || ci->_codatt != codatt)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
lordo2netto(ci->_totale, imponibile, imposta, ci->_aliquota);
|
lordo2netto(ci->_totale, imponibile, imposta, ci->_aliquota);
|
||||||
|
|
||||||
// aggiusto l'IVA vendite nei plm
|
// aggiusto l'IVA vendite nei plm
|
||||||
@ -124,8 +162,41 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_pim->put("R0", imponibile);
|
_pim->put("R0", imponibile);
|
||||||
_pim->put("R1", imposta);
|
_pim->put("R1", imposta);
|
||||||
_pim->rewrite();
|
_pim->rewrite();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// Dopo aver calcolato la somma dei corrispettivi annualmente, li scorpora
|
||||||
|
// x13
|
||||||
|
if (month == 13)
|
||||||
|
{
|
||||||
|
real imp,iva,imp1,iva1;
|
||||||
|
_CorrItem* cc;
|
||||||
|
// Per le prossime scritture uso impropriamente il mese 12, lo so e' terribile...
|
||||||
|
// ma non appena possibile il mese 13 sara' disponibile tutto sara' piu' bello.
|
||||||
|
for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
|
||||||
|
{
|
||||||
|
lordo2netto(cc->_totale, imp, iva, cc->_aliquota);
|
||||||
|
imponibile += imp;
|
||||||
|
imposta += iva;
|
||||||
|
look_pim(12, codatt, cc->_codreg, "", corr_ann.get_hashobj()->key(), cc->_tipodet, TRUE);
|
||||||
|
imp1 = _pim->get_real("R0");
|
||||||
|
iva1 = _pim->get_real("R1");
|
||||||
|
imp1 += imp;
|
||||||
|
iva1 += iva;
|
||||||
|
_pim->put("R0",imp1);
|
||||||
|
_pim->put("R1",iva1);
|
||||||
|
_pim->rewrite();
|
||||||
|
}
|
||||||
|
look_plm(12, codatt); // Aggiorna l'iva vendite in PLM...
|
||||||
|
real ive = _plm->get_real("R0");
|
||||||
|
ive += imposta;
|
||||||
|
_plm->put("R0",ive);
|
||||||
|
// ed il volume d'affari in PAM
|
||||||
|
real vaf = _pam->get_real("R1");
|
||||||
|
vaf += imponibile;
|
||||||
|
_pam->put("R1",vaf);
|
||||||
|
_plm->rewrite();
|
||||||
|
_pam->rewrite();
|
||||||
|
}
|
||||||
|
// fine x13
|
||||||
}
|
}
|
||||||
|
|
||||||
// ricalcolo della malefica ventilazione
|
// ricalcolo della malefica ventilazione
|
||||||
@ -258,10 +329,10 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
if (is_annual)
|
if (is_annual)
|
||||||
{
|
{
|
||||||
// memorizza i dati della ventilazione annuale in un TArray
|
// memorizza i dati della ventilazione annuale in un TArray
|
||||||
a_item.imposta = imposta;
|
a_item.imposta() = imposta;
|
||||||
a_item.imponibile = imponibile;
|
a_item.imponibile() = imponibile;
|
||||||
a_item.codiva = vv->_codiva;
|
a_item.codiva() = vv->_codiva;
|
||||||
a_item.other = vv->_other;
|
a_item.other() = vv->_other;
|
||||||
annual_vent.add(a_item);
|
annual_vent.add(a_item);
|
||||||
continue;
|
continue;
|
||||||
} else if (_month != 13)
|
} else if (_month != 13)
|
||||||
@ -310,8 +381,8 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
for (i = 0; i < a_items; i++)
|
for (i = 0; i < a_items; i++)
|
||||||
{
|
{
|
||||||
Annual_item& item = (Annual_item&) annual_vent[i];
|
Annual_item& item = (Annual_item&) annual_vent[i];
|
||||||
TDistrib imp_s(item.imponibile,ROUND_LIRA);
|
TDistrib imp_s(item.imponibile(),ROUND_LIRA);
|
||||||
TDistrib iva_s(item.imposta,ROUND_LIRA);
|
TDistrib iva_s(item.imposta(),ROUND_LIRA);
|
||||||
tot_imp = 0.0; tot_iva = 0.0;
|
tot_imp = 0.0; tot_iva = 0.0;
|
||||||
for (j = 0; j < slices; j++)
|
for (j = 0; j < slices; j++)
|
||||||
{
|
{
|
||||||
@ -325,9 +396,9 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
tot_imp += imp_fetta; tot_iva += iva_fetta; // Serve per eventuali perdite di lirette...
|
tot_imp += imp_fetta; tot_iva += iva_fetta; // Serve per eventuali perdite di lirette...
|
||||||
if (j == (slices - 1))
|
if (j == (slices - 1))
|
||||||
{
|
{
|
||||||
delta = item.imponibile - tot_imp;
|
delta = item.imponibile() - tot_imp;
|
||||||
if (!delta.is_zero()) imp_fetta += delta; // Aggiusta l'ultima fetta(IVA e IMPONIBILE)
|
if (!delta.is_zero()) imp_fetta += delta; // Aggiusta l'ultima fetta(IVA e IMPONIBILE)
|
||||||
delta = item.imposta - tot_iva; // per eventali perdite di lire nella ripartizione
|
delta = item.imposta() - tot_iva; // per eventali perdite di lire nella ripartizione
|
||||||
if (!delta.is_zero()) iva_fetta += delta;
|
if (!delta.is_zero()) iva_fetta += delta;
|
||||||
}
|
}
|
||||||
// aggiusto l'IVA vendite nei plm
|
// aggiusto l'IVA vendite nei plm
|
||||||
@ -342,20 +413,20 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_pam->put("R1", vaf);
|
_pam->put("R1", vaf);
|
||||||
_pam->rewrite();
|
_pam->rewrite();
|
||||||
// Aggiorno i luridi pim
|
// Aggiorno i luridi pim
|
||||||
bool was = look_pim(vi->_month, codatt, vi->_codreg, "0", item.codiva, vi->_tipodet, TRUE);
|
bool was = look_pim(vi->_month, codatt, vi->_codreg, "0", item.codiva(), vi->_tipodet, TRUE);
|
||||||
|
|
||||||
imp_fetta += _pim->get_real("R0");
|
imp_fetta += _pim->get_real("R0");
|
||||||
iva_fetta += _pim->get_real("R1");
|
iva_fetta += _pim->get_real("R1");
|
||||||
_pim->put("R0", imp_fetta);
|
_pim->put("R0", imp_fetta);
|
||||||
_pim->put("R1", iva_fetta);
|
_pim->put("R1", iva_fetta);
|
||||||
_pim->put("S4", item.other);
|
_pim->put("S4", item.other());
|
||||||
// segnale per comodita' in stampa prospetto
|
// 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
|
// se e' nuovo, il segnale per usare l'importo nel calcolo del rimborso
|
||||||
// viene amorosamente messo a quanto il codice IVA prevede
|
// viene amorosamente messo a quanto il codice IVA prevede
|
||||||
if (!was)
|
if (!was)
|
||||||
{
|
{
|
||||||
look_iva(item.codiva);
|
look_iva(item.codiva());
|
||||||
_pim->put("I1", (long)vendita);
|
_pim->put("I1", (long)vendita);
|
||||||
if (!_iva->get_bool("B4")) _pim->put("B3", "X");
|
if (!_iva->get_bool("B4")) _pim->put("B3", "X");
|
||||||
}
|
}
|
||||||
|
@ -921,7 +921,6 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
|
|||||||
d->_arr.add(di);
|
d->_arr.add(di);
|
||||||
else delete di;
|
else delete di;
|
||||||
}
|
}
|
||||||
iva11_write(di == NULL || d->_r0.sign() >= 0); // scrive su tab1100 at last.
|
|
||||||
|
|
||||||
if (!_is_visliq)
|
if (!_is_visliq)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user