From 0cbe5ff7b68dc1951c35fc8f55293bf2c6ae1e0d Mon Sep 17 00:00:00 2001 From: bonazzi Date: Thu, 19 Apr 2018 22:47:28 +0000 Subject: [PATCH] Patch level : 12.0 562 Files correlati : cg4.exe Modificata la liquidazione delle fatture in ritardo Aggiunta la gestione dell'uscita dal regime di cassa git-svn-id: svn://10.65.10.50/branches/R_10_00@24464 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/cg/cg4301.cpp | 79 ++++++++++++++++++++++++++++++----------------- src/cg/cg4304.cpp | 4 +-- 2 files changed, 53 insertions(+), 30 deletions(-) diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index 2540ea014..199564e1c 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -1087,8 +1087,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & } data_rif_cassa.set_end_month(); - todate.set_end_month(); - fine.set_end_month(); + todate.set_end_month(); + fine.set_end_month(); from.put(MOV_REG, fromreg); to.put(MOV_REG, toreg); @@ -1114,7 +1114,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & _cur->setfilter(filter); const long items = _cur->items(); - _cur->freeze(); + + _cur->freeze(); *_cur = 0; @@ -1235,7 +1236,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & #ifdef DBG nr = _mov->get_long(MOV_NUMREG); - if (nr == 27891) + if (nr == 25722 || + nr == 25863 || + nr == 27888 || + nr == 28033) int i = 1; #endif @@ -1295,7 +1299,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & } } } - if (iva_diff || sarebbe_maturata(_mov->curr(), inizio+1L, fine) || end_cassa) + if (iva_diff || sarebbe_maturata(_mov->curr(), inizio+1L, fine) || (iva_cass && end_cassa)) { TPointer_array pagscaold; TImporto pg_tot, nc_tot; @@ -1362,7 +1366,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & else { // Fattura pił vecchia di un anno a ente NON pubblico - if (sarebbe_maturata(_mov->curr(), inizio+1L, fine) || end_cassa) + if (sarebbe_maturata(_mov->curr(), inizio+1L, fine) || (iva_cass && end_cassa)) tot_da_incassare = _mov->get_real(MOV_TOTDOC); } } @@ -1372,11 +1376,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & tot_incassato = tot_da_incassare; datainc = data_maturazione_IVA_diff(_mov->curr()); - if (end_cassa) - { - if (!datainc.ok() || datainc > data_end_cassa) - datainc = data_end_cassa; - } + if (iva_cass && end_cassa) + datainc = data_end_cassa; _mov->put(MOV_DATAINC, datainc); if (datainc < date) datainc = date; @@ -1523,10 +1524,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & const int tp = clifo.get_int(CLI_ALLEG); #ifdef DBG - const long nr = _mov->get_long(MOV_NUMREG); + nr = _mov->get_long(MOV_NUMREG); - if (nr == 214882) - int i = 1 ; + if (nr == 25722 || + nr == 25863 || + nr == 27888 || + nr == 28033) + int i = 1; #endif if ((soloiva && @@ -1558,8 +1562,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & long numreg = _rmoviva->get_long(RMI_NUMREG); const TDate datareg = _mov->get_date(MOV_DATAREG); int mesereg = datareg.month(); - const bool ok = is_month_ok(mesereg, month) && (atoi(_year) == datareg.year()); + bool ok = is_month_ok(mesereg, month) && (atoi(_year) == datareg.year()); + if (!ok && (iva_cass && end_cassa && month < 13)) + ok = (datareg.year() < atoi(_year)) || (mesereg <= month); if (!ok || is_detr_diff == 1 || civa.tipo() == "NS") continue; if (bIsMovDiff && tm == tm_fattura) @@ -1721,19 +1727,36 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & bool pag_found = false; int err = rid.read(_isgteq); - +#ifdef DBG + if (nr == 29283) + int i = 1; +#endif + TDate orizzonte = fine; // caso tradizionale + + if (iva_cass) + { + const TDate data_rif = data_maturazione_IVA_diff(_mov->curr()); + if (data_rif < fine) + orizzonte = data_rif; + } + for (; err == NOERR && rid.get_long(RMI_NUMREG) == numreg && rid.get_int(RMI_NUMRIG) == numrig; err = rid.next()) { const int ridnumpro = rid.get_int(ID_NUMPRO); const tipo_movimento ridtipopag = (tipo_movimento) rid.get_int(PART_TIPOMOV); - - if (ridtipopag != tm_fattura && ridtipopag != tm_nessuno &&ridnumpro != numpro) + + if (ridtipopag != tm_fattura && ridtipopag != tm_nessuno && ridnumpro != numpro) { - pag_found = true; - if (sezfat != sezpag) - val_iva -= rid.get_real(RMI_IMPOSTA); - else - val_iva += rid.get_real(RMI_IMPOSTA); + const TDate datapag = rid.get_date(ID_DATAREGP); + + if (datapag <= orizzonte) + { + pag_found = true; + if (sezfat != sezpag) + val_iva -= rid.get_real(RMI_IMPOSTA); + else + val_iva += rid.get_real(RMI_IMPOSTA); + } } } if (!pag_found) @@ -1756,14 +1779,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & if (iva_cass) _imposta_inc_cassa_ven += val_iva; else - _imposta_inc_diff_ven+= val_iva; + _imposta_inc_diff_ven += val_iva; } else { if (iva_cass) - _imposta_inc_cassa_acq+= val_iva; + _imposta_inc_cassa_acq += val_iva; else - _imposta_inc_diff_acq+= val_iva; + _imposta_inc_diff_acq += val_iva; } incdiff_imp += val_imp; incdiff_iva += val_iva; @@ -2686,8 +2709,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & else { // fatture acquisto a liquidazione differita - tab->curr().add("R30", incdiff_imp); - tab->curr().add("R31", incdiff_iva); + tab->curr().add("R30", diff_imp); + tab->curr().add("R31", diff_iva); tab->curr().add("R32", incdiff_imp); tab->curr().add("R33", incdiff_iva); fdiff_imp_acq += diff_imp; diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index 2ada44136..cf9b76a0c 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -1620,9 +1620,9 @@ int TLiquidazione_app::print_acc_diff_xcassa(const _DescrItem& d) set_row(i++,FR("@11gIVA a liquidazione differita pagata@64g%r"), &ivadiff_pag); if (ivadiff_inc > ZERO) - set_row(i++,FR("@11gIVA per cassa incassata@75g%r"), &ivadiff_inc); + set_row(i++,FR("@11gIVA per cassa incassata@75g%r"), &ivaxcas_inc); if (ivadiff_pag > ZERO) - set_row(i++,FR("@11gIVA per cassa pagata@64g%r"), &ivadiff_pag); + set_row(i++,FR("@11gIVA per cassa pagata@64g%r"), &ivaxcas_pag); } return i; }