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);
}
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!
real TLiquidazione_app::CENTO(100.0);

View File

@ -196,6 +196,7 @@ class _BolgArray : public TAssoc_array
public:
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);
void zero(const char* fld_name);
_BolgArray() {}
virtual ~_BolgArray() {}
};
@ -260,8 +261,10 @@ class TLiquidazione_app : public TPrint_application
TAssoc_array _codiva_arr; // cache dei codici IVA.
TAssoc_array _reg_arr; // cache dei registri.
_BolgArray _iva11_arr; // array contenente le informazioni da trasferire.
// La chiave di ordinamento e' sul nome del campo.
TAssoc_array _iva11_arr; // array contenente le informazioni da trasferire.
// 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'
real _p8, _p8b, _p9; // totali plafond
@ -407,10 +410,9 @@ public:
void iva11_set_arr (const TString& codatt);
// Scorre tutti i PIM della ditta, per completare _iva11_arr prima di chiamare write_IVA11()
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
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
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->curr().put("CODDITTA",nomeditta.get_long(1));
_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
// 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)
{
iva11_set_arr_pim(codatt); // scorre tutti i maledetti PIM di questa ditta per completare _iva11_arr
iva11_write(); // scrive su tab1100 at last.
}
iva11_set_arr_pim(codatt); // scorre tutti i maledetti PIM di questa ditta/attivita' per completare _iva11_arr
}
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)
// da passare a describe_liq
rimb_d = recalc_rimborso(month,atts, stliq);
if (_is_interactive && month == 13 && rimb_d == NULL)
iva11_reset_R1R2();
}
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_a = _iva->get("S9");
const int tipoagr = atoi(_iva->get("S4"));
const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool autofattura = rcs.get_bool("AUTOFATT");
const bool sosp_imp = _reg->get_bool("B1");
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
const bool is_vendita = tipomov == vendita;
const bool is_acquisto = tipomov == acquisto;
const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool autofattura = rcs.get_bool("AUTOFATT");
const bool valintra = rcs.get_bool("VALINTRA");
const bool sosp_imp = _reg->get_bool("B1");
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
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!
// 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)
{
_iva11_arr.sub(imponibile,TAB11_G30I,LF_TAB1100B);
_iva11_arr.sub(imposta,TAB11_G30V,LF_TAB1100B);
array.sub(imponibile,TAB11_G30I,LF_TAB1100B);
array.sub(imposta,TAB11_G30V,LF_TAB1100B);
}
else
{
_iva11_arr.add(imponibile,TAB11_G30I,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_G30V,LF_TAB1100B);
array.add(imponibile,TAB11_G30I,LF_TAB1100B);
array.add(imposta,TAB11_G30V,LF_TAB1100B);
}
}
else if (tipoagr == 3 && tipocr !=2 && tipocr != 3 && tipocr != 8)
{
_iva11_arr.add(imponibile,TAB11_G31I,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_G31V,LF_TAB1100B);
array.add(imponibile,TAB11_G31I,LF_TAB1100B);
array.add(imposta,TAB11_G31V,LF_TAB1100B);
}
}
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 (tipodoc == "BD")
if (!sosp_imp)
{
if (tipodoc == "BD" && tipodet == 9)
{
_iva11_arr.add(imponibile,TAB11_F76);
array.add(imponibile,TAB11_F76);
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
if (ali == 2.00)
{
_iva11_arr.add(imponibile,TAB11_FC101);
_iva11_arr.add(imposta,TAB11_FC201);
array.add(imponibile,TAB11_FC101);
array.add(imposta,TAB11_FC201);
}
else if (ali == 4.00)
{
_iva11_arr.add(imponibile,TAB11_FC102);
_iva11_arr.add(imposta,TAB11_FC202);
array.add(imponibile,TAB11_FC102);
array.add(imposta,TAB11_FC202);
}
else if (ali == 8.50)
{
_iva11_arr.add(imponibile,TAB11_FC103);
_iva11_arr.add(imposta,TAB11_FC203);
array.add(imponibile,TAB11_FC103);
array.add(imposta,TAB11_FC203);
}
else if (ali == 9.00)
{
_iva11_arr.add(imponibile,TAB11_FC104);
_iva11_arr.add(imposta,TAB11_FC204);
array.add(imponibile,TAB11_FC104);
array.add(imposta,TAB11_FC204);
}
else if (ali == 10.00)
{
_iva11_arr.add(imponibile,TAB11_FC105);
_iva11_arr.add(imposta,TAB11_FC205);
array.add(imponibile,TAB11_FC105);
array.add(imposta,TAB11_FC205);
}
else if (ali == 13.00)
{
_iva11_arr.add(imponibile,TAB11_FC106);
_iva11_arr.add(imposta,TAB11_FC206);
array.add(imponibile,TAB11_FC106);
array.add(imposta,TAB11_FC206);
}
else if (ali == 16.00)
{
_iva11_arr.add(imponibile,TAB11_FC107);
_iva11_arr.add(imposta,TAB11_FC207);
array.add(imponibile,TAB11_FC107);
array.add(imposta,TAB11_FC207);
}
else if (ali == 19.00)
{
_iva11_arr.add(imponibile,TAB11_FC108);
_iva11_arr.add(imposta,TAB11_FC208);
array.add(imponibile,TAB11_FC108);
array.add(imposta,TAB11_FC208);
}
if (tipoes_a == "01")
_iva11_arr.add(imponibile,TAB11_FC109);
array.add(imponibile,TAB11_FC109);
else if (tipoes_a == "12")
_iva11_arr.add(imponibile,TAB11_FC110);
array.add(imponibile,TAB11_FC110);
else if (tipoes_a == "13")
_iva11_arr.add(imponibile,TAB11_FC111);
array.add(imponibile,TAB11_FC111);
else if (tipoes_a == "14")
_iva11_arr.add(imponibile,TAB11_FC112);
array.add(imponibile,TAB11_FC112);
else if (tipoes_a == "15")
_iva11_arr.add(imponibile,TAB11_FC113);
_iva11_arr.add(imponibile,TAB11_FC114);
if (_sind11)
_iva11_arr.add(imposta,TAB11_FC114);
array.add(imponibile,TAB11_FC113);
if (tipodet == 9)
{
array.add(imponibile,TAB11_FC114);
if (_sind11)
array.add(imposta,TAB11_FC114);
}
if (intra) // Compila i campi SBFnn
{
if (ali == 4.00)
{
_iva11_arr.add(imponibile,TAB11_SBF01);
_iva11_arr.add(imposta,TAB11_SBI01);
array.add(imponibile,TAB11_SBF01);
array.add(imposta,TAB11_SBI01);
}
else if (ali == 9.00)
{
_iva11_arr.add(imponibile,TAB11_SBF02);
_iva11_arr.add(imposta,TAB11_SBI02);
array.add(imponibile,TAB11_SBF02);
array.add(imposta,TAB11_SBI02);
}
else if (ali == 10.00)
{
_iva11_arr.add(imponibile,TAB11_SBF03);
_iva11_arr.add(imposta,TAB11_SBI03);
array.add(imponibile,TAB11_SBF03);
array.add(imposta,TAB11_SBI03);
}
else if (ali == 13.00)
{
_iva11_arr.add(imponibile,TAB11_SBF04);
_iva11_arr.add(imposta,TAB11_SBI04);
array.add(imponibile,TAB11_SBF04);
array.add(imposta,TAB11_SBI04);
}
else if (ali == 16.00)
{
_iva11_arr.add(imponibile,TAB11_SBF05);
_iva11_arr.add(imposta,TAB11_SBI05);
array.add(imponibile,TAB11_SBF05);
array.add(imposta,TAB11_SBI05);
}
else if (ali == 19.00)
{
_iva11_arr.add(imponibile,TAB11_SBF06);
_iva11_arr.add(imposta,TAB11_SBI06);
array.add(imponibile,TAB11_SBF06);
array.add(imposta,TAB11_SBI06);
}
if (tipoes_a == "01")
_iva11_arr.add(imponibile,TAB11_SBF07);
array.add(imponibile,TAB11_SBF07);
else if (tipoes_a == "12")
_iva11_arr.add(imponibile,TAB11_SBF08);
array.add(imponibile,TAB11_SBF08);
else if (tipoes_a == "13")
_iva11_arr.add(imponibile,TAB11_SBF09);
array.add(imponibile,TAB11_SBF09);
else if (tipoes_a == "14")
_iva11_arr.add(imponibile,TAB11_SBF10);
_iva11_arr.add(imponibile,TAB11_SBF11);
if (_sind11)
_iva11_arr.add(imposta,TAB11_SBF11);
array.add(imponibile,TAB11_SBF10);
if (tipodet == 9)
{
array.add(imponibile,TAB11_SBF11);
if (_sind11)
array.add(imposta,TAB11_SBF11);
}
}
}
}
}
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 (tipodoc == "AF")
{
_iva11_arr.add(imponibile,TAB11_A35);
_iva11_arr.add(imposta,TAB11_L2);
array.add(imponibile,TAB11_A35);
array.add(imposta,TAB11_L2);
}
else if (rcs.get_bool("VALINTRA") && !intra)
else if (valintra && !intra)
{
_iva11_arr.add(imponibile,TAB11_A35BIS);
_iva11_arr.add(imposta,TAB11_L2BIS);
array.add(imponibile,TAB11_A35BIS);
array.add(imposta,TAB11_L2BIS);
}
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"))
{
@ -1545,52 +1612,52 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
{
if (t1)
{
_iva11_arr.add(imponibile,TAB11_AGME01,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE01,LF_TAB1100B);
array.add(imponibile,TAB11_AGME01,LF_TAB1100B);
array.add(imposta,TAB11_AGVE01,LF_TAB1100B);
}
if (intra && t1_3)
{
_iva11_arr.add(imponibile,TAB11_ABME01);
_iva11_arr.add(imposta,TAB11_ABVE01);
array.add(imponibile,TAB11_ABME01);
array.add(imposta,TAB11_ABVE01);
}
}
else if (ali == 4.00)
{
if (t1)
{
_iva11_arr.add(imponibile,TAB11_AGME02,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE02,LF_TAB1100B);
array.add(imponibile,TAB11_AGME02,LF_TAB1100B);
array.add(imposta,TAB11_AGVE02,LF_TAB1100B);
}
if (intra && t1_3)
{
_iva11_arr.add(imponibile,TAB11_ABME02);
_iva11_arr.add(imposta,TAB11_ABVE02);
array.add(imponibile,TAB11_ABME02);
array.add(imposta,TAB11_ABVE02);
}
}
else if (ali == 8.50)
{
if (t1)
{
_iva11_arr.add(imponibile,TAB11_AGME03,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE03,LF_TAB1100B);
array.add(imponibile,TAB11_AGME03,LF_TAB1100B);
array.add(imposta,TAB11_AGVE03,LF_TAB1100B);
}
if (intra && t1_3)
{
_iva11_arr.add(imponibile,TAB11_ABME03);
_iva11_arr.add(imposta,TAB11_ABVE03);
array.add(imponibile,TAB11_ABME03);
array.add(imposta,TAB11_ABVE03);
}
}
else if (ali == 9.00)
{
if (t1)
{
_iva11_arr.add(imponibile,TAB11_AGME04,LF_TAB1100B);
_iva11_arr.add(imposta,TAB11_AGVE04,LF_TAB1100B);
array.add(imponibile,TAB11_AGME04,LF_TAB1100B);
array.add(imposta,TAB11_AGVE04,LF_TAB1100B);
}
if (intra && t1_3)
{
_iva11_arr.add(imponibile,TAB11_ABME04);
_iva11_arr.add(imposta,TAB11_ABVE04);
array.add(imponibile,TAB11_ABME04);
array.add(imposta,TAB11_ABVE04);
}
}
}
@ -1598,7 +1665,9 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt)
if (is_acquisto || is_vendita)
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)
@ -1613,7 +1682,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
int tipocr,tipodet,tagr;
real aliq, imp, iva, vtot, atot, ivav, ivaa;
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())
{
if (_year != *_pim_anno) continue;
@ -1644,150 +1716,101 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
switch (tipocr)
{
case 2:
_iva11_arr.add(imp,TAB11_IMA01);
array.add(imp,TAB11_IMA01);
break;
case 8:
_iva11_arr.add(imp,TAB11_IMA02);
array.add(imp,TAB11_IMA02);
break;
case 1:
case 5:
_iva11_arr.add(imp,TAB11_IMA03);
array.add(imp,TAB11_IMA03);
break;
default:
break;
}
if (tipodet == 1)
_iva11_arr.add(iva,TAB11_B14);
array.add(iva,TAB11_B14);
if (aliq == 4.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC101);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC201);
array.add(_pim->get_real("R9"),TAB11_FBC101);
array.add(_pim->get_real("R10"),TAB11_FBC201);
}
else
if (aliq == 9.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC102);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC202);
array.add(_pim->get_real("R9"),TAB11_FBC102);
array.add(_pim->get_real("R10"),TAB11_FBC202);
}
else
if (aliq == 10.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC103);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC203);
array.add(_pim->get_real("R9"),TAB11_FBC103);
array.add(_pim->get_real("R10"),TAB11_FBC203);
}
else
if (aliq == 13.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC104);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC204);
array.add(_pim->get_real("R9"),TAB11_FBC104);
array.add(_pim->get_real("R10"),TAB11_FBC204);
}
else
if (aliq == 16.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC105);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC205);
array.add(_pim->get_real("R9"),TAB11_FBC105);
array.add(_pim->get_real("R10"),TAB11_FBC205);
}
else
if (aliq == 19.00)
{
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC106);
_iva11_arr.add(_pim->get_real("R10"),TAB11_FBC206);
array.add(_pim->get_real("R9"),TAB11_FBC106);
array.add(_pim->get_real("R10"),TAB11_FBC206);
}
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")
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC108);
array.add(_pim->get_real("R9"),TAB11_FBC108);
if (a11 == "15")
_iva11_arr.add(_pim->get_real("R9"),TAB11_FBC109);
array.add(_pim->get_real("R9"),TAB11_FBC109);
} // 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 (v11 == "10")
_iva11_arr.add(imp,TAB11_EC107);
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);
if (v11 == "E50")
array.add(imp,TAB11_EC116);
else if (v11 == "E51")
_iva11_arr.add(imp,TAB11_EC117);
array.add(imp,TAB11_EC117);
else if (v11 == "R9")
_iva11_arr.add(imp,TAB11_R9,LF_TAB1100B);
}
if (is_vendita && tipocr == 4)
_iva11_arr.add(imp,TAB11_EC113);
array.add(imp,TAB11_R9,LF_TAB1100B);
if (is_vendita && _isagricolo && (tagr == 1 || tagr == 3))
{
if (aliq == 2.00)
if (_isagricolo && (tagr == 1 || tagr == 3))
{
_iva11_arr.add(imp,TAB11_AGME01,LF_TAB1100B);
_iva11_arr.add(iva,TAB11_AGVE01,LF_TAB1100B);
if (aliq == 2.00)
{
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)
{
_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);
}
}
} // is_vendita
// Boia chi linka!
// Sommatoria per il calcolo aliquote medie vendite/acquisti...
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
// Va beh...
real r16, r17;
if (_iva11_arr.is_key(TAB11_EC116))
r16 = ((_BolgItem&)_iva11_arr[TAB11_EC116]).value();
if (_iva11_arr.is_key(TAB11_EC117))
r17 = ((_BolgItem&)_iva11_arr[TAB11_EC117]).value();
if (array.is_key(TAB11_EC116))
r16 = ((_BolgItem&)array[TAB11_EC116]).value();
if (array.is_key(TAB11_EC117))
r17 = ((_BolgItem&)array[TAB11_EC117]).value();
r17+=r16;
_iva11_arr.add(r17,TAB11_EC115);
array.add(r17,TAB11_EC115);
// Calcola le maledette aliquote medie...
real alv,ala;
if (vtot != 0.0) { alv = ivav/vtot; alv *= CENTO; alv.round(2); }
if (atot != 0.0) { ala = ivaa/atot; ala *= CENTO; ala.round(2); }
_iva11_arr.add(ala,TAB11_R1,LF_TAB1100B);
_iva11_arr.add(alv,TAB11_R2,LF_TAB1100B);
array.add(ala,TAB11_R1,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
// Ah, Ah, Ah!
@ -1834,59 +1857,59 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
if (codatt != cur_att) continue;
if (_isviaggio)
{
_iva11_arr.add(_plm->get_real("R5"),TAB11_T1,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R7"),TAB11_T1C,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R6"),TAB11_T2,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R8"),TAB11_T2C,LF_TAB1100B);
_iva11_arr.add(_plm->get_real("R9"),TAB11_T3,LF_TAB1100B);
_iva11_arr.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("R5"),TAB11_T1,LF_TAB1100B);
array.add(_plm->get_real("R7"),TAB11_T1C,LF_TAB1100B);
array.add(_plm->get_real("R6"),TAB11_T2,LF_TAB1100B);
array.add(_plm->get_real("R8"),TAB11_T2C,LF_TAB1100B);
array.add(_plm->get_real("R9"),TAB11_T3,LF_TAB1100B);
array.add(_plm->get_real("R10"),TAB11_T5,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()
// 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()
void TLiquidazione_app::iva11_write(bool reset_r1r2)
// Trasferisce i dati IVA11 annuali dall'assoc_array al file tab1100
{
const int items = _iva11_arr.items();
if (items == 0) return;
// Setta i campi chiave per entrambi i files della relazione
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);
TString ditta,attiv,fld_name;
_BolgArray * bolg_arr;
_BolgItem * bolg;
int i=0,err;
for (bolg = (_BolgItem *)_iva11_arr.first_item(); bolg != NULL && i<items;i++,bolg = (_BolgItem *)_iva11_arr.succ_item())
_tab11->lfile(bolg->file()).put(_iva11_arr.get_hashobj()->key(),bolg->value());
if (_tab11->write() != NOERR)
if ((err=_tab11->rewrite()) != NOERR)
error_box("Errore %d tentando di scrivere sul file tab1100.",err);
// Ciclo sulle attivita'
for (bolg_arr = (_BolgArray *) _iva11_arr.first_item(); bolg_arr != NULL && i < items; i++,bolg_arr = (_BolgArray*)_iva11_arr.succ_item())
{
// Setta i campi chiave per entrambi i files della relazione
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.
}

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,
bool stliq)
{
@ -417,22 +423,19 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
while ((tmpatt = atts.get()) != NULL)
{
att = tmpatt;
if (!is_mens) // Trimestrali
for (int m = (month == 13 ? 1 : (next_trim(month)-2)); m <= month; m++)
{
if (!look_plm(m,att)) continue;
vol_aff += _pam->get_real("R1");
es_ni += _pum->get_real("R12");
}
else
{ // Mensili
#ifdef OGGI_GLI_TIRA_DI_USARE_TRE_MESI
for (int m = (month == 13 ? 1 : (next_trim(month)-2)); m <= month; m++)
{
#else
int m = month;
#endif
if (!look_plm(m,att)) continue;
vol_aff += _pam->get_real("R1");
es_ni += _pum->get_real("R12");
}
#ifdef OGGI_GLI_TIRA_DI_USARE_TRE_MESI
}
#endif
}
// 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)))
continue;
} else // Mensili
if (year != ryear || (month != rmese))
if (year != ryear || (month != rmese && month != 13))
continue;
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);
else delete di;
}
iva11_write(di == NULL || d->_r0.sign() >= 0); // scrive su tab1100 at last.
if (!_is_visliq)
{