Correzioni per test sulle rate = 0 e sull' importo della prima riga quando ho le imposte

git-svn-id: svn://10.65.10.50/trunk@2389 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-01-04 13:39:57 +00:00
parent df36f2cc2b
commit 4b020940c7
2 changed files with 18 additions and 6 deletions

View File

@ -587,12 +587,20 @@ word TPagamento::validate() const
if (_inited)
{
real tot;
real tot;
for (int i = 0; i < n_rate(); i++)
tot += tpay_rata(i);
{
const real tpay(tpay_rata(i));
if (tpay.is_zero())
res |= P_ZERO;
tot += tpay;
}
if (tot != _firstr+_secndr)
res |= P_TOTNC;
res |= P_TOTNC;
// check errori date scadenze (se istanziate)
@ -637,6 +645,8 @@ void TPagamento::strerr(word err, TString& s)
}
if (err & P_MCOMM)
s << "Scadenze incompatibili con il mese commerciale\n";
if (err & P_ZERO)
s << "Almeno una rata ha importo zero\n";
}
const char* TPagamento::desc_tpr() const
@ -737,10 +747,11 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
{
newv = new_value;
rmax = is_perc_modified ? real(100.0) : (_tpr < 4 ? _firstr : _secndr);
real max_value(rmax);
real test_value(newv);
if (_tpr > 0 && _tpr < 4 && row == 0)
max_value += _secndr;
if (newv > max_value) return P_RSUM;
test_value -= _secndr;
if (test_value < ZERO) return P_NEG;
if (test_value > rmax) return P_TROP;
}
bool exhausted = FALSE;

View File

@ -23,6 +23,7 @@ const word P_NEG = 0x0010; // importo specificato < minimo possibile
const word P_TROP = 0x0020; // importo specificato > massimo possibile
const word P_TOTNC = 0x0040; // totale importi != totale pagamento
const word P_MCOMM = 0x0080; // inconsistenza mese commerciale/scadenze
const word P_ZERO = 0x0100; // importo di una rata uguale a zero
class TPagamento : public TObject
{