diff --git a/cg/cg4300.h b/cg/cg4300.h index 004e65657..3d50387f5 100755 --- a/cg/cg4300.h +++ b/cg/cg4300.h @@ -478,6 +478,9 @@ public: // ventilasiun void recalc_ventilation (int month, const char* codatt); + + // ag. viaggio + void recalc_viaggio (int month, const char* codatt); // plafond void zero_plafond (int month, const char* codatt); diff --git a/cg/cg4301.cpp b/cg/cg4301.cpp index 485f4a800..c570c0335 100755 --- a/cg/cg4301.cpp +++ b/cg/cg4301.cpp @@ -396,11 +396,14 @@ bool TLiquidazione_app::update_att(int month, const char* codatt, { zero_att(month,codatt); recalc_att(month,codatt); - // Ricalcolo ventilazione: + // Ricalcolo ventilazione e ag. viaggio: // - tutti i mesi se e' mensile - // - nei mesi 3,6,9,12 se trimestrale + // - nei mesi 3,6,9,12,13 se trimestrale if (_freqviva == "M" || (_freqviva == "T" && (is_trim(month) || month == 13))) + { recalc_ventilation(month, codatt); + recalc_viaggio(month, codatt); + } recalc_corrispettivi(month, codatt); } @@ -732,7 +735,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) case acquisto: // ACQUISTO (per chi non l'avesse capito) // Per le anguille delle antille e le saracche delle molucche... // Gli acquisti con tipocr 1,2,3,5,8 vanno totalizzati se e solo se - // il tipo iva e' diverso da NON SOGGETTO + // il tipo iva e' diverso da NON SOGGETTO, if (tipoiva != "NS") { if (tipocr == 1 || tipocr ==5) @@ -1344,7 +1347,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) if (_isviaggio) { - real deb_mens = 0.0; _plm->put("R5", corr_CEE); _plm->put("R6", corr_noCEE); _plm->put("R7", acq_CEE); @@ -1356,27 +1358,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt) // ---- NOTA BENE ------------------------ // l'iva vendite nei plm non comprende // 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); perc_r.round(2); - 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); + // in liquidazione (mensile o trimestrale): recalc_viaggio() } else if (_isagricolo) { @@ -1679,7 +1661,7 @@ void TLiquidazione_app::iva11_set_arr(const TString& codatt) array.add(imponibile,TAB11_R9,LF_TAB1100B); - if (tipocr == 4 && tipodoc != "AF") + if (tipocr == 4 && tipodoc != "AF" && !sosp_imp) array.add(imponibile,TAB11_EC113); } diff --git a/cg/cg4303.cpp b/cg/cg4303.cpp index 99a6a0fd1..f48ec2855 100755 --- a/cg/cg4303.cpp +++ b/cg/cg4303.cpp @@ -268,6 +268,52 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt) _pam->rewrite(); } +// ricalcolo iva dovuta agenzie viaggio +void TLiquidazione_app::recalc_viaggio(int month, const char* codatt) +{ + if (!_isviaggio) + return; + + real c_CEE, c_mCEE, c_fCEE, a_CEE, a_mCEE, a_fCEE, a_mfCEE; + + for (int mese = month == 13 ? 13 : 1; mese <= month; mese++) + { + if (!is_month_ok(mese,month) || !look_plm(mese, codatt)) + continue; + + c_CEE += _plm->get_real("R5"); // corrispettivi CEE + c_mCEE += _plm->get_real("R9"); // corrispettivi misti CEE + c_fCEE += _plm->get_real("R6"); // corrispettivi fuori CEE + a_CEE += _plm->get_real("R7"); // acquisti CEE + a_mCEE += _plm->get_real("R10"); // acquisti misti parte CEE + a_fCEE += _plm->get_real("R8"); // acquisti fuori CEE + a_mfCEE += _plm->get_real("R11"); // acquisti misti parte fuori CEE + } + // calcolo debito mensile da aggiornare su tabella POM + real perc_r = (a_mCEE * CENTO)/(a_mCEE + a_mfCEE); perc_r.round(2); + real ivm = (c_mCEE * perc_r)/CENTO; ivm.round(ROUND_LIRA); + real tc = (c_CEE + ivm); + real ta = (a_CEE + a_mCEE); + real bi = tc - ta - credito_costo_prec(month); + + real deb_mens; + + if (bi.sign() > 0) + { + deb_mens = (bi /((CENTO + aliquota_agvia())/CENTO)) * + (aliquota_agvia()/CENTO); + if (month == 13) + round_mille_lire(deb_mens); + else + deb_mens.ceil(ROUND_LIRA); + } + if (look_plm(month,codatt)) + { + _pom->put("R13", deb_mens); // Scrive il valore corretto (mensile/trimestrale/annuale) + _pom->rewrite(); + } +} + _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts, bool stliq) { diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index 8f35d8fee..87ba3e027 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -353,18 +353,25 @@ void TLiquidazione_app::describe_agricolo(int month, const char* codatt) } } - look_plm(month,codatt); + for (int mese = month == 13 ? 13 : 1; mese <= month; mese++) + { + if (!is_month_ok(mese,month)) + continue; + + if (!look_plm(mese, codatt)) + continue; - d->_r0 += _plm->get_real("R5"); - d->_r1 += _plm->get_real("R6"); - d->_r2 += _plm->get_real("R7"); - d->_r3 += _plm->get_real("R8"); - d->_r4 += _plm->get_real("R9"); - d->_r5 += _plm->get_real("R10"); - d->_r6 += _plm->get_real("R11"); - d->_r7 += _pum->get_real("R10"); - d->_r8 += _pum->get_real("R11"); - d->_r11 += _plm->get_real("R13"); + d->_r0 += _plm->get_real("R5"); + d->_r1 += _plm->get_real("R6"); + d->_r2 += _plm->get_real("R7"); + d->_r3 += _plm->get_real("R8"); + d->_r4 += _plm->get_real("R9"); + d->_r5 += _plm->get_real("R10"); + d->_r6 += _plm->get_real("R11"); + d->_r7 += _pum->get_real("R10"); + d->_r8 += _pum->get_real("R11"); + d->_r11 += _plm->get_real("R13"); + } // Aggiungo anche questi per comodita' futura. // in caso di ditta a regime agricolo // alias: @@ -385,17 +392,22 @@ void TLiquidazione_app::describe_viaggio(int month, const char* codatt) if (!look_lim(month)) return; _DescrItem* d = new _DescrItem(REGVIA); - - look_plm(month, codatt); - - d->_r0 += _plm->get_real("R5"); // corrispettivi CEE - d->_r1 += _plm->get_real("R9"); // corrispettivi misti CEE - d->_r2 += _plm->get_real("R6"); // corrispettivi fuori CE - d->_r3 += _plm->get_real("R7"); // acquisti CEE - d->_r4 += _plm->get_real("R10"); // acquisti misti parte CEE - d->_r5 += _plm->get_real("R8"); // acquisti fuori CEE - d->_r6 += _plm->get_real("R11"); // acquisti misti parte fuori CEE + + for (int mese = month == 13 ? 13 : 1; mese <= month; mese++) + { + if (!is_month_ok(mese,month) || !look_plm(mese, codatt)) + continue; + + d->_r0 += _plm->get_real("R5"); // corrispettivi CEE + d->_r1 += _plm->get_real("R9"); // corrispettivi misti CEE + d->_r2 += _plm->get_real("R6"); // corrispettivi fuori CE + d->_r3 += _plm->get_real("R7"); // acquisti CEE + d->_r4 += _plm->get_real("R10"); // acquisti misti parte CEE + d->_r5 += _plm->get_real("R8"); // acquisti fuori CEE + d->_r6 += _plm->get_real("R11"); // acquisti misti parte fuori CEE + } + // credito di costo precedente (CHECK annuale) d->_r8 = credito_costo_prec(month); @@ -431,13 +443,6 @@ void TLiquidazione_app::describe_viaggio(int month, const char* codatt) round_mille_lire(d->_r11); else d->_r11.ceil(ROUND_LIRA); } - if (month == 13) - { - look_plm(month,codatt); // Scrive l'iva dovuta, visto che la describe_pims() viene chiamata successivamente. - _pom->put("R13",d->_r11); - _pom->rewrite(); - } - _descr_arr.add(d); }