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

    File:               SuggestAfdeling.asp
    Description:        Suggereer afdelingen
    Parameters:         k         De eerste paar letters
                        bAll      Haal alle records op (met nog steeds een maximum van 500)
                        filtcode  Beperk de lijst met getoonde afdelingen
                                  'P': Filter op prs_afdeling_parentkey is null (niveau 1)
                        autlevel  Optioneel: schrijfrechten op dit niveau nodig
    Globals:
    Context:
    Note:               Merk op dat de kostenplaats er ook altijd bij wordt gezocht, handig met withExtraParamField
*/ %>
<%
JSON_Result = true;
%>

<!-- #include file="../../Shared/common.inc" -->
<!-- #include file="./suggest.inc" -->
<!-- #include file="./afdelingFilter.inc" -->

<%
var chars = getQParam("k", "");
var autlevel = getQParamInt("autlevel", -1);
var bAll = getQParamInt("SuggestAll", 0) == 1;
var filtcode = getQParam("filtcode", "");
var bedrijf_key = getQParamInt("bedrijf_key", -1);

chars = chars.replace(/\*/g,"%");

var filtClause = getFiltClauseAfdeling(filtcode);

if (autlevel == 0) // Bedrijf niveau zit niet in prs_v_afdeling_familie
{
  filtClause +=" AND d.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 (autlevel > 0) // Efficiente versie van FAC_V_MY_PRS_AFDELINGEN_WRITE
{
  if (filtcode == "P")
  {
    if (autlevel >= 9)
    {
      filtClause += " AND 1 = 2"
    }
    else if (autlevel > 0 && autlevel < 9) // Alleen eigen Sector laten zien
    {
      filtClause += " AND prs_afdeling_key IN"
                  + "    (SELECT ab.prs_afdeling_key1"
                  + "       FROM prs_perslid p, prs_v_afdeling_boom ab"
                  + "      WHERE p.prs_afdeling_key = ab.prs_afdeling_key"
                  + "        AND prs_perslid_key = " + user_key + ")"
    }
  }
  else if (filtcode == "INCL")
  {
    var afd_key = user.prs_afdeling_key();
    if (autlevel >= 9)
    {
      filtClause += " AND 1 = 2"
    }
    else if (autlevel > 0 && autlevel < 9) // Inclusief onderliggende afdelingen waar ik recht op heb
    {
      filtClause += " AND d.niveau >= " + autlevel
                  + " AND d.prs_afdeling_key IN"
                  + "    (SELECT ab.prs_afdeling_key"
                  + "       FROM prs_v_aanwezigafdeling_boom ab"
                  + "      WHERE (   prs_afdeling_key1 = " + afd_key
                  + "             OR prs_afdeling_key2 = " + afd_key
                  + "             OR prs_afdeling_key3 = " + afd_key
                  + "             OR prs_afdeling_key4 = " + afd_key
                  + "             OR prs_afdeling_key5 = " + afd_key + "))";
    }
  }
  else // Geen filtercode
  {
    filtClause +=" AND d.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 = " + autlevel + "))"
  }
}
if (bedrijf_key > 0)
{
  filtClause += " AND d.prs_bedrijf_key = " + bedrijf_key;
}

sql = "SELECT d.prs_afdeling_key"
    + ", " + S("prs_dep_string") + " dep"
    + ", " + S("prs_kpn_string") + " kpl"
    + ", prs_afdeling_naam3 afd"
    + " FROM prs_v_aanwezigafdeling d, prs_v_aanwezigkostenplaats k"
    + " WHERE (UPPER(" + S("prs_dep_string") + ") LIKE " + safe.quoted_sql_wild2(chars)
      + "       OR UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2(chars)
      + "       OR UPPER(prs_afdeling_naam3) LIKE " + safe.quoted_sql_wild2(chars) + ")"
    + "   AND d.prs_kostenplaats_key = k.prs_kostenplaats_key (+)"
      + filtClause
    + " ORDER BY 2"

  WriteResult(sql, bAll, "dep", "prs_afdeling_key", "afd", "kpl");
%>
<% ASPPAGE_END(); %>
