388 lines
21 KiB
C++
388 lines
21 KiB
C++
<% /*
|
|
$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:
|
|
|
|
*/ %>
|
|
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
|
<!-- #include file="../Shared/getkenmerksql.inc" -->
|
|
<!-- #include file="../Shared/discx3d.inc" -->
|
|
<!-- #include file="../INS/ins.inc" -->
|
|
<!-- #include file="./sle.inc" -->
|
|
|
|
<%
|
|
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);
|
|
%>
|
|
|
|
<html>
|
|
<head>
|
|
<%
|
|
FCLTHeader.Generate({ outputmode: params.outputmode });
|
|
%>
|
|
|
|
</head>
|
|
<body id="listbody">
|
|
|
|
<% // =======================================================
|
|
// 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();
|
|
%>
|
|
</body>
|
|
</html>
|
|
<%
|
|
}
|
|
%>
|