<% /*
    $Revision$
    $Id$

    File:               kpn_mandate_list.inc
    Description:        Show an overview of kostenplaats mandates items in list-form,
                        which meets with the given requirements
    Parameters:
    Context:            Search action from kpn_mandate_search_list.asp form
    Note:
*/ %>

<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="prs.inc" -->

<%
FCLTHeader.Requires({ plugins:["jQuery"],
                      js: ["jQuery-ui.js"]
                    })
%>
<script type="text/javascript">
  var autosearch = 1; // automatisch laden van resultaat op search pagina
  function refreshall(data)
  {
    if (data.refresh)
        window.location.reload();
  }

  function mandateEdit(rowArray, isMulti)
  {
    var kpnman_keys = getKeyString(rowArray);

    if (isMulti)
    {
      var url = "kpn_edit_mandate.asp?keys=" + kpnman_keys + "&modal=1";
      FcltMgr.openModalDetail(url, L("lcl_prs_kosten_mandate_multi"), { callback: refreshall});
    }
    else
    {
      var url = "appl/prs/kpn_mandate.asp?keys=" + kpnman_keys;
      FcltMgr.openDetail(url, L("lcl_prs_kosten_mandate") + ' ' + kpnman_keys, {callback: refreshall});
    }
  }

  function doDelete(rowArray, isMulti)
  {
    FcltMgr.confirm(L("lcl_kpn_del_txt_mandate"), { autoconfirm: isMulti }, function() {
        var kpnmanKeyString = getKeyString(rowArray);
        data = {
            key: kpnmanKeyString,
            level: "K"
        };
        <% protectRequest.dataToken("data"); %>
        $.post("prs_delete.asp",
            data,
            FcltCallbackRefresh,
            "json");
    });
  }
</script>
<%
function kpn_mandate_list(authparams, params)
{
  var addButton = [];

  // Voor WEB_FINMSU kijken naar prs en alg write rechten, fac_functie_min_level = 3, lees en schrijfrechten [ja/nee] (prs en alg altijd hetzelfde)
  // Voor WEB_FACMAN kijken naar prs write rechten, fac_functie_min_level = 7, lezen en schrijven organisatie
  // (Let op dat alg write rechten dan altijd -1 zijn, ook bij geen write rechten)
  // Dus alleen kijken naar prs write rechten
  var canAdd = (authparams.PRSwritelevel < 9);

  var prs_key = params.prs_key;
  var prs_kstpl = params.prs_kstpl;

  var authparamsFINMSU = user.checkAutorisation("WEB_FINMSU", true);
  hasWriteFINMSU = (authparamsFINMSU && authparamsFINMSU.PRSwritelevel < 9);
  var authparamsFACMAN = user.checkAutorisation("WEB_FACMAN", true);
  hasWriteFACMAN = (authparamsFACMAN && authparamsFACMAN.PRSwritelevel < 9);
%>

  <html>
    <head>
      <% FCLTHeader.Generate({outputmode:params.outputmode}) %>
    </head>
    <body id="listbody">
<%
      var sqln = "SELECT   pk.prs_perslidkostenplaats_key, "
               + "         k.prs_kostenplaats_nr || ' ' || k.prs_kostenplaats_omschrijving kostenplaats, "
               + S("prs_pers_string") + " naam, "
               + "         a.prs_afdeling_omschrijving, "
               + "         fp.fac_profiel_omschrijving, "
               + "         CASE"
               + "            WHEN pk.prs_perslidkostenplaats_boeken = 1 "
               + "               THEN " + safe.quoted_sql(L('lcl_yes'))
               + "            ELSE " + safe.quoted_sql(L('lcl_no'))
               + "         END boeken, "
               + "         CASE"
               + "            WHEN  pk.prs_perslidkostenplaats_inzage = 1 "
               + "               THEN " + safe.quoted_sql(L('lcl_yes'))
               + "            ELSE " + safe.quoted_sql(L('lcl_no'))
               + "         END inzage, "
               + "         k.prs_kostenplaats_key, "
               + "         k.prs_perslid_key verantwoordelijke_key, "
               + "         p.prs_perslid_key "
               + "    FROM prs_perslidkostenplaats pk, "
               + "         prs_v_aanwezigperslid p, "
               + "         prs_kostenplaats k, "
               + "         prs_afdeling a, "
               + "         fac_profiel fp "
               + "   WHERE pk.prs_perslid_key = p.prs_perslid_key "
               + "     AND k.prs_kostenplaats_key(+) = pk.prs_kostenplaats_key "
               + "     AND a.prs_afdeling_key = p.prs_afdeling_key "
               + "     AND fp.fac_profiel_key(+) = p.fac_profiel_key "


      if (params.filtercode == "B")
      { // ondermandateren
        sqln += " AND k.prs_perslid_key = " + user_key; // ik ben de kostenplaatsverantwoordelijke
        if ( authparams.PRSreadlevel > 0)
        {
          sqln += " AND p.prs_afdeling_key IN "
               +  "    (SELECT prs_afdeling_key FROM prs_v_afdeling_familie a"
               +  "      WHERE a.prs_afdeling_elder_key IN"
               +  "        (SELECT aa.prs_afdeling_elder_key"
               +  "           FROM prs_v_afdeling_familie aa"
               +  "          WHERE aa.prs_afdeling_key = " + user.prs_afdeling_key()
               +  "            AND aa.niveau = " + authparams.PRSreadlevel + "))";
        }
        if ( authparams.PRSreadlevel == 0 )
        {
          sqln += " AND p.prs_afdeling_key IN "
                +  "(SELECT a.prs_afdeling_key FROM prs_v_afdeling a "
                +   "WHERE a.prs_bedrijf_key = " + user.afdeling().prs_bedrijf_key() + ")"
        }
      }
      // else mandateren, alle kostenplaatsen

      if (prs_key)
      {
        sqln += " AND p.prs_perslid_key = " + prs_key;
      }

      if (prs_kstpl)
      {
        sqln += " AND k.prs_kostenplaats_key = " + prs_kstpl;
      }

      sqln += " ORDER BY kostenplaats, naam, fac_profiel_omschrijving, boeken, inzage  "

      function fnrowActionEnabler(oRs)
      {
        var eDelete = hasWriteFINMSU;
        if (!eDelete)
        { // Heeft WEB_FACMAN misschien wel schrijfrechten
          // Maar let op: Kostenplaats mag niet NULL zijn, want dan mag de mandatering niet
          // verwijderd worden. Algemene mandatering aanmaken mag namelijk ook niet.
          // Daarnaast mag je bij alleen WEB_FACMAN schrijfrechten, alleen de mandatering van
          // je eigen kostenplaatsen aanpassen/verwijderen.
          // JGL: als Kostenplaats IS NULL dan ook verantwoordelijke_key IS NULL door
          // outer join en blijft eDelete FALSE.
          eDelete = hasWriteFACMAN && oRs("verantwoordelijke_key").value == user_key;
        }
        return ({eDelete: eDelete})
      }

      function fncolKostenplaats(oRs)
      {
        // Als kostenplaats NULL is moet moet lcl_all in het overzicht komen te staan
        var kp = oRs("kostenplaats").value == " "? L("lcl_all") : oRs("kostenplaats").value;
        return safe.html(kp);
      }

      var addurl = "kpn_edit_mandate.asp?modal=1";
      if (canAdd)
      {
        addButton = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openModalDetail('" + addurl + "', '" + L("lcl_add") + "', { callback: refreshall })" }]
      }

      var rst = new ResultsetTable({sql: sqln,
                                    keyColumn: "prs_perslidkostenplaats_key",
                                    ID: "prstable",
                                    showAll: params.showall,
                                    rowActionEnabler: fnrowActionEnabler,
                                    outputmode: params.outputmode,
                                    filterParams: params,
                                    buttons: addButton
                                    });

      rst.addColumn(new Column({caption: L("lcl_prs_kosten"), content: fncolKostenplaats}));
      rst.addColumn(new Column({caption: L("lcl_prs_name"), content: "naam"}));
      rst.addColumn(new Column({caption: L("lcl_prs_organisatie"), content: "prs_afdeling_omschrijving"}));
      rst.addColumn(new Column({caption: L("lcl_prs_profile"), content: "fac_profiel_omschrijving"}));
      rst.addColumn(new Column({caption: L("lcl_prs_book"), content: "boeken"}));
      rst.addColumn(new Column({caption: L("lcl_prs_inspection"), content: "inzage"}));

      rst.addAction({ action: "mandateEdit", caption: L("lcl_prs_multi_edit"), multi: true, multiOnce: true, isDefault:  true});
      if (canAdd)
        rst.addAction({ action: "doDelete", caption: L("lcl_delete"), enabler: "eDelete", multi: true, multiOnce: true});

      var cnt = rst.processResultset();
%>
    </body>
  </html>
<%
}
%>

