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

    File:               SuggestUitvoerende.asp
    Description:        Suggereer uitvoerenden
    Parameters:         k         De eerste paar letters
                        bAll      Haal alle records op (met nog steeds een maximum van 500)
                        autlevel  Optioneel: schrijfrechten op dit niveau nodig
                        filtcode  Beperkt de lijst met getoonde bedrijven
    Globals:
    Context:
    Note:
*/ %>

<%
JSON_Result = true;
%>

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

<%

var chars = getQParam("k", "");
var autlevel = getQParamInt("autlevel", -1);
var bAll = getQParamInt("SuggestAll", 0) == 1;
var filtcode = getQParam("filtcode", "");
var dienst = getQParamInt("dienst", -1);
var onrgoed_key = getQParamInt("onrgoed_key", -1);
var loc_key = getQParamInt("loc_key", -1);
var bld_key = getQParamInt("bld_key", -1);
var disc_key = getQParamInt("disc_key", -1);
var lutype = getQParam("lutype", 'U');
var externonly = getQParamInt("externonly", 0) == 1;
var isOfferte = getQParamInt("isOfferte", 0) == 1;
var exhandler = getQParamInt("exhandler", 0) == 1;

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

var params = { autlevel: autlevel,
               dienst: dienst,
               onrgoed_key: onrgoed_key,
               loc_key: loc_key,
               bld_key: bld_key,
               disc_key: disc_key,
               lutype: lutype,
               exhandler: exhandler,
               chars: chars };

var filtClause = getFiltClauseUitvoerende(filtcode, params);
if (lutype == "L")
  var uitvtabel = "(SELECT  prs_bedrijf_key"
                + "      , prs_bedrijf_naam"
                + "      , prs_bedrijf_naam_upper"
                + "      , prs_bedrijf_intern"
                + "      , COALESCE(prs_bedrijf_bezoek_plaats, prs_bedrijf_post_plaats) plaats"
                + "   FROM prs_bedrijf"
                + "  WHERE prs_bedrijf_verwijder IS NULL"
                + "    AND prs_bedrijf_leverancier = 1)";
else if (lutype == "U")
  var uitvtabel = "(SELECT  prs_bedrijf_key"
                + "      , prs_bedrijf_naam"
                + "      , prs_bedrijf_naam_upper"
                + "      , prs_bedrijf_intern"
                + "      , COALESCE(prs_bedrijf_bezoek_plaats, prs_bedrijf_post_plaats) plaats"
                + "   FROM prs_bedrijf"
                + "  WHERE prs_bedrijf_verwijder IS NULL"
                + "    AND prs_bedrijf_uitvoerende = 1)";
else if (lutype == "OU") // order handler
  var uitvtabel = "(SELECT DISTINCT prs_bedrijf_key"
                + "      , prs_bedrijf_naam"
                + "      , prs_bedrijf_naam_upper"
                + "      , prs_bedrijf_intern"
                + "      , COALESCE(prs_bedrijf_bezoek_plaats, prs_bedrijf_post_plaats) plaats"
                + "   FROM prs_bedrijf, mld_opdr"
                + "  WHERE prs_bedrijf_verwijder IS NULL"
                + "    AND prs_bedrijf_key = mld_opdr.mld_uitvoerende_keys)";
else if (params.lutype == "LU")
  var uitvtabel = "(SELECT  prs_bedrijf_key"
                + "      , prs_bedrijf_naam"
                + "      , prs_bedrijf_naam_upper"
                + "      , prs_bedrijf_intern"
                + "      , COALESCE(prs_bedrijf_bezoek_plaats, prs_bedrijf_post_plaats) plaats"
                + "   FROM prs_bedrijf"
                + "  WHERE prs_bedrijf_verwijder IS NULL"
                + "    AND (prs_bedrijf_uitvoerende = 1 OR prs_bedrijf_leverancier = 1))";
else // lutype == "B"
  var uitvtabel = "(SELECT  prs_bedrijf_key"
                + "      , prs_bedrijf_naam"
                + "      , prs_bedrijf_naam_upper"
                + "      , prs_bedrijf_intern"
                + "      , COALESCE(prs_bedrijf_bezoek_plaats, prs_bedrijf_post_plaats) plaats"
                + "   FROM prs_bedrijf"
                + "  WHERE prs_bedrijf_verwijder IS NULL)";

// Let op de bijzonder manier om prs_bedrijfdienstlocatie mee te nemen: hier interesseren me
// slechts de verschillende diensten, de plaats doet er niet toe.
// Geen autorisatie bij externe bedrijven (prs_bedrijf met prs_bedrijf_uitvoerende = 1 of prs_bedrijf_leverancier = 1)
// Niet persoon of plaats afhankelijk
sqlD = " SELECT b.prs_bedrijf_key uitv_key"
     + "      , " + safe.quoted_sql(L("lcl_mld_bedrijf_prefix")) + " || b.prs_bedrijf_naam naam"
     + "      , plaats dienst"
     + "      , CASE"
     + "        WHEN prs_bedrijf_intern = 1"
     + "        THEN 'BI'"
     + "        ELSE 'BE'"
     + "        END extra"
     + "      , 10"
     + "      , prs_bedrijf_naam_upper"
     + "   FROM " + uitvtabel + " b"
     + "  WHERE 1 = 1"
     + filtClause.bedrijf
     + "    AND UPPER(b.prs_bedrijf_naam) LIKE " + safe.quoted_sql_wild2(chars);

sqlP = " SELECT p.prs_perslid_key uitv_key"
     + "      , " + safe.quoted_sql(L("lcl_mld_person_prefix")) + " || " + S("prs_pers_string") + " naam"
     + "      , " + safe.quoted_sql(L("lcl_mld_intern")) + " dienst"
     + "      , 'P' extra"
     + "      , 99"
     + "      , prs_perslid_upper"
     + "   FROM prs_v_aanwezigperslid p"
     + "  WHERE (UPPER(" + safe.quoted_sql(L("lcl_mld_person_prefix")) + " || " + S("prs_pers_string") + ") LIKE " + safe.quoted_sql_wild2(chars)
     + "      OR UPPER(" + safe.quoted_sql(L("lcl_mld_intern")) + ") LIKE " + safe.quoted_sql_wild2(chars)+")"
     + filtClause.perslid;

sqlL = filtClause.locatie;
sqlG = filtClause.gebouw;

sqlarr = [];
if ((loc_key === -1 && bld_key === -1) || !S("mld_opdr_pref_contractors_only") || isOfferte && S("mld_opdr_pref_contractors_only") == 2) sqlarr.push(sqlD);
if (loc_key > 0) sqlarr.push(sqlL);
if (bld_key > 0) sqlarr.push(sqlG);
var mld_opdr_sel_intern_uitv = S("mld_opdr_sel_intern_uitv") == 1; // Internal contractors can be selected for all services {0=no (default) | 1=Yes}.
if ((dienst == -1 || mld_opdr_sel_intern_uitv) && !externonly && !exhandler) sqlarr.push(sqlP);  // Personen voldoen nooit aan een dienst

sql = sqlarr.join(" UNION ALL ");
sql = "SELECT * FROM(" + sql + ") ORDER BY 5, 6";

WriteResult(sql, bAll, "naam", "uitv_key", "dienst", "extra");
%>
<% ASPPAGE_END(); %>
