<% /*
     $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':
      case 'C':    // All accounts
                   lfiltClause.where += AAfilter
                                      + (pfiltcode == "C"
                                        ? "   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_perslid_key = " + user_key;
                   break;
      case 'G':    // Gebouwkostenplaatsen
                   lfiltClause.where += "   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
                   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 || 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_wild((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
                                        : "");
                   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;
}
%>
