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
|
if (newu != ts.get(5)) // modificata ulteriore classificazione
|
||||||
mod = m_ulc = TRUE;
|
mod = m_ulc = TRUE;
|
||||||
break;
|
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:
|
case K_INS:
|
||||||
// permette aggiunta e cancellazione solo se non c'e'
|
// permette aggiunta e cancellazione solo se non c'e'
|
||||||
// ricalcolo automatico
|
// ricalcolo automatico
|
||||||
doit = !recalc;
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -174,7 +174,7 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
|||||||
// diciamo che gli diciamo il numero giusto
|
// diciamo che gli diciamo il numero giusto
|
||||||
if (first == 1 && n < 2) return;
|
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);
|
real p = real(100) / real(nact);
|
||||||
p.round(2);
|
p.round(2);
|
||||||
@ -194,19 +194,35 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (nr == first + 1)
|
if (nr == first + 1)
|
||||||
{
|
{
|
||||||
// suddividi equamente e riaggiusta la percentuale di conseguenza
|
// suddividi equamente e riaggiusta la percentuale di conseguenza
|
||||||
real div = tot / real(nact);
|
real div = tot / real(nact);
|
||||||
real perc = real(100.0)*(div/tot);
|
if (_inited)
|
||||||
|
div.round(_round);
|
||||||
|
real perc = (100.0 * div) / tot;
|
||||||
|
real rem(tot);
|
||||||
|
|
||||||
for (i = first; i < n; i++)
|
for (i = first; i < n; i++)
|
||||||
{
|
{
|
||||||
if (i > first)
|
if (i > first)
|
||||||
add_rata(perc, (sscad == -1 ? scad_rata(0) : sscad), tipo_rata(0));
|
add_rata(perc, (sscad == -1 ? scad_rata(first) : sscad), tipo_rata(0));
|
||||||
if (_inited) set_imprata (i, div);
|
if (_inited)
|
||||||
|
{
|
||||||
|
set_imprata (i, div);
|
||||||
|
rem -= tpay_rata(i);
|
||||||
|
}
|
||||||
set_percrata(i, perc);
|
set_percrata(i, perc);
|
||||||
}
|
}
|
||||||
if (_inited && _tpr > 0 && _tpr < 4)
|
if (_inited && _tpr > 0 && _tpr < 4)
|
||||||
set_imprata(0, tpay_rata(0) + _secndr);
|
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)
|
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
|
// suddividere il resto dell'importo tra le altre
|
||||||
real rfirst = _inited ? tpay_rata(0) : perc_rata(0);
|
real rfirst = _inited ? tpay_rata(0) : perc_rata(0);
|
||||||
if (_inited && _tpr > 0 && _tpr < 4) rfirst -= _secndr;
|
if (_inited && _tpr > 0 && _tpr < 4) rfirst -= _secndr;
|
||||||
|
|
||||||
real rest = tot - _tpr >= 4 ? ZERO : rfirst;
|
real rest = tot - (_tpr >= 4 ? ZERO : rfirst);
|
||||||
const real div = rest / real(nact);
|
real div = rest / real(nact - (first > 0 ? 0 : 1));
|
||||||
real perc = real(100.0)*(div/tot);
|
if (_inited)
|
||||||
|
div.round(_round);
|
||||||
|
|
||||||
|
real perc = (100.0 * div)/tot;
|
||||||
|
real rem(rest);
|
||||||
|
|
||||||
for (i = 1; i < n; i++)
|
for (i = 1; i < n; i++)
|
||||||
{
|
{
|
||||||
if (i >= nr)
|
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));
|
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);
|
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++)
|
for (; i < nr; i++)
|
||||||
_rate.destroy(i);
|
_rate.destroy(i);
|
||||||
_rate.pack();
|
_rate.pack();
|
||||||
|
adjust_fixed_scad();
|
||||||
|
|
||||||
_dirty = TRUE;
|
_dirty = TRUE;
|
||||||
}
|
}
|
||||||
@ -441,10 +474,11 @@ void TPagamento::set_percrata(int i, real r)
|
|||||||
real TPagamento::recalc_percrata(int i)
|
real TPagamento::recalc_percrata(int i)
|
||||||
{
|
{
|
||||||
real hm(_tpr < 4 ? _firstr : _secndr);
|
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);
|
perc.round(2);
|
||||||
set_percrata(i, perc);
|
set_percrata(i, perc);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user