<% /*
     $Revision$
     $Id$

    File:               kostenplaatsFilter.inc
    Description:        functies voor kostenplaats suggest velden
    Globals:
    Context:
    Note:
*/ %>


<%
function getFiltClauseKostenplaats(pfiltcode, params)
{
  var lfiltClause = {from: "", where: ""};

  var AAfilter = "";
  if (pfiltcode == "AA")  // All active
    AAfilter = " AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)";

  if (pfiltcode != "A" && pfiltcode != "C" && pfiltcode != "G")   // lekker dan
  {// Check if person is authorized for all accounts
    var sql = " SELECT pk.prs_perslidkostenplaats_key"
            + "   FROM prs_perslidkostenplaats pk"
            + "  WHERE pk.prs_perslid_key = " + params.prs_key
            + (params.inzage
              ? "   AND pk.prs_perslidkostenplaats_inzage = 1"
              : "   AND pk.prs_perslidkostenplaats_boeken = 1")
            + "   AND pk.prs_kostenplaats_key IS NULL";
    oRs = Oracle.Execute(sql);
    if (!oRs.eof)
      pfiltcode = "A";
    oRs.Close();
  }

  if (pfiltcode && pfiltcode != "")
  {
    switch(pfiltcode)
    {
      case 'A':    //
                   lfiltClause.where += "   AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)";
                   break;
      case 'C':    // All accounts
                   lfiltClause.where += "   AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)"
                                      + "   AND k.prs_kostenplaats_key IN (SELECT c.prs_kostenplaats_key FROM cnt_v_aanwezigcontract c)" // Alle kostenplaatsen die bij een aanwezigcontract voorkomen;
                   break;
      case 'B':    // Waar ik kostenplaatsverantwoordelijke ben
                   lfiltClause.where += "   AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)"
                                      + "   AND k.prs_perslid_key = " + user_key;
                   break;
      case 'G':    // Gebouwkostenplaatsen
                   lfiltClause.where += "   AND (k.prs_kostenplaats_eind IS NULL OR k.prs_kostenplaats_eind > SYSDATE)"
                                      + "   AND  k.prs_kostenplaats_module = 'ALG'";
                   break;
      case 'AA':
      default:     // waar ik op mag boeken
                   // Geen autorisatie bij kostenplaatsen (prs_kostenplaats)
                   // Niet persoon of plaats afhankelijk

                   // De kp_key is -1 of groter als meegegeven. Dan alleen deze kostenplaats opleveren.
                   // De kp_key is -2 als niet meegegeven.
                   if (params.kp_key > -2)
                     lfiltClause.where += " AND k.prs_kostenplaats_key = " + params.kp_key
                                        + AAfilter;
                   else
                   {
                     lfiltClause.from += "        , prs_perslidkostenplaats pk";
                     lfiltClause.where += " AND pk.prs_kostenplaats_key = k.prs_kostenplaats_key"
                                        + (params.inzage
                                          ? "   AND pk.prs_perslidkostenplaats_inzage = 1"
                                          : "   AND pk.prs_perslidkostenplaats_boeken = 1")
                                        + " AND pk.prs_perslid_key = " + params.prs_key
                                        + AAfilter
                                        // van eigen afdeling erbij (S("prs_dep_default_kpn") is setting en showeigenkp is waarde van database setting mld_disc_params_default_kpn)
                                        + ( (S("prs_dep_default_kpn") & 1) == 1 || params.showeigenkp == 1
                                          ? " UNION"
                                            + " SELECT k.prs_kostenplaats_key kpkey"
                                            + ", " + S("prs_kpn_string") + " kpstring"
                                            + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                            + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                            + params.extraInf
                                            + " FROM prs_perslid p"
                                            + ", prs_afdeling a"
                                            + ", prs_v_aanwezigkostenplaats k"
                                            //+ (reado?", prs_kostenplaats k":", prs_v_aanwezigkostenplaats k")
                                            + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                            + " AND p.prs_afdeling_key = a.prs_afdeling_key"
                                            + " AND p.prs_perslid_key = " + params.prs_key
                                            + " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
                                            + AAfilter
                                          : "")
                                        + ( (S("prs_dep_default_kpn") & 2) == 2 && params.prs_key > 0 // die van je complete bedrijf
                                          ? " UNION"
                                            + " SELECT k.prs_kostenplaats_key kpkey"
                                            + ", " + S("prs_kpn_string") + " kpstring"
                                            + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                            + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                            + params.extraInf
                                            + " FROM prs_v_aanwezigafdeling a,"
                                            + "      prs_v_aanwezigkostenplaats k"
                                            //+ (reado?", prs_kostenplaats k":", prs_v_aanwezigkostenplaats k")
                                            + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                            + " AND a.prs_kostenplaats_key = k.prs_kostenplaats_key"
                                            + " AND a.prs_bedrijf_key = " + new Perslid(params.prs_key).afdeling().prs_bedrijf_key()
                                            + AAfilter
                                          : "")
                                        + ( (S("prs_dep_default_kpn") & 4) == 4 && params.prs_key > 0 // je persoonlijke kostenplaats
                                          ? " UNION"
                                            + " SELECT k.prs_kostenplaats_key kpkey"
                                            + ", " + S("prs_kpn_string") + " kpstring"
                                            + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                            + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                            + params.extraInf
                                            + "   FROM prs_perslid p"
                                            + ", prs_v_aanwezigkostenplaats k"
                                            + "  WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                            + "  AND p.prs_kostenplaats_key = k.prs_kostenplaats_key"
                                            + "  AND p.prs_perslid_key = " + params.prs_key
                                            + AAfilter
                                          : "")
                                        + ( (S("prs_dep_default_kpn") & 56) == 56 // 8+16+32, echt alles, ongeacht het type, om onnodige filtering op type te vermijden, want alles
                                          ? " UNION"
                                            + " SELECT k.prs_kostenplaats_key kpkey"
                                            + ", " + S("prs_kpn_string") + " kpstring"
                                            + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                            + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                            + params.extraInf
                                            + " FROM prs_v_aanwezigkostenplaats k"
                                            + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                            + AAfilter
                                          :   ( (S("prs_dep_default_kpn") & 8) == 8 // Geen 56 maar wel 8: PRS-kostenplaatsen
                                              ? " UNION"
                                                + " SELECT k.prs_kostenplaats_key kpkey"
                                                + ", " + S("prs_kpn_string") + " kpstring"
                                                + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                                + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                                + params.extraInf
                                                + " FROM prs_v_aanwezigkostenplaats k"
                                                + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                                + " AND k.prs_kostenplaats_module = 'PRS'"
                                                + AAfilter
                                              : "")
                                            + ( (S("prs_dep_default_kpn") & 16) == 16 // Geen 56 maar wel 16: PRJ-kostenplaatsen
                                              ? " UNION"
                                                + " SELECT k.prs_kostenplaats_key kpkey"
                                                + ", " + S("prs_kpn_string") + " kpstring"
                                                + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                                + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                                + params.extraInf
                                                + " FROM prs_v_aanwezigkostenplaats k"
                                                + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                                + " AND k.prs_kostenplaats_module = 'PRJ'"
                                                + AAfilter
                                              :  "")
                                            + ( (S("prs_dep_default_kpn") & 32) == 32 // Geen 56 maar wel 32: ALG-kostenplaatsen
                                              ? " UNION"
                                                + " SELECT k.prs_kostenplaats_key kpkey"
                                                + ", " + S("prs_kpn_string") + " kpstring"
                                                + ", (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
                                                + ", UPPER(" + S("prs_kpn_string") + ") upperkpstring"
                                                + params.extraInf
                                                + " FROM prs_v_aanwezigkostenplaats k"
                                                + " WHERE UPPER(" + S("prs_kpn_string") + ") LIKE " + safe.quoted_sql_wild2((params.chars? params.chars : ""))
                                                + " AND k.prs_kostenplaats_module = 'ALG'"
                                                + AAfilter
                                              : "")
                                          );
                   }
                   break;
    }
  }
  return lfiltClause;
}

function getExtraInfKostenplaats(pextracode)
{
  var lExtraInf = ", 'Extra' extra";
  if (pextracode && pextracode != "")
  {
    switch(pextracode)
    {
      case 'M': lExtraInf = ", k.prs_kostenplaats_module extra"; // module
                break;
      case 'B': lExtraInf = ", (SELECT " + S("prs_pers_string")
                          + " FROM prs_perslid p"
                          + " WHERE p.prs_perslid_key ="
                            + " COALESCE(k.prs_perslid_key"
                            + ", (SELECT kg.prs_perslid_key"
                            + " FROM prs_kostenplaatsgrp kg"
                            + " WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key))"
                          + ") extra"; // budgethouder (kostenplaatsverantwoordelijke of kostenplaatsgroepverantwoordelijke)
                break;
    }
  }
  return lExtraInf;
}
%>
