From 52a5a5a0dfd289611c31f787f4e67c40ad13d4b2 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Sun, 24 Apr 2022 02:48:20 +0200 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:=2012.?= =?UTF-8?q?0=201138=20Files=20correlati=20=20=20=20=20:=20cg4=20Commento:?= =?UTF-8?q?=20Corretta=20imputazione=20quadro=20VT=20ora=20viene=20usato?= =?UTF-8?q?=20il=20comune=20dell'unit=C3=A0=20locale=20corretto=20calcolo?= =?UTF-8?q?=20imponibile=20nel=20caso=20di=20fatture=20pagate=20nel=20peri?= =?UTF-8?q?odo=20in=20acluni=20casi=20aggiungieva=20l'imonibile=202=20volt?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cg/cg4301.cpp | 58 +++++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index cfe4dc836..eda004d48 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -36,19 +36,21 @@ #ifdef DBG #define _BREAK(func, par, values) func(par, values); -#define BREAK_DBG _BREAK(check_nreg, __nreg, __values) -#define LOAD_VAL load_values() +#define BREAK_NREG _BREAK(check_nreg, __nreg, __nregs) +#define BREAK_CODIVA(codiva) _BREAK(check_codiva, codiva, __codivas) +#define LOAD_VAL(sel) load_values(sel) -const char * load_values() +const char * load_values(int selector) { TFilename dbgname; TFilename filename("dbg"); + const char * names[] = { "NReg", "CodIVA"}; filename << main_app().name(); dbgname.currdir(); dbgname.add(filename); dbgname.ext("ini"); - return ini_get_string(dbgname, "Main", "Values"); + return ini_get_string(dbgname, "Main", names[selector]); } bool check_nreg(TToken_string &nreg, TToken_string &values) @@ -62,8 +64,20 @@ bool check_nreg(TToken_string &nreg, TToken_string &values) } return false; } + +bool check_codiva(const TString4 &codiva, TToken_string &values) +{ + + FOR_EACH_TOKEN(values, val) + { + if (codiva == val) + return true; + } + return false; +} #else -#define BREAK_DBG +#define BREAK_NREG +#define BREAK_CODIVA #endif bool TLiquidazione_app::recalc_all() @@ -1149,10 +1163,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & TDate date = _mov->get(MOV_DATAREG); #ifdef DBG TToken_string __nreg = _mov->get(MOV_NUMREG); - TToken_string __values = LOAD_VAL; + TToken_string __nregs = LOAD_VAL(0); + TToken_string __codivas = LOAD_VAL(1); #endif - BREAK_DBG; + BREAK_NREG; const int liqmonth = _mov->get_int(MOV_MESELIQ); const TString4 reg = _mov->get("REG"); const bool isreg = look_reg(reg); @@ -1200,7 +1215,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & TPartite_array arrpart; // Partite interessate TPointer_array pagscatt; // Righe di pagsca interessate - BREAK_DBG; + BREAK_NREG; if (fattrit) dok = (atoi(_year) == datadoc.year()) && _month == 13; @@ -1222,7 +1237,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & bool game_found = false; TImporto residuo; - BREAK_DBG; + BREAK_NREG; if (has_sc) { arrpart.add_numreg(numreg); @@ -1254,13 +1269,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & bool regular_month = orizzonte >= date; bool first_month = regular_month && date > inizio + 1L; - BREAK_DBG; -#ifdef DBG - if (rp.get_long(PART_NREG) == 100616) - int i = 1; -#endif + BREAK_NREG; flag_pg_nc = rp.calcola_pagato_periodo(first_month ? botime : inizio + 1L, orizzonte, pg_per, nc_per, &pagscatt) && regular_month; - residuo += pg_per; + if (IMPORTO_NON_ZERO(residuo)) + residuo += pg_per; if (pagscatt.items() >= 2) { // Fondo tra loro le righe generate dallo stesso pagamento @@ -1305,7 +1317,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (ps == obj) { found = true; - BREAK_DBG; + BREAK_NREG; } } if (!found) @@ -1368,7 +1380,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & datainc = data_end_cassa; #ifdef DBG else - BREAK_DBG; + BREAK_NREG; #endif _mov->put(MOV_DATAINC, datainc); if (datainc < date) @@ -1454,7 +1466,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & const TCodiceIVA& civa = cached_codIVA(codiva); #ifdef DBG - BREAK_DBG; + BREAK_NREG; if (tipomov == vendite) int i = 1; if (!bIsMovDiff && (civa.percentuale() == 20)) @@ -1528,7 +1540,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & const TCli_for & clifo = cached_clifor(LF_MOV, _mov->curr()); const int tp = clifo.alleg(); - BREAK_DBG; + BREAK_NREG; if ((soloiva && (caus_reg.objptr(codcaus) != NULL || tp < 1)) && sosp_imp != vol_affari) @@ -1551,9 +1563,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & real diff_ivar = (is_detr_diff == 0) ? impos_det : impos_ind; real diff_totr = diff_impr + diff_ivar; + if (diff_totr == ZERO) continue; + BREAK_CODIVA(codiva); TDate datafat = _mov->get_date(MOV_DATAREG); long numreg = _rmoviva->get_long(RMI_NUMREG); @@ -1567,7 +1581,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & int mesereg = liqmonth == 0 ? datareg.month() : liqmonth; bool ok = is_month_ok(mesereg, month) && (atoi(_year) == datareg.year()); - BREAK_DBG; + BREAK_NREG; if (ok) { datafat = datareg; @@ -1918,7 +1932,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & bool bMovDiffToAdd = true; #ifdef DBG - BREAK_DBG; + BREAK_NREG; if (!bIsMovDiff && (civa.percentuale() == 20)) real p = imposta_orig / imponibile_orig * CENTO; #endif @@ -2689,7 +2703,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (diff_imp > ZERO) int i = 1; tab->curr().add("R30", diff_imp); - tab->curr().add("R31", diff_iva); + tab->curr().add("R31", diff_iva); tab->curr().add("R32", incdiff_imp); tab->curr().add("R33", incdiff_iva); fdiff_imp_acq += diff_imp;