Files correlati : cg, ve, ba, fp Commento : Prima release del modulo fp BA: - Aggiunto campo "Modalità di Pagamento" alla tabella "Ulteriore classificazione" - Aggiunto campo "Tipo di pagamento SDI" al programma di gestione dei tipi pagamento CG: Modifiche programma clienti/fornitori: - Rinominato gruppo da "Numeri telefonici" a "Contatti" - Spostati e modificati campi delle email per aggiungere la PEC Modifiche cgpagame: - Aggiunto _cond_pag e gestione del campo VE: Modifiche ai tipidoc - Aggiunto tipo documenti SDI - Aggiunto il regime fiscale FP: - prima implementazione del modulo Interne: - In applicat rimosso blocco in caso di programma non abilitato per rangers - Aggiunto in modaut il nuovo programma fp - Resa cid2index static con metodo in xvtility - Perfezionata libreria tsdb + xvtdb grazie ai test fatti da me medesimo per l'fp
102 lines
2.5 KiB
C++
102 lines
2.5 KiB
C++
#include "fplib01.h"
|
|
#include <prefix.h>
|
|
#include <config.h>
|
|
#include <utility.h>
|
|
#include <scanner.h>
|
|
#include <xvt.h>
|
|
#include <diction.h>
|
|
#include "text.h"
|
|
#include <isam.h>
|
|
|
|
void set_connection(SSimple_query& s)
|
|
{
|
|
if (s.sq_connect(
|
|
TString() << ini_get_string(CONFIG_DITTA, "fp", "ip") << "@" << ini_get_string(CONFIG_DITTA, "fp", "db"),
|
|
ini_get_string(CONFIG_DITTA, "fp", "usr"),
|
|
decode(ini_get_string(CONFIG_DITTA, "fp", "psw")),
|
|
TSDB_MSSQL) != NOERR)
|
|
fatal_box("Impossibile connettersi al DB esterno");
|
|
|
|
}
|
|
|
|
SSimple_query& db()
|
|
{
|
|
static SSimple_query* db = nullptr;
|
|
|
|
if (db == nullptr)
|
|
{
|
|
db = new SSimple_query();
|
|
set_connection(*db);
|
|
// Non utilizzo l'autocommit, viene gestito manualmente
|
|
db->sq_set_autocommit(false);
|
|
}
|
|
return *db;
|
|
}
|
|
|
|
string getline(ifstream& f);
|
|
|
|
bool check_tables()
|
|
{
|
|
/*
|
|
* Da questo programma in poi verrà utilizzato un sistema diverso per la creazione e aggiornamento delle tabelle
|
|
* Verranno utilizzati dei file.sql aggiornati con il numero di patch, leggermente scomodo durante la creazione ma facile per i controlli successivamente
|
|
*/
|
|
SLIST files = xvt_fsys_list_files(".sql", "sql/fp0/", false);
|
|
TLocalisamfile tabmod(LF_TABMOD);
|
|
tabmod.put("MOD", "FP");
|
|
tabmod.put("COD", "SQL");
|
|
tabmod.put("CODTAB", "VERSION");
|
|
TString version;
|
|
if (tabmod.read() == NOERR)
|
|
version = tabmod.get("S0");
|
|
for(SLIST_ELT file = xvt_slist_get_first(files); file; file = xvt_slist_get_next(files, file))
|
|
{
|
|
TString file_version = TFilename(file->str).name_only();
|
|
file_version = file_version.mid(2, 4);
|
|
if (file_version <= version)
|
|
continue;
|
|
ifstream f(file->str);
|
|
if(f.is_open())
|
|
{
|
|
string s;
|
|
while(!f.eof())
|
|
{
|
|
s += getline(f);
|
|
// Cerco un ;
|
|
const int limiter = s.find(';') + 1;
|
|
if(limiter > 0)
|
|
{
|
|
string query = s.substr(0, limiter);
|
|
s.erase(0, limiter);
|
|
if(!db().sq_set_exec(query) || !db().sq_commit())
|
|
{
|
|
fatal_box("Impossibile eseguire/salvare la query:\n%s\n%s", query.c_str(), db().sq_get_string_error());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cantread_box(file->str);
|
|
return false;
|
|
}
|
|
// Salvo su tabmod
|
|
tabmod.zero();
|
|
tabmod.put("MOD", "FP");
|
|
tabmod.put("COD", "SQL");
|
|
tabmod.put("CODTAB", "VERSION");
|
|
tabmod.put("S0", file_version);
|
|
if(tabmod.rewrite_write() != NOERR && !yesno_box("Attenzione! Errore di aggiornamento versione di Database in Campo, continuare? %s", file_version))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
string getline(ifstream& f)
|
|
{
|
|
string app;
|
|
getline(f, app);
|
|
return app;
|
|
} |