diff --git a/cd/test/ba0906.txt b/cd/test/ba0906.txt new file mode 100644 index 000000000..d4fdb4707 --- /dev/null +++ b/cd/test/ba0906.txt @@ -0,0 +1,4 @@ +bacnv.exe +bamenu.men + +Conversione righe CONAI diff --git a/cd/test/ba0906a.ini b/cd/test/ba0906a.ini new file mode 100644 index 000000000..eb0e35835 --- /dev/null +++ b/cd/test/ba0906a.ini @@ -0,0 +1,35 @@ +[Main] +Demo=0 + +[ba1] +Edit_4 = ba3 -0 +Edit_5 = ba3 -0 +Edit_6 = ba4 -1 +File(142) = bacnv.exe|X +File(166) = bamenu.men|X +Patch = 0906 +Versione = 21511200 + +[ba99] +Kill(0) = wxmsw240.dll|x +Kill(1) = batbsce.txt|x +Kill(2) = bastfsc.rep|x +Kill(3) = bastfsc.msk|x +Kill(4) = bastcms.msk|x +Kill(5) = bastcms.rep|x +Kill(6) = bastuue.rep|x +Kill(7) = bastuue.msk|x + +[ba] +Data = 06-12-2019 +Descrizione = Base +Dischi = 1 +Moduli = sy +OEM = +Patch = 906 +PostProcess = bainst -0 BA +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ba0906a1.zip b/cd/test/ba0906a1.zip new file mode 100644 index 000000000..f261b2140 Binary files /dev/null and b/cd/test/ba0906a1.zip differ diff --git a/cd/test/ba0908.txt b/cd/test/ba0908.txt new file mode 100644 index 000000000..74ab86608 --- /dev/null +++ b/cd/test/ba0908.txt @@ -0,0 +1,3 @@ +ba1.exe + +firma diff --git a/cd/test/ba0908a.ini b/cd/test/ba0908a.ini new file mode 100644 index 000000000..b244607ff --- /dev/null +++ b/cd/test/ba0908a.ini @@ -0,0 +1,34 @@ +[Main] +Demo=0 + +[ba1] +Edit_4 = ba3 -0 +Edit_5 = ba3 -0 +Edit_6 = ba4 -1 +File(18) = ba1.exe|X +Patch = 0908 +Versione = 21511200 + +[ba99] +Kill(0) = batbsce.txt|x +Kill(1) = wxmsw240.dll|x +Kill(2) = bastcms.rep|x +Kill(3) = bastcms.msk|x +Kill(4) = bastfsc.msk|x +Kill(5) = bastfsc.rep|x +Kill(6) = bastuue.msk|x +Kill(7) = bastuue.rep|x + +[ba] +Data = 09-12-2019 +Descrizione = Base +Dischi = 1 +Moduli = sy +OEM = +Patch = 908 +PostProcess = bainst -0 BA +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ba0908a1.zip b/cd/test/ba0908a1.zip new file mode 100644 index 000000000..093ab8c65 Binary files /dev/null and b/cd/test/ba0908a1.zip differ diff --git a/cd/test/ce0904.txt b/cd/test/ce0904.txt new file mode 100644 index 000000000..da104e6db --- /dev/null +++ b/cd/test/ce0904.txt @@ -0,0 +1,4 @@ +ce3900b.rep +ce3900a.rep + +Corretta stampa colonna quote ammortamento diff --git a/cd/test/ce0904a.ini b/cd/test/ce0904a.ini new file mode 100644 index 000000000..75901790a --- /dev/null +++ b/cd/test/ce0904a.ini @@ -0,0 +1,24 @@ +[Main] +Demo=0 + +[ce1] +Edit_4 = ce0 -0 +Edit_5 = ce0 -0 +File(48) = ce3900a.rep|X +File(99) = ce3900b.rep|X +Patch = 0904 +Versione = 21511200 + +[ce] +Data = 05-12-2019 +Descrizione = Cespiti +Dischi = 1 +Moduli = ba,cg +OEM = +Patch = 904 +PostProcess = bainst -0 CE +PreProcess = +Prezzo(1) = +Prezzo(2) = +Versione = 21511200 + diff --git a/cd/test/ce0904a1.zip b/cd/test/ce0904a1.zip new file mode 100644 index 000000000..32dc1c795 Binary files /dev/null and b/cd/test/ce0904a1.zip differ diff --git a/src/ba/bacnv.cpp b/src/ba/bacnv.cpp index 3d4ac73c4..e06f692df 100755 --- a/src/ba/bacnv.cpp +++ b/src/ba/bacnv.cpp @@ -200,9 +200,7 @@ public: void convert_pcon_ivd(); void convert_profile(const char * profile_name); //roba per conai - void convert_conai_anamag(); - void convert_conai_rdoc(); - void convert_conai_righe(); + void convert_CONAI_righe(); //roba per il file della rilevazione ore void convert_rilore(); void convert_CONAI(); @@ -373,7 +371,7 @@ bool TConversione_archivi::menu(MENU_TAG) convert_profile(argv(2)); break; case 24: - convert_conai_righe(); + convert_CONAI_righe(); break; case 25: convert_rilore(); @@ -2135,7 +2133,6 @@ bool TConversione_archivi::to_be_converted(TFilename& name) const return false; } - void TConversione_archivi::convert_profile(const char* profile_name) { TArray_sheet elenco(-1, -1, -4, -6, @@ -2209,133 +2206,57 @@ void TConversione_archivi::convert_profile(const char* profile_name) ////////////////////////////////////////////////////////////////////////////// -// Converte le righe documento e anamag in modo da riassegnare i campi CONAI +// Converte le righe documento in modo da riassegnare i campi CONAI ////////////////////////////////////////////////////////////////////////////// -void TConversione_archivi::convert_conai_anamag() + +void TConversione_archivi::convert_CONAI_righe() { - TConfig ditta(CONFIG_DITTA, "ve"); - TString_array conai_default_vals; - const char* conai_default_names[CONAI_CLASSES] = {"CONAI_DEFAULT_ACC", "CONAI_DEFAULT_ALL", "CONAI_DEFAULT_CAR", - "CONAI_DEFAULT_LEG", "CONAI_DEFAULT_PLA", "CONAI_DEFAULT_VET"}; - const char* conai_default_values[CONAI_CLASSES] = {"AC99", "AL99", "CA40", "LE99", "PL12", "VE99"}; + const char* const old_conai_cod[CONAI_CLASSES] = { "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" }; + const char* const old_conai_peso[CONAI_CLASSES] = { "CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET" }; + TFast_isamfile f(LF_RIGHEDOC); + TCursor c(new TRelation(LF_DOC)); + + c.relation()->lfile().set_curr(new TDocumento); - FOR_EACH_CONAI_CLASS(cc) - { - const TString& conai_cat = ditta.get(conai_default_names[cc], NULL, -1, conai_default_values[cc]); - conai_default_vals.add(conai_cat); - } + const long items = c.items(); + TProgind pi(items, TR("Conversione righe documento..."), false); - //prende solo le righe che hanno un peso conai di carta e/o plastica - TISAM_recordset anamag("USE ANAMAG\nSELECT (CONCAR>0)||(CONPLA>0)\n"); - const long anamag_items = anamag.items(); - - TProgind pi(anamag_items, "Gestione anagrafica articoli...", false); - for (bool ok = anamag.move_first(); ok; ok = anamag.move_next()) - { - if (!pi.addstatus(1)) - break; - - //prende i pesi conai su ciascuna riga - FOR_EACH_CONAI_CLASS(cc) - { - const char* peso_name = conai_peso_name(cc); - const real peso = anamag.get(peso_name).as_real(); - //se peso conai > 0, deve scrivere il codice conai nel campo CONAISC - if (peso > ZERO) - { - const char* sottocat = conai_sottocat_name(cc); - TFieldref fr(sottocat, LF_ANAMAG); - fr.write(conai_default_vals.row(cc), anamag.cursor()->curr()); - } - } - anamag.cursor()->relation()->rewrite(); - } -} - - -void TConversione_archivi::convert_conai_rdoc() -{ - TFast_isamfile f(LF_RIGHEDOC); - - //deve considerare tutte le righe documento che abbiano almeno uno tra codagg1 e codagg2 compilato - TString query; - query << "USE RDOC\n"; - query << "SELECT (BETWEEN(CODAGG1,\"AC\",\"VE\"))||(BETWEEN(CODAGG2,\"AC01\",\"VE99\"))"; - TISAM_recordset righedoc(query); - const long righedoc_items = righedoc.items(); - - TProgind pi(righedoc_items, TR("Ricostruzione righe documento..."), false); - - //ci vuole un TVariable_rectype perchè il TRectype non ha campi virtuali! - TVariable_rectype rdoc(LF_RIGHEDOC); - rdoc.set_memo_fld(RDOC_RG1); - for (bool ok = righedoc.move_first(); ok; ok = righedoc.move_next()) + for (c = 0L; c.pos() < items; ++c) { //deve prendere dalla riga il valore di codagg2 e confrontarlo con una delle nuove sottocategorie conai if (!pi.addstatus(1)) break; - rdoc = righedoc.cursor()->curr(); - TString4 codagg1 = rdoc.get(RDOC_CODAGG1); - TString4 codagg2 = rdoc.get(RDOC_CODAGG2); - if (codagg1.full() || codagg2.full()) - { - //se codagg2 non è 4 caratteri o è cazzato (<4) oppure non c'entra un cavolo (>4); quindi deve considerare.. - //..codagg1; se codagg1 è lungo 2 va bene lui - if (codagg2.len() < 4 && codagg1.len() == 2) - { - codagg2 = codagg1; - codagg2 << "99"; - } - //per prima cosa sistema i codici categoria - //quale è la classe conai? (plastica,carta,vetro,ecc.??) - const TCONAI_class cc = conai_str2class(codagg2); - //come si chiama il campo virtuale su rdoc in cui anrà inserito il codice categoria? - const char* csn = conai_sottocat_name(cc); - //noto il campo di destinazione ci mette il codice corretto - rdoc.put(csn, codagg2); - rdoc.zero(RDOC_CODAGG1); - rdoc.zero(RDOC_CODAGG2); + TDocumento & doc = (TDocumento &)c.curr(); + const int rows = doc.physical_rows(); - //adesso tocca ai pesi conai - const real qtagg1 = rdoc.get_real(RDOC_QTAGG1); - if (!qtagg1.is_zero()) - { - //la classe è sempre quella di prima;il campo virtuale no - const char* cpn = conai_peso_name(cc); - //noto il campo di destinazione ci mette il peso conai - rdoc.put(cpn, qtagg1); - rdoc.zero(RDOC_QTAGG1); - } - } + for (int i = 1; i <= rows; i++) + { + TRiga_documento & r = doc[i]; - const real qtagg3 = rdoc.get(RDOC_QTAGG3); - if (!qtagg3.is_zero()) - { - rdoc.put("NUMFOGLI", qtagg3); - rdoc.zero(RDOC_QTAGG3); - } + if (r.is_merce() || r.is_omaggio()) + { + int pos = 1; - //scrittura finale del record - int err = rdoc.rewrite(f); - if (err != NOERR) - { - cantwrite_box(f.description()); - break; - } - } + for (int j = 0; j < CONAI_CLASSES; j++) + { + const TString & cat = r.get(old_conai_cod[j]); + + if (cat.full()) + { + r.put(conai_sottocat_name(pos), cat); + r.put(conai_peso_name(pos++), r.get_real(old_conai_peso[j])); + } + r.zero(old_conai_cod[j]); + r.zero(old_conai_peso[j]); + } + if (r.rewrite(f) != NOERR) + cantwrite_box(f.description()); + } + } + } } -void TConversione_archivi::convert_conai_righe() -{ - //gestione del file anamag - convert_conai_anamag(); - - //gestione delle righedoc - convert_conai_rdoc(); -} - - ///////////////////////////////////////////////////////////////////////////////////// // Converte i dati del file LF_RILORE ($125) in base al nuovo e più logico tracciato ///////////////////////////////////////////////////////////////////////////////////// diff --git a/src/ba/bamenu.men b/src/ba/bamenu.men index 5931e7094..06b47bd25 100755 --- a/src/ba/bamenu.men +++ b/src/ba/bamenu.men @@ -131,7 +131,7 @@ Flags = "" Item_01 = "Riattribuzione codice allegato", "bacnv 21", "" Item_02 = "Aggiornamento IV direttiva CEE", "bacnv 22", "" Item_03 = "Aggiornamento profili documento personalizzati", "bacnv 23", "" -Item_04 = "Riattribuzione campi CONAI", "bacnv 24", "" +Item_04 = "Conversione documenti CONAI", "bacnv 24", "" Item_05 = "Gestione attivazione licenze", "ba2 -7", "" Item_06 = "Aggiornamento Nazioni ISO 2017" "ba7 -4", "" diff --git a/src/ce/ce2100.cpp b/src/ce/ce2100.cpp index 02f98c616..8e92d11f9 100755 --- a/src/ce/ce2100.cpp +++ b/src/ce/ce2100.cpp @@ -121,7 +121,7 @@ bool TCalcamm::calcola_ammortamenti() TCespite cespite(cur.curr()); for (int tipo_sit = 1; tipo_sit <= 3; tipo_sit++) - cespite.calc_amm(tipo_sit, data_limite, TRUE); + cespite.calc_amm(tipo_sit, data_limite, true); } // Aggiorna maschera diff --git a/src/ce/ce3900a.rep b/src/ce/ce3900a.rep index a1166bd0f..5393a0f66 100755 --- a/src/ce/ce3900a.rep +++ b/src/ce/ce3900a.rep @@ -165,8 +165,8 @@ MESSAGE ADD,F4.102 MESSAGE ADD,F3.103 MESSAGE ADD,F4.103 - - -#QAMM_FPRIVATO + + #QAMM+#QAMMMV-#QAMM_FPRIVATO MESSAGE ADD,F2.104 MESSAGE ADD,F3.104 MESSAGE ADD,F4.104 diff --git a/src/ce/ce3900b.rep b/src/ce/ce3900b.rep index c498e0ec4..03bcafebb 100644 --- a/src/ce/ce3900b.rep +++ b/src/ce/ce3900b.rep @@ -93,7 +93,7 @@ MESSAGE ADD,F1.103 - #QAMM-#QAMM_FPRIVATO + #QAMM+#QAMMMV-#QAMM_FPRIVATO MESSAGE ADD,F1.104 diff --git a/src/include/utility.cpp b/src/include/utility.cpp index 60274bde7..ac632ffe2 100755 --- a/src/include/utility.cpp +++ b/src/include/utility.cpp @@ -278,7 +278,7 @@ bool input_filename(TFilename& file) return good; } -BOOLEAN sirio_codesigning(const TFilename& filename, bool verify) +bool sirio_codesigning(const TFilename& filename, bool verify) { const char * const default_sign = R"("C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" sign /a /s MY /n "Sirio Informatica e Sistemi SPA" /t http://timestamp.verisign.com/scripts/timstamp.dll /v)"; const char * const default_verify = R"("C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\signtool.exe" verify /a /pa /v)"; @@ -286,7 +286,7 @@ BOOLEAN sirio_codesigning(const TFilename& filename, bool verify) TString command = installini.get(!verify ? "SirioSignCommand" : "SirioSignVerifyCommand", nullptr, -1, ""); if (command.empty()) command << !verify ? default_sign : default_verify; - command << " \"" << filename.path() << static_cast((const TFilename&)filename) << "\""; + command << " \"" << filename << "\""; const int exit = xvt_sys_execute(command, TRUE, FALSE); return exit == 0 || exit == 2; // Execution was successful [0] OR Execution has completed with warnings [2] } diff --git a/src/include/utility.h b/src/include/utility.h index 147339db7..5eb7900ec 100755 --- a/src/include/utility.h +++ b/src/include/utility.h @@ -20,7 +20,7 @@ #define SAFE_DELETE(p) { delete p; p = NULL; } #define DEBUG_ENABLED is_debug_station() -BOOLEAN sirio_codesigning(const TFilename& filename, bool verify = false); +bool sirio_codesigning(const TFilename& filename, bool verify = false); #define SIRIOSIGN(filename) sirio_codesigning((const TFilename&)((filename)), false) #define SIRIOSIGN_VERIFY(filename) sirio_codesigning((const TFilename&)((filename)), true)