Files
Facilitor/APPL/SLE/slecil_list.inc
Erik Groener 4473339189 FSN#38016 Sleutel heeft vervaldatum en status inactief maar is toch uit te geven
svn path=/Website/trunk/; revision=31214
2016-10-26 06:43:51 +00:00

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>
<%
}
%>