ARBO#56645 -- Aanpassen personenkoppeling ivm uitbreiding richting Human Capital Care

svn path=/Customer/trunk/; revision=45312
This commit is contained in:
Arthur Egberink
2019-12-20 16:16:57 +00:00
parent 6258f6c392
commit 786fc60de7

View File

@@ -1644,6 +1644,21 @@ IS
prs_kenmerk5,
prs_kenmerk6;
CURSOR c_upd IS
SELECT i.prs_perslid_key, prs_kenmerk10 alt_email
FROM fac_imp_perslid i, prs_perslid p
WHERE i.prs_perslid_key = p.prs_perslid_key
AND prs_kenmerk10 IS NOT NULL;
CURSOR c_del IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL;
v_bedrijf_key NUMBER (10);
v_afdeling_key1 NUMBER (10);
v_afdeling_key2 NUMBER (10);
@@ -1654,6 +1669,7 @@ IS
v_aanduiding VARCHAR2 (100);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
@@ -1788,6 +1804,7 @@ BEGIN
AND prs_afdeling_verwijder IS NULL
AND a.niveau = 3
AND a.prs_afdeling_parentkey = v_afdeling_key2;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -1826,6 +1843,12 @@ BEGIN
AND prs_afdeling_verwijder IS NULL
AND a.niveau = 4
AND a.prs_afdeling_parentkey = v_afdeling_key3;
UPDATE prs_afdeling a
SET a.prs_afdeling_omschrijving = rec.afdeling_oms3,
a.prs_kostenplaats_key = v_kostenplaats_key
WHERE a.prs_afdeling_key = v_afdeling_key4;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -1855,9 +1878,7 @@ BEGIN
rec.afdeling_naam
|| '-'
|| rec.kostenplaats_id,
rec.kostenplaats_nr
|| '/'
|| rec.afdeling_oms3,
rec.afdeling_oms3,
v_kostenplaats_key,
v_afdeling_key3);
END;
@@ -1879,8 +1900,41 @@ BEGIN
END;
END LOOP;
SELECT COUNT(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 500
THEN
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
FOR rec IN c_del LOOP
BEGIN
v_errorhint := 'Verwijderen persoon: ' || rec.prs_perslid_key || '-' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END LOOP;
END IF;
prs.update_perslid (p_import_key, 'NR', NULL);
v_errorhint := 'Update personen';
FOR rec IN c_upd LOOP
BEGIN
v_errorhint := 'Update persoon: ' || rec.prs_perslid_key || '-' || rec.alt_email;
PRS.upsertkenmerk (1020, rec.prs_perslid_key, rec.alt_email);
END;
END LOOP;
-- Nu gaan we proberen de afdelingen op te ruimen
BEGIN
v_errorhint := 'Opschonen afdeling niveau 4';
@@ -1889,18 +1943,23 @@ BEGIN
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_key IN
(SELECT prs_afdeling_key
FROM prs_v_afdeling_boom a
FROM prs_v_afdeling_boom ab
WHERE niveau = 4
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
a.prs_afdeling_key)
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_afd_verplichting v
WHERE v.prs_afdeling_key =
a.prs_afdeling_key)
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE a.prs_afdeling_parentkey =
ab.prs_afdeling_key)
AND prs_afdeling_verwijder IS NULL);
v_errorhint := 'Opschonen afdeling niveau 3';
@@ -1908,70 +1967,75 @@ BEGIN
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_key IN
(SELECT prs_afdeling_key3
FROM ( SELECT prs_afdeling_key3, COUNT (*) aantal
FROM prs_v_afdeling_boom ab,
prs_bedrijf b,
prs_afdeling a4
WHERE ab.prs_bedrijf_key = b.prs_bedrijf_key
AND ab.prs_afdeling_key4 =
a4.prs_afdeling_key
AND b.prs_bedrijf_naam <> 'Extern'
AND a4.prs_afdeling_verwijder IS NULL
GROUP BY prs_afdeling_key3)
WHERE aantal = 1 AND prs_afdeling_verwijder IS NULL);
(SELECT prs_afdeling_key
FROM prs_v_afdeling_boom ab
WHERE niveau = 3
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_afd_verplichting v
WHERE v.prs_afdeling_key =
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE a.prs_afdeling_parentkey =
ab.prs_afdeling_key)
AND prs_afdeling_verwijder IS NULL);
v_errorhint := 'Opschonen afdeling niveau 2';
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_key IN
(SELECT prs_afdeling_key2
FROM ( SELECT prs_afdeling_key2, COUNT (*) aantal
FROM prs_v_aanwezigafdeling_boom ab,
prs_bedrijf b
WHERE ab.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_naam <> 'Extern'
GROUP BY prs_afdeling_key2)
WHERE aantal = 1
AND prs_afdeling_verwijder IS NULL
(SELECT prs_afdeling_key
FROM prs_v_afdeling_boom ab
WHERE niveau = 2
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_afd_verplichting v
WHERE v.prs_afdeling_key =
prs_afdeling_key2)
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
prs_afdeling_key2
AND prs_perslid_verwijder IS NULL));
(SELECT prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE a.prs_afdeling_parentkey =
ab.prs_afdeling_key)
AND prs_afdeling_verwijder IS NULL);
v_errorhint := 'Opschonen afdeling niveau 1';
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_key IN
(SELECT prs_afdeling_key1
FROM ( SELECT prs_afdeling_key1, COUNT (*) aantal
FROM prs_v_aanwezigafdeling_boom ab,
prs_bedrijf b
WHERE ab.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_naam <> 'Extern'
GROUP BY prs_afdeling_key1)
WHERE aantal = 1
AND prs_afdeling_verwijder IS NULL
(SELECT prs_afdeling_key
FROM prs_v_afdeling_boom ab
WHERE niveau = 1
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_afdeling_key
FROM prs_v_afd_verplichting v
WHERE v.prs_afdeling_key =
prs_afdeling_key1)
ab.prs_afdeling_key)
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
prs_afdeling_key1
AND prs_perslid_verwijder IS NULL));
(SELECT prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE a.prs_afdeling_parentkey =
ab.prs_afdeling_key)
AND prs_afdeling_verwijder IS NULL);
END;
COMMIT;