#include #include #include #include #include #include #include #include #include #include #include "at9.h" #include "at9200a.h" #include "soggetti.h" #include "donaz.h" #include "contsan.h" #include "idoneita.h" #include "benem.h" #include "storico.h" class TCom2prov: public TSkeleton_application { TMask* _msk; TRelation* _rel; TConfig* _configfile; protected: virtual bool create(void); virtual void main_loop(); virtual bool destroy(void) ; void transfer(); public: const TMask& msk() const { return *_msk; } TCom2prov() {} virtual ~TCom2prov() {} }; // restituisce un riferimento all' applicazione inline TCom2prov& app() { return (TCom2prov&) main_app();} // creazione dell'applicazione bool TCom2prov::create() { _msk = new TMask("at9200a"); _configfile = new TConfig("at9200a.ini"); return TSkeleton_application::create(); } // distruzione dell'applicazione bool TCom2prov::destroy() { delete _configfile; delete _msk; return TSkeleton_application::destroy(); } // carica la maschera void TCom2prov::main_loop() { _msk->set(F_PERCORSO,_configfile->get("PERCORSO", "ARCHIVIO")); _msk->set(F_DATA,_configfile->get("DATA", "ARCHIVIO")); KEY key = _msk->run(); if (key == K_ENTER) { transfer(); _configfile->set("PERCORSO", _msk->get(F_PERCORSO), "ARCHIVIO"); TDate oggi(TODAY); _configfile->set("DATA", oggi, "ARCHIVIO"); } } // trasferimento dati da file CT su programma avis void TCom2prov::transfer() { bool anagrafica = _msk->get_bool(F_ANAGRAFICA); const bool donazioni = _msk->get_bool(F_DONAZIONI); const bool controlli = _msk->get_bool(F_CONTROLLI); const bool benemerenze = _msk->get_bool(F_BENEMERENZE); const bool storico = _msk->get_bool(F_STORICO); TString80 percorso = _msk->get(F_PERCORSO); percorso.insert("%"); TString80 nomesog = percorso; nomesog << "SOGGETTI"; TString80 nomedon = percorso; nomedon << "DONAZ"; TString80 nomecon = percorso; nomecon << "CONTSAN"; TString80 nomeido = percorso; nomeido << "IDONEITA"; TString80 nomeben = percorso; nomeben << "BENEM"; TString80 nomesto = percorso; nomesto << "STORICO"; TIsamtempfile filecon(LF_CONTSAN, (const char*) nomecon); TIsamtempfile filesog(LF_SOGGETTI, (const char *) nomesog); TIsamtempfile filedon(LF_DONAZ, (const char* ) nomedon); TIsamtempfile fileido(LF_IDONEITA, (const char*) nomeido); TIsamtempfile fileben(LF_BENEM, (const char*) nomeben); TIsamtempfile filesto(LF_STORICO, (const char*) nomesto); _rel = new TRelation(LF_SOGGETTI); if (donazioni) { _rel->add(LF_DONAZ, "CODICE==CODICE"); } if (controlli) { _rel->add(LF_CONTSAN, "CODICE==CODICE"); _rel->add(LF_IDONEITA, "CODICE==CODICE"); } if (benemerenze) _rel->add(LF_BENEM, "CODICE==CODICE"); if (storico) _rel->add(LF_STORICO, "CODICE==CODICE"); anagrafica = (anagrafica || donazioni || controlli || benemerenze || storico); TRectype da(LF_SOGGETTI); da.zero(); const TString16 codsez = _msk->get(F_SEZINI); const TString16 codsot = _msk->get(F_SOTINI); if (codsez.not_empty()) da.put(SOG_CODSEZ, codsez); if (codsot.not_empty()) da.put(SOG_CODSOT, codsot); TString80 filtro = ""; const TDate data = _msk->get_date(F_DATA); if (data.ok()) filtro << "(ANSI(" << SOG_DATAULTAGG << ")>=\"" << data.string(ANSI) << "\")"; TCursor cursore(_rel, filtro, 3, &da, &da); long records = cursore.items(); TProgind pi(records,"Estrazione dati", TRUE, TRUE); pi.setstatus(1); for (cursore = 0; cursore.pos() < records; ++(cursore)) { const long codsog = cursore.curr().get_long(SOG_CODICE); pi.addstatus(1); if (pi.iscancelled()) break; if (anagrafica) filesog.write(cursore.curr()); if (donazioni) { bool continua = TRUE; while (continua) { const long codice = cursore.curr(LF_DONAZ).get_long(DON_CODICE); if (codice == codsog) filedon.write(cursore.curr(LF_DONAZ)); continua = cursore.next_match(LF_DONAZ, "CODICE"); } } if (controlli) { bool continua = TRUE; while (continua) { const long codice = cursore.curr(LF_CONTSAN).get_long(CON_CODICE); if (codice == codsog) filecon.write(cursore.curr(LF_CONTSAN)); continua = cursore.next_match(LF_CONTSAN, "CODICE"); } continua = TRUE; while (continua) { const long codice = cursore.curr(LF_IDONEITA).get_long(IDO_CODICE); if (codice == codsog) fileido.write(cursore.curr(LF_IDONEITA)); continua = cursore.next_match(LF_IDONEITA, "CODICE"); } } if (benemerenze) { bool continua = TRUE; while (continua) { const long codice = cursore.curr(LF_BENEM).get_long(BEN_CODICE); if (codice == codsog) fileben.write(cursore.curr(LF_BENEM)); continua = cursore.next_match(LF_BENEM, "CODICE"); } } if (storico) { bool continua = TRUE; while (continua) { const long codice = cursore.curr(LF_STORICO).get_long(STO_CODICE); if (codice == codsog) filesto.write(cursore.curr(LF_STORICO)); continua = cursore.next_match(LF_STORICO, "CODICE"); } } } } int at9200(int argc, char* argv[]) { TCom2prov a; a.run(argc, argv, "Estrazione archivi per aggiornamento"); return 0; }