From 1ca5cf680411a92e819f2fbee657ee508309ad04 Mon Sep 17 00:00:00 2001 From: Mattia Tollari Date: Mon, 25 Mar 2019 11:56:30 +0100 Subject: [PATCH] Patch level : 12.0 744 Files correlati : tf Commento : - Aggiunto nel calcolo liquidazione trimestrale anche i movimenti con flag di liquidazione precedente - Aggiunto nel calcolo del credito precendente vincolo mese a gennaio --- src/tf/tf0200.cpp | 88 +++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/src/tf/tf0200.cpp b/src/tf/tf0200.cpp index 90f7c3161..d7d812ba1 100644 --- a/src/tf/tf0200.cpp +++ b/src/tf/tf0200.cpp @@ -197,11 +197,10 @@ void calcola_credito_prec(real& creprec, real& creaprec, bool mensile, int anno, trovato = trovato || row_liq.get_real("CREAPREC") > ZERO; creprec = row_liq.get_real("IVAVERC"); - } /* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi) * vado a leggere la liquidazione di quest'anno */ - if(!trovato) + if(!trovato && mese == 1) { creaprec = row_lia.get_real("R0"); } @@ -219,7 +218,7 @@ protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); void extractinator(); - void check_old_value(int field, real val); + void check_old_value(int field, const real& val); public: TCom_liq_per_iva_msk() : TAutomask("tf0200a"), _true_data(LF_IVALIQ), _init_liq(false) { first_focus(F_ANNO); } void save_gen(); @@ -421,7 +420,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO for(; start <= end; start++) { TDate data_da(1, start, anno); - TDate data_a(1, start, anno); data_a.set_end_month(); + TDate data_a(1, start + 1, anno); data_a.set_end_month(); bool has_ixc = gestione_IVAxCassa(data_da); /**************************************************************************************************************** @@ -433,7 +432,7 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO const TRectype row_lim = getLIM(anno, start); // Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12 - if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non � stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?")) + if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non e' stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?")) { return; } @@ -455,46 +454,49 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO // Controllo che sia un movimento con codice non "non soggetto" TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string()); if(codiva.tipo() == "NS") continue; - - // Prendo il tipo di registro - TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno); - int tiporeg = reg.tipo(); - bool is_corrispettivo = reg.corrispettivi(); - // Prendiamo l'imponibile - real imp = cur_iva.get("25.IMPONIBILE").as_real(); - real imposta = cur_iva.get("25.IMPOSTA").as_real(); - - // Se è un movimento IvaXCassa o LiqDiff - if(has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool())) + // Controllo che la registrazione sia di del mese che mi interessa o con flag "liquidazione periodo precedente" + if (cur_iva.get("23." MOV_DATAREG).as_date().month() == start || start == cur_iva.get("23." MOV_MESELIQ).as_int()) { - if(tiporeg == iva_vendite) - totopattxc += imp; - else - totoppasxc += imp; - } - else - { - if(tiporeg == iva_vendite) + // Prendo il tipo di registro + TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno); + int tiporeg = reg.tipo(); + bool is_corrispettivo = reg.corrispettivi(); + + // Prendiamo l'imponibile + real imp = cur_iva.get("25.IMPONIBILE").as_real(); + real imposta = cur_iva.get("25.IMPOSTA").as_real(); + + // Se è un movimento IvaXCassa o LiqDiff + if (has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool())) { - // Controllo il reverse charge, non va calcolato nel totale delle operazioni attive! - // Se non ha una riga di movimento non lo sommo - TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1"; - if(!cache().get(LF_RMOV, key_rc).empty()) - { - // Controllo se è un corrispettivo non scorporato (imponibile e iva assieme) - if(is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO) - { - // Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla - // Es iva 22% => imp : 122 = x : 100 - codiva.scorpora(imp); - } - totopatt += imp; - int i = 1; - } + if (tiporeg == iva_vendite) + totopattxc += imp; + else + totoppasxc += imp; } else - totoppas += imp; + { + if (tiporeg == iva_vendite) + { + // Controllo il reverse charge, non va calcolato nel totale delle operazioni attive! + // Se non ha una riga di movimento non lo sommo + TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1"; + if (!cache().get(LF_RMOV, key_rc).empty()) + { + // Controllo se è un corrispettivo non scorporato (imponibile e iva assieme) + if (is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO) + { + // Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla + // Es iva 22% => imp : 122 = x : 100 + codiva.scorpora(imp); + } + totopatt += imp; + } + } + else + totoppas += imp; + } } } @@ -514,12 +516,8 @@ void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO // IVA detraibile imposta_diff = imposta_xcas = ZERO; - TString pippo = ivadetxc.stringa(); - TString pluto = imposta_xcas.stringa(); // 2 = Acquisti calc_inc_diff(anno, start, iva_acquisti, imposta_diff, imposta_xcas); - pippo = ivadetxc.stringa(); - pluto = imposta_xcas.stringa(); ivadetxc = ivadetxc + imposta_xcas; ivadetdiff = ivadetdiff + imposta_diff; } @@ -686,7 +684,7 @@ void TCom_liq_per_iva_msk::save_gen() _true_data.put("VEREFF", get(F_VEREFF)); } -void TCom_liq_per_iva_msk::check_old_value(int field, real val) +void TCom_liq_per_iva_msk::check_old_value(int field, const real& val) { if(_true_data.empty()) {