HSLE#55169 Reservering incl deelreservering kopiëren

svn path=/Website/trunk/; revision=40286
This commit is contained in:
Erik Groener
2018-12-19 09:54:26 +00:00
parent 4d5352fe24
commit 854e3b69c6
2 changed files with 128 additions and 23 deletions

View File

@@ -43,6 +43,20 @@ user.auth_required_or_abort(this_res.couldCreate);
<head>
<% FCLTHeader.Generate() %>
<%
// Is dit een reservering met meerder deelreserveringen in een korte periode
// (opbouw, evenement, opruimen) ?
var sql_ev = "SELECT MAX((res_rsv_ruimte_tot)) - MIN((res_rsv_ruimte_van)) tijdspad"
+ " FROM res_rsv_ruimte"
+ " WHERE res_reservering_key = "
+ "(SELECT res_reservering_key"
+ " FROM res_rsv_ruimte"
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
+ ")";
var oRs_ev = Oracle.Execute(sql_ev);
var zelfdedag = (oRs_ev("tijdspad").Value < S("res_copy_all_time_frame"));
oRs_ev.Close();
// =========================================
// Eerst wat info ophalen
sql = "SELECT rr.res_reservering_key"
@@ -128,6 +142,23 @@ user.auth_required_or_abort(this_res.couldCreate);
<% Response.End;
} %>
function withdeelrestoggle()
{
$("#show_date_from0").closest("td").prev().children().text( ($("#withdeelres").prop("checked") ? L("lcl_date") : L("lcl_res_repeat2")) );
$("#resmakedates").toggle();
$("#isnewres").closest("tr").toggle();
$("#sel_cycle").closest("tr").toggle();
$("#date_to0").closest("tr").toggle();
$("#n_periods").closest("tr").toggle();
$("#withWeekends").closest("tr").toggle();
$("#show_date_from").closest("tr").prev().toggle(); // de buttons "Tonen datums" en "Wissen datums"
$("#show_date_from").toggle(); // de kalenders onderin.
FcltMgr.resized();
}
function EraseDates()
{
window.dates = [];
@@ -398,6 +429,12 @@ user.auth_required_or_abort(this_res.couldCreate);
{
if (!dates.length)
{
if ($("#withdeelres").prop("checked"))
{
$("#n_periods").val(1); // Zet aantal perioden 1 voor kopieren reservering met alle deelreserveringen
$("#isnewres").prop("checked", true); // en buiten reeks (dus nieuw reserveringsnummer).
}
fillDates(true, true); // Na het vullen van de datums wordt er opnieuw een submit gedaan. Daardoor is een alert melding niet meer nodig.
return false;
}
@@ -493,6 +530,9 @@ user.auth_required_or_abort(this_res.couldCreate);
<tr><td colspan="2"><div id="resmakedates"><%=L("lcl_res_makedates")%></div></td></tr>
<%
if (zelfdedag)
RWCHECKBOXTR("withdeelres", "fldcheck", "Gehele reservering kopieren", false, {html: "onclick='withdeelrestoggle()'"});
RWCHECKBOXTR("isnewres", "fldcheck", L("lcl_res_copy_deelres"), false, {});
//======= FIELD 'Periode' =======
sql = "SELECT c.res_cyclus_periode"

View File

@@ -26,6 +26,7 @@ protectRequest.validateToken();
var urole = getQParamSafe("urole");
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
var isnewres = (getFParamInt("has_isnewres", 0) == 1 ? getFParam("isnewres", "") == "on" : false); // De 'kopieer buiten reeks' functie
var isallres = (getFParamInt("has_withdeelres", 0) == 1 ? getFParam("withdeelres", "") == "on" : false); // De 'kopieer ook alle deelreserveringen' functie
res.res_set_dialect(rsv_ruimte_key);
var this_res = res.func_enabled(rsv_ruimte_key); // wat mocht ik zoal op deze reservering
@@ -35,6 +36,7 @@ user.auth_required_or_abort(this_res.couldCreate);
sql = "SELECT rr.res_reservering_key"
+ " , rr.res_reservering_ispool"
+ " , r.res_ruimte_vervaldatum"
+ " , TRUNC(rrr.res_rsv_ruimte_van) rsv_ruimte_datum"
+ " FROM res_reservering rr"
+ " , res_rsv_ruimte rrr"
+ " , res_ruimte_opstelling ro"
@@ -46,6 +48,7 @@ sql = "SELECT rr.res_reservering_key"
oRs = Oracle.Execute(sql);
var reservering_key = oRs("res_reservering_key").Value;
var ispool = (oRs("res_reservering_ispool").Value) == 1;
var rsv_ruimte_datum = new Date(oRs("rsv_ruimte_datum").Value);
var ruimte_vervaldatum = oRs("res_ruimte_vervaldatum").Value;
if (ruimte_vervaldatum != null)
ruimte_vervaldatum = new Date(ruimte_vervaldatum);
@@ -85,36 +88,98 @@ var last_volg = oRs("last_volg").Value;
oRs.Close();
var form_dates = Request.Form("newDates");
var sql = "DECLARE"
+ " new_key NUMBER;"
+ "\nBEGIN"
for (var i = 1; i <= form_dates.Count; i++)
if (isallres)
{
var datum = new Date(parseInt(form_dates(i),10));
if (ruimte_vervaldatum != null && ruimte_vervaldatum < datum)
// reservering_key: oude reservering key
// newres_key: nieuwe reservering key
// rsv_ruimte_datum: datum van te kopieren ruimtereservering
var new_date = getFParamDate("date_from0", null);
var time_between = new_date - rsv_ruimte_datum;
var sql_ins = "DECLARE"
+ " new_key NUMBER;"
+ "\nBEGIN"
var sql = "SELECT rrr.res_rsv_ruimte_key"
+ " , rrr.res_rsv_ruimte_van"
+ " , rrr.res_rsv_ruimte_volgnr"
+ " , r.res_ruimte_vervaldatum"
+ " FROM res_rsv_ruimte rrr"
+ " , res_ruimte r"
+ " , res_ruimte_opstelling ro"
+ " WHERE rrr.res_reservering_key = " + reservering_key
+ " AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)"
+ " AND ro.res_ruimte_key = r.res_ruimte_key(+)"
+ " ORDER BY rrr.res_rsv_ruimte_volgnr";
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
abort_with_warning(L("lcl_res_room_expired").format(toDateString(ruimte_vervaldatum)));
}
if (ispool) // Hele reservering
{
sql += "\n new_key := res.res_copy_res(" + reservering_key + "," + datum.toSQL() + "," + user_key + ");";
}
else // Gewone
{
sql += "\n new_key := res.res_copy_deelres(" + rsv_ruimte_key + "," + datum.toSQL() + "," + user_key + (isnewres?",0,"+newres_key+","+i:"") + ");";
var rsv_key = oRs("res_rsv_ruimte_key").Value;
var rsv_volgnr = oRs("res_rsv_ruimte_volgnr").Value;
var rsv_datum = new Date(oRs("res_rsv_ruimte_van").Value + time_between);
var ruimte_vervaldatum = oRs("res_ruimte_vervaldatum").Value;
if (ruimte_vervaldatum != null)
ruimte_vervaldatum = new Date(ruimte_vervaldatum);
if (ruimte_vervaldatum != null && ruimte_vervaldatum < rsv_datum)
{
abort_with_warning(L("lcl_res_room_expired").format(toDateString(ruimte_vervaldatum)));
}
//
sql_ins += "\n new_key := res.res_copy_deelres(" + rsv_key + "," + rsv_datum.toSQL() + "," + user_key + ",0," + newres_key + "," + rsv_volgnr + ");";
if (S("res_fe_allow_dirty") != 1 && urole == 'fe')
{
sql += " IF res.dirty_level_all(new_key) <> 0 THEN"
+ " raise_application_error (-20000, 'res_m960 " + toDateString(datum) + ": " + L("lcl_res_fe_no_dirty") + "');"
+ " END IF;"
sql_ins += " IF res.dirty_level_all(new_key) <> 0 THEN"
+ " raise_application_error (-20000, 'res_m960 " + toDateString(rsv_datum) + ": " + L("lcl_res_fe_no_dirty") + "');"
+ " END IF;"
}
sql += " UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = NULL WHERE res_rsv_ruimte_key = new_key;";
sql_ins += " UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = NULL WHERE res_rsv_ruimte_key = new_key;";
//
oRs.MoveNext();
}
oRs.Close();
sql_ins += "\n END;"
//
var err = Oracle.Execute(sql_ins, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
}
else
{
var sql = "DECLARE"
+ " new_key NUMBER;"
+ "\nBEGIN"
for (var i = 1; i <= form_dates.Count; i++)
{
var datum = new Date(parseInt(form_dates(i),10));
if (ruimte_vervaldatum != null && ruimte_vervaldatum < datum)
{
abort_with_warning(L("lcl_res_room_expired").format(toDateString(ruimte_vervaldatum)));
}
if (ispool) // Hele reservering
{
sql += "\n new_key := res.res_copy_res(" + reservering_key + "," + datum.toSQL() + "," + user_key + ");";
}
else // Gewone
{
sql += "\n new_key := res.res_copy_deelres(" + rsv_ruimte_key + "," + datum.toSQL() + "," + user_key + (isnewres?",0,"+newres_key+","+i:"") + ");";
if (S("res_fe_allow_dirty") != 1 && urole == 'fe')
{
sql += " IF res.dirty_level_all(new_key) <> 0 THEN"
+ " raise_application_error (-20000, 'res_m960 " + toDateString(datum) + ": " + L("lcl_res_fe_no_dirty") + "');"
+ " END IF;"
}
sql += " UPDATE res_rsv_artikel SET res_rsv_artikel_prijs = NULL WHERE res_rsv_ruimte_key = new_key;";
}
}
sql += " END;"
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
}
sql += " END;"
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
shared.trackaction("RESCPY", rsv_ruimte_key);
var msg = [];