diff --git a/ba/ba1500.cpp b/ba/ba1500.cpp index 59076382b..4a7a126ac 100755 --- a/ba/ba1500.cpp +++ b/ba/ba1500.cpp @@ -730,22 +730,6 @@ void TAttivazione_moduli::print_request() str = active ? TR("*ATTIVO*") : ""; codice.set(str); - str = _im->get_name(module); - real full, assist; - ini.prices(str, users, full, assist); - if (active) - { - real old_full, old_assist; - ini.prices(str, ::dongle().max_users(), old_full, old_assist); - full -= old_full; - assist -= old_assist; - } - else - assist = 0.0; - - price.set(full.string()); - manut.set(assist.string()); - form.print(-1); } diff --git a/ba/ba1600.cpp b/ba/ba1600.cpp index 61736a6e4..d440323d7 100755 --- a/ba/ba1600.cpp +++ b/ba/ba1600.cpp @@ -384,57 +384,6 @@ void TInstall_ini::version_info(const char* module,int& year, int& release,int& } } -bool TInstall_ini::update_prices(const char* from) -{ - CHECK(fexist(from), "Can't find listino prezzi"); - TConfig from_ini(from); - from_ini.write_protect(); - const TDate curr_date(get("Listino","Main")); - const TDate from_date(from_ini.get("Listino","Main")); - if (from_date < curr_date) - return false; - set("Listino", from_date); - - TString_array modules; - from_ini.list_paragraphs(modules); - FOR_EACH_ARRAY_ROW_BACK(modules, r, row) if (row->len() == 2) - { - TAssoc_array& prices = from_ini.list_variables(*row); - set_paragraph(*row); - FOR_EACH_ASSOC_STRING(prices, obj, key, str) - { - const TFixed_string price(key); - if (price.compare("Prezzo", 6, true) == 0) - set(key, str); - } - } - return true; -} - -void TInstall_ini::prices(const char* module, word users, real& full, real& assist, bool correct_ass) -{ - real last_pac, last_ass; - full = assist = 0.0; - for (word u = 1; u <= users; u++) - { - TAuto_token_string prezzi = get("Prezzo", module, int(u)); - if (prezzi.not_empty()) - { - last_pac = prezzi.get(0); - if (last_pac < 50000.0) - last_pac *= 1000.0; - last_ass = prezzi.get(); - if (last_ass < 50000.0) - last_ass *= 1000.0; - const int mese = TDate(TODAY).month(); - last_ass = last_ass * (correct_ass ? (12-mese) / 12 : 1); - last_ass.round(-3); - } - full += last_pac; - assist += last_ass; - } -} - #ifdef __FCONV__ /////////////////////////////////////////////////////////// @@ -1397,7 +1346,7 @@ bool TFascicolator_mask::confirm_handler(TMask_field& f, KEY k) const bool dirty_module= m.field(S_DATE).dirty() || m.field(S_PREPROCESS).dirty() || m.field(S_POSTPROCESS).dirty() || - m.field(S_EXTERN).dirty(); + m.field(S_EXTERN).dirty() || m.field(S_OEM).dirty(); const bool dirty_version= m.field(S_VERSION).dirty() || m.field(S_PATCHLEVEL).dirty(); if (dirty_version || dirty_module) @@ -1411,6 +1360,7 @@ bool TFascicolator_mask::confirm_handler(TMask_field& f, KEY k) ini.set("Moduli", m.get(S_EXTERN)); ini.set("PreProcess", m.get(S_PREPROCESS)); ini.set("PostProcess", m.get(S_POSTPROCESS)); + ini.set("OEM", m.get(S_OEM)); // sottomoduli if (dirty_version) { @@ -1762,6 +1712,9 @@ void TCreadischi_mask::load() tmp = ini.get("PostProcess"); row.add(tmp); + + tmp = ini.get("OEM"); + row.add(tmp); } } } @@ -1813,6 +1766,9 @@ void TFascicolator_mask::save() tmp = row->get(); ini.set("PostProcess", tmp); + + tmp = row->get(); + ini.set("OEM", tmp); } } } @@ -2241,6 +2197,7 @@ TFascicolator_mask::TFascicolator_mask() s.enable_column(S_EXTERN,true); s.enable_column(S_PREPROCESS,true); s.enable_column(S_POSTPROCESS,true); + s.enable_column(S_OEM,true); } /////////////////////////////////////////////////////////// diff --git a/ba/ba1600.h b/ba/ba1600.h index 2a2650581..5ef0e0816 100755 --- a/ba/ba1600.h +++ b/ba/ba1600.h @@ -23,8 +23,6 @@ public: int patch(const char* module); void version_info(const char* module, int& year, int& release, int& tag, int& patch); - bool update_prices(const char* src_ini); - void prices(const char* module, word users, real& full, real& manut, bool correct_ass=TRUE); static const char* default_name() { return "install.ini"; } diff --git a/ba/ba1600a.h b/ba/ba1600a.h index e9a197e56..d11bd2bd6 100755 --- a/ba/ba1600a.h +++ b/ba/ba1600a.h @@ -20,6 +20,7 @@ #define S_EXTERN 106 #define S_PREPROCESS 107 #define S_POSTPROCESS 108 +#define S_OEM 109 #define S_LIST 100 #define S_CREATEZIP 151 diff --git a/ba/ba1600a.uml b/ba/ba1600a.uml index 1a8ec9164..d86698086 100755 --- a/ba/ba1600a.uml +++ b/ba/ba1600a.uml @@ -32,6 +32,7 @@ BEGIN ITEM "Moduli esterni@30" ITEM "Pre-processing@25" ITEM "Post-processing@25" + ITEM "OEMs@16" END ENDPAGE @@ -40,7 +41,7 @@ ENDMASK PAGE "Riga" -1 -1 80 10 -STRING 101 36 +STRING 101 52 BEGIN PROMPT 14 1 "" FLAGS "D" @@ -73,14 +74,19 @@ BEGIN PROMPT 1 3 "Esterni " END -STRING S_PREPROCESS 50 33 +STRING S_PREPROCESS 50 BEGIN - PROMPT 1 4 "Pre-processing " + PROMPT 1 5 "Pre-processing " END -STRING S_POSTPROCESS 50 33 +STRING S_POSTPROCESS 50 BEGIN - PROMPT 1 5 "Post-processing " + PROMPT 1 6 "Post-processing " +END + +STRING S_OEM 50 +BEGIN + PROMPT 1 8 "Lista OEM (CSV) " END ENDPAGE diff --git a/ba/ba1700.cpp b/ba/ba1700.cpp index a5d76e459..ecaf8b44a 100755 --- a/ba/ba1700.cpp +++ b/ba/ba1700.cpp @@ -26,7 +26,7 @@ #define C_CURRDATAREL 8 #define C_ISPATCH 9 #define C_BASEPATCH 10 - +#define C_OEM 11 /////////////////////////////////////////////////////// // Metodi di utility @@ -164,39 +164,46 @@ public: TInstaller_mask* TInstaller_mask::_curr_mask = NULL; - bool TInstaller_mask::is_visible_patch(TConfig& ini) const { bool yes = true; - const TString& module = ini.get_paragraph(); - CHECKS(module.len() == 2, "Invalid module ", (const char*)module); - const int mod = dongle().module_name2code(module); - if (mod > BAAUT && mod < ENDAUT) + TAuto_token_string oem = ini.get("OEM"); + if (oem.blank()) { - TAuto_token_string oem = ini.get("OEM"); - if (oem.blank()) + const TString& module = ini.get_paragraph(); + CHECKS(module.len() == 2, "Invalid module ", (const char*)module); + const int mod = dongle().module_name2code(module); + if (mod > BAAUT && mod < ENDAUT) { - // Pezza temporanea: assegno OEM noti + // Pezza temporanea: assegno OEM noti eventualmente assenti dalla patch switch (mod) { - case LVAUT: oem = "2"; break; - case PEAUT: oem = "3"; break; - case COAUT: oem = "5"; break; + case COAUT: oem = "5"; break; + case HAAUT: oem = "0,3"; break; + case LVAUT: oem = "2,4"; break; + case PEAUT: oem = "3"; break; + case RIAUT: oem = "0,6"; break; default: break; - }; - } - - if (oem.full()) - yes = oem.get_pos(dongle().oem()) >= 0; - else - { - // Pezza temporanea: Ee significava AGA only - const bool ee = ini.get_bool("Ee"); - if (ee && dongle().oem() != 0) - yes = false; + } } } + + if (oem.full()) + { + const int my_oem = dongle().oem(); + yes = oem.get_pos(my_oem) >= 0; + if (!yes) + { + // Stando alla patch non sarei visibile ma devo controllare anche l'install.ini locale + // in modo da permettere l'aggiunta e la rimozione di nuovi OEM alla lista + const TString& module = ini.get_paragraph(); + const TString& loc_oem = ini_get_string(CONFIG_GENERAL, module, "OEM"); + if (loc_oem != oem) + ini_set_string(CONFIG_GENERAL, module, "OEM", oem); + } + } + return yes; } @@ -224,6 +231,8 @@ bool TInstaller_mask::add_module(TConfig& ini, const TString& module, bool patch row.add(strpatch); row.add(ini.get("Data")); row.add(patch ? "X" : " ", C_ISPATCH); + row.add(ini.get("OEM"), C_OEM); + if (pos < 0) add(row); else @@ -250,7 +259,7 @@ bool TInstaller_mask::add_header(TConfig& ini, const TString& module) bool TInstaller_mask::should_precheck_module(int modnumber) const { - bool ok = modnumber == 0; + bool ok = modnumber == BAAUT; if (!ok) { @@ -292,7 +301,7 @@ int TInstaller_mask::test_station_type() const if (type < 1 || type > 3) { const bool testdb = ini.get_bool("TestDatabase"); - const bool testprg = ini.get_bool("TestPrograms"); + //const bool testprg = ini.get_bool("TestPrograms"); if (testdb) { if (dongle().hardware() == _dongle_network) //se usa un server di chiavi->server @@ -322,14 +331,14 @@ int TInstaller_mask::precheck_modules(bool only_newer) { TToken_string& rigar = *row; cod_module = rigar.get(C_CODE); + modnumber = get_module_number(cod_module); release = rigar.get(C_RELEASE); patchlevel = rigar.get_int(C_PATCH); currrelease = rigar.get(C_CURRRELEASE); currpatch = rigar.get_int(C_CURRPATCH); - modnumber = get_module_number(cod_module); - if (modnumber >= 0 && should_precheck_module(modnumber) && release.full() && - ((release > currrelease) || - (release == currrelease && (only_newer ? patchlevel > currpatch : patchlevel >= currpatch) )) + if (modnumber >= BAAUT && should_precheck_module(modnumber) && + release.full() && ((release > currrelease) || + (release == currrelease && (only_newer ? patchlevel > currpatch : patchlevel >= currpatch) )) ) { // spunta il modulo o la patch se ho installata la stessa versione @@ -622,8 +631,8 @@ bool TInstaller_mask::autoload() const int patchlevel = ini.get_int("Patch"); TToken_string& row = mask_rows.row(r); const TString16 release(row.get(C_RELEASE)); - if (patchversion.mid(4) == release.mid(4) // se le versioni corrispondono ... - && patchlevel > row.get_int(C_PATCH)) // ..e il patchlevel è superiore + if (patchversion.mid(4) == release.mid(4) && // se le versioni corrispondono ... + patchlevel > row.get_int(C_PATCH)) // ..e il patchlevel è superiore { TString4 patch; patch.format("%04d", patchlevel); //aggiunge zeri per avere 3 cifre sempre row.add(patch, C_PATCH); // aggiorna il patchlevel mostrato per il modulo @@ -635,6 +644,7 @@ bool TInstaller_mask::autoload() } if (release < patchversion) row.add(patchversion, C_RELEASE); + row.add(ini.get("OEM"), C_OEM); } } else @@ -1305,7 +1315,6 @@ bool TInstaller_mask::install(const TString& module, int patchlevel) { TInstall_ini ini; ini.set("Data", TDate(TODAY), module); - ini.update_prices(remote_ininame); } // Non togliere le parentesi graffe soprastanti per permettere l'aggiornamento fisico del .ini (CON LA CHIAMATA DEL DISTRUTTORE) update_version(); @@ -1390,7 +1399,7 @@ bool TInstaller_mask::install_patches(const TString& module, const TString& last ininame.lower(); const int pos = ininame.find("a.ini"); CHECKS(pos >= 6, "Invalid installation configuration: ", (const char*)ininame); - const TString16 patchmodule = ininame.mid(pos-6, 2); + const TString4 patchmodule = ininame.mid(pos-6, 2); TConfig ini(ininame, patchmodule); const int patchlevel = ini.get_int("Patch"); const TString16 patchversion = ini.get("Versione"); @@ -1534,7 +1543,7 @@ void TInstaller_mask::install_selection() if (compare_version(oldver, 0, newver, 0)) //controlla SOLO la versione indipendentemente dall'anno! ok = error_box(FR("Il modulo '%s' installato ha versione %s:\nimpossibile installare le patch della versione %s"),(const char *)modulo,(const char *)oldver,(const char *)newver); } else - if (newpatch < oldpatch) + if (newpatch < oldpatch) { TString256 msg; msg.format(FR("Si desidera ritornare alla patch %s.%d del modulo '%s' ?\nAttenzione: non e' garantito il corretto\nfunzionamento di tutti i programmi!"), (const char*)newver, newpatch, (const char*)modesc); @@ -1768,7 +1777,7 @@ bool TInstaller_mask::is_program_dir(const TFilename& path) TInstaller_mask::TInstaller_mask() : TArray_sheet(0, 0, 0, 0, TR("Installazione"), - HR("@1|Modulo@32|Cod.@3|Versione da\ninstallare@11|Liv.\nPatch@6|Data\nRilascio@10|Versione\nInstallata@10|Liv.\nPatch@6|Data\nInstallazione@13|Aggiornamento|Patch Base"), + HR("@1|Modulo@32|Cod.@3|Versione da\ninstallare@11|Liv.\nPatch@6|Data\nRilascio@10|Versione\nInstallata@10|Liv.\nPatch@6|Data\nInstallazione@13|Aggiornamento|Patch Base|OEM@10"), 0x18, 4) { add_button(F_INSTALL, TR("Installa"), '\0', TOOL_ELABORA); // NON mettere 'I'