BLST#78768 Ontwikkeling script t.b.v. bijwerken werkplekken

svn path=/Customer/trunk/; revision=61477
This commit is contained in:
Suzan Wiegerinck
2023-08-17 07:50:42 +00:00
parent 3b5e452d7a
commit 76c6db9cbb

View File

@@ -6282,6 +6282,157 @@ AS
v_errorhint VARCHAR2 (200);
v_perslid_key NUMBER;
-- werkplekken bij gebouwen die zijn verwijderd of vervallen, deze werkplekken mogen sowieso allemaal weg
CURSOR verwijder
IS
SELECT pw.prs_perslidwerkplek_key, pw.prs_perslid_key
FROM prs_perslidwerkplek pw,
prs_werkplek w,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND r.alg_ruimte_key = w.prs_alg_ruimte_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND ( g.alg_gebouw_verwijder IS NOT NULL
OR g.alg_gebouw_vervaldatum <= TRUNC(SYSDATE));
-- de werkplekken van mdw van de Belastingdienst die zijn komen te vervallen
CURSOR intern_verw
IS
SELECT pw.prs_perslidwerkplek_key, prs.prs_perslid_key
FROM prs_perslidwerkplek pw,
prs_werkplek w,
(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 <= TRUNC(SYSDATE)
OR ud.fac_usrdata_verwijder IS NOT 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 UPPER (ud.fac_usrdata_omschr) = 'BD') wp --- alle werklocaties die zijn vervallen of verwijderd voor deze mdw
WHERE wp.afdeling = prs.prs_afdeling_upper
AND 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;
-- de werkplekken van mdw van de specifieke afdelingen binnen Belastingdienst die zijn komen te vervallen
CURSOR intern_spec_verw IS
SELECT pw.prs_perslidwerkplek_key, p.prs_perslid_key
FROM fac_usrtab ut,
fac_usrdata ud,
prs_afdeling a,
prs_perslid p,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
prs_perslidwerkplek pw,
prs_werkplek w
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 <= TRUNC(SYSDATE)
OR ud.fac_usrdata_verwijder IS NOT 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 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
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);
-- de werkplekken van externen die zijn komen te vervallen
CURSOR extern_verw IS
SELECT pw.prs_perslidwerkplek_key, prs.prs_perslid_key
FROM prs_perslidwerkplek pw,
prs_werkplek w,
(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_verwijder IS NOT 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') wp --- alle werkplekken (dummy ruimte per gebouw) waar deze medewerkers een werkplek zouden moeten hebben
WHERE wp.afdeling = prs.prs_afdeling_upper
AND 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;
-- de werkplekken die alle mdw van de Belastingdienst moeten krijgen
CURSOR intern IS
SELECT prs.prs_perslid_key, wp.alg_ruimte_key
@@ -6323,6 +6474,9 @@ AS
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL
AND (g.alg_gebouw_vervaldatum > SYSDATE
OR g.alg_gebouw_vervaldatum IS NULL)
AND g.alg_gebouw_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
@@ -6358,6 +6512,9 @@ AS
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND v.alg_verdieping_verwijder IS NULL
AND (g.alg_gebouw_vervaldatum > SYSDATE
OR g.alg_gebouw_vervaldatum IS NULL)
AND g.alg_gebouw_verwijder IS NULL
AND EXISTS
(SELECT prs_afdeling_key
FROM prs_afdeling a
@@ -6422,6 +6579,9 @@ AS
AND r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_000'
AND r.alg_ruimte_verwijder IS NULL
AND (g.alg_gebouw_vervaldatum > SYSDATE
OR g.alg_gebouw_vervaldatum IS NULL)
AND g.alg_gebouw_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
@@ -6432,6 +6592,126 @@ AS
AND pw.prs_perslid_key = prs.prs_perslid_key);
BEGIN
FOR REC IN verwijder
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek verwijderen voor perslid: ' || rec.prs_perslid_key;
BEGIN
DELETE prs_perslidwerkplek pw
WHERE pw.prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Verwijderen werkplek BD medewerker',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN intern_verw
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek verwijderen voor perslid: ' || rec.prs_perslid_key;
BEGIN
DELETE prs_perslidwerkplek pw
WHERE pw.prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Verwijderen werkplek',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN intern_spec_verw
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek verwijderen voor perslid: ' || rec.prs_perslid_key;
BEGIN
DELETE prs_perslidwerkplek pw
WHERE pw.prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Verwijderen werkplek',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN extern_verw
LOOP
v_perslid_key := rec.prs_perslid_key;
v_aanduiding := 'Perslidkey: ' || rec.prs_perslid_key;
v_errorhint :=
'Werkplek verwijderen voor perslid: ' || rec.prs_perslid_key;
BEGIN
DELETE prs_perslidwerkplek pw
WHERE pw.prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
'Verwijderen werkplek',
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
FOR REC IN intern
LOOP
v_perslid_key := rec.prs_perslid_key;