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

    File:         prs_edit_perslidwerkplek.asp
    Description:  File to add persons to a workplace
                  of (als S("prs_werkplek_implicit")==1) aan aan ruimte
    Parameters:

    Context:
    Note:

*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->

<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/json2.js" -->

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

   var pwp_key = getQParamInt("pwp_key", -1);    // editmode
   var wp_key = getQParamInt("wp_key", -1);      // toevoegen met S("prs_werkplek_implicit")==0
                                                 // of edit met S("prs_werkplek_implicit")==1
   var from_wproom = wp_key > 0;                  // Komend vanuit werkpleklijst van ruimtescherm.
   var room_key = getQParamInt("room_key", -1);  // toevoegen met S("prs_werkplek_implicit")==1
   var prs_key = getQParamInt("prs_key", -1);    // Toevoegen vanuit persoon

    readonly = false;
    // Lapmiddel; wat moet er echt als er op [plus] in werkplekoverzicht wordt gedrukt? Of moet die (soms) weg?
    // Die moet weg, maar dit maskeert in elk geval een error als die er toch staat.
    frame_lcl = "";
    if (wp_key > -1 || room_key > -1)
      if (wp_key > -1 && S("prs_werkplek_implicit")==1)
        frame_lcl = L("lcl_person") + " " + L("lcl_change").toLowerCase();
      else
        frame_lcl = L("lcl_prs_perslidwerkplek_frameP");

    if (prs_key > -1)
      frame_lcl = L("lcl_prs_perslidwerkplek_frameW");

    if (pwp_key > -1)
      frame_lcl = L("lcl_prs_perslidwerkplek_frameW");


   var authparams = user.checkAutorisation("WEB_PRSBOF");

   if (S("prs_werkplek_implicit")==1 && wp_key > 0) // er zal maar een enkele pwp zijn. Zoek die op
   {
     sql = "SELECT prs_perslidwerkplek_key "
         + "  FROM prs_perslidwerkplek "
         + " WHERE prs_werkplek_key = " + wp_key;
     oRs = Oracle.Execute(sql);
     if (oRs.Eof)
     { // dit mag niet voorkomen bij S("prs_werkplek_implicit")==1
       // Verwijderen cascasdeert zelf door naar bv prj
        sql = "DELETE FROM prs_werkplek"
            + " WHERE prs_werkplek_key = " + wp_key;
        Oracle.Execute(sql);
        shared.internal_error("Informatie: deze werkplek was ongebruikt en is nu verwijderd: " + wp_key);
     }
     // dit is dan het geldige bezettingsrecord
     var pwp_key = oRs("prs_perslidwerkplek_key").value;

     oRs.MoveNext();
     if (!oRs.Eof)
     { // dit mag niet voorkomen bij S("prs_werkplek_implicit")==1 en kunnen we ook niet eenvoudig oplossen
        __DoLog("<div style=\"background-color: #FF00FF;\">Vreemd, meerdere bezettingen op impliciete werkplek " + wp_key + "</div>");
     }
   }
   // pwp_key is nu bepaald
   if (pwp_key > 0)
   { // Wijzigen van persoon en/of plaats alleen met ALG write rechten.
     var canAdd = (authparams.ALGwritelevel < 9); // TODO: fijner, ik denk 3. Ik moet voor deze locatie, dit district of deze regio schrijfrechten hebben.
     readonly = !canAdd || from_wproom;

     sql = "SELECT prs_perslid_key, "
         + "       prs_perslidwerkplek_bezetting, "
         + "       prs_perslidwerkplek_volgnr,"
         + "       pww.prs_werkplek_key,"
         + "       prs_werkplek_virtueel"
         + "  FROM prs_perslidwerkplek pww,"
         + "       prs_werkplek pw "
         + " WHERE pww.prs_werkplek_key = pw.prs_werkplek_key"
         + "   AND prs_perslidwerkplek_key = " + pwp_key;

    oRs = Oracle.Execute(sql);

      var wp_key     = oRs("prs_werkplek_key").value;
      var prs_key    = oRs("prs_perslid_key").value;
      var wp_volg    = oRs("prs_perslidwerkplek_volgnr").value;
      var wp_bez     = oRs("prs_perslidwerkplek_bezetting").value;
      var wp_virt    = oRs("prs_werkplek_virtueel").value;

    oRs.Close();
   }
%>
<html>
<head>
<%
   FCLTHeader.Generate();
%>
<script type="text/javascript">
    function alg_submit()
    {
        document.activeElement.blur(); // trigger laatste onChanges
        if (!validateForm("u2"))
            return false;
        document.forms.u2.submit();
    }
    function alg_cancel()
    {
        FcltMgr.closeDetail(window);
    }
</script>
</head>

<body class="modal" id="mod_perslidwerkplek">
<form name="u2"
      action="prs_edit_perslidwerkplek_save.asp?x=x<%=buildTransitParam(["pwp_key","wp_key","prs_key","room_key"])%>"
      method="post"
      onSubmit="alg_submit();">
<%
BLOCK_START("bezettingInfo", frame_lcl);

if (wp_key > -1 || room_key > -1) {
        FCLTpersoonselector("prs_key", // requestor
                            "sgPerson",
                            { label: L("lcl_person"),
                              perslidKey: prs_key,
                              filtercode: "",
                              whenEmpty: L("lcl_search_generic"),  // want filter
                              readonly: pwp_key > 0,
                              moreinfo: from_wproom,
                              required: true
                            });
}
if (prs_key > -1) {
        FCLTplaatsselector(authparams.ALGwritelevel, {
                           startlevel: 2, // locatie
                           eindlevel: S("prs_werkplek_implicit")==1?5:6, // ruimte of werkplek
                           werkplekkey: wp_key,
                           whenEmpty: L("lcl_search_generic"),  // want filter
                           showvirtueel: true,
                           filtercode: "INCVR",
                           readonly: readonly,
                           required: true
                       });
}

  RWFIELDTR("wp_volg", "fldshort", L("lcl_estate_pwp_seq"), wp_volg, {required: false, datatype: "number", maxlength: 2});
  RWFIELDTR("wp_bez",  "fldshort",  L("lcl_occupation"),    wp_bez, {required: true, datatype: "number", maxlength: 3});

  if (pwp_key > 0)
  {
    if (wp_virt == 1)
      ROCHECKBOXTR("fldtxt", L("lcl_estate_wp_virt"), wp_virt==1);
  }
  else
    CHECKBOXTR(L("lcl_estate_wp_virt"), "fldcheck", "wp_virt", false);

BLOCK_END();

CreateButtons([{ title: L("lcl_submit"), action: "alg_submit()"},
               { title: L("lcl_cancel"), action: "alg_cancel()"}]);
IFACE.FORM_END();
%>
</form>
</body>
</html>
