FCLT#54582: Graag bij de taak en de taakafwijking aangeven welke leverancier de uitvoerder i.

svn path=/Website/branches/v2018.2/; revision=40696
This commit is contained in:
Maykel Geerdink
2019-01-29 08:06:10 +00:00
parent 317abcf424
commit 379ad00f1d
9 changed files with 398 additions and 178 deletions

View File

@@ -222,12 +222,18 @@ var authparams = user.checkAutorisation(autfunction);
</tr>
<!-- Discipline -->
<% FCLTdisciplineselector("disc",
<% if (insInspect)
// Interne uitvoerder (backo2), alleen de taken van de eigen bedrijfdienstlocaties en daar de ins_disciplines van (IB2),
// anders alleen de disciplines met inspecties (I).
var dfiltercode = backo2? "IB2" : "I";
else
var dfiltercode = null;
FCLTdisciplineselector("disc",
"sgDisc",
{ label: L("lcl_discipline"),
disc_key: dis_key > 0? dis_key : disc,
module: "INS",
filtercode: insInspect? "I" : null, // dan alleen disciplines met inspecties
filtercode: dfiltercode,
perslidKey: user_key,
autfunctionKey: authparams.autfunctionkey,
autRW: "R",
@@ -241,7 +247,14 @@ var authparams = user.checkAutorisation(autfunction);
%>
<!-- Soort groep -->
<% FCLTsrtgroepselector("srtgroep",
<% var dfiltercode = null;
if (urole == "fo")
var dfiltercode = "LEND";
else if (backo2)
// Interne uitvoerder (backo2), alleen de taken van de eigen bedrijfdienstlocaties en daar de ins_disciplines van (IB2),
var dfiltercode = "B2";
FCLTsrtgroepselector("srtgroep",
"sgSrtgroep",
{ label: L("lcl_obj_group"),
srtgroep_key: srtgroep,
@@ -249,7 +262,7 @@ var authparams = user.checkAutorisation(autfunction);
onChange: "onChangeSrtgroep",
urlAdd: [{urlParam: "disc_key", field: "disc"}],
trclass: "primsearch noxd",
filtercode: urole == "fo" ? "LEND" : null,
filtercode: dfiltercode,
whenEmpty: L("lcl_search_generic"), // want dit is een filter
multitoggle: true
});
@@ -287,6 +300,13 @@ var authparams = user.checkAutorisation(autfunction);
}
else
{
var dfiltercode = null;
if (urole == "fo")
var dfiltercode = "LEND";
else if (backo2)
// Interne uitvoerder (backo2), alleen de taken van de eigen bedrijfdienstlocaties en daar de ins_disciplines van (IB2),
var dfiltercode = "B2";
FCLTsrtdeelselector("srtdeel",
"sgSrtdeel",
{ label: L("lcl_obj_sort"),
@@ -297,7 +317,7 @@ var authparams = user.checkAutorisation(autfunction);
urlAdd: [{urlParam: "srtgroep_key", field: "srtgroep"},
{urlParam: "disc_key", field: "disc"}],
trclass: "primsearch noxd",
filtercode: urole == "fo" ? "LEND" : null,
filtercode: dfiltercode,
whenEmpty: L("lcl_search_generic") // want dit is een filter
});
%>
@@ -330,6 +350,29 @@ var authparams = user.checkAutorisation(autfunction);
+ " , ins_discipline_omschrijving"
+ " FROM ctr_discipline"
+ " WHERE ins_discipline_key " + ctr_disc_sql
+ (backo2 // Interne uitvoerder, alleen de taken van de eigen bedrijfdienstlocaties en daar de ctr_disciplines van.
? " AND ins_discipline_key IN (SELECT isc.ctr_discipline_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_v_allsrtinstallatie asi"
+ " WHERE asi.ins_srtinstallatie_key = isc.ins_srtinstallatie_key"
+ " AND asi.niveau = isc.ins_srtcontrole_niveau"
+ " AND ctr_discipline_key IN (SELECT w.ins_discipline_key"
+ " FROM fac_v_webgebruiker w"
+ " , fac_functie f"
+ " WHERE w.fac_functie_key = f.fac_functie_key"
+ " AND f.fac_functie_code = 'WEB_CTRUSE'"
+ " AND w.fac_gebruiker_prs_level_read < 9"
+ " AND w.fac_gebruiker_alg_level_read < 9"
+ " AND w.prs_perslid_key = " + user_key + ")"
+ " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))"
: "")
+ " ORDER BY 2";
FCLTselector("ctr_discipline",
sql,
@@ -352,6 +395,16 @@ var authparams = user.checkAutorisation(autfunction);
+ " WHERE asi.ins_srtinstallatie_key = isc.ins_srtinstallatie_key"
+ " AND asi.niveau = isc.ins_srtcontrole_niveau"
+ " AND ctr_discipline_key " + ctr_disc_sql
+ (backo2 // Interne uitvoerder, alleen de diensten van de eigen bedrijfdienstlocaties.
? " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + "))"
: "")
+ " ORDER BY UPPER("+lcl.xsql('ins_srtcontrole_omschrijving', 'ins_srtcontrole_key')+")";
FCLTselector("sel_srtcontrole",
sql,
@@ -366,6 +419,16 @@ var authparams = user.checkAutorisation(autfunction);
+ " , ins_srtcontroledl_xcp xcp"
+ " WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
+ " AND ctr_discipline_key " + ctr_disc_sql
+ (backo2 // Interne uitvoerder, alleen de diensten van de eigen bedrijfdienstlocaties.
? " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + "))"
: "")
+ " AND xcp.ins_scenario_key(+) = 1"
+ " AND COALESCE (xcp.ins_srtcontroledl_xcp_groep, isc.ins_srtcontrole_groep) IS NOT NULL"
+ " ORDER BY UPPER (COALESCE(xcp.ins_srtcontroledl_xcp_groep, isc.ins_srtcontrole_groep))";
@@ -380,7 +443,7 @@ var authparams = user.checkAutorisation(autfunction);
sql = "SELECT pd.prs_dienst_key"
+ ", " + lcl.xsqla("pd.prs_dienst_omschrijving", "pd.prs_dienst_key")
+ " FROM prs_dienst pd"
+ (backo2
+ (backo2 // Interne uitvoerder, alleen de diensten van de eigen bedrijfdienstlocaties.
? " WHERE pd.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
@@ -407,7 +470,7 @@ var authparams = user.checkAutorisation(autfunction);
{ companyKey: -1,
label: L("lcl_company"),
trclass: "primsearch noxd",
filtercode: backo2? null : "CI", // Contract onderhoud inspectieobjecten
filtercode: backo2? "B2" : "CI", // Interne uitvoerder, alleen de bedrijven van de eigen bedrijfdienstlocaties of Contract onderhoud inspectieobjecten
urlAdd: [{urlParam: "dienst", field: "dienst_key"}],
startempty: true,
whenEmpty: L("lcl_search_generic")
@@ -586,7 +649,7 @@ var authparams = user.checkAutorisation(autfunction);
escalateOnChUp: true, // ook onLocChange als je gebouw wijzigt
startlevel: alg_startlevel,
eindlevel: alg_endlevel, // ruimte/werkplek
filtercode: "INCVR",
filtercode: backo2? "INCVRB2" : "INCVR",
trclass: "noxd",
cadSelect: true,
cadShowdiscfn: "cadShowdiscfn",

View File

@@ -50,7 +50,13 @@ sql = "SELECT d.alg_district_key"
+ ", NULL extra "
+ " FROM alg_v_aanwezigdistrict d"
+ ", alg_v_aanwezigregio r"
+ (filtcode == "INCVRB2"
? ", alg_v_aanweziglocatie l"
: "")
+ " WHERE d.alg_regio_key = r.alg_regio_key"
+ (filtcode == "INCVRB2"
? " AND d.alg_district_key = l.alg_district_key"
: "")
+ " AND alg_district_upper LIKE " + safe.quoted_sql_wild(chars + "%")
+ filtClause
+ " ORDER BY 2"

View File

@@ -91,53 +91,52 @@ if (autlevel > -1)
+ " AND fl.alg_locatie_key = g.alg_locatie_key)";
}
else
filtClauseTerr = filtClause;
filtClauseTerr = filtClause;
sql = "SELECT g.alg_gebouw_key alg_key"
+ " , " + lcl.xsql('sg.alg_srtgebouw_omschrijving', 'sg.alg_srtgebouw_key') + " naam"
+ " , g.alg_gebouw_code || ' ' || g.alg_gebouw_naam" + filtClauseGebouw.code + " code"
+ " , 'B' extra"
+ " , 1 niveau"
+ " FROM alg_v_aanweziggebouw g"
+ " , alg_locatie l"
+ " , alg_srtgebouw sg"
+ filtClauseGebouw.from
+ " WHERE (UPPER(g.alg_gebouw_code) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(g.alg_gebouw_code || ' ' || g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
+ " AND l.alg_locatie_key = g.alg_locatie_key"
+ " AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)"
+ " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ filtClauseGebouw.where_geb
+ filtClause;
sql = "SELECT g.alg_gebouw_key alg_key"
+ " , " + lcl.xsql('sg.alg_srtgebouw_omschrijving', 'sg.alg_srtgebouw_key') + " naam"
+ " , g.alg_gebouw_code || ' ' || g.alg_gebouw_naam" + filtClauseGebouw.code + " code"
+ " , 'B' extra"
+ " , 1 niveau"
+ " FROM alg_v_aanweziggebouw g"
+ " , alg_locatie l"
+ " , alg_srtgebouw sg"
+ filtClauseGebouw.from
+ " WHERE (UPPER(g.alg_gebouw_code) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(g.alg_gebouw_code || ' ' || g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(g.alg_gebouw_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
+ " AND l.alg_locatie_key = g.alg_locatie_key"
+ " AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)"
+ " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ filtClauseGebouw.where
+ filtClauseGebouw.where_geb
+ filtClause;
if (autlevel >= 3)
sql +=" AND g.alg_gebouw_key IN"
+ " (SELECT alg_gebouw_key FROM fac_v_my_buildings"
+ " WHERE prs_perslid_key = " + user_key
+ " AND niveau = " + autlevel + ")";
if (terrein)
sql += " UNION "
+ " SELECT t.alg_terreinsector_key alg_key"
+ " , " + lcl.xsql('st.alg_srtterreinsec_omschrijving', 'st.alg_srtterreinsector_key') + " naam"
+ " , t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam" + filtClauseGebouw.code + " code"
+ " , 'T' extra"
+ " , 3 niveau"
+ " FROM alg_v_aanwezigterreinsector t"
+ " , alg_locatie l"
+ " , alg_srtterreinsector st"
+ filtClauseGebouw.from
+ " WHERE (UPPER(t.alg_terreinsector_code) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
+ " AND l.alg_locatie_key = t.alg_locatie_key"
+ " AND t.alg_srtterreinsector_key = st.alg_srtterreinsector_key(+)"
//+ filtClauseGebouw.where // MGE: MOET hier aan terreinen ook geen algemene where toegevoegd worden? Was niet aanwezig.
+ filtClauseGebouw.where_ter
+ filtClauseTerr;
if (terrein)
sql += " UNION "
+ " SELECT t.alg_terreinsector_key alg_key"
+ " , " + lcl.xsql('st.alg_srtterreinsec_omschrijving', 'st.alg_srtterreinsector_key') + " naam"
+ " , t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam" + filtClauseGebouw.code + " code"
+ " , 'T' extra"
+ " , 3 niveau"
+ " FROM alg_v_aanwezigterreinsector t"
+ " , alg_locatie l"
+ " , alg_srtterreinsector st"
+ filtClauseGebouw.from
+ " WHERE (UPPER(t.alg_terreinsector_code) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(t.alg_terreinsector_code || ' ' || t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%")
+ " OR UPPER(t.alg_terreinsector_naam) LIKE " + safe.quoted_sql_wild(chars + "%") + ")"
+ " AND l.alg_locatie_key = t.alg_locatie_key"
+ " AND t.alg_srtterreinsector_key = st.alg_srtterreinsector_key(+)"
+ filtClauseGebouw.where_ter
+ filtClauseTerr;
sql += " ORDER BY 5, 3";
sql += " ORDER BY 5, 3";
WriteResult(sql, bAll, "code", "alg_key", "naam", "extra");
WriteResult(sql, bAll, "code", "alg_key", "naam", "extra");
%>

View File

@@ -42,7 +42,15 @@ sql = "SELECT r.alg_regio_key"
+ ", alg_regio_omschrijving naam"
+ ", NULL extra"
+ " FROM alg_v_aanwezigregio r"
+ (filtcode == "INCVRB2"
? ", alg_v_aanwezigdistrict d"
+ ", alg_v_aanweziglocatie l"
: "")
+ " WHERE alg_regio_upper like " + safe.quoted_sql_wild(chars + "%")
+ (filtcode == "INCVRB2"
? " AND r.alg_regio_key = d.alg_regio_key"
+ " AND d.alg_district_key = l.alg_district_key"
: "")
+ filtClause
+ " ORDER BY 2"
WriteResult(sql, bAll, "naam", "alg_regio_key", "extra");

View File

@@ -24,6 +24,16 @@ function getFiltClauseBedrijf(pfiltcode, params)
case 'BL': // BES leveranciers
lfiltClause = " AND b.prs_bedrijf_key IN (SELECT prs_bedrijf_key FROM bes_srtdeel)";
break;
case 'B2': // Interne uitvoerder, alleen de bedrijven van de eigen bedrijfdienstlocaties.
lfiltClause = " AND b.prs_bedrijf_key IN (SELECT DISTINCT bdl.prs_bedrijf_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")"
+ ")";
break;
case 'C': lfiltClause = " AND b.prs_bedrijf_key IN (SELECT cnt_prs_bedrijf_key FROM cnt_contract)";
break;
case 'CI': // Met contract op inspecteerbare objecten en objectsoorten

View File

@@ -58,15 +58,32 @@ function getFiltClauseDiscipline(pfiltcode, params)
{
switch(pfiltcode)
{ // ins_srtgroep sg is er bij INS altijd
case "I": lfiltClause.where += " AND sg.ins_srtgroep_key IN"
+ " (SELECT sd1.ins_srtgroep_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_srtdeel sd1"
+ " WHERE sd1.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND ( isc.ins_srtcontrole_niveau = 'S' AND isc.ins_srtinstallatie_key = sd1.ins_srtdeel_key"
+ " OR isc.ins_srtcontrole_niveau = 'G' AND isc.ins_srtinstallatie_key = sg.ins_srtgroep_key"
+ " OR isc.ins_srtcontrole_niveau = 'D' AND isc.ins_srtinstallatie_key = sg.ins_discipline_key"
+ " ))";
case "I",
"IB2": lfiltClause.where += " AND sg.ins_srtgroep_key IN"
+ " (SELECT sd1.ins_srtgroep_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_srtdeel sd1"
+ " WHERE sd1.ins_srtgroep_key = sg.ins_srtgroep_key"
+ " AND ( isc.ins_srtcontrole_niveau = 'S' AND isc.ins_srtinstallatie_key = sd1.ins_srtdeel_key"
+ " OR isc.ins_srtcontrole_niveau = 'G' AND isc.ins_srtinstallatie_key = sg.ins_srtgroep_key"
+ " OR isc.ins_srtcontrole_niveau = 'D' AND isc.ins_srtinstallatie_key = sg.ins_discipline_key"
+ " ))"
+ (pfiltcode == "IB2" // Interne uitvoerder, alleen de taken van de eigen bedrijfdienstlocaties en daar de ins_disciplines van.
? " AND td.ins_discipline_key IN"
+ " (SELECT isi.ins_discipline_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_v_allsrtinstallatie isi"
+ " WHERE isc.ins_srtinstallatie_key = isi.ins_srtinstallatie_key"
+ " AND isc.ins_srtcontrole_niveau = isi.niveau"
+ " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))"
: "");
break;
case "FE": lfiltClause.where += " AND sm.mld_stdmelding_notfrontend = 0"
+ " AND ((sm.mld_stdmelding_vervaldatum is null) "

View File

@@ -28,6 +28,48 @@ var not_reserveerbare_ruimte = " AND NOT EXISTS "
+ " WHERE res_alg_ruimte_verwijder IS NULL "
+ " AND rar.alg_ruimte_key = r.alg_ruimte_key)";
// Bedrijfdienstlocatie afhankelijkheid voor gebouw gedeelte.
function getBdlGebouwNiveau()
{
var bdl_gebouw_niveau = " AND (g.alg_locatie_key IN (SELECT DISTINCT bdl.alg_locatie_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + "))"
+ " OR g.alg_gebouw_key IN (SELECT DISTINCT bdl.alg_gebouw_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))";
return bdl_gebouw_niveau
}
// Bedrijfdienstlocatie afhankelijkheid voor terrein gedeelte.
function getBdlLocatieNiveau(tableref)
{
var bdl_locatie_niveau = " AND (" + tableref + ".alg_locatie_key IN (SELECT DISTINCT bdl.alg_locatie_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + "))"
+ " OR " + tableref + ".alg_locatie_key IN (SELECT DISTINCT g.alg_locatie_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " , alg_v_aanweziggebouw g"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND bdl.alg_gebouw_key = g.alg_gebouw_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))";
return bdl_locatie_niveau
}
function getFiltClauseRegio(pfiltcode, params)
{
var lfiltClause = "";
@@ -46,6 +88,9 @@ function getFiltClauseRegio(pfiltcode, params)
+ " AND ag.alg_gebouw_bez = 1"
+ " AND ad.alg_regio_key = r.alg_regio_key)";
break;
// Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
case "INCVRB2": lfiltClause = getBdlLocatieNiveau("l");
break;
// Filter als gevolg van UWVA#14613
case "RES":
case "FAC": lfiltClause = " AND EXISTS"
@@ -86,6 +131,9 @@ function getFiltClauseDistrict(pfiltcode, params)
+ " (SELECT ''"
+ " FROM alg_v_aanweziglocatie al"
+ " WHERE al.alg_district_key = d.alg_district_key)";
// Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
case "INCVRB2": lfiltClause = getBdlLocatieNiveau("l");
break;
// Filter als gevolg van UWVA#14613
case "RES":
case "FAC": lfiltClause = " AND EXISTS"
@@ -123,13 +171,19 @@ function getFiltClauseLocatie(pfiltcode, params)
var lfiltClauseEXP = " AND EXISTS"
+ " (SELECT ''"
+ " FROM alg_v_aanweziggebouw gg"
+ " WHERE gg.alg_locatie_key = DECODE(l.alg_locatie_key, NULL, gg.alg_locatie_key, l.alg_locatie_key)"
+ " AND (gg.alg_gebouw_vervaldatum IS NULL OR gg.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " FROM alg_v_aanweziggebouw g"
+ " WHERE g.alg_locatie_key = DECODE(l.alg_locatie_key, NULL, g.alg_locatie_key, l.alg_locatie_key)"
+ " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ (pfiltcode == "INCVRB2" // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
? getBdlGebouwNiveau()
: "")
+ " UNION ALL"
+ " SELECT ''"
+ " FROM alg_v_aanwezigterreinsector t"
+ " WHERE t.alg_locatie_key = DECODE(l.alg_locatie_key, NULL, t.alg_locatie_key, l.alg_locatie_key)"
+ (pfiltcode == "INCVRB2" // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
? getBdlLocatieNiveau("t")
: "")
+ " )";
if (pfiltcode && pfiltcode != "")
@@ -150,21 +204,21 @@ function getFiltClauseLocatie(pfiltcode, params)
break;
case "RESB": // Bezorgplaats voor voorzieningen, d.i. locatie met ruimtes zonder louter reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 2)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv, alg_gebouw gg "
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key "
+ " AND gg.alg_locatie_key = l.alg_locatie_key"
+ not_reserveerbare_ruimte
+ ")"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 2);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
var loc_scope_act_filter = get_loc_scope_act_filter(params, 2)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv, alg_gebouw gg "
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = gg.alg_gebouw_key "
+ " AND gg.alg_locatie_key = l.alg_locatie_key"
+ not_reserveerbare_ruimte
+ ")"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 2);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
case "RES": // Locatie met minstens reserveerbare ruimte, en FAC bovendien
lfiltClause.where = " AND EXISTS"
@@ -188,28 +242,28 @@ function getFiltClauseLocatie(pfiltcode, params)
break;
case "RESA": // RES Afhaal: 'thuishaven' objecten en catering die een ruimte-scope heeft
lfiltClause.where = " AND l.alg_locatie_key IN"
+ " (SELECT g.alg_locatie_key"
+ " FROM res_srtartikel_onrgoed rso, alg_ruimte r, alg_verdieping v, alg_gebouw g"
+ " WHERE rso.alg_onrgoed_niveau='R'"
+ " AND rso.alg_onrgoed_key = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ " UNION"
+ " SELECT g.alg_locatie_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v, alg_gebouw g"
+ " WHERE res_ins_deel_key = ins_deel_key"
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ ")";
break;
lfiltClause.where = " AND l.alg_locatie_key IN"
+ " (SELECT g.alg_locatie_key"
+ " FROM res_srtartikel_onrgoed rso, alg_ruimte r, alg_verdieping v, alg_gebouw g"
+ " WHERE rso.alg_onrgoed_niveau='R'"
+ " AND rso.alg_onrgoed_key = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ " UNION"
+ " SELECT g.alg_locatie_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v, alg_gebouw g"
+ " WHERE res_ins_deel_key = ins_deel_key"
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ ")";
break;
case "CAD": // Die met CAD_TEKENING record
lfiltClause.where = " AND EXISTS"
@@ -222,9 +276,10 @@ function getFiltClauseLocatie(pfiltcode, params)
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
case "INCVR": // include virtual rooms, default these are NOT included
lfiltClause.where = lfiltClauseEXP;
break;
case "INCVR": // Include virtual rooms, default these are NOT included.
case "INCVRB2": // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
lfiltClause.where = lfiltClauseEXP;
break;
case "EXP": // vervallen gebouwen niet tonen
lfiltClause.where = lfiltClauseEXP;
@@ -240,72 +295,74 @@ function getFiltClauseLocatie(pfiltcode, params)
function getFiltClauseGebouw(pfiltcode, params)
{
params = params || {};
var lfiltClause = {code: "", from: "", where: "", where_geb: "", where_ter: ""};
var lfiltClause = {code: "", from: "", where_geb: "", where_ter: ""};
// Facilitair relevant hebben we vaker nodig
var lfiltClauseFAC = " AND sg.alg_srtgebouw_passief IS NULL"
+ " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))";
var lfiltClauseEXP = " AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))";
var lfiltClauseFAC = " AND sg.alg_srtgebouw_passief IS NULL";
if (pfiltcode && pfiltcode != "")
{
switch(pfiltcode)
{
case "BEZ": lfiltClause.where = " AND g.alg_gebouw_bez = 1";
case "BEZ": lfiltClause.where_geb = " AND g.alg_gebouw_bez = 1";
break;
// Filter als gevolg van UWVA#14613
case "RES": // Er is (nog) geen gebouwfilter bij reserveerbare ruimten
case "FAC": lfiltClause.where = lfiltClauseFAC;
break;
case "INCVR": // include virtual rooms, default these are NOT included
lfiltClause.where = lfiltClauseEXP;
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
case "FAC": lfiltClause.where_geb = lfiltClauseFAC;
break;
case "INCVR": // Include virtual rooms, default these are NOT included.
case "INCVRB2": // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
lfiltClause.where_geb = (pfiltcode == "INCVRB2"
? getBdlGebouwNiveau()
: "");
lfiltClause.where_ter = (pfiltcode == "INCVRB2"
? getBdlLocatieNiveau("t")
: "");
break;
case "RESB": // Bezorgplaats voor voorzieningen, d.i. gebouwen met ruimten excl. reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 3)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv"
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = g.alg_gebouw_key "
+ not_reserveerbare_ruimte
+ ")"
+ loc_scope_act_filter.where;
lfiltClause.where += get_res_bezorgfilter(params, 3);
lfiltClause.where += lfiltClauseFAC; // Ook dat nog
break;
var loc_scope_act_filter = get_loc_scope_act_filter(params, 3)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where_geb = " AND EXISTS"
+ " (SELECT '' "
+ " FROM alg_ruimte r, alg_verdieping vv"
+ " WHERE r.alg_ruimte_verwijder IS NULL "
+ " AND r.alg_verdieping_key = vv.alg_verdieping_key "
+ " AND vv.alg_gebouw_key = g.alg_gebouw_key "
+ not_reserveerbare_ruimte
+ ")"
+ loc_scope_act_filter.where;
lfiltClause.where_geb += get_res_bezorgfilter(params, 3);
lfiltClause.where_geb += lfiltClauseFAC; // Ook dat nog
break;
case "RESA": // RES Afhaal: 'thuishaven' objecten en catering die een ruimte-scope heeft
lfiltClause.where = " AND g.alg_gebouw_key IN"
+ " (SELECT v.alg_gebouw_key"
+ " FROM res_srtartikel_onrgoed rso, alg_ruimte r, alg_verdieping v"
+ " WHERE rso.alg_onrgoed_niveau='R'"
+ " AND rso.alg_onrgoed_key = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ " UNION"
+ " SELECT v.alg_gebouw_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v"
+ " WHERE res_ins_deel_key = ins_deel_key"
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ ")";
break;
lfiltClause.where_geb = " AND g.alg_gebouw_key IN"
+ " (SELECT v.alg_gebouw_key"
+ " FROM res_srtartikel_onrgoed rso, alg_ruimte r, alg_verdieping v"
+ " WHERE rso.alg_onrgoed_niveau='R'"
+ " AND rso.alg_onrgoed_key = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND rso.res_srtartikel_og_verwijder IS NULL"
+ get_res_afhaalfilter(params)
+ not_reserveerbare_ruimte
+ " UNION"
+ " SELECT v.alg_gebouw_key "
+ " FROM res_v_aanwezigdeel, ins_deel, alg_ruimte r, alg_verdieping v"
+ " WHERE res_ins_deel_key = ins_deel_key"
+ " AND COALESCE(ins_alg_ruimte_type_org, ins_alg_ruimte_type) = 'R'"
+ " AND COALESCE(ins_alg_ruimte_key_org, ins_alg_ruimte_key) = r.alg_ruimte_key"
+ " AND r.alg_verdieping_key = v.alg_verdieping_key"
+ get_res_afhaalfilter(params, true)
+ not_reserveerbare_ruimte
+ ")";
break;
case "CAD": // Die met CAD_TEKENING record
lfiltClause.where = " AND EXISTS"
+ " (SELECT ct.alg_verdieping_key"
+ " FROM cad_tekening ct, alg_verdieping v"
+ " WHERE ct.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ ")";
lfiltClause.where_geb = " AND EXISTS"
+ " (SELECT ct.alg_verdieping_key"
+ " FROM cad_tekening ct, alg_verdieping v"
+ " WHERE ct.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ ")";
break;
case "PRK": // Parkeerplaats gebouwen/terreinen
// getgebouwterrein_sql heeft al de WEB_BEZPAF authorisatie in zich
@@ -362,6 +419,20 @@ function getFiltClauseVerdieping(pfiltcode, params)
+ " AND (ag.alg_gebouw_vervaldatum IS NULL OR ag.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " AND ag.alg_gebouw_key = v.alg_gebouw_key)";
break;
case "CAD": // Die met CAD_TEKENING record
lfiltClause.where = " AND EXISTS"
+ " (SELECT ct.alg_verdieping_key"
+ " FROM cad_tekening ct"
+ " WHERE ct.alg_verdieping_key = v.alg_verdieping_key"
+ ")";
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
break;
case "INCVRB2": lfiltClause.where = getBdlGebouwNiveau(); // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
break;
// Filter als gevolg van UWVA#14613
case "RES": // Er is (nog) nergens een verdiepingfilter bij reserveerbare ruimten
case "FAC": lfiltClause.where = lfiltClauseFAC;
@@ -401,17 +472,6 @@ function getFiltClauseVerdieping(pfiltcode, params)
+ not_reserveerbare_ruimte
+ ")";
break;
case "CAD": // Die met CAD_TEKENING record
lfiltClause.where = " AND EXISTS"
+ " (SELECT ct.alg_verdieping_key"
+ " FROM cad_tekening ct"
+ " WHERE ct.alg_verdieping_key = v.alg_verdieping_key"
+ ")";
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
break;
}
}
if (params.stdm_key > 0)
@@ -456,20 +516,18 @@ function getFiltClauseRuimte(pfiltcode, params)
+ " AND (ag.alg_gebouw_vervaldatum IS NULL OR ag.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " AND av.alg_verdieping_key = r.alg_verdieping_key)";
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
break;
case "INCVRB2": lfiltClause.where = getBdlGebouwNiveau(); // Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
break;
// Filter als gevolg van UWVA#14613
case "RES": // Er is geen ruimtefilter bij reserveerbare ruimten
case "FAC": lfiltClause.where = lfiltClauseFAC;
break;
case "RESB": // Bezorgplaats voor voorzieningen, d.i. zonder de reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 5)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = not_reserveerbare_ruimte
+ get_res_bezorgfilter(params, 5)
+ loc_scope_act_filter.where
+ lfiltClauseFAC; // Ook dat nog
break;
case "RESA": // RES Afhaal: 'thuishaven' objecten en catering die een ruimte-scope heeft
lfiltClause.where = " AND r.alg_ruimte_key IN "
+ " (SELECT rso.alg_onrgoed_key"
@@ -487,7 +545,13 @@ function getFiltClauseRuimte(pfiltcode, params)
+ not_reserveerbare_ruimte;
break;
case "EXP": lfiltClause.where = lfiltClauseEXP;
case "RESB": // Bezorgplaats voor voorzieningen, d.i. zonder de reserveerbare ruimten
var loc_scope_act_filter = get_loc_scope_act_filter(params, 5)
lfiltClause.from = loc_scope_act_filter.from;
lfiltClause.where = not_reserveerbare_ruimte
+ get_res_bezorgfilter(params, 5)
+ loc_scope_act_filter.where
+ lfiltClauseFAC; // Ook dat nog
break;
}
}
@@ -518,6 +582,10 @@ function getFiltClauseWerkplek(pfiltcode, params)
+ " AND (ag.alg_gebouw_vervaldatum IS NULL OR ag.alg_gebouw_vervaldatum > TRUNC(SYSDATE))"
+ " AND ar.alg_ruimte_key = w.prs_alg_ruimte_key)";
break;
// Voor backo2 moet de bedrijfdienstlocatie meegenomen worden.
case "INCVRB2": lfiltClause = getBdlLocatieNiveau("g");
break;
}
}
return lfiltClause;

View File

@@ -43,8 +43,29 @@ function getFiltClauseSrtdeel(pfiltcode, params)
if (params.srtdeel_key && params.srtdeel_key > 0)
lfiltClause.where += " AND sd." + module + "_srtdeel_key = " + params.srtdeel_key;
if (pfiltcode == "LEND")
lfiltClause.where += " AND sd.ins_srtdeel_uitleenbaar = 1";
if (pfiltcode && pfiltcode != "")
{
switch(pfiltcode)
{ // ins_srtgroep sg is er bij INS altijd
case "LEND": lfiltClause.where += " AND sd.ins_srtdeel_uitleenbaar = 1"
break;
case "B2": lfiltClause.where += " AND id.ins_discipline_key IN"
+ " (SELECT isi.ins_discipline_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_v_allsrtinstallatie isi"
+ " WHERE isc.ins_srtinstallatie_key = isi.ins_srtinstallatie_key"
+ " AND isc.ins_srtcontrole_niveau = isi.niveau"
+ " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))";
break;
}
}
if (pfiltcode != "VERW")
lfiltClause.where += " AND sd." + module + "_srtdeel_verwijder IS NULL";

View File

@@ -35,16 +35,44 @@ function getFiltClauseSrtgroep(pfiltcode, params) // pfiltcode not used yet
if (params.srtgroep_key && params.srtgroep_key > 0)
lfiltClause += " AND sg." + module + "_srtgroep_key = " + params.srtgroep_key;
if (pfiltcode == "LEND")
{
lfiltClause += " AND sg.ins_srtgroep_key IN"
+ " (SELECT ins_srtgroep_key"
+ " FROM ins_srtdeel sd1"
+ " WHERE sd1.ins_srtdeel_verwijder IS NULL"
+ " AND sd1.ins_srtdeel_uitleenbaar = 1)";
+ " AND sd1.ins_srtdeel_uitleenbaar = 1)";
}
if (pfiltcode && pfiltcode != "")
{
switch(pfiltcode)
{ // ins_srtgroep sg is er bij INS altijd
case "LEND": lfiltClause += " AND sg.ins_srtgroep_key IN"
+ " (SELECT ins_srtgroep_key"
+ " FROM ins_srtdeel sd1"
+ " WHERE sd1.ins_srtdeel_verwijder IS NULL"
+ " AND sd1.ins_srtdeel_uitleenbaar = 1)";
break;
case "B2": lfiltClause += " AND td.ins_discipline_key IN"
+ " (SELECT isi.ins_discipline_key"
+ " FROM ins_srtcontrole isc"
+ " , ins_v_allsrtinstallatie isi"
+ " WHERE isc.ins_srtinstallatie_key = isi.ins_srtinstallatie_key"
+ " AND isc.ins_srtcontrole_niveau = isi.niveau"
+ " AND isc.prs_dienst_key IN (SELECT DISTINCT d.prs_dienst_key"
+ " FROM prs_bedrijfdienstlocatie bdl"
+ " , prs_dienst d"
+ " WHERE bdl.prs_dienst_key = d.prs_dienst_key"
+ " AND d.prs_dienst_key = isc.prs_dienst_key"
+ " AND bdl.prs_bedrijf_key = (SELECT cp.prs_bedrijf_key"
+ " FROM prs_contactpersoon cp"
+ " WHERE cp.prs_perslid_key = " + user_key + ")))";
break;
}
}
if (params.autfunction != "")
{
var authparams = user.checkAutorisation(params.autfunction);