<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

    File:               res_cleanup.asp
    Remark:             Schoont een dirty reservering (deels) op door
                        alle foute artikelen en delen te verwijderen
                        Ze worden echt met DELETE verwijderd, net als res_edit_objcat_save dat zou doen
    Parameters:
        rsv_ruimte_key  required, existing rsv_ruimte_key.
        urole           required
    Context:            als res_show_objcat ontdekt dattie dirty is en gebruiker bevestigt.

*/
 %>
<%
var JSON_Result = true;
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="res.inc" -->

<%
protectRequest.validateToken();
  var urole             = getFParam("urole");
  var rsv_ruimte_key    = getFParamInt("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.canChange);

  var sql = "DELETE FROM res_rsv_deel"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
          + "   AND BITAND(res_rsv_deel_dirtlevel, " + (res.dirtlevel.deel.notavailable | res.dirtlevel.deel.notallowed) + ") <> 0";
  Oracle.Execute(sql);

  var sql = "DELETE FROM res_rsv_artikel"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
          + "   AND BITAND(res_rsv_artikel_dirtlevel, " + (res.dirtlevel.artikel.notallowed) + ") <> 0";
  Oracle.Execute(sql);

  // Objecten die (ondertussen) zijn vervallen voor de leverdatum
  var sql = "DELETE FROM res_rsv_deel rrd"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
          + "   AND (SELECT res_deel_vervaldatum FROM res_deel rd WHERE rd.res_deel_key = rrd.res_deel_key)"
          + "                  < res_rsv_deel_van";
  Oracle.Execute(sql);

  // Artikelen die (ondertussen) zijn vervallen voor de leverdatum
  var sql = "DELETE FROM res_rsv_artikel rra"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
          + "   AND (SELECT res_artikel_vervaldatum FROM res_artikel ra WHERE ra.res_artikel_key = rra.res_artikel_key)"
          + "                  < res_rsv_artikel_levering";
  Oracle.Execute(sql);

  // Artikelen die nog niet zijn ingegaan voor de leverdatum
  var sql = "DELETE FROM res_rsv_artikel rra"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key
          + "   AND (SELECT res_artikel_ingangsdatum FROM res_artikel ra WHERE ra.res_artikel_key = rra.res_artikel_key)"
          + "                  > res_rsv_artikel_levering";
  Oracle.Execute(sql);

result = { success : true };
Response.Write(JSON.stringify(result));
%>
<% ASPPAGE_END(); %> 
