1994-10-18 17:51:25 +00:00
|
|
|
// cg5200.cpp - Visualizzazione saldi
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
#include <brwapp.h>
|
1994-10-18 17:51:25 +00:00
|
|
|
#include <msksheet.h>
|
|
|
|
#include <tabutil.h>
|
|
|
|
#include <urldefid.h>
|
1997-01-10 14:10:18 +00:00
|
|
|
#include <utility.h>
|
1994-10-20 13:31:04 +00:00
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
#include <saldi.h>
|
|
|
|
#include <clifo.h>
|
|
|
|
#include <pconti.h>
|
1994-10-20 13:31:04 +00:00
|
|
|
|
1997-06-19 14:33:52 +00:00
|
|
|
#include "cglib02.h"
|
1994-10-18 17:51:25 +00:00
|
|
|
#include "cg5200.h"
|
|
|
|
|
|
|
|
class TRiga_array : public TArray
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
bool add_riga(const TRectype& rec_saldi);
|
|
|
|
};
|
|
|
|
|
|
|
|
bool TRiga_array::add_riga(const TRectype& rec_saldi)
|
|
|
|
{
|
1996-05-20 09:17:22 +00:00
|
|
|
bool flsca, found = FALSE;
|
1994-10-18 17:51:25 +00:00
|
|
|
int annoes, annoesr;
|
1996-05-20 09:17:22 +00:00
|
|
|
char flag = ' ', flagr = ' ';
|
|
|
|
char flagfin = ' ', flagfinr = ' ';
|
1994-10-18 17:51:25 +00:00
|
|
|
TDate udata, udatar;
|
|
|
|
long unum, unumr;
|
1996-05-20 09:17:22 +00:00
|
|
|
real saldofin,pdare,pavere,saldoini,pdarepro,paverepro;
|
|
|
|
real saldofinr,pdarer,paverer,saldoinir,pdarepror,paverepror;
|
|
|
|
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
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);
|
1996-05-20 09:17:22 +00:00
|
|
|
|
|
|
|
// TBI occhio al flag
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
if ( annoes == annoesr )
|
1996-05-20 09:17:22 +00:00
|
|
|
{
|
|
|
|
flsca = r.get_bool(SLD_FLSCA);
|
1994-10-18 17:51:25 +00:00
|
|
|
flag = r.get_char(SLD_FLAGSALINI);
|
1996-05-20 09:17:22 +00:00
|
|
|
flagfin = r.get_char(SLD_FLAGSALFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
pdare = r.get_real(SLD_PDARE);
|
|
|
|
pavere = r.get_real(SLD_PAVERE);
|
1996-05-20 09:17:22 +00:00
|
|
|
saldoini = r.get_real(SLD_SALDO);
|
|
|
|
saldofin = r.get_real(SLD_SALDOFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
pdarepro = r.get_real(SLD_PDAREPRO);
|
|
|
|
paverepro = r.get_real(SLD_PAVEREPRO);
|
|
|
|
udata = r.get(SLD_DATAULMOV);
|
|
|
|
unum = r.get_long(SLD_NUMULTMOV);
|
|
|
|
flagr = rec_saldi.get_char(SLD_FLAGSALINI);
|
1996-05-20 09:17:22 +00:00
|
|
|
flagfinr = rec_saldi.get_char(SLD_FLAGSALFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
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);
|
1996-05-20 09:17:22 +00:00
|
|
|
saldofinr = rec_saldi.get_real(SLD_SALDOFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
udatar = rec_saldi.get(SLD_DATAULMOV);
|
|
|
|
unumr = rec_saldi.get_long(SLD_NUMULTMOV);
|
|
|
|
udatar = fnc_max(udatar,udata);
|
1994-10-24 11:24:12 +00:00
|
|
|
//unumr = (unum > unumr) ? unum : unumr;
|
|
|
|
if (udata > udatar)
|
|
|
|
unumr = unum;
|
1994-10-18 17:51:25 +00:00
|
|
|
if (flagr == flag)
|
|
|
|
saldoinir += saldoini;
|
|
|
|
else saldoinir -= saldoini;
|
|
|
|
if (saldoinir < ZERO) // saldoinir e' piu' piccolo di saldoini => vince il flag di saldoini
|
|
|
|
{
|
|
|
|
flagr = flag;
|
|
|
|
saldoinir = -saldoinir;
|
|
|
|
}
|
|
|
|
pdarepror = rec_saldi.get_real(SLD_PDAREPRO);
|
|
|
|
pdarepror += pdarepro;
|
|
|
|
paverepror = rec_saldi.get_real(SLD_PAVEREPRO);
|
|
|
|
paverepror += paverepro;
|
1996-05-20 09:17:22 +00:00
|
|
|
found = TRUE;
|
1996-06-04 14:18:45 +00:00
|
|
|
r.put(SLD_FLSCA, flsca);
|
1994-10-18 17:51:25 +00:00
|
|
|
r.put(SLD_ANNOES, annoes);
|
|
|
|
r.put(SLD_PDARE, pdarer);
|
|
|
|
r.put(SLD_PAVERE,paverer);
|
|
|
|
r.put(SLD_FLAGSALINI,flagr);
|
1996-05-20 09:17:22 +00:00
|
|
|
r.put(SLD_FLAGSALFIN,flagfinr);
|
1994-10-18 17:51:25 +00:00
|
|
|
r.put(SLD_SALDO, saldoinir);
|
1996-05-20 09:17:22 +00:00
|
|
|
r.put(SLD_SALDOFIN, saldofinr);
|
1994-10-18 17:51:25 +00:00
|
|
|
r.put(SLD_PDAREPRO, pdarepror);
|
|
|
|
r.put(SLD_PAVEREPRO,paverepro);
|
|
|
|
r.put(SLD_DATAULMOV, udatar);
|
|
|
|
r.put(SLD_NUMULTMOV, unumr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!found)
|
|
|
|
{
|
1997-10-20 14:23:01 +00:00
|
|
|
add(rec_saldi);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
return found;
|
1994-12-07 11:08:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
// Visualizzazione saldi
|
|
|
|
///////////////////////////////////////////////////////////
|
1994-10-18 17:51:25 +00:00
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
class TSaldibrowse_application : public TBrowse_application
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
TMask* _msk;
|
|
|
|
TCursor * _cur;
|
|
|
|
TRelation * _rel,* _rel1;
|
|
|
|
TRiga_array _riga;
|
1996-07-01 17:22:56 +00:00
|
|
|
int _anno, _annop, _g, _c;
|
1994-10-18 17:51:25 +00:00
|
|
|
long _s;
|
1996-05-20 09:17:22 +00:00
|
|
|
bool _saldo_conto, _saldo_gruppo, _saldo_sottoc, _scarongly;
|
1997-10-20 14:23:01 +00:00
|
|
|
|
|
|
|
TEsercizi_contabili _ese;
|
1994-10-18 17:51:25 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual bool user_create();
|
|
|
|
virtual bool user_destroy();
|
|
|
|
virtual TRelation* get_relation() const { return _rel; }
|
|
|
|
virtual TMask* get_mask(int mode) { return _msk; }
|
|
|
|
virtual bool changing_mask(int mode) {return FALSE; }
|
|
|
|
virtual int read(TMask& m);
|
|
|
|
virtual void init_query_mode(TMask&);
|
|
|
|
virtual void init_modify_mode(TMask&);
|
1994-11-22 09:42:35 +00:00
|
|
|
|
1996-07-01 17:22:56 +00:00
|
|
|
static int compare_rows(const TObject **o1, const TObject** o2);
|
|
|
|
static bool anno_handler (TMask_field& f, KEY k);
|
|
|
|
static bool flsca_handler (TMask_field& f, KEY k);
|
1994-11-22 09:42:35 +00:00
|
|
|
static bool sottoc_handler (TMask_field& f, KEY k);
|
1996-05-20 09:17:22 +00:00
|
|
|
static bool sheet_action(TSheet_field& s, int r, KEY k);
|
1994-10-18 17:51:25 +00:00
|
|
|
public:
|
1996-05-20 09:17:22 +00:00
|
|
|
void add_r(int,int,real&,char,real&,char,real&,real&, real&,real&,
|
|
|
|
TDate&,long,real&,real&,real&, real&, real&);
|
1994-10-18 17:51:25 +00:00
|
|
|
void compilasheet();
|
|
|
|
bool fai_filtro();
|
|
|
|
TSheet_field& ss() const { return (TSheet_field&)_msk->field(F_SHEET_SALDI);}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
TSaldibrowse_application() {}
|
1994-10-18 17:51:25 +00:00
|
|
|
};
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
HIDDEN TSaldibrowse_application& app() { return (TSaldibrowse_application&) main_app(); }
|
1994-10-18 17:51:25 +00:00
|
|
|
|
1996-05-20 09:17:22 +00:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
void TSaldibrowse_application::init_query_mode(TMask& m)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1996-07-01 17:22:56 +00:00
|
|
|
_anno = 0;
|
|
|
|
_scarongly = FALSE;
|
1994-10-18 17:51:25 +00:00
|
|
|
m.disable(DLG_FINDREC);
|
1996-07-01 17:22:56 +00:00
|
|
|
m.enable(F_DESCR_CONTO);
|
|
|
|
m.enable(F_ANNO);
|
|
|
|
m.enable(F_SCARICATO);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
void TSaldibrowse_application::init_modify_mode(TMask& m)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
m.disable(DLG_FINDREC);
|
1996-07-01 17:22:56 +00:00
|
|
|
m.disable(F_ANNO);
|
|
|
|
m.disable(F_SCARICATO);
|
|
|
|
|
1997-10-20 14:23:01 +00:00
|
|
|
const char tipo = m.get(F_TIPOCF)[0];
|
|
|
|
if (tipo=='C')
|
1996-06-26 15:39:26 +00:00
|
|
|
m.disable(F_DESCR_CLIENTE);
|
1997-10-20 14:23:01 +00:00
|
|
|
else if (tipo=='F')
|
1996-06-26 15:39:26 +00:00
|
|
|
m.disable(F_DESCR_FORN);
|
1997-10-20 14:23:01 +00:00
|
|
|
else
|
|
|
|
m.disable(F_DESCR_CONTO);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
bool TSaldibrowse_application::fai_filtro()
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
TSaldo sld;
|
|
|
|
int annop = 0;
|
1994-10-24 11:24:12 +00:00
|
|
|
char tipo;
|
1994-10-18 17:51:25 +00:00
|
|
|
|
|
|
|
_saldo_gruppo = _saldo_conto = _saldo_sottoc = FALSE;
|
1994-12-07 11:08:53 +00:00
|
|
|
TMask& m = curr_mask();
|
|
|
|
tipo = m.get(F_TIPOCF)[0];
|
1997-06-19 14:33:52 +00:00
|
|
|
if (_anno != 0)
|
|
|
|
{
|
1997-10-20 14:23:01 +00:00
|
|
|
_annop = _ese.pred(_anno);
|
1997-06-19 14:33:52 +00:00
|
|
|
}
|
1996-07-01 17:22:56 +00:00
|
|
|
else
|
|
|
|
_annop = 0;
|
1994-12-07 11:08:53 +00:00
|
|
|
_g = m.get_int(F_GRUPPO);
|
|
|
|
_c = m.get_int(F_CONTO);
|
1996-05-20 09:17:22 +00:00
|
|
|
|
1994-10-24 11:24:12 +00:00
|
|
|
if (tipo == '\0')
|
1994-12-07 11:08:53 +00:00
|
|
|
_s = m.get_long(F_SOTTOCONTO);
|
1994-10-24 11:24:12 +00:00
|
|
|
else if (tipo == 'C')
|
1994-12-07 11:08:53 +00:00
|
|
|
_s = m.get_long(F_SOTTOC_CLIENTE);
|
|
|
|
else _s = m.get_long(F_SOTTOC_FORN);
|
1994-10-18 17:51:25 +00:00
|
|
|
if (_c == 0)
|
|
|
|
_saldo_gruppo = TRUE;
|
|
|
|
else if (_s == 0l)
|
|
|
|
_saldo_conto = TRUE;
|
|
|
|
else _saldo_sottoc = TRUE;
|
|
|
|
|
2003-04-03 16:15:58 +00:00
|
|
|
TRectype from (LF_SALDI);
|
|
|
|
TRectype to (LF_SALDI);
|
1995-04-21 15:41:11 +00:00
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
from.put(SLD_GRUPPO,_g);
|
|
|
|
if (_c != 0)
|
|
|
|
from.put(SLD_CONTO, _c);
|
|
|
|
if (_s != 0l)
|
|
|
|
from.put(SLD_SOTTOCONTO, _s);
|
|
|
|
|
|
|
|
to.put(SLD_GRUPPO,_g);
|
|
|
|
if (_c != 0)
|
|
|
|
to.put(SLD_CONTO,_c);
|
|
|
|
if (_s != 0l)
|
|
|
|
to.put(SLD_SOTTOCONTO,_s);
|
|
|
|
|
1996-07-01 17:22:56 +00:00
|
|
|
_cur->setkey(2);
|
1994-10-18 17:51:25 +00:00
|
|
|
|
1996-06-04 14:18:45 +00:00
|
|
|
_cur->setregion(from,to);
|
1994-10-18 17:51:25 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1996-07-01 17:22:56 +00:00
|
|
|
bool TSaldibrowse_application::anno_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_TAB && f.focusdirty())
|
|
|
|
{
|
1997-10-20 14:23:01 +00:00
|
|
|
const int anno = atoi(f.get());
|
1997-01-10 14:10:18 +00:00
|
|
|
if (anno > 0)
|
1996-07-01 17:22:56 +00:00
|
|
|
{
|
1997-10-20 14:23:01 +00:00
|
|
|
if (!app()._ese.exist(anno))
|
2003-04-03 16:15:58 +00:00
|
|
|
return f.error_box(FR("Esercizio %d non presente."), anno);
|
1997-01-10 14:10:18 +00:00
|
|
|
else
|
|
|
|
app()._anno = anno;
|
|
|
|
}
|
1996-07-01 17:22:56 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TSaldibrowse_application::flsca_handler(TMask_field& f, KEY key)
|
|
|
|
{
|
|
|
|
if (key == K_SPACE)
|
1997-11-11 12:00:51 +00:00
|
|
|
app()._scarongly = !f.get().blank();
|
1996-07-01 17:22:56 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
bool TSaldibrowse_application::sottoc_handler(TMask_field& f, KEY key)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1994-12-07 11:08:53 +00:00
|
|
|
bool ok = TRUE;
|
1995-01-02 09:31:23 +00:00
|
|
|
|
1994-12-07 11:08:53 +00:00
|
|
|
if (key == K_TAB)
|
|
|
|
{
|
1995-01-02 09:31:23 +00:00
|
|
|
bool stop = FALSE;
|
|
|
|
|
1994-12-07 11:08:53 +00:00
|
|
|
TMask& m = f.mask();
|
|
|
|
int gruppo = m.get_int(F_GRUPPO);
|
|
|
|
int conto = m.get_int(F_CONTO);
|
1994-11-22 09:42:35 +00:00
|
|
|
const long sottoconto = atol(f.get());
|
1994-12-07 11:08:53 +00:00
|
|
|
const short id = f.dlg();
|
|
|
|
|
1995-01-02 09:31:23 +00:00
|
|
|
if (sottoconto != 0)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1994-12-07 11:08:53 +00:00
|
|
|
if (id == F_SOTTOCONTO)
|
1994-10-24 11:24:12 +00:00
|
|
|
{
|
1995-01-02 09:31:23 +00:00
|
|
|
if (gruppo != 0 && conto != 0)
|
|
|
|
{
|
2003-04-03 16:15:58 +00:00
|
|
|
TString key;
|
|
|
|
|
|
|
|
key.format("%d|%d|%ld", gruppo, conto, sottoconto);
|
|
|
|
|
|
|
|
const TRectype & pconti = cache().get(LF_PCON, key);
|
|
|
|
|
|
|
|
ok = stop = !pconti.empty();
|
1995-01-02 09:31:23 +00:00
|
|
|
}
|
1994-12-07 11:08:53 +00:00
|
|
|
}
|
|
|
|
else
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1994-12-07 11:08:53 +00:00
|
|
|
const char tipo = id == F_SOTTOC_CLIENTE ? 'C' : 'F';
|
2003-04-03 16:15:58 +00:00
|
|
|
TString key;
|
|
|
|
|
|
|
|
key.format("%c|%ld", tipo, sottoconto);
|
1996-07-01 17:22:56 +00:00
|
|
|
app()._s = sottoconto;
|
2003-04-03 16:15:58 +00:00
|
|
|
|
|
|
|
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
|
|
|
|
|
|
|
ok = stop = !clifo.empty();
|
1994-12-07 11:08:53 +00:00
|
|
|
if (ok && (gruppo == 0 || conto == 0))
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1994-12-07 11:08:53 +00:00
|
|
|
m.set(F_GRUPPO, gruppo = clifo.get_int("GRUPPO"));
|
|
|
|
m.set(F_CONTO, conto = clifo.get_int("CONTO"));
|
1995-01-02 09:31:23 +00:00
|
|
|
ok = stop = gruppo != 0 && conto != 0;
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
}
|
1994-12-07 11:08:53 +00:00
|
|
|
}
|
|
|
|
else
|
1995-04-21 15:41:11 +00:00
|
|
|
if (gruppo != 0 /* && conto != 0 */)
|
1994-12-07 11:08:53 +00:00
|
|
|
{
|
2003-04-03 16:15:58 +00:00
|
|
|
TString key;
|
|
|
|
|
|
|
|
key.format("%d|%d", gruppo, conto);
|
|
|
|
|
|
|
|
const TRectype & pconti = cache().get(LF_PCON, key);
|
|
|
|
|
|
|
|
ok = stop = !pconti.empty();
|
1995-01-02 09:31:23 +00:00
|
|
|
if (ok)
|
1995-04-21 15:41:11 +00:00
|
|
|
m.set(F_DESCR_CONTO, pconti.get(PCN_DESCR));
|
|
|
|
else
|
|
|
|
m.reset(F_DESCR_CONTO);
|
1995-01-02 09:31:23 +00:00
|
|
|
}
|
1996-06-26 15:39:26 +00:00
|
|
|
if (!ok)
|
2003-04-03 16:15:58 +00:00
|
|
|
f.error_box(TR("Conto errato o incompleto"));
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
1994-12-07 11:08:53 +00:00
|
|
|
|
|
|
|
return ok;
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
bool TSaldibrowse_application::user_create()
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
2003-04-03 16:15:58 +00:00
|
|
|
open_files(LF_TABCOM, LF_TAB, LF_PCON, LF_SALDI, 0);
|
1996-07-01 17:22:56 +00:00
|
|
|
_rel = new TRelation(LF_PCON);
|
1997-11-11 12:00:51 +00:00
|
|
|
_rel->add(LF_CLIFO,"TIPOCF=TMCF");
|
|
|
|
|
1995-01-02 09:31:23 +00:00
|
|
|
_rel1 = new TRelation(LF_SALDI);
|
|
|
|
_cur = new TCursor(_rel1, "", 2);
|
1997-11-11 12:00:51 +00:00
|
|
|
_msk = new TMask("cg5200a");
|
1996-07-01 17:22:56 +00:00
|
|
|
_msk->set_handler(F_ANNO, anno_handler);
|
|
|
|
_msk->set_handler(F_SCARICATO, flsca_handler);
|
1994-10-18 17:51:25 +00:00
|
|
|
_msk->set_handler(F_SOTTOCONTO, sottoc_handler);
|
|
|
|
_msk->set_handler(F_SOTTOC_CLIENTE, sottoc_handler);
|
|
|
|
_msk->set_handler(F_SOTTOC_FORN, sottoc_handler);
|
1994-12-07 11:08:53 +00:00
|
|
|
ss().disable();
|
1996-05-20 09:17:22 +00:00
|
|
|
ss().set_notify(sheet_action);
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
set_search_field(F_GRUPPO);
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
bool TSaldibrowse_application::user_destroy()
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
delete _msk;
|
|
|
|
delete _rel;
|
|
|
|
delete _rel1;
|
|
|
|
delete _cur;
|
1997-11-11 12:00:51 +00:00
|
|
|
// delete _esc;
|
1994-10-18 17:51:25 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
int TSaldibrowse_application::read(TMask& m)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1997-02-06 15:47:43 +00:00
|
|
|
int err = NOERR;
|
1996-05-20 09:17:22 +00:00
|
|
|
m.autoload(*_rel);
|
1996-07-01 17:22:56 +00:00
|
|
|
m.set(F_ANNO,_anno);
|
|
|
|
m.set(F_SCARICATO,_scarongly ? "X" : " ");
|
|
|
|
TString tipo(m.get(F_TIPOCF));
|
2003-04-03 16:15:58 +00:00
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
fai_filtro();
|
1997-02-06 15:47:43 +00:00
|
|
|
if (_cur->items() > 0)
|
|
|
|
compilasheet();
|
|
|
|
else
|
|
|
|
{
|
|
|
|
err = _iskeynotfound;
|
2003-04-03 16:15:58 +00:00
|
|
|
error_box(TR("Saldi non presenti per il conto specificato."));
|
1997-02-06 15:47:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return err;
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
1996-05-20 09:17:22 +00:00
|
|
|
void TSaldibrowse_application::add_r(int numrig,int a,real& slf,char sff,real& sc,char f,real& si,
|
1997-11-11 12:00:51 +00:00
|
|
|
real& pd, real& pa,real& saldo,TDate& d,long n,real& pdp,
|
1996-05-20 09:17:22 +00:00
|
|
|
real& pap,real& sp, real& dsc, real& asc)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
TSheet_field& cs = ss();
|
|
|
|
char segno = ' ';
|
|
|
|
|
|
|
|
TToken_string& riga = cs.row(numrig);
|
1997-11-11 12:00:51 +00:00
|
|
|
riga.add(a, 0); // 101 - Anno esercizio
|
|
|
|
riga.add(si.string(),1); // 102 - Saldo iniziale
|
1994-10-18 17:51:25 +00:00
|
|
|
if (si != ZERO)
|
1997-11-11 12:00:51 +00:00
|
|
|
riga.add(f,2); // 103 - Segno saldo iniziale
|
|
|
|
|
|
|
|
riga.add(pd.string(),5); // 106 - Progressivo dare
|
|
|
|
riga.add(pa.string(),6); // 107 - Progressivo avere
|
|
|
|
|
|
|
|
if (saldo > ZERO)
|
1994-10-18 17:51:25 +00:00
|
|
|
segno = 'D';
|
1997-11-11 12:00:51 +00:00
|
|
|
else if (saldo < ZERO)
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
1997-11-11 12:00:51 +00:00
|
|
|
saldo = -saldo;
|
1994-10-18 17:51:25 +00:00
|
|
|
segno = 'A';
|
|
|
|
}
|
1997-11-11 12:00:51 +00:00
|
|
|
riga.add(saldo.string(),3); // 104 - Saldo attuale
|
|
|
|
riga.add(segno,4); // 105 - Segno saldo attuale
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
segno = ' ';
|
|
|
|
if (sc > ZERO)
|
|
|
|
segno = 'D';
|
|
|
|
else if (sc < ZERO)
|
|
|
|
{
|
|
|
|
sc = -sc;
|
|
|
|
segno = 'A';
|
|
|
|
}
|
1996-05-20 09:17:22 +00:00
|
|
|
riga.add(slf.string(),7);
|
1996-07-17 10:21:15 +00:00
|
|
|
if (slf != ZERO)
|
|
|
|
riga.add(sff,8);
|
1994-10-18 17:51:25 +00:00
|
|
|
riga.add(sc.string(),9);
|
|
|
|
riga.add(segno,10);
|
|
|
|
riga.add(d.string(),11);
|
|
|
|
riga.add(n,12);
|
|
|
|
riga.add(pdp.string(),13);
|
|
|
|
riga.add(pap.string(),14);
|
|
|
|
segno = ' ';
|
|
|
|
if (sp > ZERO)
|
|
|
|
segno = 'D';
|
|
|
|
else if (sp < ZERO)
|
|
|
|
{
|
|
|
|
sp = -sp;
|
|
|
|
segno = 'A';
|
|
|
|
}
|
|
|
|
riga.add(sp.string(),15);
|
|
|
|
riga.add(segno,16);
|
1996-05-20 09:17:22 +00:00
|
|
|
riga.add(dsc.string(),17);
|
|
|
|
riga.add(asc.string(),18);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
1996-07-01 17:22:56 +00:00
|
|
|
int TSaldibrowse_application::compare_rows(const TObject** o1, const TObject** o2)
|
|
|
|
{
|
1997-10-20 14:23:01 +00:00
|
|
|
TToken_string* r1 = (TToken_string*)*o1;
|
|
|
|
TToken_string* r2 = (TToken_string*)*o2;
|
|
|
|
TEsercizi_contabili& ese = app()._ese;
|
|
|
|
int a1 = r1->get_int(0);
|
|
|
|
TDate d1 = ese.exist(a1) ? ese[a1].inizio() : TDate(1, 1, a1);
|
|
|
|
int a2 = r2->get_int(0);
|
|
|
|
TDate d2 = ese.exist(a2) ? ese[a2].inizio() : TDate(1, 1, a2);
|
|
|
|
|
|
|
|
int rt = d1 == d2 ? 0 : (d1 < d2 ? -1 : +1);
|
1996-07-01 17:22:56 +00:00
|
|
|
return rt;
|
|
|
|
}
|
|
|
|
|
1994-11-22 09:42:35 +00:00
|
|
|
void TSaldibrowse_application::compilasheet()
|
1994-10-18 17:51:25 +00:00
|
|
|
{
|
|
|
|
char flagsal = ' ';
|
1996-05-20 09:17:22 +00:00
|
|
|
char flagfin = ' ';
|
1994-10-18 17:51:25 +00:00
|
|
|
real saldo = ZERO;
|
1996-07-08 16:08:44 +00:00
|
|
|
real saldocompl = ZERO;
|
1996-05-20 09:17:22 +00:00
|
|
|
// real saldosca = ZERO;
|
1994-10-18 17:51:25 +00:00
|
|
|
real saldopro = ZERO;
|
1996-05-20 09:17:22 +00:00
|
|
|
// real saldo_gc = ZERO;
|
|
|
|
// real saldoini_gc = ZERO; ??? a che servono????
|
|
|
|
// real saldosca_gc = ZERO;
|
|
|
|
// real saldopro_gc = ZERO;
|
1994-10-18 17:51:25 +00:00
|
|
|
real saldoini = ZERO;
|
|
|
|
real pdare = ZERO;
|
|
|
|
real pavere = ZERO;
|
|
|
|
real pdaresca = ZERO;
|
|
|
|
real paveresca = ZERO;
|
1996-05-20 09:17:22 +00:00
|
|
|
real saldofin = ZERO;
|
1994-10-18 17:51:25 +00:00
|
|
|
real pdarepro = ZERO;
|
|
|
|
real paverepro = ZERO;
|
|
|
|
int gruppo, conto, anno;
|
|
|
|
long sottoconto;
|
|
|
|
long ultimo_num = 0l;
|
1995-08-08 10:17:24 +00:00
|
|
|
TDate ultima_data;
|
1994-10-18 17:51:25 +00:00
|
|
|
|
1996-05-20 09:17:22 +00:00
|
|
|
// nuova struttura archivio saldi
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
_riga.destroy();
|
|
|
|
|
1997-11-11 12:00:51 +00:00
|
|
|
const TRecnotype items = _cur->items();
|
1994-10-18 17:51:25 +00:00
|
|
|
*_cur = 0l;
|
1997-11-11 12:00:51 +00:00
|
|
|
|
|
|
|
const TRectype& curr = _cur->curr();
|
1994-10-18 17:51:25 +00:00
|
|
|
for (int i = 0; i < items; i++,++(*_cur))
|
1996-06-04 14:18:45 +00:00
|
|
|
{
|
|
|
|
|
1997-11-11 12:00:51 +00:00
|
|
|
const bool scar = curr.get_bool(SLD_FLSCA);
|
1996-06-04 14:18:45 +00:00
|
|
|
if ((_scarongly && !scar) || (!_scarongly && scar))
|
1996-05-20 09:17:22 +00:00
|
|
|
continue;
|
|
|
|
|
1997-11-11 12:00:51 +00:00
|
|
|
anno = curr.get_int(SLD_ANNOES);
|
|
|
|
gruppo = curr.get_int(SLD_GRUPPO);
|
|
|
|
conto = curr.get_int(SLD_CONTO);
|
|
|
|
sottoconto = curr.get_long(SLD_SOTTOCONTO);
|
1994-10-18 17:51:25 +00:00
|
|
|
|
1996-07-01 17:22:56 +00:00
|
|
|
if (_anno != 0 && _anno != anno && _annop != anno) continue;
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
if (gruppo != _g) continue;
|
|
|
|
|
|
|
|
if (_saldo_conto && conto != _c) continue;
|
|
|
|
|
|
|
|
if (_saldo_conto || _saldo_gruppo)
|
1997-11-11 12:00:51 +00:00
|
|
|
_riga.add_riga(curr);
|
1994-10-18 17:51:25 +00:00
|
|
|
|
|
|
|
if (_saldo_sottoc)
|
|
|
|
{
|
1997-11-11 12:00:51 +00:00
|
|
|
flagsal = curr.get_char(SLD_FLAGSALINI);
|
|
|
|
flagfin = curr.get_char(SLD_FLAGSALFIN);
|
|
|
|
saldoini = curr.get_real(SLD_SALDO);
|
|
|
|
saldofin = curr.get_real(SLD_SALDOFIN);
|
|
|
|
pdare = curr.get_real(SLD_PDARE);
|
|
|
|
pavere = curr.get_real(SLD_PAVERE);
|
|
|
|
pdarepro = curr.get_real(SLD_PDAREPRO);
|
|
|
|
paverepro = curr.get_real(SLD_PAVEREPRO);
|
|
|
|
ultima_data = curr.get(SLD_DATAULMOV);
|
|
|
|
ultimo_num = curr.get_long(SLD_NUMULTMOV);
|
1996-05-20 09:17:22 +00:00
|
|
|
|
|
|
|
pdaresca = ZERO;
|
|
|
|
paveresca = ZERO;
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
if (flagsal == 'D')
|
|
|
|
saldo = pdare + saldoini - pavere;
|
|
|
|
else
|
|
|
|
saldo = pdare - saldoini - pavere;
|
1996-07-08 16:08:44 +00:00
|
|
|
|
|
|
|
if (flagfin == 'D')
|
|
|
|
saldocompl = saldo + saldofin;
|
|
|
|
else
|
|
|
|
saldocompl = saldo - saldofin;
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
saldopro = pdarepro - paverepro;
|
|
|
|
|
1996-07-08 16:08:44 +00:00
|
|
|
add_r(i,anno,saldofin,flagfin,saldocompl,flagsal,saldoini,pdare,pavere,saldo,
|
1996-05-20 09:17:22 +00:00
|
|
|
ultima_data,ultimo_num,pdarepro,paverepro,saldopro,pdaresca, paveresca);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (_saldo_gruppo || _saldo_conto)
|
|
|
|
{
|
|
|
|
for (int j = 0; j < _riga.items(); j++)
|
|
|
|
{
|
|
|
|
TRectype& riga = (TRectype&)_riga[j];
|
|
|
|
anno = riga.get_int(SLD_ANNOES);
|
|
|
|
flagsal = riga.get_char(SLD_FLAGSALINI);
|
1996-05-20 09:17:22 +00:00
|
|
|
flagfin = riga.get_char(SLD_FLAGSALFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
saldoini = riga.get_real(SLD_SALDO);
|
1996-05-20 09:17:22 +00:00
|
|
|
saldofin = riga.get_real(SLD_SALDOFIN);
|
1994-10-18 17:51:25 +00:00
|
|
|
pdare = riga.get_real(SLD_PDARE);
|
|
|
|
pavere = riga.get_real(SLD_PAVERE);
|
1996-07-08 16:08:44 +00:00
|
|
|
if (flagsal == 'D')
|
|
|
|
saldo = pdare + saldoini - pavere;
|
|
|
|
else
|
|
|
|
saldo = pdare - saldoini - pavere;
|
|
|
|
|
|
|
|
if (flagfin == 'D')
|
|
|
|
saldocompl = saldo + saldofin;
|
|
|
|
else
|
|
|
|
saldocompl = saldo - saldofin;
|
|
|
|
|
1994-10-18 17:51:25 +00:00
|
|
|
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);
|
1996-05-20 09:17:22 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
// come sopra
|
1996-07-08 16:08:44 +00:00
|
|
|
add_r(j,anno,saldofin,flagfin,saldocompl,flagsal,saldoini,pdare,pavere,saldo,ultima_data,
|
1996-05-20 09:17:22 +00:00
|
|
|
ultimo_num,pdarepro,paverepro,saldopro, pdaresca, paveresca);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
_riga.destroy();
|
|
|
|
}
|
1996-07-01 17:22:56 +00:00
|
|
|
|
|
|
|
// Ora ordina le righe dello sheet per ordine della data inizio esercizio
|
|
|
|
TString_array& righe_sheet = ss().rows_array();
|
|
|
|
righe_sheet.TArray::sort(compare_rows);
|
1994-10-18 17:51:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
int cg5200(int argc, char* argv[])
|
|
|
|
{
|
1994-11-22 09:42:35 +00:00
|
|
|
TSaldibrowse_application a;
|
2003-04-03 16:15:58 +00:00
|
|
|
a.run(argc, argv, TR("Visualizzazione saldi"));
|
1994-10-18 17:51:25 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|