1999-02-02 14:31:21 +00:00
|
|
|
|
#include <applicat.h>
|
|
|
|
|
#include <mask.h>
|
|
|
|
|
#include <progind.h>
|
|
|
|
|
#include <relation.h>
|
|
|
|
|
#include <urldefid.h>
|
|
|
|
|
|
|
|
|
|
#include "at8.h"
|
|
|
|
|
#include "at8200a.h"
|
|
|
|
|
|
|
|
|
|
// nomi campi maschera
|
|
|
|
|
#include "atlib.h"
|
|
|
|
|
|
|
|
|
|
// nomi dei campi
|
|
|
|
|
#include "soggetti.h"
|
|
|
|
|
#include "donaz.h"
|
|
|
|
|
#include "contsan.h"
|
|
|
|
|
#include "idoneita.h"
|
2000-05-18 15:47:40 +00:00
|
|
|
|
#include "benem.h"
|
2004-06-03 10:45:51 +00:00
|
|
|
|
#include "famiglie.h"
|
1999-02-02 14:31:21 +00:00
|
|
|
|
|
|
|
|
|
class TAggConSan : public TApplication
|
|
|
|
|
{
|
|
|
|
|
TMask* _msk;
|
|
|
|
|
TRelation* _rel;
|
|
|
|
|
TLocalisamfile* _soggetti;
|
|
|
|
|
TLocalisamfile* _donaz;
|
|
|
|
|
TLocalisamfile* _contsan;
|
|
|
|
|
TLocalisamfile* _idoneita;
|
2000-05-18 15:47:40 +00:00
|
|
|
|
TLocalisamfile* _benem;
|
2004-06-03 10:45:51 +00:00
|
|
|
|
TLocalisamfile* _famiglie;
|
1999-02-02 14:31:21 +00:00
|
|
|
|
TRecord_array* _sdonazioni;
|
|
|
|
|
TRecord_array* _scontrolli;
|
|
|
|
|
TRecord_array* _sidoneita;
|
2000-05-18 15:47:40 +00:00
|
|
|
|
TRecord_array* _sbenem;
|
2004-06-03 10:45:51 +00:00
|
|
|
|
TRecord_array* _sfamiglie;
|
1999-02-02 14:31:21 +00:00
|
|
|
|
// parametri di sezione
|
|
|
|
|
int _intsi_f1, _intsi_f2, _intsi_m, _intaf_m, _etadonne;
|
|
|
|
|
int _numdon1, _numdon2;
|
|
|
|
|
TString16 _catini1, _catfin1, _catini2, _catfin2, _motivoid;
|
|
|
|
|
bool _sttess2, _dataisc, _nomessage, _autoid;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual bool create();
|
|
|
|
|
virtual bool destroy();
|
|
|
|
|
virtual bool menu(MENU_TAG m);
|
|
|
|
|
virtual TMask& get_mask() { return *_msk; }
|
|
|
|
|
virtual TRelation* get_relation() const { return _rel; }
|
|
|
|
|
int write(TSheet_field& s);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
TAggConSan() {}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
HIDDEN inline TAggConSan& app() { return (TAggConSan&) main_app(); }
|
|
|
|
|
|
|
|
|
|
bool TAggConSan::create()
|
|
|
|
|
{
|
|
|
|
|
TApplication::create();
|
|
|
|
|
_msk = new TMask("at8200a");
|
|
|
|
|
_rel = new TRelation(LF_SOGGETTI);
|
|
|
|
|
//_rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
|
|
|
|
|
_soggetti = new TLocalisamfile(LF_SOGGETTI);
|
|
|
|
|
_donaz = new TLocalisamfile(LF_DONAZ);
|
|
|
|
|
_contsan = new TLocalisamfile(LF_CONTSAN);
|
|
|
|
|
_idoneita = new TLocalisamfile(LF_IDONEITA);
|
2000-05-18 15:47:40 +00:00
|
|
|
|
_benem = new TLocalisamfile(LF_BENEM);
|
2004-06-03 10:45:51 +00:00
|
|
|
|
_famiglie = new TLocalisamfile(LF_FAMIGLIE);
|
1999-02-02 14:31:21 +00:00
|
|
|
|
_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
|
|
|
|
|
_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
|
|
|
|
|
_sidoneita = new TRecord_array(LF_IDONEITA,IDO_PROGIDO);
|
2000-05-18 15:47:40 +00:00
|
|
|
|
_sbenem = new TRecord_array(LF_BENEM,BEN_PROGBEN);
|
2004-06-03 10:45:51 +00:00
|
|
|
|
_sfamiglie = new TRecord_array(LF_FAMIGLIE,FAM_PROGFAM);
|
1999-02-02 14:31:21 +00:00
|
|
|
|
TConfig config(CONFIG_STUDIO);
|
|
|
|
|
_numdon1 = config.get_int("NumDon1");
|
|
|
|
|
_numdon2 = config.get_int("NumDon2");
|
|
|
|
|
_catini1 = config.get("CatIni1");
|
|
|
|
|
_catfin1 = config.get("CatFin1");
|
|
|
|
|
_catini2 = config.get("CatIni2");
|
|
|
|
|
_catfin2 = config.get("CatFin2");
|
|
|
|
|
_sttess2 = config.get_bool("StTess2");
|
|
|
|
|
_dataisc = config.get_bool("DataIsc");
|
|
|
|
|
_nomessage = config.get_bool("NoMessage");
|
|
|
|
|
_etadonne = config.get_int("EtaDonne");
|
|
|
|
|
_intsi_f1 = config.get_int("IntSI_F1");
|
|
|
|
|
_intsi_f2 = config.get_int("IntSI_F2");
|
|
|
|
|
_intsi_m = config.get_int("IntSI_M");
|
|
|
|
|
_intaf_m = config.get_int("IntAF_M");
|
|
|
|
|
dispatch_e_menu(BAR_ITEM(1));
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TAggConSan::destroy()
|
|
|
|
|
{
|
2004-06-03 10:45:51 +00:00
|
|
|
|
delete _sfamiglie;
|
2000-05-18 15:47:40 +00:00
|
|
|
|
delete _sbenem;
|
1999-02-02 14:31:21 +00:00
|
|
|
|
delete _sidoneita;
|
|
|
|
|
delete _scontrolli;
|
|
|
|
|
delete _sdonazioni;
|
2004-06-03 10:45:51 +00:00
|
|
|
|
delete _famiglie;
|
2000-05-18 15:47:40 +00:00
|
|
|
|
delete _benem;
|
1999-02-02 14:31:21 +00:00
|
|
|
|
delete _idoneita;
|
|
|
|
|
delete _contsan;
|
|
|
|
|
delete _donaz;
|
|
|
|
|
delete _soggetti;
|
|
|
|
|
delete _rel;
|
|
|
|
|
delete _msk;
|
|
|
|
|
return TApplication::destroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TAggConSan::menu(MENU_TAG m)
|
|
|
|
|
{
|
|
|
|
|
KEY tasto = _msk->run();
|
2000-03-03 11:47:59 +00:00
|
|
|
|
TPrinter& pr = printer();
|
|
|
|
|
|
1999-02-02 14:31:21 +00:00
|
|
|
|
if (tasto == K_ENTER)
|
|
|
|
|
{
|
2000-03-03 11:47:59 +00:00
|
|
|
|
if (!pr.open())
|
|
|
|
|
return error_box("Errore in apertura stampante.");
|
|
|
|
|
|
2000-05-18 15:47:40 +00:00
|
|
|
|
bool anagrafica = _msk->get_bool(F_ANAGRAFICA);
|
2001-10-22 09:07:33 +00:00
|
|
|
|
bool controlli = _msk->get_bool(F_CONTROLLI);
|
2000-05-18 15:47:40 +00:00
|
|
|
|
bool benemerenze = _msk->get_bool(F_BENEMERENZE);
|
2004-06-03 10:45:51 +00:00
|
|
|
|
bool famiglie = _msk->get_bool(F_FAMIGLIE);
|
2001-10-22 09:07:33 +00:00
|
|
|
|
TLocalisamfile& soggetti = _rel->lfile();
|
1999-02-02 14:31:21 +00:00
|
|
|
|
_rel->lfile().setkey(2);
|
|
|
|
|
bool modificato = FALSE;
|
|
|
|
|
TDate oggi(TODAY);
|
|
|
|
|
TPrintrow row;
|
|
|
|
|
TString256 rigastampa;
|
2000-03-03 11:47:59 +00:00
|
|
|
|
rigastampa = "SOGGETTI NON TROVATI SU ARCHIVIO PROVINCIALE ";
|
1999-02-02 14:31:21 +00:00
|
|
|
|
rigastampa << oggi.string();
|
|
|
|
|
rigastampa.center_just(120);
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
row.put("@>", 1);
|
|
|
|
|
row.put("Pag. @#", 105);
|
|
|
|
|
printer().setheaderline(2, row);
|
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa.fill('-',120);
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
printer().setheaderline(3, row);
|
|
|
|
|
TRectype recsog = _rel->curr();
|
2001-10-22 09:07:33 +00:00
|
|
|
|
|
|
|
|
|
if (anagrafica)
|
|
|
|
|
{
|
|
|
|
|
TExternisamfile* fs = new TExternisamfile("$portasog");
|
|
|
|
|
TProgind *pi;
|
|
|
|
|
pi = new TProgind(fs->eod(),"Aggiornamento dati anagrafici", FALSE, TRUE, 10);
|
|
|
|
|
pi->setstatus(1);
|
|
|
|
|
for(fs->first(); !fs->eof(); fs->next())
|
|
|
|
|
{
|
|
|
|
|
pi->addstatus(1);
|
|
|
|
|
modificato = FALSE;
|
|
|
|
|
const TString80 cognome = fs->get("COGNOME");
|
|
|
|
|
const TString80 nome = fs->get("NOME");
|
|
|
|
|
const TDate datanasc = fs->get_date("DATANASC");
|
|
|
|
|
recsog.zero();
|
|
|
|
|
recsog.put(SOG_COGNOME, cognome);
|
|
|
|
|
recsog.put(SOG_NOME, nome);
|
|
|
|
|
recsog.put(SOG_DATANASC, datanasc);
|
|
|
|
|
if (recsog.read(_rel->lfile())==NOERR)
|
|
|
|
|
{
|
|
|
|
|
if (fs->get("DATAISC").not_empty())
|
|
|
|
|
recsog.put(SOG_DATAISC, fs->get("DATAISC"));
|
|
|
|
|
recsog.put(SOG_TESSAVIS, fs->get("TESSAVIS"));
|
|
|
|
|
recsog.put(SOG_COGNOME_SP, fs->get("COGNOME_SP"));
|
|
|
|
|
recsog.put(SOG_DOM_INDIR, fs->get("DOM_INDIR"));
|
|
|
|
|
recsog.put(SOG_DOM_CODCOM, fs->get("DOM_CODCOM"));
|
|
|
|
|
recsog.put(SOG_DOM_CODLOC, fs->get("DOM_CODLOC"));
|
|
|
|
|
recsog.put(SOG_DOM_STRADA, fs->get("DOM_STRADA"));
|
|
|
|
|
recsog.put(SOG_DOM_DISTRI, fs->get("DOM_DISTRI"));
|
|
|
|
|
recsog.put(SOG_DOM_CAP, fs->get("DOM_CAP"));
|
|
|
|
|
recsog.put(SOG_RES_INDIR, fs->get("RES_INDIR"));
|
|
|
|
|
recsog.put(SOG_RES_CODCOM, fs->get("RES_CODCOM"));
|
|
|
|
|
recsog.put(SOG_RES_CODLOC, fs->get("RES_CODLOC"));
|
|
|
|
|
recsog.put(SOG_RES_CAP, fs->get("RES_CAP"));
|
|
|
|
|
recsog.put(SOG_COMNASC, fs->get("COMNASC"));
|
|
|
|
|
recsog.put(SOG_SESSO, fs->get("SESSO"));
|
|
|
|
|
recsog.put(SOG_CF, fs->get("CF"));
|
|
|
|
|
recsog.put(SOG_DOCID, fs->get("DOCID"));
|
|
|
|
|
recsog.put(SOG_TELABI, fs->get("TELABI"));
|
|
|
|
|
recsog.put(SOG_TELLAV, fs->get("TELLAV"));
|
|
|
|
|
recsog.put(SOG_TELALT, fs->get("TELALT"));
|
|
|
|
|
recsog.put(SOG_TITINDIR, fs->get("TITINDIR"));
|
|
|
|
|
recsog.put(SOG_CATNOND1, fs->get("CATNOND1"));
|
|
|
|
|
recsog.put(SOG_CATNOND2, fs->get("CATNOND2"));
|
|
|
|
|
recsog.put(SOG_CODMED, fs->get("CODMED"));
|
|
|
|
|
recsog.put(SOG_NOTIZIARIO, fs->get("NOTIZIARIO"));
|
|
|
|
|
recsog.put(SOG_BENEM, fs->get("BENEM"));
|
|
|
|
|
recsog.put(SOG_CONSENSO, fs->get("CONSENSO"));
|
|
|
|
|
recsog.put(SOG_MODCONV, fs->get("MODCONV"));
|
|
|
|
|
recsog.put(SOG_GIOPREDON, fs->get("GIOPREDON"));
|
|
|
|
|
recsog.put(SOG_GIOPRECON, fs->get("GIOPRECON"));
|
|
|
|
|
recsog.put(SOG_CONDOCC, fs->get("CONDOCC"));
|
|
|
|
|
recsog.put(SOG_POSPROF, fs->get("POSPROF"));
|
|
|
|
|
recsog.put(SOG_RAMOATT, fs->get("RAMOATT"));
|
|
|
|
|
recsog.put(SOG_TITSTUD, fs->get("TITSTUD"));
|
|
|
|
|
recsog.put(SOG_PROFESS, fs->get("PROFESS"));
|
|
|
|
|
recsog.put(SOG_ESCLUSO, fs->get("ESCLUSO"));
|
|
|
|
|
recsog.put(SOG_TERMESCL, fs->get("TERMESCL"));
|
|
|
|
|
recsog.put(SOG_MOTESCL, fs->get("MOTESCL"));
|
|
|
|
|
recsog.put(SOG_DATAULTAGG, oggi);
|
|
|
|
|
recsog.put(SOG_UTENULTAGG, "PORT.");
|
|
|
|
|
recsog.rewrite(_rel->lfile());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa << cognome;
|
|
|
|
|
rigastampa << " " << nome;
|
|
|
|
|
rigastampa << " " << datanasc.string();
|
|
|
|
|
const char* catdon = recsog.get(SOG_CATDON);
|
|
|
|
|
if (yesno_box("%s %s %s %s\nIl soggetto non esiste nell'archivio provinciale. Inserire?", (const char*) cognome,(const char*) nome, (const char*) datanasc.string(), catdon))
|
|
|
|
|
{
|
|
|
|
|
soggetti.setkey(1);
|
|
|
|
|
soggetti.last();
|
|
|
|
|
long lastcod = soggetti.get_long(SOG_CODICE);
|
|
|
|
|
soggetti.zero();
|
|
|
|
|
for (int i=0;i<recsog.items();i++)
|
|
|
|
|
soggetti.put(recsog.fieldname(i), fs->get(recsog.fieldname(i)));
|
|
|
|
|
soggetti.put(SOG_CODICE, lastcod+1);
|
|
|
|
|
soggetti.put(SOG_DATAULTAGG, oggi);
|
|
|
|
|
soggetti.put(SOG_UTENULTAGG, "PORT.-inserimento autom.");
|
|
|
|
|
soggetti.write();
|
|
|
|
|
rigastampa << " " << "*** INSERITO codice " << soggetti.get(SOG_CODICE);
|
|
|
|
|
soggetti.setkey(2);
|
|
|
|
|
}
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put((const char*) rigastampa);
|
|
|
|
|
printer().print(row);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delete pi;
|
|
|
|
|
delete fs;
|
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
if (controlli)
|
|
|
|
|
{
|
|
|
|
|
TExternisamfile* fc = new TExternisamfile("$portacon");
|
|
|
|
|
TProgind *pi;
|
|
|
|
|
pi = new TProgind(fc->eod(),"Aggiornamento controlli sanitari", FALSE, TRUE, 10);
|
|
|
|
|
pi->setstatus(1);
|
|
|
|
|
for(fc->first(); !fc->eof(); fc->next())
|
|
|
|
|
{
|
|
|
|
|
pi->addstatus(1);
|
|
|
|
|
modificato = FALSE;
|
|
|
|
|
const TString80 cognome = fc->get("COGNOME");
|
|
|
|
|
const TString80 nome = fc->get("NOME");
|
|
|
|
|
const TDate datanasc = fc->get_date("DATANASC");
|
|
|
|
|
recsog.zero();
|
|
|
|
|
recsog.put(SOG_COGNOME, cognome);
|
|
|
|
|
recsog.put(SOG_NOME, nome);
|
|
|
|
|
recsog.put(SOG_DATANASC, datanasc);
|
|
|
|
|
if (recsog.read(_rel->lfile())==NOERR)
|
|
|
|
|
{
|
|
|
|
|
TDate datacon = fc->get_date("DATACON");
|
|
|
|
|
bool esiste = FALSE;
|
|
|
|
|
TRectype* key = new TRectype(LF_CONTSAN);
|
|
|
|
|
key->put(CON_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
_scontrolli->read(key);
|
|
|
|
|
for (int r=1; r<=_scontrolli->rows(); r++)
|
|
|
|
|
{
|
|
|
|
|
const TRectype& riga = _scontrolli->row(r);
|
|
|
|
|
TDate datacon1 = riga.get(CON_DATACON);
|
|
|
|
|
if (datacon==datacon1)
|
|
|
|
|
esiste = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if (!esiste)
|
|
|
|
|
{
|
|
|
|
|
int progcon = _scontrolli->rows()+1;
|
|
|
|
|
TRectype& reccon = _contsan->curr();
|
|
|
|
|
reccon.zero();
|
|
|
|
|
reccon.put(CON_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
reccon.put(CON_PROGCON, progcon);
|
|
|
|
|
reccon.put(CON_DATACON, datacon);
|
|
|
|
|
reccon.put(CON_TIPOCON, fc->get("TIPOCON"));
|
|
|
|
|
reccon.put(CON_IDON1, fc->get("IDON1"));
|
|
|
|
|
reccon.put(CON_IDON2, fc->get("IDON2"));
|
|
|
|
|
reccon.put(CON_IDON3, fc->get("IDON3"));
|
|
|
|
|
reccon.put(CON_IDON4, fc->get("IDON4"));
|
|
|
|
|
reccon.put(CON_INTSI, fc->get("INTSI"));
|
|
|
|
|
reccon.put(CON_INTAF, fc->get("INTAF"));
|
|
|
|
|
reccon.put(CON_PROSSTIPO, fc->get("PROSSTIPO"));
|
|
|
|
|
reccon.put(CON_PROSSDATA, fc->get("PROSSDATA"));
|
|
|
|
|
reccon.put(CON_MOTIVO, fc->get("MOTIVO"));
|
|
|
|
|
TString80 resp = "port.-" ;
|
|
|
|
|
resp << fc->get("RESPONSAB");
|
|
|
|
|
reccon.put(CON_RESPONSAB, resp);
|
|
|
|
|
modificato = TRUE;
|
|
|
|
|
_scontrolli->insert_row(reccon);
|
|
|
|
|
_scontrolli->write(TRUE);
|
|
|
|
|
}
|
|
|
|
|
if (modificato)
|
|
|
|
|
{
|
|
|
|
|
TRectype* key = new TRectype(LF_IDONEITA);
|
|
|
|
|
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
_sidoneita->read(key);
|
|
|
|
|
con_reord(recsog,_scontrolli,_sidoneita);
|
|
|
|
|
//Verifico se la categoria del donatore <20> aggiornata al numero di donazioni dello stesso
|
|
|
|
|
//se non lo <20> eseguo tutti i controlli per il salto automatico di categoria
|
|
|
|
|
TString16 catdon = recsog.get(SOG_CATDON);
|
|
|
|
|
const int totdon = recsog.get_int(SOG_TOTDON);
|
|
|
|
|
if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
|
|
|
|
|
recsog.put(SOG_CATDON, _catfin1);
|
|
|
|
|
const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
|
|
|
|
|
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
|
|
|
|
|
recsog.put(SOG_CATDON, _catfin2);
|
|
|
|
|
recsog.put(SOG_DATAULTAGG, oggi);
|
|
|
|
|
recsog.put(SOG_UTENULTAGG, "PORT.");
|
|
|
|
|
recsog.rewrite(_rel->lfile());
|
|
|
|
|
}
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa << cognome;
|
|
|
|
|
rigastampa << " " << nome;
|
|
|
|
|
rigastampa << " " << datanasc.string();
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
printer().print(row);
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
}
|
|
|
|
|
delete pi;
|
|
|
|
|
delete fc;
|
|
|
|
|
TExternisamfile* fi = new TExternisamfile("$portaido");
|
|
|
|
|
TProgind *pi1;
|
|
|
|
|
pi1 = new TProgind(fi->eod(),"Aggiornamento idoneita'", FALSE, TRUE, 10);
|
|
|
|
|
pi1->setstatus(1);
|
|
|
|
|
for(fi->first(); !fi->eof(); fi->next())
|
|
|
|
|
{
|
|
|
|
|
pi1->addstatus(1);
|
|
|
|
|
modificato = FALSE;
|
|
|
|
|
const TString80 cognome = fi->get("COGNOME");
|
|
|
|
|
const TString80 nome = fi->get("NOME");
|
|
|
|
|
const TDate datanasc = fi->get_date("DATANASC");
|
|
|
|
|
recsog.zero();
|
|
|
|
|
recsog.put(SOG_COGNOME, cognome);
|
|
|
|
|
recsog.put(SOG_NOME, nome);
|
|
|
|
|
recsog.put(SOG_DATANASC, datanasc);
|
|
|
|
|
if (recsog.read(_rel->lfile())==NOERR)
|
|
|
|
|
{
|
|
|
|
|
TDate dataido = fi->get_date("DATAIDO");
|
|
|
|
|
bool esiste = FALSE;
|
1999-02-02 14:31:21 +00:00
|
|
|
|
TRectype* key = new TRectype(LF_IDONEITA);
|
|
|
|
|
key->put(IDO_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
_sidoneita->read(key);
|
2000-05-18 15:47:40 +00:00
|
|
|
|
for (int r=1; r<=_sidoneita->rows(); r++)
|
|
|
|
|
{
|
|
|
|
|
const TRectype& riga = _sidoneita->row(r);
|
|
|
|
|
TDate dataido1 = riga.get(IDO_DATAIDO);
|
|
|
|
|
if (dataido==dataido1)
|
|
|
|
|
esiste = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if (!esiste)
|
|
|
|
|
{
|
|
|
|
|
int progido = _sidoneita->rows()+1;
|
|
|
|
|
TRectype& recido = _idoneita->curr();
|
|
|
|
|
recido.zero();
|
|
|
|
|
recido.put(IDO_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
recido.put(IDO_PROGIDO, progido);
|
|
|
|
|
recido.put(IDO_DATAIDO, dataido);
|
|
|
|
|
recido.put(IDO_TIPOIDO, fi->get("TIPOIDO"));
|
|
|
|
|
recido.put(IDO_IDO_SOS, fi->get("IDO_SOS"));
|
|
|
|
|
recido.put(IDO_INTERVALLO, fi->get("INTERVALLO"));
|
|
|
|
|
recido.put(IDO_FINESOS, fi->get("FINESOS"));
|
|
|
|
|
recido.put(IDO_MOTIVO, fi->get("MOTIVO"));
|
|
|
|
|
TString80 resp = "port.-" ;
|
|
|
|
|
resp << fi->get("RESPONSAB");
|
|
|
|
|
recido.put(IDO_RESPONSAB, resp);
|
|
|
|
|
modificato = TRUE;
|
|
|
|
|
_sidoneita->insert_row(recido);
|
|
|
|
|
_sidoneita->write(TRUE);
|
|
|
|
|
}
|
|
|
|
|
if (modificato)
|
|
|
|
|
{
|
|
|
|
|
TRectype* key = new TRectype(LF_CONTSAN);
|
|
|
|
|
key->put(CON_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
_scontrolli->read(key);
|
|
|
|
|
con_reord(recsog,_scontrolli,_sidoneita);
|
|
|
|
|
//Verifico se la categoria del donatore <20> aggiornata al numero di donazioni dello stesso
|
|
|
|
|
//se non lo <20> eseguo tutti i controlli per il salto automatico di categoria
|
|
|
|
|
TString16 catdon = recsog.get(SOG_CATDON);
|
|
|
|
|
const int totdon = recsog.get_int(SOG_TOTDON);
|
|
|
|
|
if ((catdon == _catini1 || _catini1.empty()) && (totdon>=_numdon1) && _catfin1.not_empty())
|
|
|
|
|
recsog.put(SOG_CATDON, _catfin1);
|
|
|
|
|
const bool tstampata = recsog.get_bool(SOG_T_STAMPATA);
|
|
|
|
|
if ((catdon == _catini2 || _catini2.empty()) && (totdon>=_numdon2) && _catfin2.not_empty() && (!_sttess2 || tstampata))
|
|
|
|
|
recsog.put(SOG_CATDON, _catfin2);
|
|
|
|
|
recsog.put(SOG_DATAULTAGG, oggi);
|
|
|
|
|
recsog.put(SOG_UTENULTAGG, "PORT.");
|
|
|
|
|
recsog.rewrite(_rel->lfile());
|
|
|
|
|
}
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
else
|
1999-02-02 14:31:21 +00:00
|
|
|
|
{
|
2000-05-18 15:47:40 +00:00
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa << cognome;
|
|
|
|
|
rigastampa << " " << nome;
|
|
|
|
|
rigastampa << " " << datanasc.string();
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
printer().print(row);
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
delete pi1;
|
|
|
|
|
delete fi;
|
|
|
|
|
}
|
|
|
|
|
if (benemerenze)
|
|
|
|
|
{
|
|
|
|
|
TExternisamfile* fc = new TExternisamfile("$portaben");
|
|
|
|
|
TProgind *pi;
|
|
|
|
|
pi = new TProgind(fc->eod(),"Aggiornamento benemerenze", FALSE, TRUE, 10);
|
|
|
|
|
pi->setstatus(1);
|
|
|
|
|
for(fc->first(); !fc->eof(); fc->next())
|
|
|
|
|
{
|
|
|
|
|
pi->addstatus(1);
|
|
|
|
|
modificato = FALSE;
|
|
|
|
|
const TString80 cognome = fc->get("COGNOME");
|
|
|
|
|
const TString80 nome = fc->get("NOME");
|
|
|
|
|
const TDate datanasc = fc->get_date("DATANASC");
|
|
|
|
|
recsog.zero();
|
|
|
|
|
recsog.put(SOG_COGNOME, cognome);
|
|
|
|
|
recsog.put(SOG_NOME, nome);
|
|
|
|
|
recsog.put(SOG_DATANASC, datanasc);
|
|
|
|
|
if (recsog.read(_rel->lfile())==NOERR)
|
|
|
|
|
{
|
|
|
|
|
TString16 tipoben = fc->get("TIPOBEN");
|
|
|
|
|
bool esiste = FALSE;
|
|
|
|
|
TRectype* key = new TRectype(LF_BENEM);
|
|
|
|
|
key->put(BEN_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
_sbenem->read(key);
|
|
|
|
|
for (int r=1; r<=_sbenem->rows(); r++)
|
|
|
|
|
{
|
|
|
|
|
const TRectype& riga = _sbenem->row(r);
|
|
|
|
|
TString16 tipoben1 = riga.get(BEN_TIPOBEN);
|
|
|
|
|
if (tipoben==tipoben1)
|
|
|
|
|
esiste = TRUE;
|
|
|
|
|
}
|
|
|
|
|
if (!esiste)
|
|
|
|
|
{
|
|
|
|
|
int progben = _sbenem->rows()+1;
|
|
|
|
|
TRectype& recben = _benem->curr();
|
|
|
|
|
recben.zero();
|
|
|
|
|
recben.put(BEN_CODICE, recsog.get(SOG_CODICE));
|
|
|
|
|
recben.put(BEN_PROGBEN, progben);
|
|
|
|
|
recben.put(BEN_TIPOBEN, fc->get("TIPOBEN"));
|
|
|
|
|
recben.put(BEN_DATAMAT, fc->get("DATAMAT"));
|
|
|
|
|
recben.put(BEN_BONUS, fc->get("BONUS"));
|
|
|
|
|
recben.put(BEN_DATABEN, fc->get("DATABEN"));
|
|
|
|
|
recben.put(BEN_DATACON, fc->get("DATACON"));
|
|
|
|
|
recben.put(BEN_RITIRATA, fc->get("RITIRATA"));
|
|
|
|
|
recben.put(BEN_CODSEZ, fc->get("CODSEZ"));
|
2000-10-10 09:26:57 +00:00
|
|
|
|
recben.put(BEN_CODSOT, fc->get("CODSOT"));
|
2000-05-18 15:47:40 +00:00
|
|
|
|
recben.put(BEN_GRUPPOAZIE, fc->get("GRUPPOAZIE"));
|
|
|
|
|
modificato = TRUE;
|
|
|
|
|
_sbenem->insert_row(recben);
|
|
|
|
|
_sbenem->write(TRUE);
|
|
|
|
|
}
|
|
|
|
|
if (modificato)
|
|
|
|
|
{
|
|
|
|
|
recsog.put(SOG_DATAULTAGG, oggi);
|
|
|
|
|
recsog.put(SOG_UTENULTAGG, "PORT.");
|
|
|
|
|
recsog.rewrite(_rel->lfile());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa << cognome;
|
|
|
|
|
rigastampa << " " << nome;
|
|
|
|
|
rigastampa << " " << datanasc.string();
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
printer().print(row);
|
|
|
|
|
}
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
2000-05-18 15:47:40 +00:00
|
|
|
|
delete pi;
|
|
|
|
|
delete fc;
|
|
|
|
|
}
|
2004-06-03 10:45:51 +00:00
|
|
|
|
if (famiglie)
|
|
|
|
|
{
|
|
|
|
|
TString16 codsez = _msk->get(F_SEZINI);
|
|
|
|
|
TString16 codsot = _msk->get(F_SOTINI);
|
|
|
|
|
for(_famiglie->first(); !_famiglie->eof(); _famiglie->next())
|
|
|
|
|
{
|
|
|
|
|
soggetti.setkey(1);
|
|
|
|
|
soggetti.zero();
|
|
|
|
|
soggetti.put(SOG_CODICE, _famiglie->get(FAM_CODFAM));
|
|
|
|
|
if (soggetti.read() == NOERR)
|
|
|
|
|
{
|
|
|
|
|
if (soggetti.get_long(SOG_CODICE) == _famiglie->get_long(FAM_CODFAM) && soggetti.get(SOG_CODSEZ) == codsez && soggetti.get(SOG_CODSOT))
|
|
|
|
|
_famiglie->remove();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_famiglie->last();
|
|
|
|
|
_rel->lfile().setkey(2);
|
|
|
|
|
long ultfam = _famiglie->get_long(FAM_FAMIGLIA);
|
|
|
|
|
long actfam = 0, prevfam = -1;
|
|
|
|
|
TExternisamfile* fc = new TExternisamfile("$portafam");
|
|
|
|
|
TProgind *pi;
|
|
|
|
|
pi = new TProgind(fc->eod(),"Aggiornamento famiglie", FALSE, TRUE, 10);
|
|
|
|
|
pi->setstatus(1);
|
|
|
|
|
for(fc->first(); !fc->eof(); fc->next())
|
|
|
|
|
{
|
|
|
|
|
pi->addstatus(1);
|
|
|
|
|
modificato = FALSE;
|
|
|
|
|
const TString80 cognome = fc->get("COGNOME");
|
|
|
|
|
const TString80 nome = fc->get("NOME");
|
|
|
|
|
const TDate datanasc = fc->get_date("DATANASC");
|
|
|
|
|
recsog.zero();
|
|
|
|
|
recsog.put(SOG_COGNOME, cognome);
|
|
|
|
|
recsog.put(SOG_NOME, nome);
|
|
|
|
|
recsog.put(SOG_DATANASC, datanasc);
|
|
|
|
|
if (recsog.read(_rel->lfile())==NOERR)
|
|
|
|
|
{
|
|
|
|
|
TRectype& recfam = fc->curr();
|
|
|
|
|
recfam.put(FAM_CODFAM, recsog.get(SOG_CODICE));
|
|
|
|
|
actfam = recfam.get_long(FAM_FAMIGLIA);
|
|
|
|
|
if (actfam != prevfam)
|
|
|
|
|
{
|
|
|
|
|
ultfam++;
|
|
|
|
|
prevfam = actfam;
|
|
|
|
|
}
|
|
|
|
|
recfam.put(FAM_FAMIGLIA, ultfam);
|
|
|
|
|
recfam.put(FAM_PROGFAM, fc->get("PROGFAM"));
|
|
|
|
|
recfam.put(FAM_GRADOPAR, fc->get("GRADOPAR"));
|
|
|
|
|
_famiglie->write(recfam);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rigastampa = "";
|
|
|
|
|
rigastampa << cognome;
|
|
|
|
|
rigastampa << " " << nome;
|
|
|
|
|
rigastampa << " " << datanasc.string();
|
|
|
|
|
row.reset();
|
|
|
|
|
row.put(rigastampa);
|
|
|
|
|
printer().print(row);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delete pi;
|
|
|
|
|
delete fc;
|
|
|
|
|
}
|
2000-03-03 11:47:59 +00:00
|
|
|
|
pr.formfeed();
|
|
|
|
|
pr.close();
|
1999-02-02 14:31:21 +00:00
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int TAggConSan::write(TSheet_field& s)
|
|
|
|
|
{
|
|
|
|
|
return NOERR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int at8200(int argc, char* argv[])
|
|
|
|
|
{
|
|
|
|
|
TAggConSan a;
|
2000-10-10 09:26:57 +00:00
|
|
|
|
a.run(argc, argv, "Aggiorna archivi da altra sezione");
|
1999-02-02 14:31:21 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|