diff --git a/cg/cg4300.cpp b/cg/cg4300.cpp index 5bac646ae..b6e69849f 100755 --- a/cg/cg4300.cpp +++ b/cg/cg4300.cpp @@ -247,7 +247,7 @@ bool TLiquidazione_app::user_create() if (need_refresh) _recalc = ever; for (int mese = 1; mese < _month; mese++) // fino a 13 compreso - if (is_month_ok(mese, _month) || _recalc == ever) + if (is_month_plain(mese) || _recalc == ever) update_firm(mese); if (is_month_ok_strict(_month) || _month == 13) diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index d6622f6e9..02525a491 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -1121,7 +1121,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) _plm->put("R2", prorata); if (_isviaggio) - { + { + real deb_mens = 0.0; _plm->put("R5", corr_CEE); _plm->put("R6", corr_noCEE); _plm->put("R7", acq_CEE); @@ -1135,6 +1136,25 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) // l'iva agenzie di viaggio, calcolata // in liquidazione (mensile o trimestrale) // --------------------------------------- + // Mod 7/7/95: calcolo effettuato anche qui, in modo da + // avere l'IVA dovuta per riportarla nei progressivi + // Dato che il resto funziona non tocco nulla, ovvero + // duplico il calcolo di write_liq, nella remota ipotesi + // che ci siano due o piu' attivita' e siano tutte + // agenzie di viaggio + real perc_r = (acq_misCEE * CENTO)/(acq_misCEE + acq_misnoCEE); + real ivm = (corr_misCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA); + real tc = (corr_CEE + ivm); + real ta = (acq_CEE + acq_misCEE); + real bi = tc - ta - credito_costo_prec(month); + + if (bi.sign() > 0) + { + deb_mens = (bi /((CENTO + aliquota_agvia())/CENTO)) * + (aliquota_agvia()/CENTO); + deb_mens.ceil(ROUND_LIRA); // ceil voluto MI3074 + } + _pom->put("R13", deb_mens); } else if (_isagricolo) { diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index 00ea6c0a4..40e45b90f 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -366,6 +366,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) // descrittore riga autodafe' _DescrItem* ads = NULL; + // descrittore riga iva dovuta ag. viaggio' + _DescrItem* iads = NULL; // questa cazzata serve per far apparire l'intestazione delle colonne // anche se le colonne non ci sono; in tal modo si ottiene una peggior // chiarezza, una peggiore efficienza, una gran rottura di coglioni, @@ -533,6 +535,23 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) } } } + + look_plm(month,att); + real iva74t = _pom->get_real("R13"); + if (iva74t.sign() > 0) + { + if(iads == NULL) iads = new _DescrItem(PIM_ROW); + iads->_s0 = "74TER"; // cosi' vollero + iads->_s1 = "IVA "; // cosi' vollero + iads->_s2 = " dovuta - 74 ter"; // cosi' vollero + iads->_r1 += iva74t; + t1 += iva74t; + if (isfirst) + { + isfirst = FALSE; + iads->_f0 = TRUE; + } + } } if (autodafe.sign() > 0 || autodafe_iva.sign() > 0) @@ -551,25 +570,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt) } // ag. viaggio: iva dovuta 74 ter la vogliono in mezzo ai progressivi - // mi chiamano mimi', il perche' non so - look_lim(month); - real iva74t = _lim->get_real("R3"); - if (iva74t.sign() > 0) - { - _DescrItem* ads = new _DescrItem(PIM_ROW); - ads->_s0 = "74TER"; // cosi' vollero - ads->_s1 = "IVA "; // cosi' vollero - ads->_s2 = " dovuta - 74 ter"; // cosi' vollero - ads->_r1 = iva74t; - t1 += iva74t; - if (isfirst) - { - isfirst = FALSE; - ads->_f0 = TRUE; - } - _descr_arr.add(ads); - } - + if (iads != NULL) _descr_arr.add(iads); // prepara una bella riga di totali if (/* !isfirst */ TRUE) @@ -756,8 +757,6 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, { // tutti i versamenti, sempre e comunque d->_r8 = versamenti_IVA(_month, "1", TRUE); - // nessuno li ha scritti in LIM - d->_r0 -= d->_r8; } else // rispettiamo tutte le casistiche per i versamenti @@ -1299,7 +1298,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d) if (_is_visliq) { // stampa ad uso visualizzazione liquidazione IVA - set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti); + // set_row(rw++,"@11g$[r]Versamenti effettuati$[n]@58g%r", &versamenti); } else { diff --git a/cg/cg5500.cpp b/cg/cg5500.cpp index c21f5e773..69a9e1f7a 100755 --- a/cg/cg5500.cpp +++ b/cg/cg5500.cpp @@ -672,7 +672,15 @@ bool Visliq_app::vis_one(int m) d_mod = TRUE; } if (msk.field(F_DELIMP).dirty()) - { + { + real itt = _lim->get_real("R10"); + if (!itt.is_zero()) + { + // uso importi al netto degli interessi + // (vengono riapplicati dopo in write_del) + n_vers = n_vers/((itt+real(100.0))/real(100.0)); + n_vers.round(0); + } vers = n_vers; d_mod = TRUE; } @@ -749,7 +757,7 @@ void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& ver real rtt = _lim->get_real("R5"); // rettifica si real udt = _lim->get_real("R6"); // ult. detrazioni no real cgp = _lim->get_real("R7"); // conguaglio prorata no - real vrs = _lim->get_real("R8"); // versamenti si + real vrs = _lim->get_real("R8"); // versamenti no real vri = _lim->get_real("R9"); // versamenti integrativi no real itt = _lim->get_real("R10"); // tasso interesse no real act = _lim->get_real("R11"); // acconto si @@ -772,7 +780,7 @@ void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& ver } // calcola nuovi dati - real riscr = iva_acq + udt + vers + acc + cre_pre; + real riscr = iva_acq + udt + acc + cre_pre; real risdb = iva_ven + rimb + deb_pre; if (rett.sign() < 0) riscr -= rett; @@ -985,7 +993,9 @@ void Visliq_app::write_liq() } void Visliq_app::write_del() -{ +{ + bool wasdel = FALSE; + int month = atoi(*_lim_mese); TString abi(_lim->get("S4")); TString cab(_lim->get("S5")); @@ -993,12 +1003,21 @@ void Visliq_app::write_del() TDate date(_lim->get("D0")); real vers(_lim->get_real("R8")); real intr(_lim->get_real("R10")); + + if (vers.is_zero() && (wasdel = look_del(month,1))) + { + _del->remove(); + return; + } - bool wasdel = look_del(month,1,TRUE); + if (!wasdel) look_del(month,1,TRUE); // riapplica il tasso di interesse + // se trimstrale e' stato scorporato rispetto + // all'eventuale input utente real inter = vers*(intr/real(100.0)); inter.ceil(); + vers += inter; _del->put("R0",vers); _del->put("R1",inter); @@ -1200,7 +1219,7 @@ void Visliq_app::write_general(TMask& m) if (!look_lim(i)) // blocca riporto crediti e debiti carry = FALSE; - + // ricalcola crediti e debiti se non ci sono // liquidazioni non calcolate in mezzo if (carry) @@ -1246,10 +1265,20 @@ void Visliq_app::write_general(TMask& m) // e crea/aggiorna le deleghe if (nvers != overs) { - risc -= overs; - risc += nvers; - risl += overs; - risl -= nvers; + real itt = _lim->get_real("R10"); + if (!itt.is_zero()) + { + // uso importi al netto degli interessi + // (vengono riapplicati dopo in write_del) + nvers = nvers/((itt+real(100.0))/real(100.0)); + // overs = overs/((itt+real(100.0))/real(100.0)); + nvers.round(0); + // overs.round(0); + } + // risc -= overs; + // risc += nvers; + // risl += overs; + // risl -= nvers; vr_mod = TRUE; } if (vr_mod || ndate != odate || nabi != oabi || @@ -1336,8 +1365,6 @@ void Visliq_app::write_general(TMask& m) _lim->put("R1", nrimb); } } - // TBI controlla compatibilita' versamenti - _lam->put("R2", newcred); _lam->put("R3", newdebt); _lim->put("R0", risl); @@ -1356,17 +1383,17 @@ void Visliq_app::write_general(TMask& m) rstart = risl; } - else - { - // salva i valori modificati senza fare controlli - // e rimetti a lui i suoi debiti mettendo B0 a FALSE - if (orett != nrett) - _lim->put("R5", nrett); - if (orimb != nrimb) - _lim->put("R1", nrimb); - _lim->put("B0", ""); - _lim->rewrite(); - } + else + { + // salva i valori modificati senza fare controlli + // e rimetti a lui i suoi debiti mettendo B0 a FALSE + if (orett != nrett) + _lim->put("R5", nrett); + if (orimb != nrimb) + _lim->put("R1", nrimb); + _lim->put("B0", ""); + _lim->rewrite(); + } // Rimetti a posto righe sheet se serve int sr0 = (_lim->get_real("R0")).sign();