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

     File:               opdr_accept_offer_save.asp
     Description:        Save script voor opdr_accept_offer.asp
     Parameters:
         opdr_key        Opdracht key van de offerte opdracht die moet worden geaccepteerd
     Context:
     Note:

*/
var JSON_Result = true;
%>

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

<%
protectRequest.validateToken();

var opdr_key = getQParamInt("opdr_key");

var mld_opdr = mld.mld_opdr_info(opdr_key);
lcl.set_dialect(mld_opdr.opdr_type, "MLD_TYPEOPDR_KEY");

var result = { opdr_key: opdr_key, message: "", success: false };

var this_opdr = mld.func_enabled_opdracht(opdr_key);
user.anything_todo_or_abort(this_opdr.canAcceptOffer);

// Nog de afmeld opmerking opslaan.
if (this_opdr.canOpmChange)
{
  var fields = [ { dbs: "mld_opdr_opmerking",     typ: "varchar", frm: "opdr_opm", track: L("lcl_mld_inf_Opmerking") } ];
  var mldUpd = buildTrackingUpdate("mld_opdr", "mld_opdr_key = " + opdr_key, fields);
  if (mldUpd && mldUpd.trackarray.length)
  {
    Oracle.Execute(mldUpd.sql);
    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" + mldUpd.trackarray.join("\n"));
  }
}

// Zetten van de status en afhandelen van de tracking van het accepteren (accept).
mld.setopdrachtstatus(opdr_key, 9); // Kosten Voltooid (KTV) (Afgemeld)

if (mld_opdr.offerteauto)
{
  // Eventueel andere offertes afwijzen
  var sql = "SELECT o.mld_opdr_key"
          + "  FROM mld_opdr o"
          + "     , mld_typeopdr mto"
          + " WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key"
          + "   AND mto.mld_typeopdr_isofferte = 1"
          + "   AND o.mld_statusopdr_key = 6" // Technisch Voltooid
          + "   AND o.mld_melding_key = " + mld_opdr.mld_key
          + "   AND o.mld_typeopdr_key = " + mld_opdr.opdr_type
          + "   AND o.mld_opdr_key != " + opdr_key;
  oRs = Oracle.Execute(sql);
  while (!oRs.eof)
  {
    mld.reject_offerte(oRs("mld_opdr_key").value, L("lcl_mld_opdr_alternatief"));
    oRs.MoveNext();
  }
  oRs.Close();
}

var mld_typeopdr_typeopdr_key = -1;
// Opdracht type bepalen voor een vervolg uitvoeringsopdracht (mld_typeopdr_typeopdr_key)
var sql = "SELECT mto.mld_typeopdr_typeopdr_key"
        + "  FROM mld_opdr o"
        + "     , mld_typeopdr mto"
        + " WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key"
        + "   AND mto.mld_typeopdr_isofferte = 1"
        + "   AND o.mld_melding_key = " + mld_opdr.mld_key
        + "   AND o.mld_opdr_key = " + opdr_key;
oRs = Oracle.Execute(sql);
if (!oRs.eof)
  mld_typeopdr_typeopdr_key = oRs("mld_typeopdr_typeopdr_key").value || -1;
result.typeopdr_key = mld_typeopdr_typeopdr_key;

// De status van de melding zou gewijzigd kunnen/moeten worden hierdoor
mld.updatemeldingstatus(mld_opdr.mld_key, 0);
result.success = true;

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

ASPPAGE_END();
%> 
