BLCC#77343 reserveringen van of naar externe ruimtes kunnen wijzigen
svn path=/Website/trunk/; revision=60052
This commit is contained in:
@@ -1843,7 +1843,10 @@ res = {
|
||||
+ " , rsv_prepost.res_disc_params_preposttime"
|
||||
+ " , ro.res_ruimte_opstel_key"
|
||||
+ " , ro.res_ruimte_opstel_tijd"
|
||||
+ " , rsv_prepost.res_ruimte_extern_id"
|
||||
+ " , rv.res_rsv_ruimte_externnr"
|
||||
+ " , rv.res_rsv_ruimte_externnr2"
|
||||
+ " , rv.res_rsv_ruimte_externsyncdate"
|
||||
+ " , " + lcl.xsqla("ra.res_activiteit_omschrijving", "ra.res_activiteit_key")
|
||||
+ " , res_rsv_ruimte_bezoekers"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rv"
|
||||
@@ -1857,7 +1860,7 @@ res = {
|
||||
+ " AND r1.res_alg_ruimte_verwijder IS NULL"
|
||||
+ " AND r2.res_alg_ruimte_verwijder IS NULL"
|
||||
+ " ) X"
|
||||
+ " , (SELECT res_ruimte_key, res_disc_params_preposttime"
|
||||
+ " , (SELECT res_ruimte_key, res_ruimte_extern_id, res_disc_params_preposttime"
|
||||
+ " FROM res_disc_params, res_ruimte"
|
||||
+ " WHERE res_disc_params.res_ins_discipline_key = res_ruimte.res_discipline_key) rsv_prepost"
|
||||
+ " WHERE rv.res_rsv_ruimte_van between " + params.res_van.toSQL() + " AND " + params.res_tot.endToSQL()
|
||||
@@ -1913,8 +1916,20 @@ res = {
|
||||
data.na_koppel = 1;
|
||||
if (oRs("res_rsv_ruimte_dirtlevel").Value)
|
||||
data.dirtlevel = oRs("res_rsv_ruimte_dirtlevel").Value;
|
||||
if (oRs("res_rsv_ruimte_externnr").Value)
|
||||
var externnr = oRs("res_rsv_ruimte_externnr").Value;
|
||||
var externnr2 = oRs("res_rsv_ruimte_externnr2").Value;
|
||||
var externsyncdate = oRs("res_rsv_ruimte_externsyncdate").Value;
|
||||
var canWriteExtern = oRs("res_ruimte_extern_id").Value != null // Deze mogen nooit
|
||||
&& ((S("msgraph_sync_level") & 6) == 2 // We hebben alleen schrijfrechten op de ruimte-resource (niet op de gebruikers)
|
||||
&& ( (externnr == null && externnr2 == null) // (Nog) niet gesynced
|
||||
|| (externnr != null && externnr2 == null // Deze reservering is vanuit Facilitor ge-initieerd
|
||||
&& externsyncdate != null)) // Vanuit Outlook is de externsyncdate niet gevuld
|
||||
|| (S("msgraph_sync_level") & 4)); // We hebben schrijfrechten op alle gebruikers
|
||||
if (externnr) { // Is dit geboekt vanuit een externe API die wij niet mogen wijzigen in Facilitor?
|
||||
data.extern_api = true;
|
||||
data.extern_readonly = !canWriteExtern;
|
||||
}
|
||||
|
||||
data.activiteit = oRs("res_activiteit_omschrijving").Value;
|
||||
data.res_key = oRs("res_reservering_key").Value;
|
||||
data.res_volgnr = oRs("res_rsv_ruimte_volgnr").Value;
|
||||
@@ -2916,7 +2931,7 @@ function planbordTooltipShowing(res_rsv_ruimte_key)
|
||||
+ " res_ruimte rr"
|
||||
+ " WHERE sa.res_srtactiviteit_key = ra.res_srtactiviteit_key"
|
||||
+ " AND ra.res_activiteit_key = rrr.res_activiteit_key"
|
||||
+ " AND rrr.res_rsv_ruimte_key = " + res_rsv_ruimte_key // oei, dit was een bug?!
|
||||
+ " AND rrr.res_rsv_ruimte_key = " + res_rsv_ruimte_key
|
||||
+ " AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)"
|
||||
+ " AND rro.res_ruimte_key = rr.res_ruimte_key(+)";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
|
||||
@@ -94,8 +94,13 @@ for(var i = 0; i < amount; i++)
|
||||
|
||||
// vind de te verwijderen rsv_ruimte_keys
|
||||
sql = "SELECT res_rsv_ruimte_key"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_reservering_key=" + this_res[i].res_reservering_key
|
||||
+ " , res_ruimte_extern_id"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " , res_ruimte_opstelling rro"
|
||||
+ " , res_ruimte rr"
|
||||
+ " WHERE res_reservering_key = " + this_res[i].res_reservering_key
|
||||
+ " AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)"
|
||||
+ " AND rro.res_ruimte_key = rr.res_ruimte_key(+)"
|
||||
+ " AND res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND " + to_do_rsv_ruimte_key;
|
||||
|
||||
@@ -110,7 +115,7 @@ for(var i = 0; i < amount; i++)
|
||||
continue; // Niet al te veel zeuren
|
||||
}
|
||||
|
||||
if (rrr[i].res_ruimte_extern_id) {
|
||||
if (oRs2("res_ruimte_extern_id").Value) {
|
||||
del_key_arr.push(one_rsv_ruimte_key);
|
||||
}
|
||||
|
||||
@@ -157,7 +162,7 @@ for(var i = 0; i < amount; i++)
|
||||
// Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken'
|
||||
sql = "BEGIN "
|
||||
+ sql + ";"
|
||||
+ " res.set_ruimte_dirty (" + one_rsv_ruimte_key + "); " // Zelf dirty geworden?
|
||||
// set_ruimte_dirty hoeft niet: wij zijn verwijderd en kunnen daarmee nooit dirty zijn geworden
|
||||
+ " res.set_ruimtes_clean (" + oldvan.toSQL() + "); " // Anderen 'clean' geworden
|
||||
+ " res.follow_artikel (" + one_rsv_ruimte_key + ", " + oldvan.toSQL(true) + ", " + oldtot.toSQL(true) + "); " // catering mee verplaatsen
|
||||
+ " res.follow_deel (" + one_rsv_ruimte_key + ", " + oldvan.toSQL(true) + ", " + oldtot.toSQL(true) + "); " // objecten mee verplaatsen
|
||||
|
||||
@@ -111,6 +111,7 @@ if (what & 65536)
|
||||
var msg = L("lcl_res_multi_copy").format(resnum) + changed;
|
||||
|
||||
var keyList = getFParamKeyArray("deelreserveringen", []);
|
||||
var res_rsv_ruimte_key_arr = [];
|
||||
var anyExtern = extern_id != null;
|
||||
var old_extern_ids = {};
|
||||
|
||||
@@ -150,6 +151,7 @@ if (what != "" && keyList.length > 0)
|
||||
for (i in keyList)
|
||||
{
|
||||
var rsv_ruimte_key_to = keyList[i];
|
||||
res_rsv_ruimte_key_arr.push(keyList[i]);
|
||||
|
||||
if ((what & 16) > 0 || (what & 2048) > 0)
|
||||
{
|
||||
@@ -175,9 +177,13 @@ if (what != "" && keyList.length > 0)
|
||||
+ " AND rro.res_ruimte_key = rr.res_ruimte_key(+)"
|
||||
+ " AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key_to;
|
||||
var oRs_ext = Oracle.Execute(sql_ext);
|
||||
old_extern_ids[rsv_ruimte_key_to] = oRs_ext("res_ruimte_extern_id").Value;
|
||||
if (what == 16 && extern_id == oRs_ext("res_ruimte_extern_id").Value) { // We wijzigen alleen de ruimte, en die is al hetzelfde
|
||||
res_rsv_ruimte_key_arr = res_rsv_ruimte_key_arr.slice(0, -1); // Dan doen we hier niets mee in de Exchange koppeling
|
||||
} else {
|
||||
old_extern_ids[rsv_ruimte_key_to] = oRs_ext("res_ruimte_extern_id").Value;
|
||||
anyExtern |= old_extern_ids[rsv_ruimte_key_to] != null;
|
||||
}
|
||||
oRs_ext.Close();
|
||||
anyExtern |= old_extern_ids[rsv_ruimte_key_to] != null;
|
||||
}
|
||||
else
|
||||
{ // Ruimte wordt niet overgenomen. Bepaal de vervaldatum van de ruimte van de reservering die gewijzigd wordt.
|
||||
@@ -235,7 +241,8 @@ if (what != "" && keyList.length > 0)
|
||||
}
|
||||
}
|
||||
|
||||
if (anyExtern && (S("msgraph_sync_level") & 6) && (what & 2111)) { // 1+2+4+8+16+32+2048; voor Outlook relevante velden, sommigen alvast voor future reference
|
||||
if (anyExtern && res_rsv_ruimte_key_arr.length && (S("msgraph_sync_level") & 6)
|
||||
&& (what & 2111)) { // 1+2+4+8+16+32+2048; voor Outlook relevante velden, sommigen alvast voor future reference
|
||||
Server.ScriptTimeout = 1200; // 20m, dit kan (potentieel) even duren
|
||||
var DEZE = this;
|
||||
var hook = hookfunc.gethook("utils/exchange/res_to_graph.wsc");
|
||||
@@ -243,7 +250,7 @@ if (what != "" && keyList.length > 0)
|
||||
DEZE: DEZE,
|
||||
custabspath: Server.MapPath(custpath)
|
||||
});
|
||||
var params = { "res_rsv_ruimte_key_arr": keyList };
|
||||
var params = { "res_rsv_ruimte_key_arr": res_rsv_ruimte_key_arr };
|
||||
if (what & 16) {
|
||||
params.old_extern_ids = old_extern_ids;
|
||||
}
|
||||
|
||||
@@ -673,8 +673,8 @@ FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"] });
|
||||
//@@TODO dat kan toch ook mooier en direct serverside?
|
||||
} // einde Bestaande reservering
|
||||
|
||||
var fixedExternal = rrr.rsv_ruimte_key > 0 && rrr.res_ruimte_extern;
|
||||
var isExternalReadonly = fixedExternal && !this_res.canWriteExtern;
|
||||
var resExternal = rrr.rsv_ruimte_key > 0 && rrr.res_ruimte_extern;
|
||||
var isExternalReadonly = resExternal && !this_res.canWriteExtern;
|
||||
|
||||
lcl.set_dialect(rrr.srtactiviteit_key, "RES_SRTACTIVITEIT_KEY");
|
||||
|
||||
@@ -1864,7 +1864,7 @@ FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"] });
|
||||
autlevel: authparams.PRSwritelevel,
|
||||
onChange: "changeNameH",
|
||||
moreinfo: urole!='fe',
|
||||
readonly: authparams.PRSwritelevel==9 || ordernr_reado || fixedExternal,
|
||||
readonly: authparams.PRSwritelevel==9 || ordernr_reado || resExternal,
|
||||
required: true,
|
||||
trclass: (S("res_allow_for_others")&&!(rrr.mld_opdr_key > 0)?"":"hidden")
|
||||
});
|
||||
|
||||
@@ -731,7 +731,7 @@ else // update
|
||||
var resUpd = buildTrackingUpdate("res_rsv_ruimte", " res_rsv_ruimte_key = " + rsv_ruimte_key, fields);
|
||||
|
||||
var check_fail_sql = "";
|
||||
if (S("res_fe_allow_dirty") != 1 && urole == 'fe')
|
||||
if (S("res_fe_allow_dirty") != 1 && urole == 'fe' || extern_id) // Ook Externe reserveringen mogen niet dirty worden
|
||||
{
|
||||
check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then"
|
||||
+ " raise_application_error (-20001, " + safe.qL("lcl_res_fe_no_dirty") + ");"
|
||||
|
||||
@@ -357,7 +357,7 @@ function make_plan_regel(room, ar, params, nr_days, row, hour_px)
|
||||
if (ar[ci].rsv_ruimte_key && ar[ci].rsv_ruimte_key == params.rsv_ruimte_key)
|
||||
statClass += " res_current";
|
||||
|
||||
var theClass = statClass + " gepland" + (room.extern_id != null? " extern" : "");
|
||||
var theClass = statClass + " gepland";
|
||||
|
||||
|
||||
if (ar[ci].dirtlevel & res.dirtlevel.ruimte.notavailable)
|
||||
@@ -451,10 +451,12 @@ function make_plan_regel(room, ar, params, nr_days, row, hour_px)
|
||||
if (!postclean)
|
||||
theClass += " res_nopost";
|
||||
|
||||
if (ar[ci].extern_api)
|
||||
if (ar[ci].extern_api) {
|
||||
theClass += " res_extern click";
|
||||
|
||||
if (!ar[ci].na_koppel && !ar[ci].extern_api && !not_available && !params.forSelectRoom)
|
||||
if (ar[ci].extern_readonly)
|
||||
theClass += " extern_readonly";
|
||||
}
|
||||
else if (!ar[ci].na_koppel && !not_available && !params.forSelectRoom)
|
||||
theClass += " click";
|
||||
|
||||
var div = "<div class='"+theClass+" hidden'";
|
||||
@@ -940,10 +942,6 @@ __Log("start make_plan_room");
|
||||
cls = " res_nofit";
|
||||
}
|
||||
}
|
||||
if (room.extern_id != null)
|
||||
{
|
||||
cls += " extern";
|
||||
}
|
||||
%>
|
||||
<div class='labelgrid hidden<%=cls%>' data-row='<%=row%>' style='grid-column: 1;grid-row: <%=row%>;<%=params.forSelectRoom ? " cursor: pointer;" : ""%>'
|
||||
id='<%=room.res_ruimte_key%>'
|
||||
|
||||
@@ -123,7 +123,7 @@ $(function() {});
|
||||
var startx; // start positie van het slepen (left);
|
||||
var starty; // start positie van het slepen (top);
|
||||
var x, y;
|
||||
var element = $('div.gepland').not('.overflowleft,.overflowright,.res_extern,.res_blok');
|
||||
var element = $('div.gepland').not('.overflowleft,.overflowright,.extern_readonly,.res_blok');
|
||||
element.draggable({
|
||||
cursor: 'crosshair',
|
||||
containment: false,
|
||||
@@ -163,7 +163,7 @@ $(function() {});
|
||||
iframeFix: true,
|
||||
scroll: true
|
||||
});
|
||||
$('div.gepland:not(.res_nietvrij,.res_lunchblok,.overflowright,.overflowleft.continueright,.continueleft,.extern,.res_extern)').resizable(
|
||||
$('div.gepland:not(.res_nietvrij,.res_lunchblok,.overflowright,.overflowleft.continueright,.continueleft,.extern,.extern_readonly)').resizable(
|
||||
{
|
||||
handles: 'e, w',
|
||||
ghost: true,
|
||||
|
||||
@@ -32,10 +32,13 @@ sql = "SELECT rsv.res_rsv_ruimte_van,"
|
||||
+ " rsv.res_rsv_ruimte_volgnr,"
|
||||
+ " rsv.res_reservering_key,"
|
||||
+ " rsv.res_activiteit_key,"
|
||||
+ " rsv.res_rsv_ruimte_externnr,"
|
||||
+ " rsv.res_rsv_ruimte_externnr2,"
|
||||
+ " rr.res_discipline_key,"
|
||||
+ " rr.res_ruimte_min_duur,"
|
||||
+ " rr.res_ruimte_begintijdblok,"
|
||||
+ " rr.res_ruimte_eindtijdblok"
|
||||
+ " rr.res_ruimte_eindtijdblok,"
|
||||
+ " rr.res_ruimte_extern_id"
|
||||
+ " FROM res_rsv_ruimte rsv"
|
||||
+ " , res_ruimte_opstelling rro"
|
||||
+ " , res_ruimte rr"
|
||||
@@ -53,6 +56,9 @@ var disc_key = oRs("res_discipline_key").Value;
|
||||
var min_duur = oRs("res_ruimte_min_duur").Value || 0;
|
||||
var res_blok_van = oRs("res_ruimte_begintijdblok").Value;
|
||||
var res_blok_tot = oRs("res_ruimte_eindtijdblok").Value;
|
||||
var extern_id = oRs("res_ruimte_extern_id").Value;
|
||||
var rsv_ruimte_externnr = oRs("res_rsv_ruimte_externnr").Value;
|
||||
var rsv_ruimte_externnr2 = oRs("res_rsv_ruimte_externnr2").Value;
|
||||
oRs.Close();
|
||||
|
||||
var durationHours = (new_tot - new_van) / 1000/60/60;
|
||||
@@ -117,7 +123,7 @@ else
|
||||
];
|
||||
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)
|
||||
if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly || extern_id) // Ook Externe reserveringen mogen niet dirty worden
|
||||
{
|
||||
check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then"
|
||||
+ " raise_application_error (-20001, "+safe.quoted_sql(L("lcl_res_fe_no_dirty"))+");"
|
||||
@@ -175,6 +181,19 @@ else
|
||||
addClass += " res_fatal";
|
||||
}
|
||||
}
|
||||
|
||||
if (extern_id && (S("msgraph_sync_level") & 6) && this_res.canWriteExtern) {
|
||||
var DEZE = this;
|
||||
var hook = hookfunc.gethook("utils/exchange/res_to_graph.wsc");
|
||||
var newExternal = rsv_ruimte_externnr == null && rsv_ruimte_externnr2 == null; // Nooit verzonden, wel een externe ruimte
|
||||
hook.initialize({
|
||||
DEZE: DEZE,
|
||||
custabspath: Server.MapPath(custpath)
|
||||
});
|
||||
hook.resToGraph(rsv_ruimte_key, (newExternal ? "C" : "U"));
|
||||
hook = null;
|
||||
}
|
||||
|
||||
result = { success: true,
|
||||
info: L("lcl_res_track_room_shifted_info") + restxt + ": " + toDateTimeString(new_van) + "-" + toTimeString(new_tot),
|
||||
removeClass: "res_fatal",
|
||||
|
||||
@@ -43,11 +43,14 @@ sql = "SELECT rrr.res_rsv_ruimte_van"
|
||||
+ " , rrr.res_rsv_ruimte_volgnr"
|
||||
+ " , rrr.res_reservering_key"
|
||||
+ " , rrr.res_status_fo_key"
|
||||
+ " , rrr.res_rsv_ruimte_externnr"
|
||||
+ " , rrr.res_rsv_ruimte_externnr2"
|
||||
+ " , rr.res_ruimte_key"
|
||||
+ " , " + lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key')
|
||||
+ " , rrr.res_activiteit_key"
|
||||
+ " , rdp.res_disc_params_preposttime"
|
||||
+ " , ra.res_activiteit_ismaster"
|
||||
+ " , rr.res_ruimte_extern_id"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " , res_ruimte_opstelling rro"
|
||||
+ " , res_ruimte rr"
|
||||
@@ -67,6 +70,9 @@ var old_ruimte_oms = oRs("res_ruimte_nr").value;
|
||||
var act_key = oRs("res_activiteit_key").value;
|
||||
var prepost_time = oRs("res_disc_params_preposttime").value;
|
||||
var fo_status = oRs("res_status_fo_key").value;
|
||||
var old_extern_id = oRs("res_ruimte_extern_id").Value;
|
||||
var rsv_ruimte_externnr = oRs("res_rsv_ruimte_externnr").Value;
|
||||
var rsv_ruimte_externnr2 = oRs("res_rsv_ruimte_externnr2").Value;
|
||||
var isMaster = oRs("res_activiteit_ismaster").value;
|
||||
// LET OP: De begintijd van het verschoven blokje is met of zonder schoonmaaktijd. En schoonmaaktijd wordt in het planbord niet goed bepaald en is altijd 1 blokje
|
||||
if (prepost_time > 0 && (fo_status == 1 || fo_status == 2))
|
||||
@@ -88,6 +94,7 @@ sql = "SELECT " + lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key')
|
||||
+ " , rr.res_ruimte_min_duur"
|
||||
+ " , rr.res_ruimte_begintijdblok"
|
||||
+ " , rr.res_ruimte_eindtijdblok"
|
||||
+ " , rr.res_ruimte_extern_id"
|
||||
+ " FROM res_ruimte rr"
|
||||
+ " , res_disc_params rdp"
|
||||
+ " WHERE rr.res_discipline_key = rdp.res_ins_discipline_key"
|
||||
@@ -98,6 +105,7 @@ var max_hours = oRs("res_disc_params_maxduur").value;
|
||||
var min_duur = oRs("res_ruimte_min_duur").Value || 0;
|
||||
var res_blok_van = oRs("res_ruimte_begintijdblok").Value;
|
||||
var res_blok_tot = oRs("res_ruimte_eindtijdblok").Value;
|
||||
var extern_id = oRs("res_ruimte_extern_id").Value;
|
||||
oRs.Close();
|
||||
|
||||
sql = "SELECT f.fac_functie_key"
|
||||
@@ -222,7 +230,7 @@ if (!badmsg)
|
||||
}
|
||||
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)
|
||||
if (S("res_fe_allow_dirty") != 1 && this_res.canChangeFEOnly || extern_id) // Ook Externe reserveringen mogen niet dirty worden
|
||||
{
|
||||
check_fail_sql = " if res.dirty_level_all(" + rsv_ruimte_key + ") <> 0 then"
|
||||
+ " raise_application_error (-20001, "+safe.quoted_sql(L("lcl_res_fe_no_dirty"))+");"
|
||||
@@ -257,6 +265,19 @@ if (!badmsg)
|
||||
+ L("lcl_res_track_room_shifted_to")
|
||||
+ new_ruimte_oms
|
||||
);
|
||||
|
||||
if (old_extern_id != extern_id && (S("msgraph_sync_level") & 6) && this_res.canWriteExtern) {
|
||||
var DEZE = this;
|
||||
var hook = hookfunc.gethook("utils/exchange/res_to_graph.wsc");
|
||||
var newExternal = rsv_ruimte_externnr == null && rsv_ruimte_externnr2 == null; // Nooit verzonden, wel een externe ruimte
|
||||
hook.initialize({
|
||||
DEZE: DEZE,
|
||||
custabspath: Server.MapPath(custpath)
|
||||
});
|
||||
hook.resToGraph(rsv_ruimte_key, (newExternal ? "C" : "U"), { "old_extern_id": old_extern_id });
|
||||
hook = null;
|
||||
}
|
||||
|
||||
var sql = "SELECT res_rsv_ruimte_dirtlevel"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
|
||||
Reference in New Issue
Block a user