ARBO#64315 -- Onduidelijke foutmelding in personenimport.

svn path=/Customer/trunk/; revision=48425
This commit is contained in:
Arthur Egberink
2020-10-08 12:00:46 +00:00
parent caaef887dc
commit 2df99a3721

View File

@@ -1680,6 +1680,30 @@ IS
WHERE i.prs_perslid_key = p.prs_perslid_key
AND prs_kenmerk10 IS NOT NULL;
CURSOR c_afd_del (p_niveau NUMBER) IS
SELECT prs_afdeling_key, prs_afdeling_naam, prs_afdeling_omschrijving
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_key IN
(SELECT prs_afdeling_key
FROM prs_v_afdeling_boom ab
WHERE niveau = p_niveau
AND NOT EXISTS
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_afdeling_key =
ab.prs_afdeling_key
AND p.prs_perslid_verwijder IS NULL)
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));
-- personen pas verwijderen als ze langer dan 80 dagen bestaan. Hiermee voorkomen we dat nieuw handmatig ingevoerde
-- personen direct verwijderd worden, omdat HR data altijd wat ouder is.
CURSOR c_del IS
@@ -1875,138 +1899,46 @@ BEGIN
AND p.prs_perslid_verwijder IS NULL);
-- Nu gaan we proberen de afdelingen op te ruimen
BEGIN
v_errorhint := 'Opschonen afdeling niveau 4';
FOR v_niveau IN REVERSE 1..4
LOOP
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_key IN
(SELECT prs_afdeling_key
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 =
ab.prs_afdeling_key
AND p.prs_perslid_verwijder IS NULL)
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));
FOR rec IN c_afd_del (v_niveau)
LOOP
v_errorhint := 'Opschonen afdeling niveau ' || v_niveau || ' afdeling: ' || rec.prs_afdeling_naam;
BEGIN
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE;
v_errorhint := 'Opschonen afdeling niveau 3';
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END LOOP;
END LOOP;
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_key IN
(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 p.prs_perslid_verwijder IS NULL)
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));
-- Niet gebruikte kostenplaatsen gaan we verwijderen.
v_errorhint := 'Niet gebruikte kostenplaatsen gaan we verwijderen.';
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_verwijder = SYSDATE
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_module = 'PRS'
AND NOT EXISTS (SELECT a.prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND a.prs_afdeling_verwijder IS NULL);
v_errorhint := 'Opschonen afdeling niveau 2';
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_key IN
(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 p.prs_perslid_verwijder IS NULL)
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));
v_errorhint := 'Opschonen afdeling niveau 1';
UPDATE prs_afdeling
SET prs_afdeling_verwijder = SYSDATE
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_key IN
(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 p.prs_perslid_verwijder IS NULL)
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));
-- Niet gebruikte kostenplaatsen gaan we verwijderen.
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_verwijder = SYSDATE
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_module = 'PRS'
AND NOT EXISTS (SELECT a.prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND a.prs_afdeling_verwijder IS NULL);
END;
COMMIT;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
END;
/