From 46692139b956b288537e802580793c7eb9db084e Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Thu, 27 Mar 2025 13:45:45 +0000 Subject: [PATCH] MNNL#78061 PRS-import/Uitbreiden met P-kolom svn path=/Customer/trunk/; revision=68565 --- MNNL/mnnl.sql | 118 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 99 insertions(+), 19 deletions(-) diff --git a/MNNL/mnnl.sql b/MNNL/mnnl.sql index 2bfa9bc0f..184c24b6c 100644 --- a/MNNL/mnnl.sql +++ b/MNNL/mnnl.sql @@ -188,11 +188,11 @@ BEGIN prs.import_perslid (p_import_key, '8;0;0;0;0;0;5;4;0;3;' || -- Locatiecode=8/Email=6/Afdeling=5/Achternaam=4/Voornaam=3 '0;0;0;0;0;7;0;6;0;10;' || -- Telefoon=7/Email=6/Personeelsnummer=10 - '3;1;0;0;0;0;0;0;0;0;' || -- Functie=3/Login=1 + '3;1;0;0;0;0;11;0;0;0;' || -- Functie=3/Login=1/Woon-Werk-afstand=11 '0;0;0;0;0;0;0;0;0;0;' || '0;0;0;0;0;0', - --1 2 3 4 5 6 7 8 - '"sAMAccountName";"name";"givenname";"sn";"department";"mail";"telephoneNumber";"L"%' -- Daarna nog ;"Company";"EmployeeID" + --1 2 3 4 5 6 7 8 9 10 11 + '"sAMAccountName";"name";"givenname";"sn";"department";"mail";"telephoneNumber";"L"%' -- Daarna nog ;"Company";"EmployeeID";"WW" ); v_errorhint := 'Verrijken import'; @@ -272,6 +272,14 @@ END mnnl_import_prs; CREATE OR REPLACE PROCEDURE mnnl_update_prs (p_import_key IN NUMBER) IS + c_ww_kkey NUMBER (10) := 1000; -- 'Woon-Werk-afstand'-kenmerk! + c_pp_gkey NUMBER (10) := 2461; -- 'Reserveer parkeerplek'-autorisatiegroep! + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count NUMBER; + -- Verwijderen personen *binnen MN* die niet meer in importbestand voorkomen. CURSOR c_del IS @@ -286,6 +294,21 @@ IS WHERE UPPER (prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin)) ORDER BY 1; + -- Bijwerken Woon-Werk-afstand (= kenmerk1). + CURSOR c_prs + IS + SELECT '[' || TO_CHAR (x.prs_perslid_key) || '|' || x.prs_perslid_oslogin || '] ' aanduiding, + x.prs_perslid_key, kl.prs_kenmerklink_key, ROUND (fac.safe_to_number (x.prs_kenmerk1), 2) afstand_ww + FROM fac_imp_perslid x, + prs_v_aanwezigperslid p, + (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl + WHERE fac.safe_to_number (x.prs_kenmerk1) IS NOT NULL + AND x.prs_perslid_key = p.prs_perslid_key + AND p.prs_perslid_inactief IS NULL + AND p.prs_perslid_key = kl.prs_link_key(+) + AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) != fac.safe_to_number (x.prs_kenmerk1) -- Afstand gewijzigd? + ORDER BY 2; + -- Afnemen _Default-rol afh. van configuratie in Eigen tabel met key=721! CURSOR c_no_default IS @@ -303,12 +326,6 @@ IS AND TO_CHAR (p.prs_afdeling_key) = ud.fac_usrdata_code AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\' -- ' tbv. opmaak ORDER BY 2; - - v_errorhint VARCHAR2 (1000); - v_errormsg VARCHAR2 (1000); - oracle_err_num NUMBER; - oracle_err_mes VARCHAR2 (200); - v_count NUMBER; BEGIN -- Generic update SELECT COUNT(*) INTO v_count FROM fac_imp_perslid; @@ -348,6 +365,69 @@ BEGIN FROM fac_imp_perslid WHERE UPPER (prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin)); + -- Bijwerken extra persoonsvelden (niet ondersteund door standaard import). + v_count := 0; + FOR rec IN c_prs + LOOP + BEGIN + --IF rec.prs_kenmerklink_key IS NULL + --THEN + -- v_errorhint := 'Fout toevoegen Woon-Werk-afstand'; + -- INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde) + -- VALUES (rec.prs_perslid_key, 'P', c_ww_kkey, TO_CHAR (rec.afstand_ww)); + --ELSE + -- v_errorhint := 'Fout bijwerken Woon-Werk-afstand'; + -- UPDATE prs_kenmerklink + -- SET prs_kenmerklink_waarde = TO_CHAR (rec.afstand_ww) + -- WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key; + --END IF; + v_errorhint := 'Fout bijwerken Woon-Werk-afstand'; + prs.upsertkenmerk (c_ww_kkey, rec.prs_perslid_key, TO_CHAR (rec.afstand_ww)); -- Woon-Werk-afstand + v_count := v_count + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, v_errorhint); + COMMIT; + END; + END LOOP; + fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#bijgewerkt: ' || TO_CHAR (v_count), ''); +/* + -- Afnemen PP-autorisatiegroep als geldt woon-werk-afstand <8km! + v_errorhint := 'Fout afnemen PP-autorisatiegroep'; + DELETE FROM fac_gebruikersgroep gg + WHERE gg.fac_groep_key = c_pp_gkey -- PP-autorisatiegroep + AND EXISTS + (SELECT 1 + FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab, + (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl + WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_bedrijf_key = 5 -- MN + AND p.prs_perslid_key = kl.prs_link_key(+) + AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) < 8 + AND p.prs_perslid_key = gg.prs_perslid_key); + + -- Toekennen PP-autorisatiegroep als geldt woon-werk-afstand >=8km! + v_errorhint := 'Fout toekennen PP-autorisatiegroep'; + INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) + SELECT c_pp_gkey, p.prs_perslid_key -- PP-autorisatiegroep + FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab, + (SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl + WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak + AND p.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_bedrijf_key = 5 -- MN + AND p.prs_perslid_key = kl.prs_link_key(+) + AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) >= 8 + AND NOT EXISTS -- Niet al in PP-autorisatiegroep! + (SELECT 1 + FROM fac_gebruikersgroep + WHERE fac_groep_key = c_pp_gkey -- PP-autorisatiegroep + AND prs_perslid_key = p.prs_perslid_key); +*/ -- Afnemen 2101=_Default_VB van medewerkers niet onder VB (op niveau 1)! v_errorhint := 'Fout afnemen _Default_VB'; @@ -435,11 +515,11 @@ BEGIN AND prs_perslid_key = p.prs_perslid_key); COMMIT; - -- Afnemen 2343=_Default_FRS & EC van medewerkers niet onder FRS of EC (op niveau 1)! - v_errorhint := 'Fout afnemen _Default_FRS & EC'; + -- Afnemen 2343=_Default_FRS + EC van medewerkers niet onder FRS of EC (op niveau 1)! + v_errorhint := 'Fout afnemen _Default_FRS + EC'; DELETE FROM fac_gebruikersgroep gg - WHERE gg.fac_groep_key = 2343 -- _Default_FRS & EC + WHERE gg.fac_groep_key = 2343 -- _Default_FRS + EC AND EXISTS (SELECT 1 FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab @@ -448,19 +528,19 @@ BEGIN AND p.prs_perslid_key = gg.prs_perslid_key); COMMIT; - -- Toekennen 2343=_Default_FRS & EC aan medewerkers onder FRS of EC (op niveau 1)! - v_errorhint := 'Fout toekennen _Default_FRS & EC'; + -- Toekennen 2343=_Default_FRS + EC aan medewerkers onder FRS of EC (op niveau 1)! + v_errorhint := 'Fout toekennen _Default_FRS + EC'; INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) - SELECT 2343, p.prs_perslid_key -- _Default_FRS & EC + SELECT 2343, p.prs_perslid_key -- _Default_FRS + EC FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab WHERE p.prs_perslid_oslogin IS NOT NULL AND p.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 IN (1061, 1041) -- Afdeling-1 met code=FRS of EC! - AND NOT EXISTS -- Niet al in _Default_FRS & EC! + AND NOT EXISTS -- Niet al in _Default_FRS + EC! (SELECT 1 FROM fac_gebruikersgroep - WHERE fac_groep_key = 2343 -- _Default_FRS & EC + WHERE fac_groep_key = 2343 -- _Default_FRS + EC AND prs_perslid_key = p.prs_perslid_key); COMMIT; @@ -471,7 +551,7 @@ BEGIN v_errorhint := 'Fout afnemen _Default(s)'; DELETE FROM fac_gebruikersgroep - WHERE fac_groep_key IN (1, 2101, 2341, 2342, 2343) -- _Default/_Default_VB/_Default_IV/_Default_PV/_Default_FRS & EC + WHERE fac_groep_key IN (1, 2101, 2341, 2342, 2343) -- _Default/_Default_VB/_Default_IV/_Default_PV/_Default_FRS + EC AND prs_perslid_key = rec.prs_perslid_key; EXCEPTION WHEN OTHERS @@ -4121,7 +4201,7 @@ END mnnl_update_eua; / -- MNNL#69794: CERT-import (CERTificaten)! --- Title;CommonName;Beheerteam (Facilitor);Aanvrager;Installateur;EindDatum;Omgeving;Uitgever;Product;Definition;Omschrijving certificaat +-- "Title";"CommonName";"Beheerteam (Facilitor)";"Aanvrager";"Installateur";"EindDatum";"Product";"Omgeving";"Uitgever";"Definition";"Omschrijving certificaat" CREATE OR REPLACE PROCEDURE mnnl_import_cert (p_import_key IN NUMBER) IS c_delim VARCHAR2 (1) := ';';