Finiti errore PR116 PR117
git-svn-id: svn://10.65.10.50/trunk@2340 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2aa34190c3
commit
4f4ac200cd
@ -73,11 +73,30 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
if (newu != ts.get(5)) // modificata ulteriore classificazione
|
||||
mod = m_ulc = TRUE;
|
||||
break;
|
||||
case K_DEL:
|
||||
case K_DEL:
|
||||
doit = !recalc;
|
||||
if (doit)
|
||||
{
|
||||
pag.remove_rata(r);
|
||||
const int nrate = msk->get_int(FS_NRATE) - 1;
|
||||
msk->set(FS_NRATE, nrate);
|
||||
}
|
||||
break;
|
||||
case K_INS:
|
||||
// permette aggiunta e cancellazione solo se non c'e'
|
||||
// ricalcolo automatico
|
||||
doit = !recalc;
|
||||
if (doit)
|
||||
{
|
||||
const int prev = r - 1;
|
||||
const int nrate = msk->get_int(FS_NRATE) + 1;
|
||||
|
||||
msk->set(FS_NRATE, nrate);
|
||||
pag.add_rata(ZERO, 0, pag.tipo_rata(prev), pag.ulc_rata(prev));
|
||||
pag.adjust_fixed_scad();
|
||||
pag.set_sheet(ps);
|
||||
rws = ps.rows_array();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -174,7 +174,7 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
// diciamo che gli diciamo il numero giusto
|
||||
if (first == 1 && n < 2) return;
|
||||
|
||||
const int nact = first == 1 ? n - 1 : n;
|
||||
int nact = first == 1 ? n - 1 : n;
|
||||
|
||||
real p = real(100) / real(nact);
|
||||
p.round(2);
|
||||
@ -194,19 +194,35 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
{
|
||||
|
||||
if (nr == first + 1)
|
||||
{
|
||||
{
|
||||
// suddividi equamente e riaggiusta la percentuale di conseguenza
|
||||
real div = tot / real(nact);
|
||||
real perc = real(100.0)*(div/tot);
|
||||
real div = tot / real(nact);
|
||||
if (_inited)
|
||||
div.round(_round);
|
||||
real perc = (100.0 * div) / tot;
|
||||
real rem(tot);
|
||||
|
||||
for (i = first; i < n; i++)
|
||||
{
|
||||
if (i > first)
|
||||
add_rata(perc, (sscad == -1 ? scad_rata(0) : sscad), tipo_rata(0));
|
||||
if (_inited) set_imprata (i, div);
|
||||
add_rata(perc, (sscad == -1 ? scad_rata(first) : sscad), tipo_rata(0));
|
||||
if (_inited)
|
||||
{
|
||||
set_imprata (i, div);
|
||||
rem -= tpay_rata(i);
|
||||
}
|
||||
set_percrata(i, perc);
|
||||
}
|
||||
if (_inited && _tpr > 0 && _tpr < 4)
|
||||
set_imprata(0, tpay_rata(0) + _secndr);
|
||||
if (_inited && rem != ZERO)
|
||||
{
|
||||
real r(tpay_rata(first) + rem);
|
||||
set_imprata(first, r);
|
||||
if (_inited && _tpr > 0 && _tpr < 4)
|
||||
r -= _secndr;
|
||||
set_percrata(first, 100 * r / tot);
|
||||
}
|
||||
}
|
||||
else if (nr > first + 1)
|
||||
{
|
||||
@ -216,19 +232,35 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
// suddividere il resto dell'importo tra le altre
|
||||
real rfirst = _inited ? tpay_rata(0) : perc_rata(0);
|
||||
if (_inited && _tpr > 0 && _tpr < 4) rfirst -= _secndr;
|
||||
|
||||
real rest = tot - _tpr >= 4 ? ZERO : rfirst;
|
||||
const real div = rest / real(nact);
|
||||
real perc = real(100.0)*(div/tot);
|
||||
|
||||
real rest = tot - (_tpr >= 4 ? ZERO : rfirst);
|
||||
real div = rest / real(nact - (first > 0 ? 0 : 1));
|
||||
if (_inited)
|
||||
div.round(_round);
|
||||
|
||||
real perc = (100.0 * div)/tot;
|
||||
real rem(rest);
|
||||
|
||||
for (i = 1; i < n; i++)
|
||||
{
|
||||
if (i >= nr)
|
||||
add_rata(perc, (sscad == -1 ? (i < nr ? scad_rata(i) : scad_rata(nr-1)) : sscad),
|
||||
add_rata(perc, (sscad == -1 ? scad_rata(nr-1) : sscad),
|
||||
tipo_rata(nr-1), ulc_rata(nr-1));
|
||||
if (_inited) set_imprata (i, div);
|
||||
if (_inited)
|
||||
{
|
||||
set_imprata (i, div);
|
||||
rem -= tpay_rata(i);
|
||||
}
|
||||
set_percrata(i, perc);
|
||||
}
|
||||
if (_inited && rem != ZERO)
|
||||
{
|
||||
real r(tpay_rata(first) + rem);
|
||||
set_imprata(first, r);
|
||||
if (_inited && _tpr > 0 && _tpr < 4)
|
||||
r -= _secndr;
|
||||
set_percrata(first, 100 * r / tot);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -261,6 +293,7 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
for (; i < nr; i++)
|
||||
_rate.destroy(i);
|
||||
_rate.pack();
|
||||
adjust_fixed_scad();
|
||||
|
||||
_dirty = TRUE;
|
||||
}
|
||||
@ -441,10 +474,11 @@ void TPagamento::set_percrata(int i, real r)
|
||||
real TPagamento::recalc_percrata(int i)
|
||||
{
|
||||
real hm(_tpr < 4 ? _firstr : _secndr);
|
||||
if (i == 0 && _tpr > 0 && _tpr < 4)
|
||||
hm -= _secndr;
|
||||
|
||||
real perc = tpay_rata(i) * 100.0 / hm;
|
||||
real tpay(tpay_rata(i));
|
||||
if (i == 0 && _tpr > 0 && _tpr < 4)
|
||||
tpay -= _secndr;
|
||||
real perc = tpay * 100.0 / hm;
|
||||
perc.round(2);
|
||||
set_percrata(i, perc);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user