Correzzioni ai pagamenti
git-svn-id: svn://10.65.10.50/trunk@2423 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
99912abfd9
commit
a54755106e
@ -50,7 +50,8 @@ const char* TPagamento::_rata_sfield(int n, int f) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TPagamento::set_inizio(const TDate& d)
|
void TPagamento::set_inizio(const TDate& d)
|
||||||
{
|
{
|
||||||
|
_datadoc = d;
|
||||||
_inizio = d;
|
_inizio = d;
|
||||||
// aggiusta _inizio secondo INSCAD; vedi mese commerciale etc.
|
// aggiusta _inizio secondo INSCAD; vedi mese commerciale etc.
|
||||||
if (_inscad == 'M')
|
if (_inscad == 'M')
|
||||||
@ -680,7 +681,7 @@ word TPagamento::validate() const
|
|||||||
|
|
||||||
// check errori date scadenze (se istanziate)
|
// check errori date scadenze (se istanziate)
|
||||||
TDate d(data_rata(0));
|
TDate d(data_rata(0));
|
||||||
if (d < _inizio)
|
if (d < _datadoc) // _inizio
|
||||||
res |= P_INIZIO;
|
res |= P_INIZIO;
|
||||||
|
|
||||||
for (i = 1; i < n_rate(); i++)
|
for (i = 1; i < n_rate(); i++)
|
||||||
@ -704,7 +705,7 @@ void TPagamento::strerr(word err, TString& s)
|
|||||||
if (err & P_SCAD)
|
if (err & P_SCAD)
|
||||||
s << "Le scadenze non sono consecutive\n";
|
s << "Le scadenze non sono consecutive\n";
|
||||||
if (err & P_INIZIO)
|
if (err & P_INIZIO)
|
||||||
s << "La prima rata e' antecedente alla data del documento (" << _inizio << ")\n";
|
s << "La prima rata e' antecedente alla data del documento (" << _datadoc << ")\n"; // _inizio
|
||||||
if (err & P_NEG)
|
if (err & P_NEG)
|
||||||
s << "L'importo dato e' inferiore al minimo possibile\n";
|
s << "L'importo dato e' inferiore al minimo possibile\n";
|
||||||
if (err & P_TROP)
|
if (err & P_TROP)
|
||||||
@ -723,6 +724,8 @@ void TPagamento::strerr(word err, TString& s)
|
|||||||
s << "Scadenze incompatibili con il mese commerciale\n";
|
s << "Scadenze incompatibili con il mese commerciale\n";
|
||||||
if (err & P_ZERO)
|
if (err & P_ZERO)
|
||||||
s << "Almeno una rata ha importo zero\n";
|
s << "Almeno una rata ha importo zero\n";
|
||||||
|
if (err & P_SCWIDE)
|
||||||
|
s << "Le scadenze sono troppo distanti\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TPagamento::desc_tpr() const
|
const char* TPagamento::desc_tpr() const
|
||||||
@ -863,7 +866,7 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
oldscad = (int)(lastdate - data_rata(i-1));
|
oldscad = (int)(lastdate - data_rata(i-1));
|
||||||
if (oldscad <= 0l) return P_SCAD;
|
if (oldscad <= 0l) return P_SCAD;
|
||||||
}
|
}
|
||||||
else if (lastdate < _inizio) return P_INIZIO;
|
else if (lastdate < _datadoc) return P_INIZIO; // _inizio
|
||||||
tt.add(scad,3);
|
tt.add(scad,3);
|
||||||
ss.add(scad,3);
|
ss.add(scad,3);
|
||||||
// ricalcola rate successive: se si vuole modificarne solo una
|
// ricalcola rate successive: se si vuole modificarne solo una
|
||||||
@ -882,10 +885,11 @@ word TPagamento::recalc_rate(int row, bool is_perc_modified,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// nulla di speciale visto che si memorizza la derivata
|
// nulla di speciale visto che si memorizza la derivata
|
||||||
int sc = atoi(scad);
|
long sc = atol(scad);
|
||||||
for (int i = 0; i < row; i ++)
|
for (int i = 0; i < row; i ++)
|
||||||
sc -= scad_rata(i);
|
sc -= scad_rata(i);
|
||||||
if (sc < 0 || (row > 0 && sc == 0)) return P_SCAD;
|
if (sc < 0 || (row > 0 && sc == 0)) return P_SCAD;
|
||||||
|
if (sc > 10000L) return P_SCWIDE;
|
||||||
if (_mcomm && (sc % 30) != 0)
|
if (_mcomm && (sc % 30) != 0)
|
||||||
return P_MCOMM;
|
return P_MCOMM;
|
||||||
TToken_string& tt = rata(row);
|
TToken_string& tt = rata(row);
|
||||||
@ -1066,7 +1070,7 @@ word TPagamento::change_value_uguali(int row, real user_val, bool is_perc)
|
|||||||
if (!delta.is_zero())
|
if (!delta.is_zero())
|
||||||
{
|
{
|
||||||
user_val += delta;
|
user_val += delta;
|
||||||
rata(0).add(div.string(), tok_ind);
|
rata(0).add(user_val.string(), tok_ind);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1588,11 +1592,13 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sf.reset();
|
// sf.reset();
|
||||||
for (int i = 0, scr = 0; i < n_rate(); i++)
|
long scr = 0L;
|
||||||
|
for (int i = 0; i < n_rate(); i++)
|
||||||
{
|
{
|
||||||
TToken_string& s = sf.row(-1);
|
TToken_string& s = sf.row(i);
|
||||||
scr += scad_rata(i);
|
scr += scad_rata(i);
|
||||||
|
s = "";
|
||||||
s.add(scr);
|
s.add(scr);
|
||||||
s.add(perc_rata(i).string());
|
s.add(perc_rata(i).string());
|
||||||
|
|
||||||
@ -1602,6 +1608,9 @@ void TPagamento::set_sheet(TSheet_field& sf, int sscad)
|
|||||||
s.add(uc);
|
s.add(uc);
|
||||||
s.add(desc_tipo(tr, uc));
|
s.add(desc_tipo(tr, uc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int d = sf.items()-1; d >= i; d--)
|
||||||
|
sf.destroy(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool abilita = _tpr <= 3;
|
const bool abilita = _tpr <= 3;
|
||||||
@ -1671,6 +1680,7 @@ _def_tpr(1), _def_ulc(""), _round(0), _int_rate(30), _tpr(0), _rdiff(FALSE)
|
|||||||
_inizio = data;
|
_inizio = data;
|
||||||
else
|
else
|
||||||
_inizio = TDate(TODAY);
|
_inizio = TDate(TODAY);
|
||||||
|
_datadoc = _inizio;
|
||||||
|
|
||||||
if (_code.blank() || !read())
|
if (_code.blank() || !read())
|
||||||
_new = TRUE;
|
_new = TRUE;
|
||||||
|
@ -24,6 +24,7 @@ const word P_TROP = 0x0020; // importo specificato > massimo possibile
|
|||||||
const word P_TOTNC = 0x0040; // totale importi != totale pagamento
|
const word P_TOTNC = 0x0040; // totale importi != totale pagamento
|
||||||
const word P_MCOMM = 0x0080; // inconsistenza mese commerciale/scadenze
|
const word P_MCOMM = 0x0080; // inconsistenza mese commerciale/scadenze
|
||||||
const word P_ZERO = 0x0100; // importo di una rata uguale a zero
|
const word P_ZERO = 0x0100; // importo di una rata uguale a zero
|
||||||
|
const word P_SCWIDE = 0x0200; // date di scadenza separate da piu' di 10000 giorni
|
||||||
|
|
||||||
class TPagamento : public TObject
|
class TPagamento : public TObject
|
||||||
{
|
{
|
||||||
@ -42,6 +43,7 @@ class TPagamento : public TObject
|
|||||||
int _tpr; // tipo prima rata: S3
|
int _tpr; // tipo prima rata: S3
|
||||||
bool _dirty; // modificato (strutturalmente!)
|
bool _dirty; // modificato (strutturalmente!)
|
||||||
TDate _inizio; // data inizio pagamenti
|
TDate _inizio; // data inizio pagamenti
|
||||||
|
TDate _datadoc; // data documento
|
||||||
bool _inited; // vero se c'e' un movimento di riferimento
|
bool _inited; // vero se c'e' un movimento di riferimento
|
||||||
real _firstr; // importo da pagare in prima rata (o distribuire se tpr == 0)
|
real _firstr; // importo da pagare in prima rata (o distribuire se tpr == 0)
|
||||||
real _secndr; // importo da distribuire
|
real _secndr; // importo da distribuire
|
||||||
@ -120,6 +122,7 @@ public:
|
|||||||
void set_numero_rate(int n, int sscad = -1, int rdiff = 1);
|
void set_numero_rate(int n, int sscad = -1, int rdiff = 1);
|
||||||
|
|
||||||
void set_inizio(const TDate& d); // resetta tutto
|
void set_inizio(const TDate& d); // resetta tutto
|
||||||
|
void set_datadoc(const TDate & d) { _datadoc = d;}
|
||||||
void set_inizio_scadenza(char v) { _inscad = v; }
|
void set_inizio_scadenza(char v) { _inscad = v; }
|
||||||
void set_code(const char* c) { _code = c; }
|
void set_code(const char* c) { _code = c; }
|
||||||
void set_round(int n) { _round = n; }
|
void set_round(int n) { _round = n; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user