<%@ 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")%>&nbsp;<%=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(); %>
