#include #include #include #include #include #include "at7.h" // nomi dei campi #include "soggetti.h" #define ALIAS_LCPD 100 #define ALIAS_LCPR 200 #define ALIAS_COMD 300 #define ALIAS_COMR 400 class TAggiornaCAP : public TPrintapp { TMask* _msk; TRelation* _rel; int _cur; protected: virtual bool user_create(); virtual bool user_destroy(); virtual bool set_print(int m); virtual void set_page(int file, int cnt); virtual bool preprocess_page(int file, int counter); public: TAggiornaCAP() {} }; HIDDEN inline TAggiornaCAP& app() { return (TAggiornaCAP&) main_app(); } bool TAggiornaCAP::preprocess_page(int file, int counter) { bool rew = FALSE; TString16 cap; TString16 loc; TString16 com; TString16 capcom; TRectype& recsog = current_cursor()->curr(); cap = recsog.get(SOG_DOM_CAP); com = recsog.get(SOG_DOM_CODCOM); loc = recsog.get(SOG_DOM_CODLOC); if (loc.empty()) capcom = current_cursor()->file(-ALIAS_COMD).get("CAPCOM"); else capcom = current_cursor()->file(-ALIAS_LCPD).get("S6"); if (cap.empty() && com.not_empty()) { recsog.put(SOG_DOM_CAP, capcom); rew = TRUE; } if (cap.not_empty() && com.not_empty() && (cap != capcom)) { recsog.put(SOG_DOM_CAP, capcom); rew = TRUE; } cap = recsog.get(SOG_RES_CAP); com = recsog.get(SOG_RES_CODCOM); loc = recsog.get(SOG_RES_CODLOC); if (loc.empty()) capcom = current_cursor()->file(-ALIAS_COMR).get("CAPCOM"); else capcom = current_cursor()->file(-ALIAS_LCPR).get("S6"); if (cap.empty() && com.not_empty()) { recsog.put(SOG_RES_CAP, capcom); rew = TRUE; } if (cap.not_empty() && com.not_empty() && (cap != capcom)) { recsog.put(SOG_RES_CAP, capcom); rew = TRUE; } if (rew) current_cursor()->file().rewrite(); return rew; } void TAggiornaCAP::set_page(int file, int cnt) { set_row(1,"@0g@pn", FLD(LF_SOGGETTI,SOG_CODICE,"########")); set_row(1,"@10g@S", FLD(LF_SOGGETTI,SOG_COGNOME)); set_row(1,"@36g@S", FLD(LF_SOGGETTI,SOG_NOME)); set_row(1,"@62g@S", FLD(LF_SOGGETTI,SOG_CODSEZ)); set_row(1,"@67g@S", FLD(LF_SOGGETTI,SOG_DOM_CAP)); set_row(1,"@74g@S", FLD(LF_SOGGETTI,SOG_RES_CAP)); } bool TAggiornaCAP::set_print(int) { KEY tasto; tasto = _msk->run(); if (tasto == K_ENTER) { reset_files(); add_file(LF_SOGGETTI); reset_print(); return TRUE; } else return FALSE; } bool TAggiornaCAP::user_create() { _msk = new TMask("at7100a"); _rel = new TRelation(LF_SOGGETTI); _rel->add("LCP", "CODTAB==DOM_CODLOC",1,0,ALIAS_LCPD); _rel->add(LF_COMUNI, "COM==DOM_CODCOM",1,0,ALIAS_COMD); _rel->add("LCP", "CODTAB==RES_CODLOC",1,0,ALIAS_LCPR); _rel->add(LF_COMUNI, "COM==RES_CODCOM",1,0,ALIAS_COMR); _cur = add_cursor(new TCursor(_rel, "", 1)); return TRUE; } bool TAggiornaCAP::user_destroy() { delete _rel; delete _msk; return TRUE; } int at7100(int argc, char* argv[]) { TAggiornaCAP a; a.run(argc, argv, "Aggiornamento CAP su indirizzi"); return 0; }