BLST#73155 Script om de werkplekken van alle gebruikers bij te werken

svn path=/Customer/trunk/; revision=57729
This commit is contained in:
Suzan Wiegerinck
2022-10-24 12:55:56 +00:00
parent c4513bf833
commit 75d49b8c17

View File

@@ -6087,20 +6087,244 @@ BEGIN
END;
/
--de weekly task draait elke zondagochtend
CREATE OR REPLACE PROCEDURE blst_weekly
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
v_perslid_key NUMBER;
-- de werkplekken die alle mdw van de Belastingdienst moeten krijgen
CURSOR intern IS
SELECT prs.prs_perslid_key, wp.alg_ruimte_key
FROM (SELECT a.prs_afdeling_key,
p.prs_perslid_key,
p.prs_perslid_naam,
bu.prs_afdeling_upper
FROM prs_afdeling a, prs_perslid p, prs_afdeling bu
WHERE a.prs_afdeling_parentkey = 21
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND bu.prs_afdeling_key = a.prs_afdeling_parentkey
UNION ALL
SELECT a.prs_afdeling_key,
p.prs_perslid_key,
p.PRS_PERSLID_NAAM,
a.prs_afdeling_upper
FROM prs_afdeling a, prs_perslid p
WHERE a.prs_afdeling_key = 21
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key) prs, --- selectie van alle personen die rechtstreeks of op een lager level voor de BD werken
(SELECT r.alg_ruimte_key,
UPPER (ud.fac_usrdata_omschr) afdeling
FROM fac_usrtab ut,
fac_usrdata ud,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE UPPER (ut.fac_usrtab_naam) = 'WERKPLEKKEN BD'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ut.fac_usrtab_verwijder IS NULL
AND ( ud.fac_usrdata_vervaldatum > SYSDATE
OR ud.fac_usrdata_vervaldatum IS NULL)
AND ud.fac_usrdata_verwijder IS NULL
AND fac.safe_to_number (ud.fac_usrdata_prijs) =
fac.safe_to_number (g.alg_gebouw_code)
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL
AND UPPER (ud.fac_usrdata_omschr) = 'BD') wp --- alle werkplekken (dummy ruimte per gebouw) waar deze medewerkers een werkplek zouden moeten hebben
WHERE wp.afdeling = prs.prs_afdeling_upper
AND NOT EXISTS ---- maar welke dus nog ontbreken
(SELECT pw.prs_perslid_key
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = wp.alg_ruimte_key
AND pw.prs_perslid_key = prs.prs_perslid_key);
-- werkplekken die alleen bepaalde afdelingen van de BD moeten krijgen
CURSOR intern_spec IS
SELECT p.prs_perslid_key, r.alg_ruimte_key
FROM fac_usrtab ut,
fac_usrdata ud,
prs_afdeling a,
prs_perslid p,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE UPPER (ut.fac_usrtab_naam) = 'WERKPLEKKEN BD'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ut.fac_usrtab_verwijder IS NULL
AND ( ud.fac_usrdata_vervaldatum > SYSDATE
OR ud.fac_usrdata_vervaldatum IS NULL)
AND ud.fac_usrdata_verwijder IS NULL
AND UPPER (ud.fac_usrdata_omschr) = a.prs_afdeling_upper
AND fac.safe_to_number (ud.fac_usrdata_prijs) =
fac.safe_to_number (g.alg_gebouw_code)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_verwijder IS NULL
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL
AND EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_parentkey = 21
AND p.prs_afdeling_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT pw.prs_perslid_key
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key);
--- werkplekken voor bepaalde externe organisaties
CURSOR extern IS
SELECT prs.prs_perslid_key, wp.alg_ruimte_key
FROM (SELECT a.prs_afdeling_key,
p.prs_perslid_key,
p.prs_perslid_naam,
bu.prs_afdeling_upper
FROM prs_afdeling a, prs_perslid p, prs_afdeling bu
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND bu.prs_afdeling_key = a.prs_afdeling_parentkey
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE ( a.prs_afdeling_parentkey = 21
OR a.prs_afdeling_key = 21)
AND p.prs_afdeling_key =
a.prs_afdeling_key)
UNION ALL
SELECT a.prs_afdeling_key,
p.prs_perslid_key,
p.prs_perslid_naam,
a.prs_afdeling_upper
FROM prs_afdeling a, prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
WHERE ( a.prs_afdeling_parentkey = 21
OR a.prs_afdeling_key = 21)
AND p.prs_afdeling_key =
a.prs_afdeling_key)) prs, --- selectie van alle personen die niet voor de BD werken
(SELECT r.alg_ruimte_key,
UPPER (ud.fac_usrdata_omschr) afdeling
FROM fac_usrtab ut,
fac_usrdata ud,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE UPPER (ut.fac_usrtab_naam) = 'WERKPLEKKEN EXT'
AND ut.fac_usrtab_key = ud.fac_usrtab_key
AND ut.fac_usrtab_verwijder IS NULL
AND ( ud.fac_usrdata_vervaldatum > SYSDATE
OR ud.fac_usrdata_vervaldatum IS NULL)
AND ud.fac_usrdata_verwijder IS NULL
AND fac.safe_to_number (ud.fac_usrdata_prijs) =
fac.safe_to_number (g.alg_gebouw_code)
AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL) wp --- alle werkplekken (dummy ruimte per gebouw) waar deze medewerkers een werkplek zouden moeten hebben
WHERE wp.afdeling = prs.prs_afdeling_upper
AND NOT EXISTS ---- maar welke dus nog ontbreken
(SELECT pw.prs_perslid_key
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = wp.alg_ruimte_key
AND pw.prs_perslid_key = prs.prs_perslid_key);
BEGIN
-- bijwerken van werkplekken voor medewerkers Belastingdienst
blst.prs_bd_werkplekken(NULL);
-- bijwerken van werkplekken voor externe medewerkers
blst.prs_ext_werkplekken(NULL);
FOR REC IN intern
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek koppelen voor BD perslid: ' || rec.prs_perslid_key;
BEGIN
prs.movetoruimte (v_perslid_key, rec.alg_ruimte_key, '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Toewijzen werkplek BD medewerker',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN intern_spec
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Afdelingsspec. werkplek koppelen voor BD perslid: ' || rec.prs_perslid_key;
BEGIN
prs.movetoruimte (v_perslid_key, rec.alg_ruimte_key, '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Toewijzen afdelingsspec. werkplek BD',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN extern
LOOP
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek koppelen voor extern perslid: ' || rec.prs_perslid_key;
BEGIN
prs.movetoruimte (rec.prs_perslid_key, rec.alg_ruimte_key, '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Toewijzen externe werkplekken',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
END;
/
CREATE OR REPLACE VIEW BLST_V_RAP_RES_MOB
(
HIDE_F_SRT,