diff --git a/APPL/API2/model_res_ruimte.inc b/APPL/API2/model_res_ruimte.inc index 438b0d6113..9ec687be6d 100644 --- a/APPL/API2/model_res_ruimte.inc +++ b/APPL/API2/model_res_ruimte.inc @@ -94,14 +94,14 @@ function model_res_ruimte() "label": L("res_ruimte_begintijd"), "typ": "float", "LOV": api2.getTimetable(), - "emptyoption": "Standaard" + "emptyoption": L("lcl_res_standaard").format(toTimeString(S("res_t1"),false)) }, "close": { "dbs": "res_ruimte_eindtijd", "label": L("res_ruimte_eindtijd"), "typ": "float", "LOV": api2.getTimetable(), - "emptyoption": "Standaard" + "emptyoption": L("lcl_res_standaard").format(toTimeString(S("res_t2"),false)) }, "blockstart": { "dbs": "res_ruimte_begintijdblok", diff --git a/APPL/RES/res_list_ppi.inc b/APPL/RES/res_list_ppi.inc index e39d1c10c4..10d031e125 100644 --- a/APPL/RES/res_list_ppi.inc +++ b/APPL/RES/res_list_ppi.inc @@ -239,7 +239,9 @@ function forhours(fn) + " - GREATEST(COALESCE(rr1.res_ruimte_begintijd, " + S("res_t1") + ")" + " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen. + " )" - + " )") + + " - (COALESCE( rr1.res_ruimte_eindtijdblok, 12) - COALESCE( rr1.res_ruimte_begintijdblok,12) )" + + " )" + ) + " ) beschikbaar" + " FROM res_ruimte rr1" + " , res_alg_ruimte ra" diff --git a/APPL/RES/res_update_room.asp b/APPL/RES/res_update_room.asp index c43d83c3fd..70908eff84 100644 --- a/APPL/RES/res_update_room.asp +++ b/APPL/RES/res_update_room.asp @@ -33,7 +33,9 @@ sql = "SELECT rsv.res_rsv_ruimte_van," + " rsv.res_rsv_ruimte_volgnr," + " rsv.res_reservering_key," + " rsv.res_activiteit_key," - + " rr.res_discipline_key" + + " rr.res_discipline_key," + + " rr.res_ruimte_begintijdblok," + + " rr.res_ruimte_eindtijdblok" + " FROM res_rsv_ruimte rsv" + " , res_ruimte_opstelling rro" + " , res_ruimte rr" @@ -48,6 +50,8 @@ var new_tot = (new Date(old_tot)).setFloatHours(old_tot.getFloatHours() + dvan + var restxt = oRs("res_reservering_key").Value + "/" + oRs("res_rsv_ruimte_volgnr").Value; var act_key = oRs("res_activiteit_key").Value; var disc_key = oRs("res_discipline_key").Value; +var res_blok_van = oRs("res_ruimte_begintijdblok").Value; +var res_blok_tot = oRs("res_ruimte_eindtijdblok").Value; oRs.Close(); var durationHours = (new_tot - new_van) / 1000/60/60; @@ -82,77 +86,96 @@ if (badmsg) } else { - var fields = [ { dbs: "res_rsv_ruimte_van", typ: "time", val: new_van }, - { dbs: "res_rsv_ruimte_tot", typ: "time", val: new_tot } - ]; - sql = buildUpdate("res_rsv_ruimte", fields) + " res_rsv_ruimte_key = " + rsv_ruimte_key; - var check_fail_sql = ""; - if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly) + var blok_van = new Date(); + var blok_tot = new Date(); + var middag_blok = false; + if (res_blok_van && res_blok_tot) // middag blokkade aanwezig { - check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then" - + " raise_application_error (-20000, 'res_m999 "+L("lcl_res_fe_no_dirty")+"');" - + " end if;" + blok_van.setTime(new_van.midnight().getTime()+ res_blok_van*3600*1000); + blok_tot.setTime(new_tot.midnight().getTime()+ res_blok_tot*3600*1000); + var middag_blok = !(new_tot < blok_van || new_van > blok_tot); } - // Nu de echte update. - // Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken' - sql = "BEGIN " - + sql + ";" - + " res.set_ruimte_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden? - + " res.set_ruimtes_clean (" + old_van.toSQL() + "); " // Anderen 'clean' geworden - + " res.follow_artikel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // catering mee verplaatsen - + " res.follow_deel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // objecten mee verplaatsen - + " res.follow_afspraak (" + rsv_ruimte_key + ", " + S("res_copy_to_bez") + "); " // bezoekers mee verplaatsen - + check_fail_sql - + "END;"; - var err = Oracle.Execute(sql, true); - if (err.friendlyMsg) + if (middag_blok) { - error = err.friendlyMsg; result = { - success: false, - info: err.friendlyMsg, - message: err.friendlyMsg + success: false, + message: L("lcl_res_mid_block") }; } else { - shared.trackaction("RESUPD", rsv_ruimte_key, L("lcl_res_track_room_time_shifted_from") - + toDateTimeString(old_van) + "-" + toTimeString(old_tot) - + L("lcl_res_track_room_time_shifted_to") - + toDateTimeString(new_van) + "-" + toTimeString(new_tot) - ); - var sql = "SELECT res_rsv_ruimte_dirtlevel" - + " FROM res_rsv_ruimte" - + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key; - oRs = Oracle.Execute(sql); - var addClass = ""; - var message = ""; - if (oRs("res_rsv_ruimte_dirtlevel") & res.dirtlevel.ruimte.notavailable) + var fields = [ { dbs: "res_rsv_ruimte_van", typ: "time", val: new_van }, + { dbs: "res_rsv_ruimte_tot", typ: "time", val: new_tot } + ]; + sql = buildUpdate("res_rsv_ruimte", fields) + " res_rsv_ruimte_key = " + rsv_ruimte_key; + var check_fail_sql = ""; + if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly) { - message = L("lcl_res_dirtyroom"); - addClass += " res_fatal"; + check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then" + + " raise_application_error (-20000, 'res_m999 "+L("lcl_res_fe_no_dirty")+"');" + + " end if;" + } + // Nu de echte update. + // Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken' + sql = "BEGIN " + + sql + ";" + + " res.set_ruimte_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden? + + " res.set_ruimtes_clean (" + old_van.toSQL() + "); " // Anderen 'clean' geworden + + " res.follow_artikel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // catering mee verplaatsen + + " res.follow_deel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // objecten mee verplaatsen + + " res.follow_afspraak (" + rsv_ruimte_key + ", " + S("res_copy_to_bez") + "); " // bezoekers mee verplaatsen + + check_fail_sql + + "END;"; + + var err = Oracle.Execute(sql, true); + if (err.friendlyMsg) + { + error = err.friendlyMsg; + result = { + success: false, + info: err.friendlyMsg, + message: err.friendlyMsg + }; } else - { // Als ruimte al dirty is hoeft deel niet meer gecontroleerd te worden. - var sql = "SELECT MAX(res_rsv_deel_dirtlevel) deel_dirtlevel" - + " FROM res_rsv_deel" - + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key; - oRs = Oracle.Execute(sql); - if (oRs("deel_dirtlevel") & res.dirtlevel.deel.notavailable) - { - message = L("lcl_res_dirtyobject"); - addClass += " res_fatal"; - } + { + shared.trackaction("RESUPD", rsv_ruimte_key, L("lcl_res_track_room_time_shifted_from") + + toDateTimeString(old_van) + "-" + toTimeString(old_tot) + + L("lcl_res_track_room_time_shifted_to") + + toDateTimeString(new_van) + "-" + toTimeString(new_tot) + ); + var sql = "SELECT res_rsv_ruimte_dirtlevel" + + " FROM res_rsv_ruimte" + + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key; + oRs = Oracle.Execute(sql); + var addClass = ""; + var message = ""; + if (oRs("res_rsv_ruimte_dirtlevel") & res.dirtlevel.ruimte.notavailable) + { + message = L("lcl_res_dirtyroom"); + addClass += " res_fatal"; + } + else + { // Als ruimte al dirty is hoeft deel niet meer gecontroleerd te worden. + var sql = "SELECT MAX(res_rsv_deel_dirtlevel) deel_dirtlevel" + + " FROM res_rsv_deel" + + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key; + oRs = Oracle.Execute(sql); + if (oRs("deel_dirtlevel") & res.dirtlevel.deel.notavailable) + { + message = L("lcl_res_dirtyobject"); + addClass += " res_fatal"; + } + } + result = { success: true, + info: L("lcl_res_track_room_shifted_info") + restxt + ": " + toDateTimeString(new_van) + "-" + toTimeString(new_tot), + removeClass: "res_fatal", + message: message, + addClass: addClass + }; } - result = { success: true, - info: L("lcl_res_track_room_shifted_info") + restxt + ": " + toDateTimeString(new_van) + "-" + toTimeString(new_tot), - removeClass: "res_fatal", - message: message, - addClass: addClass - }; } - } Response.Write(JSON.stringify(result)); %> diff --git a/APPL/RES/res_update_room_drag.asp b/APPL/RES/res_update_room_drag.asp index 7a76afeba1..1f92ca2e20 100644 --- a/APPL/RES/res_update_room_drag.asp +++ b/APPL/RES/res_update_room_drag.asp @@ -80,6 +80,8 @@ var new_tot = (old_tot).setFloatHours(parseFloat(hours_new_tot), S("res_h")); sql = "SELECT " + lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key') + " , rdp.res_disc_params_maxduur" + + " , rr.res_ruimte_begintijdblok" + + " , rr.res_ruimte_eindtijdblok" + " FROM res_ruimte rr" + " , res_disc_params rdp" + " WHERE rr.res_discipline_key = rdp.res_ins_discipline_key" @@ -87,6 +89,9 @@ sql = "SELECT " + lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key') var oRs = Oracle.Execute(sql); var new_ruimte_oms = oRs("res_ruimte_nr").value; var max_hours = oRs("res_disc_params_maxduur").value; +var res_blok_van = oRs("res_ruimte_begintijdblok").Value; +var res_blok_tot = oRs("res_ruimte_eindtijdblok").Value; +oRs.Close(); sql = "SELECT f.fac_functie_key" + " FROM fac_functie f " @@ -98,6 +103,7 @@ while (!oRs.eof) fac_functie_key_arr.push(oRs("fac_functie_key").value); oRs.moveNext(); } +oRs.Close(); // Ik kan deze nieuwe ruimte reserveren als aan de volgende voorwaarden zijn voldaan: // 1) Ik heb enige schrijfrechten voor 'WEB_RESUSE', 'WEB_RESFOF', 'WEB_RESBOF' of 'WEB_RESBAC' @@ -165,6 +171,27 @@ if (!badmsg) <% FCLTHeader.Generate() + + var blok_van = new Date(); + var blok_tot = new Date(); + var middag_blok = false; + if (res_blok_van && res_blok_tot) // middag blokkade aanwezig + { + blok_van.setTime(new_van.midnight().getTime()+ res_blok_van*3600*1000); + blok_tot.setTime(new_tot.midnight().getTime()+ res_blok_tot*3600*1000); + var middag_blok = !(new_tot < blok_van || new_van > blok_tot); + } + + if (middag_blok) + { + err = { friendlyMsg: L("lcl_res_mid_block") }; +%> +<% Response.End; + } + if (submitting) { var opstel = getFParamInt("opstel"); @@ -172,32 +199,32 @@ if (!badmsg) if (badmsg == "") { - var fields = [ {dbs: "res_ruimte_opstel_key", typ: "key", frm: "opstel"} ]; - if (bTimeChanged) - { // Gewijzigde tijd ook opslaan - fields.push( {dbs: "res_rsv_ruimte_van", typ: "datetime", val: new_van} ); - fields.push( {dbs: "res_rsv_ruimte_tot", typ: "datetime", val: new_tot} ); - } - sql = buildUpdate("res_rsv_ruimte", fields) + " res_rsv_ruimte_key = " + rsv_ruimte_key; - var check_fail_sql = ""; - if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly) - { - check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then" - + " raise_application_error (-20000, 'res_m999 "+L("lcl_res_fe_no_dirty")+"');" - + " end if;" - } - // Nu de echte update. - // Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken' - sql = "BEGIN " - + sql + ";" - + " res.set_ruimte_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden? - + " res.set_ruimtes_clean (" + old_van.toSQL() + "); " // Anderen 'clean' geworden - + " res.follow_artikel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // catering mee verplaatsen - + " res.follow_deel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // objecten mee verplaatsen - + " res.follow_afspraak (" + rsv_ruimte_key + ", " + S("res_copy_to_bez") + "); " // bezoekers mee verplaatsen - + check_fail_sql - + "END;"; - var err = Oracle.Execute(sql, true); + var fields = [ {dbs: "res_ruimte_opstel_key", typ: "key", frm: "opstel"} ]; + if (bTimeChanged) + { // Gewijzigde tijd ook opslaan + fields.push( {dbs: "res_rsv_ruimte_van", typ: "datetime", val: new_van} ); + fields.push( {dbs: "res_rsv_ruimte_tot", typ: "datetime", val: new_tot} ); + } + sql = buildUpdate("res_rsv_ruimte", fields) + " res_rsv_ruimte_key = " + rsv_ruimte_key; + var check_fail_sql = ""; + if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly) + { + check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then" + + " raise_application_error (-20000, 'res_m999 "+L("lcl_res_fe_no_dirty")+"');" + + " end if;" + } + // Nu de echte update. + // Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken' + sql = "BEGIN " + + sql + ";" + + " res.set_ruimte_dirty (" + rsv_ruimte_key + "); " // Zelf dirty geworden? + + " res.set_ruimtes_clean (" + old_van.toSQL() + "); " // Anderen 'clean' geworden + + " res.follow_artikel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // catering mee verplaatsen + + " res.follow_deel (" + rsv_ruimte_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // objecten mee verplaatsen + + " res.follow_afspraak (" + rsv_ruimte_key + ", " + S("res_copy_to_bez") + "); " // bezoekers mee verplaatsen + + check_fail_sql + + "END;"; + var err = Oracle.Execute(sql, true); } else err = { friendlyMsg: badmsg }