STAM#56850 AD import op orde maken

svn path=/Customer/trunk/; revision=41592
This commit is contained in:
Suzan Wiegerinck
2019-03-15 11:13:45 +00:00
parent fa8309ea59
commit decc9df0f7

View File

@@ -174,68 +174,39 @@ BEGIN
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;10;4;0;3;'
'0;0;0;0;0;0;12;4;0;3;'
|| '0;0;0;0;0;7;8;1;0;5;'
|| '6;2;0;0;0;0;9;12;13;10;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'"mail";"samAccountName";"givenName";"sn";"employeeID";"title";"telephoneNumber";"mobile";"physicalDeliveryOfficeName";"department";"departmentNumber";"extensionAttribute1";"manager"%');
COMMIT;
--- locatie vanuit deze import is altijd Sittard
UPDATE fac_imp_perslid p
SET alg_locatie_code = 'NLSTD';
-- vanuit kenmerk1 moet het gebouw en de verdieping bepaald worden
UPDATE fac_imp_perslid p
SET alg_gebouw_code =
DECODE ( (SUBSTR (P.PRS_KENMERK1, 1, 2)),
'-1', 'Mercator 3',
'0.', 'Mercator 3',
'1.', 'Mercator 3',
'2.', 'Mercator 3',
'7.', 'Mercator 3',
'A.', 'Mercator 3',
''),
alg_verdieping_volgnr =
DECODE ( (SUBSTR (P.PRS_KENMERK1, 1, 2)),
'-1', '1',
'0.', '2',
'1.', '3',
'2.', '5',
'7.', '10',
'A.', '4',
'');
-- als gebouw en verdieping niet bepaald kunnen worden op basis van kenmerk1, dan betreft het buitenlandse mdw, of mdw van de moedermaatschappij. Deze komen op een dummy plek 'Unknown'
UPDATE fac_imp_perslid p
SET alg_ruimte_nr = 'Unknown',
alg_gebouw_code = 'Mercator 3',
alg_verdieping_volgnr = 2
WHERE alg_gebouw_code IS NULL;
--- de eerste 6 posities van de waarde uit kenmerk1 bepalen het ruimtenr voor alle medewerkers waar een gebouw en verdieping bepaald kon worden
UPDATE fac_imp_perslid p
SET alg_ruimte_nr = SUBSTR (P.PRS_KENMERK1, 1, 6)
WHERE alg_ruimte_nr IS NULL;
-- de laatste positie van de waarde uit kenmerk1 bepalen het werkpleknummer voor alle medewerkers waar een gebouw en verdieping bepaald kon worden
UPDATE fac_imp_perslid p
SET prs_werkplek_volgnr = SUBSTR (PRS_KENMERK1, 8, 1)
WHERE alg_ruimte_nr <> 'Unknown'
AND prs_kenmerk1 IS NOT NULL
AND prs_werkplek_volgnr IS NULL;
-- de afdelingscode moet op basis van de omschrijving bepaald worden
UPDATE fac_imp_perslid p
SET prs_afdeling_naam =
(SELECT a.prs_afdeling_naam
FROM prs_afdeling a
WHERE UPPER (p.prs_kenmerk4) =
UPPER (a.prs_afdeling_omschrijving)
AND a.prs_afdeling_verwijder IS NULL);
-- Uit kenmerk3 kan de manager gehaald worden
UPDATE fac_imp_perslid o
SET o.prs_kenmerk5 =
(SELECT p.prs_perslid_key
FROM fac_imp_perslid n, prs_perslid p
WHERE UPPER(SUBSTR (n.prs_kenmerk3,
( INSTR (n.PRS_KENMERK3,
'=',
1,
1)
+ 1),
( INSTR (n.PRS_KENMERK3,
',',
1,
1)
- INSTR (n.PRS_KENMERK3,
'=',
1,
1)
- 1))) = upper(p.PRS_PERSLID_OSLOGIN)
AND n.PRS_PERSLID_NR = o.PRS_PERSLID_NR);
COMMIT;
EXCEPTION
WHEN OTHERS
@@ -257,8 +228,21 @@ IS
-- a) niet meer in het importbestand staan, wel in Facilitor, en
-- b) waarvan de persoon in Facilitor een gevulde personeelsnummer heeft (leeg personeelsnummer van af blijven, dit handmatig ingevoerde persleden)
-- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
-- d)
CURSOR c_mgr
IS
SELECT *
FROM FAC_IMP_PERSLID p
WHERE p.PRS_PERSLID_KEY IS NOT NULL
AND p.PRS_KENMERK5 IS NOT NULL;
CURSOR c_dep
IS
SELECT *
FROM FAC_IMP_PERSLID p
WHERE p.PRS_PERSLID_KEY IS NOT NULL
AND p.PRS_KENMERK4 IS NOT NULL;
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
@@ -278,7 +262,23 @@ BEGIN
-- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
prs.update_perslid (p_import_key, 'NR', NULL);
-- zet de managerkey uit kenmerk 5 in het kenmerk veld manager (1042) bij de persoon
FOR rec IN c_mgr
LOOP
BEGIN
prs.upsertkenmerk (1061, rec.prs_perslid_key, rec.prs_kenmerk5);
END;
END LOOP;
-- zet de department uit kenmerk 4 in het kenmerk veld department (1060) bij de persoon
FOR rec IN c_dep
LOOP
BEGIN
prs.upsertkenmerk (1060, rec.prs_perslid_key, rec.prs_kenmerk4);
END;
END LOOP;
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP