#include #include #include "calib01.h" #include "ca0.h" #include "ca0300a.h" // TConf_mask class TConf_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: void config_loader(TSheet_field& sf, const char* paragrafo); void config_setter(TSheet_field& sf, const char* paragrafo); TConf_mask(const TFilename& f); virtual ~TConf_mask(){}; }; bool TConf_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_LEVEL_1 : if (e == fe_modify || e == fe_init) { TToken_string cod, desc; cod = " "; desc = TR("Nessuno"); if (o.get() == "CDC") { cod.add("CMS"); desc.add(TR("Commessa")); } else { cod.add("CDC"); desc.add(TR("Centro di Costo")); } TList_field& lev2 = (TList_field&)field(F_LEVEL_2); const TString4 laccio = lev2.get(); lev2.replace_items(cod, desc); lev2.set(laccio); } break; case F_FATHER_FASI : if (e == fe_close && !o.empty()) { const TString& lev1 = get(F_LEVEL_1); const TString& lev2 = get(F_LEVEL_2); if (o.get() != lev1 && o.get() != lev2) return error_box(TR("Livello superiore di fase non valido")); } default: break; } return true; } TConf_mask::TConf_mask(const TFilename& f) : TAutomask (f) { } //-----CONFIG APPLICATION------------------------------------------------------------------------------------------// class TConf_Analitica : public TConfig_application { TMask* _cm; virtual const char* extra_modules() const { return "cm"; } //funziona anche con autorizzazione CM protected: virtual TMask* create_mask(const TFilename& f); virtual TMask* get_mask(); public: // @cmember Disabilita la verifica del modulo in chiave virtual bool check_autorization() const { return false; } virtual bool preprocess_config (TMask& mask, TConfig& config); virtual bool postprocess_config (TMask& mask, TConfig& config); virtual bool user_create( ); virtual bool user_destroy( ); void config_loader(TSheet_field& sf, TConfig& config, TString4 tipo); void config_setter(TSheet_field& sf, TConfig& config, TString4 tipo); TConf_Analitica() : TConfig_application(CONFIG_DITTA), _cm(NULL) { } virtual ~TConf_Analitica() { } }; TMask* TConf_Analitica::get_mask() { return _cm; } TMask* TConf_Analitica::create_mask(const TFilename& f) { if (_cm == NULL) _cm = new TConf_mask(f); return _cm; } void TConf_Analitica::config_loader(TSheet_field& sf, TConfig& config, TString4 tipo) { for (int i = 0;;i++) { TToken_string num_doc(config.get(tipo, NULL, i)); if (num_doc.blank()) break; TToken_string& row = sf.row(i); row.add(num_doc.get(0)); row.add(""); row.add(num_doc.get(1)); if (tipo == "ND") { row.add(num_doc.get(2)); row.add(num_doc.get(3)); } sf.check_row(i); } } void TConf_Analitica::config_setter(TSheet_field& sf, TConfig& config, TString4 tipo) { const int items = sf.items(); for (int i = items; ;i++) { TToken_string num_doc(config.get(tipo, NULL, i)); if (num_doc.blank()) break; config.remove(tipo, i); } FOR_EACH_SHEET_ROW (sf, j, row) { TToken_string num_doc; num_doc.add(row->get(0)); if (tipo == "ND") { num_doc.add(row->get(2)); num_doc.add(row->get(3)); num_doc.add(row->get(4)); } config.set(tipo, num_doc, NULL, true, j); //setta i valori nel config } } bool TConf_Analitica::preprocess_config (TMask& mask, TConfig& config) { config_loader(mask.sfield(F_RIGHE_NUM), config, "ND"); config_loader(mask.sfield(F_RIGHE_FDR), config, "NF"); config_loader(mask.sfield(F_RIGHE_RER), config, "RR"); return true; } bool TConf_Analitica::postprocess_config (TMask& mask, TConfig& config) { config_setter(mask.sfield(F_RIGHE_NUM), config, "ND"); config_setter(mask.sfield(F_RIGHE_FDR), config, "NF"); config_setter(mask.sfield(F_RIGHE_RER), config, "RR"); return true; } bool TConf_Analitica::user_create( ) { TConfig cfg(CONFIG_DITTA, "ca"); cfg.set("EdMask", "ca0300a"); return true; } bool TConf_Analitica::user_destroy( ) { if (_cm != NULL) delete _cm; return true; } int ca0300(int argc, char* argv[]) { TConf_Analitica app; app.run(argc, argv, TR("Parametri Contabilita' Analitica")); return 0; }