<% /*
     $Revision$
     $Id$
     File:               kpn_list.inc
     Description:        Show an overview of kostenplaats items in list-form,
                         which meets with the given requirements
     Parameters:
     Context:            Search action from kpn_kpn_search_list.asp form
     Note:
*/ %>

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

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

 function fnrowData(oRs)
        {
          var key        = oRs("prs_kostenplaats_key").Value;

          var data = {key:key};

          return JSON.stringify(data);
        }
%>
<script type="text/javascript">
  var autosearch = 1; // automatisch laden van resultaat op search pagina
  function refreshall(data)
    {
      if (data.refresh)
        window.location.reload();
    }

  function kpnEdit(row)
  {
    var kpnData = eval('(' + row.getAttribute("ROWDATA") + ')');
    var url = "appl/prs/kpn_kpn.asp?mode=viewUpdate&key="+kpnData.key;
    FcltMgr.openDetail(url, "<%=L("lcl_prs_dept_kosten")%>" + ' ' + kpnData.key, {callback: refreshall});
  }

  function doDelete(rowArray, isMulti)
  {
    FcltMgr.confirm(L("lcl_kpn_del_txt_kostenplaats"), { autoconfirm: isMulti }, function() {
        var kpnKeyString = getKeyString(rowArray);
        var data = {
            key: kpnKeyString,
            level: "KPN"
        };
        <% protectRequest.dataToken("data"); %>
        $.post("prs_delete.asp",
            data,
            FcltCallbackRefresh,
            "json");
    });
  }
</script>
<%

function kpn_list(pautfunction, params)
{
  // De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
  var addButton = [];

  var authparams = user.checkAutorisation("WEB_FINMSU", true);
  var canAdd = (authparams && authparams.ALGwritelevel < 9);

  // Voor resulttable de globalen zetten; zou ng anders moeten.
  var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc.
  var showall = params.showall;

  var descr = params.descr;
  var name = params.name;
  var budgeth_key = params.budgeth_key;
  var kstplgr_key = params.kstplgr_key;
%>

  <html>
    <head>
      <% FCLTHeader.Generate({outputmode:outputmode}) %>
    </head>
    <body id="listbody">
<%
  var sqln = "SELECT   k.prs_kostenplaats_key, "
           + "         k.prs_kostenplaats_nr, "
           + "         k.prs_kostenplaats_omschrijving, "
           +           S("prs_pers_string") + " naam,"
           + "         k.prs_kostenplaats_module, "
           + "         kpg.prs_kostenplaatsgrp_oms, "
           + "         p.prs_perslid_verwijder,"
           + "         k.prs_kostenplaats_eind"
           + "    FROM prs_kostenplaats k, "
           + "         prs_perslid p, "
           + "         prs_kostenplaatsgrp kpg "
           + "   WHERE p.prs_perslid_key(+) = k.prs_perslid_key "
           + "     AND k.prs_kostenplaats_verwijder IS NULL "

    if (authparams && authparams.PRSwritelevel == 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() + ")"
    }

    if (descr)
    {
      sqln += " AND UPPER(k.prs_kostenplaats_omschrijving) LIKE " + safe.quoted_sql_wild("%" + descr + "%");
    }

    if (name)
    {
      sqln += " AND UPPER(k.prs_kostenplaats_nr) LIKE " + safe.quoted_sql_wild("%" + name + "%");
    }

    if (budgeth_key)
    {
      sqln += " AND k.prs_perslid_key = " + budgeth_key;
    }

    if (kstplgr_key)
    {
      sqln += " AND k.prs_kostenplaatsgrp_key = " + kstplgr_key;
    }

    if (!(authparams && authparams.ALGreadlevel < 9 && authparams.ALGwritelevel < 9)) // Geen WEB_FINMSU. Dan ben ik budgedhouder en mag ik alleen mijn kostenplaatsen zien.
      // Budgethouder van kostenplaats UNION Budgethouder van kostenplaatsgroep.
      sqln = sqln
           + " AND kpg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key"
           + " AND k.prs_perslid_key = " + user_key
           + " UNION "
           + sqln
           + " AND kpg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key"
           + " AND kpg.prs_perslid_key = " + user_key;
    else
      sqln += " AND kpg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key"

    sqln += " ORDER BY 2"
         +  "        , 3"
         +  "        , 4"
         +  "        , 5"

    var addurl = "appl/prs/kpn_kpn.asp";

    if (canAdd)
    {
    addButton = [{ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + "')" }]
    }

    function formatBudgethouder (oRs)
    {
      var prefix = '' + oRs("prs_perslid_verwijder").Value != 'null' ? '<span class="deleted">' : '';
      var suffix = '' + oRs("prs_perslid_verwijder").Value != 'null' ? '</span>' : '';
      if ('' + oRs("naam").Value != 'null')
        return prefix + safe.html(oRs("naam").Value) + suffix;
    }

    function formatType (oRs)
    {
      switch(oRs("prs_kostenplaats_module").Value)
      {
        case 'PRS':
          return L("lcl_prs_kosttype_prs");
          break;
        case 'PRJ':
          return L("lcl_prs_kosttype_prj");
          break;
        case 'ALG':
          return L("lcl_prs_kosttype_alg");
          break;
        otherwise
          return '??'
      }
    }

    var rst = new ResultsetTable({ sql: sqln,
                                   keyColumn: "prs_kostenplaats_key",
                                   ID: "prstable",
                                   showAll: showall,
                                   rowData: fnrowData,
                                   outputmode: outputmode,
                                   filterParams: params,
                                   buttons: addButton
                                 });

    rst.addColumn(new Column({caption: L("lcl_prs_kostcode"), content: "prs_kostenplaats_nr"}));
    rst.addColumn(new Column({caption: L("lcl_prs_descr"), content: "prs_kostenplaats_omschrijving", hasActions: true}));
    rst.addColumn(new Column({caption: L("lcl_prs_budgethouder"), content: formatBudgethouder}));
    rst.addColumn(new Column({caption: L("lcl_prs_kostenpl_group"), content: "prs_kostenplaatsgrp_oms"}));
    rst.addColumn(new Column({caption: L("lcl_prs_kosttype"), content: formatType}));
    rst.addColumn(new Column({caption: L("lcl_end_date"), content: "prs_kostenplaats_eind"}));

    rst.addAction({ action: "kpnEdit", caption: L("lcl_edit"), isDefault: true});
    if (canAdd) // Als ik mag toevoegen mag ik ook verwijderen
      rst.addAction({ action: "doDelete", caption: L("lcl_delete"), multi: true, multiOnce: true});

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