Corretti errori MI2308 e MI2309, relativo al calcolo dell'acconto

per anno precedente.


git-svn-id: svn://10.65.10.50/trunk@4340 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-05-14 10:46:05 +00:00
parent 2b26a6840c
commit a2e7b5aa4a

View File

@ -470,6 +470,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
{ {
// determina casistica // determina casistica
enum { mm, tt, mt, tm, boh } history = boh; enum { mm, tt, mt, tm, boh } history = boh;
real divide_by_three = 1.0;
char thh = *_freqviva; char thh = *_freqviva;
TString16 thyear = _year; TString16 thyear = _year;
@ -526,9 +527,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
real av = _lim->get_real("R11"); real av = _lim->get_real("R11");
bc += av; bc += av;
} }
if (_basecalc == tm) if (history == tm)
// tm come tt ma si divide per 3 la base di calcolo prima di calcolare l'88% // tm come tt ma si divide per 3 la base di calcolo prima di calcolare l'88%
bc /= real(3.0); divide_by_three = 3.0;
break; break;
case mt: case mt:
// basecalcolo: 10, 11, 12 anno prec., 10 e 11 se a debito, 12 vedi acconto; // basecalcolo: 10, 11, 12 anno prec., 10 e 11 se a debito, 12 vedi acconto;
@ -557,9 +558,10 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
break; break;
} }
round_mille_lire(bc);
if (bc.sign() > 0) //debito if (bc.sign() > 0) //debito
{ {
acc = (bc * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO; acc = ((bc / divide_by_three) * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO;
acc.round(ROUND_LIRA); acc.round(ROUND_LIRA);
} }
@ -567,127 +569,128 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
} }
_year = thyear; _year = thyear;
} }
else if (_basecalc == incorso) else
{ if (_basecalc == incorso)
// that's pazzesc but as it turns out there's no better way {
_comp_acconto = TRUE; // that's pazzesc but as it turns out there's no better way
// force recalc of current month _comp_acconto = TRUE;
_recalc = one; // force recalc of current month
int need_refresh = FALSE; _recalc = one;
for (int mese = 1; mese < _month; mese++) int need_refresh = FALSE;
if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0"))) for (int mese = 1; mese < _month; mese++)
{ if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0")))
need_refresh = TRUE; {
break; need_refresh = TRUE;
} break;
if (need_refresh && yesno_box("Alcuni mesi precedenti non " }
"risultano ricalcolati. E' consigliabile il ricalcolo. " if (need_refresh && yesno_box("Alcuni mesi precedenti non "
"Si desidera eseguirlo?")) "risultano ricalcolati. E' consigliabile il ricalcolo. "
_recalc = ever; "Si desidera eseguirlo?"))
_recalc = ever;
for (int m = 1; m <= _month; m++) for (int m = 1; m <= _month; m++)
if (is_month_plain(m) || _recalc == ever) if (is_month_plain(m) || _recalc == ever)
{ {
if (_prind->iscancelled()) break; if (_prind->iscancelled()) break;
update_firm(m); update_firm(m);
} }
// calcola l'acconto // calcola l'acconto
if (look_lim(12)) //posiziona anche la tabella lam if (look_lim(12)) //posiziona anche la tabella lam
{ {
// bc = result_liq(12); // bc = result_liq(12);
// somma i non fatturati/non annotati // somma i non fatturati/non annotati
// bc += inf + ina; // bc += inf + ina;
cre = _lim->get_real("R12"); cre = _lim->get_real("R12");
//quando calcolo la 12° ci vado a sommare il
//versa. dovuto all'acconto
//allora devo ricalcolarmi l'effettivo credito
cre -= _lim->get_real("R11");
deb = _lim->get_real("R13") + inf + ina;
bc = deb - cre;
if (bc.sign() > 0) acc = bc;
// 11/09/1995
iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12
iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12
cre_pre = _lam->get_real("R2"); //credito precedente
iva_ret = _lim->get_real("R5"); //rettifica
iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso
ult_det = _lim->get_real("R6"); //ulteriori detrazioni
//iva_pro: //iva relativa alla percentuale di prorata
TTable plm ("PLM");
plm.zero();
plm.put("CODTAB",_year);
TRectype rec (plm.curr());
plm.read(_isgteq);
for (; !plm.eof(); plm.next())
{
if (plm.curr() != rec) break;
iva_pro += plm.get_real("R2");
}
//acq_intr
TTable pom ("POM");
pom.zero();
pom.put("CODTAB",_year);
rec = pom.curr();
pom.read(_isgteq);
for (; !pom.eof(); pom.next())
{
if (pom.curr() != rec) break;
acq_intr += pom.get_real("R0");
}
tipo_acc = "A"; //flag per dire che si e' utilizzato il metodo analitico
//stop
}
else error = 1;
// pulisci il water //quando calcolo la 12° ci vado a sommare il
_comp_acconto = FALSE; //versa. dovuto all'acconto
_isprint = FALSE; //allora devo ricalcolarmi l'effettivo credito
/* cre -= _lim->get_real("R11");
update_firm(12); deb = _lim->get_real("R13") + inf + ina;
*/
for (int i = 1; i <= _month; i++) bc = deb - cre;
if (is_month_plain(i))
update_firm(i); if (bc.sign() > 0) acc = bc;
// 11/09/1995
iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12
iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12
cre_pre = _lam->get_real("R2"); //credito precedente
iva_ret = _lim->get_real("R5"); //rettifica
iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso
ult_det = _lim->get_real("R6"); //ulteriori detrazioni
//iva_pro: //iva relativa alla percentuale di prorata
TTable plm ("PLM");
plm.zero();
plm.put("CODTAB",_year);
TRectype rec (plm.curr());
plm.read(_isgteq);
for (; !plm.eof(); plm.next())
{
if (plm.curr() != rec) break;
iva_pro += plm.get_real("R2");
}
//acq_intr
TTable pom ("POM");
pom.zero();
pom.put("CODTAB",_year);
rec = pom.curr();
pom.read(_isgteq);
for (; !pom.eof(); pom.next())
{
if (pom.curr() != rec) break;
acq_intr += pom.get_real("R0");
}
tipo_acc = "A"; //flag per dire che si e' utilizzato il metodo analitico
//stop
}
else error = 1;
// pulisci il water
_comp_acconto = FALSE;
_isprint = FALSE;
/*
update_firm(12);
*/
for (int i = 1; i <= _month; i++)
if (is_month_plain(i))
update_firm(i);
//18/10/1995 //18/10/1995
_lim->put("B0",""); _lim->put("B0","");
_lim->rewrite(); _lim->rewrite();
if (look_lim(13)) if (look_lim(13))
{ {
_lim->put("B0",""); _lim->put("B0","");
_lim->rewrite(); _lim->rewrite();
} }
//fine //fine
_isprint = TRUE; _isprint = TRUE;
} }
// sbatti l'acconto (e non solo!) in LIA // sbatti l'acconto (e non solo!) in LIA
if (look_lia()) if (look_lia())
{
if (isdifferita && _basecalc == incorso)
{ {
acc *= real(2.0); if (isdifferita && _basecalc == incorso)
acc /= real(3.0); {
acc *= real(2.0);
acc /= real(3.0);
}
_lia->put("R4",acc);
_lia->put("R7",iva_ven);
_lia->put("R8",iva_acq);
_lia->put("R9",iva_ret);
_lia->put("R10",iva_rim);
_lia->put("R11",ult_det);
_lia->put("R12",iva_pro);
TToken_string rr("",'!');
rr.add(cre_pre.string(),0);
rr.add(acq_intr.string(),1);
_lia->put("S1",rr);
_lia->put("S8",tipo_acc);
_lia->rewrite();
} }
_lia->put("R4",acc);
_lia->put("R7",iva_ven);
_lia->put("R8",iva_acq);
_lia->put("R9",iva_ret);
_lia->put("R10",iva_rim);
_lia->put("R11",ult_det);
_lia->put("R12",iva_pro);
TToken_string rr("",'!');
rr.add(cre_pre.string(),0);
rr.add(acq_intr.string(),1);
_lia->put("S1",rr);
_lia->put("S8",tipo_acc);
_lia->rewrite();
}
/*** Non bisogna aggiornare la delega /*** Non bisogna aggiornare la delega
Se in un prossimo futuro si decidesse di ripristinare questa Se in un prossimo futuro si decidesse di ripristinare questa
@ -710,26 +713,26 @@ if (look_lia())
***/ ***/
// per questa volta lasciamo perdere la describe_acconto // per questa volta lasciamo perdere la describe_acconto
if (_isprint) if (_isprint)
{ {
// segnalazioni di errore da gesticolare: // segnalazioni di errore da gesticolare:
// error = 0: no error // error = 0: no error
// error = 1: manca tabella risultati liquidazione per l'anno indicato // error = 1: manca tabella risultati liquidazione per l'anno indicato
// error = 2: manca tabella risultati liquidazione per l'anno precedente // error = 2: manca tabella risultati liquidazione per l'anno precedente
// error = 3: manca tabella dichiarazione annuale per l'anno precedente // error = 3: manca tabella dichiarazione annuale per l'anno precedente
_DescrItem* d = new _DescrItem(ACCONTO); _DescrItem* d = new _DescrItem(ACCONTO);
d->_r0 = bc; d->_r0 = bc;
d->_r1 = acc; d->_r1 = acc;
d->_r2 = cre; d->_r2 = cre;
d->_r3 = deb; d->_r3 = deb;
d->_f0 = _basecalc == incorso; d->_f0 = _basecalc == incorso;
d->_f1 = _isbase; d->_f1 = _isbase;
d->_f2 = error; d->_f2 = error;
d->_f3 = isdifferita; d->_f3 = isdifferita;
d->_s0 = _nditte->curr().get("CODDITTA"); d->_s0 = _nditte->curr().get("CODDITTA");
d->_s1 = _nditte->curr().get("RAGSOC"); d->_s1 = _nditte->curr().get("RAGSOC");
_descr_arr.add(d); _descr_arr.add(d);
} }
return TRUE; return TRUE;
} }