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

     TODO: lijkt mij dat er gewoon naar ../mld_close resp. ../opdr_close.asp moet worden gesubmit?
*/ %>

<!-- #include file="../Shared/common.inc"-->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../mld/mld_flexkenmerk.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->

<%
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
FCLTHeader.Requires({ plugins: ["suggest"]
                    , js: ["../mld/mld_edit_opdr.js", "num2curr.js"]
                    });
var opdr_key = getQParamInt("opdr_key", -1);
var mld_key  = getQParamInt("mld_key", -1);
var copy = false;

// Mogelijke parameters voor toevoegen only
if (opdr_key == -1)
{
  var dienst_key = getQParamInt("dienst_key", -1);
  var uitv_key   = getQParamInt("uitv_key", -1);
  var opdr_type  = getQParamInt("opdr_type", -1);
  if (opdr_type == -1)
  {
    Server.Transfer("order_new.asp"); // Ga eerst opdrachttype kiezen
  }
}

if (opdr_key > -1)
{ // BESTAANDE OPDRACHT
  var this_opdr = mld.func_enabled_opdracht(opdr_key); // wat mag ik zoal op deze opdracht
  user.auth_required_or_abort(this_opdr.canReadAny);
  var mld_opdr = mld.mld_opdr_info(opdr_key);
  var mld_melding = mld.mld_melding_info(mld_opdr.mld_key);
  var opdr_type = mld_opdr.opdr_type;
  var uitv_key = mld_opdr.uitvoerende_key;
  var subject = L("lcl_opdr_info") + " " + mld_opdr.mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr;

  mld_opdr.opdr_type_org = mld_opdr.opdr_type;
  mld_key = mld_opdr.mld_key;
  var sqlCount = ", (SELECT count(*) FROM mld_opdr o "
               + "    WHERE o.mld_melding_key = m.mld_melding_key "
               + "      AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9) "
               + "      AND o.mld_opdr_key <> " + opdr_key + ") aantal_open";
}
else
{ // NIEUWE OPDRACHT
  var cnt_key = getQParamInt("cnt_key", -1);
  var params = { uitvoerende_key: getQParamInt("uitv_key", -1)
               , cnt_key: cnt_key
               , opdr_copy_key: -1
               , act_key: -1
               };
  var mld_opdr = mld.mld_opdr_info_new(mld_key, opdr_type, params);
  // Bepaal discipline
  sql = "SELECT sm.mld_ins_discipline_key"
      + " FROM mld_melding m"
      + "    , mld_stdmelding sm"
      + " WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key"
      + "   AND m.mld_melding_key = " + mld_key;
  var oRs = Oracle.Execute(sql);
  var this_opdr = mld.func_enabled_mld(oRs("mld_ins_discipline_key").value, "D"); // wat mag ik zoal op een melding
  oRs.Close();

  var mld_melding = mld.mld_melding_info(mld_key);
  var subject = L("lcl_mobile_newopdracht") + " " + mld_opdr.mld_key + "/" + mld_opdr.mld_opdr_bedrijfopdr_volgnr;
  var sqlCount = ", 0 aantal_open";

}

  sql = "SELECT l.alg_locatie_code||"
      + "         NVL2(g.alg_gebouw_code,'-'||g.alg_gebouw_code,'') ||"
      + "         NVL2(g.alg_verdieping_code,'-'||g.alg_verdieping_code,'') ||"
      + "         NVL2(g.alg_ruimte_nr,'-'||g.alg_ruimte_nr,'')||"
      + "         NVL2(g.alg_terreinsector_code,'-'||g.alg_terreinsector_code,'') plaats"
      + sqlCount
      + "  FROM mld_melding m"
      + "     , alg_v_allonrgoed_gegevens g"
      + "     , alg_locatie l"
      + "     , prs_v_perslid_fullnames_all pf"
      + " WHERE m.mld_melding_key= " + mld_key
      + "   AND m.prs_perslid_key = pf.prs_perslid_key"
      + "   AND m.mld_alg_locatie_key=l.alg_locatie_key(+)"
      + "   AND m.mld_alg_onroerendgoed_keys=g.alg_onroerendgoed_keys(+)";
  oRs = Oracle.Execute(sql);

  lcode                       = oRs.fields("plaats").value;
  aantal_open                 = oRs.fields("aantal_open").value;
  oRs.close();

%>

<html>
  <head>
<%  FCLTMHeader.Generate(); %>

    <script type="text/javascript">
      var timerID=null;
      var typeopdr_matchtype = <%=mld_opdr.typeopdr_matchtype || -1%>; // voor als readonly
      var mld_ord_show_cost  = <%=S("mld_ord_show_cost")? 1 : 0%> == 1;
      var opdrkosten_verplicht = <%=mld_opdr.opdrkosten_verplicht || 0%>;

      function delayed(delay, fn)
      {
        if (timerID) clearTimeout(timerID);
          timerID = setTimeout(fn, delay);
      }

      function opdr_goedkeur()
      {
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        if (confirm(L("lcl_mld_opdr_goedkeur").format(opdr_nr)))
        {
          var data = { opdr_key: <%=opdr_key%>
                     };
          <% protectRequest.dataToken("data"); %>
          $.post( "../mld/opdr_goedkeur.asp"
                , data
                , McltCallbackAndThenAlways(opdr_action_callback)
                , "json"
                );
        }
      }
      function opdr_approve()
      {
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        if (confirm(L("lcl_mld_opdr_approve").format(opdr_nr)))
        {
          var data = { opdr_key: <%=opdr_key%>
                     };
          <% protectRequest.dataToken("data"); %>
          $.post( "../mld/opdr_approve.asp"
                , data
                , McltCallbackAndThenAlways(opdr_action_callback)
                , "json"
                );
        }
      }
      function opdr_reject()
      {
        var opmerk = prompt(L("lcl_mld_inf_opmerking_fiat"), "");
        if (!opmerk)
            return;
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        if (confirm(L("lcl_mld_opdr_reject").format(opdr_nr)))
        {
          var data = { opdr_key: <%=opdr_key%>
                     , opmerk: opmerk //L("lcl_mld_opdr_rejectedbymobile")
                     };
          <% protectRequest.dataToken("data"); %>
          $.post("../mld/opdr_reject_save.asp"
                , data
                , McltCallbackAndThenAlways(opdr_action_callback)
                , "json");
        }
      }
      function opdr_accept_offer()
      {
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        if (confirm(L("lcl_mld_opdr_approve").format(opdr_nr)))
        {
          var murl = "?opdr_key=<%=opdr_key%>&submit=1";
          var data = { opdr_key: <%=opdr_key%>
                     };
          <% protectRequest.dataToken("data"); %>
          $.post("../mld/opdr_accept_offer_save.asp" + murl
                , data
                , McltCallbackAndThenAlways(opdr_action_callback)
                , "json");
        }
      }
      function opdr_reject_offer()
      {
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        if (confirm(L("lcl_mld_opdr_reject").format(opdr_nr)))
        {
          var murl = "?opdr_key=<%=opdr_key%>&submit=1";
          var data = { opdr_key: <%=opdr_key%>
                     };
          <% protectRequest.dataToken("data"); %>
          $.post("../mld/opdr_reject_offer_save.asp" + murl
                , data
                , McltCallbackAndThenAlways(opdr_action_callback)
                , "json");
        }
      }
      function opdr_action_callback()
      {
        //window.location.href = "fiat_list.asp"; // Als je terug bent in fiat_list en doet dan "terug" kom je in de zojuist gefiatteerde opdracht.
        // Het fiatteren van een opdracht is aangeroepen vanuit fiat_list.
        // Dus 1 stap terug in history om daar weer te komen.
        window.history.go(-1);
      }

      function opdr_close()
      {
        var opdr_nr = "<%=mld_opdr.mld_key%>/<%=mld_opdr.mld_opdr_bedrijfopdr_volgnr%>";
        var kosten_verplicht_afm = <%=mld_opdr.typeopdr_matchtype != 4 && (mld_opdr.typeopdr_kosten_verplicht & 2 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 2))? 1 : 0%> == 1;
        var opdr_kosten = isNaN($("#tot_kosten").val())? 0 : parseFloat($("#tot_kosten").val());
        if (kosten_verplicht_afm && opdr_kosten == 0)
        {
          alert(L("lcl_mld_opdr_kosten_verpl_afm"));
          return false;
        }

        var opdr_afhandeling = ("<%=mld_opdr.typeopdr_afhandeling%>" == "1");
        if ($("#opdr_opm").val() == "" && opdr_afhandeling)
        {
          alert(L("lcl_pda_opdr_opm_required"));
          return false;
        }

        $.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), opdr_close_callback_1, "json");
        return false;
      }
      function opdr_close_callback_1()
      {
        $.post("../mld/opdr_close_save.asp?opdr_key=<%=opdr_key%>", $("[name=u2]").serialize(), opdr_close_callback_2, "json");
        return false;
      }
      function opdr_close_callback_2()
      {
        // Terug naar lijst met open opdrachten.
        window.location.href = "orders_list.asp";
      }
      function opdr_submit()
      {
        // Als totaalkosten verplicht is, moet er een waarde > 0 zijn ingevuld.
        if ((opdrkosten_verplicht) && (parseFloat($("#tot_kosten").val().replace(',', '.')) == "0.00"))
          $("#tot_kosten").val("");
        if (!validateForm("u2"))
          return false;

        $.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), McltCallbackAndThenAlways(opdr_submit_callback), "json");
        return false;
      }
      function opdr_submit_callback(json)
      {
        if (json.success)
        {
          jqToast(L("lcl_mobile_data_saved"));
<%
          if (opdr_key < 0)
          {
%>
            // Nieuwe melding aangemaakt. Altijd complete reload, we hebben nu een opdr_key namelijk
//            window.location.href = "order.asp?opdr_key=" + json.opdr_key + "&mld_key=<%=mld_key%>";
            window.location.href = "melding.asp?mld_key=<%=mld_key%>";
<%
          }
%>
        }
      }
    </script>
  </head>

  <body>
<%  PAGE_START({id: "opdr-1-"+opdr_key});
    HEADER({title: subject, back:true, home: true});
    CONTENT_START();
%>
<script>
</script>

    <form action="../mld/mld_edit_opdr_save.asp?mobile=1&opdr_key=<%=opdr_key%>" method="post" name="u2" id="u2">
      <input type="hidden" name="forcesave" id="forcesave"    value="0">
      <input type="hidden" name="opdr_key"    value="<%=opdr_key%>"/>
      <input type="hidden" name="mld_key"     value="<%=mld_key%>"/>
      <input type="hidden" name="t_opdr"      value="<%=opdr_type%>"/>
      <input type="hidden" name="uitvoerende" value="<%=uitv_key%>"/>
      <input type="hidden" name="uitvkeystr"  value="<%=uitv_key%>"/>
      <input type="hidden" name="behandelaar" value="<%=user_key%>"/>
<%
      BLOCK_START({collapsed: true, title: mld_opdr.opdr_type_omschr});
        ROFIELD("fld", L("lcl_ord_company_uit"), mld_opdr.uitvoerende);

        var vOrderdate = (opdr_key > 0 ? mld_opdr.mld_opdr_datumbegin : new Date());
        ROFIELD("fld", L("lcl_orderdate"), toDateTimeString(vOrderdate)
               , { readonly: true
                 }
               );
%>      <input type="hidden" name="orderdate" id="orderdate" value="<%=vOrderdate.getTime()%>" /> <%
      BLOCK_END();

      ROFIELD("fld", L("lcl_place"), lcode, {suppressEmpty: true});
      // Ik kan geen datum kiezen op de iPhone; calender sluit niet.
      FCLTcalendar("date_done",
                     { datum: mld_opdr.mld_opdr_einddatum,
                       minDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.melddatum : (opdr_key < 0 ? new Date() : mld_opdr.mld_opdr_datumbegin)),
                       maxDate: (S("mld_enforce_orderdates") == 1 ? mld_melding.einddatum : null),
                       label: L("lcl_opdr_enddate"),
                       //  werkt niet omdat mld_einddatum niet bestaand en heeft toch geen effect? onChange: "DateChanged()",
                       readonly: (opdr_key > 0 && !this_opdr.canDatesChange),
                       volgnr: 2,
                       required: true,
                       mobile: true
                     } );

      if (opdr_key > -1)
        ROFIELD("fld",         L("lcl_txt"), mld_opdr.opdr_omschr, {multi: true});
      else
        RWFIELD("opdr_omschr", L("lcl_txt"), mld_opdr.opdr_omschr, {multi: true});

      generateFlexKenmerkBlock ({ fnpre: function () { BLOCK_START({collapsed: false, title: L("lcl_mld_flexblok"), xmini: true}); },
                                  fnpost: BLOCK_END,
                                  opdr_key: opdr_key,
                                  opdr_type: mld_opdr.opdr_type,
                                  opdr_type_org: mld_opdr.opdr_type_org,
                                  opdr_status: mld_opdr.opdr_status,
                                  mld_key: mld_key,
                                  stdm_arr: [],
                                  showClose: (opdr_key > 0 && this_opdr && (this_opdr.canClose || this_opdr.canSeeARFlex)),
                                  mobile: true,
                                  reado: (opdr_key > 0 && !(this_opdr.canFlexChange || this_opdr.canChangeARFlex))
                                });

      // de kostenvelden zijn nogal afhankelijk van mld_opdr.typeopdr_matchtype
      //   1,2 --> alle kosten velden
      //   3   --> alleen uren velden/uurtarief en wel kostenplaats
      //   4   --> geen kosten of kostenplaats en wel uren
      //   5   --> Alleen meerdere materialen invullen en kostenplaats

      if (opdr_key > -1)
      {
        if ((mld_melding.mld_status == 7 || mld_melding.mld_status == 5) && this_opdr.canOpmChange)
        {
          RWFIELD("opdr_opm"  , L("lcl_mld_final_remark"), mld_opdr.opdr_opmerking, {multi: true});

          // Of de melding naast de opdracht ook gesloten moet worden,
          // moet volgens configuratie settings worden bepaald, zonder extra interactie (zoals bij API (API/api_opdrsoap.asp)) (FSN#26329)
          // Bij afmelden &mobile=1 meegeven, dan moet opdr_close_save.asp dit oplossen.
          %><input type="hidden" name="mobile" value="1"><%
          //
        }
        else
        {
          ROFIELD("fld"  , L("lcl_mld_final_remark"), mld_opdr.opdr_opmerking, {multi: true} );
        }
        var nu = new Date;
%>      <input type="hidden" name="date_from" value="<%=nu.getTime()%>">  <%
%>      <input type="hidden" name="orgdate"   value="<%=nu.getTime()%>">  <%
      }

      // TOTAAL KOSTEN
      if (mld_opdr.typeopdr_matchtype != 4)
      { // 0 = niet verplicht, 1 = save + 2 = afmelden, 4 = afronden.
        isRequired = (mld_opdr.typeopdr_kosten_verplicht & 1 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 1)) ||
                      ((mld_opdr.typeopdr_kosten_verplicht & 2 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 2)) &&
                       (mld_opdr.opdr_status == 5 || mld_opdr.opdr_status == 8)) ||
                      ((mld_opdr.typeopdr_kosten_verplicht & 4 || (mld_opdr.typeopdr_kosten_verplicht == 0 && mld_opdr.opdrkosten_verplicht & 4)) &&
                       mld_opdr.opdr_status == 6)
        RWFIELD( "tot_kosten"
               , L("lcl_total_cost") + "&nbsp;" + S("currency_pref")
               , safe.jsfloat(mld_opdr.t_cost.toFixed(2))
               , { pclass: "currency" + (isRequired? " required" : "")
                 , datarole: "fieldcontain"
                 , datatype: "number"
                 , readonly: (opdr_key > 0 && !this_opdr.canUrenMatChange)
                 }
               );
      }

      CONTROLGROUP_START()
        // Buttons
        if (opdr_key > -1)
        {
          if (this_opdr.canChange)
            BUTTON(L("lcl_submit"),   {click: "opdr_submit()",       dataicon: "refresh"});
          if (this_opdr.canGoedkeur ||
              this_opdr.canGoedkeur2 ||
              this_opdr.canGoedkeur3 ||
              this_opdr.canGoedkeur4 ||
              this_opdr.canGoedkeur5)
            BUTTON(L("lcl_goedkeur"), {click: "opdr_goedkeur()",     dataicon: "check"});
          if (this_opdr.canApprove)
            BUTTON(L("lcl_approve"),  {click: "opdr_approve()",      dataicon: "check"});
          if (this_opdr.canReject)
            BUTTON(L("lcl_reject"),   {click: "opdr_reject()",       dataicon: "delete"});
          if (this_opdr.canAcceptOffer)
            BUTTON(L("lcl_approve"),  {click: "opdr_accept_offer()", dataicon: "check"});
          if (this_opdr.canRejectOffer)
            BUTTON(L("lcl_reject"),   {click: "opdr_reject_offer()", dataicon: "delete"});

          if (this_opdr.canClose)
          {
            BUTTON(L("lcl_close"), {click: "opdr_close()", dataicon: "check"});
          }
          trackinglines = mobile.hastrackingpage('opdracht', opdr_key);
          if (trackinglines > 0)
          {
            BUTTON(L("lcl_history"), {linkid: "#opdr-2-"+opdr_key, dataicon: "bullets", transition: "pop", datarel: "dialog"});
          }
          var this_mld = mld.func_enabled_melding(mld_key); // Wat heb ik zoal aan rechten op deze specifieke melding
          if (this_mld.canReadAny)
          {
            BUTTON(L("lcl_complain"), {linkid: "./melding.asp?mld_key="+mld_opdr.mld_key , dataicon: "alert", dataajax: "false"});
          }
        }
        else
        {
          BUTTON(L("lcl_newsubmit"), {click: "opdr_submit()", dataicon: "refresh"});
          trackinglines = 0;
        }
      CONTROLGROUP_END()
    IFACE.FORM_END();
%>
    </form>
<%
    CONTENT_END();
    FOOTER();
    PAGE_END();

    if (trackinglines > 0)
    {
      PAGE_START({id: "opdr-2-"+opdr_key})
      mobile.trackingpage('opdracht', opdr_key, subject);
      PAGE_END();
    }
%>
  </body>
</html>
