<% /* $Revision$ $Id$ File: SLE/slecil_list.inc Description: Show an overview of sleutels and cilinders in list-form. which meets with the given requirements User can select on or more lines and edit/delete them Parameters: ins_srtdeel_key ins_srtdeel_key outputmode behave in an output mode, print to 0 = screen, 1 = printer, 2 = excel, etc. showall show all objects which meets with the given requirements loc_key search for objects with the given location key bld_key search for objects with the given building key flr_key search for objects with the given floor key room_key search for objects with the given room key dep_key search for objects with the given department key persoon_key search for objects with the given persoon key Context: - SLE/sle_list.js (Search action from bes_search.asp form) - Self (when printing) Note: */ %> <% FCLTHeader.Requires({ plugins:["jQuery"], js: ["../sle/slecil_list.js"] }); function slecil_list (params) { var buttons = []; var ins_srtdeel_key = params.ins_srtdeel_key; var loc_key = params.loc_key; var bld_key = params.bld_key; var terr_key = params.terr_key; var flr_key = params.flr_key; var room_key = params.room_key; var insgroep_key = params.insgroep_key; var dep_key = params.dep_key; var prs_key = params.prs_key; var deel = params.deel; sql = "SELECT s.ins_srtgroep_key" + " FROM ins_v_aanwezigsrtdeel s" + " WHERE s.ins_srtdeel_key = " + ins_srtdeel_key; oRs = Oracle.Execute(sql); var sleType = (oRs("ins_srtgroep_key").value == S("sle_ins_srt_groep_key")? "S" : "C"); // De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden var authparams = user.checkAutorisation(sleType == "S"? ["WEB_SLEBOF", "WEB_SLEFOF"] : ["WEB_SLEBOF"]); // WEB_SLEBOF: PRSread/PRSwrite: Niet van belang. // WEB_SLEBOF: ALGread: Hiermee kan ik sleutels/cilinders zien (met eventuale autorisatie op ruimte). // WEB_SLEBOF: ALGwrite: Hiermee kan ik cilinders koppelen aan/van een ruimte en kan ik sleutels en cilinders aan elkaar koppelen. var authparamsSLEBOF = user.checkAutorisation("WEB_SLEBOF", true); // WEB_SLEFOF: PRSread: NIET VAN BELANG (als iemand mijn sleutel (FOF-ALG-scope) heeft, en ik heb FOF-rechten, dan mag ik ook zien Wie) // WEB_SLEFOF: PRSwrite: Hiermee kan ik sleutels uitgeven aan een persoon binnen de PRS-scope // WEB_SLEFOF: ALGread: Hiermee kan ik sleutels zien (met eventuele autorisatie op ruimte). // WEB_SLEFOF: ALGwrite: Sleutels die vallen in deze scope mag ik uitgeven/innemen var authparamsSLEFOF = user.checkAutorisation("WEB_SLEFOF", true); %> <% FCLTHeader.Generate({ outputmode: params.outputmode }); %> <% // ======================================================= // All header information been emitted. Now start building // the SQL-queries to do actual data retrieval // ======================================================= if (sleType == "S") { // Sleutels // WEB_SLEFOF: ALGread: Kan eigen sleutels zien die ik uitgegeven heb of die nog op mijn bureau liggen (met scope op eigen ruimte (alg_ruimte_key/alg_ruimte_key_org)) // Niet uitgegeven sleutels var sqlSleutels = " SELECT dl.ins_deel_key" + " , s.ins_srtdeel_omschrijving" + " , s.ins_srtdeel_code" + " , dl.ins_deel_omschrijving" + " , dl.ins_alg_ruimte_key_org" + " , " + safe.quoted_sql("[" + L("lcl_sle_available") + "]") + " pname" + " , dl.ins_deel_actief" + " FROM ins_v_aanwezigdeel dl" + " , ins_v_aanwezigsrtdeel s" + " WHERE s.ins_srtdeel_key = dl.ins_srtdeel_key" + " AND s.ins_srtgroep_key = " + S("sle_ins_srt_groep_key") + " AND dl.ins_srtdeel_key = " + ins_srtdeel_key + " AND dl.ins_alg_ruimte_type = 'R'" + " AND dl.ins_alg_ruimte_key_org IS NULL" + " AND dl.ins_alg_ruimte_type_org IS NULL" + (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEFOF.ALGreadlevel + " AND alg_ruimte_key = dl.ins_alg_ruimte_key" + ")" // Er is een scope-beperking van kracht : ""); // Uitgegeven sleutels sqlSleutels += " UNION " + " SELECT dl.ins_deel_key" + " , s.ins_srtdeel_omschrijving" + " , s.ins_srtdeel_code" + " , dl.ins_deel_omschrijving" + " , dl.ins_alg_ruimte_key_org" + ", CASE WHEN dl.ins_alg_ruimte_key_org IS NULL" + " THEN " + safe.quoted_sql("[" + L("lcl_sle_available") + "]") + " ELSE p.prs_perslid_naam_full" + " END pname" + " , dl.ins_deel_actief" + " FROM ins_v_aanwezigdeel dl" + " , ins_v_aanwezigsrtdeel s" + " , prs_v_perslid_fullnames_all p" + " , prs_v_aanwezigperslid p1" + " WHERE s.ins_srtdeel_key = dl.ins_srtdeel_key" + " AND s.ins_srtgroep_key = " + S("sle_ins_srt_groep_key") + " AND dl.ins_srtdeel_key = " + ins_srtdeel_key + " AND dl.ins_alg_ruimte_type_org = 'R'" + " AND dl.ins_alg_ruimte_key = p.prs_perslid_key" + " AND p.prs_perslid_key = p1.prs_perslid_key" + (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEFOF.ALGreadlevel + " AND alg_ruimte_key = dl.ins_alg_ruimte_key_org" + ")" // Er is een scope-beperking van kracht : ""); // WEB_SLEBOF: ALGread: Kan sleutels zien die passen op mijn scope van ruimten of die nog op mij bureau liggen (alg_ruimte_key/alg_ruimte_key_org) // Dus kijken naar de scope van de cilinders. Welke sleutel passen daarop. sqlBasis = " SELECT dl2.ins_deel_key" + " , s2.ins_srtdeel_omschrijving" + " , s2.ins_srtdeel_code" + " , dl2.ins_deel_omschrijving" + " , dl2.ins_alg_ruimte_key_org" + " , CASE WHEN dl2.ins_alg_ruimte_key_org IS NULL" + " THEN " + safe.quoted_sql("[" + L("lcl_sle_available") + "]") + " ELSE p.prs_perslid_naam_full" + " END pname" + " , dl2.ins_deel_actief" + " FROM ins_v_aanwezigdeel dl1" + " , ins_v_aanwezigdeel dl2" + " , ins_v_aanwezigsrtdeel s1" + " , ins_v_aanwezigsrtdeel s2" + " , ins_srtdeel_srtdeel ss" + " , prs_v_perslid_fullnames_all p" + " , prs_v_aanwezigperslid p1" + " WHERE s1.ins_srtdeel_key = dl1.ins_srtdeel_key" + " AND s2.ins_srtdeel_key = dl2.ins_srtdeel_key" + " AND s1.ins_srtgroep_key = " + S("cil_ins_srt_groep_key") + " AND s2.ins_srtgroep_key = " + S("sle_ins_srt_groep_key") + " AND ss.ins_srtdeel_key_1 = s1.ins_srtdeel_key" // cillinder + " AND ss.ins_srtdeel_key_2 = s2.ins_srtdeel_key" // Sleutel + " AND dl2.ins_srtdeel_key = " + ins_srtdeel_key; // Sleutels die passen op niet uitgegeven cilinders // Gedeelte: AND ((dl2.ins_alg_ruimte_key = p.prs_perslid_key AND p.prs_perslid_key = p1.prs_perslid_key) OR dl2.ins_alg_ruimte_key IS NULL) // gesplits t.b.v. performance sqlSleutels += " UNION " + sqlBasis + " AND dl1.ins_alg_ruimte_type_org IS NULL" + " AND dl1.ins_alg_ruimte_type = 'R'" // Gesplitst. + " AND dl2.ins_alg_ruimte_key = p.prs_perslid_key" + " AND p.prs_perslid_key = p1.prs_perslid_key" + (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + " AND alg_ruimte_key = dl1.ins_alg_ruimte_key" + ")" // Er is een scope-beperking van kracht : "") + " UNION " + sqlBasis + " AND dl1.ins_alg_ruimte_type_org IS NULL" + " AND dl1.ins_alg_ruimte_type = 'R'" // Gesplitst. + " AND dl2.ins_alg_ruimte_key IS NULL" + (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + " AND alg_ruimte_key = dl1.ins_alg_ruimte_key" + ")" // Er is een scope-beperking van kracht : ""); // Sleutels die passen op uitgegeven cilinders sqlSleutels += " UNION " + sqlBasis + " AND dl1.ins_alg_ruimte_type_org = 'R'" + " AND dl2.ins_alg_ruimte_key = p.prs_perslid_key" + " AND p.prs_perslid_key = p1.prs_perslid_key" + (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + " AND alg_ruimte_key = dl1.ins_alg_ruimte_key_org" + ")" // Er is een scope-beperking van kracht : ""); var sql = sqlSleutels //+ " UNION ALL " //+ sqlOwner + " ORDER BY 2, 3"; } else if (authparamsSLEBOF) { // Cilinders // Cilinders zijn aan een ruimte of terrein gekoppeld. Cilinders die ergens anders aan zijn gekoppeld niet weergeven // WEB_SLEBOF: ALGread: Kan cilinders zien die in de deur zitten van mijn scope van ruimten of die nog op mij bureau liggen (alg_ruimte_key/alg_ruimte_key_org) // Uitgegeven en niet uitgegeven cilinders in een hek van een terrein var sqlCilinders = "SELECT dl.ins_deel_key" + " , s1.ins_srtdeel_key" + " , s1.ins_srtdeel_omschrijving" + " , s1.ins_srtdeel_code" + " , dl.ins_deel_omschrijving" + " , CASE WHEN dl.ins_alg_ruimte_key_org IS NULL" + " THEN " + safe.quoted_sql("[" + L("lcl_sle_available") + "]") + " ELSE l.alg_locatie_code || ' - ' || t.alg_terreinsector_omschrijving" + " END loc" + " , dl.ins_alg_ruimte_key_org" + " , dl.ins_deel_actief" + " FROM alg_v_aanweziglocatie l" + " , ins_v_aanwezigdeel dl" + " , ins_srtdeel s1" + " , alg_terreinsector t" + " WHERE s1.ins_srtdeel_key = dl.ins_srtdeel_key" + " AND s1.ins_srtgroep_key = " + S("cil_ins_srt_groep_key") + " AND l.alg_locatie_key = t.alg_locatie_key" + " AND s1.ins_srtdeel_key = " + ins_srtdeel_key + " AND dl.ins_alg_ruimte_key = t.alg_terreinsector_key" + " AND dl.ins_alg_ruimte_type = 'T'" + (authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_locatie_key FROM fac_v_my_locations" + " WHERE prs_perslid_key = " + user_key + " AND alg_locatie_key = t.alg_locatie_key" + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht : ""); var sqlBasis = " SELECT dl.ins_deel_key" + " , s1.ins_srtdeel_key" + " , s1.ins_srtdeel_omschrijving" + " , s1.ins_srtdeel_code" + " , dl.ins_deel_omschrijving " + " , CASE WHEN dl.ins_alg_ruimte_key_org IS NULL" + " THEN " + safe.quoted_sql("[" + L("lcl_sle_available") + "]") + " ELSE r.alg_locatie_code || ' - ' || r.alg_ruimte_aanduiding || ' (' || " + lcl.xsql("r.alg_srtruimte_omschrijving", "r.alg_srtruimte_key") + " || ')'" + " END loc" + " , dl.ins_alg_ruimte_key_org" + " , dl.ins_deel_actief" + " FROM ins_v_aanwezigdeel dl" + " , ins_v_aanwezigsrtdeel s1" + " , alg_v_ruimte_gegevens r" + " WHERE s1.ins_srtdeel_key = dl.ins_srtdeel_key" + " AND s1.ins_srtgroep_key = " + S("cil_ins_srt_groep_key") + " AND s1.ins_srtdeel_key = " + ins_srtdeel_key + " AND dl.ins_alg_ruimte_key = r.alg_ruimte_key"; // Uitgegeven cilinders in een deur van een ruimte binnen mijn scope en niet uitgegeven cilinders op mijn bureau sqlCilinders += " UNION " + sqlBasis + " AND dl.ins_alg_ruimte_type = 'R'" + " AND dl.ins_alg_ruimte_key = r.alg_ruimte_key" + (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + " AND alg_ruimte_key = dl.ins_alg_ruimte_key" + ")" // Er is een scope-beperking van kracht : ""); // Uitgegeven cilinders die ik uitgegeven heb wil ik ook zien (Mijn eigen cilinders) sqlCilinders += " UNION " + sqlBasis + " AND dl.ins_alg_ruimte_type_org = 'R'" + (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1 ? " AND EXISTS" + " (SELECT alg_ruimte_key FROM fac_v_my_rooms" + " WHERE prs_perslid_key = " + user_key + " AND niveau = " + authparamsSLEBOF.ALGreadlevel + " AND alg_ruimte_key = dl.ins_alg_ruimte_key_org" + ")" // Er is een scope-beperking van kracht : ""); var sql = sqlCilinders + " ORDER BY 4, 3"; } /*********************************************** * Callback functies ResultsetTable for FO en BO **********************************************/ function fnrowActionEnabler(oRs) { var this_sle = sle.func_enabled_slecil(oRs("ins_deel_key").value); var eUitgeven = this_sle.canUitgeven; var eInnemen = this_sle.canInnemen; var eEdit = this_sle.canBOWrite; var eDelete = this_sle.canBOWrite; var data = {eUitgeven: eUitgeven, eInnemen: eInnemen, eEdit: eEdit, eDelete: eDelete}; return data; } function fncolOmschrijving(oRs) { // Als omschrijving met de srtdeel_code begint dan alleen omschrijving zonder srtdeel_code tonen (alleen volgnummer) var srtdeel_code = oRs("ins_srtdeel_code").value; var ins_deel_oms = oRs("ins_deel_omschrijving").value; var indexof = ins_deel_oms.toUpperCase().indexOf(srtdeel_code.toUpperCase()); if (indexof == 0) return ins_deel_oms.substr(srtdeel_code.length); else return ins_deel_oms; } function fncolActief(oRs) { return (oRs("ins_deel_actief").Value == 1 ? L("lcl_ins_active") : L("lcl_ins_not_active")); } var addurl = "appl/ins/ins_deel.asp?urole=bo" + "&sort=" + ins_srtdeel_key; if (authparamsSLEBOF && authparamsSLEBOF.ALGwritelevel < 9 && authparamsSLEBOF.PRSwritelevel < 9) { buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" }); buttons.push({ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')" }); } /*************************************************** * End callback functies ResultsetTable for FO en BO **************************************************/ var rst = new ResultsetTable({ keyColumn: "ins_deel_key", sql: sql, ID: "instable", rowActionEnabler: fnrowActionEnabler, flexModule: "INS", flexId: "ins_deel_key", multiple: true, filterParams: params, outputmode: params.outputmode, title: (sleType == "S"? L("lcl_sle_sleutels") : L("lcl_cil_cilinders")), showAll: params.showall, buttons: buttons }); // Kolommen rst.addColumn(new Column({caption: (sleType == "S"? L("lcl_sleprs_name") : L("lcl_cil_locaties")), content: (sleType == "S"? "pname" : "loc"), hasActions: true})); rst.addColumn(new Column({caption: (sleType == "S"? L("lcl_sle_sleutel_omsch") : L("lcl_cil_cilinder_omsch")), content: fncolOmschrijving})); rst.addColumn(new Column({caption: L("lcl_ins_active"), content: fncolActief })); // Acties rst.addAction({ action: "sleEdit", caption: L("lcl_change"), isDefault: true}); rst.addAction({ action: "sleDelete", caption: L("lcl_delete"), enabler: "eDelete", single: false, multi: !params.tiny, multiOnce: true}); rst.addAction({ action: "sleCheckOut", caption: (sleType == "S"? L("lcl_sle_uitgifte") : L("lcl_cil_uitgifte")), enabler: "eUitgeven"}); rst.addAction({ action: "sleCheckIn", caption: (sleType == "S"? L("lcl_sle_inname") : L("lcl_cil_inname")), enabler: "eInnemen"}); var count = rst.processResultset(); %> <% } %>