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

    File:           mld_reopen_save.asp
    Description:    Save_script van mld_reopen.asp
    Parameters:     mld_key


    Context:
    Note:

*/
%>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="mld.inc" -->
<!-- #include file="mld_edit_note.inc" -->
<%
protectRequest.validateToken();
var mld_key = getQParamInt("mld_key");
var opmerk = getFParam("opmerk", "");

var result = {};
// Bepaal of de melding heropend kan of mag worden.
var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding
var mld_info = mld.mld_melding_info(mld_key);
if (!this_mld.canReopen)
  user.anything_todo_or_abort(false);
lcl.set_dialect(mld_info.srtdisc_key, "MLD_SRTDISCIPLINE_KEY");

if (opmerk)
{
  mld_note_save(mld_key,
                opmerk,
                { //isFE: false, // MGE: wordt volgens mij niet gebruikt.
                  zichtFE: true, /* altijd */
                  noValidateToken: true // validateToken wordt hierboven al gedaan.
                });
}

// Er zijn alleen opdrachten met de status Afgemeld/Technisch voltooid(6), dus geen open opdrachten.
// Dan zetten we de Melding hier terug naar Geaccepteerd(4), zodat die bij de FO weer onder Inbehandeling valt.
// BLCC#79069: Niet via "mld.setmeldingstatus(mld_key, 4);" De status op 4 zetten. Anders kans dat er 2x moet worden afgemeld.
var mld_key_arr = [];
var sql = "SELECT mld_melding_key"
        + "  FROM mld_melding      "
        + " WHERE mld_melding_key = " + mld_key
        + "    OR mld_melding_parentkey = " + mld_key; // De statussen van de childmeldingen synchroon laten lopen aan die van de parent.
oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
  mld_key_arr.push(oRs("mld_melding_key").Value);
  oRs.MoveNext();
}
oRs.Close();

sql = "UPDATE mld_melding"
    + "   SET mld_melding_status = 4"
    + " WHERE mld_melding_key IN (" + mld_key_arr.join(",") + ")";
Oracle.Execute(sql);

// De MLDAFM trackingen omzetten in een MLDUPD tracking. De tekst (fac_srtnotificatie_oms) blijft hetzelfde.
sql = "UPDATE fac_tracking"
    + "   SET fac_srtnotificatie_key = ((SELECT fac_srtnotificatie_key"
    + "                                    FROM fac_srtnotificatie tr"
    + "                                   WHERE fac_srtnotificatie_code = 'MLDUPD'))"
    + "     , fac_tracking_oms = lcl.l('lcl_mld_is_mldafm')"
    + " WHERE fac_tracking_refkey IN (" + mld_key_arr.join(",") + ")"
    + "   AND fac_srtnotificatie_key = ((SELECT sn.fac_srtnotificatie_key"
    + "                                    FROM fac_srtnotificatie sn"
    + "                                   WHERE sn.fac_srtnotificatie_code = 'MLDAFM'))";
Oracle.Execute(sql);

// Een extra heropenen tracking toevoegen.
for (var i = 0; i < mld_key_arr.length; i++)
  mld.trackmeldingupdate(mld_key_arr[i], L("lcl_mld_reopen_done"));

// Indien het heropenen niet goed is gegaan, dan een warning geven. Alleen de parent controleren.
sql = "SELECT ''"
    + " FROM mld_melding"
    + " WHERE mld_melding_key = " + mld_key_arr[0]
    + "   AND mld_melding_status = 4";
oRs = Oracle.Execute(sql);
if (oRs.eof)
 var warning = L("lcl_mld_reopen_failed");
oRs.Close();

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