From 2a6c4103a9c9f7efd4480afc4ff9061e10199070 Mon Sep 17 00:00:00 2001 From: Erik Groener Date: Wed, 29 Jun 2016 11:53:31 +0000 Subject: [PATCH] AKZA#36634 ALG: "Multi wijzigen" flexkenmerken voor ruimtes svn path=/Website/trunk/; revision=29891 --- APPL/ALG/alg_edit_ruimte_multi.asp | 212 ++++++++++++++++++++++++ APPL/ALG/alg_edit_ruimte_multi_save.asp | 85 ++++++++++ APPL/ALG/alg_flexkenmerk.inc | 7 + APPL/ALG/alg_ruimte_list.inc | 20 ++- 4 files changed, 319 insertions(+), 5 deletions(-) create mode 100644 APPL/ALG/alg_edit_ruimte_multi.asp create mode 100644 APPL/ALG/alg_edit_ruimte_multi_save.asp diff --git a/APPL/ALG/alg_edit_ruimte_multi.asp b/APPL/ALG/alg_edit_ruimte_multi.asp new file mode 100644 index 0000000000..20b57add3d --- /dev/null +++ b/APPL/ALG/alg_edit_ruimte_multi.asp @@ -0,0 +1,212 @@ +<%@language = "javascript" %> +<% /* + $Revision$ + $Id$ + + File: alg_edit_ruimte_multi.asp + Description: Multi editten van de flexkenmerken van ruimtes + Parameters: alg_keys + + Context: + Note: + +*/ %> + + + + + + + + + +<% +FCLTHeader.Requires({ plugins:["suggest", "jQuery", "kenmerk"] }); + +var alg_key_arr = getQParamIntArray("alg_keys"); +var alg_level = getQParam("alg_level"); + +var warning = ""; +var result = {}; +var tobeedited = 0; +var ingesloten = []; +// Bepaal de ruimtes in de selectie die +// ook echt bewerkt kunnen of mogen worden. +for (var i = 0; i < alg_key_arr.length; i++) +{ + var this_alg = alg.func_enabled(alg_key_arr[i], "R"); + if (this_alg.writeman || this_alg.writeuse) + { + ingesloten.push(alg_key_arr[i]); + tobeedited++; + var last_this_alg = this_alg; // deze gebruiken we voor rechtencontrole. Niet 100% zuiver maar goed genoeg + } +} +user.auth_required_or_abort(tobeedited > 0); // We klagen niet over enkele wel en enkele niet + +/* +var sql = "SELECT alg_srtruimte_key" + + " , mld_dienstniveau_key" + + " , alg_ruimte_omschrijving" + + " , alg_ruimte_opmerking" + + " , alg_ruimte_beginuur" + + " , alg_ruimte_einduur" + + " , alg_ruimte_werkdagen" + + " FROM alg_ruimte" + + " WHERE alg_ruimte_key in (" + ingesloten.join(",") + ")"; +var oRs = Oracle.Execute(sql); +if (!oRs.eof) +{ + var diff = { srtruimte_key: oRs("alg_srtruimte_key").Value, + dienstniveau_key: oRs("mld_dienstniveau_key").Value, + omschrijving: oRs("alg_ruimte_omschrijving").Value, + opmerking: oRs("alg_ruimte_opmerking").Value, + beginuur: oRs("alg_ruimte_beginuur").Value, + einduur: oRs("alg_ruimte_einduur").Value, + werkdagen: oRs("alg_ruimte_werkdagen").Value + }; + var i = 0; + while (!oRs.eof) + { + i++; + if (diff.srtruimte_key != oRs("alg_srtruimte_key").Value) diff.srtruimte_key = null; + if (diff.dienstniveau_key != oRs("mld_dienstniveau_key").Value) diff.dienstniveau_key = null; + if (diff.omschrijving != oRs("alg_ruimte_omschrijving").Value) diff.omschrijving = null; + if (diff.opmerking != oRs("alg_ruimte_opmerking").Value) diff.opmerking = null; + if (diff.beginuur != oRs("alg_ruimte_beginuur").Value) diff.beginuur = null; + if (diff.einduur != oRs("alg_ruimte_einduur").Value) diff.einduur = null; + if (diff.werkdagen != oRs("alg_ruimte_werkdagen").Value) diff.werkdagen = null; + oRs.MoveNext(); + } +} +oRs.Close(); +*/ +%> + + + +<% FCLTHeader.Generate(); %> + + + + +
" method="post"> +<% +/* + if (last_this_alg.writeman || last_this_alg.writeuse) + { + BLOCK_START("algFlex", L("lcl_ins_meta_data")); + // ruimte specifieke velden + if (last_this_alg.writeman) + { + sql = "SELECT alg_srtruimte_key" + + " , " + lcl.xsqla("alg_srtruimte_omschrijving", "alg_srtruimte_key") + + " FROM alg_v_aanwezigsrtruimte" + + " ORDER BY UPPER("+lcl.xsql("alg_srtruimte_omschrijving", "alg_srtruimte_key")+")"; + FCLTselector( "room_srt", + sql, + { label: L("lcl_estate_ruimte_man_sort"), + initKey: (diff.srtruimte_key ? diff.srtruimte_key : -1), + emptyOption: "" + }); + } + + if (last_this_alg.writeuse) + { + sql = "SELECT mld_dienstniveau_key" + + " , " + lcl.xsqla("mld_dienstniveau_omschr", "mld_dienstniveau_key") + + " FROM mld_dienstniveau" + + " ORDER BY UPPER("+lcl.xsql("mld_dienstniveau_omschr", "mld_dienstniveau_key")+")"; + FCLTselector( "dienstniveau", + sql, + { label: L("lcl_mld_dienst_niveau"), + initKey: (diff.dienstniveau_key ? diff.dienstniveau_key : -1), + emptyOption: "" + }); + + RWFIELDTR("room_oms", "fld", L("lcl_estate_ruimte_man_descr"), diff.omschrijving, {maxlength: 30}); + } + + if (last_this_alg.writeman) + { + RWFIELDTR("room_opm", "fld", L("lcl_estate_ruimte_man_opmerk"), diff.opmerking, {maxlength: 50}); + + var times = []; + for (i=0; i<24; i++) + { + sql = " SELECT " + String(i+0/4) + ", '" + String(i) + ":00' FROM DUAL" + + " UNION ALL SELECT " + String(i+1/4) + ", '" + String(i) + ":15' FROM DUAL" + + " UNION ALL SELECT " + String(i+2/4) + ", '" + String(i) + ":30' FROM DUAL" + + " UNION ALL SELECT " + String(i+3/4) + ", '" + String(i) + ":45' FROM DUAL" + times.push(sql); + } + FCLTselector( "room_beginuur", + times.join(" UNION ALL "), + { label: L("lcl_estate_gebouw_beginuur"), + initKey: diff.beginuur, + emptyOption: "" + } + ); + FCLTselector( "room_einduur", + times.join(" UNION ALL "), + { label: L("lcl_estate_gebouw_einduur"), + initKey: diff.einduur, + emptyOption: "" + } + ); + + sql = " SELECT null, " + safe.quoted_sql(L("lcl_alg_ruimte_volgens_gebouw")) + " FROM DUAL" + + " UNION ALL SELECT 0, " + safe.quoted_sql(L("lcl_No")) + " FROM DUAL" + + " UNION ALL SELECT 1, " + safe.quoted_sql(L("lcl_Yes")) + " FROM DUAL"; + FCLTselector( "room_werkdagen", + sql, + { label: L("lcl_estate_gebouw_werkdagen"), + initKey: diff.werkdagen + } + ); + } + BLOCK_END(); + } +*/ + generateFlexKenmerkBlock({ + fnpre: function () {BLOCK_START("algMultiEdit", L("lcl_flexible_properties"));}, + fnpost: BLOCK_END, + onrgoed_niveau: "R", + onrgoed_key: -1, + this_alg: last_this_alg, + reado: false, + multi: true, + flexcolumns: 1 // altijd want popup + }); + + var buttons = []; + buttons.push({title: L("lcl_submit"), action: "alg_submit()", singlepress: true, id: "btn_alg_submit"}); + buttons.push({title: L("lcl_cancel"), action: "alg_cancel()"}); + CreateButtons(buttons); +IFACE.FORM_END(); +%> +
+ + diff --git a/APPL/ALG/alg_edit_ruimte_multi_save.asp b/APPL/ALG/alg_edit_ruimte_multi_save.asp new file mode 100644 index 0000000000..055128991f --- /dev/null +++ b/APPL/ALG/alg_edit_ruimte_multi_save.asp @@ -0,0 +1,85 @@ +<%@ language = "JavaScript" %> +<% /* + $Revision$ + $Id$ + + File: alg_edit_ruimte_multi_save.asp + Description: save script van alg_edit_ruimte_multi.asp + Globalen: + Context: + Note: +*/ +var JSON_Result = true; +%> + + + + + + + +<% +//protectRequest.validateToken(); +var alg_key_arr = getQParamIntArray("alg_keys"); +var alg_level = getQParam("alg_level"); + +var warning = ""; +var result = {}; +var nr_edited = 0; + +for (var i = 0; i < alg_key_arr.length; i++) +{ + var alg_key = alg_key_arr[i]; + var this_alg = alg.func_enabled(alg_key, "R"); + if (this_alg.writeman || this_alg.writeuse) + { + // Ik mag de ruimte wijzigen dus voer wijziging uit + var fields = []; + var algUpd = buildTrackingUpdate("alg_ruimte", " alg_ruimte_key = " + alg_key, fields); + // // Submit the changed data + // var err = Oracle.Execute(algUpd.sql, true); + // if (err.friendlyMsg) + // warning = err.friendlyMsg; + + currentKenmerkenSQL = "SELECT k.alg_kenmerk_key" + + " , ok.alg_onrgoedkenmerk_waarde" + + " FROM alg_onrgoedkenmerk ok" + + " , alg_kenmerk k" + + " WHERE ok.alg_kenmerk_key = k.alg_kenmerk_key" + + " AND ok.alg_onrgoedkenmerk_verwijder IS NULL" + + " AND ok.alg_onrgoed_niveau = " + safe.quoted_sql(alg_level) + + " AND ok.alg_onrgoed_key = " + alg_key; + + + allKenmerkenSQL = "SELECT " + lcl.xsql('k.alg_kenmerk_omschrijving', 'k.alg_kenmerk_key') + " kenmerk_omschrijving" + + ", fac_kenmerkdomein_key" + + " FROM alg_kenmerk k" + + " WHERE k.alg_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */ + + var flextrack = saveFlexKenmerken(ingesloten[i], + { kenmerkTable: "alg_onrgoedkenmerk", + kenmerkParentKey : "alg_onrgoed_key", + kenmerkWaarde: "alg_onrgoedkenmerk_waarde", + kenmerkKey: "alg_kenmerk_key", + currentKenmerkenSQL: currentKenmerkenSQL, + allKenmerkenSQL: allKenmerkenSQL, + requestQF: Request.Form, + flexPath: "ALG/R", + multiMode: true, + tracking: true, + module: "ALG", + moduleName: "alg_onrgoed_niveau", + moduleVal: alg_level + }); + + var update_string = L("lcl_alg_is_algrup") + "\n" + algUpd.trackarray.join("\n"); + shared.trackaction("ALGRUP", alg_key, update_string); + nr_edited++; + } +} + +result = { success : true, refresh: true }; + +Response.Write(JSON.stringify(result)); +Response.End; +%> \ No newline at end of file diff --git a/APPL/ALG/alg_flexkenmerk.inc b/APPL/ALG/alg_flexkenmerk.inc index 891c07144f..52d3680c20 100644 --- a/APPL/ALG/alg_flexkenmerk.inc +++ b/APPL/ALG/alg_flexkenmerk.inc @@ -49,6 +49,12 @@ function generateFlexKenmerkBlock(params) return true; } + function isInvisible(volgnummer, ktype) + { + if (params.multi) + return (ktype == 'M' || ktype == 'F' || ktype == 'E'); // onzichtbaar bij multi + } + var sql = "SELECT k.alg_kenmerk_key kenmerk_key, " + lcl.xsql('k.alg_kenmerk_omschrijving', 'k.alg_kenmerk_key') +" kenmerk_omschrijving, " + " k.alg_kenmerk_kenmerktype kenmerk_kenmerktype, " @@ -95,6 +101,7 @@ function generateFlexKenmerkBlock(params) hideVervallen: onrgoed_key<0, fnpre: params.fnpre, fnpost: params.fnpost, + fnIsInvisible: isInvisible, mobile: params.mobile, parentKey: onrgoed_key, kenmerk_module: onrgoed_niveau } diff --git a/APPL/ALG/alg_ruimte_list.inc b/APPL/ALG/alg_ruimte_list.inc index a6f06e31ff..988568b6bb 100644 --- a/APPL/ALG/alg_ruimte_list.inc +++ b/APPL/ALG/alg_ruimte_list.inc @@ -67,6 +67,14 @@ function ruimte_list(pautfunction, params) FcltMgr.openDetail(url, "<%=L("lcl_room")%>" + ' ' + algData.oms); } + function ruimteEditMulti(rowArray) + { + var algKeyString = getKeyString(rowArray); + var subject = L("lcl_alg_multi_edit"); + var url = "../alg/alg_edit_ruimte_multi.asp?alg_level=R&alg_keys=" + algKeyString; + FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh}); + } + function doRuimteAfdeling(rowArray) { var ruimteArr = []; @@ -167,15 +175,15 @@ function ruimte_list(pautfunction, params) { sqln += " AND UPPER(r.alg_ruimte_omschrijving) LIKE " + safe.quoted_sql_wild("%" + area_descr + "%"); } - + if (dept) { sqln += " AND r.alg_ruimte_key in " + " (SELECT alg_ruimte_key " - + " FROM prs_ruimteafdeling " + + " FROM prs_ruimteafdeling " + " WHERE prs_ruimteafdeling_verwijder IS NULL " + " AND prs_afdeling_key = " + dept + ")"; - } + } sqln += " ORDER BY l.alg_locatie_upper ASC" + ", g.alg_gebouw_upper ASC" @@ -199,14 +207,15 @@ function ruimte_list(pautfunction, params) { if (!floorCache[oRs("alg_verdieping_key").Value]) { + eEditMulti = true; floorCache[oRs("alg_verdieping_key").Value] = { eDelete: alg.canWriteVerdieping(oRs("alg_verdieping_key").Value, authparams.rmALGwritelevel), // Bezetting moet per regel en is afhankelijk van WEB_PRSBOF (werkplekbeheer) - eBezetting: alg.func_enabled_ruimte(oRs("alg_verdieping_key").Value).canPRSBOFwrite + eBezetting: alg.func_enabled_ruimte(oRs("alg_verdieping_key").Value).canPRSBOFwrite, + eEditMulti: eEditMulti } } - return (floorCache[oRs("alg_verdieping_key").Value]); } @@ -271,6 +280,7 @@ function ruimte_list(pautfunction, params) } rst.addAction({ action: "ruimteEdit", caption: L("lcl_edit"), isDefault: true }); + rst.addAction({ action: "ruimteEditMulti", caption: L("lcl_alg_multi_edit"), multi: true, multiOnce: true, single: false, enabler: "eEditMulti"}); rst.addAction({ action: "doDelete", caption: L("lcl_delete"), multi: true, single: !noref, enabler: "eDelete" }); rst.addAction({ action: "doRuimteAfdeling", caption: L("lcl_alg_bezetting"), multi: true, multiOnce: true, enabler: "eBezetting" }); if (!noref)