STAM#56850 AD import op orde maken
svn path=/Customer/trunk/; revision=41592
This commit is contained in:
114
STAM/STAM.sql
114
STAM/STAM.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user