HSLE#36221 Invulscherm bij cateringbestelling alleen bepaalde ruimtetypen tonen.
svn path=/Website/trunk/; revision=33897
This commit is contained in:
@@ -142,29 +142,12 @@ function getFiltClauseLocatie(pfiltcode, params)
|
||||
lfiltClause.from = loc_scope_act_filter.from;
|
||||
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)"
|
||||
+ " )"
|
||||
+ " FROM (" + get_res_bezorgfilter(params, 2) + ") b"
|
||||
+ " WHERE 1=1"
|
||||
+ 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 = ll.alg_locatie_key"
|
||||
+ get_not_reserveerbare_ruimte("rr")
|
||||
+ get_res_bezorgfilter(params, 2);
|
||||
+ " )"
|
||||
+ loc_scope_act_filter.where;
|
||||
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
|
||||
|
||||
break;
|
||||
|
||||
case "RES": // Locatie met minstens reserveerbare ruimte, en FAC bovendien
|
||||
@@ -267,31 +250,12 @@ function getFiltClauseGebouw(pfiltcode, params)
|
||||
lfiltClause.from = loc_scope_act_filter.from;
|
||||
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)"
|
||||
+ " )"
|
||||
+ " FROM (" + get_res_bezorgfilter(params, 3) + ") b"
|
||||
+ " WHERE 1=1"
|
||||
+ 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 += 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"
|
||||
@@ -387,25 +351,9 @@ function getFiltClauseVerdieping(pfiltcode, params)
|
||||
lfiltClause.from = loc_scope_act_filter.from;
|
||||
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)"
|
||||
+ " )"
|
||||
+ " FROM (" + get_res_bezorgfilter(params, 4) + ") b"
|
||||
+ " WHERE 1=1"
|
||||
+ 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 += lfiltClauseFAC; // Ook dat nog
|
||||
@@ -495,25 +443,9 @@ function getFiltClauseRuimte(pfiltcode, params)
|
||||
lfiltClause.from = loc_scope_act_filter.from;
|
||||
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)"
|
||||
+ " )"
|
||||
+ " FROM (" + get_res_bezorgfilter(params, 5) + ") b"
|
||||
+ " WHERE 1=1"
|
||||
+ 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
|
||||
@@ -659,57 +591,110 @@ function get_res_bezorgfilter(params, level)
|
||||
var res_deel_key = getQParamInt("res_deel_key", params.res_deel_key||-1);
|
||||
var res_deel_alg_level = -1;
|
||||
var filter_deel = "";
|
||||
var bezorgfilter = "";
|
||||
|
||||
// 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"
|
||||
sql = "SELECT MIN(res_deel_alg_level) 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"
|
||||
+ " 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_alg_level > -1"
|
||||
+ (res_deel_key > 0 ? " AND res_deel_key = " + res_deel_key : "");
|
||||
+ (res_deel_key > 0
|
||||
? " AND res_deel_key = " + res_deel_key
|
||||
: ""
|
||||
)
|
||||
+ " GROUP BY alg_district_key,"
|
||||
+ " alg_regio_key,"
|
||||
+ " alg_locatie_key,"
|
||||
+ " alg_gebouw_key,"
|
||||
+ " alg_verdieping_key,"
|
||||
+ " alg_ruimte_key";
|
||||
|
||||
var oRs = Oracle.Execute(sql);
|
||||
if (!oRs.eof)
|
||||
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 = "ll.alg_locatie_key IN "; //"rg.alg_regio_key IN ";
|
||||
if (level >= 0 && res_deel_alg_level == 0) filter_deel = "ll.alg_locatie_key IN "; //"di.alg_district_key IN ";
|
||||
oRs.close();
|
||||
// }
|
||||
if (level >= 5 && res_deel_alg_level == 5) deel_filter = " AND aob.alg_ruimte_key = " + oRs("alg_ruimte_key").Value;
|
||||
if (level >= 4 && res_deel_alg_level == 4) deel_filter = " AND aob.alg_verdieping_key = " + oRs("alg_verdieping_key").Value;
|
||||
if (level >= 3 && res_deel_alg_level == 3) deel_filter = " AND aob.alg_gebouw_key = " + oRs("alg_gebouw_key").Value;
|
||||
if (level >= 2 && res_deel_alg_level == 2) deel_filter = " AND aob.alg_locatie_key = " + oRs("alg_locatie_key").Value;
|
||||
if (level >= 1 && res_deel_alg_level == 1) deel_filter = " AND aob.alg_regio_key = " + oRs("alg_regio_key").Value;
|
||||
if (level >= 0 && res_deel_alg_level == 0) deel_filter = " AND aob.alg_district_key = " + oRs("alg_district_key").Value;
|
||||
// Als geen van bovenstaande combinaties geldt, dan blijft deel_filter leeg.
|
||||
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 : "")
|
||||
+ ")";
|
||||
|
||||
|
||||
var bezorgfilter = "";
|
||||
// if (res_deel_alg_level > -1)
|
||||
// {
|
||||
bezorgfilter = (filter_deel ? " AND " + filter_deel : "")
|
||||
+ ")"
|
||||
+ "AND (EXISTS"
|
||||
+ " (SELECT ''"
|
||||
+ " FROM res_srtartikel_onrgoed rao"
|
||||
var bezorgfilter_C = "SELECT alg_regio_key"
|
||||
+ " , alg_district_key"
|
||||
+ " , alg_locatie_key"
|
||||
+ " , alg_gebouw_key"
|
||||
+ " , alg_verdieping_key"
|
||||
+ " , alg_ruimte_key"
|
||||
+ " FROM ( SELECT alg_onrgoed_key"
|
||||
+ " , alg_onrgoed_niveau"
|
||||
+ " , res_discipline_key"
|
||||
+ " , res_srtartikel_og_verwijder alg_onrgoed_verwijder"
|
||||
+ " , 'C' object_type"
|
||||
+ " FROM res_srtartikel_onrgoed"
|
||||
+ ") obj"
|
||||
+ " , res_activiteitdiscipline rad"
|
||||
+ " WHERE ( rao.res_discipline_key = rad.res_discipline_key"
|
||||
+ " AND rad.res_activiteit_key = " + params.act_key
|
||||
+ " , alg_v_onrgoed_boom aob"
|
||||
+ " WHERE rad.res_discipline_key = obj.res_discipline_key"
|
||||
+ " AND ( (obj.alg_onrgoed_niveau = 'R' and obj.alg_onrgoed_key = aob.alg_ruimte_key)"
|
||||
+ " OR (obj.alg_onrgoed_niveau = 'V' and obj.alg_onrgoed_key = aob.alg_verdieping_key)"
|
||||
+ " OR (obj.alg_onrgoed_niveau = 'G' and obj.alg_onrgoed_key = aob.alg_gebouw_key)"
|
||||
+ " OR (obj.alg_onrgoed_niveau = 'L' and obj.alg_onrgoed_key = aob.alg_locatie_key)"
|
||||
+ " OR (obj.alg_onrgoed_niveau = 'D' and obj.alg_onrgoed_key = aob.alg_district_key)"
|
||||
+ " )"
|
||||
+ " )"
|
||||
+ " )";
|
||||
// }
|
||||
+ " AND obj.alg_onrgoed_verwijder IS NULL"
|
||||
+ " AND rad.res_activiteit_key = " + params.act_key;
|
||||
|
||||
var bezorgfilter_V = "SELECT alg_regio_key"
|
||||
+ " , alg_district_key"
|
||||
+ " , alg_locatie_key"
|
||||
+ " , alg_gebouw_key"
|
||||
+ " , alg_verdieping_key"
|
||||
+ " , alg_ruimte_key"
|
||||
+ " FROM alg_v_onrgoed_boom aob"
|
||||
+ " WHERE 1=1"
|
||||
+ deel_filter;
|
||||
|
||||
var sql_CV = "SELECT DISTINCT DECODE(ins_discipline_min_level, 1, 'V', 2, 'C', 3, 'R') srtvoorziening"
|
||||
+ " FROM res_activiteitdiscipline ad"
|
||||
+ " , res_discipline rd"
|
||||
+ " WHERE ad.res_discipline_key = rd.ins_discipline_key"
|
||||
+ " AND ad.res_activiteit_key = " + params.act_key;
|
||||
var sql_CV_nr = "SELECT COUNT(*) aantal"
|
||||
+ " FROM (" + sql_CV + ")";
|
||||
var oRs = Oracle.Execute(sql_CV_nr);
|
||||
var v_aantal = oRs("aantal").Value;
|
||||
oRs.Close();
|
||||
if (v_aantal > 0)
|
||||
{
|
||||
// catering en/of voorzieningen
|
||||
var oRs = Oracle.Execute(sql_CV);
|
||||
while (!oRs.eof)
|
||||
{
|
||||
var v_srtvoorziening = oRs("srtvoorziening").Value;
|
||||
if (v_srtvoorziening == "C")
|
||||
bezorgfilter += (bezorgfilter == "" ? "" : " UNION ") + bezorgfilter_C;
|
||||
if (v_srtvoorziening == "V")
|
||||
bezorgfilter += (bezorgfilter == "" ? "" : " UNION ") + bezorgfilter_V;
|
||||
oRs.MoveNext();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Als er geen activiteit gekozen is, of voor de gekozen activiteit bestaan geen disciplines,
|
||||
// dan mag de query niet s opleveren.
|
||||
bezorgfilter = bezorgfilter_V + " AND 1=0";
|
||||
}
|
||||
|
||||
return " /* get_res_bezorgfilter */ " + bezorgfilter;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user