360 lines
14 KiB
Plaintext
360 lines
14 KiB
Plaintext
<%@ language = "JavaScript" %>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: res_delete.asp
|
|
Description: Toon een dialoog om de huidige of toekomstige te verwijderen
|
|
Staat ook nog toe om de opmerking aan te passen
|
|
Parameters:
|
|
rsv_ruimte_key start RES_RSV_RUIMTE to delete
|
|
Context: Popup vanuit res_show_rsv_ruimte.asp
|
|
Note:
|
|
*/
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/iface.inc" -->
|
|
<!-- #include file="../Shared/save2db.inc" -->
|
|
<!-- #include file="../Shared/selector.inc" -->
|
|
<!-- #include file="res.inc" -->
|
|
<%
|
|
FCLTHeader.Requires();
|
|
|
|
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");
|
|
|
|
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);
|
|
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate()
|
|
|
|
var aantalEerder = 0;
|
|
var aantalLater = 0;
|
|
|
|
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;
|
|
|
|
// 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 (!isMulti)
|
|
{
|
|
if (aantalEerder > 0 || aantalLater > 0)
|
|
{
|
|
buttons.push({ title: L("lcl_res_btn_current"),
|
|
id: "del_current",
|
|
icon: "fa-trash-alt",
|
|
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: "fa-trash-alt",
|
|
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: "fa-trash-alt",
|
|
action: "doDelete(true);",
|
|
tooltip: L("lcl_res_del_txt_total")});
|
|
}
|
|
}
|
|
else
|
|
{
|
|
buttons.push({ title: L("lcl_res_btn_current"),
|
|
id: "del_multi",
|
|
icon: "fa-trash-alt",
|
|
action: "doDelete(false, false);",
|
|
tooltip: L("lcl_res_del_txt_multi").format(amount)});
|
|
}
|
|
buttons.push({ title: L("lcl_cancel"),
|
|
icon: "fa-fclt-cancel",
|
|
tooltip: L("lcl_cancel"),
|
|
action: "FcltMgr.closeDetail(window, { cancel: true } )"});
|
|
|
|
|
|
%>
|
|
<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);
|
|
$("#deletefuture").val(bonWards?1:0);
|
|
// Niet overdrijven met vragen: if (confirm(L("lcl_R_U_sure")))
|
|
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackClose, "json");
|
|
}
|
|
|
|
function selectCharge()
|
|
{
|
|
$(".div_recharge").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 = isMulti ? 1 : parseFloat($("#perc_recharge").val()) / 100;
|
|
var org_ruimte_prijs = <%=safe.jsfloat(orgruimteprijs)%>;
|
|
$("#recharge").val(num2currEditable(perc * org_ruimte_prijs));
|
|
if (!isMulti)
|
|
{
|
|
var totaal = <%=safe.jsfloat(voorzieningenprijs)%> + (perc * org_ruimte_prijs);
|
|
$("#totaalkosten").text(num2currEditable(totaal));
|
|
}
|
|
}
|
|
|
|
$(function()
|
|
{
|
|
if (!$("#cost_recharge").is(":checked"))
|
|
{
|
|
$(".div_perc_recharge").hide();
|
|
$(".div_recharge").hide()
|
|
if (!isMulti)
|
|
{
|
|
$(".div_voorzieningen").hide();
|
|
$(".div_totaalkosten").hide();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!isMulti)
|
|
{
|
|
$("#del_future").hide();
|
|
$("#del_total").hide();
|
|
}
|
|
}
|
|
});
|
|
|
|
</script>
|
|
</head>
|
|
<body class="fclt-modal" id="mod_resdelete">
|
|
<% MODAL_START(); %>
|
|
<form name="u2" action="res_delete_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key_arr%>&doCharge=<%=doCharge%>" method="post">
|
|
<% MODAL_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"), { ishtmlsafe: true, icon: "fa-trash-alt" });
|
|
%>
|
|
<input type='hidden' id='deletefull' name='deletefull' value='0'>
|
|
<input type='hidden' id='deletefuture' name='deletefuture' value='0'>
|
|
<tr><td><label for="opmerk"><%=L("lcl_remark")%></label></td></tr>
|
|
<% RWTEXTAREATR("opmerk", "fldtxt", "", (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 (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(safe.jsfloat(kosten))%></b>
|
|
<input type="hidden" id="cost_recharge" name="cost_recharge" value="on">
|
|
</td>
|
|
</tr>
|
|
<% }
|
|
else if (rechargeType > 1 && urole != 'fe')
|
|
{
|
|
if (rechargeType == 3)
|
|
{
|
|
%>
|
|
<tr>
|
|
<td colspan="2">
|
|
<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 (!isMulti && perc_arr.length > 0)
|
|
{
|
|
var sql_perc = "";
|
|
for (var i in perc_arr)
|
|
{
|
|
sql_perc += (i>0? " UNION " : "") + "SELECT " + perc_arr[i] + ", '" + perc_arr[i] + "%' FROM DUAL";
|
|
}
|
|
FCLTselector("perc_recharge",
|
|
sql_perc,
|
|
{ label: L("lcl_res_charge"),
|
|
trclass: "div_perc_recharge",
|
|
onChange: "onChangePerc()"
|
|
}
|
|
);
|
|
}
|
|
else
|
|
{
|
|
%>
|
|
<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"});
|
|
if (!isMulti)
|
|
{
|
|
ROFIELDTR("fldvoorzkosten", L("lcl_res_voorzieningen_kosten"), voorzieningenprijs, {id: "voorzieningen", trclass: "div_voorzieningen", suppressEmpty: true, datatype: "currency"} );
|
|
ROFIELDTR("fldrvskosten", L("lcl_res_rsv_kosten"), deelresprijs, {id: "totaalkosten", trclass: "div_totaalkosten", suppressEmpty: true, datatype: "currency"} );
|
|
}
|
|
// in alle andere gevallen is cost_recharge niet aanwezig, en krijgt daardoor in res_delete_save de waarde "off"
|
|
}
|
|
MODAL_BLOCK_END();
|
|
SIMPLE_BLOCK_START();
|
|
CreateButtons(buttons, { isDialog: true, vertical: true, showIcons: true });
|
|
SIMPLE_BLOCK_END();
|
|
IFACE.FORM_END();
|
|
%>
|
|
</form>
|
|
<% MODAL_END(); %>
|
|
</body>
|
|
</html><% ASPPAGE_END(); %>
|