RWSN#83192 IDM_ORG-import/Bijwerken KPN+RWSN#84245 IDM_PERS-import/Gedeactiveerde personen

svn path=/Customer/trunk/; revision=65915
This commit is contained in:
Maarten van der Heide
2024-08-15 13:40:52 +00:00
parent eefc335627
commit 0a1829851a

View File

@@ -265,7 +265,6 @@ EXCEPTION
END;
/
/* Formatted on 8-8-2013 15:42:15 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE rwsn_update_idm_org (p_import_key IN NUMBER)
AS
-- Let op:
@@ -314,6 +313,7 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER;
currentversion fac_module.fac_module_version%TYPE;
l_vervalkm_key NUMBER (10); -- Key van VERVALDATUM-kenmerk
lkostenplaatskey prs_kostenplaats.prs_kostenplaats_key%TYPE;
@@ -347,6 +347,7 @@ BEGIN
FROM rwsn_imp_idm_org
WHERE einddatum > TRUNC (SYSDATE);
--Altijd 0, want einddatum altijd op 31-12-9999!
SELECT COUNT ( * )
INTO l_impcountpas
FROM rwsn_imp_idm_org
@@ -355,13 +356,21 @@ BEGIN
-- How many active records are now present?
SELECT COUNT ( * )
INTO l_oldcountkp
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL;
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND prs_kostenplaats_eind IS NOT NULL
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
SELECT COUNT ( * )
INTO l_oldcountafd
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL;
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND EXISTS -- Afdeling met vervaldatum (in toekomst), dus IDM_ORG-import!
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = l_vervalkm_key
AND prs_link_key = a.prs_afdeling_key);
-- Check #regels, stop als onvoldoende (= bestaand maar ongeldig bestand)
IF l_impcountact + l_impcountpas = 0
@@ -372,11 +381,11 @@ BEGIN
-- Bestaat afdelingskenmerk VERVALDATUM?
BEGIN
SELECT k.prs_kenmerk_key
SELECT prs_kenmerk_key
INTO l_vervalkm_key
FROM prs_kenmerk k
WHERE k.prs_kenmerk_niveau = 'A'
AND k.prs_kenmerk_upper = c_km_vervaldatum;
FROM prs_kenmerk
WHERE prs_kenmerk_niveau = 'A'
AND prs_kenmerk_upper = c_km_vervaldatum;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -384,18 +393,124 @@ BEGIN
RETURN;
END;
-- Oude ellende schonen, in principe eenmalig, want nooit meer VERVALLLEN
-- met 3 L's!
/*
SELECT kp.*
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_omschrijving LIKE 'VERVALLLEN: %';
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_eind = TRUNC (SYSDATE, 'yyyy')
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_omschrijving LIKE 'VERVALLLEN: %';
*/
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_verwijder = SYSDATE
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_omschrijving LIKE 'VERVALLLEN: %';
-- Zet kostenplaatsen op VERVALLEN; de rest handmatig verder maar regelen!
-- Kostenplaatsen zonder einddatum met rust laten (=handmatig aangemaakt)!
v_errormsg := 'Fout inactiveren kostenplaatsen.';
SELECT COUNT ( * )
INTO l_vervcountkp
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_eind > TRUNC (SYSDATE) -- Met einddatum in toekomst
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND NOT EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = kp.prs_kostenplaats_upper);
UPDATE prs_kostenplaats kp
SET kp.prs_kostenplaats_eind = TRUNC (SYSDATE), -- Per vandaag vervallen
kp.prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN: ' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_eind > TRUNC (SYSDATE) -- Met einddatum in toekomst
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND NOT EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = kp.prs_kostenplaats_upper);
SELECT COUNT ( * )
INTO l_reancountkp
FROM prs_kostenplaats kp
WHERE kp.prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS'
AND kp.prs_kostenplaats_eind < SYSDATE -- Met einddatum in verleden
AND UPPER (kp.prs_kostenplaats_omschrijving) LIKE 'VERVALLEN:%'
AND EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = kp.prs_kostenplaats_upper);
COMMIT;
-- Zet afdelingen op VERVALLEN; de rest handmatig verder maar regelen!
v_errormsg := 'Fout inactiveren afdelingen.';
SELECT COUNT ( * )
INTO l_vervcountafd
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (a.prs_afdeling_omschrijving) NOT LIKE 'VERVALLEN:%'
AND EXISTS -- Afdeling met vervaldatum (in toekomst), dus IDM_ORG-import!
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = l_vervalkm_key
AND prs_link_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = a.prs_afdeling_upper);
UPDATE prs_afdeling a
SET a.prs_afdeling_omschrijving = SUBSTR ('VERVALLEN: ' || COALESCE (prs_afdeling_omschrijving, '-'), 1, 60)
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (a.prs_afdeling_omschrijving) NOT LIKE 'VERVALLEN:%'
AND EXISTS -- Afdeling met vervaldatum (in toekomst), dus IDM_ORG-import!
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = l_vervalkm_key
AND prs_link_key = a.prs_afdeling_key)
AND NOT EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = a.prs_afdeling_upper);
SELECT COUNT ( * )
INTO l_reancountafd
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (a.prs_afdeling_omschrijving) LIKE 'VERVALLEN:%'
AND EXISTS -- Afdeling met vervaldatum (in verleden), dus IDM_ORG-import!
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = l_vervalkm_key
AND prs_link_key = a.prs_afdeling_key)
AND EXISTS
(SELECT 1
FROM rwsn_imp_idm_org
WHERE UPPER (afdelingscode) = a.prs_afdeling_upper);
COMMIT;
FOR rc IN cafdelingsboom
LOOP
v_aanduiding := '[' || TO_CHAR (rc.fac_lev) || '|' || rc.afdelingscode || '] ';
v_aanduiding := '[' || TO_CHAR (rc.fac_lev) || '|' || rc.afdelingscode || '|' || rc.omschrijving || '|' || rc.parentcode || '] ';
-- Bestaat de kostenplaats al?
v_errormsg := 'Fout bepalen kostenplaats';
BEGIN
SELECT prs_kostenplaats_key
INTO lkostenplaatskey
FROM prs_kostenplaats
WHERE prs_kostenplaats_upper = rc.afdelingscode
AND prs_kostenplaats_verwijder IS NULL;
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper = rc.afdelingscode;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -407,10 +522,10 @@ BEGIN
BEGIN
SELECT a.prs_afdeling_key, ab.niveau, a.prs_afdeling_parentkey
INTO lafdelingkey, l_cur_lev, l_cur_parentkey
FROM prs_afdeling a, prs_v_afdeling_boom ab
WHERE a.prs_afdeling_upper = rc.afdelingscode
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = ab.prs_afdeling_key;
FROM prs_afdeling a, prs_v_afdeling_boom ab -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND a.prs_afdeling_upper = rc.afdelingscode;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -423,10 +538,11 @@ BEGIN
DBMS_OUTPUT.put_line (rc.afdelingscode);
v_errormsg := 'Fout toevoegen kostenplaats';
IF lkostenplaatskey = -1
THEN
BEGIN
v_errormsg := 'Fout toevoegen/bijwerken kostenplaats.';
BEGIN
IF lkostenplaatskey = -1
THEN
v_errormsg := 'Fout toevoegen kostenplaats';
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module,
@@ -439,27 +555,54 @@ BEGIN
rc.einddatum)
RETURNING prs_kostenplaats_key
INTO lkostenplaatskey;
EXCEPTION
WHEN OTHERS
ELSE -- Bijwerken kostenplaats met omschrijving het hoogst in de boom!
v_errormsg := 'Fout bijwerken kostenplaats';
SELECT COUNT ( * )
INTO v_count
FROM ( SELECT LEVEL idm_lev,
DECODE (LEVEL, 1, 0, 2, 0, 3, 1, 4, 2, 5, 3, 6, 4, 7, 5, 5)
fac_lev,
afdelingscode,
omschrijving,
parentcode,
begindatum,
einddatum
FROM rwsn_imp_idm_org
WHERE afdelingscode IS NOT NULL -- Geen lege regels
CONNECT BY PRIOR afdelingscode = parentcode
START WITH parentcode = '00000000'
ORDER BY LEVEL) x
WHERE x.omschrijving = rc.omschrijving
AND x.fac_lev < rc.fac_lev;
IF v_count = 0
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
fac.imp_writelog (p_import_key, 'W',
SUBSTR ('Kostenplaats kan niet worden toegevoegd. ' || oracle_err_mes, 1, 1000),
rc.afdelingscode || '/' || rc.omschrijving);
END;
END IF;
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = rc.omschrijving,
prs_kostenplaats_begin = rc.begindatum,
prs_kostenplaats_eind = rc.einddatum
WHERE prs_kostenplaats_key = lkostenplaatskey;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, rc.afdelingscode || '/' || rc.omschrijving);
END;
-- Alle niveaus zitten in cursor tbv. bovenstaande kostenplaatsen, maar
-- bij de mapping naar Facilitor-afdelingen pakken we de IDM-afdelingen
-- vanaf 3 (= Facilitor rootniveau).
-- vanaf 3 (= Facilitor Afdeling-1).
IF rc.idm_lev >= 3 AND lkostenplaatskey <> -1
THEN
IF lafdelingkey = -1 -- Nieuwe afdeling -> toevoegen!
THEN
BEGIN
v_errormsg := 'Fout toevoegen afdeling';
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft het rootniveau!
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
THEN
--IF rc.afdelingscode = '63562065'
IF rc.omschrijving LIKE 'KNMI%' -- Toekomstvaster dan code?
@@ -502,10 +645,11 @@ BEGIN
WHERE prs_kostenplaatsgrp_oms = afd.prs_afdeling_naam);
ELSIF rc.idm_lev <= 7 -- Afdeling op Facilitor-niveau 2 t/m 5!
THEN
-- Bepaal key van parent!
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling
WHERE prs_afdeling_naam = rc.parentcode AND prs_afdeling_verwijder IS NULL;
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL AND prs_afdeling_naam = rc.parentcode;
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
@@ -529,11 +673,11 @@ BEGIN
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling
WHERE prs_afdeling_naam = l_new_parparcode AND prs_afdeling_verwijder IS NULL;
WHERE prs_afdeling_verwijder IS NULL AND prs_afdeling_naam = l_new_parparcode;
-- Doordat cursor van hoog naar laag door organisatie loopt,
-- komen afdelingen vanaf IDM-niveau 8 keurig onder de gewenste
-- Facilitor-niveau 4 afdeling te hangen.
-- Afdeling-4 te hangen.
INSERT INTO prs_afdeling (prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_bedrijf_key,
@@ -547,24 +691,21 @@ BEGIN
RETURNING prs_afdeling_key INTO lafdelingkey;
END IF;
fac.imp_writelog (p_import_key, 'I',
'Afdeling is toegevoegd.',
rc.afdelingscode || '/' || rc.omschrijving || ' (' || rc.parentcode || ')');
fac.imp_writelog (p_import_key, 'I', 'Afdeling toegevoegd', v_aanduiding);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
fac.imp_writelog (p_import_key, 'W',
SUBSTR ('Afdeling kan niet worden toegevoegd. ' || oracle_err_mes, 1, 1000),
rc.afdelingscode || '/' || rc.omschrijving || ' (' || rc.parentcode || ')');
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_aanduiding);
END;
ELSE -- Bestaande afdeling -> bijwerken (misschien)!
BEGIN
v_errormsg := 'Fout bijwerken afdeling';
-- Zonodig bijwerken omschrijving (deze kon eerder vervallen
-- zijn) en/of omhangen naar de juiste plek in de boom.
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft het rootniveau!
v_errormsg := 'Fout bijwerken afdeling';
IF rc.fac_lev = 1 -- Ingelezen afdeling betreft Afdeling-1!
THEN
--IF rc.afdelingscode = '63562065'
IF rc.omschrijving LIKE 'KNMI%' -- Toekomstvaster dan code?
@@ -602,8 +743,8 @@ BEGIN
-- Bepaal key van parent!
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling
WHERE prs_afdeling_naam = rc.parentcode AND prs_afdeling_verwijder IS NULL;
FROM prs_afdeling -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
WHERE prs_afdeling_verwijder IS NULL AND prs_afdeling_naam = rc.parentcode;
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = rc.omschrijving,
@@ -611,7 +752,8 @@ BEGIN
prs_afdeling_parentkey = l_new_parentkey
WHERE prs_afdeling_key = lafdelingkey
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.omschrijving -- Oms. gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey); -- Parent gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
ELSE -- Omhoog geschoven afdeling op Facilitor-niveau 5!
-- Bepaal code van parent van parent!
SELECT parentcode
@@ -623,42 +765,41 @@ BEGIN
SELECT prs_afdeling_key
INTO l_new_parentkey
FROM prs_afdeling
WHERE prs_afdeling_naam = l_new_parparcode AND prs_afdeling_verwijder IS NULL;
WHERE prs_afdeling_verwijder IS NULL AND prs_afdeling_naam = l_new_parparcode;
-- Doordat cursor van hoog naar laag door organisatie loopt,
-- komen afdelingen vanaf IDM-niveau 8 keurig onder de gewenste
-- Facilitor-niveau 4 afdeling te hangen.
-- Afdeling-4 te hangen.
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = rc.omschrijving,
prs_bedrijf_key = NULL,
prs_afdeling_parentkey = l_new_parentkey
prs_afdeling_parentkey = l_new_parentkey,
prs_kostenplaats_key = lkostenplaatskey
WHERE prs_afdeling_key = lafdelingkey
AND (COALESCE (prs_afdeling_omschrijving, '-') <> rc.omschrijving -- Oms. gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey); -- Parent gewijzigd?
OR COALESCE (prs_afdeling_parentkey, -1) <> l_new_parentkey -- Parent gewijzigd?
OR prs_kostenplaats_key <> lkostenplaatskey); -- Kostenplaats gewijzigd?
END IF;
IF rc.fac_lev <> l_cur_lev OR l_new_parentkey <> l_cur_parentkey
THEN
fac.imp_writelog (p_import_key, 'I',
'Afdeling is omgehangen naar level=' || TO_CHAR (rc.fac_lev) || '.',
rc.afdelingscode || '/' || rc.omschrijving || ' (' || rc.parentcode || ')');
fac.imp_writelog (p_import_key, 'I', 'Afdeling omgehangen naar level=' || TO_CHAR (rc.fac_lev), v_aanduiding);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
fac.imp_writelog (p_import_key, 'W',
SUBSTR ('Afdeling kan niet worden bijgewerkt. ' || oracle_err_mes, 1, 1000),
rc.afdelingscode || '/' || rc.omschrijving || ' (' || rc.parentcode || ')');
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_aanduiding);
END;
END IF;
IF rc.einddatum IS NOT NULL
THEN
BEGIN
v_errormsg := 'Fout bepalen einddatum';
-- Heeft afdeling reeds een VERVALDATUM-waarde?
v_errormsg := 'Fout bepalen einddatum';
SELECT kl.prs_kenmerklink_key, TO_DATE (kl.prs_kenmerklink_waarde, 'dd-mm-yyyy')
INTO l_vervalkl_key, l_vervalkl_waarde
FROM prs_v_aanwezigkenmerklink kl
@@ -669,7 +810,6 @@ BEGIN
IF rc.einddatum != l_vervalkl_waarde
THEN
v_errormsg := 'Fout bijwerken einddatum';
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = TO_CHAR (rc.einddatum, 'dd-mm-yyyy')
WHERE prs_kenmerklink_key = l_vervalkl_key;
@@ -678,7 +818,6 @@ BEGIN
WHEN NO_DATA_FOUND
THEN
v_errormsg := 'Fout toevoegen einddatum';
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerk_key,
@@ -713,82 +852,6 @@ BEGIN
AND kpg.prs_kostenplaatsgrp_key = kp.prs_kostenplaatsgrp_key);
COMMIT;
-- Handmatig aangemaakte kostenplaatsen/afdelingen niet meer laten vervallen!
-- Tot RWSN39: Prefix wat niet meer voorkomt in importbestand met VERVALLEN.
-- Per RWSN39: Prefix entries met een Vervaldatum in verleden met VERVALLEN.
-- Per RWSN39: Verwijder prefix voor entries met een Vervaldatum in toekomst?
SELECT COUNT ( * )
INTO l_vervcountkp
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_omschrijving NOT LIKE 'VERVALLEN: %'
AND prs_kostenplaats_eind < TRUNC (SYSDATE); -- In verleden
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = SUBSTR ('VERVALLLEN: ' || prs_kostenplaats_omschrijving, 1, 60)
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_omschrijving NOT LIKE 'VERVALLEN: %'
AND prs_kostenplaats_eind < TRUNC (SYSDATE); -- In verleden
SELECT COUNT ( * )
INTO l_reancountkp
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_omschrijving LIKE 'VERVALLEN: %'
AND prs_kostenplaats_eind > TRUNC (SYSDATE); -- In toekomst
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = prs_kostenplaats_omschrijving
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_omschrijving LIKE 'VERVALLEN: %'
AND prs_kostenplaats_eind > TRUNC (SYSDATE); -- In toekomst
SELECT COUNT ( * )
INTO l_vervcountafd
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_omschrijving NOT LIKE 'VERVALLEN: %'
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key = l_vervalkm_key
AND TO_DATE (prs_kenmerklink_waarde, 'dd-mm-yyyy') < TRUNC (SYSDATE));
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = SUBSTR ('VERVALLEN: ' || prs_afdeling_omschrijving, 1, 60)
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_omschrijving NOT LIKE 'VERVALLEN: %'
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key = l_vervalkm_key
AND TO_DATE (prs_kenmerklink_waarde, 'dd-mm-yyyy') < TRUNC (SYSDATE));
SELECT COUNT ( * )
INTO l_reancountafd
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_omschrijving LIKE 'VERVALLEN: %'
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key = l_vervalkm_key
AND TO_DATE (prs_kenmerklink_waarde, 'dd-mm-yyyy') > TRUNC (SYSDATE));
UPDATE prs_afdeling
SET prs_afdeling_omschrijving = prs_afdeling_omschrijving
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_omschrijving LIKE 'VERVALLEN: %'
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = prs_afdeling_key
AND prs_kenmerk_key = l_vervalkm_key
AND TO_DATE (prs_kenmerklink_waarde, 'dd-mm-yyyy') > TRUNC (SYSDATE));
-- Je zou nu (uitbreiding) de kostenplaatsen en afdelingen echt kunnen verwijderen
-- als er geen verplichtingen meer bij zijn. Dit lijkt me nader te specificeren.
-- Kan functioneel zo eenvoudig zijn als delete where omschrijving like 'VERVALLEN: '
@@ -797,13 +860,21 @@ BEGIN
-- For summary only.
SELECT COUNT ( * )
INTO l_newcountkp
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL;
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND prs_kostenplaats_eind IS NOT NULL
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
SELECT COUNT ( * )
INTO l_newcountafd
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL;
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
AND EXISTS -- Afdeling met vervaldatum (in toekomst), dus IDM_ORG-import!
(SELECT 1
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = l_vervalkm_key
AND prs_link_key = a.prs_afdeling_key);
fac.imp_writelog (
p_import_key, 'S',
@@ -2013,17 +2084,18 @@ BEGIN
prs_perslid_voorletters = rec_prs_upd.prs_perslid_voorletters,
prs_perslid_voornaam = NVL (rec_prs_upd.prs_perslid_voornaam, prs_perslid_voornaam),
prs_perslid_telefoonnr = rec_prs_upd.prs_perslid_telefoonnr,
prs_perslid_nr = rec_prs_upd.dienstverbandid,
prs_perslid_titel = rec_prs_upd.prs_perslid_titel,
prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_verwijder = NULL,
prs_perslid_oslogin = llogin1,
prs_perslid_oslogin2 = COALESCE (prs_perslid_oslogin2, llogin2), -- RWSN#21033!
prs_perslid_mobiel = rec_prs_upd.mobielnummer,
prs_perslid_email = lemail,
prs_perslid_ingangsdatum = rec_prs_upd.begindatum,
prs_perslid_einddatum = rec_prs_upd.einddatum,
prs_perslid_nr = rec_prs_upd.dienstverbandid
prs_perslid_verwijder = NULL,
prs_perslid_inactief = NULL
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key
AND ( prs_perslid_naam <> lnaampresentatie
OR NVL (prs_perslid_tussenvoegsel, '-') <> NVL (ltussenvoegselpres, '-')
@@ -14115,12 +14187,13 @@ AS
CURSOR c2
IS
SELECT prs_bedrijf_key, prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_leverancier_nr IS NOT NULL
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE b.prs_bedrijf_intern IS NULL
AND b.prs_leverancier_nr IS NOT NULL
AND NOT EXISTS (SELECT 1
FROM rwsn_imp_partners
WHERE prs_leverancier_nr = contractant)
WHERE contractant = b.prs_leverancier_nr)
ORDER BY prs_bedrijf_key;
c_kenmerk_inactief NUMBER (10) := 1040;