284 lines
12 KiB
Plaintext
284 lines
12 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: res_update_obj.asp
|
|
Description: update een onderdeel van een object-reservering na wijziging via planbord
|
|
Parameters:
|
|
rsv_deel_key RES_RSV_DEEL to update
|
|
res_deel_key Nieuw object
|
|
rsv_van nieuwe begintijd in uren
|
|
rsv_tot nieuwe eindtijd in uren
|
|
Context: Modal dialoog vanuit objecten planbord
|
|
Note: We ondersteunen drie varianten
|
|
- CV-reservering (met rsv_ruimte_key==>alg_ruimte_key)
|
|
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
|
|
Horizontaal: Bij wijzigen tijd waarschuwen we dat andere objecten meegaan
|
|
(welbeschouwd wijzigen we res_rsv_ruimte_van en de rest cascadeert)
|
|
- R-reservering (met rsv_ruimte_key==>res_opstel_key)
|
|
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
|
|
Horizontaal: Een ander tijdstip staan we niet toe ("Ga maar naar ruimte-planbord)
|
|
- Parkeerplaats bij afspraak (met bez_bezoekers_key)
|
|
Verticaal: We staan toe dat een ander object (res_deel) gekozen wordt
|
|
Horizontaal: Een ander tijdstip staan we niet toe ("Ga maar naar bezoekersscherm")
|
|
*/
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/json2.js" -->
|
|
<!-- #include file="../shared/iface.inc" -->
|
|
<!-- #include file="../shared/save2db.inc" -->
|
|
<!-- #include file="res.inc" -->
|
|
<%
|
|
FCLTHeader.Requires({plugins: ["jQuery"]});
|
|
|
|
var rsv_deel_key = getQParamInt("rsv_deel_key");
|
|
var new_deel_key = getQParamInt("res_deel_key");
|
|
var new_van = (new Date).setFloatHours(getQParam("fres_van"), S("res_h"));
|
|
var transitParam = buildTransitParam(["rsv_deel_key", "res_deel_key", "fres_van", "frsv_tot"]);
|
|
|
|
var submitting = getQParamInt("submit", 0) == 1;
|
|
|
|
sql = "SELECT res_rsv_ruimte_key"
|
|
+ " , bez_bezoekers_key"
|
|
+ " , rrd.res_deel_key"
|
|
+ " , "+ lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key')
|
|
+ " , res_rsv_deel_van"
|
|
+ " , res_rsv_deel_tot"
|
|
+ " FROM ins_deel d"
|
|
+ " , res_deel rd"
|
|
+ " , res_rsv_deel rrd"
|
|
+ " WHERE rrd.res_rsv_deel_key = " + rsv_deel_key
|
|
+ " AND rrd.res_deel_key = rd.res_deel_key"
|
|
+ " AND rd.res_ins_deel_key = d.ins_deel_key" ;
|
|
var oRs = Oracle.Execute(sql);
|
|
var rsv_ruimte_key = oRs("res_rsv_ruimte_key").value;
|
|
var bezoekers_key = oRs("bez_bezoekers_key").value;
|
|
var old_van = new Date(oRs("res_rsv_deel_van").value);
|
|
var old_tot = new Date(oRs("res_rsv_deel_tot").value);
|
|
var old_deel_key = oRs("res_deel_key").value;
|
|
var old_deel_oms = oRs("res_deel_omschrijving").value;
|
|
|
|
if (rsv_ruimte_key) // Bij parkeerplaats is er geen res_rsv_ruimte_key.
|
|
res.res_set_dialect(rsv_ruimte_key);
|
|
|
|
var new_tot = parseFloat(getQParam("frsv_tot", null));
|
|
if (!new_tot)
|
|
{
|
|
new_tot = new Date(old_tot);
|
|
new_tot.setTime(new_tot.getTime() + (new_van - old_van))
|
|
}
|
|
|
|
var bTimeChanged = old_van.getHours() != new_van.getHours() || old_van.getMinutes() != new_van.getMinutes();
|
|
if (old_deel_key != new_deel_key)
|
|
{
|
|
sql = "SELECT "+ lcl.xsqla('rd.res_deel_omschrijving', 'rd.res_deel_key')
|
|
+ " FROM res_deel rd"
|
|
+ " WHERE rd.res_deel_key = " + new_deel_key;
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
var new_deel_oms = oRs("res_deel_omschrijving").value;
|
|
old_deel_oms += " > " + new_deel_oms;
|
|
}
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate()
|
|
if (submitting)
|
|
{
|
|
var sqldeel = "UPDATE res_rsv_deel"
|
|
+ " SET res_deel_key = " + new_deel_key
|
|
+ " WHERE res_rsv_deel_key = " + rsv_deel_key;
|
|
if (!rsv_ruimte_key) // (losse bezoeker met) parkeerplaats. Tijdwijziging hebben we niet toegestaan
|
|
{
|
|
Oracle.Execute( sqldeel );
|
|
}
|
|
else
|
|
{
|
|
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
|
user.auth_required_or_abort(this_res.canChange);
|
|
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_m960 "+L("lcl_res_fe_no_dirty")+"');"
|
|
+ " end if;"
|
|
}
|
|
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;
|
|
// Nu de echte update.
|
|
// Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken'
|
|
sql = "BEGIN "
|
|
+ sql + ";"
|
|
+ sqldeel + ";"
|
|
+ " res.set_delen_clean (" + old_deel_key + ", " + old_van.toSQL(true) + ", " + old_tot.toSQL(true) + "); " // als ander object gekozen
|
|
+ " 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)
|
|
{
|
|
%> <script>
|
|
FcltMgr.alert("<%=safe.jsstring(err.friendlyMsg)%>");
|
|
</script>
|
|
<% }
|
|
else
|
|
{
|
|
shared.trackaction("RESUPD", rsv_ruimte_key, L("lcl_res_track_cv_shifted_from")
|
|
+ toDateTimeString(old_van) + "-" + toTimeString(old_tot)
|
|
+ L("lcl_res_track_cv_shifted_to")
|
|
+ toTimeString(new_van) + "-" + toTimeString(new_tot)
|
|
);
|
|
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)
|
|
{
|
|
var message = L("lcl_res_dirtyobject");
|
|
%> <script>
|
|
FcltMgr.alert("<%=safe.jsstring(message)%>");
|
|
</script>
|
|
<%
|
|
}
|
|
}
|
|
}
|
|
|
|
%> <script>
|
|
FcltMgr.closeDetail(window, { refresh: true } );
|
|
</script>
|
|
<% Response.End;
|
|
}
|
|
%>
|
|
</head>
|
|
<body class="modal" id="mod_resupdateobj">
|
|
<form name="u2"
|
|
action="res_update_obj.asp?submit=1<%=transitParam%>"
|
|
target="hidFrameSubmit"
|
|
method="post">
|
|
<%
|
|
var badmsg = "";
|
|
|
|
BLOCK_START("", rsv_ruimte_key? L("lcl_res_frame_voorziening") : L("lcl_bez_bezoekers"));
|
|
if (rsv_ruimte_key)
|
|
{
|
|
sql = "SELECT rr.res_rsv_ruimte_key"
|
|
+ ", rr.res_rsv_ruimte_omschrijving"
|
|
+ ", rr.res_rsv_ruimte_van"
|
|
+ ", rr.res_rsv_ruimte_tot"
|
|
+ ", rr.res_reservering_key"
|
|
+ ", rr.res_rsv_ruimte_volgnr"
|
|
+ ", rr.res_ruimte_opstel_key"
|
|
+ ", rr.alg_ruimte_key"
|
|
+ " FROM res_rsv_ruimte rr,"
|
|
+ " res_deel rd,"
|
|
+ " res_rsv_deel rrd"
|
|
+ " WHERE rrd.res_rsv_deel_key = " + rsv_deel_key
|
|
+ " AND rrd.res_deel_key = rd.res_deel_key"
|
|
+ " AND rrd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
ROFIELDTR("fldresnum", L("lcl_reservation"), oRs("res_reservering_key") + "/" + oRs("res_rsv_ruimte_volgnr"));
|
|
ROFIELDTR("fld", L("lcl_from"), toDateTimeString(oRs("res_rsv_ruimte_van").value) + (bTimeChanged?" > " + toTimeString(new_van):""));
|
|
ROFIELDTR("fld", L("lcl_to"), toDateTimeString(oRs("res_rsv_ruimte_tot").value) + (bTimeChanged?" > " + toTimeString(new_tot):""));
|
|
ROFIELDTR("fldresdesc", L("lcl_descr"), oRs("res_rsv_ruimte_omschrijving").value || "-");
|
|
ROFIELDTR("fld", L("lcl_item"), old_deel_oms);
|
|
|
|
if (oRs("res_ruimte_opstel_key").value != null)
|
|
{
|
|
if (bTimeChanged)
|
|
{
|
|
badmsg = L("lcl_res_objplantime"); // "tijd wijzigen mag alleen via reservering of ruimte-planbord";
|
|
}
|
|
|
|
sql = "SELECT "+lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key')
|
|
+ " FROM res_ruimte rr,"
|
|
+ " res_ruimte_opstelling ro"
|
|
+ " WHERE res_ruimte_opstel_key = " + oRs("res_ruimte_opstel_key").value
|
|
+ " AND rr.res_ruimte_key = ro.res_ruimte_key";
|
|
oRs2 = Oracle.Execute(sql);
|
|
ROFIELDTR("fldresroom", L("lcl_room"), oRs2("res_ruimte_nr").value);
|
|
oRs2.Close();
|
|
}
|
|
else // Alg_ruimte_key zal gevuld zijn
|
|
{
|
|
sql = "SELECT alg_ruimte_aanduiding"
|
|
+ " FROM alg_v_ruimte_gegevens_all"
|
|
+ " WHERE alg_ruimte_key = " + oRs("alg_ruimte_key").value
|
|
oRs2 = Oracle.Execute(sql);
|
|
ROFIELDTR("fldresroom", L("lcl_room"), oRs2("alg_ruimte_aanduiding").value);
|
|
oRs2.Close();
|
|
}
|
|
oRs.Close();
|
|
|
|
var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
|
if (!this_res.canChange)
|
|
badmsg = this_res.readoReason;
|
|
else if (this_res.canChangeFEOnly)
|
|
{ // Bij wijzigen tijdstip ruimte (naar voren) schuiven voorzieningen mogelijk mee.
|
|
if (new_van < this_res.earliest_expire_change)
|
|
badmsg = L("lcl_res_lastmin"); // te laat
|
|
}
|
|
}
|
|
else // parkeerplaats bij een afspraak
|
|
{
|
|
sql = "SELECT b.bez_afspraak_naam"
|
|
+ ", b.bez_afspraak_bedrijf"
|
|
+ ", p.prs_perslid_naam_friendly naam"
|
|
+ ", COALESCE(a.bez_afspraak_telefoonnr,'-') bez_afspraak_telefoonnr"
|
|
+ ", a.bez_afspraak_key"
|
|
+ " FROM prs_v_perslid_fullnames p,"
|
|
+ " bez_bezoekers b,"
|
|
+ " bez_afspraak a"
|
|
+ " WHERE p.prs_perslid_key(+) = a.bez_afspraak_host_key"
|
|
+ " AND b.bez_bezoekers_key = " + bezoekers_key
|
|
+ " AND b.bez_afspraak_key = a.bez_afspraak_key";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
|
|
ROFIELDTR("fld", L("lcl_vis_name"), oRs("bez_afspraak_naam").value);
|
|
if (oRs("bez_afspraak_bedrijf").value != null)
|
|
ROFIELDTR("fld", L("lcl_vis_company"), oRs("bez_afspraak_bedrijf").value);
|
|
ROFIELDTR("fld", L("lcl_host"), oRs("naam").value);
|
|
ROFIELDTR("fld", L("lcl_item"), old_deel_oms);
|
|
|
|
if (bTimeChanged)
|
|
{
|
|
badmsg = L("lcl_res_bezplantime"); // "Tijd wijzigen mag alleen via afspraak-scherm";
|
|
}
|
|
}
|
|
BLOCK_END();
|
|
IFACE.FORM_END();
|
|
%>
|
|
</form>
|
|
<iframe src="../Shared/empty.html"
|
|
onload="iface.button.enable('btn_res_submit')";
|
|
name="hidFrameSubmit"
|
|
style="display:none"></iframe>
|
|
<%
|
|
if (badmsg != "") { %>
|
|
<br><font color=red><%=badmsg%></font>
|
|
<% }
|
|
else
|
|
{
|
|
if (bTimeChanged)
|
|
{ // Let op: gehele reservering wordt verplaatst, andere voorzieningen gaan mee.
|
|
%> <p><%=L("lcl_res_objmove")%></p><%
|
|
}
|
|
}
|
|
|
|
var buttons = [];
|
|
if (badmsg == "")
|
|
buttons.push({ title: L("lcl_submit"), action: "document.u2.submit()", singlepress: true, id:"btn_res_submit" });
|
|
buttons.push({ title: L("lcl_cancel"), action: "FcltMgr.closeDetail(window, { cancel: true } )"});
|
|
CreateButtons(buttons);
|
|
%>
|
|
</body>
|
|
</html> |