FSN#39825: AiAi HSLE in SuggestPerslid.

svn path=/Website/branches/v2016.3/; revision=33127
This commit is contained in:
Maykel Geerdink
2017-03-14 07:13:52 +00:00
parent 3fe1d88468
commit 7c34d0aaa0

View File

@@ -76,70 +76,80 @@ function getFiltClausePersoon(pfiltcode, params)
break;
case 'BEHF': // Mogelijke behandelaar (voor toekenning)
// Dat is: als ik FO ben: fo-collegas
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
// Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega
lfiltClause = " AND p.prs_perslid_key IN"
+ " (SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker g, fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND g.ins_discipline_key = " + params.disc_key
+ " AND (g.fac_gebruiker_prs_level_write = -1"
+ " OR (g.fac_gebruiker_prs_level_write = 0"
+ " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key"
+ " FROM prs_v_afdeling aa"
+ " WHERE aa.prs_afdeling_key = " + afd_key + "))"
+ " OR (g.fac_gebruiker_prs_level_write > 0"
+ " AND p.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 = " + afd_key
+ " AND aa.niveau = g.fac_gebruiker_prs_level_write))"
+ " ))";
if (params.loc_key > 0)
lfiltClause += " AND (g.fac_gebruiker_alg_level_write = -1"
+ " OR (g.fac_gebruiker_alg_level_write < 9"
+ " AND " + params.loc_key + " IN "
+ " (SELECT alg_locatie_key FROM fac_v_my_locations "
+ " WHERE prs_perslid_key = p.prs_perslid_key"
+ " AND niveau = fac_gebruiker_alg_level_write)"
+ " ))";
lfiltClause +=" AND fac_functie_code = 'WEB_MLDFOF') ";
if (params.prs_key > 0)
{
var afd_key = new Perslid(params.prs_key).prs_afdeling_key();
// Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega
lfiltClause = " AND p.prs_perslid_key IN"
+ " (SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker g, fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND g.ins_discipline_key = " + params.disc_key
+ " AND (g.fac_gebruiker_prs_level_write = -1"
+ " OR (g.fac_gebruiker_prs_level_write = 0"
+ " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key"
+ " FROM prs_v_afdeling aa"
+ " WHERE aa.prs_afdeling_key = " + afd_key + "))"
+ " OR (g.fac_gebruiker_prs_level_write > 0"
+ " AND p.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 = " + afd_key
+ " AND aa.niveau = g.fac_gebruiker_prs_level_write))"
+ " ))";
if (params.loc_key > 0)
lfiltClause += " AND (g.fac_gebruiker_alg_level_write = -1"
+ " OR (g.fac_gebruiker_alg_level_write < 9"
+ " AND " + params.loc_key + " IN "
+ " (SELECT alg_locatie_key FROM fac_v_my_locations "
+ " WHERE prs_perslid_key = p.prs_perslid_key"
+ " AND niveau = fac_gebruiker_alg_level_write)"
+ " ))";
lfiltClause +=" AND fac_functie_code = 'WEB_MLDFOF') ";
}
else
lfiltClause = " AND 1 = 0";
break;
case 'BEHB': // Mogelijke behandelaar (voor toekenning)
// Dat is: als ik BO ben de bo-collegas.
var afd_key = new Perslid(params.prs_key).prs_afdeling_key(); // afdeling van de melder!
// Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega
lfiltClause = " AND p.prs_perslid_key IN"
+ " (SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker g, fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND g.ins_discipline_key = " + params.disc_key
+ " AND (g.fac_gebruiker_prs_level_write = -1"
+ " OR (g.fac_gebruiker_prs_level_write = 0"
+ " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key"
+ " FROM prs_v_afdeling aa"
+ " WHERE aa.prs_afdeling_key = " + afd_key + "))"
+ " OR (g.fac_gebruiker_prs_level_write > 0"
+ " AND p.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 = " + afd_key
+ " AND aa.niveau = g.fac_gebruiker_prs_level_write))"
+ " ))";
if (params.loc_key > 0)
lfiltClause += " AND (g.fac_gebruiker_alg_level_write = -1"
+ " OR (g.fac_gebruiker_alg_level_write < 9"
+ " AND EXISTS"
+ " (SELECT alg_locatie_key FROM fac_v_my_locations fl"
+ " WHERE prs_perslid_key = p.prs_perslid_key"
+ " AND niveau = fac_gebruiker_alg_level_write"
+ " AND fl.alg_locatie_key = " + params.loc_key + ")"
+ " ))";
lfiltClause +=" AND (fac_functie_code = 'WEB_MLDBOF' OR fac_functie_code = 'WEB_MLDBO2')) ";
if (params.prs_key > 0)
{
var afd_key = new Perslid(params.prs_key).prs_afdeling_key(); // afdeling van de melder!
// Let op: *mijn* rechten (params.autlevel) doen niet ter zake. Het gaat om de rechten van de collega
lfiltClause = " AND p.prs_perslid_key IN"
+ " (SELECT prs_perslid_key"
+ " FROM fac_v_webgebruiker g, fac_functie f"
+ " WHERE g.fac_functie_key = f.fac_functie_key"
+ " AND g.ins_discipline_key = " + params.disc_key
+ " AND (g.fac_gebruiker_prs_level_write = -1"
+ " OR (g.fac_gebruiker_prs_level_write = 0"
+ " AND d.prs_bedrijf_key = (SELECT aa.prs_bedrijf_key"
+ " FROM prs_v_afdeling aa"
+ " WHERE aa.prs_afdeling_key = " + afd_key + "))"
+ " OR (g.fac_gebruiker_prs_level_write > 0"
+ " AND p.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 = " + afd_key
+ " AND aa.niveau = g.fac_gebruiker_prs_level_write))"
+ " ))";
if (params.loc_key > 0)
lfiltClause += " AND (g.fac_gebruiker_alg_level_write = -1"
+ " OR (g.fac_gebruiker_alg_level_write < 9"
+ " AND EXISTS"
+ " (SELECT alg_locatie_key FROM fac_v_my_locations fl"
+ " WHERE prs_perslid_key = p.prs_perslid_key"
+ " AND niveau = fac_gebruiker_alg_level_write"
+ " AND fl.alg_locatie_key = " + params.loc_key + ")"
+ " ))";
lfiltClause +=" AND (fac_functie_code = 'WEB_MLDBOF' OR fac_functie_code = 'WEB_MLDBO2')) ";
}
else
lfiltClause = " AND 1 = 0";
break;
case 'FING': // externe partijen toegang tot facilitor
lfiltClause = " AND p.prs_perslid_key IN ("
@@ -321,26 +331,31 @@ function getFiltClausePersoon(pfiltcode, params)
break;
case 'SUBS': // Vervangers
var pkey = params.prs_key;
var bdr_key = new Perslid(pkey).afdeling().prs_bedrijf_key();
var afd_key = new Perslid(pkey).prs_afdeling_key();
if (S("prs_collegas_used") == 0) // Bedrijf niveau zit niet in prs_v_afdeling_familie
if (params.prs_key > 0)
{
var bdr_key = new Perslid(pkey).afdeling().prs_bedrijf_key();
var afd_key = new Perslid(pkey).prs_afdeling_key();
if (S("prs_collegas_used") == 0) // Bedrijf niveau zit niet in prs_v_afdeling_familie
{
lfiltClause += " AND p.prs_afdeling_key IN"
+ " (SELECT a.prs_afdeling_key FROM prs_v_afdeling a"
+ " WHERE a.prs_bedrijf_key = " + bdr_key + " )"
}
// PRS autorisatie
if (S("prs_collegas_used") > 0) // Efficiente versie van FAC_V_MY_PRS_AFDELINGEN_WRITE
{
lfiltClause +=" AND p.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 = " + afd_key
+ " AND aa.niveau = " + S("prs_collegas_used") + "))"
}
// PRS autorisatie
if (S("prs_collegas_used") > 0) // Efficiente versie van FAC_V_MY_PRS_AFDELINGEN_WRITE
{
lfiltClause +=" AND p.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 = " + afd_key
+ " AND aa.niveau = " + S("prs_collegas_used") + "))"
}
}
else
lfiltClause = " AND 1 = 0";
break;
default: __Log("KIES JUISTE FILTERCODE!!!");
lfiltClause = " AND 1 = 2";