// gestione files Contabilita' Analitica: CENTRI DI COSTO #include #include #include #include #include #include "tc1800a.h" //////////////////////////////////////////////////////////////////////// //MASCHERA //////////////////////////////////////////////////////////////////////// class TZC_ricl_msk : public TAutomask { virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TZC_ricl_msk() : TAutomask("tc1800a") {} }; bool TZC_ricl_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_CONTO: { TString16 key; key.format("%d|%d", o.mask().get_int(F_GRUPPO), o.mask().get_int(F_CONTO)); const TRectype & rec = cache().get(LF_PCON, key); const char tsottoc = rec.get_char(PCN_TMCF); if (tsottoc <= ' ') { enable(F_SOTTOCONTO); enable(F_DESC); } else { disable(F_SOTTOCONTO); disable(F_DESC); reset(F_SOTTOCONTO); } } break; default: break; } return true; } class TZCRiclass_application : public TRelation_application // @author:(INTERNAL) Vari // @access:(INTERNAL) Private Member { // @cmember:(INTERNAL) Maschera corrente dell'applicazione TMask* _msk; // @cmember:(INTERNAL) Relazione corrente dell'applicazione TRelation* _rel; // @cmember:(INTERNAL) valori iniziale dei gruppo conto sottoconto int _gruppo; int _conto; long _sottoconto; // @access Protected Member protected: virtual TMask* get_mask(int mode = MODE_QUERY) { CHECK(_msk, "Null mask"); return _msk; } // @cmember Indica se la futura ritornera' una maschera diversa // dalla corrente. virtual bool changing_mask(int mode) { return false; } // @cmember Ritorna la relazione da modificare virtual TRelation* get_relation() const { CHECK(_rel, "Null relation"); return _rel; } // @cmember Inizializza la maschera per il modo inserimento virtual void init_insert_mode(TMask& m); // @cmember Inizializza la maschera per il modo modifica virtual void init_modify_mode(TMask& m); // @cmember Inizializzazione dei dati dell'utente virtual bool user_create() ; // @cmember Distruzione dei dati dell'utente virtual bool user_destroy() ; // @cmember Chiama il programma di stampa virtual void print(); // @cmember Riscrive sulla relazione i valori dalla maschera

virtual int rewrite(const TMask& m); // @access Public Member public: // @cmember Costruttore TZCRiclass_application() : _msk(NULL), _rel(NULL) { } // @cmember Distruttore virtual ~TZCRiclass_application() {} }; void TZCRiclass_application::print() { TFilename rep("tcscricl.rep"); TString cmd; rep.custom_path(); cmd << "ba8 -4 "<< rep; TExternal_app stampa(cmd); stampa.run(); } void TZCRiclass_application::init_insert_mode(TMask& m) { TLocalisamfile ricl(LF_RICLPDC); ricl.put("TIPORIC", m.get(F_COD)); TString codice(m.get(F_TSSOTTOCONTO)); ricl.put("CODICE", codice); if (ricl.read(_isgteq) == NOERR && codice == ricl.get("CODICE")) m.set(F_DESCRIZ, ricl.get("DESCRIZ")); for (int i = m.fields() - 1; i >= 0; i--) { TMask_field& c = m.fld(i); if (c.in_group(1) && c.is_edit()) { TEdit_field& e = (TEdit_field&)c; e.enable(); if (e.browse() != NULL) e.enable_check(); } } } void TZCRiclass_application::init_modify_mode(TMask& m) { for (int i = m.fields() - 1; i >= 0; i--) { TMask_field& c = m.fld(i); if (c.in_group(1) && c.is_edit()) { TEdit_field& e = (TEdit_field&)c; e.enable(); if (e.browse() != NULL) e.enable_check(); } } _gruppo = m.get_int(F_GRUPPO); _conto = m.get_int(F_CONTO); _sottoconto = m.get_long(F_SOTTOCONTO); } int TZCRiclass_application::rewrite(const TMask& m) { int err = TRelation_application::rewrite(m); if (err != NOERR) err = TRelation_application::write(m); TRelation & rel = *get_relation(); int gruppo = rel.lfile().get_int("GRUPPO"); int conto = rel.lfile().get_int("CONTO"); long sottoconto = rel.lfile().get_long("SOTTOCONTO"); if (err == NOERR && (gruppo != _gruppo || conto != _conto || sottoconto != _sottoconto)) { rel.save_status(); rel.lfile().put("GRUPPO", _gruppo); rel.lfile().put("CONTO", _conto); rel.lfile().put("SOTTOCONTO", _sottoconto); rel.remove(); rel.restore_status(); } return err; } bool TZCRiclass_application::user_create() { _rel = new TRelation(LF_RICLPDC); _msk = new TZC_ricl_msk; set_search_field(F_TSSOTTOCONTO); //TConfig config(CONFIG_DITTA); //const bool use_pcn = config.get_bool("ZCUSECMPCN"); //_msk->show(-10, use_pcn); //_msk->show(-20, !use_pcn); TFilename rep("tczcricl.rep"); if (rep.custom_path()) enable_menu_item(M_FILE_PRINT); TString title; _msk->get_caption(title); set_title(title); return true; } bool TZCRiclass_application::user_destroy() { if (_msk) delete _msk; if (_rel) delete _rel; return true; } int tc1800(int argc, char **argv) { TZCRiclass_application a; a.run(argc, argv, TR("Riclassificazione piano dei conti Zucchetti")); return 0; }