MDUX#81808 Verwijderen personen lukt niet
svn path=/Customer/trunk/; revision=63196
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user