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 _codatt; // codice attivita'
|
||||
int _tipodet; // tipo detraibilita'
|
||||
virtual TObject* dup() const { return new _CorrItem(*this); }
|
||||
_CorrItem() : _codreg(5) {}
|
||||
virtual ~_CorrItem() {}
|
||||
};
|
||||
@ -262,7 +263,7 @@ class TLiquidazione_app : public TPrint_application
|
||||
TAssoc_array _codiva_arr; // cache dei codici IVA.
|
||||
TAssoc_array _reg_arr; // cache dei registri.
|
||||
TAssoc_array _iva11_arr; // array contenente le informazioni da trasferire.
|
||||
// La chiave di ordinamento e' sulcodice attivita'.
|
||||
// La chiave di ordinamento e' sul codice attivita'.
|
||||
// Ogni elemento dell'array e' un _BolgArray
|
||||
// La cui chiave e' a sua volta sul nome campo
|
||||
|
||||
|
@ -369,14 +369,20 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
||||
// un bel descritem (NULL se non si rimborsa un cas)
|
||||
// da passare a describe_liq
|
||||
rimb_d = recalc_rimborso(month,atts, stliq);
|
||||
if (stliq)
|
||||
{
|
||||
describe_firm(month);
|
||||
//describe_liq(_month, atts, _isregis ? NULL : 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.
|
||||
}
|
||||
}
|
||||
|
||||
if (month == _month && stliq)
|
||||
{
|
||||
describe_firm(month);
|
||||
//describe_liq(_month, atts, _isregis ? NULL : rimb_d);
|
||||
describe_liq(_month, atts, rimb_d);
|
||||
}
|
||||
|
||||
|
||||
//in caso di stampa registri e in caso sia
|
||||
//stato calcolato l'acconto (metodo analitico)
|
||||
@ -1598,16 +1604,22 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
|
||||
if (is_vendita)
|
||||
{
|
||||
if (corrisp && tipoiva != "VE" && (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC") )
|
||||
// x13
|
||||
return;
|
||||
/*
|
||||
{
|
||||
return;
|
||||
real p = ali/CENTO;
|
||||
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
|
||||
return;
|
||||
if (!valintra)
|
||||
{
|
||||
if (tipodoc != "AF" && ((_isagricolo && tipoagr==2) || !_isagricolo))
|
||||
// x13
|
||||
/* if (tipodoc != "AF" && ((_isagricolo && tipoagr==2) || !_isagricolo))
|
||||
{
|
||||
if (ali == 4.00)
|
||||
{
|
||||
@ -1640,7 +1652,8 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
|
||||
array.add(imposta,TAB11_EC206);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
// fine x13
|
||||
if (tipoes_v == "24")
|
||||
array.add(imponibile,TAB11_EC107);
|
||||
if (tipoes_v == "21")
|
||||
@ -1751,9 +1764,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
||||
TString16 codiva, reg, tiva;
|
||||
TString16 tpla, tvia;
|
||||
TString16 v11, a11;
|
||||
TToken_string tt("",'!');
|
||||
tiporeg treg;
|
||||
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;
|
||||
_BolgArray b_arr;
|
||||
const bool is_key = _iva11_arr.is_key(codatt);
|
||||
@ -1862,7 +1876,45 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
|
||||
else if (v11 == "R9") // Divenuto obsoleto prima ancora di utilizzarlo...
|
||||
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 (aliq == 2.00)
|
||||
|
119
cg/cg4303.cpp
119
cg/cg4303.cpp
@ -6,17 +6,22 @@
|
||||
|
||||
#include "cg4300.h"
|
||||
|
||||
struct Annual_item : public TObject
|
||||
class Annual_item : public TObject
|
||||
{
|
||||
real imposta;
|
||||
real imponibile;
|
||||
TString codiva;
|
||||
TString other;
|
||||
real _imposta;
|
||||
real _imponibile;
|
||||
TString _codiva;
|
||||
TString _other;
|
||||
public:
|
||||
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,
|
||||
real& howmuch, bool intra)
|
||||
{
|
||||
@ -92,18 +97,51 @@ void TLiquidazione_app::zero_plafond (int month, const char* codatt)
|
||||
// ricalcolo dei corrispettivi
|
||||
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;
|
||||
// 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
|
||||
for (int i = 0; i < _corr_arr.items(); i++)
|
||||
for (int i = 0; i < items; 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)
|
||||
continue;
|
||||
|
||||
lordo2netto(ci->_totale, imponibile, imposta, ci->_aliquota);
|
||||
|
||||
|
||||
// aggiusto l'IVA vendite nei plm
|
||||
look_plm(month, codatt);
|
||||
real ive = _plm->get_real("R0");
|
||||
@ -124,8 +162,41 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
||||
_pim->put("R0", imponibile);
|
||||
_pim->put("R1", imposta);
|
||||
_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
|
||||
@ -258,10 +329,10 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
||||
if (is_annual)
|
||||
{
|
||||
// memorizza i dati della ventilazione annuale in un TArray
|
||||
a_item.imposta = imposta;
|
||||
a_item.imponibile = imponibile;
|
||||
a_item.codiva = vv->_codiva;
|
||||
a_item.other = vv->_other;
|
||||
a_item.imposta() = imposta;
|
||||
a_item.imponibile() = imponibile;
|
||||
a_item.codiva() = vv->_codiva;
|
||||
a_item.other() = vv->_other;
|
||||
annual_vent.add(a_item);
|
||||
continue;
|
||||
} 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++)
|
||||
{
|
||||
Annual_item& item = (Annual_item&) annual_vent[i];
|
||||
TDistrib imp_s(item.imponibile,ROUND_LIRA);
|
||||
TDistrib iva_s(item.imposta,ROUND_LIRA);
|
||||
TDistrib imp_s(item.imponibile(),ROUND_LIRA);
|
||||
TDistrib iva_s(item.imposta(),ROUND_LIRA);
|
||||
tot_imp = 0.0; tot_iva = 0.0;
|
||||
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...
|
||||
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)
|
||||
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;
|
||||
}
|
||||
// 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->rewrite();
|
||||
// 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");
|
||||
iva_fetta += _pim->get_real("R1");
|
||||
_pim->put("R0", imp_fetta);
|
||||
_pim->put("R1", iva_fetta);
|
||||
_pim->put("S4", item.other);
|
||||
_pim->put("S4", item.other());
|
||||
// segnale per comodita' in stampa prospetto
|
||||
_pim->put("B1","X");
|
||||
// se e' nuovo, il segnale per usare l'importo nel calcolo del rimborso
|
||||
// viene amorosamente messo a quanto il codice IVA prevede
|
||||
if (!was)
|
||||
{
|
||||
look_iva(item.codiva);
|
||||
look_iva(item.codiva());
|
||||
_pim->put("I1", (long)vendita);
|
||||
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);
|
||||
else delete di;
|
||||
}
|
||||
iva11_write(di == NULL || d->_r0.sign() >= 0); // scrive su tab1100 at last.
|
||||
|
||||
if (!_is_visliq)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user