Cagata handler sottoconto -> stack overflow
git-svn-id: svn://10.65.10.50/trunk@2851 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b2308068bc
commit
4c24bfce1b
190
cg/cg5200.cpp
190
cg/cg5200.cpp
@ -21,41 +21,51 @@ public:
|
||||
|
||||
bool TRiga_array::add_riga(const TRectype& rec_saldi)
|
||||
{
|
||||
bool found = FALSE;
|
||||
bool flsca, found = FALSE;
|
||||
int annoes, annoesr;
|
||||
char flag = ' ', flagr = ' ';
|
||||
char flag = ' ', flagr = ' ';
|
||||
char flagfin = ' ', flagfinr = ' ';
|
||||
TDate udata, udatar;
|
||||
long unum, unumr;
|
||||
real pdaresca,paveresca,pdare,pavere,saldoini,pdarepro,paverepro;
|
||||
real pdarescar,paverescar,pdarer,paverer,saldoinir,pdarepror,paverepror;
|
||||
|
||||
real saldofin,pdare,pavere,saldoini,pdarepro,paverepro;
|
||||
real saldofinr,pdarer,paverer,saldoinir,pdarepror,paverepror;
|
||||
|
||||
|
||||
for (int i = 0; i < items(); i++)
|
||||
{
|
||||
TRectype& r = (TRectype&)(*this)[i];
|
||||
annoes = r.get_int(SLD_ANNOES);
|
||||
annoesr = rec_saldi.get_int(SLD_ANNOES);
|
||||
|
||||
// TBI occhio al flag
|
||||
|
||||
if ( annoes == annoesr )
|
||||
{
|
||||
pdaresca = r.get_real(SLD_PDARESCA);
|
||||
paveresca = r.get_real(SLD_PAVERESCA);
|
||||
{
|
||||
// pdaresca = r.get_real(SLD_PDARESCA);
|
||||
// paveresca = r.get_real(SLD_PAVERESCA);
|
||||
flsca = r.get_bool(SLD_FLSCA);
|
||||
flag = r.get_char(SLD_FLAGSALINI);
|
||||
flagfin = r.get_char(SLD_FLAGSALFIN);
|
||||
pdare = r.get_real(SLD_PDARE);
|
||||
pavere = r.get_real(SLD_PAVERE);
|
||||
saldoini = r.get_real(SLD_SALDO);
|
||||
saldoini = r.get_real(SLD_SALDO);
|
||||
saldofin = r.get_real(SLD_SALDOFIN);
|
||||
pdarepro = r.get_real(SLD_PDAREPRO);
|
||||
paverepro = r.get_real(SLD_PAVEREPRO);
|
||||
udata = r.get(SLD_DATAULMOV);
|
||||
unum = r.get_long(SLD_NUMULTMOV);
|
||||
pdarescar = rec_saldi.get_real(SLD_PDARESCA);
|
||||
pdarescar += pdaresca;
|
||||
paverescar = rec_saldi.get_real(SLD_PAVERESCA);
|
||||
paverescar+= paveresca;
|
||||
// pdarescar = rec_saldi.get_real(SLD_PDARESCA);
|
||||
// pdarescar += pdaresca;
|
||||
// paverescar = rec_saldi.get_real(SLD_PAVERESCA);
|
||||
// paverescar+= paveresca;
|
||||
flagr = rec_saldi.get_char(SLD_FLAGSALINI);
|
||||
flagfinr = rec_saldi.get_char(SLD_FLAGSALFIN);
|
||||
pdarer = rec_saldi.get_real(SLD_PDARE);
|
||||
pdarer += pdare;
|
||||
paverer = rec_saldi.get_real(SLD_PAVERE);
|
||||
paverer += pavere;
|
||||
saldoinir = rec_saldi.get_real(SLD_SALDO);
|
||||
saldofinr = rec_saldi.get_real(SLD_SALDOFIN);
|
||||
udatar = rec_saldi.get(SLD_DATAULMOV);
|
||||
unumr = rec_saldi.get_long(SLD_NUMULTMOV);
|
||||
udatar = fnc_max(udatar,udata);
|
||||
@ -74,14 +84,17 @@ bool TRiga_array::add_riga(const TRectype& rec_saldi)
|
||||
pdarepror += pdarepro;
|
||||
paverepror = rec_saldi.get_real(SLD_PAVEREPRO);
|
||||
paverepror += paverepro;
|
||||
found = TRUE;
|
||||
found = TRUE;
|
||||
r.put(SLD_FLSCA, flsca ? "X" : " ");
|
||||
r.put(SLD_ANNOES, annoes);
|
||||
r.put(SLD_PDARESCA, pdarescar);
|
||||
r.put(SLD_PAVERESCA,paverescar);
|
||||
// r.put(SLD_PDARESCA, pdarescar);
|
||||
// r.put(SLD_PAVERESCA,paverescar);
|
||||
r.put(SLD_PDARE, pdarer);
|
||||
r.put(SLD_PAVERE,paverer);
|
||||
r.put(SLD_FLAGSALINI,flagr);
|
||||
r.put(SLD_FLAGSALFIN,flagfinr);
|
||||
r.put(SLD_SALDO, saldoinir);
|
||||
r.put(SLD_SALDOFIN, saldofinr);
|
||||
r.put(SLD_PDAREPRO, pdarepror);
|
||||
r.put(SLD_PAVEREPRO,paverepro);
|
||||
r.put(SLD_DATAULMOV, udatar);
|
||||
@ -90,7 +103,7 @@ bool TRiga_array::add_riga(const TRectype& rec_saldi)
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
TRectype* r = new TRectype(rec_saldi);//ci copia anche i valori di rec_saldi
|
||||
TRectype* r = new TRectype(rec_saldi); // copia anche i valori di rec_saldi
|
||||
add(r);
|
||||
}
|
||||
return found;
|
||||
@ -110,7 +123,7 @@ class TSaldibrowse_application : public TBrowse_application
|
||||
TRiga_array _riga;
|
||||
int _anno, _g, _c;
|
||||
long _s;
|
||||
bool _saldo_conto, _saldo_gruppo, _saldo_sottoc;
|
||||
bool _saldo_conto, _saldo_gruppo, _saldo_sottoc, _scarongly;
|
||||
|
||||
protected:
|
||||
virtual bool user_create();
|
||||
@ -123,10 +136,10 @@ protected:
|
||||
virtual void init_modify_mode(TMask&);
|
||||
|
||||
static bool sottoc_handler (TMask_field& f, KEY k);
|
||||
|
||||
static bool sheet_action(TSheet_field& s, int r, KEY k);
|
||||
public:
|
||||
void add_r(int,int,real&,real&,real&,char,real&,real&,
|
||||
real&,real&,TDate&,long,real&,real&,real&);
|
||||
void add_r(int,int,real&,char,real&,char,real&,real&, real&,real&,
|
||||
TDate&,long,real&,real&,real&, real&, real&);
|
||||
void compilasheet();
|
||||
bool fai_filtro();
|
||||
TSheet_field& ss() const { return (TSheet_field&)_msk->field(F_SHEET_SALDI);}
|
||||
@ -136,6 +149,12 @@ public:
|
||||
|
||||
HIDDEN TSaldibrowse_application& app() { return (TSaldibrowse_application&) main_app(); }
|
||||
|
||||
bool TSaldibrowse_application::sheet_action(TSheet_field& s, int r, KEY k)
|
||||
{
|
||||
// non si possono cancellare o aggiungere righe
|
||||
return (k != K_DEL && k != K_INS);
|
||||
}
|
||||
|
||||
void TSaldibrowse_application::init_query_mode(TMask& m)
|
||||
{
|
||||
m.disable(DLG_FINDREC);
|
||||
@ -158,6 +177,7 @@ bool TSaldibrowse_application::fai_filtro()
|
||||
_anno = m.get_int(F_ANNO);
|
||||
_g = m.get_int(F_GRUPPO);
|
||||
_c = m.get_int(F_CONTO);
|
||||
|
||||
if (tipo == '\0')
|
||||
_s = m.get_long(F_SOTTOCONTO);
|
||||
else if (tipo == 'C')
|
||||
@ -199,6 +219,8 @@ bool TSaldibrowse_application::fai_filtro()
|
||||
if (_s != 0l)
|
||||
to.put(SLD_SOTTOCONTO,_s);
|
||||
|
||||
_scarongly = m.get_bool(F_SCARICATO);
|
||||
|
||||
if ( _saldo_gruppo || _saldo_conto )
|
||||
_cur->setkey(1);
|
||||
|
||||
@ -269,7 +291,11 @@ bool TSaldibrowse_application::sottoc_handler(TMask_field& f, KEY key)
|
||||
else
|
||||
m.reset(F_DESCR_CONTO);
|
||||
}
|
||||
if (stop) m.stop_run(K_AUTO_ENTER);
|
||||
if (stop)
|
||||
{
|
||||
f.set_focusdirty(FALSE);
|
||||
m.stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
if (!ok) error_box("Conto errato o incompleto");
|
||||
}
|
||||
|
||||
@ -288,7 +314,8 @@ bool TSaldibrowse_application::user_create()
|
||||
_msk->set_handler(F_SOTTOC_CLIENTE, sottoc_handler);
|
||||
_msk->set_handler(F_SOTTOC_FORN, sottoc_handler);
|
||||
ss().disable();
|
||||
|
||||
ss().set_notify(sheet_action);
|
||||
|
||||
set_search_field(F_GRUPPO);
|
||||
|
||||
return TRUE;
|
||||
@ -307,7 +334,7 @@ bool TSaldibrowse_application::user_destroy()
|
||||
|
||||
int TSaldibrowse_application::read(TMask& m)
|
||||
{
|
||||
m.autoload(_rel);
|
||||
m.autoload(*_rel);
|
||||
fai_filtro();
|
||||
compilasheet();
|
||||
ss().force_update();
|
||||
@ -315,8 +342,9 @@ int TSaldibrowse_application::read(TMask& m)
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
void TSaldibrowse_application::add_r(int numrig,int a,real& pds,real& pas,real& sc,char f,real& si,real& pd,
|
||||
real& pa,real& s,TDate& d,long n,real& pdp,real& pap,real& sp)
|
||||
void TSaldibrowse_application::add_r(int numrig,int a,real& slf,char sff,real& sc,char f,real& si,
|
||||
real& pd, real& pa,real& s,TDate& d,long n,real& pdp,
|
||||
real& pap,real& sp, real& dsc, real& asc)
|
||||
{
|
||||
TSheet_field& cs = ss();
|
||||
char segno = ' ';
|
||||
@ -345,37 +373,14 @@ void TSaldibrowse_application::add_r(int numrig,int a,real& pds,real& pas,real&
|
||||
sc = -sc;
|
||||
segno = 'A';
|
||||
}
|
||||
riga.add(pds.string(),7);
|
||||
riga.add(pas.string(),8);
|
||||
riga.add(slf.string(),7);
|
||||
riga.add(sff,8);
|
||||
riga.add(sc.string(),9);
|
||||
riga.add(segno,10);
|
||||
/*
|
||||
dep = "";
|
||||
if (si != ZERO)
|
||||
dep << si.string(REAL_PICTURE) << " " << f;
|
||||
dep = "";
|
||||
if (s > ZERO)
|
||||
dep << s.string(REAL_PICTURE) << " D";
|
||||
else if (s < ZERO)
|
||||
{
|
||||
s = -s;
|
||||
dep << s.string(REAL_PICTURE) << " A";
|
||||
}
|
||||
*/
|
||||
riga.add(d.string(),11);
|
||||
riga.add(n,12);
|
||||
riga.add(pdp.string(),13);
|
||||
riga.add(pap.string(),14);
|
||||
/*
|
||||
dep = "";
|
||||
if (sp > ZERO)
|
||||
dep << sp.string(REAL_PICTURE) << " D";
|
||||
else if (sp < ZERO)
|
||||
{
|
||||
sp = -sp;
|
||||
dep << sp.string(REAL_PICTURE) << " A";
|
||||
}
|
||||
*/
|
||||
segno = ' ';
|
||||
if (sp > ZERO)
|
||||
segno = 'D';
|
||||
@ -386,23 +391,27 @@ void TSaldibrowse_application::add_r(int numrig,int a,real& pds,real& pas,real&
|
||||
}
|
||||
riga.add(sp.string(),15);
|
||||
riga.add(segno,16);
|
||||
riga.add(dsc.string(),17);
|
||||
riga.add(asc.string(),18);
|
||||
}
|
||||
|
||||
void TSaldibrowse_application::compilasheet()
|
||||
{
|
||||
char flagsal = ' ';
|
||||
char flagfin = ' ';
|
||||
real saldo = ZERO;
|
||||
real saldosca = ZERO;
|
||||
// real saldosca = ZERO;
|
||||
real saldopro = ZERO;
|
||||
real saldo_gc = ZERO;
|
||||
real saldoini_gc = ZERO;
|
||||
real saldosca_gc = ZERO;
|
||||
real saldopro_gc = ZERO;
|
||||
// real saldo_gc = ZERO;
|
||||
// real saldoini_gc = ZERO; ??? a che servono????
|
||||
// real saldosca_gc = ZERO;
|
||||
// real saldopro_gc = ZERO;
|
||||
real saldoini = ZERO;
|
||||
real pdare = ZERO;
|
||||
real pavere = ZERO;
|
||||
real pdaresca = ZERO;
|
||||
real paveresca = ZERO;
|
||||
real saldofin = ZERO;
|
||||
real pdarepro = ZERO;
|
||||
real paverepro = ZERO;
|
||||
int gruppo, conto, anno;
|
||||
@ -410,6 +419,8 @@ void TSaldibrowse_application::compilasheet()
|
||||
long ultimo_num = 0l;
|
||||
TDate ultima_data;
|
||||
|
||||
// nuova struttura archivio saldi
|
||||
|
||||
ss().reset();
|
||||
_riga.destroy();
|
||||
|
||||
@ -417,7 +428,10 @@ void TSaldibrowse_application::compilasheet()
|
||||
*_cur = 0l;
|
||||
|
||||
for (int i = 0; i < items; i++,++(*_cur))
|
||||
{
|
||||
{
|
||||
if (_scarongly &&! _cur->curr().get_bool(SLD_FLSCA))
|
||||
continue;
|
||||
|
||||
anno = _cur->curr().get_int(SLD_ANNOES);
|
||||
gruppo = _cur->curr().get_int(SLD_GRUPPO);
|
||||
conto = _cur->curr().get_int(SLD_CONTO);
|
||||
@ -433,23 +447,45 @@ void TSaldibrowse_application::compilasheet()
|
||||
if (_saldo_sottoc)
|
||||
{
|
||||
flagsal = _cur->curr().get_char(SLD_FLAGSALINI);
|
||||
flagfin = _cur->curr().get_char(SLD_FLAGSALFIN);
|
||||
saldoini = _cur->curr().get_real(SLD_SALDO);
|
||||
saldofin = _cur->curr().get_real(SLD_SALDOFIN);
|
||||
pdare = _cur->curr().get_real(SLD_PDARE);
|
||||
pavere = _cur->curr().get_real(SLD_PAVERE);
|
||||
pdaresca = _cur->curr().get_real(SLD_PDARESCA);
|
||||
paveresca = _cur->curr().get_real(SLD_PAVERESCA);
|
||||
pdarepro = _cur->curr().get_real(SLD_PDAREPRO);
|
||||
paverepro = _cur->curr().get_real(SLD_PAVEREPRO);
|
||||
ultima_data = _cur->curr().get(SLD_DATAULMOV);
|
||||
ultimo_num = _cur->curr().get_long(SLD_NUMULTMOV);
|
||||
|
||||
pdaresca = ZERO;
|
||||
paveresca = ZERO;
|
||||
|
||||
// look for scariche'
|
||||
if (i < items - 1 && !_scarongly)
|
||||
{
|
||||
++(*_cur);
|
||||
if (_cur->curr().get_bool(SLD_FLSCA) &&
|
||||
sottoconto == _cur->curr().get_long(SLD_SOTTOCONTO) &&
|
||||
conto == _cur->curr().get_int(SLD_CONTO) &&
|
||||
gruppo == _cur->curr().get_int(SLD_GRUPPO) &&
|
||||
anno == _cur->curr().get_int(SLD_ANNOES))
|
||||
{
|
||||
pdaresca = _cur->curr().get_real(SLD_PDARE);
|
||||
paveresca = _cur->curr().get_real(SLD_PAVERE);
|
||||
}
|
||||
else --(*_cur);
|
||||
}
|
||||
|
||||
if (flagsal == 'D')
|
||||
saldo = pdare + saldoini - pavere;
|
||||
else
|
||||
saldo = pdare - saldoini - pavere;
|
||||
saldosca = saldo + pdaresca - paveresca; //in realta' non e' proprio il saldo degli scaricati ma quello complessivo
|
||||
// saldosca = saldo + pdaresca - paveresca; //in realta' non e' proprio il saldo degli scaricati ma quello complessivo
|
||||
// .... ma tanto nessuno lo usa....
|
||||
saldopro = pdarepro - paverepro;
|
||||
|
||||
add_r(i,anno,pdaresca,paveresca,saldosca,flagsal,saldoini,pdare,pavere,saldo,ultima_data,ultimo_num,pdarepro,paverepro,saldopro);
|
||||
add_r(i,anno,saldofin,flagfin,saldo,flagsal,saldoini,pdare,pavere,saldo,
|
||||
ultima_data,ultimo_num,pdarepro,paverepro,saldopro,pdaresca, paveresca);
|
||||
}
|
||||
}
|
||||
if (_saldo_gruppo || _saldo_conto)
|
||||
@ -458,21 +494,43 @@ void TSaldibrowse_application::compilasheet()
|
||||
{
|
||||
TRectype& riga = (TRectype&)_riga[j];
|
||||
anno = riga.get_int(SLD_ANNOES);
|
||||
pdaresca = riga.get_real(SLD_PDARESCA);
|
||||
paveresca = riga.get_real(SLD_PAVERESCA);
|
||||
//saldosca = pdaresca - paveresca;
|
||||
flagsal = riga.get_char(SLD_FLAGSALINI);
|
||||
flagfin = riga.get_char(SLD_FLAGSALFIN);
|
||||
saldoini = riga.get_real(SLD_SALDO);
|
||||
saldofin = riga.get_real(SLD_SALDOFIN);
|
||||
pdare = riga.get_real(SLD_PDARE);
|
||||
pavere = riga.get_real(SLD_PAVERE);
|
||||
saldo = pdare - pavere + saldoini;
|
||||
saldosca = saldo + pdaresca - paveresca;
|
||||
pdarepro = riga.get_real(SLD_PDAREPRO);
|
||||
paverepro = riga.get_real(SLD_PAVEREPRO);
|
||||
saldopro = pdarepro - paverepro;
|
||||
ultima_data = riga.get(SLD_DATAULMOV);
|
||||
ultimo_num = riga.get_long(SLD_NUMULTMOV);
|
||||
add_r(j,anno,pdaresca,paveresca,saldosca,flagsal,saldoini,pdare,pavere,saldo,ultima_data,ultimo_num,pdarepro,paverepro,saldopro);
|
||||
|
||||
pdaresca = ZERO;
|
||||
paveresca = ZERO;
|
||||
|
||||
if (!_scarongly && (j < _riga.items() - 1))
|
||||
{
|
||||
TRectype& riga = (TRectype&)_riga[++j];
|
||||
if (riga.get_bool(SLD_FLSCA) &&
|
||||
sottoconto == riga.get_long(SLD_SOTTOCONTO) &&
|
||||
conto == riga.get_int(SLD_CONTO) &&
|
||||
gruppo == riga.get_int(SLD_GRUPPO) &&
|
||||
anno == riga.get_int(SLD_ANNOES))
|
||||
{
|
||||
pdaresca = riga.get_real(SLD_PDARE);
|
||||
paveresca = riga.get_real(SLD_PAVERE);
|
||||
}
|
||||
else --j;
|
||||
}
|
||||
|
||||
// a che serve ?????
|
||||
// saldosca = saldo + pdaresca - paveresca;
|
||||
|
||||
// come sopra
|
||||
add_r(j,anno,saldofin,flagfin,saldo,flagsal,saldoini,pdare,pavere,saldo,ultima_data,
|
||||
ultimo_num,pdarepro,paverepro,saldopro, pdaresca, paveresca);
|
||||
}
|
||||
_riga.destroy();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user