FCLT#56301 PvE Volksbank: verbruiksartikelen beschikbaar obv minimale duur en aantal prs

svn path=/Website/trunk/; revision=40891
This commit is contained in:
Alex Tiehuis
2019-02-11 15:21:48 +00:00
parent 0760138e78
commit 794aaa65ed
3 changed files with 56 additions and 2 deletions

View File

@@ -102,6 +102,20 @@ model_res_disc_params =
"required": true,
"multiedit": true
},
"mintime": {
"dbs": "res_disc_params_min_duur",
"label": L("res_catalogus_min_duur"),
"typ": "number",
"defaultvalue": 0,
"multiedit": true
},
"minparticipants": {
"dbs": "res_disc_params_min_deelnmrs",
"label": L("res_catalogus_min_participants"),
"typ": "float",
"defaultvalue": 0,
"multiedit": true
},
"company": {
"dbs": "prs_bedrijf_key",
"label": L("res_catalogus_bedrijf"),

View File

@@ -50,6 +50,7 @@ sql = "SELECT res_reservering_key"
+ " , res_rsv_ruimte_verwijder"
+ " , alg_ruimte_key, res_ruimte_opstel_key"
+ " , res_rsv_ruimte_van, res_rsv_ruimte_tot"
+ " , res_rsv_ruimte_bezoekers"
+ " , trunc(res_rsv_ruimte_tot) - trunc(res_rsv_ruimte_van) meerdaags"
+ " , prs_kostenplaats_key"
+ " , res_activiteit_key"
@@ -59,6 +60,8 @@ oRs = Oracle.Execute(sql);
var resdeleted = (oRs("res_rsv_ruimte_verwijder").value != null);
var res_van = new Date(oRs("res_rsv_ruimte_van").value);
var res_tot = new Date(oRs("res_rsv_ruimte_tot").value);
var res_duur = (res_tot - res_van) / 1000 / 60 / 60; // duration from milliseconds to hours
var res_bezoekers = oRs("res_rsv_ruimte_bezoekers").value;
var res_meerdaags = oRs("meerdaags").value!=0;
var activiteit_key = oRs("res_activiteit_key").value;
@@ -457,8 +460,11 @@ var new_item_key = 0; // Globaal
+ (arrangementDiscs && arrangementDiscs.length
? " , CASE WHEN d.ins_discipline_key IN (" + arrangementDiscs.join(",") + ") THEN 1 ELSE 0 END inArrangement"
: " , 0 inArrangement")
+ " FROM RES_v_aanwezigDISCIPLINE d"
+ " FROM RES_v_aanwezigDISCIPLINE d, res_disc_params rd"
+ " WHERE ins_discipline_min_level = 2"
+ " AND rd.res_ins_discipline_key = d.ins_discipline_key"
+ " AND rd.res_disc_params_min_deelnmrs <= " + res_bezoekers
+ " AND rd.res_disc_params_min_duur <= " + res_duur
+ " AND d.ins_discipline_key IN"
+ "(SELECT g.ins_discipline_key"
+ " FROM fac_v_webgebruiker g"

View File

@@ -40,18 +40,30 @@ var met_eindtijd = oRs("res_activiteit_meteindtijd").Value == 1;
oRs.Close();
var warning = "";
var res_bezoekers = getFParamInt("bezoekers", null);
var date_from = getFParamDate("date_from", null); // die hebben we vaak nodig
if (!date_from)
{ // fe_lastminute kon kalender niet bewerken
var sql = "SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot"
var sql = "SELECT res_rsv_ruimte_van, res_rsv_ruimte_tot, res_rsv_ruimte_bezoekers"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
date_from = new Date(oRs("res_rsv_ruimte_van").Value);
date_to = new Date(oRs("res_rsv_ruimte_tot").Value);
if (res_bezoekers == null) { res_bezoekers = oRs("res_rsv_ruimte_bezoekers").value; }
oRs.Close();
}
else
{
if (rsv_ruimte_key > -1 && res_bezoekers == null)
{
var sql = "SELECT res_rsv_ruimte_bezoekers"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
var oRs = Oracle.Execute(sql);
res_bezoekers = oRs("res_rsv_ruimte_bezoekers").value;
oRs.Close();
}
if (date_from.getSeconds() > 0 || date_from.getMilliseconds() > 0)
date_from.setSeconds(59, 1000); // Omhoog afronden op minuten, minimaliseert conflicten
var date_to = getFParamDate("date_to"); // die hebben we vaak nodig
@@ -106,6 +118,28 @@ if (rsv_ruimte_key > -1)
{
abort_with_warning(L("lcl_res_allow_multi_cat")); // Meerdaagse reservering met catering niet toegestaan
}
// detect items who are not allowed within the parameters of their catalogue
sql = "SELECT DISTINCT d.ins_discipline_key, " + lcl.xsqla('d.ins_discipline_omschrijving','d.ins_discipline_key')
+ " FROM res_v_aanwezigrsv_artikel ara, res_v_aanwezigartikel ra, RES_v_aanwezigDISCIPLINE d, res_disc_params rd"
+ " WHERE ara.RES_RSV_RUIMTE_KEY = " + rsv_ruimte_key
+ " AND ra.res_artikel_key = ara.res_artikel_key"
+ " AND d.ins_discipline_key = ra.res_discipline_key"
+ " AND rd.res_ins_discipline_key = d.ins_discipline_key"
+ " AND (rd.res_disc_params_min_deelnmrs > " + res_bezoekers
+ " OR rd.res_disc_params_min_duur > " + durationHours + ")";
oRs = Oracle.Execute(sql);
if (!oRs.Eof)
{
var discArr = [];
while (!oRs.eof)
{
discArr.push(oRs("ins_discipline_omschrijving").Value);
oRs.MoveNext();
}
abort_with_warning(L("lcl_res_invalid_with_cat").format(discArr.join(", "))); // Some items are not allowed with this reservation
}
oRs.Close();
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
}