Last mods -- should work now
git-svn-id: svn://10.65.10.50/trunk@2402 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0e1fc90ebb
commit
b404553548
@ -9,8 +9,7 @@
|
|||||||
|
|
||||||
// se settato, si usa per rate nuove l'intervallo rate default (letto da
|
// se settato, si usa per rate nuove l'intervallo rate default (letto da
|
||||||
// tab. pagamenti)
|
// tab. pagamenti)
|
||||||
#define USE_DEFAULT_INT_RATE
|
#define USE_DEFAULT_INT_RATE 1
|
||||||
|
|
||||||
|
|
||||||
inline void swap(int& x, int& y) {int tmp = x; x = y; y = tmp; }
|
inline void swap(int& x, int& y) {int tmp = x; x = y; y = tmp; }
|
||||||
|
|
||||||
@ -958,7 +957,7 @@ word TPagamento::change_value_differenziate(int row, real user_val, bool is_perc
|
|||||||
if (row == 0 && _tpr > 0 && _tpr < 4 && !is_perc)
|
if (row == 0 && _tpr > 0 && _tpr < 4 && !is_perc)
|
||||||
to_subtract = _secndr;
|
to_subtract = _secndr;
|
||||||
real user_div = user_val - to_subtract;
|
real user_div = user_val - to_subtract;
|
||||||
int first = _tpr > 3 ? 1 : 0;
|
const int first = _tpr > 3 ? 1 : 0;
|
||||||
_rdiff = TRUE;
|
_rdiff = TRUE;
|
||||||
|
|
||||||
// togli rate gia' presenti
|
// togli rate gia' presenti
|
||||||
@ -971,8 +970,8 @@ word TPagamento::change_value_differenziate(int row, real user_val, bool is_perc
|
|||||||
|
|
||||||
real remainder = to_share - user_div;
|
real remainder = to_share - user_div;
|
||||||
|
|
||||||
int tok_ind = is_perc ? 1 : 4;
|
const int tok_ind = is_perc ? 1 : 4;
|
||||||
rata(row).add(user_div.string(), tok_ind);
|
rata(row).add(user_val.string(), tok_ind);
|
||||||
|
|
||||||
if (!remainder.is_zero())
|
if (!remainder.is_zero())
|
||||||
{
|
{
|
||||||
@ -995,8 +994,8 @@ word TPagamento::change_value_uguali(int row, real user_val, bool is_perc)
|
|||||||
to_subtract = _secndr;
|
to_subtract = _secndr;
|
||||||
real user_div = user_val - to_subtract;
|
real user_div = user_val - to_subtract;
|
||||||
real remainder = to_share - user_div;
|
real remainder = to_share - user_div;
|
||||||
int tok_ind = is_perc ? 1 : 4;
|
const int tok_ind = is_perc ? 1 : 4;
|
||||||
int first = _tpr > 3 ? 1 : 0;
|
const int first = _tpr > 3 ? 1 : 0;
|
||||||
_rdiff = FALSE;
|
_rdiff = FALSE;
|
||||||
|
|
||||||
if (user_div.is_zero() || user_div.sign() == -1)
|
if (user_div.is_zero() || user_div.sign() == -1)
|
||||||
@ -1080,21 +1079,87 @@ word TPagamento::change_value_uguali(int row, real user_val, bool is_perc)
|
|||||||
real tp = is_perc ? perc_rata(first) : tpay_rata(first);
|
real tp = is_perc ? perc_rata(first) : tpay_rata(first);
|
||||||
tp += delta;
|
tp += delta;
|
||||||
rata(first).add(tp.string(), tok_ind);
|
rata(first).add(tp.string(), tok_ind);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
word TPagamento::change_value_uguali_prossima(int rata, real user_val, bool is_perc)
|
word TPagamento::change_value_uguali_prossima(int row, real user_val, bool is_perc)
|
||||||
{
|
{
|
||||||
_rdiff = TRUE;
|
_rdiff = TRUE;
|
||||||
|
// uguali finche' possibile da row in poi; residuo su first
|
||||||
|
// importi totali, da non suddividere, da suddividere
|
||||||
|
real to_share = is_perc ? real(100.0) : (_tpr < 4 ? _firstr : _secndr);
|
||||||
|
real to_subtract = ZERO;
|
||||||
|
if (row == 0 && _tpr > 0 && _tpr < 4 && !is_perc)
|
||||||
|
to_subtract = _secndr;
|
||||||
|
real user_div = user_val - to_subtract;
|
||||||
|
const int tok_ind = is_perc ? 1 : 4;
|
||||||
|
const int first = _tpr > 3 ? 1 : 0;
|
||||||
|
|
||||||
|
// togli rate gia' presenti
|
||||||
|
for (int i = first; i < row; i++)
|
||||||
|
{
|
||||||
|
to_share -= (is_perc ? perc_rata(i): tpay_rata(i));
|
||||||
|
if (i == 0 && !is_perc && _tpr > 0 && _tpr < 4)
|
||||||
|
to_share += _secndr;
|
||||||
|
}
|
||||||
|
|
||||||
|
real div = to_share/user_div;
|
||||||
|
if (div < real(1.0)) return P_TROP;
|
||||||
|
|
||||||
|
real delta = to_share - (user_div * div.integer());
|
||||||
|
for (i = row; i < (row + div.integer()); i++)
|
||||||
|
{
|
||||||
|
if (n_rate() <= i) add_rata();
|
||||||
|
rata(i).add(user_div.string(), tok_ind);
|
||||||
|
}
|
||||||
|
remove_rate_from(i);
|
||||||
|
if (!delta.is_zero())
|
||||||
|
{
|
||||||
|
real r = is_perc ? perc_rata(first) : tpay_rata(first);
|
||||||
|
r += delta;
|
||||||
|
rata(first).add(r.string(), tok_ind);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
word TPagamento::change_value_uguali_possible(int rata, real user_val, bool is_perc)
|
word TPagamento::change_value_uguali_possible(int row, real user_val, bool is_perc)
|
||||||
{
|
{
|
||||||
_rdiff = TRUE;
|
_rdiff = TRUE;
|
||||||
|
// uguali finche' possibile da row in poi; residuo come rata a parte
|
||||||
|
real to_share = is_perc ? real(100.0) : (_tpr < 4 ? _firstr : _secndr);
|
||||||
|
real to_subtract = ZERO;
|
||||||
|
if (row == 0 && _tpr > 0 && _tpr < 4 && !is_perc)
|
||||||
|
to_subtract = _secndr;
|
||||||
|
real user_div = user_val - to_subtract;
|
||||||
|
const int tok_ind = is_perc ? 1 : 4;
|
||||||
|
const int first = _tpr > 3 ? 1 : 0;
|
||||||
|
|
||||||
|
// togli rate gia' presenti
|
||||||
|
for (int i = first; i < row; i++)
|
||||||
|
{
|
||||||
|
to_share -= (is_perc ? perc_rata(i): tpay_rata(i));
|
||||||
|
if (i == 0 && !is_perc && _tpr > 0 && _tpr < 4)
|
||||||
|
to_share += _secndr;
|
||||||
|
}
|
||||||
|
|
||||||
|
real div = to_share/user_div;
|
||||||
|
if (div < real(1.0)) return P_TROP;
|
||||||
|
|
||||||
|
real delta = to_share - (user_div * div.integer());
|
||||||
|
for (i = row; i < (row + div.integer()); i++)
|
||||||
|
{
|
||||||
|
if (n_rate() <= i) add_rata();
|
||||||
|
rata(i).add(user_div.string(), tok_ind);
|
||||||
|
}
|
||||||
|
if (!delta.is_zero())
|
||||||
|
{
|
||||||
|
if (n_rate() <= i) add_rata();
|
||||||
|
rata(i).add(delta.string(), tok_ind);
|
||||||
|
}
|
||||||
|
remove_rate_from(i);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user