From d471675612cd903364a3fcad93e43be2526bf281 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Mon, 16 Sep 2019 10:59:45 +0200 Subject: [PATCH 1/6] Patch level : 12.0 no-patch Files correlati : f9.exe Commento : Corretto nome programma --- src/f9/f90100.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/f9/f90100.cpp b/src/f9/f90100.cpp index 107eb9a43..df977469a 100644 --- a/src/f9/f90100.cpp +++ b/src/f9/f90100.cpp @@ -1393,7 +1393,7 @@ TF9_app& app() int f90100(int argc, char* argv[]) { TF9_app app; - app.run(argc, argv, TR("Configurazione FP")); + app.run(argc, argv, TR("Archiviazione Sostitutiva")); return 0; } From dee23524bc8a452f2da45d526d85ebdb190ebc03 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Mon, 16 Sep 2019 18:10:27 +0200 Subject: [PATCH 2/6] Patch level : 12.0 no-patch Files correlati : f9.exe, f90100.sql Commento : - Corretto check tables se esistono gia' dato che c'era gia' un aggiornamento delle tabelle dell'F9 da parte dell'FP --- src/f9/f90100.cpp | 84 ++++++++------- src/f9/f90100.h | 2 +- src/f9/sql/f90100.sql | 242 ++++++++++++++++++++++-------------------- 3 files changed, 173 insertions(+), 155 deletions(-) diff --git a/src/f9/f90100.cpp b/src/f9/f90100.cpp index df977469a..53c0d9a94 100644 --- a/src/f9/f90100.cpp +++ b/src/f9/f90100.cpp @@ -15,13 +15,14 @@ /* * - Per aggiornare le tabelle f9 aggiungere nella cartella "sql\f9\" il file sql cosi' fatto: * f9xxxx.sql dove xxxx e' il numero zero-filled della versione delle tabelle, che INCREMENTA DI DUE COME CON LE PATCH, IMPORTANTE! - * - Aggiornare la definizione qui sotto di F9_SQL_VERSION mettendo la nuova versione. + * - Aggiornare la definizione qui sotto di SQL_VERSION mettendo la nuova versione. * - Fare patch del file sql e dell'eseguibile f90.exe * - Lanciare il programma per eseguire l'aggiornamento. */ -#define TABMOD_SQL_VERSION "S0" -#define F9_SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle +#define TABMOD_TABVER "S0" // Campo per la memorizzazione della versione attuale delle tabelle +#define TAB_BASE_VERSION 100 // Versione base delle tabelle +#define SQL_VERSION 100 // Utilizzo questo per controllare la versione attuale delle tabelle e nel caso aggiornarle SSimple_query& db() { @@ -966,8 +967,8 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov) if(chiave_paf(doc, hfatt, bfatt)) { query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';"; - fp_db().sq_set_exec(query); - return fp_db().sq_items() > 0; + db().sq_set_exec(query); + return db().sq_items() > 0; } return false; } @@ -1245,7 +1246,8 @@ void pulisci_mov() void TF9_app::main_loop() { - check_table(); + if(!check_table()) + fatal_box("Controllo tabelle modulo fallito."); #ifdef DBG // Per sicurezza che non venga inserito in release //pulisci_mov(); #endif @@ -1270,9 +1272,9 @@ bool TF9_app::create_tables() const tabmod.put("CODTAB", "VERSION"); char ver[5] = "0000"; sprintf_s(ver, 5, "%04d", 100); - tabmod.put(TABMOD_SQL_VERSION, ver); - tabmod.write(); // todo: controllare - ok &= tabmod.rewrite() == NOERR; // todo: controllare + tabmod.put(TABMOD_TABVER, ver); + tabmod.write(); // todo: controllare + ok &= tabmod.rewrite() == NOERR; // todo: controllare return ok; } @@ -1297,15 +1299,16 @@ bool TF9_app::aggiorna_tab_f9(int version) const string sql; char ver[5] = "0000"; sprintf_s(ver, 5, "%04d", version); - file << "sql\\f90\\f9" << ver << ".sql"; + TString name; name << "f9" << ver << ".sql"; + file << "sql\\f90\\" << name; std::ifstream fin; fin.open(file); if(ok &= fin.is_open()) { - while (!fin.eof()) + while (!fin.eof() && ok) { - std::string appo_line; // todo: Controllare che si svuota ad ogni ciclo o aggiungere un erase + std::string appo_line; std::getline(fin, appo_line); if (appo_line[0] == '-' && appo_line[1] == '-') // Se è una riga di commento la salto continue; @@ -1315,12 +1318,17 @@ bool TF9_app::aggiorna_tab_f9(int version) const if(end != int(std::string::npos)) { TString query; query << sql.c_str(); - ok &= fp_db().sq_set_exec(query); - ok &= fp_db().sq_commit(); + ok &= db().sq_set_exec(query); + ok &= db().sq_commit(); sql.erase(); } } } + else + { + TString msg; msg << "Impossibile trovare il file di aggiornamento tabelle: " << file; + error_box(msg); + } return ok; } @@ -1331,51 +1339,47 @@ bool TF9_app::check_tab_version() const tabmod.put("MOD", "F9"); tabmod.put("COD", "SQL"); tabmod.put("CODTAB", "VERSION"); + const bool exists = tabmod.read() == NOERR; - if(ok &= tabmod.read() == NOERR) + int version = exists ? real(tabmod.get(TABMOD_TABVER)).integer() : TAB_BASE_VERSION - 2; + if(version < SQL_VERSION) // Controllo la versione { - int version = real(tabmod.get(TABMOD_SQL_VERSION)).integer(); - if(version < F9_SQL_VERSION) // Controllo la versione + for(; version < SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione { - for(; version <= F9_SQL_VERSION; version += 2) // Effettuo le modifiche per ogni avanzamento di versione + if (ok &= aggiorna_tab_f9(version + 2)) { - if (ok &= aggiorna_tab_f9(version + 2)) + char ver[5] = "0000"; + sprintf_s(ver, 5, "%04d", version + 2); + tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD + if (!exists) { - char ver[5] = "0000"; - sprintf_s(ver, 5, "%04d", version + 2); - tabmod.put(TABMOD_SQL_VERSION, ver); // Avanzo il contatore della versione in TABMOD - tabmod.rewrite(); + tabmod.zero(); + tabmod.put("MOD", "F9"); + tabmod.put("COD", "SQL"); + tabmod.put("CODTAB", "VERSION"); + tabmod.put(TABMOD_TABVER, ver); // Avanzo il contatore della versione in TABMOD + tabmod.write(); } - else - break; + tabmod.rewrite(); } + else + break; } } + return ok; } -bool TF9_app::check_table() +bool TF9_app::check_table() const { - if (!check_tabelle_f9()) - { - TString msg; - std::ofstream fout; - fout.open("f9checktaberr.txt"); - fout << fp_db().sq_get_text_error(false) << std::endl; - fout.close(); - msg << "Errore controllo database F9: creazione tabelle.\n" << fp_db().sq_get_text_error(false); - fatal_box(msg); - return false; - } - // Se il check tabelle va a buon fine controllo la versione delle tabelle if (!check_tab_version()) { TString msg; std::ofstream fout; fout.open("f9checktaberr.txt"); - fout << fp_db().sq_get_text_error(false) << std::endl; + fout << db().sq_get_text_error(false) << std::endl; fout.close(); - msg << "Errore controllo database F9: aggiornamento tabelle.\n" << fp_db().sq_get_text_error(false); + msg << "! Errore controllo database F9: creazione/aggiornamento tabelle.\n" << db().sq_get_text_error() << "\n" << db().sq_get_string_error(); fatal_box(msg); return false; } diff --git a/src/f9/f90100.h b/src/f9/f90100.h index ada4da4f9..29bbca0d1 100644 --- a/src/f9/f90100.h +++ b/src/f9/f90100.h @@ -142,7 +142,7 @@ public: bool check_tabelle_f9(); // Controllo esistenza delle tabelle e in caso le crea bool aggiorna_tab_f9(int version) const; // Aggiorna modifiche alle tabelle F9 come descritto in cima al file .cpp bool check_tab_version() const; // Controllo della versione e in caso aggiorna le tabelle - bool check_table(); + bool check_table() const; TF9_app() : _estr_msk(nullptr), _msk(nullptr), _mov_escl("", '|'), _tot_movs(0), _ambiente(""), _addr_doc(""), _last_estr_p(0), _last_estr_d(0), _tipodoc_escl('A'), _flagprov_escl('P') { } }; diff --git a/src/f9/sql/f90100.sql b/src/f9/sql/f90100.sql index 7ef34b697..39b055d90 100644 --- a/src/f9/sql/f90100.sql +++ b/src/f9/sql/f90100.sql @@ -1,123 +1,137 @@ -CREATE TABLE F9DRD00K ( - F9RCSOC CHAR(10) NOT NULL DEFAULT '' , - F9RIDES CHAR(18) NOT NULL DEFAULT '' , - F9RFPDE CHAR(1) NOT NULL DEFAULT '' , - F9RDDES CHAR(256) NOT NULL DEFAULT '' , - F9RFTDC CHAR(1) NOT NULL DEFAULT '' , - F9RUESD DATE NOT NULL DEFAULT getdate() , - F9RUESA DATE NOT NULL DEFAULT getdate() , - F9RUTEE CHAR(10) NOT NULL DEFAULT '' , - F9RUHES DATETIME NOT NULL DEFAULT getdate() , - F9RIDAS CHAR(2) NOT NULL DEFAULT '' , - F9RIDWA CHAR(2) NOT NULL DEFAULT '' , - F9RDSIW CHAR(256) NOT NULL DEFAULT '' , - F9RUHIM DATETIME NOT NULL DEFAULT getdate() , - F9RIISO CHAR(1) NOT NULL DEFAULT '' , - F9RUHIS DATETIME NOT NULL DEFAULT getdate() , - F9RSINW CHAR(2) NOT NULL DEFAULT '' , - F9RDSIN CHAR(256) NOT NULL DEFAULT '' , - F9RPCDC CHAR(256) NOT NULL DEFAULT '' , - PRIMARY KEY( F9RCSOC , F9RIDES , F9RFPDE ) ) ; +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRD00K') +CREATE TABLE F9DRD00K ( + F9RCSOC CHAR(10) NOT NULL DEFAULT '', + F9RIDES CHAR(18) NOT NULL DEFAULT '', + F9RFPDE CHAR(1) NOT NULL DEFAULT '', + F9RDDES CHAR(256) NOT NULL DEFAULT '', + F9RFTDC CHAR(1) NOT NULL DEFAULT '', + F9RUESD DATE NOT NULL DEFAULT getdate(), + F9RUESA DATE NOT NULL DEFAULT getdate(), + F9RUTEE CHAR(10) NOT NULL DEFAULT '', + F9RUHES DATETIME NOT NULL DEFAULT getdate(), + F9RIDAS CHAR(2) NOT NULL DEFAULT '', + F9RIDWA CHAR(2) NOT NULL DEFAULT '', + F9RDSIW CHAR(256) NOT NULL DEFAULT '', + F9RUHIM DATETIME NOT NULL DEFAULT getdate(), + F9RIISO CHAR(1) NOT NULL DEFAULT '', + F9RUHIS DATETIME NOT NULL DEFAULT getdate(), + F9RSINW CHAR(2) NOT NULL DEFAULT '', + F9RDSIN CHAR(256) NOT NULL DEFAULT '', + F9RPCDC CHAR(256) NOT NULL DEFAULT '', + PRIMARY KEY( F9RCSOC,F9RIDES,F9RFPDE )) +ELSE + SELECT 1 AS EXIST; -CREATE TABLE F9DRT00K ( - F9TCSOC CHAR(10) NOT NULL DEFAULT '' , - F9TCADO CHAR(10) NOT NULL DEFAULT '' , - F9TDDES CHAR(30) NOT NULL DEFAULT '' , - F9TCLDC CHAR(10) NOT NULL DEFAULT '' , - F9TCDD1 CHAR(2) NOT NULL DEFAULT '' , - F9TCSOS CHAR(6) NOT NULL DEFAULT '' , - F9TCCAU CHAR(6) NOT NULL DEFAULT '' , - F9TTCAU CHAR(6) NOT NULL DEFAULT '' , - F9TTMOV CHAR(6) NOT NULL DEFAULT '' , - F9TFCEE CHAR(6) NOT NULL DEFAULT '' , - PRIMARY KEY( F9TCSOC , F9TCADO , F9TCCAU , F9TTCAU , F9TTMOV , F9TFCEE ) ) ; - -CREATE TABLE F9IVA00K ( - F9ICSOC CHAR(10) NOT NULL DEFAULT '' , - F9IIDLA CHAR(18) NOT NULL DEFAULT '' , - F9IFPDE CHAR(1) NOT NULL DEFAULT '' , - F9IAFES CHAR(4) NOT NULL DEFAULT '' , - F9IGIVA CHAR(1) NOT NULL DEFAULT '' , - F9ITPGI CHAR(10) NOT NULL DEFAULT '' , - F9IDXML CHAR(1) NOT NULL DEFAULT '' , - F9ITCFO CHAR(1) NOT NULL DEFAULT '' , - F9ICCFO CHAR(10) NOT NULL DEFAULT '' , - F9IDRSO CHAR(60) NOT NULL DEFAULT '' , - F9IIDFI CHAR(30) NOT NULL DEFAULT '' , - F9IPIVA CHAR(28) NOT NULL DEFAULT '' , - F9ICFIS CHAR(16) NOT NULL DEFAULT '' , - F9ICADO CHAR(10) NOT NULL DEFAULT '' , - F9ICSOS CHAR(6) NOT NULL DEFAULT '' , - F9INDOC CHAR(20) NOT NULL DEFAULT '' , - F9IUDOC DATE NOT NULL DEFAULT getdate() , - F9ISIVA CHAR(10) NOT NULL DEFAULT '' , - F9ICREG CHAR(6) NOT NULL DEFAULT '' , - F9INPRI CHAR(20) NOT NULL DEFAULT '' , - F9IUPRI DATE NOT NULL DEFAULT getdate() , - F9IFOOA CHAR(10) NOT NULL DEFAULT '' , - F9ITROT CHAR(6) NOT NULL DEFAULT '' , - F9INRRO CHAR(20) NOT NULL DEFAULT '' , - F9IURGO DATE NOT NULL DEFAULT getdate() , - F9ICLDF CHAR(10) NOT NULL DEFAULT '' , - F9INMF1 CHAR(100) NOT NULL DEFAULT '' , - F9ICLDN CHAR(10) NOT NULL DEFAULT '' , - F9INMF2 CHAR(100) NOT NULL DEFAULT '' , - F9ICLDA CHAR(10) NOT NULL DEFAULT '' , - F9INMF3 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD4 CHAR(10) NOT NULL DEFAULT '' , - F9INMF4 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD5 CHAR(10) NOT NULL DEFAULT '' , - F9INMF5 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD6 CHAR(10) NOT NULL DEFAULT '' , - F9INMF6 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD7 CHAR(10) NOT NULL DEFAULT '' , - F9INMF7 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD8 CHAR(10) NOT NULL DEFAULT '' , - F9INMF8 CHAR(100) NOT NULL DEFAULT '' , - F9ICLD9 CHAR(10) NOT NULL DEFAULT '' , - F9INMF9 CHAR(100) NOT NULL DEFAULT '' , - F9ICL10 CHAR(10) NOT NULL DEFAULT '' , - F9INM10 CHAR(100) NOT NULL DEFAULT '' , - F9IUTEE CHAR(10) NOT NULL DEFAULT '' , - F9IUHEL DATETIME NOT NULL DEFAULT getdate() , - F9IUHEW DATETIME NOT NULL DEFAULT getdate() , - F9IDDES CHAR(30) NOT NULL DEFAULT '' , - F9ITPRT CHAR(2) NOT NULL DEFAULT '' , - F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0 , - F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0 , - F9IURIC DATETIME NOT NULL DEFAULT getdate() , - PRIMARY KEY( F9ICSOC , F9IIDLA , F9IFPDE , F9ISIVA , F9ICREG , F9INPRI , F9IUPRI , F9ITPGI ) ) ; - -CREATE TABLE F9PWA00K ( - F9PCSOC CHAR(10) NOT NULL DEFAULT '' , - F9PCDFN CHAR(2) NOT NULL DEFAULT '' , - F9PCDNT CHAR(2) NOT NULL DEFAULT '' , - F9PCDA1 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA2 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA3 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA4 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA5 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA6 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA7 CHAR(2) NOT NULL DEFAULT '' , - F9PCDA8 CHAR(2) NOT NULL DEFAULT '' , - F9PPCDC CHAR(256) NOT NULL DEFAULT '' , - PRIMARY KEY( F9PCSOC ) ) ; - +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9DRT00K') +CREATE TABLE F9DRT00K ( + F9TCSOC CHAR(10) NOT NULL DEFAULT '', + F9TCADO CHAR(10) NOT NULL DEFAULT '', + F9TDDES CHAR(30) NOT NULL DEFAULT '', + F9TCLDC CHAR(10) NOT NULL DEFAULT '', + F9TCDD1 CHAR(2) NOT NULL DEFAULT '', + F9TCSOS CHAR(6) NOT NULL DEFAULT '', + F9TCCAU CHAR(6) NOT NULL DEFAULT '', + F9TTCAU CHAR(6) NOT NULL DEFAULT '', + F9TTMOV CHAR(6) NOT NULL DEFAULT '', + F9TFCEE CHAR(6) NOT NULL DEFAULT '', + PRIMARY KEY( F9TCSOC,F9TCADO,F9TCCAU,F9TTCAU,F9TTMOV,F9TFCEE )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9IVA00K') +CREATE TABLE F9IVA00K ( + F9ICSOC CHAR(10) NOT NULL DEFAULT '', + F9IIDLA CHAR(18) NOT NULL DEFAULT '', + F9IFPDE CHAR(1) NOT NULL DEFAULT '', + F9IAFES CHAR(4) NOT NULL DEFAULT '', + F9IGIVA CHAR(1) NOT NULL DEFAULT '', + F9ITPGI CHAR(10) NOT NULL DEFAULT '', + F9IDXML CHAR(1) NOT NULL DEFAULT '', + F9ITCFO CHAR(1) NOT NULL DEFAULT '', + F9ICCFO CHAR(10) NOT NULL DEFAULT '', + F9IDRSO CHAR(60) NOT NULL DEFAULT '', + F9IIDFI CHAR(30) NOT NULL DEFAULT '', + F9IPIVA CHAR(28) NOT NULL DEFAULT '', + F9ICFIS CHAR(16) NOT NULL DEFAULT '', + F9ICADO CHAR(10) NOT NULL DEFAULT '', + F9ICSOS CHAR(6) NOT NULL DEFAULT '', + F9INDOC CHAR(20) NOT NULL DEFAULT '', + F9IUDOC DATE NOT NULL DEFAULT getdate(), + F9ISIVA CHAR(10) NOT NULL DEFAULT '', + F9ICREG CHAR(6) NOT NULL DEFAULT '', + F9INPRI CHAR(20) NOT NULL DEFAULT '', + F9IUPRI DATE NOT NULL DEFAULT getdate(), + F9IFOOA CHAR(10) NOT NULL DEFAULT '', + F9ITROT CHAR(6) NOT NULL DEFAULT '', + F9INRRO CHAR(20) NOT NULL DEFAULT '', + F9IURGO DATE NOT NULL DEFAULT getdate(), + F9ICLDF CHAR(10) NOT NULL DEFAULT '', + F9INMF1 CHAR(100) NOT NULL DEFAULT '', + F9ICLDN CHAR(10) NOT NULL DEFAULT '', + F9INMF2 CHAR(100) NOT NULL DEFAULT '', + F9ICLDA CHAR(10) NOT NULL DEFAULT '', + F9INMF3 CHAR(100) NOT NULL DEFAULT '', + F9ICLD4 CHAR(10) NOT NULL DEFAULT '', + F9INMF4 CHAR(100) NOT NULL DEFAULT '', + F9ICLD5 CHAR(10) NOT NULL DEFAULT '', + F9INMF5 CHAR(100) NOT NULL DEFAULT '', + F9ICLD6 CHAR(10) NOT NULL DEFAULT '', + F9INMF6 CHAR(100) NOT NULL DEFAULT '', + F9ICLD7 CHAR(10) NOT NULL DEFAULT '', + F9INMF7 CHAR(100) NOT NULL DEFAULT '', + F9ICLD8 CHAR(10) NOT NULL DEFAULT '', + F9INMF8 CHAR(100) NOT NULL DEFAULT '', + F9ICLD9 CHAR(10) NOT NULL DEFAULT '', + F9INMF9 CHAR(100) NOT NULL DEFAULT '', + F9ICL10 CHAR(10) NOT NULL DEFAULT '', + F9INM10 CHAR(100) NOT NULL DEFAULT '', + F9IUTEE CHAR(10) NOT NULL DEFAULT '', + F9IUHEL DATETIME NOT NULL DEFAULT getdate(), + F9IUHEW DATETIME NOT NULL DEFAULT getdate(), + F9IDDES CHAR(30) NOT NULL DEFAULT '', + F9ITPRT CHAR(2) NOT NULL DEFAULT '', + F9IAPRT NUMERIC(4, 0) NOT NULL DEFAULT 0, + F9INPRT NUMERIC(10, 0) NOT NULL DEFAULT 0, + F9IURIC DATETIME NOT NULL DEFAULT getdate(), + PRIMARY KEY( F9ICSOC,F9IIDLA,F9IFPDE,F9ISIVA,F9ICREG,F9INPRI,F9IUPRI,F9ITPGI )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9PWA00K') +CREATE TABLE F9PWA00K ( + F9PCSOC CHAR(10) NOT NULL DEFAULT '', + F9PCDFN CHAR(2) NOT NULL DEFAULT '', + F9PCDNT CHAR(2) NOT NULL DEFAULT '', + F9PCDA1 CHAR(2) NOT NULL DEFAULT '', + F9PCDA2 CHAR(2) NOT NULL DEFAULT '', + F9PCDA3 CHAR(2) NOT NULL DEFAULT '', + F9PCDA4 CHAR(2) NOT NULL DEFAULT '', + F9PCDA5 CHAR(2) NOT NULL DEFAULT '', + F9PCDA6 CHAR(2) NOT NULL DEFAULT '', + F9PCDA7 CHAR(2) NOT NULL DEFAULT '', + F9PCDA8 CHAR(2) NOT NULL DEFAULT '', + F9PPCDC CHAR(256) NOT NULL DEFAULT '', + PRIMARY KEY( F9PCSOC )) +ELSE + SELECT 1 AS EXIST; + +IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'F9ERROR') CREATE TABLE F9ERROR( - IDESTR CHAR(18) NOT NULL, - NUMREG NUMERIC(7,0) NOT NULL, - DATAREG DATE NOT NULL, - DATADOC DATE NOT NULL, - CODCAUS VARCHAR(3) NOT NULL, - MESELIQ NUMERIC(2,0), - NUMDOC VARCHAR(50) NOT NULL, + IDESTR CHAR(18) NOT NULL, + NUMREG NUMERIC(7,0) NOT NULL, + DATAREG DATE NOT NULL, + DATADOC DATE NOT NULL, + CODCAUS VARCHAR(3) NOT NULL, + MESELIQ NUMERIC(2,0), + NUMDOC VARCHAR(50) NOT NULL, IMPTOTDOC NUMERIC(18,3) NOT NULL, FORN NUMERIC(6,0) NOT NULL, RAGSOC VARCHAR(50), - PROTIVA VARCHAR(10) NOT NULL, + PROTIVA VARCHAR(10) NOT NULL, DESCR VARCHAR(50), ESCLUDI CHAR(1), ESCLUSO CHAR(2), DESCRERR VARCHAR(110), - PRIMARY KEY(IDESTR, NUMREG) -); \ No newline at end of file + PRIMARY KEY(IDESTR, NUMREG)) +ELSE + SELECT 1 AS EXIST; \ No newline at end of file From 12b561fc665f124f1e9b96c0729747d8c2a8bbb6 Mon Sep 17 00:00:00 2001 From: AlexBonazzi Date: Mon, 16 Sep 2019 19:48:54 +0200 Subject: [PATCH 3/6] Patch level : 12.0 87 Files correlati : cg1.exe cg1500a.uml Commento : Stampa bilancio con provvisori Liquidazione --- src/cg/cg1500a.uml | 48 ++++++++++++++++++++++++++++++---------------- src/cg/cg4301.cpp | 20 ++++++++++++------- src/cg/cg4302.cpp | 5 +++++ 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/cg/cg1500a.uml b/src/cg/cg1500a.uml index 705faaed8..d3d2e8b84 100755 --- a/src/cg/cg1500a.uml +++ b/src/cg/cg1500a.uml @@ -59,19 +59,23 @@ BEGIN PROMPT 2 5 "@bTipo bilancio" HELP "Indicare il tipo di bilancio da stampare" ITEM "1|Bilancio a sezioni contrapposte" - MESSAGE HIDE,F_STAMPA1|RESET,F_STAMPA1|HIDE,F_VERIFICA|RESET,F_VERIFICA - MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV|HIDE,F_DATADA|RESET,F_DATADA - MESSAGE HIDE,F_DATAA|RESET,F_DATAA|HIDE,F_SITUAZIONE|RESET,F_SITUAZIONE - MESSAGE HIDE,F_ORDINAMENTO|RESET,F_ORDINAMENTO|HIDE,F_STAMPAC|RESET,F_STAMPAC + //MESSAGE HIDE,F_STAMPA1|RESET,F_STAMPA1|HIDE,F_VERIFICA|RESET,F_VERIFICA + //MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV|HIDE,F_DATADA|RESET,F_DATADA + //MESSAGE HIDE,F_DATAA|RESET,F_DATAA|HIDE,F_SITUAZIONE|RESET,F_SITUAZIONE + //MESSAGE HIDE,F_ORDINAMENTO|RESET,F_ORDINAMENTO|HIDE,F_STAMPAC|RESET,F_STAMPAC + MESSAGE SHOW,1@ + MESSAGE HIDE,2@|RESET,2@ MESSAGE HIDE,96|HIDE,97|HIDE,98|HIDE,99 MESSAGE CLEAR,F_MODULO - MESSAGE SHOW,F_STAMPA|K_SPACE,F_STAMPA + //MESSAGE SHOW,F_STAMPA|K_SPACE,F_STAMPA ITEM "2|Bilancio di verifica" - MESSAGE HIDE,F_STAMPA|RESET,F_STAMPA - MESSAGE HIDE,F_DATALIM|RESET,F_DATALIM|HIDE,F_TOTALI|RESET,F_TOTALI - MESSAGE HIDE,F_CODICI|RESET,F_CODICI|HIDE,F_SALDO|RESET,F_SALDO - MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV - MESSAGE SHOW,F_VERIFICA|K_SPACE,F_VERIFICA|SHOW,F_STAMPA1|K_SPACE,F_STAMPA1 + //MESSAGE HIDE,F_STAMPA|RESET,F_STAMPA + //MESSAGE HIDE,F_DATALIM|RESET,F_DATALIM|HIDE,F_TOTALI|RESET,F_TOTALI + //MESSAGE HIDE,F_CODICI|RESET,F_CODICI|HIDE,F_SALDO|RESET,F_SALDO + //MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV + MESSAGE HIDE,1@|RESET,1@ + MESSAGE SHOW,2@ + //MESSAGE SHOW,F_VERIFICA|K_SPACE,F_VERIFICA|SHOW,F_STAMPA1|K_SPACE,F_STAMPA1 MESSAGE ENABLE,F_MODULO MESSAGE SHOW,96|SHOW,97|SHOW,98|SHOW,99 END @@ -80,6 +84,7 @@ RADIOBUTTON F_STAMPA 28 BEGIN PROMPT 41 5 "@bTipo stampa" HELP "Indicare il tipo di stampa" + GROUP 1 ITEM "1|Per date limite" MESSAGE SHOW,F_DATALIM|SHOW,F_TOTALI|SHOW,F_CODICI|SHOW,F_SALDO #ifdef CONT_SEP @@ -98,13 +103,14 @@ BEGIN PROMPT 40 5 "@bTipo stampa" //FLAGS "G" HELP "Indicare il tipo di stampa" + GROUP 2 ITEM "1|Per date limite" - MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO|SHOW,F_STAMPAMPROV + MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO #ifdef CONT_SEP MESSAGE SHOW,F_CONTSEP #endif ITEM "2|All'ultima immissione" - MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO|SHOW,F_STAMPAMPROV + MESSAGE SHOW,F_VERIFICA|SHOW,F_MODULO MESSAGE COPY,F_STAMPA #ifdef CONT_SEP MESSAGE HIDE,F_CONTSEP @@ -115,34 +121,38 @@ DATE F_DATALIM BEGIN PROMPT 2 9 "Data limite " HELP "Data fino alla quale si vuole la stampa" + GROUP 1 END BOOLEAN F_TOTALI BEGIN PROMPT 33 9 "Non stampare totali per gruppo " HELP "Indicare se non si devono stampare i totali dei gruppi" + GROUP 1 END BOOLEAN F_CODICI BEGIN PROMPT 2 10 "Non stampare codici conti " HELP "Indicare se non si devono stampare i codici dei conti" + GROUP 1 END BOOLEAN F_SALDO BEGIN PROMPT 33 10 "Non stampare movimenti con saldo a zero " HELP "Indicare se non si devono stampare i movimenti con saldo nullo" + GROUP 1 END TEXT 96 BEGIN - PROMPT 2 10 "Dalla data competenza " + PROMPT 2 9 "Dalla data competenza " END TEXT 97 BEGIN - PROMPT 38 10 "Alla data competenza " + PROMPT 38 9 "Alla data competenza " END TEXT 98 @@ -158,12 +168,14 @@ END DATE F_DATADA BEGIN PROMPT 24 10 "" - HELP "Data dalla quale iniziare la stampa" + HELP "Data dall quale iniziare la stampa" + GROUP 2 END DATE F_DATAA BEGIN PROMPT 60 10 "" + GROUP 2 END BOOLEAN F_NORMALI @@ -222,6 +234,7 @@ RADIOBUTTON F_VERIFICA 27 BEGIN PROMPT 2 1 "@bStampa bilancio di verifica " HELP "Tipo di bilancio di verifica" + GROUP 2 ITEM "1|Bilancio" MESSAGE SHOW,F_HIDE_CLIFO|SHOW,F_PRINT_FULL_CODE ITEM "2|Saldi di mastro" @@ -233,9 +246,9 @@ END RADIOBUTTON F_STAMPAC 36 BEGIN PROMPT 34 1 "@bTipo stampa" - ITEM "1|Conti movimentati" ITEM "2|Conti con saldo diverso da zero" + GROUP 2 END RADIOBUTTON F_STAMPAV 36 @@ -244,6 +257,7 @@ BEGIN ITEM "1|Conti movimentati" ITEM "2|Conti con saldo diverso da zero" ITEM "3|Tutti i conti" + GROUP 1 2 END BOOLEAN F_SEPARATOR @@ -275,6 +289,7 @@ BEGIN ITEM " |Entrambi" ITEM "C|Clienti" ITEM "F|Fornitori" + GROUP 2 END LIST F_ORDINAMENTO 11 @@ -282,6 +297,7 @@ BEGIN PROMPT 2 11 "Tipo ordinamento " ITEM "1|Per codice" ITEM "2|Alfabetico" + GROUP 2 END GROUPBOX DLG_NULL 55 6 diff --git a/src/cg/cg4301.cpp b/src/cg/cg4301.cpp index 110fb7427..36619c054 100755 --- a/src/cg/cg4301.cpp +++ b/src/cg/cg4301.cpp @@ -1556,7 +1556,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array & long nr = _mov->get_long(MOV_NUMREG); if (nr == 97882 || nr == 98707) - int i = 1; + int i = 1; #endif if ((soloiva && @@ -4102,8 +4102,6 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) credito_utilizzabile -= cred_util_F24; credito_autorizzato_F24 = lim.get_real("R20"); credito_utilizzabile += credito_autorizzato_F24; -// risultato += credito_autorizzato_F24; -// res_debt += credito_autorizzato_F24; if (credito_utilizzabile < ZERO) credito_utilizzabile = ZERO; @@ -4118,9 +4116,17 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) credito_utilizzato_iva = min(risul, credito_utilizzabile); res_cred += credito_utilizzato_iva; risultato -= credito_utilizzato_iva; - } + } } - } + if (credito_compensabile) + { + TRectype lim = get_lim(month + deltam); + + credito_autorizzato_F24 = lim.get_real("R20"); + risultato += credito_autorizzato_F24; + res_debt += credito_autorizzato_F24; + } + } else { if (credito_compensabile) @@ -4139,8 +4145,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts) credito_utilizzabile += credito_autorizzato(13); if (credito_utilizzabile < ZERO) credito_utilizzabile = ZERO; - } - } + } + } else { // per l'annuale considera solo il credito a inizio anno diff --git a/src/cg/cg4302.cpp b/src/cg/cg4302.cpp index 782e6fc28..2623fd135 100755 --- a/src/cg/cg4302.cpp +++ b/src/cg/cg4302.cpp @@ -138,7 +138,12 @@ bool TLiquidazione_app::is_date_ok(const TDate& d, int month, int liqmonth, int else // Nuova selezione dal 1998 in poi { if (month <= 12) + { + if (_is_liq_acconto) + return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)) && (d.day() <= _ver->giorno_acc()); + else return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)); + } else // Annuale, month == 13 return (regyear == year && liqmonth != 12) || (regyear == year + 1 && liqmonth == 12); } From 216d2b6d849bf690dd826b70320511d6a5c2557c Mon Sep 17 00:00:00 2001 From: AlexBonazzi Date: Mon, 16 Sep 2019 19:50:29 +0200 Subject: [PATCH 4/6] Patch level : 12.0 874 Files correlati : cg4.exe cg1500a.uml Commento : Stampa bilancio con provvisori Liquidazione --- src/cg/cg4304.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cg/cg4304.cpp b/src/cg/cg4304.cpp index f621c86c2..2e425b05d 100755 --- a/src/cg/cg4304.cpp +++ b/src/cg/cg4304.cpp @@ -2426,7 +2426,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw) if (_month < 13 && credito_compensabile && credito_autorizzato_F24 > ZERO) { cred_prec -= credito_autorizzato_F24; - cre_deb_per += credito_autorizzato_F24; +// cre_deb_per += credito_autorizzato_F24; set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@75g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione); } cred_prec -= rimborso; @@ -2547,7 +2547,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw) if (credito_autorizzato_F24 > ZERO) { credito_utilizzabile += credito_autorizzato_F24; - set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@75g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione); + set_row(rw++,FR("%s@11gCredito IVA autorizzato in F24%s@58g%r@100gil %s"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_autorizzato_F24, (const char *) data_autorizzazione); } set_row(rw++, FR("@11gCredito IVA compensabile detratto@75g%r"), &credito_utilizzato_IVA); credito_utilizzabile -= credito_utilizzato_IVA; From 75b60405f13a4dd1382e683c8c34205b1fad216d Mon Sep 17 00:00:00 2001 From: AlexBonazzi Date: Mon, 16 Sep 2019 20:01:00 +0200 Subject: [PATCH 5/6] Patch level : 12.0 874 Files correlati : cg4.exe cg1500a.uml Commento : Stampa bilancio con provvisori Liquidazione --- src/cg/cg4302.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/cg/cg4302.cpp b/src/cg/cg4302.cpp index 2623fd135..782e6fc28 100755 --- a/src/cg/cg4302.cpp +++ b/src/cg/cg4302.cpp @@ -138,12 +138,7 @@ bool TLiquidazione_app::is_date_ok(const TDate& d, int month, int liqmonth, int else // Nuova selezione dal 1998 in poi { if (month <= 12) - { - if (_is_liq_acconto) - return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)) && (d.day() <= _ver->giorno_acc()); - else return (regyear == year) && ((regmonth == month && liqmonth == 0) || (liqmonth == month)); - } else // Annuale, month == 13 return (regyear == year && liqmonth != 12) || (regyear == year + 1 && liqmonth == 12); } From 257f685a701e025bb05cb012ed7b2c4b8d1b63a8 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Tue, 17 Sep 2019 11:45:00 +0200 Subject: [PATCH 6/6] Patch level : 12.0 874 Files correlati : f9.exe, f90100.sql Commento : - Pulizia codice - Eliminazione record movimento nella lista di controllo errori (eliminazione da db) - Cambiato sistema di fetch numero ultima estrazione del giorno - Cambiato ordinamento visualizzazione pacchetti in ordine decr. di data - Sistemata query controllo sovrapposizione periodi per definitivo - Aggiunti messaggi di errore in caso di fallimento creazione/aggiornam. tabelle --- src/f9/f90100.cpp | 70 ++++++++++++++++++++++++++--------------------- src/f9/f90100.h | 13 ++++----- 2 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/f9/f90100.cpp b/src/f9/f90100.cpp index 53c0d9a94..abf54da0c 100644 --- a/src/f9/f90100.cpp +++ b/src/f9/f90100.cpp @@ -101,11 +101,11 @@ bool TEstrai_mask::estrai_handler(TMask_field& f, unsigned short key) message_box("Estrazione avvenuta con successo!"); app().segna_estratti(); } - else if (!stato) - { - app().segna_in_errore(); - warning_box("L'estrazione non e' stata completata. Controllare il log degli errori."); - } + if (!stato) + { + app().segna_in_errore(); + warning_box("L'estrazione non e' stata completata. Controllare il log degli errori."); + } return true; } @@ -226,13 +226,13 @@ void TMonitor_mask::open_win_conf() const m->run(); } -void TMonitor_mask::fill() +void TMonitor_mask::fill() const { app()._ambiente = ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9); app()._addr_doc = ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9); TString query; - query << "SELECT * FROM F9DRD00K ORDER BY " << DRD_TIME << ";"; + query << "SELECT * FROM F9DRD00K ORDER BY " << DRD_TIME << " DESC;"; db().sq_set_exec(query, false); TSheet_field& sf = sfield(S_ELAB); @@ -260,19 +260,12 @@ void TMonitor_mask::fill() row.add(db().sq_get(DRD_UTENTE)); row.add(TF9_app::traduci_stato(db().sq_get(DRD_STATO))); row.add(db().sq_get(DRD_DESC)); - if (TDate(row.get(cid2index(F_DATAESTR))) == today) - { - if (TString(row.get(cid2index(F_PROV_B))) == "X") - app()._last_estr_p = real(TString(row.get(cid2index(F_IDESTR))).ltrim(10)).integer(); - else - app()._last_estr_d = real(TString(row.get(cid2index(F_IDESTR))).ltrim(10)).integer(); - } } sf.force_update(); sf.show(); } -void TMonitor_mask::delete_pack(bool all) +void TMonitor_mask::delete_pack(const bool all) const { bool flag = false; TSheet_field& sf = sfield(S_ELAB); @@ -418,6 +411,13 @@ void TF9_dberr::send() _insert.cut(0) << "INSERT INTO " F9_ERR " VALUES ()"; } +void TF9_dberr::del_err(const TString& id_estr, int numreg) +{ + TString query; + query << "DELETE FROM " F9_ERR " WHERE IDESTR = '" << id_estr << "' AND NUMREG = '" << numreg << "';"; + db().sq_set_exec(query); +} + char TF9_dberr::get_errori(const TString& id_estr, vector& movs) { TString query; @@ -698,7 +698,7 @@ void TF9_app::edit_wa() const "INSERT INTO F9WA00K (F9PCSOC, F9PPCDC0) VALUES (" << _ambiente << ", " << _addr_doc << ");"; } -void TF9_app::export_error_list(bool esclusi) // todo: da ritestare +void TF9_app::export_error_list(bool esclusi) { TF9_dberr dberr; vector& movs = esclusi ? _esclusi : _movs; @@ -747,7 +747,6 @@ void TF9_app::load() // Prendo tutti i movimenti a partire da una data e li carico tutti fino alla data finale _movs.clear(); - for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR) { if (!progr.add_status()) @@ -976,10 +975,16 @@ bool TF9_app::is_doc_xml(const TLocalisamfile& mov) TString TF9_app::next_estr_today(const char tipo) const { char estr[] = {0,0,0,0,0,0,0,0,0}; - if(tipo == 'P') - sprintf_s(estr, 9, "%08d", _last_estr_p + 1); - else - sprintf_s(estr, 9, "%08d", _last_estr_d + 1); + TString query; + query << "SELECT TOP 1 " DRD_ID_EST " AS IDESTR\n" + "FROM " F9_DRD "\n" + "WHERE " DRD_ID_EST " LIKE '" << today.date2ansi() << tipo << "%'\n" << + "ORDER BY " DRD_ID_EST " DESC"; + if(!db().sq_set_exec(query)) + fatal_box(db().sq_get_text_error()); + + const int last_estr = real(db().sq_get("IDESTR").ltrim(10)).integer(); + sprintf_s(estr, 9, "%08d", last_estr + 1); return estr; } @@ -989,9 +994,10 @@ bool TF9_app::check_periodo_def(const drd& head) // Controllo se ci sono estrazioni (definitive) che si sovrappongono di periodo (con lo stesso tipo) e che non siano in stato di errore // Nel caso di stato di errore e' invece possibile la ri-estrazione query << "SELECT *\nFROM F9DRD00K\n" << - "WHERE '" << head.dal.date2ansi() << "' =< " DRD_DATAA " AND '" << head.al.date2ansi() << "' >= " DRD_DATADA " AND " - DRD_FLAG_PD " = 'D' AND\n F9RIDAS <> '" D_GEST_ERR "' AND F9RIDAS <> '" D_WA_ERR "' AND F9RIDAS <> '" D_ERR_SOS "' AND " DRD_TIPODOC " = '" << head.tipo_doc << "';"; - db().sq_set_exec(query); + "WHERE " << DRD_DATAA << " >= '" << head.dal.date2ansi() << "' AND " DRD_DATADA " <= '" << head.al.date2ansi() << "' AND " + DRD_FLAG_PD " = 'D' AND\n " DRD_STATO " <> '" D_GEST_ERR "' AND " DRD_STATO " <> '" D_WA_ERR "' AND " DRD_STATO " <> '" D_ERR_SOS "' AND " DRD_TIPODOC " = '" << head.tipo_doc << "';"; + if (!db().sq_set_exec(query)) + fatal_box(db().sq_get_text_error()); return db().sq_items() == 0; } @@ -1074,7 +1080,7 @@ int TF9_app::estrai() else if (_head.stato_estr == D_GEST_OK) { _msk->disable_controllo_err(); - return estrazione_iva() ? 1 : false; + return estrazione_iva() ? 1 : 0; } } return -2; @@ -1229,7 +1235,7 @@ void TF9_app::segna_in_errore() const db().sq_set_exec(query); } - +#ifdef DBG void pulisci_mov() { TLocalisamfile mov(LF_MOV); @@ -1240,9 +1246,10 @@ void pulisci_mov() { mov.put(MOV_ELABF9, ""); mov.write(); - bool ok = mov.rewrite() == NOERR; + mov.rewrite(); }while (mov.next() == NOERR); } +#endif void TF9_app::main_loop() { @@ -1273,12 +1280,12 @@ bool TF9_app::create_tables() const char ver[5] = "0000"; sprintf_s(ver, 5, "%04d", 100); tabmod.put(TABMOD_TABVER, ver); - tabmod.write(); // todo: controllare - ok &= tabmod.rewrite() == NOERR; // todo: controllare + tabmod.write(); + ok &= tabmod.rewrite() == NOERR; return ok; } -bool TF9_app::check_tabelle_f9() +bool TF9_app::check_tabelle_f9() const { bool ok = true; TString query; @@ -1553,7 +1560,7 @@ TToken_string* TControllo_mask::selected_fat() const return nullptr; } -void TControllo_mask::associa() +void TControllo_mask::associa() // todo: levare gli ultimi residui del vecchio funzionamento del controllo errori { TToken_string* mov_sel = selected_mov(); TToken_string* fat_sel = selected_fat(); @@ -1579,6 +1586,7 @@ void TControllo_mask::associa() ++it; } it->add(" ", 0); + TF9_dberr::del_err(_id_estr, mov_sel->get_int(cid2index(F_CNUMREG))); } } diff --git a/src/f9/f90100.h b/src/f9/f90100.h index 29bbca0d1..ce940bc2c 100644 --- a/src/f9/f90100.h +++ b/src/f9/f90100.h @@ -70,8 +70,6 @@ class TF9_app : public TSkeleton_application int _tot_movs; TString _ambiente; // Codice ambiente (codsoc) TString _addr_doc; // Indirizzo documenti cartacei - int _last_estr_p; - int _last_estr_d; char _tipodoc_escl; char _flagprov_escl; @@ -139,12 +137,12 @@ public: // Controllo e aggiornamento tabelle F9 bool create_tables() const; // Creazione tabelle F9 - bool check_tabelle_f9(); // Controllo esistenza delle tabelle e in caso le crea + bool check_tabelle_f9() const; // Controllo esistenza delle tabelle e in caso le crea bool aggiorna_tab_f9(int version) const; // Aggiorna modifiche alle tabelle F9 come descritto in cima al file .cpp bool check_tab_version() const; // Controllo della versione e in caso aggiorna le tabelle bool check_table() const; TF9_app() : _estr_msk(nullptr), _msk(nullptr), _mov_escl("", '|'), _tot_movs(0), _ambiente(""), _addr_doc(""), - _last_estr_p(0), _last_estr_d(0), _tipodoc_escl('A'), _flagprov_escl('P') { } + _tipodoc_escl('A'), _flagprov_escl('P') { } }; TF9_app& app(); @@ -162,9 +160,9 @@ class TMonitor_mask : public TAutomask static void open_win_estr(); void open_win_conf() const; - void fill(); + void fill() const; - void delete_pack(bool all = false); + void delete_pack(bool all = false) const; void sel() const; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; @@ -185,7 +183,7 @@ class TControllo_mask : public TAutomask bool _sel_esclusi; bool _is_escluso; TString _id_estr; - char _tipo_doc_err; + char _tipo_doc_err{}; vector& import_error_list(); void fill(); @@ -220,6 +218,7 @@ public: void add(long num); void add() { add_str("NULL"); } void send(); + static void del_err(const TString& id_estr, int get_int); static char get_errori(const TString& id_estr, vector& movs); TF9_dberr(); };