UWVA#36810 Bulk actie reserveringen deleten kan nu met opmerkingen en kostendoorberekening
svn path=/Website/trunk/; revision=33247
This commit is contained in:
@@ -20,110 +20,191 @@
|
||||
<%
|
||||
FCLTHeader.Requires();
|
||||
|
||||
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
|
||||
var rsv_ruimte_key_arr = getQParamIntArray("rsv_ruimte_key");
|
||||
var amount = rsv_ruimte_key_arr.length;
|
||||
var isMulti = amount > 1;
|
||||
var rrr = new Array(amount);
|
||||
var this_res = new Array(amount);
|
||||
var canDeleteAny = false;
|
||||
|
||||
var urole = getQParamSafe("urole");
|
||||
|
||||
// Altijd handig
|
||||
var sql = "SELECT res_reservering_key"
|
||||
+ " , rrr.res_rsv_ruimte_van"
|
||||
+ " , res_rsv_ruimte_volgnr"
|
||||
+ " , COALESCE(res_rsv_ruimte_opmerking,'') res_rsv_ruimte_opmerking"
|
||||
+ " , alg_ruimte_key"
|
||||
+ " , res_status_fo_key"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
|
||||
oRs = Oracle.Execute(sql);
|
||||
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
|
||||
reservering_key : oRs("res_reservering_key").value,
|
||||
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value),
|
||||
rsv_ruimte_volgnr : oRs("res_rsv_ruimte_volgnr").value,
|
||||
rsv_ruimte_opmerking : oRs("res_rsv_ruimte_opmerking").value,
|
||||
restype : (oRs("alg_ruimte_key").value != null? "CV" : "R"),
|
||||
res_status_fo_key : oRs("res_status_fo_key").value
|
||||
}
|
||||
for (var i = 0; i < amount; i++)
|
||||
{
|
||||
// Altijd handig
|
||||
var sql = "SELECT res_reservering_key"
|
||||
+ " , rrr.res_rsv_ruimte_van"
|
||||
+ " , res_rsv_ruimte_volgnr"
|
||||
+ " , COALESCE(res_rsv_ruimte_opmerking,'') res_rsv_ruimte_opmerking"
|
||||
+ " , alg_ruimte_key"
|
||||
+ " , res_status_fo_key"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key_arr[i];
|
||||
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
rrr[i] = { rsv_ruimte_key : rsv_ruimte_key_arr[i],
|
||||
reservering_key : oRs("res_reservering_key").value,
|
||||
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value),
|
||||
rsv_ruimte_volgnr : oRs("res_rsv_ruimte_volgnr").value,
|
||||
rsv_ruimte_opmerking : oRs("res_rsv_ruimte_opmerking").value,
|
||||
restype : (oRs("alg_ruimte_key").value != null? "CV" : "R"),
|
||||
res_status_fo_key : oRs("res_status_fo_key").value
|
||||
};
|
||||
|
||||
oRs.Close();
|
||||
res.res_set_dialect(rsv_ruimte_key_arr[i]);
|
||||
this_res[i] = res.func_enabled(rsv_ruimte_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
||||
canDeleteAny |= this_res[i].canDelete;
|
||||
}
|
||||
|
||||
user.auth_required_or_abort(canDeleteAny);
|
||||
|
||||
oRs.Close();
|
||||
res.res_set_dialect(rsv_ruimte_key);
|
||||
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.canDelete);
|
||||
%>
|
||||
<html>
|
||||
<head>
|
||||
<% FCLTHeader.Generate()
|
||||
|
||||
// Aantal toekomst
|
||||
var sql = "SELECT count(distinct res_rsv_ruimte_volgnr)"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr,"
|
||||
+ " res_v_aanwezigrsv_deel rd,"
|
||||
+ " res_v_aanwezigrsv_artikel ra"
|
||||
+ " WHERE res_reservering_key = " + rrr.reservering_key
|
||||
+ " AND ra.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND rd.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND res_rsv_ruimte_van >= " + rrr.rsv_ruimte_van.toSQL()
|
||||
+ " AND rr.res_rsv_ruimte_key <> " + rsv_ruimte_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
var aantalLater = oRs(0).value;
|
||||
var aantalEerder = 0;
|
||||
var aantalLater = 0;
|
||||
|
||||
// Aantal verleden
|
||||
var sql = "SELECT count(distinct res_rsv_ruimte_volgnr)"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr,"
|
||||
+ " res_v_aanwezigrsv_deel rd,"
|
||||
+ " res_v_aanwezigrsv_artikel ra"
|
||||
+ " WHERE res_reservering_key = " + rrr.reservering_key
|
||||
+ " AND ra.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND rd.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND res_rsv_ruimte_van < " + rrr.rsv_ruimte_van.toSQL()
|
||||
+ " AND rr.res_rsv_ruimte_key <> " + rsv_ruimte_key;
|
||||
oRs = Oracle.Execute(sql);
|
||||
var aantalEerder = oRs(0).value;
|
||||
oRs.Close();
|
||||
if (!isMulti)
|
||||
{
|
||||
// Aantal toekomst
|
||||
var sql = "SELECT count(distinct res_rsv_ruimte_volgnr)"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr,"
|
||||
+ " res_v_aanwezigrsv_deel rd,"
|
||||
+ " res_v_aanwezigrsv_artikel ra"
|
||||
+ " WHERE res_reservering_key = " + rrr[0].reservering_key
|
||||
+ " AND ra.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND rd.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND res_rsv_ruimte_van >= " + rrr[0].rsv_ruimte_van.toSQL()
|
||||
+ " AND rr.res_rsv_ruimte_key <> " + rsv_ruimte_key_arr[0];
|
||||
oRs = Oracle.Execute(sql);
|
||||
aantalLater = oRs(0).value;
|
||||
|
||||
// Maximale kostendoorberekening van de te verwijderen reservering ophalen
|
||||
var kosten = this_res.max_dbkosten;
|
||||
var sql = "SELECT res.getruimteprijs (" + rsv_ruimte_key + ", 1) org_ruimteprijs"
|
||||
+ " , res.getdeelresprijs (" + rsv_ruimte_key + ") deelresprijs"
|
||||
+ " , COALESCE(res_rsv_ruimte_totaal, res.getruimteprijs (" + rsv_ruimte_key + ", 1)) afspr_ruimteprijs"
|
||||
+ " , (SELECT SUM (res.getartikelprijs (res_rsv_artikel_key))"
|
||||
+ " FROM res_rsv_artikel"
|
||||
+ " WHERE res_rsv_artikel_dirtlevel = 0"
|
||||
+ " AND res_rsv_ruimte_key = " + rsv_ruimte_key + ") artikelprijs"
|
||||
+ " , (SELECT SUM (res.getdeelprijs (res_rsv_deel_key))"
|
||||
+ " FROM res_rsv_deel"
|
||||
+ " WHERE res_rsv_deel_dirtlevel = 0"
|
||||
+ " AND res_rsv_ruimte_key = " + rsv_ruimte_key + ") deelprijs"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var afsprruimteprijs = oRs("afspr_ruimteprijs").Value;
|
||||
var orgruimteprijs = oRs("org_ruimteprijs").Value;
|
||||
var voorzieningenprijs = oRs("artikelprijs").Value + oRs("deelprijs").Value;
|
||||
var deelresprijs = oRs("deelresprijs").Value;
|
||||
oRs.Close();
|
||||
// Aantal verleden
|
||||
var sql = "SELECT count(distinct res_rsv_ruimte_volgnr)"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rr,"
|
||||
+ " res_v_aanwezigrsv_deel rd,"
|
||||
+ " res_v_aanwezigrsv_artikel ra"
|
||||
+ " WHERE res_reservering_key = " + rrr[0].reservering_key
|
||||
+ " AND ra.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND rd.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key"
|
||||
+ " AND res_rsv_ruimte_van < " + rrr[0].rsv_ruimte_van.toSQL()
|
||||
+ " AND rr.res_rsv_ruimte_key <> " + rsv_ruimte_key_arr[0];
|
||||
oRs = Oracle.Execute(sql);
|
||||
aantalEerder = oRs(0).value;
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
var tempType = 0;
|
||||
var rechargeType = 0; // No recharge
|
||||
var kosten = 0;
|
||||
var orgruimteprijs = 0;
|
||||
var afsprruimteprijs = 0;
|
||||
var doCharge = new Array(amount);
|
||||
|
||||
for (var i = 0; i < amount; i++)
|
||||
{
|
||||
// Maximale kostendoorberekening van de te verwijderen reservering ophalen
|
||||
var sql = "SELECT res.getruimteprijs (" + rsv_ruimte_key_arr[i] + ", 1) org_ruimteprijs"
|
||||
+ " , res.getdeelresprijs (" + rsv_ruimte_key_arr[i] + ") deelresprijs"
|
||||
+ " , COALESCE(res_rsv_ruimte_totaal, res.getruimteprijs (" + rsv_ruimte_key_arr[i] + ", 1)) afspr_ruimteprijs"
|
||||
+ " , (SELECT SUM (res.getartikelprijs (res_rsv_artikel_key))"
|
||||
+ " FROM res_rsv_artikel"
|
||||
+ " WHERE res_rsv_artikel_dirtlevel = 0"
|
||||
+ " AND res_rsv_ruimte_key = " + rsv_ruimte_key_arr[i] + ") artikelprijs"
|
||||
+ " , (SELECT SUM (res.getdeelprijs (res_rsv_deel_key))"
|
||||
+ " FROM res_rsv_deel"
|
||||
+ " WHERE res_rsv_deel_dirtlevel = 0"
|
||||
+ " AND res_rsv_ruimte_key = " + rsv_ruimte_key_arr[i] + ") deelprijs"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key_arr[i];
|
||||
var oRs = Oracle.Execute(sql);
|
||||
|
||||
if (isMulti)
|
||||
{
|
||||
rrr[i].kosten = this_res[i].max_dbkosten;
|
||||
rrr[i].orgruimteprijs = oRs("org_ruimteprijs").Value;
|
||||
rrr[i].afsprruimteprijs = oRs("afspr_ruimteprijs").Value;
|
||||
|
||||
// Take minimum but not 0
|
||||
if (rrr[i].kosten > 0 && (kosten > rrr[i].kosten || kosten == 0))
|
||||
kosten = rrr[i].kosten;
|
||||
if (rrr[i].orgruimteprijs > 0 && (orgruimteprijs > rrr[i].orgruimteprijs || orgruimteprijs == 0))
|
||||
orgruimteprijs = rrr[i].orgruimteprijs;
|
||||
if (rrr[i].afsprruimteprijs > 0 && (afsprruimteprijs > rrr[i].afsprruimteprijs || afsprruimteprijs == 0))
|
||||
afsprruimteprijs = rrr[i].afsprruimteprijs;
|
||||
}
|
||||
else
|
||||
{
|
||||
kosten = this_res[i].max_dbkosten;
|
||||
orgruimteprijs = oRs("org_ruimteprijs").Value;
|
||||
afsprruimteprijs = oRs("afspr_ruimteprijs").Value;
|
||||
|
||||
var deelresprijs = oRs("deelresprijs").Value;
|
||||
var voorzieningenprijs = oRs("artikelprijs").Value + oRs("deelprijs").Value;
|
||||
}
|
||||
|
||||
oRs.Close();
|
||||
|
||||
tempType = 0;
|
||||
if (rrr[i].restype == "CV" && (isMulti ? rrr[i].kosten : kosten) > 0)
|
||||
{
|
||||
tempType = 1;
|
||||
}
|
||||
else if (rrr[i].restype == "R")
|
||||
{
|
||||
if (((S("res_delete_ask_kosten") == 1) && ((isMulti ? rrr[i].kosten : kosten) > 0)) // na annuleringshorizon
|
||||
|| ((S("res_delete_ask_kosten") == 2) && (rrr[i].res_status_fo_key == 2)) // definitieve reservering
|
||||
|| ((S("res_delete_ask_kosten") == 3) && (rrr[i].res_status_fo_key == 2) && ((isMulti ? rrr[i].kosten : kosten) > 0))) // definitieve reservering na annuleringshorizon
|
||||
tempType = 3;
|
||||
else
|
||||
tempType = 2;
|
||||
}
|
||||
|
||||
doCharge[i] = (tempType == 1 || tempType == 3) ? 1 : 0;
|
||||
|
||||
if (tempType > rechargeType)
|
||||
rechargeType = tempType;
|
||||
}
|
||||
|
||||
buttons = [];
|
||||
if (aantalEerder > 0 || aantalLater > 0)
|
||||
if (!isMulti)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_current"),
|
||||
id: "del_current",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(false, false);",
|
||||
tooltip: L("lcl_res_del_txt_current") + " " + rrr.rsv_ruimte_volgnr});
|
||||
if (aantalEerder > 0 || aantalLater > 0)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_current"),
|
||||
id: "del_current",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(false, false);",
|
||||
tooltip: L("lcl_res_del_txt_current") + " " + rrr[0].rsv_ruimte_volgnr});
|
||||
}
|
||||
if (aantalEerder > 0 && aantalLater > 0)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_future"),
|
||||
id: "del_future",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(false, true);",
|
||||
tooltip: L("lcl_res_del_txt_future")});
|
||||
}
|
||||
if (urole != 'fe' || aantalEerder == 0)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_total"),
|
||||
id: "del_total",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(true);",
|
||||
tooltip: L("lcl_res_del_txt_total")});
|
||||
}
|
||||
}
|
||||
if (aantalEerder > 0 && aantalLater > 0)
|
||||
else
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_future"),
|
||||
id: "del_future",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(false, true);",
|
||||
tooltip: L("lcl_res_del_txt_future")});
|
||||
}
|
||||
if (urole != 'fe' || aantalEerder == 0)
|
||||
{
|
||||
buttons.push({ title: L("lcl_res_btn_total"),
|
||||
id: "del_total",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(true);",
|
||||
tooltip: L("lcl_res_del_txt_total")});
|
||||
buttons.push({ title: L("lcl_res_btn_current"),
|
||||
id: "del_multi",
|
||||
icon: "delete.png",
|
||||
action: "doDelete(false, false);",
|
||||
tooltip: L("lcl_res_del_txt_multi").format(amount)});
|
||||
}
|
||||
buttons.push({ title: L("lcl_cancel"),
|
||||
icon: "cancel.png",
|
||||
@@ -135,6 +216,8 @@ user.auth_required_or_abort(this_res.canDelete);
|
||||
<script type="text/javascript">
|
||||
// full: complete reservering weggooien
|
||||
// bonWards: vanaf datum huidige res_rsv_ruimte voorwaarts
|
||||
var isMulti = <%=amount%> > 1;
|
||||
|
||||
function doDelete(bFull, bonWards)
|
||||
{
|
||||
$("#deletefull").val(bFull?1:0);
|
||||
@@ -145,80 +228,95 @@ user.auth_required_or_abort(this_res.canDelete);
|
||||
|
||||
function selectCharge()
|
||||
{
|
||||
$(".div_perc_recharge").toggle();
|
||||
$(".div_recharge").toggle();
|
||||
$(".div_voorzieningen").toggle();
|
||||
$(".div_totaalkosten").toggle();
|
||||
$("#del_future").toggle();
|
||||
if (<%=aantalEerder%> != 0 || <%=aantalLater%> != 0)
|
||||
$("#del_total").toggle();
|
||||
onChangePerc();
|
||||
if (!isMulti)
|
||||
{
|
||||
$("#del_future").toggle();
|
||||
$(".div_perc_recharge").toggle();
|
||||
$(".div_voorzieningen").toggle();
|
||||
$(".div_totaalkosten").toggle();
|
||||
if (<%=aantalEerder%> != 0 || <%=aantalLater%> != 0)
|
||||
$("#del_total").toggle();
|
||||
}
|
||||
FcltMgr.resized();
|
||||
}
|
||||
|
||||
function onChangePerc()
|
||||
{
|
||||
var perc = parseFloat($("#perc_recharge").val()) / 100;
|
||||
var perc = isMulti ? 1 : parseFloat($("#perc_recharge").val()) / 100;
|
||||
var org_ruimte_prijs = <%=safe.jsfloat(orgruimteprijs)%>;
|
||||
var totaal = <%=safe.jsfloat(voorzieningenprijs)%> + (perc * org_ruimte_prijs);
|
||||
$("#recharge").val(num2currEditable(perc * org_ruimte_prijs));
|
||||
$("#totaalkosten").text(num2currEditable(totaal));
|
||||
if (!isMulti)
|
||||
{
|
||||
var totaal = <%=safe.jsfloat(voorzieningenprijs)%> + (perc * org_ruimte_prijs);
|
||||
$("#totaalkosten").text(num2currEditable(totaal));
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
if (!$("#cost_recharge").is(":checked"))
|
||||
{
|
||||
$(".div_perc_recharge").hide();
|
||||
$(".div_recharge").hide()
|
||||
$(".div_voorzieningen").hide();
|
||||
$(".div_totaalkosten").hide();
|
||||
if (!isMulti)
|
||||
{
|
||||
$(".div_voorzieningen").hide();
|
||||
$(".div_totaalkosten").hide();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#del_future").hide();
|
||||
$("#del_total").hide();
|
||||
if (!isMulti)
|
||||
{
|
||||
$("#del_future").hide();
|
||||
$("#del_total").hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body class="modal" id="mod_resdelete">
|
||||
<form name="u2" action="res_delete_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>" method="post">
|
||||
<form name="u2" action="res_delete_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key_arr%>&doCharge=<%=doCharge%>" method="post">
|
||||
<input type='hidden' id='deletefull' name='deletefull' value='0'>
|
||||
<input type='hidden' id='deletefuture' name='deletefuture' value='0'>
|
||||
|
||||
<% BLOCK_START("resDelete", L("lcl_res_deel_head1") + " " + (aantalEerder + 1 + aantalLater) + " " + L("lcl_res_deel_head2"));
|
||||
<% BLOCK_START("resDelete", isMulti ? L("lcl_res_del_multi_head").format(amount) : L("lcl_res_deel_head1") + " " + (aantalEerder + 1 + aantalLater) + " " + L("lcl_res_deel_head2"));
|
||||
%> <tr><td><label><%=L("lcl_remark")%>:</label></td></tr>
|
||||
<% RWTEXTAREATR("opmerk", "fldomschr", "", (rrr.rsv_ruimte_opmerking || ""), {tdhtml_ta: "colspan=2", html: "rows='4'"});
|
||||
<% RWTEXTAREATR("opmerk", "fldomschr", "", (isMulti ? "" : (rrr[0].rsv_ruimte_opmerking || "")), {tdhtml_ta: "colspan=2", html: "rows='4'"});
|
||||
|
||||
// Als de kosten hoger zijn als nul dan was de annuleringshorizon verstreken
|
||||
if (rrr.restype == "CV" && (kosten > 0) && urole != 'fe')
|
||||
if (rechargeType == 1 && urole != 'fe') // TODO: is always treated as 100% now, so why format(kosten)?
|
||||
{
|
||||
%>
|
||||
<tr>
|
||||
<td colspan=2>
|
||||
<b><%=L("lcl_res_kostendoorbelast").format(kosten)%></b>
|
||||
<b><%=L("lcl_res_kostendoorbelast").format(safe.jsfloat(kosten))%></b>
|
||||
<input type="hidden" id="cost_recharge" name="cost_recharge" value="on">
|
||||
</td>
|
||||
</tr>
|
||||
<% }
|
||||
else if (rrr.restype == "R" && urole != 'fe')
|
||||
else if (rechargeType > 1 && urole != 'fe')
|
||||
{
|
||||
if ( ((S("res_delete_ask_kosten") == 1) && (kosten > 0)) // na annuleringshorizon
|
||||
|| ((S("res_delete_ask_kosten") == 2) && (rrr.res_status_fo_key == 2)) // definitieve reservering
|
||||
|| ((S("res_delete_ask_kosten") == 3) && (rrr.res_status_fo_key == 2) && (kosten > 0)) // definitieve reservering na annuleringshorizon
|
||||
)
|
||||
if (rechargeType == 3)
|
||||
{
|
||||
%>
|
||||
<tr>
|
||||
<td colspan=2>
|
||||
<label for="cost_recharge"><%=L("lcl_res_kostendoorbelasten")%> (<%=L("lcl_maximal")%> <%=kosten%>%)</label>
|
||||
<label for="cost_recharge"><%=L("lcl_res_kostendoorbelasten")%>
|
||||
<% if (!isMulti)
|
||||
{ %>
|
||||
(<%=L("lcl_maximal")%> <%=safe.jsfloat(kosten)%>%)
|
||||
<% } %>
|
||||
</label>
|
||||
<% CHECKBOX("", "cost_recharge", null, {html: "onchange='selectCharge();'"} ) %>
|
||||
</td>
|
||||
</tr>
|
||||
<%
|
||||
var perc_arr = S("res_delete_charge_perc");
|
||||
if (perc_arr.length > 0)
|
||||
if (!isMulti && perc_arr.length > 0)
|
||||
{
|
||||
var sql_perc = "";
|
||||
for (var i in perc_arr)
|
||||
@@ -236,13 +334,16 @@ user.auth_required_or_abort(this_res.canDelete);
|
||||
else
|
||||
{
|
||||
%>
|
||||
<input type="hidden" id="perc_recharge" name=perc_recharge" value="100">
|
||||
<input type="hidden" id="perc_recharge" name="perc_recharge" value="100">
|
||||
<%
|
||||
}
|
||||
}
|
||||
RWFIELDTR("recharge", "fldrecharge", L("lcl_res_charge_total"), safe.curreditable(afsprruimteprijs), {required: true, datatype: "currency", trclass: "div_recharge" });
|
||||
ROFIELDTR("fldvoorzkosten", L("lcl_res_voorzieningen_kosten"), safe.curr(voorzieningenprijs), {id: "voorzieningen", trclass: "div_voorzieningen", suppressEmpty: true} );
|
||||
ROFIELDTR("fldrvskosten", L("lcl_res_rsv_kosten"), safe.curr(deelresprijs), {id: "totaalkosten", trclass: "div_totaalkosten", suppressEmpty: true} );
|
||||
RWFIELDTR("recharge", "fldrecharge", L("lcl_res_charge_total"), safe.curreditable(afsprruimteprijs), {required: true, datatype: "currency", trclass: "div_recharge"});
|
||||
if (!isMulti)
|
||||
{
|
||||
ROFIELDTR("fldvoorzkosten", L("lcl_res_voorzieningen_kosten"), safe.curr(voorzieningenprijs), {id: "voorzieningen", trclass: "div_voorzieningen", suppressEmpty: true} );
|
||||
ROFIELDTR("fldrvskosten", L("lcl_res_rsv_kosten"), safe.curr(deelresprijs), {id: "totaalkosten", trclass: "div_totaalkosten", suppressEmpty: true} );
|
||||
}
|
||||
// in alle andere gevallen is cost_recharge niet aanwezig, en krijgt daardoor in res_delete_save de waarde "off"
|
||||
}
|
||||
%>
|
||||
|
||||
@@ -19,138 +19,157 @@ var JSON_Result = true;
|
||||
<%
|
||||
protectRequest.validateToken();
|
||||
|
||||
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key");
|
||||
res.res_set_dialect(rsv_ruimte_key);
|
||||
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.canDelete);
|
||||
var rsv_ruimte_key_arr = getQParamIntArray("rsv_ruimte_key");
|
||||
var doCharge = getQParamIntArray("doCharge", [1]);
|
||||
var amount = rsv_ruimte_key_arr.length;
|
||||
var isMulti = amount > 1;
|
||||
var this_res = new Array(amount);
|
||||
var rrr = new Array(amount);
|
||||
var canDeleteAny = false;
|
||||
|
||||
// Altijd handig
|
||||
var sql = "SELECT res_reservering_key"
|
||||
+ " , rrr.res_rsv_ruimte_van"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
|
||||
for(var i = 0; i < amount; i++)
|
||||
{
|
||||
res.res_set_dialect(rsv_ruimte_key_arr[i]);
|
||||
this_res[i] = res.func_enabled(rsv_ruimte_key_arr[i]); // Wat heb ik zoal aan rechten op deze specifieke reservering
|
||||
canDeleteAny |= this_res[i].canDelete;
|
||||
|
||||
oRs = Oracle.Execute(sql);
|
||||
var rrr = { rsv_ruimte_key : rsv_ruimte_key,
|
||||
reservering_key : oRs("res_reservering_key").value,
|
||||
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value)
|
||||
}
|
||||
// Altijd handig
|
||||
var sql = "SELECT res_reservering_key"
|
||||
+ " , rrr.res_rsv_ruimte_van"
|
||||
+ " FROM res_rsv_ruimte rrr"
|
||||
+ " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key_arr[i]
|
||||
|
||||
oRs.Close();
|
||||
oRs = Oracle.Execute(sql);
|
||||
|
||||
rrr[i] = { rsv_ruimte_key : rsv_ruimte_key_arr[i],
|
||||
reservering_key : oRs("res_reservering_key").value,
|
||||
rsv_ruimte_van : new Date(oRs("res_rsv_ruimte_van").value)
|
||||
}
|
||||
|
||||
oRs.Close();
|
||||
|
||||
}
|
||||
|
||||
user.auth_required_or_abort(canDeleteAny);
|
||||
|
||||
var cost_recharge = getFParam("cost_recharge", "off") == "on";
|
||||
var deletefull = getFParamInt("deletefull", 0) == 1;
|
||||
var deletefuture = getFParamInt("deletefuture", 0) == 1;
|
||||
var perc_recharge = getFParamFloat("perc_recharge", 100);
|
||||
|
||||
// Alle niet-admin ruimtes die geen admin- voorzieningen hebben
|
||||
var to_do_rsv_ruimte_key = " res_rsv_ruimte_key IN ("
|
||||
+ " SELECT rs.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rs"
|
||||
+ " WHERE rs.res_reservering_key = " + this_res.res_reservering_key
|
||||
+ " AND (rs.res_status_bo_key != 6 OR rs.res_status_bo_key IS NULL)" // NULL bij CV
|
||||
+ " MINUS"
|
||||
+ " (SELECT rd.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_deel rd"
|
||||
+ " , res_v_aanwezigrsv_ruimte rr"
|
||||
+ " WHERE rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
||||
+ " AND rr.res_reservering_key = " + this_res.res_reservering_key
|
||||
+ " AND rd.res_status_bo_key = 6"
|
||||
+ " UNION"
|
||||
+ " SELECT ra.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_artikel ra"
|
||||
+ " , res_v_aanwezigrsv_ruimte rr"
|
||||
+ " WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
||||
+ " AND rr.res_reservering_key = " + this_res.res_reservering_key
|
||||
+ " AND ra.res_status_bo_key = 6))";
|
||||
if (deletefuture)
|
||||
to_do_rsv_ruimte_key += " AND res_rsv_ruimte_van >= "+rrr.rsv_ruimte_van.toSQL();
|
||||
else
|
||||
if (!deletefull)
|
||||
to_do_rsv_ruimte_key += " AND res_rsv_ruimte_key = " + rsv_ruimte_key;
|
||||
|
||||
// vind de te verwijderen rsv_ruimte_keys
|
||||
sql = "SELECT res_rsv_ruimte_key"
|
||||
+ " FROM res_rsv_ruimte"
|
||||
+ " WHERE res_reservering_key=" + this_res.res_reservering_key
|
||||
+ " AND res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND " + to_do_rsv_ruimte_key;
|
||||
|
||||
oRs2 = Oracle.Execute(sql);
|
||||
while (!oRs2.eof)
|
||||
for(var i = 0; i < amount; i++)
|
||||
{
|
||||
var one_rsv_ruimte_key = oRs2("res_rsv_ruimte_key");
|
||||
var this_res2 = res.func_enabled(one_rsv_ruimte_key); // Wat mag ik op deze deelreservering
|
||||
if (!this_res2.canDelete)
|
||||
{
|
||||
oRs2.MoveNext()
|
||||
continue; // Niet al te veel zeuren
|
||||
}
|
||||
|
||||
DeleteResAfspraak(one_rsv_ruimte_key);
|
||||
// update ruimte
|
||||
// objects en articles are deleted automatically if the RES_RSV_RUIMTE is deleted
|
||||
// Deze velden altijd opslaan
|
||||
var fields = [ { dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk" },
|
||||
{ dbs: "res_status_fo_key", typ: "key", val: (cost_recharge? 4 : 1) }, // status 1=optie, 4=vervallen
|
||||
{ dbs: "res_rsv_ruimte_verwijder", typ: "sql", val: "SYSDATE" }
|
||||
];
|
||||
|
||||
if (cost_recharge)
|
||||
{
|
||||
if (!deletefull && !deletefuture && hasFParam("recharge"))
|
||||
{
|
||||
fields.push( {dbs: "res_rsv_ruimte_totaal", typ: "float", frm: "recharge"} );
|
||||
}
|
||||
// Alle niet-admin ruimtes die geen admin- voorzieningen hebben
|
||||
var to_do_rsv_ruimte_key = " res_rsv_ruimte_key IN ("
|
||||
+ " SELECT rs.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte rs"
|
||||
+ " WHERE rs.res_reservering_key = " + this_res[i].res_reservering_key
|
||||
+ " AND (rs.res_status_bo_key != 6 OR rs.res_status_bo_key IS NULL)" // NULL bij CV
|
||||
+ " MINUS"
|
||||
+ " (SELECT rd.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_deel rd"
|
||||
+ " , res_v_aanwezigrsv_ruimte rr"
|
||||
+ " WHERE rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
||||
+ " AND rr.res_reservering_key = " + this_res[i].res_reservering_key
|
||||
+ " AND rd.res_status_bo_key = 6"
|
||||
+ " UNION"
|
||||
+ " SELECT ra.res_rsv_ruimte_key"
|
||||
+ " FROM res_v_aanwezigrsv_artikel ra"
|
||||
+ " , res_v_aanwezigrsv_ruimte rr"
|
||||
+ " WHERE ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key"
|
||||
+ " AND rr.res_reservering_key = " + this_res[i].res_reservering_key
|
||||
+ " AND ra.res_status_bo_key = 6))";
|
||||
if (deletefuture)
|
||||
to_do_rsv_ruimte_key += " AND res_rsv_ruimte_van >= "+rrr[i].rsv_ruimte_van.toSQL();
|
||||
else
|
||||
if (!deletefull)
|
||||
to_do_rsv_ruimte_key += " AND res_rsv_ruimte_key = " + rsv_ruimte_key_arr[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
|
||||
+ " AND res_rsv_ruimte_verwijder IS NULL"
|
||||
+ " AND " + to_do_rsv_ruimte_key;
|
||||
|
||||
oRs2 = Oracle.Execute(sql);
|
||||
while (!oRs2.eof)
|
||||
{
|
||||
var sql = "SELECT res.getruimteprijs (" + one_rsv_ruimte_key + ", 1) org_ruimteprijs"
|
||||
+ " FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var ruimteprijs = oRs("org_ruimteprijs").Value * (perc_recharge / 100);
|
||||
var one_rsv_ruimte_key = oRs2("res_rsv_ruimte_key");
|
||||
var this_res2 = res.func_enabled(one_rsv_ruimte_key); // Wat mag ik op deze deelreservering
|
||||
if (!this_res2.canDelete)
|
||||
{
|
||||
oRs2.MoveNext()
|
||||
continue; // Niet al te veel zeuren
|
||||
}
|
||||
|
||||
DeleteResAfspraak(one_rsv_ruimte_key);
|
||||
// update ruimte
|
||||
// objects en articles are deleted automatically if the RES_RSV_RUIMTE is deleted
|
||||
// Deze velden altijd opslaan
|
||||
var fields = [ { dbs: "res_rsv_ruimte_opmerking", typ: "varchar", frm: "opmerk" },
|
||||
{ dbs: "res_status_fo_key", typ: "key", val: (cost_recharge? 4 : 1) }, // status 1=optie, 4=vervallen
|
||||
{ dbs: "res_rsv_ruimte_verwijder", typ: "sql", val: "SYSDATE" }
|
||||
];
|
||||
|
||||
if ((!isMulti && cost_recharge) || (isMulti && doCharge[i] == 1))
|
||||
{
|
||||
if (!deletefull && !deletefuture && hasFParam("recharge"))
|
||||
{
|
||||
fields.push( {dbs: "res_rsv_ruimte_totaal", typ: "float", frm: "recharge"} );
|
||||
}
|
||||
else
|
||||
{
|
||||
var sql = "SELECT res.getruimteprijs (" + one_rsv_ruimte_key + ", 1) org_ruimteprijs"
|
||||
+ " FROM DUAL";
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var ruimteprijs = oRs("org_ruimteprijs").Value * (perc_recharge / 100);
|
||||
oRs.Close();
|
||||
fields.push( {dbs: "res_rsv_ruimte_totaal", typ: "float", val: ruimteprijs} );
|
||||
}
|
||||
}
|
||||
|
||||
sql = buildUpdate("res_rsv_ruimte", fields)
|
||||
+ " res_rsv_ruimte_key = " + one_rsv_ruimte_key;
|
||||
|
||||
// ons eigen tijdstip/zaal is mogelijk gewijzigd waardoor andere *dirty* reserveringen
|
||||
// clean wordt. Even onze oude datum onthouden zodat we niet *alles* hoeven te controleren
|
||||
oRs = Oracle.Execute("select res_rsv_ruimte_van,"
|
||||
+ " res_rsv_ruimte_tot"
|
||||
+ " from res_rsv_ruimte"
|
||||
+ " where res_rsv_ruimte_key = " + one_rsv_ruimte_key);
|
||||
var oldvan = new Date(oRs("res_rsv_ruimte_van").value);
|
||||
var oldtot = new Date(oRs("res_rsv_ruimte_tot").value);
|
||||
oRs.Close();
|
||||
fields.push( {dbs: "res_rsv_ruimte_totaal", typ: "float", val: ruimteprijs} );
|
||||
|
||||
// Nu de echte update.
|
||||
// Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken'
|
||||
sql = "BEGIN "
|
||||
+ sql + ";"
|
||||
+ " res.set_ruimte_dirty (" + one_rsv_ruimte_key + "); " // Zelf dirty 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
|
||||
+ "END;";
|
||||
Oracle.Execute( sql );
|
||||
|
||||
shared.trackaction("RESDEL", one_rsv_ruimte_key);
|
||||
oRs2.MoveNext();
|
||||
}
|
||||
}
|
||||
oRs2.Close();
|
||||
|
||||
sql = buildUpdate("res_rsv_ruimte", fields)
|
||||
+ " res_rsv_ruimte_key = " + one_rsv_ruimte_key;
|
||||
// En tenslotte eventueel de reservering zelf nog
|
||||
sql = "UPDATE res_reservering "
|
||||
+ " SET res_reservering_verwijder=SYSDATE"
|
||||
+ " WHERE res_reservering_key="+this_res[i].res_reservering_key
|
||||
+ " AND NOT EXISTS (SELECT *"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte"
|
||||
+ " WHERE res_reservering_key=" + this_res[i].res_reservering_key + ")"
|
||||
|
||||
// ons eigen tijdstip/zaal is mogelijk gewijzigd waardoor andere *dirty* reserveringen
|
||||
// clean wordt. Even onze oude datum onthouden zodat we niet *alles* hoeven te controleren
|
||||
oRs = Oracle.Execute("select res_rsv_ruimte_van,"
|
||||
+ " res_rsv_ruimte_tot"
|
||||
+ " from res_rsv_ruimte"
|
||||
+ " where res_rsv_ruimte_key = " + one_rsv_ruimte_key);
|
||||
var oldvan = new Date(oRs("res_rsv_ruimte_van").value);
|
||||
var oldtot = new Date(oRs("res_rsv_ruimte_tot").value);
|
||||
oRs.Close();
|
||||
Oracle.Execute( sql );
|
||||
|
||||
// Nu de echte update.
|
||||
// Daarbij ook diverse controles/ updates uitvoeren op 'andere zaken'
|
||||
sql = "BEGIN "
|
||||
+ sql + ";"
|
||||
+ " res.set_ruimte_dirty (" + one_rsv_ruimte_key + "); " // Zelf dirty 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
|
||||
+ "END;";
|
||||
Oracle.Execute( sql );
|
||||
|
||||
shared.trackaction("RESDEL", one_rsv_ruimte_key);
|
||||
oRs2.MoveNext();
|
||||
}
|
||||
oRs2.Close();
|
||||
|
||||
// En tenslotte eventueel de reservering zelf nog
|
||||
sql = "UPDATE res_reservering "
|
||||
+ " SET res_reservering_verwijder=SYSDATE"
|
||||
+ " WHERE res_reservering_key="+this_res.res_reservering_key
|
||||
+ " AND NOT EXISTS (SELECT *"
|
||||
+ " FROM res_v_aanwezigrsv_ruimte"
|
||||
+ " WHERE res_reservering_key=" + this_res.res_reservering_key + ")"
|
||||
|
||||
Oracle.Execute( sql );
|
||||
|
||||
message = ""; /* message: "Deelreservering is verwijderd" */
|
||||
|
||||
|
||||
@@ -25,19 +25,10 @@ function inlineVoorzieningUrl(row)
|
||||
|
||||
function resMultiDelete(rowArray)
|
||||
{
|
||||
var res_key_arr = getKeyString(rowArray).split(",");
|
||||
var tableID = $(rowArray).closest('table').attr('id');
|
||||
for (var i = 0; i < res_key_arr.length; i++)
|
||||
{
|
||||
var c = i
|
||||
var data = {};
|
||||
protectRequest.dataToken(data);
|
||||
$.post("res_delete_save.asp?rsv_ruimte_key="+res_key_arr[i], data, FcltCallbackAndThen(function (i) { return function() {
|
||||
$(rowArray).eq(i).remove();
|
||||
toggleFooter(tableID);
|
||||
}
|
||||
}(i)), "json");
|
||||
}
|
||||
var res_key_arr = getKeyString(rowArray);
|
||||
var subject = L("lcl_delete");
|
||||
var url = "res_delete.asp?urole=" + urole + "&rsv_ruimte_key=" + res_key_arr;
|
||||
FcltMgr.openModalDetail(url, subject, {callback: function() { return reloadList(); } });
|
||||
}
|
||||
|
||||
function resEdit(row)
|
||||
|
||||
Reference in New Issue
Block a user