HSLE#36221 Invulscherm bij cateringbestelling alleen bepaalde ruimtetypen tonen.

svn path=/Website/trunk/; revision=33863
This commit is contained in:
Erik Groener
2017-05-16 09:26:47 +00:00
parent 503dff3104
commit 705c2a9973

View File

@@ -21,13 +21,6 @@
*/ %>
<%
// Deze slaan we bij RESA en RESB over.
var not_reserveerbare_ruimte = " AND NOT EXISTS "
+ " (SELECT '' "
+ " FROM res_alg_ruimte rar"
+ " WHERE res_alg_ruimte_verwijder IS NULL "
+ " AND rar.alg_ruimte_key = r.alg_ruimte_key)";
function getFiltClauseRegio(pfiltcode, params)
{
var lfiltClause = "";
@@ -147,18 +140,31 @@ function getFiltClauseLocatie(pfiltcode, params)
case "RESB": // Bezorgplaats voor voorzieningen, d.i. locatie met ruimtes zonder louter reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 2)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv, alg_gebouw gg "
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
lfiltClause.where = " AND l.alg_locatie_key IN"
+ " (SELECT b.alg_locatie_key"
+ " FROM alg_v_onrgoed_boom b"
+ " WHERE ( b.alg_locatie_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'L' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_gebouw_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'G' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_verdieping_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'V' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_ruimte_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'R' AND res_srtartikel_og_verwijder IS NULL)"
+ " )"
+ get_not_reserveerbare_ruimte("b")
+ " UNION"
+ " SELECT ll.alg_locatie_key"
+ " FROM alg_ruimte rr"
+ " , alg_verdieping vv"
+ " , alg_gebouw gg"
+ " , alg_locatie ll "
+ " WHERE rr.alg_ruimte_verwijder IS NULL "
+ " AND rr.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key "
+ " AND gg.alg_locatie_key = l.alg_locatie_key"
+ not_reserveerbare_ruimte
+ ")"
+ " AND gg.alg_locatie_key = ll.alg_locatie_key"
+ get_not_reserveerbare_ruimte("rr")
+ get_res_bezorgfilter(params, 2);
+ " )"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 2);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
case "RES": // Locatie met minstens reserveerbare ruimte, en FAC bovendien
@@ -192,7 +198,7 @@ function getFiltClauseLocatie(pfiltcode, params)
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ " UNION"
+ " SELECT g.alg_locatie_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v, alg_gebouw g"
@@ -202,7 +208,7 @@ function getFiltClauseLocatie(pfiltcode, params)
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ ")";
break;
@@ -259,17 +265,33 @@ function getFiltClauseGebouw(pfiltcode, params)
case "RESB": // Bezorgplaats voor voorzieningen, d.i. gebouwen met ruimten excl. reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 3)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv"
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = g.alg_gebouw_key "
+ not_reserveerbare_ruimte
+ ")"
lfiltClause.where = " AND g.alg_gebouw_key IN"
+ " (SELECT b.alg_gebouw_key"
+ " FROM alg_v_onrgoed_boom b"
+ " WHERE ( b.alg_locatie_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'L' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_gebouw_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'G' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_verdieping_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'V' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_ruimte_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'R' AND res_srtartikel_og_verwijder IS NULL)"
+ " )"
+ get_not_reserveerbare_ruimte("b")
+ " UNION"
+ " SELECT gg.alg_gebouw_key"
+ " FROM alg_ruimte rr"
+ " , alg_verdieping vv"
+ " , alg_gebouw gg"
+ " , alg_locatie ll"
+ " WHERE rr.alg_ruimte_verwijder IS NULL"
+ " AND rr.alg_verdieping_key = vv.alg_verdieping_key"
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key"
+ " AND gg.alg_locatie_key = ll.alg_locatie_key"
+ get_not_reserveerbare_ruimte("rr")
+ get_res_bezorgfilter(params, 3);
+ " )"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 3);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
case "RESA": // RES Afhaal: 'thuishaven' objecten en catering die een ruimte-scope heeft
lfiltClause.where = " AND g.alg_gebouw_key IN"
@@ -280,7 +302,7 @@ function getFiltClauseGebouw(pfiltcode, params)
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ " UNION"
+ " SELECT v.alg_gebouw_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v"
@@ -289,7 +311,7 @@ function getFiltClauseGebouw(pfiltcode, params)
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ ")";
break;
@@ -363,15 +385,29 @@ function getFiltClauseVerdieping(pfiltcode, params)
case "RESB": // Bezorgplaats voor voorzieningen, d.i. verdieping met ruimte excl. reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 4)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r"
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = v.alg_verdieping_key "
+ not_reserveerbare_ruimte
+ ")"
lfiltClause.where = " AND v.alg_verdieping_key IN"
+ " (SELECT b.alg_verdieping_key"
+ " FROM alg_v_onrgoed_boom b"
+ " WHERE ( b.alg_locatie_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'L' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_gebouw_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'G' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_verdieping_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'V' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_ruimte_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'R' AND res_srtartikel_og_verwijder IS NULL)"
+ " )"
+ get_not_reserveerbare_ruimte("b")
+ " UNION"
+ " SELECT vv.alg_verdieping_key"
+ " FROM alg_ruimte rr"
+ " , alg_verdieping vv"
+ " , alg_gebouw gg"
+ " , alg_locatie ll"
+ " WHERE rr.alg_ruimte_verwijder IS NULL"
+ " AND rr.alg_verdieping_key = vv.alg_verdieping_key"
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key"
+ " AND gg.alg_locatie_key = ll.alg_locatie_key"
+ get_not_reserveerbare_ruimte("rr")
+ get_res_bezorgfilter(params, 4);
+ " )"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 4);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
@@ -383,7 +419,7 @@ function getFiltClauseVerdieping(pfiltcode, params)
+ " AND rso.alg_onrgoed_key = r.alg_ruimte_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ " UNION"
+ " SELECT r.alg_verdieping_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r"
@@ -391,7 +427,7 @@ function getFiltClauseVerdieping(pfiltcode, params)
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ get_not_reserveerbare_ruimte()
+ ")";
break;
@@ -457,10 +493,30 @@ function getFiltClauseRuimte(pfiltcode, params)
case "RESB": // Bezorgplaats voor voorzieningen, d.i. zonder de reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 5)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = not_reserveerbare_ruimte
+ get_res_bezorgfilter(params, 5)
+ loc_scope_act_filter.where
+ lfiltClauseFAC; // Ook dat nog
lfiltClause.where = " AND r.alg_ruimte_key IN"
+ " (SELECT b.alg_ruimte_key"
+ " FROM alg_v_onrgoed_boom b"
+ " WHERE ( b.alg_locatie_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'L' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_gebouw_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'G' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_verdieping_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'V' AND res_srtartikel_og_verwijder IS NULL)"
+ " OR b.alg_ruimte_key IN (SELECT alg_onrgoed_key FROM res_srtartikel_onrgoed WHERE alg_onrgoed_niveau = 'R' AND res_srtartikel_og_verwijder IS NULL)"
+ " )"
+ get_not_reserveerbare_ruimte("b")
+ " UNION"
+ " SELECT rr.alg_ruimte_key"
+ " FROM alg_ruimte rr"
+ " , alg_verdieping vv"
+ " , alg_gebouw gg"
+ " , alg_locatie ll"
+ " WHERE rr.alg_ruimte_verwijder IS NULL"
+ " AND rr.alg_verdieping_key = vv.alg_verdieping_key"
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key"
+ " AND gg.alg_locatie_key = ll.alg_locatie_key"
+ get_not_reserveerbare_ruimte("rr")
+ get_res_bezorgfilter(params, 5);
+ " )"
+ loc_scope_act_filter.where;
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
case "RESA": // RES Afhaal: 'thuishaven' objecten en catering die een ruimte-scope heeft
@@ -477,7 +533,7 @@ function getFiltClauseRuimte(pfiltcode, params)
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ get_res_afhaalfilter(params, true)
+ ")"
+ not_reserveerbare_ruimte;
+ get_not_reserveerbare_ruimte();
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
@@ -584,55 +640,76 @@ function get_rel_obj_filter(stdm_key, level)
return rel_obj_filter;
}
function get_not_reserveerbare_ruimte(alias)
{
// Deze slaan we bij RESA en RESB over.
var alias = alias || "r";
var nrr = " AND NOT EXISTS "
+ " (SELECT '' "
+ " FROM res_alg_ruimte rar"
+ " WHERE res_alg_ruimte_verwijder IS NULL "
+ " AND rar.alg_ruimte_key = " + alias + ".alg_ruimte_key)";
return nrr;
}
function get_res_bezorgfilter(params, level)
{
params = params || {};
var res_deel_key = getQParamInt("res_deel_key", params.res_deel_key||-1);
var res_deel_alg_level = -1;
var filter_deel = "";
if (res_deel_key>0)
{
sql = "SELECT res_deel_alg_level,"
+ " alg_district_key,"
+ " alg_regio_key,"
+ " alg_locatie_key,"
+ " alg_gebouw_key,"
+ " alg_verdieping_key,"
+ " alg_ruimte_key"
+ " FROM res_deel rd,"
+ " ins_deel id, "
+ " alg_v_onrgoed_boom aob"
// if (res_deel_key > 0) // reserveerbare objecten bezorgen
// {
sql = "SELECT MIN(res_deel_alg_level) res_deel_alg_level"
+ " FROM res_deel rd"
+ " , ins_deel id"
+ " , alg_v_onrgoed_boom aob"
+ " WHERE rd.res_ins_deel_key = id.ins_deel_key"
+ " AND COALESCE(id.ins_alg_ruimte_type_org, id.ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(id.ins_alg_ruimte_key_org, id.ins_alg_ruimte_key) = aob.alg_ruimte_key"
+ " AND res_deel_key = " + res_deel_key;
+ (res_deel_key > 0 ? " AND res_deel_key = " + res_deel_key : "");
var oRs = Oracle.Execute(sql);
var res_deel_alg_level = oRs("res_deel_alg_level").Value;
res_deel_alg_level = oRs("res_deel_alg_level").Value;
if (level >= 5 && res_deel_alg_level == 5) filter_deel = "rr.alg_ruimte_key IN ";
if (level >= 4 && res_deel_alg_level == 4) filter_deel = "vv.alg_verdieping_key IN ";
if (level >= 3 && res_deel_alg_level == 3) filter_deel = "gg.alg_gebouw_key IN ";
if (level >= 2 && res_deel_alg_level == 2) filter_deel = "ll.alg_locatie_key IN ";
if (level >= 1 && res_deel_alg_level == 1) filter_deel = "rg.alg_regio_key IN ";
if (level >= 0 && res_deel_alg_level == 0) filter_deel = "di.alg_district_key IN ";
oRs.close();
// }
filter_deel += "(SELECT aob.alg_locatie_key"
+ " FROM res_deel rd"
+ " , ins_deel id"
+ " , alg_v_onrgoed_boom aob"
+ " WHERE rd.res_ins_deel_key = id.ins_deel_key"
+ " AND COALESCE(id.ins_alg_ruimte_type_org, id.ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(id.ins_alg_ruimte_key_org, id.ins_alg_ruimte_key) = aob.alg_ruimte_key"
+ (res_deel_key > 0 ? " AND res_deel_key = " + res_deel_key : "")
+ ")";
if (level == 5)
filter_deel = (res_deel_alg_level >= 5 ? "r.alg_ruimte_key = " + oRs("alg_ruimte_key").Value : "r.alg_verdieping_key = " + oRs("alg_verdieping_key").Value);
if (level == 4)
filter_deel = (res_deel_alg_level >= 4 ? "v.alg_verdieping_key = " + oRs("alg_verdieping_key").Value : "v.alg_gebouw_key = " + oRs("alg_gebouw_key").Value);
if (level == 3)
filter_deel = (res_deel_alg_level >= 3 ? "g.alg_gebouw_key = " + oRs("alg_gebouw_key").Value : "g.alg_locatie_key = " + oRs("alg_locatie_key").Value);
if (level == 2)
filter_deel = (res_deel_alg_level >= 2 ? "l.alg_locatie_key = " + oRs("alg_locatie_key").Value : "l.alg_district_key = " + oRs("alg_district_key").Value);
oRs.Close();
}
var bezorgfilter = "";
if (res_deel_alg_level > -1)
{
bezorgfilter = " AND (EXISTS"
// if (res_deel_alg_level > -1)
// {
bezorgfilter = (filter_deel ? " AND " + filter_deel : "")
+ ")"
+ "AND (EXISTS"
+ " (SELECT ''"
+ " FROM res_srtartikel_onrgoed rao"
+ " , res_activiteitdiscipline rad"
+ " WHERE ( rao.res_discipline_key = rad.res_discipline_key"
+ " AND rad.res_activiteit_key = " + params.act_key
+ " )"
+ ( (res_deel_key > 0 && filter_deel) ? " OR " + filter_deel : "")
+ " )"
+ " )";
}
// }
return " /* get_res_bezorgfilter */ " + bezorgfilter;
}