ASDL#38533 -- Problemen tijdens draaien van import

svn path=/Customer/trunk/; revision=31640
This commit is contained in:
Arthur Egberink
2016-11-23 14:29:11 +00:00
parent 017d406b64
commit 0db8554048

View File

@@ -1365,97 +1365,104 @@ IS
v_count NUMBER;
v_errorhint VARCHAR2 (1000);
BEGIN
-- generic update
prs.update_perslid (p_import_key, 'NR', NULL);
FOR rec IN c_del
LOOP
BEGIN
-- Niet gebruik maken van de standaard functie omdat we geen medewerkers
-- hard willen verwijderen.
-- prs.delete_perslid (p_import_key, rec.prs_perslid_key);
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT ( * )
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam, 1, 60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
IF rec.prs_perslid_naam_full NOT LIKE '%INACTIEF%'
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 0 THEN
-- generic update
prs.update_perslid (p_import_key, 'NR', NULL);
FOR rec IN c_del
LOOP
BEGIN
-- Niet gebruik maken van de standaard functie omdat we geen medewerkers
-- hard willen verwijderen.
-- prs.delete_perslid (p_import_key, rec.prs_perslid_key);
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT ( * )
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
fac.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, SYSDATE, 'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.' );
END IF;
fac.imp_writelog (
p_import_key,
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon ge<67>nactiveerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
fac.trackaction ('PRSDEL', rec.prs_perslid_key, NULL, SYSDATE, NULL );
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr;
fac.imp_writelog (p_import_key,
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END;
END LOOP;
UPDATE fac_imp_perslid i
SET prs_kenmerk3 =
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = i.prs_kenmerk1);
FOR rec IN c_flex
LOOP
BEGIN
prs.upsertkenmerk (1061, rec.prs_perslid_key, rec.leid_key);
prs.upsertkenmerk (1023, rec.prs_perslid_key, rec.geboorte);
EXCEPTION
WHEN OTHERS
THEN
NULL; -- Jammer
END;
END LOOP;
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam, 1, 60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
IF rec.prs_perslid_naam_full NOT LIKE '%INACTIEF%'
THEN
fac.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, SYSDATE, 'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.' );
END IF;
fac.imp_writelog (
p_import_key,
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon ge<67>nactiveerd.',
'Achternaam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr);
fac.trackaction ('PRSDEL', rec.prs_perslid_key, NULL, SYSDATE, NULL );
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| rec.prs_perslid_naam_full
|| '/'
|| rec.prs_perslid_nr;
fac.imp_writelog (p_import_key,
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END;
END LOOP;
UPDATE fac_imp_perslid i
SET prs_kenmerk3 =
(SELECT prs_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = i.prs_kenmerk1);
FOR rec IN c_flex
LOOP
BEGIN
prs.upsertkenmerk (1061, rec.prs_perslid_key, rec.leid_key);
prs.upsertkenmerk (1023, rec.prs_perslid_key, rec.geboorte);
EXCEPTION
WHEN OTHERS
THEN
NULL; -- Jammer
END;
END LOOP;
END IF;
END asdl_update_perslid;
/
@@ -2114,9 +2121,6 @@ END;
------ payload end ------
SET DEFINE ON
BEGIN fac.registercustversion('&custid', '&custvers'); END;
/
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/