1995-04-19 13:54:16 +00:00
|
|
|
#include <relapp.h>
|
|
|
|
#include <msksheet.h>
|
1994-08-12 10:52:49 +00:00
|
|
|
#include <stdtypes.h>
|
|
|
|
#include <lffiles.h>
|
|
|
|
#include "ba4.h"
|
|
|
|
#include "ba4100.h"
|
1995-04-19 13:54:16 +00:00
|
|
|
#define FIRST_YEAR 1993
|
1994-08-12 10:52:49 +00:00
|
|
|
|
|
|
|
class BA4100_application : public TRelation_application
|
|
|
|
{
|
1995-04-19 13:54:16 +00:00
|
|
|
TMask * _msk;
|
|
|
|
TRelation * _rel;
|
|
|
|
TLocalisamfile * _alici;
|
|
|
|
TRecord_array * _alici_rec;
|
1995-08-09 09:49:19 +00:00
|
|
|
static bool fld_notify(TSheet_field& s, int r, KEY k);
|
1995-03-16 13:23:39 +00:00
|
|
|
virtual bool user_create() ;
|
|
|
|
virtual bool user_destroy() ;
|
|
|
|
virtual bool changing_mask(int mode) { return FALSE;}
|
|
|
|
virtual TRelation* get_relation() const { return _rel;}
|
1995-04-19 13:54:16 +00:00
|
|
|
virtual int read(TMask& m);
|
|
|
|
virtual int write(const TMask& m);
|
|
|
|
virtual int rewrite(const TMask& m);
|
|
|
|
virtual bool remove();
|
1994-08-12 10:52:49 +00:00
|
|
|
|
|
|
|
public:
|
1995-04-19 13:54:16 +00:00
|
|
|
virtual TMask* get_mask(int mode) { return _msk;}
|
1994-08-12 10:52:49 +00:00
|
|
|
BA4100_application() {}
|
1995-04-19 13:54:16 +00:00
|
|
|
virtual ~BA4100_application() {}
|
|
|
|
TRecord_array & alici_rec() { return * _alici_rec; }
|
1994-08-12 10:52:49 +00:00
|
|
|
};
|
|
|
|
|
1995-04-19 13:54:16 +00:00
|
|
|
BA4100_application & app() { return (BA4100_application &) main_app(); }
|
|
|
|
|
1995-08-09 09:49:19 +00:00
|
|
|
bool BA4100_application::fld_notify(TSheet_field& f, int r, KEY k)
|
1995-04-19 13:54:16 +00:00
|
|
|
{
|
|
|
|
if (k == K_INS)
|
|
|
|
{
|
|
|
|
TMask& m = f.sheet_mask();
|
|
|
|
TToken_string & t = f.row(r);
|
|
|
|
|
|
|
|
t.format("%d", r + FIRST_YEAR);
|
|
|
|
t.add("");
|
|
|
|
t.add("");
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
1994-08-12 10:52:49 +00:00
|
|
|
bool BA4100_application::user_create()
|
|
|
|
{
|
|
|
|
_msk = new TMask("ba4100a") ;
|
1995-04-19 13:54:16 +00:00
|
|
|
TSheet_field& f = (TSheet_field&) _msk->field(FLD_CM2_ALIQICI);
|
|
|
|
f.set_notify(fld_notify);
|
1994-08-12 10:52:49 +00:00
|
|
|
_rel = new TRelation(LF_COMUNI);
|
1995-04-19 13:54:16 +00:00
|
|
|
_alici = new TLocalisamfile(LF_ALICI);
|
|
|
|
_alici_rec = new TRecord_array(LF_ALICI, "ANNO", FIRST_YEAR);
|
1994-08-12 10:52:49 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool BA4100_application::user_destroy()
|
|
|
|
{
|
|
|
|
delete _msk;
|
1995-04-19 13:54:16 +00:00
|
|
|
delete _rel;
|
|
|
|
delete _alici;
|
|
|
|
delete _alici_rec;
|
1995-03-16 13:23:39 +00:00
|
|
|
return TRUE;
|
1994-08-12 10:52:49 +00:00
|
|
|
}
|
|
|
|
|
1995-04-19 13:54:16 +00:00
|
|
|
int BA4100_application::read(TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::read(m);
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
TRectype r = _alici->curr();
|
|
|
|
|
|
|
|
r.zero();
|
|
|
|
r.put("COM", m.get(FLD_CM1_COM));
|
1995-04-21 09:00:53 +00:00
|
|
|
_alici_rec->read(r); // Ignora errori di lettura aliquote ICI
|
|
|
|
|
1995-04-19 13:54:16 +00:00
|
|
|
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
|
|
|
|
f.destroy();
|
|
|
|
int last = _alici_rec->last_row();
|
|
|
|
const int year = TDate(TODAY).year();
|
|
|
|
|
|
|
|
if (last < year) last = year;
|
|
|
|
for (int i = FIRST_YEAR; i <= last; i++)
|
|
|
|
{
|
|
|
|
TRectype & r = _alici_rec->row(i, TRUE);
|
|
|
|
TToken_string & t = f.row(i - FIRST_YEAR);
|
|
|
|
|
|
|
|
t = r.get("ANNO");
|
|
|
|
t.add(r.get("ALIQ"));
|
|
|
|
t.add(r.get("DETR"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int BA4100_application::write(const TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::write(m);
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
|
|
|
|
_alici_rec->destroy_rows();
|
|
|
|
if (m.insert_mode())
|
|
|
|
_alici_rec->renum_key("COM", m.get(FLD_CM1_COM));
|
|
|
|
|
|
|
|
for (int i = 0; i < f.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string & t = f.row(i);
|
|
|
|
const real aliq(t.get(1));
|
|
|
|
const real detr(t.get());
|
|
|
|
if (aliq != ZERO || detr != ZERO)
|
|
|
|
{
|
|
|
|
TRectype & r = _alici_rec->row(t.get_int(0), TRUE);
|
|
|
|
|
|
|
|
r.put("ALIQ", aliq);
|
|
|
|
r.put("DETR", detr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = _alici_rec->write();
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
int BA4100_application::rewrite(const TMask& m)
|
|
|
|
{
|
|
|
|
int err = TRelation_application::rewrite(m);
|
|
|
|
if (err == NOERR)
|
|
|
|
{
|
|
|
|
TSheet_field& f = (TSheet_field&) m.field(FLD_CM2_ALIQICI);
|
|
|
|
_alici_rec->destroy_rows();
|
|
|
|
if (m.insert_mode())
|
|
|
|
_alici_rec->renum_key("COM", m.get(FLD_CM1_COM));
|
|
|
|
|
|
|
|
for (int i = 0; i < f.items(); i++)
|
|
|
|
{
|
|
|
|
TToken_string & t = f.row(i);
|
|
|
|
const real aliq(t.get(1));
|
|
|
|
const real detr(t.get());
|
|
|
|
if (aliq != ZERO || detr != ZERO)
|
|
|
|
{
|
|
|
|
TRectype & r = _alici_rec->row(t.get_int(0), TRUE);
|
|
|
|
|
|
|
|
r.put("ALIQ", aliq);
|
|
|
|
r.put("DETR", detr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = _alici_rec->rewrite();
|
|
|
|
}
|
|
|
|
return err;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool BA4100_application::remove()
|
|
|
|
|
|
|
|
{
|
|
|
|
return TRelation_application::remove() && _alici_rec->remove() == NOERR;
|
|
|
|
}
|
|
|
|
|
1994-08-12 10:52:49 +00:00
|
|
|
int ba4100(int argc, char* argv[])
|
|
|
|
{
|
|
|
|
BA4100_application a ;
|
|
|
|
a.run(argc, argv, "Anagrafica Comuni");
|
|
|
|
return 0;
|
|
|
|
}
|