Files
Facilitor/APPL/SLE/sle_list.inc
Erik Groener a0549a00c5 PNBR#23734 zoeken op filterveld in rapportages kan niet op * als wildcard
svn path=/Website/trunk/; revision=11971
2012-08-01 13:26:20 +00:00

633 lines
35 KiB
C++

<% /*
$Revision$
$Id$
File: SLE/sle_list.inc
Description: Show an overview of objects (sleutels/cilinders) in list-form.
which meets with the given requirements
User can select on or more lines and edit/delete them
Parameters:
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
terr_key search for objects with the given terrein 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_search.asp (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="./sle.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["../sle/sle_list.js"],
lcl: ["SLE"]
});
function sle_list (params)
{
var addButton = [];
// Voor resulttable de globalen zetten; zou ng anders moeten.
var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
var print = (outputmode == 1);
var excel = (outputmode == 2);
var showall = params.showall;
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 deel = params.deel;
var dep_key = params.dep_key;
var persoon_key = params.persoon_key;
var sletype = params.sletype;
var hasOwner = false;
var hasPosition = false;
if (loc_key || bld_key || terr_key || flr_key || room_key)
hasPosition = true;
else if (dep_key || persoon_key)
hasOwner = true;
// 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"]);
// Na deze check heb ik in ieder geval rechten 1) sletype == "S": WEB_SLEBOF en/of WEB_SLEFOF rechten 2) sletype == "C" WEB_SLEBOF rechten.
// 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: outputmode }); %>
</head>
<body id="listbody">
<% // =======================================================
// All header information been emitted. Now start building
// the SQL-queries to do actual data retrieval
// =======================================================
var sqlPlaats = "";
if (room_key)
sqlPlaats += " AND d.ins_alg_ruimte_key = " + room_key
+ " AND d.ins_alg_ruimte_type = 'R'";
else if (flr_key)
sqlPlaats += " AND aog.alg_verdieping_key = " + flr_key
+ " AND d.ins_alg_ruimte_type = 'R'";
else if (terr_key)
sqlPlaats += " AND d.ins_alg_ruimte_key = " + terr_key
+ " AND d.ins_alg_ruimte_type = 'T'";
else if (bld_key)
sqlPlaats += " AND aog.alg_gebouw_key = " + bld_key
+ " AND d.ins_alg_ruimte_type = 'R'";
else if (loc_key)
sqlPlaats += " AND d.ins_alg_locatie_key = " + loc_key
+ " AND d.ins_alg_ruimte_type = 'R'";
// Nu filtercondities voor flexkenmerken toevoegen
var sqlFlex = getKenmerkSql("INS", "d.ins_deel_key");
var sqlSleutels = "";
var sqlCilinders = "";
if (sletype != "C")
{ // ***** SLEUTELS *****//
var sqlBasisSelect = " SELECT s.ins_srtdeel_key"
+ " , s.ins_srtdeel_omschrijving"
+ " , d.ins_deel_key"
+ " , d.ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , sg.ins_srtgroep_key";
var sqlBasisFrom = " FROM ins_v_aanwezigsrtdeel s"
+ " , ins_v_aanwezigdeel d"
+ " , ins_v_aanwezigsrtgroep sg"
+ " , alg_v_aanweziglocatie l";
var sqlBasisWhere = " WHERE s.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND s.ins_srtdeel_key = d.ins_srtdeel_key"
+ " AND sg.ins_srtgroep_key = " + S("sle_ins_srt_groep_key")
+ (deel
? " AND d.ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%")
: "")
+ sqlPlaats
+ sqlFlex;
// 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))
// Uitgegeven sleutels voor uitgegeven cilinders aan ruimte
if (authparamsSLEFOF)
sqlSleutels += sqlBasisSelect
+ ", l.alg_locatie_code || '-' || aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ ", ins_v_aanwezigdeel d1"
+ ", ins_v_aanwezigsrtdeel s1"
+ ", ins_srtdeel_srtdeel ss"
+ sqlBasisWhere
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND aog.alg_onroerendgoed_keys = d1.ins_alg_ruimte_key"
+ " AND aog.alg_type = d1.ins_alg_ruimte_type"
+ " AND d1.ins_alg_ruimte_key_org IS NOT NULL"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ " AND d1.ins_alg_ruimte_type = 'R'" // Cilinder uitgegeven aan een ruimte
+ " AND s1.ins_srtdeel_key = d1.ins_srtdeel_key"
+ " AND ss.ins_srtdeel_key_1 = s1.ins_srtdeel_key" // cilinder
+ " AND ss.ins_srtdeel_key_2 = s.ins_srtdeel_key" // sleutel
+ (persoon_key
? " AND d.ins_alg_ruimte_key = " + persoon_key
: "")
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Uitgegeven sleutels voor uitgegeven cilinders aan terrein
if (authparamsSLEFOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", l.alg_locatie_code || '-' || t.alg_terreinsector_code plaats"
+ sqlBasisFrom
+ ", alg_terreinsector t"
+ ", ins_v_aanwezigdeel d1"
+ ", ins_v_aanwezigsrtdeel s1"
+ ", ins_srtdeel_srtdeel ss"
+ sqlBasisWhere
+ " AND d1.ins_alg_ruimte_key = t.alg_terreinsector_key"
+ " AND l.alg_locatie_key = t.alg_locatie_key"
+ " AND d1.ins_alg_ruimte_type = 'T'"
+ " AND d1.ins_alg_ruimte_key_org IS NOT NULL"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ " AND d1.ins_alg_ruimte_type = 'R'" // Cilinder uitgegeven aan een ruimte
+ " AND s1.ins_srtdeel_key = d1.ins_srtdeel_key"
+ " AND ss.ins_srtdeel_key_1 = s1.ins_srtdeel_key" // cilinder
+ " AND ss.ins_srtdeel_key_2 = s.ins_srtdeel_key" // sleutel
+ (persoon_key
? " AND d.ins_alg_ruimte_key = " + persoon_key
: "")
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Uitgegeven sleutels voor niet uitgegeven cilinders (geen plaats)
if (authparamsSLEFOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", null plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ sqlBasisWhere
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key_org"
+ " AND aog.alg_type = d.ins_alg_ruimte_type_org"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ (persoon_key
? " AND d.ins_alg_ruimte_key = " + persoon_key
: "")
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Niet uitgegeven sleutels voor uitgegeven cilinders aan ruimte
if (!hasOwner && authparamsSLEFOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", l.alg_locatie_code || '-' || aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ ", ins_v_aanwezigdeel d1"
+ ", ins_v_aanwezigsrtdeel s1"
+ ", ins_srtdeel_srtdeel ss"
+ sqlBasisWhere
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND aog.alg_onroerendgoed_keys = d1.ins_alg_ruimte_key"
+ " AND aog.alg_type = d1.ins_alg_ruimte_type"
+ " AND d1.ins_alg_ruimte_type_org IS NOT NULL"
+ " AND d.ins_alg_ruimte_type = 'R'"
+ " AND d.ins_alg_ruimte_type_org IS NULL"
+ " AND s1.ins_srtdeel_key = d1.ins_srtdeel_key"
+ " AND ss.ins_srtdeel_key_1 = s1.ins_srtdeel_key" // cilinder
+ " AND ss.ins_srtdeel_key_2 = s.ins_srtdeel_key" // sleutel
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Niet uitgegeven sleutels voor uitgegeven cilinders aan terrein
if (!hasOwner && authparamsSLEFOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", l.alg_locatie_code || '-' || t.alg_terreinsector_code plaats"
+ sqlBasisFrom
+ ", alg_terreinsector t"
+ ", ins_v_aanwezigdeel d1"
+ ", ins_v_aanwezigsrtdeel s1"
+ ", ins_srtdeel_srtdeel ss"
+ sqlBasisWhere
+ " AND d1.ins_alg_ruimte_key = t.alg_terreinsector_key"
+ " AND l.alg_locatie_key = t.alg_locatie_key"
+ " AND d1.ins_alg_ruimte_type = 'T'"
+ " AND d1.ins_alg_ruimte_type_org IS NOT NULL"
+ " AND d.ins_alg_ruimte_type = 'R'"
+ " AND d.ins_alg_ruimte_type_org IS NULL"
+ " AND s1.ins_srtdeel_key = d1.ins_srtdeel_key"
+ " AND ss.ins_srtdeel_key_1 = s1.ins_srtdeel_key" // cilinder
+ " AND ss.ins_srtdeel_key_2 = s.ins_srtdeel_key" // sleutel
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Niet uitgegeven voor niet uitgegeven cilinders (geen plaats)
if (!hasOwner && authparamsSLEFOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", null plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ sqlBasisWhere
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key"
+ " AND aog.alg_type = d.ins_alg_ruimte_type"
+ " AND d.ins_alg_ruimte_type = 'R'"
+ " AND d.ins_alg_ruimte_type_org IS NULL"
+ (authparamsSLEFOF&&authparamsSLEFOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEFOF.ALGreadlevel + ")" // 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.
//sqlBasisSelect = " SELECT s.ins_srtdeel_key"
// + " , s.ins_srtdeel_omschrijving"
// + " , d.ins_deel_key"
// + " , d.ins_alg_ruimte_key_org"
// + " , s.ins_srtdeel_code"
// + " , sg.ins_srtgroep_key";
sqlBasisFrom = " FROM ins_v_aanwezigsrtdeel s1"
+ " , ins_v_aanwezigsrtdeel s"
+ " , ins_v_aanwezigdeel d1"
+ " , ins_v_aanwezigdeel d"
+ " , ins_srtdeel_srtdeel ss"
+ " , ins_v_aanwezigsrtgroep sg"
+ " , alg_v_allonrgoed_gegevens aog"
+ " , alg_v_aanweziglocatie l";
sqlBasisWhere = " WHERE s1.ins_srtdeel_key = d1.ins_srtdeel_key"
+ " AND s.ins_srtdeel_key = d.ins_srtdeel_key"
+ " AND s1.ins_srtgroep_key = " + S("cil_ins_srt_groep_key")
+ " AND s.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 = s.ins_srtdeel_key" // Sleutel
+ " AND s.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND sg.ins_srtgroep_key = " + S("sle_ins_srt_groep_key")
+ (deel
? " AND d.ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%")
: "")
+ sqlPlaats
+ sqlFlex;
// Sleutels die passen op niet uitgegeven cilinders
if (!hasOwner && authparamsSLEBOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", null plaats"
+ sqlBasisFrom
+ sqlBasisWhere
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key"
+ " AND aog.alg_type = d.ins_alg_ruimte_type"
+ " AND d1.ins_alg_ruimte_type = 'R'"
+ " AND d1.ins_alg_ruimte_type_org IS NULL"
+ (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1
? " AND d1.ins_alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Sleutels die passen op uitgegeven cilinders
if (!hasOwner && authparamsSLEBOF)
sqlSleutels += " UNION "
+ sqlBasisSelect
+ ", l.alg_locatie_code || '-' || aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
+ sqlBasisFrom
+ sqlBasisWhere
+ " AND aog.alg_onroerendgoed_keys = d1.ins_alg_ruimte_key"
+ " AND aog.alg_type = d1.ins_alg_ruimte_type"
+ " AND d1.ins_alg_ruimte_type_org = 'R'"
+ " AND d1.ins_alg_ruimte_type = 'R'"
+ (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1
? " AND d1.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
}
else //(sletype == "C")
{ // ***** 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
if (!bld_key && !flr_key && !room_key)
sqlCilinders = " SELECT s.ins_srtdeel_key"
+ " , s.ins_srtdeel_omschrijving"
+ " , d.ins_deel_key"
+ " , d.ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , sg.ins_srtgroep_key"
+ " , l.alg_locatie_code || '-' || t.alg_terreinsector_code plaats"
+ " FROM ins_v_aanwezigsrtdeel s"
+ " , ins_v_aanwezigdeel d"
+ " , ins_v_aanwezigsrtgroep sg"
+ " , alg_terreinsector t"
+ " , alg_v_aanweziglocatie l"
+ " WHERE s.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND s.ins_srtdeel_key = d.ins_srtdeel_key(+)"
+ " AND sg.ins_srtgroep_key IN (" + S("sle_ins_srt_groep_key") + "," + S("cil_ins_srt_groep_key") + ")"
+ (deel
? " AND d.ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%")
: "")
+ " AND s.ins_srtgroep_key = " + S("cil_ins_srt_groep_key") // Alleen cilinders kunnen aan een terrein gekoppeld zijn
+ " AND d.ins_alg_ruimte_type = 'T'"
+ " AND d.ins_alg_ruimte_key = t.alg_terreinsector_key"
+ " AND l.alg_locatie_key = t.alg_locatie_key"
+ sqlPlaats
+ sqlFlex
+ (authparamsSLEBOF&&authparamsSLEBOF > -1
? " AND t.alg_locatie_key IN"
+ " (SELECT alg_locatie_key FROM fac_v_my_locations"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF + ")" // Er is een scope-beperking van kracht
: "");
var sqlBasisSelect = " SELECT s.ins_srtdeel_key"
+ " , s.ins_srtdeel_omschrijving"
+ " , d.ins_deel_key"
+ " , d.ins_alg_ruimte_key_org"
+ " , s.ins_srtdeel_code"
+ " , sg.ins_srtgroep_key";
var sqlBasisFrom = " FROM ins_v_aanwezigsrtdeel s"
+ " , ins_v_aanwezigdeel d"
+ " , ins_v_aanwezigsrtgroep sg";
var sqlBasisWhere = " WHERE s.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND s.ins_srtdeel_key = d.ins_srtdeel_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND sg.ins_srtgroep_key = " + S("cil_ins_srt_groep_key")
+ (deel
? " AND d.ins_deel_upper LIKE " + safe.quoted_sql_wild("%" + deel + "%")
: "")
+ sqlPlaats
+ sqlFlex;
// Uitgegeven cilinders in een deur van een ruimte binnen mijn scope en niet uitgegeven cilinders op mijn bureau
sqlCilinders += (sqlCilinders != ""? " UNION " : "")
+ sqlBasisSelect
+ ", l.alg_locatie_code || '-' || aog.alg_gebouw_code || '-' || aog.alg_verdieping_code || '-' || aog.alg_ruimte_nr plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ ", alg_v_aanweziglocatie l"
+ sqlBasisWhere
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key"
+ " AND aog.alg_type = d.ins_alg_ruimte_type"
+ " AND d.ins_alg_ruimte_type = 'R'"
+ (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Uitgegeven cilinders die ik uitgegeven heb wil ik ook zien (Mijn eigen cilinders). Terwijl ik wellicht geen rechten heb op de deur van de ruimte waar de cilinder nu in zit.
// Let op: Maar dan wel de plaats tonen van de ruimte/terreinsector waar de cilinder nu in de deur/hek zit (anders wordt die ook nog eens dubbel getoond).
// De cilinder kan nu in een deur van een ruimte zitten of in een hek van een terreinsector.
// Eerst de cilinders die in een deur van een ruimte zitten.
sqlCilinders += " UNION "
+ sqlBasisSelect
+ ", l2.alg_locatie_code || '-' || aog2.alg_gebouw_code || '-' || aog2.alg_verdieping_code || '-' || aog2.alg_ruimte_nr plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ ", alg_v_aanweziglocatie l"
+ ", alg_v_allonrgoed_gegevens aog2"
+ ", alg_v_aanweziglocatie l2"
+ sqlBasisWhere
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key_org"
+ " AND aog.alg_type = d.ins_alg_ruimte_type_org"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ " AND aog2.alg_onroerendgoed_keys = d.ins_alg_ruimte_key"
+ " AND aog2.alg_locatie_key = l2.alg_locatie_key"
+ " AND d.ins_alg_ruimte_type = 'R'"
+ (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
// Nu de cilinders die in een hek van een terreinsector zitten.
sqlCilinders += " UNION "
+ sqlBasisSelect
+ ", l2.alg_locatie_code || '-' || t.alg_terreinsector_code plaats"
+ sqlBasisFrom
+ ", alg_v_allonrgoed_gegevens aog"
+ ", alg_v_aanweziglocatie l"
+ ", alg_terreinsector t"
+ ", alg_v_aanweziglocatie l2"
+ sqlBasisWhere
+ " AND aog.alg_onroerendgoed_keys = d.ins_alg_ruimte_key_org"
+ " AND aog.alg_type = d.ins_alg_ruimte_type_org"
+ " AND d.ins_alg_ruimte_type_org = 'R'"
+ " AND d.ins_alg_ruimte_type = 'T'"
+ " AND d.ins_alg_ruimte_key = t.alg_terreinsector_key"
+ " AND l2.alg_locatie_key = t.alg_locatie_key"
+ (authparamsSLEBOF&&authparamsSLEBOF.ALGreadlevel > -1
? " AND d.ins_alg_ruimte_key_org IN"
+ " (SELECT alg_ruimte_key FROM fac_v_my_rooms"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + authparamsSLEBOF.ALGreadlevel + ")" // Er is een scope-beperking van kracht
: "");
}
var sql = sqlSleutels
+ (sqlSleutels != "" && sqlCilinders != ""
? " UNION " // Dubbelen sqlPosition/sqlOwner niet tonen
: "")
+ sqlCilinders
+ " ORDER BY ins_srtgroep_key, ins_srtdeel_omschrijving ASC";
sql = "SELECT tot.ins_srtdeel_key"
+ " , tot.ins_srtdeel_omschrijving"
+ " , COUNT (tot.ins_deel_key) aantalregels"
+ " , COUNT (tot.ins_alg_ruimte_key_org) aantal_uitgegeven"
+ " , tot.ins_srtdeel_code"
+ " , tot.ins_srtgroep_key"
+ " , MIN(tot.plaats) minplaats"
+ " , MAX(tot.plaats) maxplaats"
+ " , deel.ins_deel_key"
+ " FROM (" + sql + ") tot"
+ " , ins_v_aanwezigdeel deel"
+ " WHERE tot.ins_srtdeel_key = deel.ins_srtdeel_key"
+ " GROUP BY tot.ins_srtdeel_key"
+ " , tot.ins_srtdeel_omschrijving"
+ " , tot.ins_srtdeel_code"
+ " , tot.ins_srtgroep_key"
+ " , deel.ins_deel_key";
sql = "SELECT totaal.ins_srtdeel_key"
+ " , totaal.ins_srtdeel_omschrijving"
+ " , COUNT(totaal.ins_deel_key) aantal" // Aantal sleutels
+ " , totaal.aantal_uitgegeven / (totaal.aantalregels / COUNT(totaal.ins_deel_key)) aantal_uitgegeven" // Aantal uitgegeven is het aantal cilinder teveel (aantal uitgegeven / (aantal regels / aantal sleutels)
+ " , totaal.ins_srtdeel_code"
+ " , totaal.ins_srtgroep_key"
+ " , minplaats || CASE"
+ " WHEN minplaats != maxplaats"
+ " THEN '...'"
+ " ELSE ''"
+ " END plaats"
+ " FROM (" + sql + ") totaal"
+ " GROUP BY totaal.ins_srtdeel_key"
+ " , totaal.ins_srtdeel_omschrijving"
+ " , totaal.aantalregels"
+ " , totaal.aantal_uitgegeven"
+ " , totaal.ins_srtdeel_code"
+ " , totaal.ins_srtgroep_key"
+ " , totaal.minplaats"
+ " , totaal.maxplaats"
// Ook de sleutel sets (ins_srtdeel) tonen die geen sleutels/cilinders bevatten
+ " UNION "
+ " SELECT s.ins_srtdeel_key"
+ " , s.ins_srtdeel_omschrijving"
+ " , 0 aantal"
+ " , 0 aantal_uitgegeven"
+ " , s.ins_srtdeel_code"
+ " , sg.ins_srtgroep_key"
+ " , NULL plaats"
+ " FROM ins_v_aanwezigsrtdeel s"
+ " ,ins_v_aanwezigsrtgroep sg"
+ " WHERE s.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND sg.ins_srtgroep_key = " + (sletype == "S"? S("sle_ins_srt_groep_key") : S("cil_ins_srt_groep_key"))
+ " AND NOT EXISTS (SELECT ins_deel_key"
+ " FROM ins_v_aanwezigdeel d"
+ " WHERE d.ins_srtdeel_key = s.ins_srtdeel_key)"
+ " ORDER BY ins_srtgroep_key"
+ " , ins_srtdeel_omschrijving ASC";
///////////////////////////////////////////////////////////
//
// Now let's present the results:
//
//////////////////////////////////////////////////////////
/**********************************
* Callback functies ResultsetTable
*********************************/
function fnrowData(oRs)
{
var sleSrtDeelKey = oRs("ins_srtdeel_key").value;
var sleSrtGroepKey = oRs("ins_srtgroep_key").value;
var sletype = (oRs("ins_srtgroep_key").value == S("sle_ins_srt_groep_key")? "S" : "C");
var data = {sleSrtDeelKey: sleSrtDeelKey, sleSrtGroepKey: sleSrtGroepKey, sletype: sletype};
return JSON.stringify(data);
}
function fnrowActionEnabler(oRs)
{
var eEdit = false;
var eKoppelen = sle.kanKoppelen(oRs("ins_srtdeel_key").value);
if (authparamsSLEBOF && authparamsSLEBOF.ALGwritelevel < 9 && authparamsSLEBOF.PRSwritelevel < 9)
{
eEdit = true; // Indien enige actie dan wordt de actie niet getoond en is het de default actie op de hele regel
}
var data = {eEdit: eEdit, eKoppelen: eKoppelen};
return data;
}
function fnBeschikbaar(oRs)
{
return oRs("aantal").value - oRs("aantal_uitgegeven").value;
}
var addurl = "appl/sle/sle_srtdeel.asp?couple=1";
if (authparamsSLEBOF && authparamsSLEBOF.ALGwritelevel < 9 && authparamsSLEBOF.PRSwritelevel < 9)
{
addButton = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', L('lcl_add'))" }]
}
/***************************************************
* End callback functies ResultsetTable for FO en BO
**************************************************/
// TODO conditionele Add button
var rst = new ResultsetTable({ keyColumn: "ins_srtdeel_key",
sql: sql,
ID: "insdeeltable",
rowData: fnrowData,
rowActionEnabler: fnrowActionEnabler,
flexModule: "INS",
flexId: "ins_srtdeel_key",
multiple: true,
filterParams: params,
outputmode: outputmode,
title: params.sletype == "S"? L("lcl_sle_sleutel_sets") : L("lcl_cil_cilinder_sets"),
showAll: showall,
buttons: addButton
});
// Kolommen
rst.addColumn(new Column({caption: L("lcl_sle_code"), content: "ins_srtdeel_code"}));
rst.addColumn(new Column({caption: L("lcl_sle_sleutel_omsch"), content: "ins_srtdeel_omschrijving"}));
rst.addColumn(new Column({caption: L("lcl_sle_toegang"), content: "plaats"})); // Op welke ruimten/terreinen hebben de sleutels of cilinders toegang toe
rst.addColumn(new Column({caption: L("lcl_count"), content: "aantal", datatype: "integer"}));
rst.addColumn(new Column({caption: L("lcl_sle_lent_out"), content: "aantal_uitgegeven", datatype: "integer"}));
rst.addColumn(new Column({caption: L("lcl_sle_available"), content: fnBeschikbaar, datatype: "integer"}));
// Acties
rst.addAction({ action: "sleEdit", caption: L("lcl_change"), isDefault: true});
if (S("sle_cil_koppelen") == 1)
rst.addAction({ action: "sleSleutelCilinder", caption: L("lcl_sle_koppelen"), enabler: "eKoppelen", multi: true, multiOnce: true });
var count = rst.processResultset();
%>
</body>
</html>
<%
}
%>