MDUX#81808 Verwijderen personen lukt niet

svn path=/Customer/trunk/; revision=63196
This commit is contained in:
Sander Schepers
2024-01-16 16:22:33 +00:00
parent 87c8ff72a4
commit 89a873d9cc

View File

@@ -5177,7 +5177,7 @@ AS
END;
/
CREATE OR REPLACE PACKAGE BODY MDUX
CREATE OR REPLACE PACKAGE BODY MDUX.MDUX
AS
-- Dagelijks verwijderen personen (deze worden vanuit MISA via REST API aangemaakt/bijgehouden)
-- Een enddate bepaalt vanuit MISA (AFAS) dat de persoon verwijderd mag worden.
@@ -5188,28 +5188,100 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_del NUMBER (10);
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
CURSOR c_del IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
pf.prs_perslid_naam_full
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
'['
|| TO_CHAR (p.prs_perslid_key)
|| '|'
|| p.prs_perslid_email
|| '|'
|| pf.prs_perslid_naam_full
|| '] ' aanduiding,
COUNT (vp.prs_perslid_key) aant
FROM prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_verplichting_keys vp
WHERE pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_einddatum IS NOT NULL
AND TRUNC (p.prs_perslid_einddatum) <= TRUNC (SYSDATE)
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_apikey IS NULL
AND p.prs_perslid_key = vp.prs_perslid_key(+) -- Actuele verplichtingen?
GROUP BY p.prs_perslid_key,
p.prs_perslid_nr,
'['
|| TO_CHAR (p.prs_perslid_key)
|| '|'
|| p.prs_perslid_email
|| '|'
|| pf.prs_perslid_naam_full
|| '] '
ORDER BY 2;
BEGIN
v_count_del := 0;
-- LET OP: DAILY-taak draait dagelijks na middernacht (begin van dag)
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (NULL, rec.prs_perslid_key);
IF rec.aant = 0
THEN
v_errormsg := 'Fout schonen collega';
DELETE FROM
prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
v_errormsg := 'Fout schonen perslid';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
v_count_del := v_count_del + 1;
IF MOD (v_count_del, 1000) = 0
THEN
COMMIT;
END IF;
ELSE
fac.writelog (
'VERWIJDEREN_PERSONEN',
'I',
rec.aanduiding
|| '/#Verplichtingen: '
|| TO_CHAR (rec.aant),
'Persoon niet geschoond');
END IF;
EXCEPTION
WHEN OTHERS
THEN -- Kennelijk heeft persoon toch nog ernstige verplichtingen!
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('VERWIJDEREN_PERSONEN',
'W',
rec.aanduiding || v_errormsg,
'Fout schonen persoon');
END;
END LOOP;
fac.writelog ('VERWIJDEREN_PERSONEN',
'S',
'Personen/#geschoond: ' || TO_CHAR (v_count_del),
'');
EXCEPTION
WHEN OTHERS
THEN
@@ -5229,6 +5301,7 @@ AS
END;
/
CREATE OR REPLACE PROCEDURE MDUX_DAILY
AS
v_errormsg VARCHAR2 (1000);