SCHG#84842 -- Implementatie Scharenborg Groep - oplevering definitieve Azure-koppeling tbv medewerkers uit meerdere tenants
svn path=/Customer/trunk/; revision=67846
This commit is contained in:
441
SCHG/schg.sql
441
SCHG/schg.sql
@@ -549,38 +549,89 @@ AS
|
||||
|
||||
CURSOR c_afd
|
||||
IS
|
||||
SELECT fac_imp_file_index, prs_perslid_email, prs_afdeling_naam
|
||||
FROM fac_imp_perslid
|
||||
WHERE fac_import_key = p_import_key ;
|
||||
SELECT i.fac_imp_file_index, i.prs_perslid_email, i.prs_afdeling_naam,
|
||||
p.prs_perslid_key,
|
||||
CASE WHEN p.prs_perslid_key IS NOT NULL
|
||||
THEN (SELECT a.prs_afdeling_naam FROM prs_perslid pp, prs_afdeling a WHERE pp.prs_afdeling_key = a.prs_afdeling_key AND pp.prs_perslid_key = p.prs_perslid_key )
|
||||
ELSE NULL
|
||||
END
|
||||
prs_afdeling_naam_huidig
|
||||
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND i.prs_perslid_email = p.prs_perslid_email (+) ;
|
||||
|
||||
-- unieke oslogin vullen
|
||||
CURSOR c_oslogin
|
||||
IS
|
||||
SELECT v.fac_imp_file_index,
|
||||
v.prs_perslid_email,
|
||||
v.prs_perslid_oslogin_email,
|
||||
v.prs_perslid_key,
|
||||
v.prs_perslid_oslogin_huidig,
|
||||
(SELECT COUNT (*)
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_oslogin = prs_perslid_oslogin_email)
|
||||
oslogin_facilitor_aantal,
|
||||
(SELECT COUNT (*)
|
||||
FROM fac_imp_perslid
|
||||
WHERE prs_perslid_oslogin = v.prs_perslid_oslogin_email)
|
||||
oslogin_import_aantal
|
||||
FROM (SELECT i.fac_imp_file_index,
|
||||
i.prs_perslid_email,
|
||||
UPPER (
|
||||
(SUBSTR (i.prs_perslid_email,
|
||||
0,
|
||||
INSTR (i.prs_perslid_email, '@') - 1)))
|
||||
prs_perslid_oslogin_email,
|
||||
p.prs_perslid_key,
|
||||
p.prs_perslid_oslogin
|
||||
prs_perslid_oslogin_huidig
|
||||
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
|
||||
WHERE fac_import_key = p_import_key
|
||||
AND i.prs_perslid_email = p.prs_perslid_email(+)
|
||||
) v
|
||||
ORDER BY fac_imp_file_index;
|
||||
|
||||
|
||||
BEGIN
|
||||
-- Import csv formaat - kolommen:
|
||||
-- 1. userPrincipalName
|
||||
-- 2. displayName
|
||||
-- 3. surname
|
||||
-- 4. EmailAddress
|
||||
-- 5. givenName
|
||||
-- 6. id
|
||||
-- 7. jobTitle
|
||||
-- 8. department
|
||||
-- 9. usageLocation
|
||||
-- 10. officeLocation
|
||||
-- 11. comanyName
|
||||
-- 12. importbestand_schg -- LET OP - Deze voeg ik voor import toe omdat men meerdere bestanden, cq entra_id's heeft aan scharenborg_kant
|
||||
-- 1. User Principal Name
|
||||
-- 2. Display Name
|
||||
-- 3. Given Name
|
||||
-- 4. Surname
|
||||
-- 5. Job Title
|
||||
-- 6. Department
|
||||
-- 7. Employee ID
|
||||
-- 8. Office Location
|
||||
-- 9. Mobile Phone
|
||||
-- 10. Business Phone
|
||||
-- 11. Street Address
|
||||
-- 12. City
|
||||
-- 13. State
|
||||
-- 14. Postal Code
|
||||
-- 15. Country
|
||||
-- 16. Account Enabled
|
||||
-- 17. Manager Email
|
||||
-- 18. Object ID
|
||||
-- 19. User Type
|
||||
-- 20. Creation Type
|
||||
-- 21. Usage Location
|
||||
-- 22. Sign-In Names
|
||||
-- 23. Other Mails
|
||||
|
||||
v_seq_of_columns := '0;0;0;0;0;0;9;3;0;5;'
|
||||
|
||||
v_seq_of_columns := '0;0;0;0;0;0;19;19;0;3;'
|
||||
-- v_alg_locatie_code 1
|
||||
-- v_alg_gebouw_code 2
|
||||
-- v_alg_verdieping_volgnr 3
|
||||
-- v_alg_ruimte_nr 4
|
||||
-- v_prs_werkplek_volgnr 5
|
||||
-- v_prs_werkplek_omschrijving 6
|
||||
-- v_prs_afdeling_naam 7 -- VERPLICHT BIJ IMPORT
|
||||
-- v_prs_perslid_naam 8
|
||||
-- v_prs_afdeling_naam 7 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want department is nog niet altijd gevuld..)
|
||||
-- v_prs_perslid_naam 8 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want naam is niet altijd gevuld..)
|
||||
-- v_prs_perslid_tussenvoegsel 9
|
||||
-- v_prs_perslid_voornaam 10
|
||||
|| '0;0;0;0;0;0;0;4;0;0;'
|
||||
|| '0;0;0;0;0;0;0;1;0;7;'
|
||||
-- v_prs_perslid_voorletters 11
|
||||
-- v_prs_perslid_partner_naam 12
|
||||
-- v_prs_perslid_partner_tussenv 13
|
||||
@@ -594,8 +645,8 @@ BEGIN
|
||||
-- v_prs_perslid_email 18
|
||||
-- v_prs_perslid_dienstverband 19
|
||||
-- v_prs_perslid_nr 20
|
||||
|| '9;0;0;0;0;0;1;2;3;4;'
|
||||
-- v_prs_srtperslid_omschrijving 21 -- VERPLICHT BIJ IMPORT
|
||||
|| '19;0;0;0;0;0;1;2;3;4;'
|
||||
-- v_prs_srtperslid_omschrijving 21 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want Job Title is nog niet altijd gevuld..)
|
||||
-- v_prs_perslid_oslogin 22
|
||||
-- v_prs_perslid_wachtwoord 23
|
||||
-- v_prs_perslid_titel 24
|
||||
@@ -605,12 +656,17 @@ BEGIN
|
||||
-- v_prs_kenmerk2 28
|
||||
-- v_prs_kenmerk3 29
|
||||
-- v_prs_kenmerk4 30
|
||||
|| '5;6;7;8;9;10;11;12;0;0;'
|
||||
|| '0;0;0;0;0;7';
|
||||
|| '5;6;8;9;10;17;23;7;24;0;'
|
||||
|| '0;0;0;0;0;20';
|
||||
|
||||
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv punt-komma
|
||||
v_errorhint := 'Delimiter goed zetten';
|
||||
UPDATE fac_imp_file
|
||||
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
|
||||
WHERE fac_import_key = p_import_key;
|
||||
|
||||
-- header aanvullen met bestand
|
||||
-- deze voeg ik voor import toe omdat men meerdere bestanden, cq entra_id's heeft aan scharenborg_kant
|
||||
|
||||
UPDATE fac_imp_file i
|
||||
SET i.fac_imp_file_line =
|
||||
fac_imp_file_line
|
||||
@@ -627,151 +683,223 @@ BEGIN
|
||||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||||
|
||||
|
||||
prs.import_perslid(p_import_key, v_seq_of_columns, 'userPrincipalName;displayName;surname;EmailAddress;givenName;id;jobTitle;department;usageLocation;officeLocation;companyName;importbestand_schg%');
|
||||
-- csv verwerken naar de fac_imp_perslid-tabel
|
||||
prs.import_perslid(p_import_key, v_seq_of_columns, '"User Principal Name";"Display Name";"Given Name";"Surname";"Job Title";"Department";"Employee ID";"Office Location";"Mobile Phone";"Business Phone";"Street Address";"City";"State";"Postal Code";"Country";"Account Enabled";"Manager Email";"Object ID";"User Type";"Creation Type";"Usage Location";"Sign-In Names";"Other Mails";importbestand_schg%');
|
||||
|
||||
|
||||
-- POST-UPDATES op data doen om verwerking goed/volledig/cust-specifiek te laten verlopen
|
||||
-- POST-UPDATES op data in fac_imp_perslid-tabel doen om verwerking goed/volledig/cust-specifiek te laten verlopen
|
||||
|
||||
-- Loginnaam afleiden van emailadres
|
||||
-- Delete records uit importbestand SCHG
|
||||
---- 1. Alle records zonder EMPLOYEE ID
|
||||
---- 2. Alle records waar CREATION TYPE gevuld met Invitation
|
||||
DELETE
|
||||
FROM fac_imp_perslid
|
||||
WHERE prs_perslid_nr IS NULL ;
|
||||
|
||||
DELETE
|
||||
FROM fac_imp_perslid
|
||||
WHERE UPPER(prs_kenmerk20) = 'INVITATION' ;
|
||||
|
||||
-- Vullen achternaam
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_perslid_naam = COALESCE(prs_kenmerk4, 'naam - onbekend') ;
|
||||
|
||||
-- Loginnaam afleiden van emailadres
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_perslid_oslogin =
|
||||
UPPER((SUBSTR (prs_perslid_email,
|
||||
0,
|
||||
INSTR (prs_perslid_email, '@') - 1))) ;
|
||||
UPPER((SUBSTR (prs_perslid_email,
|
||||
0,
|
||||
INSTR (prs_perslid_email, '@') - 1))) ;
|
||||
|
||||
-- Functie moet bekend zijn
|
||||
-- Functie is niet altijd gevuld, functie eerst gevuld met achternaam, nu vullen met kenmerk (of 'Onbekend').
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_srtperslid_omschrijving =
|
||||
DECODE (prs_kenmerk20, NULL, 'Onbekend', prs_kenmerk20);
|
||||
|
||||
-- Moeten er nog deletes/opschoning gedaan worden in bulkbestand?
|
||||
-- DELETE fac_imp_perslid WHERE prs_perslid_email IS NULL ;
|
||||
|
||||
DECODE (prs_kenmerk5, NULL, 'Onbekend', prs_kenmerk5);
|
||||
|
||||
v_errorhint := 'Afdeling bepalen en vullen';
|
||||
-- Afdeling bepalen waar persoon onder komt te vallen --- NOG ONDERHANDEN / TE BESPREKEN !!!
|
||||
---- Structuur die ik nu kies is om domein_naam emailadres te hanteren (en als deze onbekend is dan fallback-afdeling op AD_ONBEKEND
|
||||
-- Afdeling bepalen waar persoon onder komt te vallen
|
||||
--- Structuur SCHG:
|
||||
----- Per BU is er een AFD-2 waarin de afdelingsomschrijving de domeinnaam is. Bijvoorbeeld voor BU Kievit Pedicures is dit kievitpedicures.nl
|
||||
----- Indien het email-domein van de NIEUWE persoon niet onder een BU-afd-2 gevonden kan worden dan laten we deze onder BU-scharenborggroep op de fallback-afdeling AD_ONBEKEND landen
|
||||
----- BESTAANDE personen laten we onder de Afdelingen staan waar ze in Facilitor op gezet zijn..
|
||||
|
||||
FOR rec IN c_afd
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
v_errorhint := 'Persoon aan Afdeling koppelen';
|
||||
|
||||
-- Als er al een afdeling aan de persoon gekoppeld is, dan wordt deze genomen.
|
||||
IF rec.prs_afdeling_naam_huidig IS NOT NULL
|
||||
THEN
|
||||
|
||||
SELECT min(prs_afdeling_key)
|
||||
INTO v_prs_afdeling_key
|
||||
FROM prs_v_afdeling
|
||||
WHERE UPPER(prs_afdeling_omschrijving) = UPPER(SUBSTR (rec.prs_perslid_email, INSTR (rec.prs_perslid_email, '@') + 1))
|
||||
AND prs_afdeling_verwijder IS NULL ;
|
||||
|
||||
IF v_prs_afdeling_key IS NOT NULL THEN
|
||||
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = (SELECT a.prs_afdeling_upper FROM prs_afdeling a WHERE a.prs_afdeling_key = v_prs_afdeling_key)
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
SET prs_afdeling_naam = rec.prs_afdeling_naam_huidig
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
ELSE
|
||||
END IF;
|
||||
|
||||
-- Als de persoon nog onbekend is, dan koppelen we deze aan de aangemaakte AD_afdeling behorende onder dat domein
|
||||
IF rec.prs_afdeling_naam_huidig IS NULL
|
||||
THEN
|
||||
|
||||
SELECT min(prs_afdeling_key)
|
||||
INTO v_prs_afdeling_key
|
||||
FROM prs_v_afdeling
|
||||
WHERE UPPER(prs_afdeling_omschrijving) = UPPER(SUBSTR (rec.prs_perslid_email, INSTR (rec.prs_perslid_email, '@') + 1))
|
||||
AND prs_afdeling_verwijder IS NULL ;
|
||||
|
||||
IF v_prs_afdeling_key IS NOT NULL THEN
|
||||
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = (SELECT a.prs_afdeling_upper FROM prs_afdeling a WHERE a.prs_afdeling_key = v_prs_afdeling_key)
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
ELSE
|
||||
|
||||
-- fallback_afdeling
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = 'AD_ONBEKEND'
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
-- fallback_afdeling
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = 'AD_ONBEKEND'
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
/*
|
||||
-- De afdelingscode slaan we tijdelijk op in kenmerk14 omdat deze bij toekomstige medewerkers leeg is.
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_afdeling_naam = COALESCE(prs_kenmerk14, '_FH'),
|
||||
prs_kenmerk1 = COALESCE(prs_kenmerk1, 'Future Hires'),
|
||||
prs_srtperslid_omschrijving = SUBSTR(COALESCE(prs_kenmerk15, 'Future Hire'),1,60);
|
||||
|
||||
-- We gaan de medewerkers koppelen aan een werkplek. Dat gaan we doen door de code van de standplaats (kenmerk6) te matchen
|
||||
-- met het kenmerk bij het gebouw (kenmerk 1200). Verder moet er dan bij dat gebouw een ruimte zijn met ruimtenummer _WP
|
||||
UPDATE fac_imp_perslid p
|
||||
SET (alg_locatie_code,
|
||||
alg_gebouw_code,
|
||||
alg_verdieping_volgnr,
|
||||
alg_ruimte_nr) =
|
||||
(SELECT alg_locatie_code,
|
||||
alg_gebouw_upper,
|
||||
alg_verdieping_volgnr,
|
||||
alg_ruimte_nr
|
||||
FROM alg_v_ruimte_gegevens rg, alg_onrgoedkenmerk aogk
|
||||
WHERE aogk.alg_onrgoed_key = rg.alg_gebouw_key
|
||||
AND aogk.alg_kenmerk_key = 1200
|
||||
AND alg_ruimte_nr = '_WP'
|
||||
AND aogk.alg_onrgoedkenmerk_waarde = prs_kenmerk6
|
||||
AND ROWNUM = 1);
|
||||
*/
|
||||
-- De oslogin leiden we af van emailadres echter moet bij uitvoer van de import wel uniek zijn
|
||||
-- Voor SCHG geldt dat omdat er vanuit verschillende azure-omgevingen de bestanden volgen dat we in onderstaande cursor er voor zorgen dat oslogin-namen wel uniek zijn.
|
||||
FOR rec IN c_oslogin
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
v_errorhint := 'Dubbele oslogin checken en aanpassen';
|
||||
|
||||
-- Als het een bestaande persoon is in Facilitor dan nemen we de huidige login over
|
||||
IF rec.prs_perslid_key IS NOT NULL AND rec.prs_perslid_oslogin_huidig IS NOT NULL
|
||||
THEN
|
||||
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_perslid_oslogin = rec.prs_perslid_oslogin_huidig
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
-- Als de persoon nieuw geimporteerd wordt echter de oslogin bestaat al in Facilitor dan moeten we deze in importbestand aanpassen
|
||||
IF rec.prs_perslid_key IS NULL AND rec.oslogin_facilitor_aantal > 0
|
||||
THEN
|
||||
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_perslid_oslogin = prs_perslid_oslogin || rec.fac_imp_file_index
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Als er in het zelfde importbestand nieuwe personen worden geimporteerd met eenzelfde oslogin dan moeten we deze ook aanpassen
|
||||
IF rec.prs_perslid_key IS NULL AND rec.oslogin_facilitor_aantal = 0 AND rec.oslogin_import_aantal > 1
|
||||
THEN
|
||||
|
||||
UPDATE fac_imp_perslid
|
||||
SET prs_perslid_oslogin = prs_perslid_oslogin || rec.fac_imp_file_index
|
||||
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
END schg_import_perslid;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE schg_update_perslid (p_import_key IN NUMBER)
|
||||
IS
|
||||
-- Alle personen verwijderen die niet meer in het import bestand voorkomen
|
||||
-- Actuele bestand verwerken via standaard update
|
||||
-- Kenmerkvelden in personenkaart van de AD_gegevens
|
||||
|
||||
-- Omdat er 2 tenant's zijn moet je bij de DELETE actie niet 'zomaar checken op 'Niet bekend, dus verwijderen'.
|
||||
---- Ik heb import_bestands_naam toegevoegd en dus in DELETE alleen binnen het personenbestand in Facilitor wat uit die tenant_id komt checken.
|
||||
---- Dubbelingen tussen de tenants/bestanden - ER NOG UITVISSEN ??
|
||||
-- VERDER NOG BESPREKEN
|
||||
---- Draaien import als aantal medewerkers > 100 ?
|
||||
---- Personen in de juiste autorisatiegroep zetten op basis FUNCTIE
|
||||
---- Dubbeling email-adressen ???
|
||||
---- ???
|
||||
|
||||
---- We checken/matchen op EMAIL voor SCHG want de personeelsnummer die op Azure via Nmbrs-pakket worden gesynct blijken niet uniek te zijn.
|
||||
CURSOR c_del
|
||||
IS
|
||||
SELECT p.prs_perslid_key,
|
||||
p.prs_perslid_email,
|
||||
p.prs_perslid_nr,
|
||||
pf.prs_perslid_naam_full,
|
||||
p.prs_perslid_oslogin,
|
||||
p.importbestand_schg,
|
||||
i.prs_kenmerk12
|
||||
ib.huidige_importbestand_schg,
|
||||
p.prs_importbestand_schg,
|
||||
i.prs_kenmerk13
|
||||
FROM fac_imp_perslid i,
|
||||
(SELECT p.prs_perslid_key,
|
||||
p.prs_perslid_email,
|
||||
p.prs_perslid_nr,
|
||||
p.prs_perslid_oslogin,
|
||||
p.prs_perslid_verwijder,
|
||||
p.prs_afdeling_key,
|
||||
(SELECT kw.prs_kenmerklink_waarde
|
||||
FROM prs_kenmerklink kw
|
||||
WHERE kw.prs_kenmerk_key = 1032
|
||||
WHERE kw.prs_kenmerk_key = 1060
|
||||
AND kw.prs_kenmerklink_niveau = 'P'
|
||||
AND kw.prs_link_key = p.prs_perslid_key)
|
||||
importbestand_schg
|
||||
prs_importbestand_schg -- het importbestand_schg in personenkaart
|
||||
FROM prs_perslid p) p,
|
||||
prs_v_perslid_fullnames_all pf,
|
||||
prs_v_afdeling_boom ab,
|
||||
prs_afdeling a,
|
||||
(SELECT MAX (prs_kenmerk12)
|
||||
importbestand_schg
|
||||
FROM fac_imp_perslid) ib -- importbestand_sch in deze run
|
||||
(SELECT MAX (prs_kenmerk13)
|
||||
huidige_importbestand_schg
|
||||
FROM fac_imp_perslid) ib -- importbestand_schg in deze run
|
||||
WHERE p.prs_perslid_email = i.prs_perslid_email(+)
|
||||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||||
AND p.prs_perslid_verwijder IS NULL
|
||||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||||
AND ab.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND COALESCE (p.importbestand_schg, ib.importbestand_schg) = ib.importbestand_schg
|
||||
-- AND ab.prs_bedrijf_key = c_bedrijf_key
|
||||
AND INSTR (a.prs_afdeling_upper, 'AD_') > 0
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM fac_imp_perslid
|
||||
WHERE INSTR (UPPER (p.prs_perslid_email), UPPER (prs_perslid_email)) > 0);
|
||||
AND p.prs_importbestand_schg = ib.huidige_importbestand_schg
|
||||
AND ab.prs_bedrijf_key = 21 -- bedrijf Scharenborg Groep
|
||||
AND p.prs_perslid_nr IS NOT NULL
|
||||
AND i.prs_perslid_email IS NULL
|
||||
;
|
||||
|
||||
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
|
||||
IS
|
||||
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12
|
||||
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12, i.prs_kenmerk13
|
||||
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
||||
WHERE p.prs_perslid_key = i.prs_perslid_key
|
||||
ORDER BY 1;
|
||||
|
||||
CURSOR c_verantw
|
||||
IS
|
||||
SELECT p.prs_perslid_key,
|
||||
p.prs_perslid_email,
|
||||
p.prs_perslid_nr,
|
||||
p.prs_perslid_oslogin,
|
||||
p.manager_email_azure,
|
||||
CASE WHEN p.manager_email_azure <> '<geen Manager Email>'
|
||||
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE UPPER(prs_perslid_email) = UPPER(p.manager_email_azure) AND prs_perslid_verwijder IS NULL)
|
||||
ELSE NULL
|
||||
END
|
||||
manager_email_azure_fac,
|
||||
CASE WHEN p.prs_perslid_key_verantw IS NOT NULL
|
||||
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = p.prs_perslid_key_verantw)
|
||||
ELSE NULL
|
||||
END
|
||||
prs_perslid_verantw_email
|
||||
FROM fac_imp_perslid i,
|
||||
(SELECT p.prs_perslid_key,
|
||||
p.prs_perslid_email,
|
||||
p.prs_perslid_nr,
|
||||
p.prs_perslid_oslogin,
|
||||
p.prs_perslid_key_verantw,
|
||||
(SELECT kw.prs_kenmerklink_waarde
|
||||
FROM prs_kenmerklink kw
|
||||
WHERE kw.prs_kenmerk_key = 1030
|
||||
AND kw.prs_kenmerklink_niveau = 'P'
|
||||
AND kw.prs_link_key = p.prs_perslid_key)
|
||||
manager_email_azure
|
||||
FROM prs_perslid p) p
|
||||
WHERE p.prs_perslid_key = i.prs_perslid_key ;
|
||||
|
||||
v_count NUMBER;
|
||||
oracle_err_num NUMBER;
|
||||
@@ -779,28 +907,31 @@ IS
|
||||
v_errormsg VARCHAR2 (400);
|
||||
v_errorhint VARCHAR2 (400);
|
||||
|
||||
-- overige variabelen
|
||||
v_prs_perslid_key_verantw NUMBER(10);
|
||||
|
||||
|
||||
BEGIN
|
||||
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
|
||||
|
||||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
||||
|
||||
IF v_count >= 100
|
||||
IF v_count >= 50
|
||||
THEN
|
||||
v_errorhint := 'Verwerken persoonsgegevens';
|
||||
|
||||
-- Geldig importbestand wat betreft aantal personen
|
||||
|
||||
-- Nu kunnen we de standaard facilitor-update doorvoeren
|
||||
-- generic update
|
||||
-- 'EMAIL' betekent dat op basis van Email wordt gematched.
|
||||
-- 'NR' op basis personeelsnummer.
|
||||
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
||||
prs.update_perslid (p_import_key, 'EMAIL', NULL);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Nu kunnen we de standaard facilitor-update doorvoeren
|
||||
-- generic update
|
||||
-- 'EMAIL' betekent dat op basis van Email wordt gematched.
|
||||
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
||||
prs.update_perslid (p_import_key, 'EMAIL', NULL);
|
||||
|
||||
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
-- Na de update gaan we de mensen verwijderen die niet in dit importbestand_schg meer zitten
|
||||
FOR rec IN c_del
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Verwijderen persoon: '
|
||||
@@ -820,31 +951,77 @@ BEGIN
|
||||
'E',
|
||||
v_errormsg,
|
||||
v_errorhint);
|
||||
END;
|
||||
END LOOP;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- En dan gaan we als laatste de kenmmerken bijwerken op de actuele medewerkers
|
||||
-- En dan gaan we de kenmmerken bijwerken op de actuele medewerkers
|
||||
FOR rec IN c_flex
|
||||
LOOP
|
||||
BEGIN
|
||||
-- userPrincipalName;displayName;surname;EmailAddress;givenName;id;jobTitle;department;usageLocation;officeLocation;companyName;
|
||||
-- User Principal Name;Display Name;Given Name;Surname;Job Title;Department;Employee ID;Office Location;Mobile Phone;Business Phone;Street Address;City;State;Postal Code;Country;Account Enabled;Manager Email;Object ID;User Type;Creation Type;Usage Location;Sign-In Names;Other Mails;importbestand_schg%';
|
||||
|
||||
v_errorhint:='Fout bijwerken kenmerkvelden';
|
||||
PRS.upsertkenmerk (1021, rec.prs_perslid_key, rec.prs_kenmerk1);
|
||||
PRS.upsertkenmerk (1022, rec.prs_perslid_key, rec.prs_kenmerk2);
|
||||
PRS.upsertkenmerk (1023, rec.prs_perslid_key, rec.prs_kenmerk3);
|
||||
PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk4);
|
||||
PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk5);
|
||||
PRS.upsertkenmerk (1026, rec.prs_perslid_key, rec.prs_kenmerk6);
|
||||
PRS.upsertkenmerk (1027, rec.prs_perslid_key, rec.prs_kenmerk7);
|
||||
PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk8);
|
||||
PRS.upsertkenmerk (1029, rec.prs_perslid_key, rec.prs_kenmerk9);
|
||||
PRS.upsertkenmerk (1030, rec.prs_perslid_key, rec.prs_kenmerk10);
|
||||
PRS.upsertkenmerk (1031, rec.prs_perslid_key, rec.prs_kenmerk11);
|
||||
PRS.upsertkenmerk (1032, rec.prs_perslid_key, rec.prs_kenmerk12);
|
||||
|
||||
PRS.upsertkenmerk (1021, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk1, '<geen User Principal Name>')); -- User Principal Name
|
||||
PRS.upsertkenmerk (1022, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk2, '<geen Display Name>')); -- Display Name
|
||||
PRS.upsertkenmerk (1023, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk3, '<geen Given Name>')); -- Given Name
|
||||
PRS.upsertkenmerk (1024, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk4, '<geen Surname>')); -- Surname
|
||||
PRS.upsertkenmerk (1025, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk5, '<geen Job Title>')); -- Job Title
|
||||
PRS.upsertkenmerk (1026, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk6, '<geen Department>')); -- Department
|
||||
PRS.upsertkenmerk (1027, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk7, '<geen Office Location>')); -- Office Location
|
||||
PRS.upsertkenmerk (1028, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk8, '<geen Mobile Phone>')); -- Mobile Phone
|
||||
PRS.upsertkenmerk (1029, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk9, '<geen Business Phone>')); -- Business Phone
|
||||
PRS.upsertkenmerk (1030, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk10, '<geen Manager Email>')); -- Manager Email
|
||||
PRS.upsertkenmerk (1031, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk11, '<geen Other Mails>')); -- Other Mails
|
||||
PRS.upsertkenmerk (1032, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk12, '<geen Employee ID>')); -- Employee ID
|
||||
|
||||
PRS.upsertkenmerk (1060, rec.prs_perslid_key, rec.prs_kenmerk13); -- importbestand_schg
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
-- En de verantwoordelijk manager updaten in de personenkaart indien nodig
|
||||
FOR rec IN c_verantw
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint:='Fout bijwerken verantwoordelijke';
|
||||
|
||||
-- als de aangeboden waarde uit azure anders is dan de huidige verantwoordelijke in de personenkaart dan gaan we personenkaart updaten
|
||||
IF COALESCE(rec.manager_email_azure_fac, '<leeg>') <> COALESCE(rec.prs_perslid_verantw_email, '<leeg>')
|
||||
THEN
|
||||
|
||||
-- geen gevonden facilitor-manager dan gevulde verantwoordelijke verwijderen
|
||||
IF rec.manager_email_azure_fac IS NULL
|
||||
THEN
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_key_verantw = ''
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
-- wel gevonden facilitor-manager dan bijbehorende verantwoordelijke_key in personenkaart vullen
|
||||
IF rec.manager_email_azure_fac IS NOT NULL
|
||||
THEN
|
||||
|
||||
SELECT prs_perslid_key
|
||||
INTO v_prs_perslid_key_verantw
|
||||
FROM prs_perslid
|
||||
WHERE prs_perslid_email = rec.manager_email_azure_fac ;
|
||||
|
||||
UPDATE prs_perslid
|
||||
SET prs_perslid_key_verantw = v_prs_perslid_key_verantw
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
END IF;
|
||||
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
ELSE
|
||||
fac.imp_writelog (p_import_key,
|
||||
|
||||
Reference in New Issue
Block a user