From 1523d76a6c17678ad708ed98460e2eec77d16ae9 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Sun, 19 Jun 2022 23:37:35 +0200 Subject: [PATCH] Patch level : 12.0 1174 Files correlati : ba1.exe Commento: Migliorata protezione aggiornamento tracciati sulla base dei dati Team --- src/ba/ba1100.cpp | 67 +++++++++++++++++++++++++++++++++++++++++++---- src/ba/ba1100.h | 4 ++- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/src/ba/ba1100.cpp b/src/ba/ba1100.cpp index 2a5237aab..0549a44a9 100755 --- a/src/ba/ba1100.cpp +++ b/src/ba/ba1100.cpp @@ -299,7 +299,7 @@ bool TManutenzione_app::create() // initvar e arrmask modules = atol(argv(5)); prefix().set(""); load_des(); - dump_trc(dir, des_too, modules); + dump_trc(dir, des_too, modules, true); return false; } else @@ -326,6 +326,7 @@ bool TManutenzione_app::create() // initvar e arrmask } if (!::dongle().demo() && !set_firm()) return false; + convert_recdef(); } _firm = atol(prefix().name()); @@ -481,7 +482,7 @@ void TManutenzione_app::close_history() xvt_fsys_remove_file(History_file); } -void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const long modules) +void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const long modules, bool verbose) { TDir d; d.get(LF_DIR); @@ -496,11 +497,16 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon TString s(TR("Scarico dei tracciati standard in ")); s << dir; - TProgind p(items ? items : 1, s, false, true); - p.setstatus(1); + TProgind * p = nullptr; + if (verbose) + { + p = new TProgind(items ? items : 1, s, false, true); + p->setstatus(1); + } for (int i = 2; i <= items; i++) //Salta il primo (dir.gen) { - p.addstatus(1); + if (verbose) + p->addstatus(1); TTrec& rc = (TTrec&)_recs[i]; TDir& dr = (TDir&)_dirs[i]; const long file_mod = (long)abs((int)dr.flags()); @@ -525,6 +531,7 @@ void TManutenzione_app::dump_trc(const char * dir, const bool des_too, const lon ofstream out_dir(fn); out_dir << dr; } + safe_delete(p); } const char* TManutenzione_app::dumpfilename(const FileDes& dep) const @@ -1106,6 +1113,52 @@ void TManutenzione_app::recover() send_campo_xml(); // Spedisce situazione via ftp } +void TManutenzione_app::clean_recdef(const char * dir) +{ + TFilename mask = dir; + + mask.add("*"); + mask.ext("dir"); + remove_files(mask, false); + mask.ext("trr"); + remove_files(mask, false); +} + +void TManutenzione_app::convert_recdef(int firm) +{ + TString pref = prefix().name(); + const int curr_firm = prefix().get_codditta(); + bool all_firms = firm < 0; + const int from_firm = all_firms || firm == 0 ? 1 : firm; + TString_array ditte; + const int to_firm = all_firms ? prefix().firms(ditte) : firm; + TFilename dir = firm2dir(0); + + if (all_firms || firm == 0) + { + prefix().set("com"); + dir.add("recdesc"); + if (!dexist(dir)) + make_dir(dir); + clean_recdef(dir); + dump_trc(dir); + } + for (int i = from_firm; i <= to_firm; i++) + { + set_firm(i); + dir = firm2dir(i); + dir.add("recdesc"); + if (!dexist(dir)) + make_dir(dir); + clean_recdef(dir); + dump_trc(dir); + } + if (curr_firm > 0) + set_firm(curr_firm); + else + prefix().set(pref); +} + void TManutenzione_app::convert_dir() { if (prefix().get_codditta() <= _history_firm) @@ -1255,6 +1308,10 @@ void TManutenzione_app::convert_dir() d.set_flags(_level); d.put(LF_DIR, _nordir, _sysdirop); put_history(pref); + + const int firm = prefix().is_com() ? 0 : prefix().get_codditta(); + + convert_recdef(firm); } void TManutenzione_app::load_des() diff --git a/src/ba/ba1100.h b/src/ba/ba1100.h index 3406b4d32..ea360a951 100755 --- a/src/ba/ba1100.h +++ b/src/ba/ba1100.h @@ -134,6 +134,8 @@ protected: bool reset_converting(); bool try_to_recover(TSystemisamfile& f, int err); + void clean_recdef(const char * dir); + void convert_recdef(int firm = -1); void update(); void update_dir(); void recover(); @@ -145,7 +147,7 @@ protected: void open_history(); void put_history(const char* firm); void close_history(); - void dump_trc(const char * dir, const bool des_too, const long modules); + void dump_trc(const char * dir, const bool des_too = true, const long modules = -1, bool verbose = false); void repair_file(int i); void save_file(const char * file);