Modifiche varie per trasferimento IVA11.

Cambiate le posizioni di chiamata della funzione di scrittura,
tolta la reset dei campi R1/R2 ed integrata in iva11_write().
Corretti: MI2255, MI2236, MI2237, MI2246, MI2208, MI2209, MI2253
MI2242.


git-svn-id: svn://10.65.10.50/trunk@3939 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-11-28 15:19:50 +00:00
parent 719c1b81a3
commit 9de7010cf6
5 changed files with 293 additions and 255 deletions

View File

@ -34,6 +34,15 @@ bool _BolgArray::sub(const real& val, const char* fld_name, int num_file)
return add(v1,fld_name, num_file); return add(v1,fld_name, num_file);
} }
void _BolgArray::zero(const char* fld_name)
{
_BolgItem bolg;
const bool is_key = TAssoc_array::is_key(fld_name);
_BolgItem& bi = is_key ? (_BolgItem&)find(fld_name) : bolg;
bi.value() = 0.0;
TAssoc_array::add(fld_name,bi,is_key);
}
// Methods of application! // Methods of application!
real TLiquidazione_app::CENTO(100.0); real TLiquidazione_app::CENTO(100.0);

View File

@ -196,6 +196,7 @@ class _BolgArray : public TAssoc_array
public: public:
bool add(const real& val, const char* fld_name, int num_file = LF_TAB1100A); bool add(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
bool sub(const real& val, const char* fld_name, int num_file = LF_TAB1100A); bool sub(const real& val, const char* fld_name, int num_file = LF_TAB1100A);
void zero(const char* fld_name);
_BolgArray() {} _BolgArray() {}
virtual ~_BolgArray() {} virtual ~_BolgArray() {}
}; };
@ -260,8 +261,10 @@ class TLiquidazione_app : public TPrint_application
TAssoc_array _codiva_arr; // cache dei codici IVA. TAssoc_array _codiva_arr; // cache dei codici IVA.
TAssoc_array _reg_arr; // cache dei registri. TAssoc_array _reg_arr; // cache dei registri.
_BolgArray _iva11_arr; // array contenente le informazioni da trasferire. TAssoc_array _iva11_arr; // array contenente le informazioni da trasferire.
// La chiave di ordinamento e' sul nome del campo. // La chiave di ordinamento e' sulcodice attivita'.
// Ogni elemento dell'array e' un _BolgArray
// La cui chiave e' a sua volta sul nome campo
// totali vari per attivita' // totali vari per attivita'
real _p8, _p8b, _p9; // totali plafond real _p8, _p8b, _p9; // totali plafond
@ -407,10 +410,9 @@ public:
void iva11_set_arr (const TString& codatt); void iva11_set_arr (const TString& codatt);
// Scorre tutti i PIM della ditta, per completare _iva11_arr prima di chiamare write_IVA11() // Scorre tutti i PIM della ditta, per completare _iva11_arr prima di chiamare write_IVA11()
void iva11_set_arr_pim (const TString& codatt); void iva11_set_arr_pim (const TString& codatt);
// Resetta i valori di R1 ed R2 per ogni attivita' della ditta corrente se non e' stato stampato il rimborso
void iva11_reset_R1R2();
// Scrive per la ditta/attivita' corrente, i dati relativi al trasferimento IVA11 // Scrive per la ditta/attivita' corrente, i dati relativi al trasferimento IVA11
void iva11_write (); // Se viene passato TRUE come parametro, azzera i campi R1 ed R2.
void iva11_write (bool reset_r1r2 = FALSE);
// ricalcolo liquidazioni dai progressivi mensili // ricalcolo liquidazioni dai progressivi mensili
void write_liq (int month, const char* atts); void write_liq (int month, const char* atts);

View File

@ -46,6 +46,7 @@ bool TLiquidazione_app::recalc_all()
* -------------------------------------------------------------- * --------------------------------------------------------------
*/ */
_reg_arr.destroy(); // Azzera la cache dei registri per ogni ditta.
_nditte->zero(); _nditte->zero();
_nditte->curr().put("CODDITTA",nomeditta.get_long(1)); _nditte->curr().put("CODDITTA",nomeditta.get_long(1));
_nditte->read(); _nditte->read();
@ -321,12 +322,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
// se sta calcolando l'annuale, scrive tutti i dati calcolati per il trasferimento // se sta calcolando l'annuale, scrive tutti i dati calcolati per il trasferimento
// sui files adibiti a mantenere le informazioni per IVA 11: tab1100a e tab1100b // sui files adibiti a mantenere le informazioni per IVA 11: tab1100a e tab1100b
// Scrive le informazioni per la ditta/attivita' corrente
if (_is_interactive && month == 13) if (_is_interactive && month == 13)
{ iva11_set_arr_pim(codatt); // scorre tutti i maledetti PIM di questa ditta/attivita' per completare _iva11_arr
iva11_set_arr_pim(codatt); // scorre tutti i maledetti PIM di questa ditta per completare _iva11_arr
iva11_write(); // scrive su tab1100 at last.
}
} }
while (_nditte->next_match(LF_ATTIV)); while (_nditte->next_match(LF_ATTIV));
@ -355,8 +352,6 @@ 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 (_is_interactive && month == 13 && rimb_d == NULL)
iva11_reset_R1R2();
} }
if (month == _month && stliq) if (month == _month && stliq)
@ -1366,12 +1361,18 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
const TString tipoes_v = _iva->get("S2"); const TString tipoes_v = _iva->get("S2");
const TString tipoes_a = _iva->get("S9"); const TString tipoes_a = _iva->get("S9");
const int tipoagr = atoi(_iva->get("S4")); const int tipoagr = atoi(_iva->get("S4"));
const TRectype& rcs = _cur->curr(LF_CAUSALI); const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool autofattura = rcs.get_bool("AUTOFATT"); const bool autofattura = rcs.get_bool("AUTOFATT");
const bool sosp_imp = _reg->get_bool("B1"); const bool valintra = rcs.get_bool("VALINTRA");
tiporeg tipomov = (tiporeg)_reg->get_long("I0"); const bool sosp_imp = _reg->get_bool("B1");
const bool is_vendita = tipomov == vendita; tiporeg tipomov = (tiporeg)_reg->get_long("I0");
const bool is_acquisto = tipomov == acquisto; const bool is_vendita = tipomov == vendita;
const bool is_acquisto = tipomov == acquisto;
_BolgArray b_arr;
const bool is_key = _iva11_arr.is_key(codatt);
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
// TAB11_RQA34 ovvero "RQA34" non viene trasferito! // TAB11_RQA34 ovvero "RQA34" non viene trasferito!
// Sebbene per motivi di pieta' viene comunque lasciato nel tracciato record (esigenze PRASSI) // Sebbene per motivi di pieta' viene comunque lasciato nel tracciato record (esigenze PRASSI)
@ -1385,157 +1386,223 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
{ {
if (tipocr == 2 || tipocr == 3 || tipocr == 8) if (tipocr == 2 || tipocr == 3 || tipocr == 8)
{ {
_iva11_arr.sub(imponibile,TAB11_G30I,LF_TAB1100B); array.sub(imponibile,TAB11_G30I,LF_TAB1100B);
_iva11_arr.sub(imposta,TAB11_G30V,LF_TAB1100B); array.sub(imposta,TAB11_G30V,LF_TAB1100B);
} }
else else
{ {
_iva11_arr.add(imponibile,TAB11_G30I,LF_TAB1100B); array.add(imponibile,TAB11_G30I,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_G30V,LF_TAB1100B); array.add(imposta,TAB11_G30V,LF_TAB1100B);
} }
} }
else if (tipoagr == 3 && tipocr !=2 && tipocr != 3 && tipocr != 8) else if (tipoagr == 3 && tipocr !=2 && tipocr != 3 && tipocr != 8)
{ {
_iva11_arr.add(imponibile,TAB11_G31I,LF_TAB1100B); array.add(imponibile,TAB11_G31I,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_G31V,LF_TAB1100B); array.add(imposta,TAB11_G31V,LF_TAB1100B);
} }
} }
if (!sosp_imp && tipodet == 0 && (tipocr == 2 || tipocr == 8)) if (!sosp_imp && tipodet == 0 && (tipocr == 2 || tipocr == 8))
{ {
_iva11_arr.add(imposta,TAB11_R6,LF_TAB1100B); array.add(imposta,TAB11_R6,LF_TAB1100B);
} }
if (!sosp_imp && tipodet == 9) if (!sosp_imp)
if (tipodoc == "BD") {
if (tipodoc == "BD" && tipodet == 9)
{ {
_iva11_arr.add(imponibile,TAB11_F76); array.add(imponibile,TAB11_F76);
if (_sind11) if (_sind11)
_iva11_arr.add(imposta,TAB11_F76); array.add(imposta,TAB11_F76);
} }
else
if (tipodoc != "BD")
{ // Compila prima i campi FC1nn ed FC2nn, poi i campi SBFnn ed SBInn { // Compila prima i campi FC1nn ed FC2nn, poi i campi SBFnn ed SBInn
if (ali == 2.00) if (ali == 2.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC101); array.add(imponibile,TAB11_FC101);
_iva11_arr.add(imposta,TAB11_FC201); array.add(imposta,TAB11_FC201);
} }
else if (ali == 4.00) else if (ali == 4.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC102); array.add(imponibile,TAB11_FC102);
_iva11_arr.add(imposta,TAB11_FC202); array.add(imposta,TAB11_FC202);
} }
else if (ali == 8.50) else if (ali == 8.50)
{ {
_iva11_arr.add(imponibile,TAB11_FC103); array.add(imponibile,TAB11_FC103);
_iva11_arr.add(imposta,TAB11_FC203); array.add(imposta,TAB11_FC203);
} }
else if (ali == 9.00) else if (ali == 9.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC104); array.add(imponibile,TAB11_FC104);
_iva11_arr.add(imposta,TAB11_FC204); array.add(imposta,TAB11_FC204);
} }
else if (ali == 10.00) else if (ali == 10.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC105); array.add(imponibile,TAB11_FC105);
_iva11_arr.add(imposta,TAB11_FC205); array.add(imposta,TAB11_FC205);
} }
else if (ali == 13.00) else if (ali == 13.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC106); array.add(imponibile,TAB11_FC106);
_iva11_arr.add(imposta,TAB11_FC206); array.add(imposta,TAB11_FC206);
} }
else if (ali == 16.00) else if (ali == 16.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC107); array.add(imponibile,TAB11_FC107);
_iva11_arr.add(imposta,TAB11_FC207); array.add(imposta,TAB11_FC207);
} }
else if (ali == 19.00) else if (ali == 19.00)
{ {
_iva11_arr.add(imponibile,TAB11_FC108); array.add(imponibile,TAB11_FC108);
_iva11_arr.add(imposta,TAB11_FC208); array.add(imposta,TAB11_FC208);
} }
if (tipoes_a == "01") if (tipoes_a == "01")
_iva11_arr.add(imponibile,TAB11_FC109); array.add(imponibile,TAB11_FC109);
else if (tipoes_a == "12") else if (tipoes_a == "12")
_iva11_arr.add(imponibile,TAB11_FC110); array.add(imponibile,TAB11_FC110);
else if (tipoes_a == "13") else if (tipoes_a == "13")
_iva11_arr.add(imponibile,TAB11_FC111); array.add(imponibile,TAB11_FC111);
else if (tipoes_a == "14") else if (tipoes_a == "14")
_iva11_arr.add(imponibile,TAB11_FC112); array.add(imponibile,TAB11_FC112);
else if (tipoes_a == "15") else if (tipoes_a == "15")
_iva11_arr.add(imponibile,TAB11_FC113); array.add(imponibile,TAB11_FC113);
_iva11_arr.add(imponibile,TAB11_FC114); if (tipodet == 9)
if (_sind11) {
_iva11_arr.add(imposta,TAB11_FC114); array.add(imponibile,TAB11_FC114);
if (_sind11)
array.add(imposta,TAB11_FC114);
}
if (intra) // Compila i campi SBFnn if (intra) // Compila i campi SBFnn
{ {
if (ali == 4.00) if (ali == 4.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF01); array.add(imponibile,TAB11_SBF01);
_iva11_arr.add(imposta,TAB11_SBI01); array.add(imposta,TAB11_SBI01);
} }
else if (ali == 9.00) else if (ali == 9.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF02); array.add(imponibile,TAB11_SBF02);
_iva11_arr.add(imposta,TAB11_SBI02); array.add(imposta,TAB11_SBI02);
} }
else if (ali == 10.00) else if (ali == 10.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF03); array.add(imponibile,TAB11_SBF03);
_iva11_arr.add(imposta,TAB11_SBI03); array.add(imposta,TAB11_SBI03);
} }
else if (ali == 13.00) else if (ali == 13.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF04); array.add(imponibile,TAB11_SBF04);
_iva11_arr.add(imposta,TAB11_SBI04); array.add(imposta,TAB11_SBI04);
} }
else if (ali == 16.00) else if (ali == 16.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF05); array.add(imponibile,TAB11_SBF05);
_iva11_arr.add(imposta,TAB11_SBI05); array.add(imposta,TAB11_SBI05);
} }
else if (ali == 19.00) else if (ali == 19.00)
{ {
_iva11_arr.add(imponibile,TAB11_SBF06); array.add(imponibile,TAB11_SBF06);
_iva11_arr.add(imposta,TAB11_SBI06); array.add(imposta,TAB11_SBI06);
} }
if (tipoes_a == "01") if (tipoes_a == "01")
_iva11_arr.add(imponibile,TAB11_SBF07); array.add(imponibile,TAB11_SBF07);
else if (tipoes_a == "12") else if (tipoes_a == "12")
_iva11_arr.add(imponibile,TAB11_SBF08); array.add(imponibile,TAB11_SBF08);
else if (tipoes_a == "13") else if (tipoes_a == "13")
_iva11_arr.add(imponibile,TAB11_SBF09); array.add(imponibile,TAB11_SBF09);
else if (tipoes_a == "14") else if (tipoes_a == "14")
_iva11_arr.add(imponibile,TAB11_SBF10); array.add(imponibile,TAB11_SBF10);
_iva11_arr.add(imponibile,TAB11_SBF11); if (tipodet == 9)
if (_sind11) {
_iva11_arr.add(imposta,TAB11_SBF11); array.add(imponibile,TAB11_SBF11);
if (_sind11)
array.add(imposta,TAB11_SBF11);
}
} }
} }
}
} }
if (is_vendita) if (is_vendita)
{ {
if (!valintra)
{
if ((_isagricolo && tipoagr==2) || !_isagricolo)
{
if (ali == 4.00)
{
array.add(imponibile,TAB11_EC101);
array.add(imposta,TAB11_EC201);
}
else if (ali == 9.00)
{
array.add(imponibile,TAB11_EC102);
array.add(imposta,TAB11_EC202);
}
else if (ali == 10.00)
{
array.add(imponibile,TAB11_EC103);
array.add(imposta,TAB11_EC203);
}
else if (ali == 13.00)
{
array.add(imponibile,TAB11_EC104);
array.add(imposta,TAB11_EC204);
}
else if (ali == 16.00)
{
array.add(imponibile,TAB11_EC105);
array.add(imposta,TAB11_EC205);
}
else if (ali == 19.00)
{
array.add(imponibile,TAB11_EC106);
array.add(imposta,TAB11_EC206);
}
}
if (tipoes_v == "10")
array.add(imponibile,TAB11_EC107);
if (tipoes_v == "24")
array.add(imponibile,TAB11_EC108);
else if (tipoes_v == "B1")
array.add(imponibile,TAB11_EC109);
else if (tipoes_v == "B2")
array.add(imponibile,TAB11_EC110);
else if (tipoes_v == "B3")
array.add(imponibile,TAB11_EC111);
else if (tipoes_v == "26")
array.add(imponibile,TAB11_EC112);
else if (tipoes_v == "24B")
array.add(imponibile,TAB11_EC114);
else if (tipoes_v == "23")
array.add(imponibile,TAB11_EC115);
if (tipocr == 4)
array.add(imponibile,TAB11_EC113);
}
if (!autofattura && tipoiva != "NS") if (!autofattura && tipoiva != "NS")
if (tipodoc == "AF") if (tipodoc == "AF")
{ {
_iva11_arr.add(imponibile,TAB11_A35); array.add(imponibile,TAB11_A35);
_iva11_arr.add(imposta,TAB11_L2); array.add(imposta,TAB11_L2);
} }
else if (rcs.get_bool("VALINTRA") && !intra) else if (valintra && !intra)
{ {
_iva11_arr.add(imponibile,TAB11_A35BIS); array.add(imponibile,TAB11_A35BIS);
_iva11_arr.add(imposta,TAB11_L2BIS); array.add(imposta,TAB11_L2BIS);
} }
if (!autofattura && !sosp_imp && intra && tipoes_v == "24B") if (!autofattura && !sosp_imp && intra && tipoes_v == "24B")
_iva11_arr.add(imponibile,TAB11_E52); array.add(imponibile,TAB11_E52);
if (_isagricolo && (tipodoc != "CR" && tipodoc != "SC" && tipodoc != "RF" && tipodoc != "FS")) if (_isagricolo && (tipodoc != "CR" && tipodoc != "SC" && tipodoc != "RF" && tipodoc != "FS"))
{ {
@ -1545,52 +1612,52 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
{ {
if (t1) if (t1)
{ {
_iva11_arr.add(imponibile,TAB11_AGME01,LF_TAB1100B); array.add(imponibile,TAB11_AGME01,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE01,LF_TAB1100B); array.add(imposta,TAB11_AGVE01,LF_TAB1100B);
} }
if (intra && t1_3) if (intra && t1_3)
{ {
_iva11_arr.add(imponibile,TAB11_ABME01); array.add(imponibile,TAB11_ABME01);
_iva11_arr.add(imposta,TAB11_ABVE01); array.add(imposta,TAB11_ABVE01);
} }
} }
else if (ali == 4.00) else if (ali == 4.00)
{ {
if (t1) if (t1)
{ {
_iva11_arr.add(imponibile,TAB11_AGME02,LF_TAB1100B); array.add(imponibile,TAB11_AGME02,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE02,LF_TAB1100B); array.add(imposta,TAB11_AGVE02,LF_TAB1100B);
} }
if (intra && t1_3) if (intra && t1_3)
{ {
_iva11_arr.add(imponibile,TAB11_ABME02); array.add(imponibile,TAB11_ABME02);
_iva11_arr.add(imposta,TAB11_ABVE02); array.add(imposta,TAB11_ABVE02);
} }
} }
else if (ali == 8.50) else if (ali == 8.50)
{ {
if (t1) if (t1)
{ {
_iva11_arr.add(imponibile,TAB11_AGME03,LF_TAB1100B); array.add(imponibile,TAB11_AGME03,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE03,LF_TAB1100B); array.add(imposta,TAB11_AGVE03,LF_TAB1100B);
} }
if (intra && t1_3) if (intra && t1_3)
{ {
_iva11_arr.add(imponibile,TAB11_ABME03); array.add(imponibile,TAB11_ABME03);
_iva11_arr.add(imposta,TAB11_ABVE03); array.add(imposta,TAB11_ABVE03);
} }
} }
else if (ali == 9.00) else if (ali == 9.00)
{ {
if (t1) if (t1)
{ {
_iva11_arr.add(imponibile,TAB11_AGME04,LF_TAB1100B); array.add(imponibile,TAB11_AGME04,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE04,LF_TAB1100B); array.add(imposta,TAB11_AGVE04,LF_TAB1100B);
} }
if (intra && t1_3) if (intra && t1_3)
{ {
_iva11_arr.add(imponibile,TAB11_ABME04); array.add(imponibile,TAB11_ABME04);
_iva11_arr.add(imposta,TAB11_ABVE04); array.add(imposta,TAB11_ABVE04);
} }
} }
} }
@ -1598,7 +1665,9 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
if (is_acquisto || is_vendita) if (is_acquisto || is_vendita)
if (autofattura) if (autofattura)
_iva11_arr.add(imponibile,TAB11_A35TER); array.add(imponibile,TAB11_A35TER);
_iva11_arr.add(codatt,array,is_key);
} }
void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt) void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
@ -1613,7 +1682,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
int tipocr,tipodet,tagr; int tipocr,tipodet,tagr;
real aliq, imp, iva, vtot, atot, ivav, ivaa; real aliq, imp, iva, vtot, atot, ivav, ivaa;
TString cur_att; TString cur_att;
_BolgArray b_arr;
const bool is_key = _iva11_arr.is_key(codatt);
_BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
for (_pim->first(); !_pim->eof(); _pim->next()) for (_pim->first(); !_pim->eof(); _pim->next())
{ {
if (_year != *_pim_anno) continue; if (_year != *_pim_anno) continue;
@ -1644,150 +1716,101 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
switch (tipocr) switch (tipocr)
{ {
case 2: case 2:
_iva11_arr.add(imp,TAB11_IMA01); array.add(imp,TAB11_IMA01);
break; break;
case 8: case 8:
_iva11_arr.add(imp,TAB11_IMA02); array.add(imp,TAB11_IMA02);
break; break;
case 1: case 1:
case 5: case 5:
_iva11_arr.add(imp,TAB11_IMA03); array.add(imp,TAB11_IMA03);
break; break;
default: default:
break; break;
} }
if (tipodet == 1) if (tipodet == 1)
_iva11_arr.add(iva,TAB11_B14); array.add(iva,TAB11_B14);
if (aliq == 4.00) if (aliq == 4.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC101); array.add(_pim->get_real("R9"),TAB11_FBC101);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC201); array.add(_pim->get_real("R10"),TAB11_FBC201);
} }
else else
if (aliq == 9.00) if (aliq == 9.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC102); array.add(_pim->get_real("R9"),TAB11_FBC102);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC202); array.add(_pim->get_real("R10"),TAB11_FBC202);
} }
else else
if (aliq == 10.00) if (aliq == 10.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC103); array.add(_pim->get_real("R9"),TAB11_FBC103);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC203); array.add(_pim->get_real("R10"),TAB11_FBC203);
} }
else else
if (aliq == 13.00) if (aliq == 13.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC104); array.add(_pim->get_real("R9"),TAB11_FBC104);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC204); array.add(_pim->get_real("R10"),TAB11_FBC204);
} }
else else
if (aliq == 16.00) if (aliq == 16.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC105); array.add(_pim->get_real("R9"),TAB11_FBC105);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC205); array.add(_pim->get_real("R10"),TAB11_FBC205);
} }
else else
if (aliq == 19.00) if (aliq == 19.00)
{ {
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC106); array.add(_pim->get_real("R9"),TAB11_FBC106);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC206); array.add(_pim->get_real("R10"),TAB11_FBC206);
} }
if (a11 == "12") if (a11 == "12")
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC107); array.add(_pim->get_real("R9"),TAB11_FBC107);
if (a11 == "13" || a11 == "14") if (a11 == "13" || a11 == "14")
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC108); array.add(_pim->get_real("R9"),TAB11_FBC108);
if (a11 == "15") if (a11 == "15")
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC109); array.add(_pim->get_real("R9"),TAB11_FBC109);
} // is_acquisto } // is_acquisto
if (is_vendita && ((_isagricolo && tagr==2) || !_isagricolo))
{
if (aliq == 4.00)
{
_iva11_arr.add(imp,TAB11_EC101);
_iva11_arr.add(iva,TAB11_EC201);
}
else if (aliq == 9.00)
{
_iva11_arr.add(imp,TAB11_EC102);
_iva11_arr.add(iva,TAB11_EC202);
}
else if (aliq == 10.00)
{
_iva11_arr.add(imp,TAB11_EC103);
_iva11_arr.add(iva,TAB11_EC203);
}
else if (aliq == 13.00)
{
_iva11_arr.add(imp,TAB11_EC104);
_iva11_arr.add(iva,TAB11_EC204);
}
else if (aliq == 16.00)
{
_iva11_arr.add(imp,TAB11_EC105);
_iva11_arr.add(iva,TAB11_EC205);
}
else if (aliq == 19.00)
{
_iva11_arr.add(imp,TAB11_EC106);
_iva11_arr.add(iva,TAB11_EC206);
}
}
if (is_vendita) if (is_vendita)
{ {
if (v11 == "10") if (v11 == "E50")
_iva11_arr.add(imp,TAB11_EC107); array.add(imp,TAB11_EC116);
if (v11 == "24")
_iva11_arr.add(imp,TAB11_EC108);
else if (v11 == "B1")
_iva11_arr.add(imp,TAB11_EC109);
else if (v11 == "B2")
_iva11_arr.add(imp,TAB11_EC110);
else if (v11 == "B3")
_iva11_arr.add(imp,TAB11_EC111);
else if (v11 == "26")
_iva11_arr.add(imp,TAB11_EC112);
else if (v11 == "24B")
_iva11_arr.add(imp,TAB11_EC114);
else if (v11 == "23")
_iva11_arr.add(imp,TAB11_EC115);
else if (v11 == "E50")
_iva11_arr.add(imp,TAB11_EC116);
else if (v11 == "E51") else if (v11 == "E51")
_iva11_arr.add(imp,TAB11_EC117); array.add(imp,TAB11_EC117);
else if (v11 == "R9") else if (v11 == "R9")
_iva11_arr.add(imp,TAB11_R9,LF_TAB1100B); array.add(imp,TAB11_R9,LF_TAB1100B);
}
if (is_vendita && tipocr == 4)
_iva11_arr.add(imp,TAB11_EC113);
if (is_vendita && _isagricolo && (tagr == 1 || tagr == 3)) if (_isagricolo && (tagr == 1 || tagr == 3))
{
if (aliq == 2.00)
{ {
_iva11_arr.add(imp,TAB11_AGME01,LF_TAB1100B); if (aliq == 2.00)
_iva11_arr.add(iva,TAB11_AGVE01,LF_TAB1100B); {
array.add(imp,TAB11_AGME01,LF_TAB1100B);
array.add(iva,TAB11_AGVE01,LF_TAB1100B);
}
else if (aliq == 4.00)
{
array.add(imp,TAB11_AGME02,LF_TAB1100B);
array.add(iva,TAB11_AGVE02,LF_TAB1100B);
}
else if (aliq == 8.50)
{
array.add(imp,TAB11_AGME03,LF_TAB1100B);
array.add(iva,TAB11_AGVE03,LF_TAB1100B);
}
else if (aliq == 9.00)
{
array.add(imp,TAB11_AGME04,LF_TAB1100B);
array.add(iva,TAB11_AGVE04,LF_TAB1100B);
}
} }
else if (aliq == 4.00) } // is_vendita
{
_iva11_arr.add(imp,TAB11_AGME02,LF_TAB1100B);
_iva11_arr.add(iva,TAB11_AGVE02,LF_TAB1100B);
}
else if (aliq == 8.50)
{
_iva11_arr.add(imp,TAB11_AGME03,LF_TAB1100B);
_iva11_arr.add(iva,TAB11_AGVE03,LF_TAB1100B);
}
else if (aliq == 9.00)
{
_iva11_arr.add(imp,TAB11_AGME04,LF_TAB1100B);
_iva11_arr.add(iva,TAB11_AGVE04,LF_TAB1100B);
}
}
// Boia chi linka! // Boia chi linka!
// Sommatoria per il calcolo aliquote medie vendite/acquisti... // Sommatoria per il calcolo aliquote medie vendite/acquisti...
if (_pim->get_bool("B3")) // E' un record valido per fare questa cosa? if (_pim->get_bool("B3")) // E' un record valido per fare questa cosa?
@ -1808,20 +1831,20 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
// Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115 // Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115
// Va beh... // Va beh...
real r16, r17; real r16, r17;
if (_iva11_arr.is_key(TAB11_EC116)) if (array.is_key(TAB11_EC116))
r16 = ((_BolgItem&)_iva11_arr[TAB11_EC116]).value(); r16 = ((_BolgItem&)array[TAB11_EC116]).value();
if (_iva11_arr.is_key(TAB11_EC117)) if (array.is_key(TAB11_EC117))
r17 = ((_BolgItem&)_iva11_arr[TAB11_EC117]).value(); r17 = ((_BolgItem&)array[TAB11_EC117]).value();
r17+=r16; r17+=r16;
_iva11_arr.add(r17,TAB11_EC115); array.add(r17,TAB11_EC115);
// Calcola le maledette aliquote medie... // Calcola le maledette aliquote medie...
real alv,ala; real alv,ala;
if (vtot != 0.0) { alv = ivav/vtot; alv *= CENTO; alv.round(2); } if (vtot != 0.0) { alv = ivav/vtot; alv *= CENTO; alv.round(2); }
if (atot != 0.0) { ala = ivaa/atot; ala *= CENTO; ala.round(2); } if (atot != 0.0) { ala = ivaa/atot; ala *= CENTO; ala.round(2); }
_iva11_arr.add(ala,TAB11_R1,LF_TAB1100B); array.add(ala,TAB11_R1,LF_TAB1100B);
_iva11_arr.add(alv,TAB11_R2,LF_TAB1100B); array.add(alv,TAB11_R2,LF_TAB1100B);
// Uargh, Uargh. Mo' mi pappo i PLM per compilare T1, T1C, T2, T2C, T3, T5 e T6 // Uargh, Uargh. Mo' mi pappo i PLM per compilare T1, T1C, T2, T2C, T3, T5 e T6
// Ah, Ah, Ah! // Ah, Ah, Ah!
@ -1834,59 +1857,59 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
if (codatt != cur_att) continue; if (codatt != cur_att) continue;
if (_isviaggio) if (_isviaggio)
{ {
_iva11_arr.add(_plm->get_real("R5"),TAB11_T1,LF_TAB1100B); array.add(_plm->get_real("R5"),TAB11_T1,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R7"),TAB11_T1C,LF_TAB1100B); array.add(_plm->get_real("R7"),TAB11_T1C,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R6"),TAB11_T2,LF_TAB1100B); array.add(_plm->get_real("R6"),TAB11_T2,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R8"),TAB11_T2C,LF_TAB1100B); array.add(_plm->get_real("R8"),TAB11_T2C,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R9"),TAB11_T3,LF_TAB1100B); array.add(_plm->get_real("R9"),TAB11_T3,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R10"),TAB11_T5,LF_TAB1100B); array.add(_plm->get_real("R10"),TAB11_T5,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R11"),TAB11_T6,LF_TAB1100B); array.add(_plm->get_real("R11"),TAB11_T6,LF_TAB1100B);
} }
_iva11_arr.add(_plm->get_real("R0"),TAB11_IVVENR); array.add(_plm->get_real("R0"),TAB11_IVVENR);
} }
_iva11_arr.add(codatt,array,is_key);
} }
void TLiquidazione_app::iva11_reset_R1R2() void TLiquidazione_app::iva11_write(bool reset_r1r2)
// Azzera su file i valori di R1 ed R2 se non e' stato stampato il rimborso.
{
TLocalisamfile& tab1100b = _tab11->lfile(LF_TAB1100B);
TString ditta,ditta_read;
ditta.format("%05ld",_nditte->curr().get_long(NDT_CODDITTA));
tab1100b.put(TAB11_TADITT,ditta);
for (tab1100b.read(_isgteq); !tab1100b.eof(); tab1100b.next())
{
ditta_read = tab1100b.get(TAB11_TADITT);
if (ditta != ditta_read) break;
tab1100b.zero(TAB11_R1);
tab1100b.zero(TAB11_R2);
tab1100b.rewrite();
}
}
void TLiquidazione_app::iva11_write()
// Trasferisce i dati IVA11 annuali dall'assoc_array al file tab1100 // Trasferisce i dati IVA11 annuali dall'assoc_array al file tab1100
{ {
const int items = _iva11_arr.items(); const int items = _iva11_arr.items();
if (items == 0) return; if (items == 0) return;
// Setta i campi chiave per entrambi i files della relazione TString ditta,attiv,fld_name;
TString ditta,attiv;
ditta.format("%05ld",_nditte->curr().get_long(NDT_CODDITTA));
attiv = _nditte->curr(LF_ATTIV).get(ATT_CODATT);
_tab11->lfile().zero();
_tab11->lfile().put(TAB11_TADITT,ditta);
_tab11->lfile().put(TAB11_TACATT,attiv);
_tab11->lfile(LF_TAB1100B).zero();
_tab11->lfile(LF_TAB1100B).put(TAB11_TADITT,ditta);
_tab11->lfile(LF_TAB1100B).put(TAB11_TACATT,attiv);
_BolgArray * bolg_arr;
_BolgItem * bolg; _BolgItem * bolg;
int i=0,err; int i=0,err;
for (bolg = (_BolgItem *)_iva11_arr.first_item(); bolg != NULL && i<items;i++,bolg = (_BolgItem *)_iva11_arr.succ_item()) // Ciclo sulle attivita'
_tab11->lfile(bolg->file()).put(_iva11_arr.get_hashobj()->key(),bolg->value()); for (bolg_arr = (_BolgArray *) _iva11_arr.first_item(); bolg_arr != NULL && i < items; i++,bolg_arr = (_BolgArray*)_iva11_arr.succ_item())
if (_tab11->write() != NOERR) {
if ((err=_tab11->rewrite()) != NOERR) // Setta i campi chiave per entrambi i files della relazione
error_box("Errore %d tentando di scrivere sul file tab1100.",err); ditta.format("%05ld",_nditte->curr().get_long(NDT_CODDITTA));
attiv = _iva11_arr.get_hashobj()->key();
TLocalisamfile& tab1100a = _tab11->lfile();
TLocalisamfile& tab1100b = _tab11->lfile(LF_TAB1100B);
tab1100a.zero();
tab1100a.put(TAB11_TADITT,ditta);
tab1100a.put(TAB11_TACATT,attiv);
tab1100b.zero();
tab1100b.put(TAB11_TADITT,ditta);
tab1100b.put(TAB11_TACATT,attiv);
const int bolg_items = bolg_arr->items();
int j=0;
// Ciclo sugli elementi per compilare i campi della relazione
for (bolg = (_BolgItem *)bolg_arr->first_item(); bolg != NULL && j<bolg_items;j++,bolg = (_BolgItem *)bolg_arr->succ_item())
{
fld_name = bolg_arr->get_hashobj()->key();
if (reset_r1r2 && (fld_name == TAB11_R1 || fld_name == TAB11_R2)) continue; // salta R1/R2 se devono rimanere a zero
_tab11->lfile(bolg->file()).put(fld_name,bolg->value());
}
if (_tab11->write() != NOERR)
if ((err=_tab11->rewrite()) != NOERR)
error_box("Errore %d tentando di scrivere sul file tab1100.",err);
}
_iva11_arr.destroy(); // resetta l'array. _iva11_arr.destroy(); // resetta l'array.
} }

View File

@ -397,6 +397,12 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
//}; //};
// defines per stabilire quale cazzo di metodo piace oggi alla prassi
// ------------------------------------------------------------------
// Considera tutti i mesi del trimestre fino a quello indicato
// se lasciato indefinito usa solo il mese passato
#define OGGI_GLI_TIRA_DI_USARE_TRE_MESI
_DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
bool stliq) bool stliq)
{ {
@ -417,22 +423,19 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
while ((tmpatt = atts.get()) != NULL) while ((tmpatt = atts.get()) != NULL)
{ {
att = tmpatt; att = tmpatt;
if (!is_mens) // Trimestrali #ifdef OGGI_GLI_TIRA_DI_USARE_TRE_MESI
for (int m = (month == 13 ? 1 : (next_trim(month)-2)); m <= month; m++) for (int m = (month == 13 ? 1 : (next_trim(month)-2)); m <= month; m++)
{ {
if (!look_plm(m,att)) continue; #else
vol_aff += _pam->get_real("R1");
es_ni += _pum->get_real("R12");
}
else
{ // Mensili
int m = month; int m = month;
#endif
if (!look_plm(m,att)) continue; if (!look_plm(m,att)) continue;
vol_aff += _pam->get_real("R1"); vol_aff += _pam->get_real("R1");
es_ni += _pum->get_real("R12"); es_ni += _pum->get_real("R12");
} #ifdef OGGI_GLI_TIRA_DI_USARE_TRE_MESI
}
#endif
} }
// condizione 1 // condizione 1
@ -593,7 +596,7 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
(month != 13 && (rmese < (next_trim(month)-2) || rmese > month))) (month != 13 && (rmese < (next_trim(month)-2) || rmese > month)))
continue; continue;
} else // Mensili } else // Mensili
if (year != ryear || (month != rmese)) if (year != ryear || (month != rmese && month != 13))
continue; continue;
int tipomov = (tiporeg)_pim->get_long("I1"); int tipomov = (tiporeg)_pim->get_long("I1");

View File

@ -857,6 +857,7 @@ 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)
{ {