DENB#39784 Mobile voorzieningen reserveren toegevoegd, draft

svn path=/Website/trunk/; revision=34617
This commit is contained in:
2017-07-13 14:09:45 +00:00
parent c97bfc76ae
commit f659ad45b0
6 changed files with 823 additions and 190 deletions

204
APPL/PDA/plaatsselector.asp Normal file
View File

@@ -0,0 +1,204 @@
<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: plaatsselector.asp
Description: /
Parameters: startlevel: begin met kiezen vanaf startlevel
eindlevel: begin met kiezen tot en met eindlevel
roo_key: ruimte_key
flr_key: verdieping_key
bld_key: gebouw_key
loc_key: locatie_key
filtCode: filterCode (bijvoorbeeld 'RESB')
act_key: activity_key voor scoping
return_to: url waar naar terug te keren na plaatsselectie (incl querystring)
autlevel: autlevel
Context: /
Note: /
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../Shared/Suggest/plaatsFilter.inc" -->
<%
var urole = "fe"; // getQParamSafe("urole", "fe");
var ruimte_key = getQParamInt("roo_key", null);
var verdieping_key = getQParamInt("flr_key", null);
var gebouw_key = getQParamInt("bld_key", null);
var locatie_key = getQParamInt("loc_key", null);
var filtCode = getQParam("filtCode", "").toUpperCase();
var act_key = getQParamInt("act_key", -1);
var startlevel = getQParamInt("startlevel", 2); // Default: Locatie
var eindlevel = getQParamInt("eindlevel", 5); // Default: Ruimte
var qrc = getQParamInt("qrc", 0) != 0;
var return_to = getQParam("return_to", "");
var prs_obj = new Perslid(user_key);
var autlevel = getQParamInt("autlevel", 9);
var transitParam = buildTransitParam(["startlevel", "eindlevel", "autlevel", "filtCode", "return_to", "loc_key", "bld_key", "flr_key", "roo_key", "act_key"]);
var extTransitParam = buildTransitParam(["loc_key", "bld_key", "flr_key", "roo_key"]);
var filtParams = { "act_key" : act_key };
var alg_level = 2; // default startlevel
if (ruimte_key && ruimte_key > 0)
alg_level = 6; // Werkplek -> Unsupported
else if (verdieping_key && verdieping_key > 0)
alg_level = 5; // Ruimte
else if (gebouw_key && gebouw_key > 0)
alg_level = 4; // Verdieping
else if (locatie_key && locatie_key > 0)
alg_level = 3; // Gebouw
if (alg_level < startlevel)
alg_level = startlevel;
if (alg_level > eindlevel)
{
Server.Transfer(return_to);
}
else if (alg_level <= eindlevel && alg_level >= startlevel)
{
var plaats_key, subject, prefix, field, view;
var initKey = -1;
switch(alg_level) {
case 6: plaats_key = "wrk_key"; subject = L("lcl_select_werkplek"); break;
case 5: plaats_key = "roo_key"; subject = L("lcl_select_ruimte"); initKey = prs_obj.alg_ruimte_key(); prefix = "r"; field = "alg_ruimte_key"; view = "fac_v_my_rooms"; break;
case 4: plaats_key = "flr_key"; subject = L("lcl_select_verdieping"); initKey = prs_obj.alg_verdieping_key(); prefix = "v"; field = "alg_verdieping_key"; view = "fac_v_my_floors"; break;
case 3: plaats_key = "bld_key"; subject = L("lcl_select_gebouw"); initKey = prs_obj.alg_gebouw_key(); prefix = "g"; field = "alg_gebouw_key"; view = "fac_v_my_buildings"; break;
case 2: plaats_key = "loc_key"; subject = L("lcl_select_locatie"); initKey = prs_obj.alg_locatie_key(); prefix = "l"; field = "alg_locatie_key"; view = "fac_v_my_locations"; break;
case 1: plaats_key = "bld_key"; subject = L("lcl_select_district"); break;
case 0: plaats_key = "loc_key"; subject = L("lcl_select_regio"); break;
}
var filtClause, sql_p;
switch(alg_level) {
case 6: break;
case 5:
filtClause = getFiltClauseRuimte(filtCode, filtParams);
sql_p = "SELECT r.alg_ruimte_key roo_key"
+ ", r.alg_ruimte_nr || ' (' || r.alg_ruimte_omschrijving || ')' naam"
+ " FROM alg_v_aanwezigruimte r"
+ filtClause.from
+ " WHERE r.alg_verdieping_key = " + verdieping_key
+ filtClause.where;
break;
case 4:
filtClause = getFiltClauseVerdieping(filtCode, filtParams);
sql_p = "SELECT v.alg_verdieping_key flr_key"
+ ", v.alg_verdieping_omschrijving || ' (' || v.alg_verdieping_code || ')' naam"
+ " FROM alg_v_aanwezigverdieping v"
+ filtClause.from
+ " WHERE v.alg_gebouw_key = " + gebouw_key
+ filtClause.where;
break;
case 3:
filtClause = getFiltClauseGebouw(filtCode, filtParams);
sql_p = "SELECT g.alg_gebouw_key bld_key"
+ ", g.alg_gebouw_omschrijving || ' (' || g.alg_gebouw_code || ')' naam"
+ " FROM alg_v_aanweziggebouw g, alg_srtgebouw sg"
+ filtClause.from
+ " WHERE g.alg_locatie_key = " + locatie_key
+ " AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key"
+ filtClause.where;
break;
case 2:
filtClause = getFiltClauseLocatie(filtCode, filtParams);
sql_p = "SELECT l.alg_locatie_key loc_key"
+ ", " + S("alg_loc_string") + " naam"
+ ", alg_locatie_plaats"
+ " FROM alg_v_aanweziglocatie l"
+ filtClause.from
+ " WHERE 1 = 1"
+ filtClause.where;
break;
case 1: break;
case 0: break;
}
if (autlevel >= 2 && autlevel <= 5) // only supported so far
{
sql_p += " AND " + prefix + "." + field + " IN"
+ " (SELECT " + field
+ " FROM " + view
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + autlevel + ")";
}
sql_p += " ORDER BY 2";
var sql_count = "SELECT COUNT(*) count"
+ " FROM (" + sql_p + ")";
var oRs_count = Oracle.Execute(sql_count);
if (oRs_count("count").Value == 1)
{
oRs_count.Close();
var oRs_p = Oracle.Execute(sql_p);
var url = fnLink(oRs_p);
oRs_p.Close();
Response.Write("<script language=javascript>window.location.href = '"+url+"';</script>");
Response.End;
}
else
oRs_count.Close();
}
else
{
Response.Write("alg_level < startlevel...?"); // TODO
}
%>
<html>
<head>
<% FCLTMHeader.Generate({ title: subject }); %>
</head>
<body>
<%
PAGE_START({id: "page-plaats-"+alg_level});
HEADER({title: subject, back:!qrc, datatheme: (urole=='fe' ? jQFrontEndTheme : null) });
CONTENT_START();
function fnLink(oRs)
{
var alg_key = oRs(plaats_key).Value;
var plaatsParam = plaats_key + "=" + alg_key;
return (alg_level == eindlevel ?
return_to + "&" + plaatsParam + safe.jsstring(extTransitParam)
: "?" + plaatsParam + safe.jsstring(transitParam));
}
var plaats = new ResultsetTable({ sql: sql_p
, keyColumn: plaats_key
, initKey: initKey
, linkColumn: fnLink
, headerColumn: "naam"
// ? , extraFilterColumn: "mld_stdmelding_hint"
// ? , subheaderColumn: fncolSubHeader
, ID: "plaatstable"
, showAll: true
, emptySetString: L("lcl_empty")
});
plaats.processResultset();
CONTENT_END();
FOOTER();
PAGE_END();
%>
</body>
</html>

View File

@@ -143,18 +143,40 @@ else
// Verplicht:
var res_van = getQParamDate("date_from", null);
var res_tot = getQParamDate("date_to", null);
// 1 van beide
var ruimtekey = getQParamInt("res_ruimte_key", null);
if (!res_van && !ruimtekey)
var alg_ruimtekey = getQParamInt("roo_key", null);
if (!res_van && !ruimtekey && !alg_ruimtekey)
{
Server.Transfer("reservering_new.asp"); // Ga maar eerst datum kiezen
}
else if (alg_ruimtekey) // Voorziening reservering
{
var rsv = { loc_key: getQParamInt("loc_key", -1)
, bld_key: getQParamInt("bld_key", -1)
, flr_key: getQParamInt("flr_key", -1)
, act_key: getQParamInt("act_key", -1)
, ab_mode: getQParamInt("cvab", -1)
, res_deel_key: getQParamInt("res_deel", -1)
, kostenklant: S("kosten_klant_default") == 1
, account: -1
, status_fo: S("res_default_fo_status_key")
, alg_ruimtekey : alg_ruimtekey
, ruimte_van: res_van
, ruimte_tot: res_tot
, bezoekers: getQParamInt("bez_cnt", 0)
, verwijderd: false
};
}
else
{
var sql = "SELECT alg_ruimte_key FROM res_alg_ruimte WHERE res_ruimte_key = " + ruimtekey;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
var alg_ruimtekey = oRs("alg_ruimte_key").Value;
oRs.CLose();
alg_ruimtekey = oRs("alg_ruimte_key").Value;
oRs.Close();
var rri = res.res_ruimte_info(ruimtekey);
@@ -213,30 +235,30 @@ else
rsv.opstel_key = oRs("res_ruimte_opstel_key").value;
oRs.Close();
//
var sql = "SELECT rsa.res_srtactiviteit_metomschr"
+ " , rsa.res_srtactiviteit_metopmerk"
+ " , rsa.res_srtactiviteit_metaantal"
+ " , ra.res_activiteit_omsverplicht"
+ " , " + lcl.xsqla("ra.res_activiteit_omschrijving", "ra.res_activiteit_key")
+ " FROM res_srtactiviteit rsa"
+ " , res_activiteit ra"
+ " WHERE ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key"
+ " AND ra.res_activiteit_key = " + rsv.act_key;
var oRs = Oracle.Execute(sql);
rsv.toonOms = oRs("res_srtactiviteit_metomschr").value || 0;
rsv.toonOpm = oRs("res_srtactiviteit_metopmerk").value || 0;
rsv.toonBez = oRs("res_srtactiviteit_metaantal").value || 0;
rsv.reqOms = oRs("res_activiteit_omsverplicht").value || 0;
rsv.activity = oRs("res_activiteit_omschrijving").value;
}
var sql = "SELECT rsa.res_srtactiviteit_metomschr"
+ " , rsa.res_srtactiviteit_metopmerk"
+ " , rsa.res_srtactiviteit_metaantal"
+ " , ra.res_activiteit_omsverplicht"
+ " , " + lcl.xsqla("ra.res_activiteit_omschrijving", "ra.res_activiteit_key")
+ " FROM res_srtactiviteit rsa"
+ " , res_activiteit ra"
+ " WHERE ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key"
+ " AND ra.res_activiteit_key = " + rsv.act_key;
var oRs = Oracle.Execute(sql);
rsv.toonOms = oRs("res_srtactiviteit_metomschr").value || 0;
rsv.toonOpm = oRs("res_srtactiviteit_metopmerk").value || 0;
rsv.toonBez = oRs("res_srtactiviteit_metaantal").value || 0;
rsv.reqOms = oRs("res_activiteit_omsverplicht").value || 0;
rsv.activity = oRs("res_activiteit_omschrijving").value;
rsv.flex_defaults = {};
var flex_defaults = getQParam("flex_defaults", "").split("&"); //bsn=12345678&plaats=Enschede&postcode=1234AB
for (var i in flex_defaults)
{
var nm = flex_defaults[i].split("=")[0].toLowerCase();
var val = flex_defaults[i].split("=")[1];
rsv.flex_defaults[nm] = val;
}
rsv.flex_defaults = {};
var flex_defaults = getQParam("flex_defaults", "").split("&"); //bsn=12345678&plaats=Enschede&postcode=1234AB
for (var i in flex_defaults)
{
var nm = flex_defaults[i].split("=")[0].toLowerCase();
var val = flex_defaults[i].split("=")[1];
rsv.flex_defaults[nm] = val;
}
}
var subject = rsv_ruimte_key > -1 ? rsv.activity + " " + rsv.reservering_key + "/" + rsv.ruimte_volgnr
@@ -262,6 +284,10 @@ if (rsv.restype == "CV")
last_minute = false;
fe_lastminute = (last_minute); // urole == "fe" geldt voor mobile al.
}
else // Non-existing CV-reservation
{
var newCVRes = true;
}
} // restype = "CV"
// mag de gebruiker bezoekers toevoegen?
@@ -394,7 +420,7 @@ if (rsv.verwijderd)
else
{
%>
<form name="res" id="res" action="../res/res_edit_rsv_ruimte_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>&urole=fe" method="post">
<form name="res" id="res" action="../res/res_edit_rsv_ruimte_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key + (rsv.res_deel_key > 0 ? "&res_deel_key=" + rsv.res_deel_key : "")%>&urole=fe" method="post">
<input type="hidden" name="rsv_ruimte_key" value="<%=rsv_ruimte_key%>">
<input type="hidden" name="restype" id="restype" value="<%=rsv.restype%>">
<input type="hidden" name="sel_activity" id="sel_activity" value="<%=rsv.act_key%>">
@@ -412,9 +438,39 @@ else
if (rsv_ruimte_key == -1)
{ // Nieuw. Datum en tijd heb je al in vorige schermen gekozen
BLOCK_START({collapsed: true, title: safe.html(rsv.activity) });
ROFIELD("fld", L("lcl_place") , rsv.ruimtenr.replace(/\n/,"<br>"));
ROFIELD("fld", L("lcl_date"), toDateTimeString(rsv.ruimte_van) + "-" + toTimeString(rsv.ruimte_tot));
BLOCK_START({collapsed: !newCVRes, title: rsv.activity });
if (newCVRes)
{
%>
<input type="hidden" name="locatiekey" id="locatiekey" value="<%=rsv.loc_key%>">
<input type="hidden" name="ruimtekey" id="ruimtekey" value="<%=rsv.alg_ruimtekey%>">
<input type="hidden" name="ab_mode" id="ab_mode" value="<%=rsv.ab_mode%>">
<input type="hidden" name="ab_mode_filtcode" id="ab_mode_filtcode" value="<%=(rsv.ab_mode & 1 ? "RESB" : "RESA")%>">
<%
// Voorzieningsreservering (geen catering)
sql_cv = "SELECT res_deel_omschrijving "
+ " FROM res_v_aanwezigdeel"
+ " WHERE res_deel_key = " + rsv.res_deel_key;
var oRs_cv = Oracle.Execute(sql_cv);
ROFIELD("fld", L("lcl_res_reserved_objects"), oRs_cv("res_deel_omschrijving").Value, {suppressEmpty: true});
oRs_cv.Close();
// Voorzieningsreservering (geen catering)
sql_roo = "SELECT alg_plaatsaanduiding || ' (' || alg_onroerendgoed_omschrijving || ')' plaats"
+ " FROM alg_v_allonrgoed_gegevens"
+ " WHERE alg_type = 'R'"
+ " AND alg_onroerendgoed_keys = " + alg_ruimtekey;
var oRs_roo = Oracle.Execute(sql_roo);
ROFIELD("fld", (rsv.ab_mode & 1 ? L("lcl_res_bezorgen_fixed") : L("lcl_res_afhalen_fixed")), oRs_roo("plaats").Value);
oRs_roo.Close();
}
else
ROFIELD("fld", L("lcl_place") , rsv.ruimtenr.replace(/\n/,"<br>"));
var sameDay = toDateString(rsv.ruimte_van, true) == toDateString(rsv.ruimte_tot, true);
ROFIELD("fld", L("lcl_date"), toDateTimeString(rsv.ruimte_van) + " - " + (sameDay ? toTimeString(rsv.ruimte_tot) : toDateTimeString(rsv.ruimte_tot)));
%>
<input type="hidden" name="person" id="person" value="<%=user_key%>">
<input type="hidden" name="personH" id="personH" value="<%=user_key%>">
@@ -564,7 +620,7 @@ else
}
);
CONTROLGROUP_START()
CONTROLGROUP_START();
if (this_res.canChange || rsv_ruimte_key == -1)
BUTTON((rsv_ruimte_key > -1 ? L("lcl_submit") : L("lcl_newsubmit")), {click: "res_submit()", dataicon: "refresh"});
if (this_res.canChange && rsv_ruimte_key > -1)
@@ -584,7 +640,7 @@ else
}
}
CONTROLGROUP_END()
CONTROLGROUP_END();
IFACE.FORM_END();
%>
</form>

View File

@@ -34,18 +34,32 @@ FCLTHeader.Requires({ js: ["jquery.timepicker-table.js"],
var urole = "fe";
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var restype = (getQParam("restype", "R").toUpperCase() == "CV" ? "CV" : "R"); // Default gaan we een ruimte reserveren
var date_from = getQParamDate("date_from", null);
var date_to = getQParamDate("date_to", null);
var act_key = getQParamInt("act_key", -1);
var disc_key = getQParamInt("disc", -1);
var res_deel_key = getQParamInt("res_deel", -1);
var bez_cnt = getQParamInt("bez_cnt", null);
var loc_key = getQParamInt("loc_key", -1);
var res_ruimte_key = getQParamInt("res_ruimte_key",-1);
var bld_key = getQParamInt("bld_key", -1);
var flr_key = getQParamInt("flr_key", -1);
var roo_key = getQParamInt("roo_key", -1);
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
var qrc = getQParamInt("qrc", 0) != 0;
autfunction = ("WEB_RESUSE");
var cvab = S("res_default_cvab_mode");
var ab_mode = getQParamInt("cvab", -1);
autfunction = "WEB_RESUSE";
var authparams = user.checkAutorisation(autfunction);
var transitParam = buildTransitParam(["act_key", "date_from", "date_to", "bez_cnt", "loc_key", "loc_plaats", "res_ruimte_key"]);
var transitParam = buildTransitParam(["restype", "act_key", "date_from", "date_to", "bez_cnt", "cvab",
"loc_key", "bld_key", "flr_key", "roo_key", "disc", "res_deel", "loc_plaats", "res_ruimte_key"]);
var transitParamExtern = buildTransitParam(["date_from", "date_to", "bez_cnt", "loc_plaats"]);
var sql = "SELECT COALESCE(MIN(fac_gebruiker_alg_level_write), 9) writelevel"
@@ -61,21 +75,24 @@ var subject = L("lcl_mobile_newreservering");
var curPage = 0;
if (rsv_ruimte_key == -1)
{
if (!date_from && res_ruimte_key==-1)
if (act_key < 0)
{
curPage = 1;
// geen parameters aanwezig.
var srtact_key = getQParamInt("srtact_key", 1); // Vooralsnog alleen ruimte reserveringen.
var sql = "SELECT res_srtactiviteit_metaantal"
+ " FROM res_srtactiviteit"
+ " WHERE res_srtactiviteit_key = " + srtact_key;
var oRs = Oracle.Execute(sql);
var toonBez = oRs("res_srtactiviteit_metaantal").value;
oRs.Close();
subject = L("lcl_ins_controle_choose_srt");
var srtact_key = getQParamInt("srtact_key", -1);
if (srtact_key > 0)
{
// Bepaal restype uit srtactiviteit.
var sql = "SELECT res_srtactiviteit_soort"
+ " FROM res_srtactiviteit"
+ " WHERE res_srtactiviteit_key = " + srtact_key;
var oRs = Oracle.Execute(sql);
if (!oRs.EoF)
restype = oRs("res_srtactiviteit_soort").value == 0 ? "R" : "CV"; // srtact_key 'sterker' dan restype
oRs.Close();
}
// default begin en eindtijd
var res_van = new Date().setFloatHours(S("res_t1") + 24, S("res_h")); // default morgen
var res_tot = res_van.addFloatHours(S("res_dur"), S("res_h"));
// Activiteiten
var sql_a = "SELECT a.res_activiteit_key"
+ " , " + "CASE WHEN sa.res_srtactiviteit_prefix IS NULL"
@@ -90,8 +107,9 @@ if (rsv_ruimte_key == -1)
+ " , res_srtactiviteit sa"
+ " WHERE res_activiteit_verwijder IS NULL"
+ " AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ " AND sa.res_srtactiviteit_key = " + srtact_key
+ " AND sa.res_srtactiviteit_soort = 0" // restype = "R"
+ (srtact_key > 0
? " AND sa.res_srtactiviteit_key = " + srtact_key
: " AND sa.res_srtactiviteit_soort = " + (restype == "R" ? "0" : "1"))
+ " AND EXISTS (SELECT res_activiteit_key"
+ " FROM res_activiteitdiscipline rad,"
+ " ins_tab_discipline disc"
@@ -104,13 +122,39 @@ if (rsv_ruimte_key == -1)
+ " AND rad.res_discipline_key = disc.ins_discipline_key"
+ " AND rad.res_activiteit_key = a.res_activiteit_key"
+ " AND ins_discipline_verwijder IS NULL"
+ " AND ins_discipline_min_level = 3" // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte
+ " AND ins_discipline_min_level = " + (restype == "R" ? "3" : "1") // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte
+ " )"
+ " ORDER BY res_activiteit_volgnr"
+ " , sa.res_srtactiviteit_prefix"
+ " , UPPER(" + lcl.xsql('a.res_activiteit_omschrijving', 'a.res_activiteit_key') +")";
}
else if (!date_from)
{
// act_key bekend
curPage = 2;
var sql_b = "SELECT sa.res_srtactiviteit_metaantal"
+ " , ra.res_activiteit_duur"
+ " , ra.res_activiteit_aantalverplicht"
+ " FROM res_activiteit ra"
+ " , res_srtactiviteit sa"
+ " WHERE ra.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ " AND ra.res_activiteit_key = " + act_key;
var oRs = Oracle.Execute(sql_b);
var toonBez = oRs("res_srtactiviteit_metaantal").Value;
var res_duur = oRs("res_activiteit_duur").Value;
var res_verp = oRs("res_activiteit_aantalverplicht").Value;
oRs.Close();
// default begin en eindtijd
var res_van = new Date().setFloatHours(S("res_t1") + 24, S("res_h")); // default morgen
var res_tot = res_van.addFloatHours(S("res_dur"), S("res_h"));
// Locaties (waar reserveerbare ruimten zijn binnen de scope van de user)
var params = {};
var filtClause = getFiltClauseLocatie("RES");
var sql_l = "SELECT l.alg_locatie_key"
+ ", " + S("alg_loc_string") + " naam"
@@ -120,15 +164,15 @@ if (rsv_ruimte_key == -1)
+ " WHERE 1=1"
+ filtClause.where
+ " ORDER BY 2";
};
if (date_from && res_ruimte_key==-1)
}
else if (ab_mode < 0) // Ruimte Reservering
{
curPage = 2;
curPage = 3;
// verplicht: date_from: begin van reservering
// loc_key: locatie key
// act_key: activiteit
// optioneel: bez_cnt: aantal bezoekers
// loc_key: locatie key
// res_tot: einde van reservering (niet meerdaags)
var params = { loc: loc_key,
@@ -142,8 +186,121 @@ if (rsv_ruimte_key == -1)
authparams: user.checkAutorisation("WEB_RESUSE", null, null, true), // urole == "fe" en pessimistisch.
ruimtecat: []
};
};
};
}
else if (res_deel_key < 0) // Voorziening Reservering
{
curPage = 4;
subject = "Kies Objecten"; // TODO
var sql_d = "SELECT dis.ins_discipline_key, "
+ " " + lcl.xsqla('dis.ins_discipline_omschrijving','dis.ins_discipline_key')
+ " FROM res_v_aanwezigdiscipline dis"
+ " WHERE ins_discipline_min_level = 1"
+ " AND dis.ins_discipline_key IN("
+ " SELECT g.ins_discipline_key FROM fac_v_webgebruiker g, fac_functie f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND g.fac_gebruiker_alg_level_write < 9"
+ " AND g.fac_gebruiker_prs_level_write < 9"
+ " AND g.prs_perslid_key = " + user_key
+ " )"
+ " AND dis.ins_discipline_key IN"
+ " (SELECT res_discipline_key" /* DISTINCT */
+ " FROM res_deel r, ins_deel d"
+ " WHERE r.res_deel_verwijder IS NULL"
+ " AND r.res_ins_deel_key = d.ins_deel_key)"
+ " AND EXISTS (SELECT res_activiteit_key"
+ " FROM res_activiteitdiscipline rad"
+ " WHERE rad.res_discipline_key = dis.ins_discipline_key"
+ " AND rad.res_activiteit_key = " + act_key
+ " )";
if (disc_key > 0 && res_deel_key < 0) sql_d = sql_d + " AND dis.ins_discipline_key = " + disc_key;
if (S("vis_parking_key") != -1) sql_d = sql_d + " AND dis.ins_discipline_key != " + S("vis_parking_key");
if (S("res_fe_discs_only_in_res") != -1 && !fronto && !backo && restype == 'CV')
sql_d = sql_d + " AND dis.ins_discipline_key NOT IN (" + S("res_fe_discs_only_in_res") + ") ";
sql_d = sql_d + " ORDER BY ins_discipline_volgnr";
// Starting res_deel sql
var select_fields = " r.res_deel_key"
+ ", " + lcl.xsqla('r.res_deel_opmerking', 'r.res_deel_key')
+ ", " + lcl.xsql('r.res_deel_omschrijving', 'r.res_deel_key')
+ " || CASE"
+ " WHEN (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > SYSDATE)"
+ " THEN ''"
+ " ELSE " + safe.quoted_sql(L("lcl_inactive_data_suffix"))
+ " END res_deel_omschrijving"
+ ", COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) ins_alg_ruimte_key"
+ (ab_mode & 1 ?
""
: ", aogg.alg_plaatsaanduiding || ' (' || aogg.alg_onroerendgoed_omschrijving || ')' plaats"
)
+ ", disc.ins_discipline_key"
+ ", disc.ins_discipline_omschrijving"
// + ", r.res_deel_prijs"
+ ", r.res_deel_image"
// + ", " + lcl.xsqla('r.res_deel_eenheid', 'r.res_deel_key')
// + ", res_disc_params_preposttime"
+ ", d.ins_deel_key";
var sql_r = getScopedResDeelSql({ select_fields : select_fields,
extra_from : "(" + sql_d + ") disc" + (ab_mode & 1 ? "" : ", alg_v_allonrgoed_gegevens aogg"),
loc_key : loc_key,
geb_key : bld_key,
ver_key : flr_key,
rui_key : roo_key,
autfunction : autfunction,
res_tot : date_to
});
sql_r += " AND r.res_discipline_key = disc.ins_discipline_key";
if (!(ab_mode & 1)) // Voorziening afhalen
sql_r += " AND d.ins_alg_locatie_key = " + loc_key
+ " AND aogg.alg_onroerendgoed_keys = COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)";
sql_r += " GROUP BY "
+ " r.res_deel_key"
+ ", " + lcl.xsql('r.res_deel_opmerking', 'r.res_deel_key')
+ ", " + lcl.xsql('r.res_deel_omschrijving', 'r.res_deel_key')
+ ", r.res_deel_vervaldatum"
+ ", COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)"
+ (ab_mode & 1 ?
""
: ", aogg.alg_plaatsaanduiding || ' (' || aogg.alg_onroerendgoed_omschrijving || ')'"
)
+ ", disc.ins_discipline_key"
+ ", disc.ins_discipline_omschrijving"
// + ", r.res_deel_prijs"
+ ", r.res_deel_image"
// + ", " + lcl.xsql('r.res_deel_eenheid', 'r.res_deel_key')
// + ", res_disc_params_preposttime"
+ ", d.ins_deel_key"
+ " ORDER BY 6, 3 ";
var count = 0;
var oRs_count = Oracle.Execute(sql_r);
if (!oRs_count.EoF)
{
count++;
var only_res_deel_key = oRs_count("res_deel_key").Value;
var alg_ruimte_key = oRs_count("ins_alg_ruimte_key").Value;
oRs_count.moveNext();
if (!oRs_count.EoF)
{
count++;
only_res_deel_key = -1;
alg_ruimte_key = -1;
}
}
oRs_count.Close();
}
}
// Ik wil een reservering maken. Ik zie het volgende voor me:
//
@@ -174,110 +331,121 @@ if (rsv_ruimte_key == -1)
%>
<html>
<head>
<% FCLTMHeader.Generate({title: subject }); %>
<script type="text/javascript">
<% FCLTMHeader.Generate({title: subject });
function fn_res_next1()
{
if (!validateForm("res_new_1"))
return false;
if (curPage == 2)
{ %>
var datum = $("#date_from").val();
var activiteit = $("#act_key").val();
var bezoekers = $("#bez_cnt").val();
var locatie = $("#loc_key").val();
var loc_plaats = $("#loc_plaats").val();
var purl = "?rsv_ruimte_key=-1"
+ "&date_from=" + datum
+ "&date_to=" + $("#date_to").val()
+ "&act_key=" + activiteit
+ (locatie > 0 ? "&loc_key=" + locatie : "")
+ (loc_plaats ? "&loc_plaats=" + escape(loc_plaats) : "")
+ (bezoekers ? "&bez_cnt=" + bezoekers : "")
+ "<%=safe.jsstring(transitParam)%>";
<script type="text/javascript">
window.location.href = "reservering_new.asp" + purl;
}
function autosetEindtijd()
{
var opt = $("#act_key").find("option:selected");
// De extraParamValue is opgeslagen als text. De res_activiteit_duur is een float met mogelijk een komma i.p.v. een punt als decemaal scheidingsteken.
var res_duur = parseFloat((String(opt[0].getAttribute("res_activiteit_duur"))).replace(',','.'));
if (res_duur)
{
var startDate = new Date(parseInt($('#date_from').val()));
var endDate = new Date(parseInt($('#date_to').val()));
var estEndDate = startDate.addFloatHours(res_duur, <%=safe.jsfloat(S("res_h"))%>);
if (!isNaN(startDate) && endDate.getTime() != estEndDate.getTime())
function fn_res_next1()
{
$("#show_date_to").datepicker('setDate',new Date(estEndDate));
$("#date_to").val(estEndDate.getTime());
$("#time_from_date_to").val(toTimeString(estEndDate)).css("color", "red");
if (!validateForm("res_new_1"))
return false;
var activiteit = <%=act_key%>;
var datum = $("#date_from").val();
var bezoekers = $("#bez_cnt").val();
<% if (!(cvab & 2))
{
%>var cvab = $("#cvab_mode").val() || -1; <%
}
else if (restype == "CV")
{
%>var cvab = <%= cvab %>; <%
} %>
var purl = "?rsv_ruimte_key=-1"
+ "&date_from=" + datum
+ "&date_to=" + $("#date_to").val()
+ (typeof cvab != 'undefined' && (cvab % 1) === 0 ? "&cvab=" + cvab : "")
+ (bezoekers ? "&bez_cnt=" + bezoekers : "")
+ "<%=safe.jsstring(transitParam)%>";
purl = "plaatsselector.asp"
+ "?act_key=" + activiteit
+ "&filtCode="+<%=(restype == "R" ? "\"RES\"" : "(cvab & 1 ? \"RESB\" : \"RESA\")")%>
+ "&autlevel=<%=autlevel%>"
+ "&eindlevel="+<%=(restype == "R" ? "\"2\"" : "(cvab & 1 ? \"5\" : \"2\")")%>
+ "&return_to=<%=safe.url("reservering_new.asp")%>" + encodeURIComponent(purl);
window.location.href = purl;
}
}
}
function checkVeldenVerplicht()
{
// Afhankelijk van de geselecteerde waarde voor activiteit
// moet het veld aantalbezoekers verplicht worden gemaakt.
var opt = $("#act_key").find("option:selected");
var bez_verplicht = opt[0].getAttribute("res_activiteit_aantalverplicht");
$("#bez_cnt").toggleClass("required", bez_verplicht == 1);
}
function autosetEindtijd()
{
var opt = $("#act_key").find("option:selected");
// De extraParamValue is opgeslagen als text. De res_activiteit_duur is een float met mogelijk een komma i.p.v. een punt als decemaal scheidingsteken.
var res_duur = parseFloat((String(<%=res_duur%>)).replace(',','.'));
function OnChangeActivity()
{
checkVeldenVerplicht();
autosetEindtijd();
}
if (res_duur)
{
var startDate = new Date(parseInt($('#date_from').val()));
var endDate = new Date(parseInt($('#date_to').val()));
var estEndDate = startDate.addFloatHours(res_duur, <%=safe.jsfloat(S("res_h"))%>);
if (!isNaN(startDate) && endDate.getTime() != estEndDate.getTime())
{
$("#show_date_to").datepicker('setDate',new Date(estEndDate));
$("#date_to").val(estEndDate.getTime());
$("#time_from_date_to").val(toTimeString(estEndDate)).css("color", "red");
}
}
}
function changeLoc(elm)
{
var loc_key = $(elm).val();
if (loc_key > 0)
$('#loc_plaats').val($(elm).find('option:selected').attr('alg_locatie_plaats')).textinput('disable');
else
$('#loc_plaats').textinput('enable');
}
function checkVeldenVerplicht()
{
// Afhankelijk van de geselecteerde waarde voor activiteit
// moet het veld aantalbezoekers verplicht worden gemaakt.
var bez_verplicht = "<%=res_verp%>";
$("#bez_cnt").toggleClass("required", bez_verplicht == 1);
}
function updateCvab(cvab)
{
$("#cvab_mode").val(cvab);
}
</script>
<% } %>
</script>
</head>
<body>
<div>
<%
if (curPage == 0)
{
PAGE_START({id: "page-0-"+rsv_ruimte_key});
HEADER({title: L("lcl_mobile_selectdatum"), back:!qrc, datatheme: (urole=='fe' ? jQFrontEndTheme : null) });
CONTENT_START();
ROFIELD("fld", "AjAi", "Verkeerde pagina");
CONTENT_END();
FOOTER();
PAGE_END();
}
if (curPage == 1)
{
PAGE_START({id: "page-1-"+rsv_ruimte_key});
PAGE_START({id: "page-"+curPage});
HEADER({title: subject, back:!qrc, datatheme: (urole=='fe' ? jQFrontEndTheme : null) });
CONTENT_START();
if (curPage == 0)
{
ROFIELD("fld", "AiAi", "Verkeerde pagina");
}
if (curPage == 1)
{
function fnSubmit(oRs)
{
return "?act_key=" + oRs("res_activiteit_key").Value + safe.jsstring(transitParam);
}
var rst = new ResultsetTable({ sql: sql_a
, keyColumn: "res_activiteit_key"
, linkColumn: fnSubmit
, headerColumn: "res_activiteit_omschrijving"
, ID: "acttable"
, showAll: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
}
if (curPage == 2)
{
%>
<form name="res_new_1" id="res_new_1">
<%
FCLTselector( "act_key",
sql_a,
{ label: L("lcl_activity"),
emptyOption: L("lcl_res_select_activity"),
extraParamValue: "res_activiteit_duur,res_activiteit_aantalverplicht",
required: true,
mobile: true,
onChange: "OnChangeActivity()"
}
);
FCLTcalendar("date_from",
{ label : L("lcl_from"),
datum: res_van,
@@ -294,6 +462,7 @@ if (rsv_ruimte_key == -1)
onChange : "autosetEindtijd()"
}
);
FCLTcalendar("date_to",
{ label : L("lcl_to"),
datum: res_tot,
@@ -302,7 +471,7 @@ if (rsv_ruimte_key == -1)
timeStep: S("res_h") * 60,
startTime: S("res_t1"),
endTime: S("res_t2"),
hidden: true, // Meerdaags ruimte ondersteunen we nog niet echt
hidden: restype == "R", // Meerdaags ruimte ondersteunen we nog niet echt
required: true,
volgnr: 2,
mobile: true
@@ -312,43 +481,32 @@ if (rsv_ruimte_key == -1)
if (toonBez)
RWFIELD("bez_cnt", L("lcl_visitors") , bez_cnt, {datatype: "number", required: false});
var loc_key = user.alg_locatie_key( { withcurrent:true });
var plaats = "";
if (loc_key > 0)
plaats = new Locatie(loc_key).alg_locatie_plaats();
var anyremote = res.anyremotes();
FCLTselector( "loc_key",
sql_l,
{ initKey: loc_key,
emptyOption: anyremote?L("lcl_shared_other"):null,
label: L("lcl_location"),
initEmpty: true,
mobile:true,
extraParamValue: "alg_locatie_plaats",
onChange: "changeLoc(this)"
}
);
if (anyremote)
RWFIELD("loc_plaats", "" , plaats, { html: 'disabled=1' });
if (restype == "CV")
{
if (cvab & 2) // dan vast
{ %>
<label><%=(cvab & 1)? L("lcl_res_bezorgen") : L("lcl_res_afhalen")%></label>
<% }
else // toggle bezorg/afhaal
{
CONTROLGROUP_START({ horizontal: true }); %>
<input type="radio" name="ab_mode" id="cvab-a" value="0" onChange="updateCvab(0)" <%=!(cvab & 1)? "checked" : ""%>>
<label for="cvab-a"><%=L("lcl_res_afhalen")%></label>
<input type="radio" name="ab_mode" id="cvab-b" value="1" onChange="updateCvab(1)" <%=cvab & 1? "checked" : ""%>>
<label for="cvab-b"><%=L("lcl_res_bezorgen")%></label>
<% CONTROLGROUP_END();
} %>
<input type="hidden" id="cvab_mode" name="cvab_mode" value="<%=cvab%>">
<% }
CONTROLGROUP_START();
BUTTON(L("lcl_next"), {click: "fn_res_next1()", dataicon: "arrow-r", dataajax: "false"});
CONTROLGROUP_END();
%>
</form>
<%
CONTENT_END();
FOOTER();
PAGE_END();
}
if (curPage == 2) // Lijst met geschikte ruimtes
<%}
if (curPage == 3) // Lijst met geschikte ruimtes
{
PAGE_START({id: "page-2-"+rsv_ruimte_key});
HEADER({title: subject, back:!qrc, datatheme: (urole=='fe' ? jQFrontEndTheme : null) });
CONTENT_START();
function fnDataFilter(oRs)
{
@@ -385,9 +543,7 @@ if (rsv_ruimte_key == -1)
+ "&res_ruimte_key=" + oRs.Fields("res_ruimte_key").Value
+ transitParam;
}
return nurl;
return nurl;
};
function fnDetail(oRs)
@@ -468,10 +624,9 @@ if (rsv_ruimte_key == -1)
}
}
var plan_rooms_info = res.plan_rooms_info(params);
var plan_bezet_info = res.plan_bezet_info(params);
set_will_fit(plan_rooms_info, plan_bezet_info, params)
set_will_fit(plan_rooms_info, plan_bezet_info, params);
var rst = new ResultsetTable({ dataset: plan_rooms_info
, fnDataFilter: fnDataFilter
@@ -487,10 +642,11 @@ if (rsv_ruimte_key == -1)
, noSearch: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
// En nu de externen
var autfunction = "WEB_RESUSE"; // TODO
var autfunction = "WEB_RESUSE";
// Overzicht externe ruimtes
var sql = res.getremotes_sql(autfunction);
var oRs = Oracle.Execute(sql);
@@ -544,12 +700,74 @@ if (rsv_ruimte_key == -1)
oRs.MoveNext();
}
oRs.close();
}
if (curPage == 4)
{
if (count == 0)
{
Response.Write(L("lcl_no_objects"));
}
else if (count == 1) // 1x res_deel available
{
var url = "reservering.asp?res_deel=" + only_res_deel_key
+ (ab_mode & 1 ? "" : "&roo_key=" + alg_ruimte_key) + transitParam;
Response.Write("<script language=javascript>window.location.href = '"+url+"';</script>");
}
else // count > 1 && multiple res_deel available
{
function fnResCV(oRs)
{
res_deel_key = oRs("res_deel_key").Value;
var alg_ruimte_key = oRs("ins_alg_ruimte_key").Value;
return "reservering.asp?res_deel=" + res_deel_key
+ (ab_mode & 1 ? "" : "&roo_key=" + alg_ruimte_key)
+ transitParam;
}
function fnResDeelIcon(oRs)
{
var icon = "";
if (oRs.Fields("res_deel_image").Value != null)
{
icon = oRs.Fields("res_deel_image").Value;
if (!icon.match(/^http/))
icon = safe.htmlattr(S("res_image_path") + "deel/" + icon);
}
return icon;
}
function fncolSubHeader(oRs)
{
var txt = "";
if (!(ab_mode & 1)) // afhalen
{
txt = "<div class='listbodytext'>" + L("lcl_res_afhalen_fixed") + ":</div>"
+ "<div class='listbodytext'>" + safe.html(oRs("plaats").Value) + "</div>";
}
return txt;
}
var rst = new ResultsetTable({ sql: sql_r
, keyColumn: "res_deel_key"
, linkColumn: fnResCV
, iconColumn: fnResDeelIcon
, dividerColumn: "ins_discipline_omschrijving"
, headerColumn: "res_deel_omschrijving"
// ? , extraFilterColumn: "mld_stdmelding_hint"
, subheaderColumn: fncolSubHeader
, ID: "restable"
, showAll: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
}
}
CONTENT_END();
FOOTER();
PAGE_END();
}
%>
</div>
</body>

View File

@@ -51,7 +51,7 @@ function __rsProcessResultset(processParams)
else
{
/*global*/isData = true;
oRs = new data_recordset( this.dataset );
var oRs = new data_recordset( this.dataset );
}
if (oRs == null || oRs.EOF)
@@ -71,6 +71,8 @@ function __rsProcessResultset(processParams)
html += "<ul data-role='listview' data-theme='b' data-inset='" + (this.inset? "true" : "false") + "' data-content-theme='d'>";
var cnt = 0;
var hasResults = false;
var initKeyDone = this.initKey == null;
for (cnt = 0; (cnt < (S("qp_maxrows_mobile")) || this.showAll ) &&
(cnt < S("qp_maxrows2")) &&
!oRs.EOF; cnt++)
@@ -80,6 +82,8 @@ function __rsProcessResultset(processParams)
oRs.MoveNext();
continue;
}
else if (!hasResults)
hasResults = true;
if (this.dividerColumn)
{
@@ -89,7 +93,15 @@ function __rsProcessResultset(processParams)
var lastDivider = safenextDivider;
}
lines.push(this.makeTableRow(oRs, cnt, false));
if (!initKeyDone && this.initKey && this.keyColumn && this.initKey == __fnContent(this.keyColumn)(oRs))
{
lines.unshift(this.makeTableRow(oRs, cnt, false));
initKeyDone = true;
}
else
lines.push(this.makeTableRow(oRs, cnt, false));
if (this.buildHistogram)
this.countHistogram(oRs);
@@ -144,6 +156,13 @@ function __rsProcessResultset(processParams)
}
}
if (cnt == 0 || !hasResults)
{
Response.Write("<p>" + this.emptySetString + "</p>");
return -1;
}
if (this.groupSelect == "")
html += "</ul>";
if (!this.groupColumn)

View File

@@ -1986,7 +1986,7 @@ function get_res_deel_sql (params)
+ " , res_disc_params rdp"
+ " , (SELECT aob.alg_regio_key, aob.alg_district_key, aob.alg_locatie_key, aob.alg_gebouw_key, aob.alg_verdieping_key, aob.alg_ruimte_key "
+ " FROM "
+ (params.res_ruimte_key > 0
+ ((params.res_ruimte_key || -1) > -1
? " res_v_aanwezigalg_ruimte rrr,"
: "")
+ " alg_v_onrgoed_boom aob"
@@ -2006,14 +2006,17 @@ function get_res_deel_sql (params)
+ ((params.ver_key || -1) > -1
? " AND aob.alg_verdieping_key=" + params.ver_key
: "")
+ ((params.res_ruimte_key > 0)
+ ((params.res_ruimte_key || -1) > -1
? " AND res_ruimte_key = " + params.res_ruimte_key + " AND rrr.alg_ruimte_key = aob.alg_ruimte_key"
: "")
+ ((params.alg_ruimte_key > 0)
+ ((params.alg_ruimte_key || -1) > -1
? " AND aob.alg_ruimte_key = " + params.alg_ruimte_key
: "")
+ " ) scope"
+ " , res_v_deelscope ds"
+ (((params.extra_from || "") != "")
? " , " + params.extra_from
: "")
+ " WHERE r.res_ins_deel_key = d.ins_deel_key"
+ " AND rdp.res_ins_discipline_key = r.res_discipline_key"
+ (params.sdisc
@@ -2030,12 +2033,12 @@ function get_res_deel_sql (params)
+ " OR ds.alg_ruimte_key = scope.alg_ruimte_key"
+ " OR ds.res_deel_alg_level = -1)"
+ " AND r.res_deel_key = ds.res_deel_key"
+ " AND (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > " + ora_date2 + ")"
+ " AND (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > " + ora_date2 + ")";
if (params.res_ruimte_key < 0 && (params.alg_ruimte_key < 0))
{ // Locatie scope of nog groter. Rechten ook meenemen
sql1 = discxalg3d (sql1,
"r.RES_DISCIPLINE_KEY",
"r.res_discipline_key",
"scope.alg_regio_key",
"scope.alg_district_key",
"scope.alg_locatie_key",
@@ -2049,6 +2052,137 @@ function get_res_deel_sql (params)
return sql1;
}
function getScopedResDeelSql(params)
{
params = params || {};
params.reg_key = params.reg_key || -1;
params.dist_key = params.dist_key || -1;
params.loc_key = params.loc_key || -1;
params.geb_key = params.geb_key || -1;
params.ver_key = params.ver_key || -1;
params.rui_key = params.rui_key || -1;
var alg_level;
if (params.rui_key > 0) alg_level = 5;
else if (params.ver_key > 0) alg_level = 4;
else if (params.geb_key > 0) alg_level = 3;
else if (params.loc_key > 0) alg_level = 2;
else if (params.dist_key > 0) alg_level = 1;
else if (params.reg_key > 0) alg_level = 0;
else alg_level = -1;
var res_tot = params.res_tot ? new Date(params.res_tot) : new Date();
var ora_date2 = res_tot.endToSQL();
// res_deel_alg scoping
var alg_filter;
switch (alg_level)
{
case 0: alg_filter = "alg_regio_key = " + params.reg_key; break;
case 1: alg_filter = "alg_district_key = " + params.dist_key; break;
case 2: alg_filter = "alg_locatie_key = " + params.loc_key; break;
case 3: alg_filter = "alg_gebouw_key = " + params.geb_key; break;
case 4: alg_filter = "alg_verdieping_key = " + params.ver_key; break;
case 5: alg_filter = "alg_ruimte_key = " + params.rui_key; break;
}
// res_deel without alg scope
var res_d = "SELECT ds.* "
+ " FROM res_v_deelscope ds "
+ " WHERE ds.res_deel_alg_level = -1 ";
// res_deel scoped for alg parents
if (alg_level > -1)
{
res_d += "UNION ALL "
+ "SELECT ds.* "
+ " FROM res_v_deelscope ds "
+ " , (SELECT * "
+ " FROM alg_v_onrgoed_boom aob "
+ " WHERE aob." + alg_filter
+ " AND ROWNUM = 1) aob ";
var res_d_arr = [];
if (alg_level >= 0)
{
res_d_arr.push("ds.alg_regio_key = aob.alg_regio_key");
if (alg_level >= 1)
{
res_d_arr.push("ds.alg_district_key = aob.alg_district_key");
if (alg_level >= 2)
{
res_d_arr.push("ds.alg_locatie_key = aob.alg_locatie_key");
if (alg_level >= 3)
{
res_d_arr.push("ds.alg_gebouw_key = aob.alg_gebouw_key");
if (alg_level >= 4)
{
res_d_arr.push("ds.alg_verdieping_key = aob.alg_verdieping_key");
if (alg_level >= 5)
{
res_d_arr.push("ds.alg_ruimte_key = aob.alg_ruimte_key");
}
}
}
}
}
}
res_d += " WHERE (" + res_d_arr.join(" OR ") + ")"
+ " AND aob." + alg_filter
+ " AND ds.res_deel_alg_level <= " + alg_level;
}
res_d_arr = [];
switch (alg_level)
{ // note: no break -> multi switch
case 0: res_d_arr.push("ds.res_deel_alg_level = 1 AND EXISTS (SELECT '' FROM alg_v_onrgoed_boom aob WHERE ds.alg_district_key = aob.alg_district_key AND aob." + alg_filter + ")");
case 1: res_d_arr.push("ds.res_deel_alg_level = 2 AND EXISTS (SELECT '' FROM alg_v_onrgoed_boom aob WHERE ds.alg_locatie_key = aob.alg_locatie_key AND aob." + alg_filter + ")");
case 2: res_d_arr.push("ds.res_deel_alg_level = 3 AND EXISTS (SELECT '' FROM alg_v_onrgoed_boom aob WHERE ds.alg_gebouw_key = aob.alg_gebouw_key AND aob." + alg_filter + ")");
case 3: res_d_arr.push("ds.res_deel_alg_level = 4 AND EXISTS (SELECT '' FROM alg_v_onrgoed_boom aob WHERE ds.alg_verdieping_key = aob.alg_verdieping_key AND aob." + alg_filter + ")");
case 4: res_d_arr.push("ds.res_deel_alg_level = 5 AND EXISTS (SELECT '' FROM alg_v_onrgoed_boom aob WHERE ds.alg_ruimte_key = aob.alg_ruimte_key AND aob." + alg_filter + ")");
}
// res_deel scoped for underlying alg level
if (alg_level > -1 && alg_level < 5) // no underlying alg_scope after 5
{
res_d += " UNION ALL "
+ "SELECT ds.* "
+ " FROM res_v_deelscope ds "
+ " WHERE ds.res_deel_alg_level > " + alg_level
+ " AND (" + res_d_arr.join(" OR ") + ")";
}
// end res_d (res_deel_alg scoping)
var sql1 = "SELECT " + params.select_fields
+ " FROM ins_deel d"
+ " , res_v_aanwezigdeel r"
+ " , res_disc_params rdp"
+ " , (" + res_d + ") resd"
+ (((params.extra_from || "") != "")
? " , " + params.extra_from
: "")
+ " WHERE r.res_ins_deel_key = d.ins_deel_key"
+ " AND r.res_deel_key = resd.res_deel_key"
+ " AND (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > " + ora_date2 + ")"
+ " AND rdp.res_ins_discipline_key = r.res_discipline_key"
+ " AND COALESCE(d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) IN ('R','T')"
+ (params.sdisc
? " AND r.res_discipline_key = " + params.sdisc
: "");
sql1 = discxalg3d (sql1,
"r.res_discipline_key",
"resd.alg_regio_key",
"scope.alg_district_key",
"scope.alg_locatie_key",
"scope.alg_gebouw_key",
"scope.alg_verdieping_key",
"scope.alg_ruimte_key",
params.autfunction,
typeof params.sdisc == "number"? params.sdisc : '');
return sql1;
}
function planbordTooltipShowing(res_rsv_ruimte_key)
{
var tonen = false;

View File

@@ -223,6 +223,7 @@ function getFiltClauseLocatie(pfiltcode, params)
function getFiltClauseGebouw(pfiltcode, params)
{
params = params || {};
var lfiltClause = {code: "", from: "", where: "", where_geb: "", where_ter: ""};
// Facilitair relevant hebben we vaker nodig
var lfiltClauseFAC = " AND sg.alg_srtgebouw_passief IS NULL"
@@ -313,6 +314,7 @@ function getFiltClauseGebouw(pfiltcode, params)
function getFiltClauseVerdieping(pfiltcode, params)
{
params = params || {};
var lfiltClause = {from: "", where: ""};
// Facilitair relevant hebben we vaker nodig
var lfiltClauseFAC = " AND EXISTS"
@@ -404,7 +406,7 @@ function getFiltClauseRuimte(pfiltcode, params)
+ ", alg_v_aanwezigverdieping av"
+ " WHERE ag.alg_gebouw_key = av.alg_gebouw_key"
+ " AND sg.alg_srtgebouw_passief IS NULL"
+ " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " AND (ag.alg_gebouw_vervaldatum IS NULL OR ag.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " AND sg.alg_srtgebouw_key(+) = ag.alg_srtgebouw_key"
+ " AND av.alg_verdieping_key = r.alg_verdieping_key)";
var lfiltClauseEXP = " AND EXISTS"