From 76c6db9cbbe13d4b43340b5e42469e0e83268524 Mon Sep 17 00:00:00 2001 From: Suzan Wiegerinck Date: Thu, 17 Aug 2023 07:50:42 +0000 Subject: [PATCH] BLST#78768 Ontwikkeling script t.b.v. bijwerken werkplekken svn path=/Customer/trunk/; revision=61477 --- BLST/BLST.sql | 280 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) diff --git a/BLST/BLST.sql b/BLST/BLST.sql index 717584a78..5ae1e4e86 100644 --- a/BLST/BLST.sql +++ b/BLST/BLST.sql @@ -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;