diff --git a/APPL/API2/model_res_activiteit.inc b/APPL/API2/model_res_activiteit.inc index b90ec7d8d0..71e020354b 100644 --- a/APPL/API2/model_res_activiteit.inc +++ b/APPL/API2/model_res_activiteit.inc @@ -66,6 +66,14 @@ function model_res_activiteit() "typ": "check", "multiedit": true }, + "posttime": { + "dbs": "res_activiteit_posttime", + "label": L("res_activiteit_posttime"), + "typ": "float", + "defaultvalue": 0, + required: true, + "multiedit": true + }, "visitorsmandatory": { "dbs": "res_activiteit_aantalverplicht", "label": L("res_activiteit_aantalverplicht"), diff --git a/APPL/RES/res.inc b/APPL/RES/res.inc index 97d8455086..12a04bf313 100644 --- a/APPL/RES/res.inc +++ b/APPL/RES/res.inc @@ -1481,6 +1481,7 @@ res = { + " , rv.res_rsv_ruimte_host_key" + " , rv.res_rsv_ruimte_contact_key" + " , rv.res_rsv_ruimte_omschrijving" + + " , ra.res_activiteit_posttime" + " , (SELECT count(1) FROM res_v_aanwezigrsv_artikel rra" + " WHERE rra.res_rsv_ruimte_key = rv.res_rsv_ruimte_key) aantalA" // dat de CV dirty kan zijn negeren we. + " , (SELECT count(1) FROM res_v_aanwezigrsv_deel rrd" @@ -1488,7 +1489,8 @@ res = { + " AND rrd.bez_bezoekers_key IS NULL) aantalD" // Uitsluiten parkeerplaatsen met een bez_bezoekers_key. + " FROM res_v_aanwezigrsv_ruimte rv" + " , res_ruimte_opstelling ro" - + (params.anonymous?", res_activiteit ra, res_srtactiviteit rsa":"") + + " , res_activiteit ra" + + (params.anonymous?", res_srtactiviteit rsa":"") // ///////Koppelzalen meenemen want daardoor kunnen we ook bezet raken + " , ( SELECT DISTINCT r1.res_ruimte_key res_ruimte_key_1, r2.res_ruimte_key res_ruimte_key_2, r2.alg_ruimte_key " + " FROM res_alg_ruimte r1, res_alg_ruimte r2 " @@ -1499,10 +1501,10 @@ res = { + " WHERE rv.res_rsv_ruimte_van between " + params.res_van.toSQL() + " AND " + params.res_tot.endToSQL() + " AND rv.res_ruimte_opstel_key = ro.res_ruimte_opstel_key" + " AND X.res_ruimte_key_2 = ro.res_ruimte_key" + + " AND rv.res_activiteit_key = ra.res_activiteit_key" + (params.anonymous - ? " AND rv.res_activiteit_key = ra.res_activiteit_key" - + " AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key" - : "") + ? " AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key" + : "") + (params.res_ruimte_key && !params.forSelectRoom ? " AND res_ruimte_key_1=" + params.res_ruimte_key : "") @@ -1533,6 +1535,8 @@ res = { res_tot : new Date(oRs("res_rsv_ruimte_tot").Value), fo_status : oRs("res_status_fo_key").Value }; + if (oRs("res_activiteit_posttime").Value) + data.act_post_time = oRs("res_activiteit_posttime").Value; if (oRs("res_rsv_ruimte_flag").Value) data.flag_status = oRs("res_rsv_ruimte_flag").Value; if (oRs("res_ruimte_key_1").Value != oRs("res_ruimte_key_2").Value) diff --git a/APPL/RES/res_plan_room.inc b/APPL/RES/res_plan_room.inc index 188a64f22b..9a0d39b70f 100644 --- a/APPL/RES/res_plan_room.inc +++ b/APPL/RES/res_plan_room.inc @@ -23,6 +23,9 @@ function set_will_fit(plan_rooms_info, plan_bezet_info, params) { var is_nofit = false; var room = plan_rooms_info[i_room]; + + room.post_time = Math.max(room.prepost_time, params.act_post_time); + var ar = plan_bezet_info[room.res_ruimte_key]; var df = params.res_van.getHours() + params.res_van.getMinutes()/60; @@ -46,8 +49,11 @@ function set_will_fit(plan_rooms_info, plan_bezet_info, params) } else { - if (params.res_van.getTime() - room.prepost_time*60*60*1000 < ar[ci].res_tot.getTime() - && params.res_tot.getTime() + room.prepost_time*60*60*1000 > ar[ci].res_van.getTime()) + // deze_room.pre_time = Max van deze_room.prepost_time en geplande_room.activity.post_time + room.pre_time = (ar[ci].act_post_time ? Math.max(room.prepost_time, ar[ci].act_post_time) : room.prepost_time); + + if (params.res_van.getTime() - room.pre_time *60*60*1000 < ar[ci].res_tot.getTime() + && params.res_tot.getTime() + room.post_time*60*60*1000 > ar[ci].res_van.getTime()) is_nofit = true; // Overlap! } } @@ -190,13 +196,15 @@ function make_plan_regel(room, ar, params, nr_days, hour_px) var theStyleLeft = ""; // voor cleaning blokje afmeting var theStyleRight = ""; // Perhaps cleaning time, alleen optie en definitief - if (room.prepost_time > 0 && (ar[ci].fo_status == 1 || ar[ci].fo_status == 2)) + // room.post_time >= room.prepost_time (always) + + if (room.post_time > 0 && (ar[ci].fo_status == 1 || ar[ci].fo_status == 2)) { theClass += " res_cleaning"; // maximaal kwartier 'doorschieten' links/rechts var preclean = Math.min(room.prepost_time, h_start - S("res_t1") + 0.25); - var postclean = Math.min(room.prepost_time, S("res_t2") - h_end + 0.25); + var postclean = Math.min(room.post_time, S("res_t2") - h_end + 0.25); if ( Math.round(hour_px * postclean - 1) > 0 ) theStyleRight = "border-right-width:"+Math.round(hour_px * postclean - 1)+"px;" diff --git a/APPL/RES/res_select_room.asp b/APPL/RES/res_select_room.asp index 63f4e9fbec..7d26a8d44d 100644 --- a/APPL/RES/res_select_room.asp +++ b/APPL/RES/res_select_room.asp @@ -35,6 +35,7 @@ var activiteit_key = getQParamInt("activiteit_key"); var sql = "SELECT res_srtactiviteit_key, " + lcl.xsqla('a.res_activiteit_omschrijving', 'a.res_activiteit_key') + " , a.res_activiteit_duur" + + " , a.res_activiteit_posttime" + " FROM res_activiteit a" + " WHERE res_activiteit_key = " + activiteit_key; var oRs = Oracle.Execute(sql); @@ -67,6 +68,7 @@ var params = {id: "tab_room_sched", rsv_ruimte_key: rsv_ruimte_key, vis: vis, activiteit_key: activiteit_key, + act_post_time: oRs("res_activiteit_posttime").Value, srtact: oRs("res_srtactiviteit_key").Value, forSelectRoom: true, authparams: user.checkAutorisation(autfunction, null, null, true), // pessimistisch