Correzioni miste e conclusioni ristrutturazione
git-svn-id: svn://10.65.10.50/trunk@2411 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
291112d8ba
commit
95e5651d04
@ -210,8 +210,15 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
p.round(2);
|
||||
for (i = first; i < n; i++)
|
||||
{
|
||||
if (i > first)
|
||||
add_rata(perc, (sscad == -1 ? scad_rata(first) : sscad), tipo_rata(0));
|
||||
if (i > first)
|
||||
{
|
||||
int scd = sscad == -1 ? scad_rata(first) : sscad;
|
||||
#ifdef USE_DEFAULT_INT_RATE
|
||||
if (scd == 0)
|
||||
scd = _int_rate;
|
||||
#endif
|
||||
add_rata(perc, scd, tipo_rata(0));
|
||||
}
|
||||
if (_inited)
|
||||
{
|
||||
set_imprata (i, div);
|
||||
@ -263,9 +270,16 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
p.round(2);
|
||||
for (i = 1; i < n; i++)
|
||||
{
|
||||
if (i >= nr)
|
||||
if (i >= nr)
|
||||
{
|
||||
int scd = sscad == -1 ? scad_rata(first) : sscad;
|
||||
#ifdef USE_DEFAULT_INT_RATE
|
||||
if (scd == 0)
|
||||
scd = _int_rate;
|
||||
#endif
|
||||
add_rata(perc, (sscad == -1 ? scad_rata(nr-1) : sscad),
|
||||
tipo_rata(nr-1), ulc_rata(nr-1));
|
||||
}
|
||||
if (_inited)
|
||||
{
|
||||
set_imprata (i, div);
|
||||
@ -314,16 +328,18 @@ void TPagamento::set_numero_rate(int n, int sscad, int rdiff)
|
||||
sum = 100;
|
||||
}
|
||||
|
||||
set_rata(i, real(p),
|
||||
i == 0 ? (i < nr ? scad_rata(0) : 0):
|
||||
(sscad == -1 ? (i < nr ? scad_rata(i) : scad_rata(nr-1)) : sscad),
|
||||
int scd = i == 0 ? (i < nr ? scad_rata(0) : 0) :
|
||||
(sscad == -1 ? (i < nr ? scad_rata(i) : scad_rata(nr-1)) : sscad);
|
||||
#ifdef USE_DEFAULT_INT_RATE
|
||||
if (i != 0 && scd == 0)
|
||||
scd = _int_rate;
|
||||
#endif
|
||||
set_rata(i, real(p), scd,
|
||||
(i < nr ? tipo_rata(i) : tipo_rata(nr-1)));
|
||||
}
|
||||
}
|
||||
// erase remaining
|
||||
for (; i < nr; i++)
|
||||
_rate.destroy(i);
|
||||
_rate.pack();
|
||||
remove_rate_from(i);
|
||||
adjust_fixed_scad();
|
||||
|
||||
_dirty = TRUE;
|
||||
@ -939,7 +955,8 @@ word TPagamento::change_value(int rata, real user_val, int rdiff, bool is_perc)
|
||||
// risistema scadenze fisse se necessario
|
||||
adjust_fixed_scad();
|
||||
// riaggiusta le percentuali o gli importi rispetto al dato modificato
|
||||
if (_inited) adjust_perc_imp(is_perc, rdiff);
|
||||
if (_inited) adjust_perc_imp(is_perc, rdiff);
|
||||
_dirty = TRUE;
|
||||
}
|
||||
|
||||
return err;
|
||||
@ -960,6 +977,8 @@ word TPagamento::change_value_differenziate(int row, real user_val, bool is_perc
|
||||
const int first = _tpr > 3 ? 1 : 0;
|
||||
_rdiff = TRUE;
|
||||
|
||||
if (user_div.sign() <= 0) return P_NEG;
|
||||
|
||||
// togli rate gia' presenti
|
||||
for (int i = first; i < row; i++)
|
||||
{
|
||||
@ -967,8 +986,8 @@ word TPagamento::change_value_differenziate(int row, real user_val, bool is_perc
|
||||
if (i == 0 && !is_perc && _tpr > 0 && _tpr < 4)
|
||||
to_share += _secndr;
|
||||
}
|
||||
|
||||
real remainder = to_share - user_div;
|
||||
if (remainder.sign() < 0) return P_TROP;
|
||||
|
||||
const int tok_ind = is_perc ? 1 : 4;
|
||||
rata(row).add(user_val.string(), tok_ind);
|
||||
@ -980,7 +999,7 @@ word TPagamento::change_value_differenziate(int row, real user_val, bool is_perc
|
||||
}
|
||||
|
||||
// elimina rate successive
|
||||
remove_rate_from(row+2);
|
||||
remove_rate_from(remainder.is_zero() ? row +1 : row+2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -998,7 +1017,7 @@ word TPagamento::change_value_uguali(int row, real user_val, bool is_perc)
|
||||
const int first = _tpr > 3 ? 1 : 0;
|
||||
_rdiff = FALSE;
|
||||
|
||||
if (user_div.is_zero() || user_div.sign() == -1)
|
||||
if (user_div.sign() <= 0)
|
||||
return P_NEG;
|
||||
|
||||
// la prima viene mantenuta uguale (vale solo per la 0 anche se _tpr > 4)
|
||||
@ -1097,6 +1116,9 @@ word TPagamento::change_value_uguali_prossima(int row, real user_val, bool is_pe
|
||||
real user_div = user_val - to_subtract;
|
||||
const int tok_ind = is_perc ? 1 : 4;
|
||||
const int first = _tpr > 3 ? 1 : 0;
|
||||
|
||||
if (user_div.sign() <= 0)
|
||||
return P_NEG;
|
||||
|
||||
// togli rate gia' presenti
|
||||
for (int i = first; i < row; i++)
|
||||
@ -1137,6 +1159,9 @@ word TPagamento::change_value_uguali_possible(int row, real user_val, bool is_pe
|
||||
const int tok_ind = is_perc ? 1 : 4;
|
||||
const int first = _tpr > 3 ? 1 : 0;
|
||||
|
||||
if (user_div.sign() <= 0)
|
||||
return P_NEG;
|
||||
|
||||
// togli rate gia' presenti
|
||||
for (int i = first; i < row; i++)
|
||||
{
|
||||
@ -1157,7 +1182,7 @@ word TPagamento::change_value_uguali_possible(int row, real user_val, bool is_pe
|
||||
if (!delta.is_zero())
|
||||
{
|
||||
if (n_rate() <= i) add_rata();
|
||||
rata(i).add(delta.string(), tok_ind);
|
||||
rata(i++).add(delta.string(), tok_ind);
|
||||
}
|
||||
remove_rate_from(i);
|
||||
return 0;
|
||||
@ -1182,7 +1207,11 @@ void TPagamento::adjust_parameters()
|
||||
else
|
||||
{
|
||||
TToken_string& r = rata(i);
|
||||
#ifdef USE_DEFAULT_INT_RATE
|
||||
r.add(last_scad == 0 ? _int_rate : last_scad, 0);
|
||||
#else
|
||||
r.add(last_scad, 0);
|
||||
#endif
|
||||
r.add(last_type, 2);
|
||||
r.add(last_ulc, 5);
|
||||
if (_inited)
|
||||
@ -1281,7 +1310,11 @@ bool TPagamento::read(TTable* t, TTable* r)
|
||||
_fixd[1] = t->get_int("I1");
|
||||
_fixd[2] = t->get_int("I2");
|
||||
_int_rate = t->get_int("I3");
|
||||
|
||||
|
||||
#ifdef USE_DEFAULT_INT_RATE
|
||||
if (_int_rate == 0) _int_rate = 30;
|
||||
#endif
|
||||
|
||||
// aggiusta _inizio secondo INSCAD; vedi mese commerciale etc.
|
||||
if (_inscad == 'M')
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user