<%@ LANGUAGE = JavaScript %>
<% /*
     $Revision$
     $Id$

     File:          opdr_halt_save.asp.asp.
     Description:   Het daadwerkelijk onderbreken van een specifieke opdracht.
     Parameters:
         opdr_key   Opdracht key van de opdracht die moet worden onderbroken.
     Context:
     Note:          Rechtstreeks vanuit showmode opdracht.

*/ %>

<%
var JSON_Result = true;
var opdr_key = getQParamInt("opdr_key", -1);
var note_key = getFParamInt("note_key", -1);
var LOCKED_USER_OK = { "xmlnode": "opdracht", "key": opdr_key };
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/kenmerk_common.inc" -->
<!-- #include file="mld.inc" -->
<%
protectRequest.validateToken();
user.auth_required_or_abort(opdr_key > 0); // Hebben we een opdracht key gekregen?

// Controleren of ik deze opdracht mag onderbreken
var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
user.auth_required_or_abort(this_opdr.canOnderbreken, L("lcl_shared_no_auth")); // Mag ik deze opdracht annuleren

var result = { opdr_key: opdr_key, message: "", success: false};
var mld_opdr = this_opdr.mld_opdr;
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");

// Kenmerken die verplicht zijn bij het Onderbreken worden in het popup scherm getoond en moeten verplicht ingevuld worden. Dat hoef ik hier niet meer te testen.
var currentKenmerkenSQL = "SELECT k.mld_kenmerk_key"
                        + "     , mld_kenmerkopdr_waarde"
                        + "     , k.mld_kenmerk_toonbaar"
                        + "     , k.fac_functie_key"
                        + "  FROM mld_kenmerkopdr ko"
                        + "     , mld_kenmerk k"
                        + " WHERE k.mld_kenmerk_key = ko.mld_kenmerk_key"
                        + "   AND mld_kenmerkopdr_verwijder IS NULL"
                        + "   AND mld_opdr_key = " + opdr_key;

var allKenmerkenSQL = "SELECT COALESCE (" + lcl.xsql("k.mld_kenmerk_omschrijving", "k.mld_kenmerk_key")
                    + "              ,  " + lcl.xsql("t.mld_srtkenmerk_omschrijving", "t.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
                    + "     , t.mld_srtkenmerk_kenmerktype kenmerk_kenmerktype"
                    + "     , t.mld_srtkenmerk_systeem     kenmerk_systeem"
                    + "     , k.mld_kenmerk_toonbaar       kenmerk_readonly"
                    + "     , k.mld_kenmerk_uniek          kenmerk_uniek"
                    + "     , fac_kenmerkdomein_key"
                    + "  FROM mld_kenmerk k"
                    + "     , mld_srtkenmerk t"
                    + " WHERE k.mld_srtkenmerk_key = t.mld_srtkenmerk_key"
                    + "   AND k.mld_kenmerk_key = "; /* wordt in saveFlexkenmerken uitgebreid */

var flextrack =
    saveFlexKenmerken(opdr_key, { kenmerkTable: "mld_kenmerkopdr",
                                  kenmerkParentKey : "mld_opdr_key",
                                  kenmerkWaarde: "mld_kenmerkopdr_waarde",
                                  kenmerkKey: "mld_kenmerk_key",
                                  kenmerkToonbaar: "mld_kenmerk_toonbaar",
                                  nameprefix: getFParam("nameprefix", ""),
                                  extraserie: hasFParam("nameprefix"),
                                  currentKenmerkenSQL: currentKenmerkenSQL,
                                  allKenmerkenSQL: allKenmerkenSQL,
                                  requestQF: Request.Form,
                                  isNew: false,
                                  flexPath: "MLD/O",
                                  tracking: true,
                                  module: "MLD"
                                }
                     );

// Wijzigingen flexkenmerken tracken.
if (flextrack.length)
{
  var ins_srtdiscipline_prefix = mld.mld_prefix(mld_opdr.mld_key);
  var formattedID = ins_srtdiscipline_prefix + mld_opdr.mld_key + "/" + mld_opdr.volgnr;
  mld.trackopdrachtupdate(opdr_key, L("lcl_ord_is_ordupdtrack").format(formattedID) + "\n" + flextrack.join("\n"));
}

// Onderbreken van de opdracht.
var tracking_key = mld.opdr_hltrsm(opdr_key, { halt: true, resume: false });

// Registeren bij de laatste notitie
if (note_key > 0)
{
    var sql = "UPDATE mld_opdr_note"
            + "   SET fac_tracking_key = " + tracking_key
            + " WHERE mld_opdr_note_key = " + note_key;
    Oracle.Execute(sql);
}

result.success = true;

Response.Write(JSON.stringify(result));

ASPPAGE_END();
%>
