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

    File:               mld_edit_meldracht.asp
    Description:        Maakt heel snel en simpel een opdracht-inclusief-melding aan
                        Alleen voor eenmalig aanmaken, edit gaat via de standaards
    Parameters:
                        ..etc
    Context:
    Note:               Submit naar mld_edit_meldpdracht_save.asp
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/stdmeldingselector.inc" -->
<!-- #include file="../Shared/uitvoerendeselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="mld.inc" -->

<%
FCLTHeader.Requires({ plugins:["jQuery"], js: ["../mld/mld_edit_melding.js"] });

/***** Get webform parameters *****/
var urole = "fe";

var autfunction = "WEB_ORDUSE";
var authparams = user.checkAutorisation(autfunction);

var cnt_key = getQParamInt("cnt_key", -1);  // optioneel
var dienst_key = getQParamInt("dienst", -1);  // optioneel
var bedrijf_key = getQParamInt("bedrijf_key", -1);  // optioneel, zwakker dan cnt_key

var mld_defaultstdmelding_key = getQParamInt("mld_defaultstdmelding", -1);  // in principe vereist, maar vooruit: anders invulbaar
if (mld_defaultstdmelding_key > 0) {
    var sql = "SELECT d.ins_srtdiscipline_key"
            + "     , d.ins_discipline_key"
            + "     , sd.ins_srtdiscipline_bes"
            + "  FROM mld_discipline d"
            + "     , mld_stdmelding"
            + "     , ins_srtdiscipline sd"
            + " WHERE mld_ins_discipline_key = d.ins_discipline_key"
            + "   AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key"
            + "   AND mld_stdmelding_key = " + mld_defaultstdmelding_key
            + "   AND mld_stdmelding_verwijder IS NULL"
            + "   AND (mld_stdmelding_vervaldatum IS NULL OR mld_stdmelding_vervaldatum > SYSDATE)";
    var oRs = Oracle.Execute(sql);
    if (oRs.eof)
    {
      shared.record_not_found();
    }
    else
    {
      var srtdisc_key = oRs("ins_srtdiscipline_key").value;
      var disc_key = oRs("ins_discipline_key").value;
      var srtdiscbes = oRs("ins_srtdiscipline_bes").value;
      oRs.close();
    }
} else {
    var srtdisc_key = getQParamInt("srtdisc", -1);  // die heeft mld_melding wel zeker bepaald
    var sql = "SELECT sd.ins_srtdiscipline_bes"
            + "  FROM ins_srtdiscipline sd"
            + " WHERE sd.ins_srtdiscipline_key = " + srtdisc_key;
    var oRs = Oracle.Execute(sql);
    var srtdiscbes = oRs("ins_srtdiscipline_bes").value;
    oRs.close();
    // weet ik alleen disc_key en mld_defaultstdmelding_key nog niet; die mag de user die kiezen
    var disc_key = -1;
}
  var this_mld = mld.func_enabled_mld(srtdisc_key, "S"); // wat mag ik zoal op een nieuwe melding

// typeopdr is VERPLICHT
var opdr_type = getQParamInt("typeopdr");
// later: var opdr_type = getQParamInt("typeopdr", -1);
if (opdr_type == -1) {
  var sql_typeopdr = "SELECT t.mld_typeopdr_key"
                   + "     , COALESCE(ins_discipline_key, -1)"  /* specifiekste straks vooraan */
                   + "  FROM mld_typeopdr t"
                   + "     , mld_typeopdr_srtdiscipline ts"
                   + " WHERE t.mld_typeopdr_key = ts.mld_typeopdr_key"
                   + " AND ins_discipline_key = " + disc_key
                   + " ORDER BY 2 DESC";
  var oRs = Oracle.Execute(sql_typeopdr);
  if (!oRs.eof)
  {
    opdr_type = oRs("mld_typeopdr_key").value;
  }
  oRs.close();
}

// Bepaal de plaats van mijn werkplek(ken) TODO
var loc_key=-1;
var onrgoed_key=-1;
var bld_key=-1;

var mld_ordernr = "";
%>

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

    <script type="text/javascript">

      // Die (gedeelde) js heeft deze nodig, zegt-ie
      var mld_key = -1;
      var mprio = 3;
      var srtdisc_key = <%=srtdisc_key%>;
      var perslidkey = <%=user_key%>;
      var mld_stdmelding_startdatum = 0; // Bij een melding de startdatum tonen {0=no | 1=yes} TODO
      var frontend = true;
      var canFOwrite = (<%=this_mld.canFOwrite? 1 : 0%> == 1);

      function meldracht_cancel()
      {
          FcltMgr.closeDetail(window, { cancel: true } );
      }

      async function meldracht_submit()
      {
        // Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
        if (!await validateForm("u2"))
          return false;

        document.forms.u2.submit();

        return true;
      }

      $(function()
      {
        $('textarea').resize(function () { FcltMgr.resized(window) });
        $('textarea').autogrow();
      });

    </script>
  </head>

  <body class="editmode">
  <% SUBFRAME_START();
    var buttons = [ {title: L("lcl_submit"), icon: "fa-fclt-save", action:"meldracht_submit()", singlepress: true, id:"btn_mld_submit"},
                    {title: L("lcl_cancel"), icon: "fa-fclt-cancel", action:"meldracht_cancel()"}
                  ];
    IFRAMER_HEADER(L("lcl_opdr_frame_algemeen"), buttons);
%>
      <form name="u2" method="post"
            action="mld_edit_meldracht_save.asp?urole=<%=urole%>"
            method="post">
<%
        BLOCK_START("opdrOpdracht", L("lcl_opdr_info"), { icon: "fa-wrench" });
        %><input type="hidden" id="person" value="<%=user_key%>"><%

        if (mld_defaultstdmelding_key < 0)
        {
            // Vanuit contract kan ik geen stdmelding meegeven, die MOET ik hier dus laten kiezen
            FCLTdisciplineselector("disc",
                                   "sgDisc",
                                   { label: L("lcl_vakgroup"),
                                     disc_key: disc_key,
                                     module: "MLDP",
                                     perslidKey: user_key,
                                     autfunctionKey: authparams.autfunctionkey,
                                     autRW: "W",
                                     srtdisc_key: srtdisc_key,
                                     onChange: "onChangeVakgroep",
                                     required: true
                                   });

            FCLTstdmeldingselector("stdm",
                                    "sgStdm",
                                    { label: L("lcl_complain"),
                                      stdmelding_key: mld_defaultstdmelding_key,
                                      autfunctionKey: authparams.autfunctionkey,
                                      srtdisc_key: srtdisc_key,
                                      perslidKey: user_key,
                                      urlAdd: [{urlParam: "disc_key", field: "disc"}],
                                      onChange: "onChangeStdMelding",
                                      required: true,
                                      filtercode: "FE"
                                    });
        } else {
          %><input type="hidden" name="stdm" value="<%=mld_defaultstdmelding_key%>"><%
        }
        FCLTkostenplaatsselector("account",
                                 "sgAccount",
                                 user_key,
                                 { kostenplaatsKey: user.prs_kostenplaats_key()||-1,
                                   label: (urole == "fe")?L("lcl_mld_inf_Kostenplaats"):L("lcl_mld_inf_Kostenklant"),
                                   extraParamField: "module",
                                   filtercode: "AA", // Altijd nieuw dus alleen actieve
                                   extracode: "M",
                                   xxurlAdd: [{ urlParam: "prs_key", field: "person" }],
                                   kptoggle: { ischecked: true,
                                               readonly: !this_mld.canKostChange,
                                               onChange: "onChangeKostenklant();",
                                               hidden: (urole == "fe") },
                                   required: true
                                 });

        if (S("show_ordernr") != 0)
        {
            RWFIELDTR("ordernr",  "fldshort", L("lcl_mld_inf_Ordernr"), mld_ordernr, { maxlength: 30});
        }



        // TODO:
        // Als deze gegeven is, dan blind toepassen
        // Zo niet, dan de defaults mogelijke bepalen
        // Dat is gebaseerd op de bekende srtdisc_key, maar kan
        // verbijzonderd worden door de keuze van disc/defaultstdmelding, als
        // die niet mee werd gegeven..
        if (false) {
          //<!-- OPDRACHTTYPE -->
          sql_typeopdr = "SELECT t.mld_typeopdr_key"   /* markeer de specifiekste met een * */
                       + ", CASE WHEN ins_discipline_key IS NULL THEN '' ELSE '*' END ||"+lcl.xsqla('t.mld_typeopdr_omschrijving', 't.mld_typeopdr_key')
                       + " FROM mld_typeopdr t"
                       + ", mld_typeopdr_srtdiscipline ts"
                       + " WHERE t.mld_typeopdr_key = ts.mld_typeopdr_key"
                       + " AND (ins_discipline_key = " + disc_key /* en dan doet de srtdiscipline er echt niet meer toe */
                       + "      OR (ts.ins_srtdiscipline_key = " + srtdisc_key + " AND ins_discipline_key IS NULL))"
                       + " ORDER BY 2";

          FCLTselector("t_opdr",
                       sql_typeopdr,
                       { initKey: opdr_type,
                         label: L("lcl_mld_typeopdr"),
                         readonly: true
                       });
          } else {
              sql = "SELECT "+lcl.xsqla('mld_typeopdr_omschrijving', 'mld_typeopdr_key')
                  + " FROM mld_typeopdr t"
                  + " WHERE t.mld_typeopdr_key = " + opdr_type;
              var oRs = Oracle.Execute(sql);
              if (!oRs.eof) {
                RWFIELDTR("t_opdr", "fld", L("lcl_mld_typeopdr"), oRs(0).value, {readonly: true});
              }
              oRs.close();
          }

          if (cnt_key > 0)
          {
              // Er is een contract meegegeven, daar volgt direct ook het bedrijf uit.
              sql = " SELECT cnt.cnt_contract_key,cnt.cnt_contract_nummer_intern || '-' || cnt.cnt_contract_omschrijving cnt_name"
                  + ", cnt.cnt_prs_bedrijf_key bedrijf_key, b.prs_bedrijf_naam "
                  + " FROM cnt_v_aanwezigcontract cnt, prs_bedrijf b"
                  + " WHERE b.prs_bedrijf_key = cnt.cnt_prs_bedrijf_key"
                  + " AND cnt.cnt_contract_key = "+ cnt_key;
              var coRs = Oracle.Execute(sql);
              if (!coRs.eof) {
                    ROFIELDTR('fld', L("lcl_contract") ,coRs("cnt_name").value);
                    bedrijf_key = coRs("bedrijf_key").value; // overrule-t mogelijk de parameter
              }
              // Moet ws wel gesubmit worden, dus field van maken
              ROFIELDTR('fld', srtdiscbes ? L("lcl_bes_Supplier") : L("lcl_ord_company_uit") ,coRs("prs_bedrijf_naam").value);
              coRs.close();
            %><input type="hidden" name="prs_bedrijf_key" value="<%=bedrijf_key%>"><%

          } else {
              // Er is geen contract meegegeven, dan doen we daar niets mee
              // en laten we gewoon een bedrijf selecteren.
              // Dat kan evt met gebruikmaking van Dienst.
              FCLTselector("dienst",
                           "SELECT prs_dienst_key, "
                           + lcl.xsqla('prs_dienst_omschrijving', 'prs_dienst_key')
                           + " FROM prs_dienst ORDER BY UPPER("+lcl.xsql('prs_dienst_omschrijving', 'prs_dienst_key')+")",
                           { label: L("lcl_prs_companies_dienst"),
                             emptyOption: L("lcl_select_dienst_filter"),
                             initKey: dienst_key,
                             readonly: false
                           });
             FCLTuitvoerendeselector("prs_bedrijf_key",
                                      "sgUitv",
                                      { label: srtdiscbes? L("lcl_bes_Supplier") : L("lcl_ord_company_uit"),
                                        autlevel: authparams.PRSwritelevel,
                                        whenEmpty: srtdiscbes? L("lcl_select_bedrijf") : null,
                                        initKey: bedrijf_key,
                                        locatiekey: loc_key,
                                        onrgoedkey: onrgoed_key,
                                        gebouwkey: bld_key,
                                        disciplinekey: disc_key,
                                        lutype: srtdiscbes? "L" : "U", // leverancier of uitvoerende
                                        // cnt_key param is TODO
                                        urlAdd: [{urlParam: "dienst", field: "dienst"},{urlParam: "contract", xxx: cnt_key}],
                                        required: true
                                      });
         }

         // OMSCHRIJVING
         RWTEXTAREATR("opdr_omschr", "fldtxt required", L("lcl_mld_opdr_description"), "", {html: "rows='8'"});

        BLOCK_END();
IFACE.FORM_END();
%>
      </form>
      <% SUBFRAME_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
