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:
parent
719c1b81a3
commit
9de7010cf6
@ -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);
|
||||
|
12
cg/cg4300.h
12
cg/cg4300.h
@ -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);
|
||||
|
499
cg/cg4301.cpp
499
cg/cg4301.cpp
@ -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.
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user