Aggiunta funzione recalc_viaggio() per ricalcolare il debito mensile.

Corretti errori MI6304 relativo al trasferimento campo EC113 nel caso di
fatture in sospensione; MI6305 relativo alle ditte agricole trimestrali
e MI2383 relativo alle agenzie di viaggio trimestrali.


git-svn-id: svn://10.65.10.50/trunk@5634 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-11-18 09:19:58 +00:00
parent e1ca540385
commit 715eba14e2
4 changed files with 90 additions and 54 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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)
{

View File

@ -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);
}