#include #include #include #include #include // ID Bottoni #include "fp0.h" #include "fp0100a.h" #include #include "recset.h" #include "progind.h" #include "../ve/velib.h" #include "fplib01.h" class TParametri_mask : public TAutomask { private: void load_all(); protected: void tipi_import(); static TMask& get_tmp_msk(const char* title); virtual bool on_key(KEY key); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TParametri_mask(const char* n); void save_all() const; }; TParametri_mask::TParametri_mask(const char * n) : TAutomask(n) { load_all(); } void TParametri_mask::save_all() const { ini_set_string(CONFIG_DITTA, "fp", "ip", get(F_INDIRIZZO)); ini_set_string(CONFIG_DITTA, "fp", "db", get(F_DATABASE)); ini_set_string(CONFIG_DITTA, "fp", "usr", get(F_USER)); ini_set_string(CONFIG_DITTA, "fp", "psw", encode(get(F_PASSWORD))); ini_set_string(CONFIG_DITTA, "fp", "flddest", get(F_FLDDEST)); ini_set_string(CONFIG_DITTA, "fp", "fldusrdest", get(F_FLDUSRDEST)); ini_set_string(CONFIG_DITTA, "fp", "cofitras", get(F_COFI)); ini_set_bool(CONFIG_DITTA, "fp", "gestioneallegati", get(F_ESPORTAALLEG)); ini_set_bool(CONFIG_DITTA, "fp", "allegafatt", get(F_ESPORTADOC)); } void TParametri_mask::load_all() { set(F_INDIRIZZO, ini_get_string(CONFIG_DITTA, "fp", "ip")); set(F_DATABASE, ini_get_string(CONFIG_DITTA, "fp", "db")); set(F_USER, ini_get_string(CONFIG_DITTA, "fp", "usr")); set(F_PASSWORD, decode(ini_get_string(CONFIG_DITTA, "fp", "psw"))); set(F_FLDDEST, ini_get_string(CONFIG_DITTA, "fp", "flddest")); set(F_FLDUSRDEST, ini_get_string(CONFIG_DITTA, "fp", "fldusrdest")); set(F_COFI, ini_get_string(CONFIG_DITTA, "fp", "cofitras")); set(F_ESPORTAALLEG, ini_get_bool(CONFIG_DITTA, "fp", "gestioneallegati")); set(F_ESPORTADOC, ini_get_bool(CONFIG_DITTA, "fp", "allegafatt")); } void TParametri_mask::tipi_import() { if(yesno_box("Attenzione! Questa procedura riporterà su tutti i documenti il tipo documento SDI della configurazione!\nEventuali modifiche già fatte verranno sovrascritte, continuare?")) { TISAM_recordset tipi("USE %TIP SELECT S12!=''"); TProgress_monitor p(tipi.items(), "Elaborazione tipi doc"); for(bool ok = tipi.move_first(); ok; ok = tipi.move_next()) { if (!p.add_status()) break; TISAM_recordset docs("USE DOC SELECT TIPODOC==#TIPODOC"); docs.set_var("#TIPODOC", tipi.get("CODTAB")); TString msg = "Elaborazione documenti "; msg << tipi.get("CODTAB"); TProgress_monitor d(docs.items(), msg); for (bool ok = docs.move_first(); ok; ok = docs.move_next()) { if (!d.add_status()) break; TDocumento doc(docs.cursor()->curr()); doc.put("TIPODOCSDI", tipi.get("S12").as_string()); if (doc.rewrite() != NOERR) fatal_box("ERRORE aggiornamento documenti"); } } } } TMask & TParametri_mask::get_tmp_msk(const char * title) { static TMask* m; // Cancello la maschera se esiste delete m; m = new TMask(title, 1, 30, 5); m->add_button_tool(DLG_OK, "~Conferma", TOOL_OK); m->add_button_tool(DLG_CANCEL, "Annulla", TOOL_CANCEL); return *m; } bool TParametri_mask::on_key(KEY key) { switch(key) { case K_SHIFT + K_F12: { TMask& m = get_tmp_msk("Password"); m.add_string(101, 0, "Password ", 1, 1, 15, "*"); m.field(101).check_type(CHECK_REQUIRED); while(m.run() == K_ENTER) { if (m.get(101) == "sirioFATT99") // Hardcoded password are the best! { for (int i = F_SETPATCH; i <= F_REBORNDB; i++) enable(i); break; } else error_box("Password errata"); } break; } default: break; } return true; } bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case DLG_ELABORA: if (e == fe_button) tipi_import(); break; case F_SETPATCH: { if (e == fe_button) { TMask & m = get_tmp_msk("Livello patch"); m.add_string(101, 0, "Versione ", 1, 1, 5, ""); m.field(101).check_type(CHECK_REQUIRED); if (m.run() == K_ENTER) { TLocalisamfile tabmod(LF_TABMOD); tabmod.put("MOD", "FP"); tabmod.put("COD", "SQL"); tabmod.put("CODTAB", "VERSION"); tabmod.put("S0", m.get(101)); if (tabmod.write_rewrite() == NOERR) message_box("Versione impostata!"); else error_box("Errore durante la scrittura del DB Campo"); } } break; } case F_ENPTYTABLE: if (e == fe_button) { if (yesno_box("Sei sicuro di voler svuotare tutte le tabelle del database? Questa procedura NON É REVERSIBILE")) { db().sq_set_exec("EXEC sp_MSforeachtable @command1 = 'TRUNCATE TABLE ? '"); db().sq_commit(); message_box("Procedura terminata"); } } break; case F_DROPTABLE: if (e == fe_button) { if (yesno_box("Sei sicuro di voler cancellare tutte le tabelle del database? Questa procedura NON É REVERSIBILE")) { db().sq_set_exec("EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?'"); db().sq_commit(); message_box("Procedura terminata"); } } break; case F_REBORNDB: if (e == fe_button) { if (yesno_box("Sei sicuro di voler ricreare tutte le tabelle del database? Questa procedura NON É REVERSIBILE")) { db().sq_set_exec("EXEC sp_MSforeachtable @command1 = 'DROP TABLE ?'"); TLocalisamfile tabmod(LF_TABMOD); tabmod.put("MOD", "FP"); tabmod.put("COD", "SQL"); tabmod.put("CODTAB", "VERSION"); tabmod.remove(); check_tables(); db().sq_commit(); message_box("Procedura terminata"); } } break; case F_ESPORTAALLEG: { const bool esporta = get_bool(F_ESPORTAALLEG); field(F_FLDDEST).check_type(esporta ? CHECK_REQUIRED : CHECK_NONE); field(F_FLDUSRDEST).check_type(esporta ? CHECK_REQUIRED : CHECK_NONE); field(F_ESPORTADOC).enable(esporta); if (e == fe_modify && !esporta) { set(F_FLDDEST, ""); set(F_FLDUSRDEST, ""); set(F_ESPORTADOC, ""); } } break; default: break; } return true; } class TParametri_ditta : public TSkeleton_application { public: virtual bool create(); virtual void main_loop(); }; bool TParametri_ditta::create() { open_files(LF_DOC, LF_RIGHEDOC, -1); return TSkeleton_application::create(); } void TParametri_ditta::main_loop() { TParametri_mask pm("fp0100a"); while (pm.run() == K_ENTER) { // Testo prima la connessione TString ip = pm.get(F_INDIRIZZO), db = pm.get(F_DATABASE), ad, usr = pm.get(F_USER), psw = pm.get(F_PASSWORD); ad << ip << "@" << db; SSimple_query s(ad, usr, psw, TSDB_MSSQL); if (s.sq_is_connect()) { pm.save_all(); message_box("Dati salvati correttamente!"); } else error_box("Connessione a database non riuscita!"); } } int fp0100(int argc, char* argv[]) { TParametri_ditta appc; appc.run(argc, argv, TR("Configurazione FP")); return 0; }