CSUN#68556 Ondersteuning bij vervanging koppeling AS400

Aanpassingen gedaan voor betere logging en aansturing van RM/DM obv emailadres

svn path=/Customer/trunk/; revision=71116
This commit is contained in:
Sander Schepers
2025-12-02 12:50:36 +00:00
parent 8e2c3774de
commit 0feea0f3cd

View File

@@ -8698,12 +8698,6 @@ IS
v_error_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (1000);
v_aanduiding VARCHAR2 (200);
v_count NUMBER (10);
v_ongeldig NUMBER (1);
v_count_update NUMBER (10);
v_count_tot NUMBER (10);
v_count_mld NUMBER (10);
v_locatie_key NUMBER (10);
v_bud_key VARCHAR2 (255);
@@ -8713,88 +8707,162 @@ IS
v_afdeling_key NUMBER (10);
v_tussenv VARCHAR2 (15);
v_achternaam VARCHAR2 (60);
v_email VARCHAR2 (255);
CURSOR c_account
CURSOR c_rec
IS
WITH k AS (
SELECT l.alg_locatie_key loc_key,
MAX (CASE WHEN aog.alg_kenmerk_key = 1940 THEN aog.alg_onrgoedkenmerk_waarde END) accountcode,
MAX (CASE WHEN aog.alg_kenmerk_key = 1941 THEN aog.alg_onrgoedkenmerk_waarde END) accountnaam,
MAX (CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX (CASE WHEN aog.alg_kenmerk_key = 1943 THEN aog.alg_onrgoedkenmerk_waarde END) vervallen,
MAX (CASE WHEN aog.alg_kenmerk_key = 1951 THEN aog.alg_onrgoedkenmerk_waarde END) omschrijving,
MAX (CASE WHEN aog.alg_kenmerk_key = 1952 THEN aog.alg_onrgoedkenmerk_waarde END) adres,
MAX (CASE WHEN aog.alg_kenmerk_key = 1953 THEN aog.alg_onrgoedkenmerk_waarde END) postcode,
MAX (CASE WHEN aog.alg_kenmerk_key = 1954 THEN aog.alg_onrgoedkenmerk_waarde END) woonplaats,
MAX (CASE WHEN aog.alg_kenmerk_key = 2120 THEN aog.alg_onrgoedkenmerk_waarde END) vervaldatum,
MAX (CASE WHEN aog.alg_kenmerk_key = 2141 THEN aog.alg_onrgoedkenmerk_waarde END) dm_mail
FROM alg_locatie l
JOIN alg_onrgoedkenmerk aog
ON aog.alg_onrgoed_key = l.alg_locatie_key
AND aog.alg_onrgoed_niveau = 'L'
AND aog.alg_onrgoedkenmerk_verwijder IS NULL
WHERE l.alg_locatie_verwijder IS NULL -- alleen niet-verwijderde locaties
GROUP BY l.alg_locatie_key
HAVING MAX (
CASE
WHEN aog.alg_kenmerk_key = 1942
THEN aog.alg_onrgoedkenmerk_waarde
END) IS NOT NULL -- project (1942) m<>et gevuld zijn
)
SELECT k.loc_key,
k.accountcode,
k.accountnaam,
k.project,
k.vervallen,
k.omschrijving,
k.adres,
k.postcode,
k.woonplaats,
k.vervaldatum,
LOWER (k.dm_mail) dm_mail,
-- district op basis van dm_mail
(SELECT MAX (d.alg_district_key)
FROM prs_perslid p,
alg_onrgoedkenmerk aogdm,
alg_district d
WHERE LOWER (p.prs_perslid_email) = LOWER (k.dm_mail)
AND aogdm.alg_kenmerk_key = 1021
AND p.prs_perslid_key =
fac.safe_to_number (
aogdm.alg_onrgoedkenmerk_waarde)
AND aogdm.alg_onrgoed_key = d.alg_district_key
AND d.alg_district_verwijder IS NULL
AND aogdm.alg_onrgoedkenmerk_verwijder IS NULL)
AS district_key,
-- BUD op district
(SELECT aogb.alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogb
WHERE aogb.alg_onrgoed_key =
(SELECT MAX (d2.alg_district_key)
FROM prs_perslid p2,
alg_onrgoedkenmerk aogdm2,
alg_district d2
WHERE LOWER (p2.prs_perslid_email) =
LOWER (k.dm_mail)
AND aogdm2.alg_kenmerk_key = 1021
AND p2.prs_perslid_key =
fac.safe_to_number (
aogdm2.alg_onrgoedkenmerk_waarde)
AND aogdm2.alg_onrgoed_key =
d2.alg_district_key
AND d2.alg_district_verwijder IS NULL
AND aogdm2.alg_onrgoedkenmerk_verwijder
IS NULL)
AND aogb.alg_kenmerk_key = 1060
AND aogb.alg_onrgoed_niveau = 'L'
AND aogb.alg_onrgoedkenmerk_verwijder IS NULL)
AS bud_key,
-- account_key uit fac_usrdata (kan NULL zijn; dan maken we hem aan)
(SELECT ud.fac_usrdata_key
FROM fac_usrdata ud
WHERE ud.fac_usrtab_key = 1
AND ud.fac_usrdata_code = k.accountcode
AND ud.fac_usrdata_verwijder IS NULL)
AS account_key
FROM k
WHERE k.accountcode IS NOT NULL
AND k.project IS NOT NULL
AND COALESCE (UPPER (k.vervallen), 'N') <> 'J'
AND k.dm_mail IS NOT NULL;
-- eventueel tijdelijk filteren op <20><>n project:
-- AND k.project = '2019104';
CURSOR c_verv
IS
WITH k AS (
SELECT aog.alg_onrgoed_key loc_key,
MAX(CASE WHEN aog.alg_kenmerk_key = 1940 THEN aog.alg_onrgoedkenmerk_waarde END) accountcode,
MAX(CASE WHEN aog.alg_kenmerk_key = 1941 THEN aog.alg_onrgoedkenmerk_waarde END) accountnaam,
MAX(CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX(CASE WHEN aog.alg_kenmerk_key = 1943 THEN aog.alg_onrgoedkenmerk_waarde END) vervallen
MAX(
CASE
WHEN aog.alg_kenmerk_key = 1942
THEN aog.alg_onrgoedkenmerk_waarde
END) AS project,
MAX(
CASE
WHEN aog.alg_kenmerk_key = 1943
THEN aog.alg_onrgoedkenmerk_waarde
END) AS vervallen_flag
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_onrgoed_niveau = 'L'
AND aog.alg_onrgoedkenmerk_verwijder IS NULL
GROUP BY aog.alg_onrgoed_key
)
SELECT DISTINCT accountcode, accountnaam
FROM k
WHERE accountcode IS NOT NULL
AND project IS NOT NULL
AND COALESCE (UPPER (vervallen), 'N') <> 'J';
SELECT l.alg_locatie_key,
l.alg_locatie_code
FROM alg_locatie l
JOIN k
ON k.loc_key = l.alg_locatie_key
WHERE k.project IS NOT NULL -- 1942 moet bestaan
AND UPPER (k.vervallen_flag) = 'J' -- 1943 = 'J'
AND l.alg_locatie_vervaldatum IS NULL -- nog niet vervallen
AND l.alg_locatie_verwijder IS NULL; -- niet verwijderd
CURSOR c_district (
c_accountcode IN VARCHAR2)
CURSOR c_unverv
IS
WITH k AS (
SELECT aog.alg_onrgoed_key loc_key,
MAX(CASE WHEN aog.alg_kenmerk_key = 1940 THEN aog.alg_onrgoedkenmerk_waarde END) accountcode,
MAX(CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX(CASE WHEN aog.alg_kenmerk_key = 1943 THEN aog.alg_onrgoedkenmerk_waarde END) vervallen,
MAX(CASE WHEN aog.alg_kenmerk_key = 1946 THEN aog.alg_onrgoedkenmerk_waarde END) voornaam,
MAX(CASE WHEN aog.alg_kenmerk_key = 1947 THEN aog.alg_onrgoedkenmerk_waarde END) voorletters,
MAX(CASE WHEN aog.alg_kenmerk_key = 1948 THEN aog.alg_onrgoedkenmerk_waarde END) tussenvoegsels,
MAX(CASE WHEN aog.alg_kenmerk_key = 1949 THEN aog.alg_onrgoedkenmerk_waarde END) achternaam,
MAX(CASE WHEN aog.alg_kenmerk_key = 2141 THEN aog.alg_onrgoedkenmerk_waarde END) dm_mail
MAX(
CASE
WHEN aog.alg_kenmerk_key = 1942
THEN aog.alg_onrgoedkenmerk_waarde
END) AS project,
MAX(
CASE
WHEN aog.alg_kenmerk_key = 1943
THEN aog.alg_onrgoedkenmerk_waarde
END) AS vervallen_flag
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_onrgoed_niveau = 'L'
AND aog.alg_onrgoedkenmerk_verwijder IS NULL
GROUP BY aog.alg_onrgoed_key
)
SELECT DISTINCT
LOWER (dm_mail) dm,
voornaam,
voorletters,
tussenvoegsels,
achternaam
FROM k
WHERE accountcode = c_accountcode
AND project IS NOT NULL
AND COALESCE (UPPER (vervallen), 'N') <> 'J'
AND dm_mail IS NOT NULL;
CURSOR c (
c_accountcode IN VARCHAR2,
c_dm IN VARCHAR2)
IS
WITH k AS (
SELECT aog.alg_onrgoed_key loc_key,
MAX(CASE WHEN aog.alg_kenmerk_key = 1940 THEN aog.alg_onrgoedkenmerk_waarde END) accountcode,
MAX(CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX(CASE WHEN aog.alg_kenmerk_key = 1943 THEN aog.alg_onrgoedkenmerk_waarde END) vervallen,
MAX(CASE WHEN aog.alg_kenmerk_key = 1951 THEN aog.alg_onrgoedkenmerk_waarde END) omschrijving,
MAX(CASE WHEN aog.alg_kenmerk_key = 1952 THEN aog.alg_onrgoedkenmerk_waarde END) adres,
MAX(CASE WHEN aog.alg_kenmerk_key = 1953 THEN aog.alg_onrgoedkenmerk_waarde END) postcode,
MAX(CASE WHEN aog.alg_kenmerk_key = 1954 THEN aog.alg_onrgoedkenmerk_waarde END) woonplaats,
MAX(CASE WHEN aog.alg_kenmerk_key = 2120 THEN aog.alg_onrgoedkenmerk_waarde END) vervaldatum,
MAX(CASE WHEN aog.alg_kenmerk_key = 2141 THEN aog.alg_onrgoedkenmerk_waarde END) dm_mail
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_onrgoed_niveau = 'L'
AND aog.alg_onrgoedkenmerk_verwijder IS NULL
GROUP BY aog.alg_onrgoed_key
)
SELECT loc_key alg_locatie_key,
project,
omschrijving,
adres,
postcode,
woonplaats,
vervaldatum
FROM k
WHERE accountcode = c_accountcode
AND project IS NOT NULL
AND LOWER (dm_mail) = LOWER (c_dm)
AND COALESCE (UPPER (vervallen), 'N') <> 'J';
SELECT l.alg_locatie_key,
l.alg_locatie_code
FROM alg_locatie l
JOIN k
ON k.loc_key = l.alg_locatie_key
WHERE k.project IS NOT NULL -- 1942 moet gevuld zijn
AND ( k.vervallen_flag IS NULL -- 1943 niet meer 'J'
OR UPPER (k.vervallen_flag) <> 'J')
AND ( l.alg_locatie_vervaldatum IS NOT NULL -- alleen als hij nu w<>l vervallen staat
OR EXISTS (
SELECT 1
FROM alg_onrgoedkenmerk a1160
WHERE a1160.alg_onrgoed_key = l.alg_locatie_key
AND a1160.alg_kenmerk_key = 1160
AND a1160.alg_onrgoed_niveau = 'L'
AND a1160.alg_onrgoedkenmerk_verwijder IS NULL));
CURSOR c_del
IS
@@ -8839,7 +8907,7 @@ IS
SELECT aog.alg_onrgoed_key loc_key,
MAX(CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX(CASE WHEN aog.alg_kenmerk_key = 1944 THEN aog.alg_onrgoedkenmerk_waarde END) bu,
MAX(CASE WHEN aog.alg_kenmerk_key = 1955 THEN aog.alg_onrgoedkenmerk_waarde END) rayonl_persnr,
MAX(CASE WHEN aog.alg_kenmerk_key = 2140 THEN aog.alg_onrgoedkenmerk_waarde END) rayonl_mail,
MAX(CASE WHEN aog.alg_kenmerk_key = 1956 THEN aog.alg_onrgoedkenmerk_waarde END) rayonl_naam
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_onrgoed_niveau = 'L'
@@ -8847,26 +8915,21 @@ IS
GROUP BY aog.alg_onrgoed_key
)
SELECT DISTINCT
bu,
rayonl_persnr,
TRIM (SUBSTR (rayonl_naam, 1, INSTR (rayonl_naam, ' ')))
voornaam,
TRIM (
SUBSTR (rayonl_naam,
INSTR (rayonl_naam, ' '),
60))
achternaam,
rayonl_naam
k.bu,
TRIM(SUBSTR(k.rayonl_naam, 1, INSTR(k.rayonl_naam, ' '))) AS voornaam,
TRIM(SUBSTR(k.rayonl_naam, INSTR(k.rayonl_naam, ' '), 60)) AS achternaam,
LOWER(k.rayonl_mail) AS rayonl_mail
FROM k
WHERE rayonl_naam IS NOT NULL
AND project IS NOT NULL;
WHERE k.project IS NOT NULL
AND k.rayonl_naam IS NOT NULL
AND k.rayonl_mail IS NOT NULL;
CURSOR c_rayon_wp
IS
WITH k AS (
SELECT aog.alg_onrgoed_key loc_key,
MAX(CASE WHEN aog.alg_kenmerk_key = 1942 THEN aog.alg_onrgoedkenmerk_waarde END) project,
MAX(CASE WHEN aog.alg_kenmerk_key = 1955 THEN aog.alg_onrgoedkenmerk_waarde END) rayonl_persnr
MAX(CASE WHEN aog.alg_kenmerk_key = 2140 THEN aog.alg_onrgoedkenmerk_waarde END) rayonl_mail
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_onrgoed_niveau = 'L'
AND aog.alg_onrgoedkenmerk_verwijder IS NULL
@@ -8880,131 +8943,62 @@ IS
k
WHERE k.loc_key = l.alg_locatie_key
AND k.project IS NOT NULL
AND k.rayonl_persnr IS NOT NULL
AND (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || k.rayonl_persnr || '%'
AND l.alg_locatie_key = rg.alg_locatie_key
AND rg.alg_ruimte_nr = '-'
AND k.rayonl_mail IS NOT NULL
AND LOWER(p.prs_perslid_email) = LOWER(k.rayonl_mail)
AND p.prs_srtperslid_key = 50
AND p.prs_perslid_verwijder IS NULL
AND l.alg_locatie_key = rg.alg_locatie_key
AND rg.alg_ruimte_nr = '-'
AND NOT EXISTS
(SELECT *
(SELECT 1
FROM prs_v_perslidwerkplek_gegevens pwpg
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
AND pwpg.alg_locatie_key =
l.alg_locatie_key);
BEGIN
v_error_hint := 'Start met doorlopen accounts';
FOR rec_a IN c_account
BEGIN
v_error_hint := 'Start met bijwerken locaties';
FOR r IN c_rec
LOOP
BEGIN
v_error_hint :=
'Ophalen data voor accountcode: ' || rec_a.accountcode;
v_locatie_key := r.loc_key;
v_district_key := r.district_key;
v_bud_key := r.bud_key;
v_account_key := r.account_key;
BEGIN
SELECT fac_usrdata_key
INTO v_account_key
FROM fac_usrdata
WHERE fac_usrtab_key = 1
AND fac_usrdata_code = rec_a.accountcode
AND fac_usrdata_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
-- accountkey aanmaken als hij nog niet bestaat
IF v_account_key IS NULL
THEN
INSERT INTO fac_usrdata (fac_usrtab_key,
fac_usrdata_code,
fac_usrdata_omschr)
VALUES (1, rec_a.accountcode, rec_a.accountnaam)
VALUES (1, r.accountcode, r.accountnaam)
RETURNING fac_usrdata_key
INTO v_account_key;
END;
END IF;
FOR rec_d IN c_district (rec_a.accountcode)
LOOP
BEGIN
v_error_hint :=
'Ophalen data voor dm: '
|| rec_d.dm;
v_district_key := NULL;
BEGIN
SELECT alg_onrgoed_key
INTO v_district_key
FROM prs_perslid p,
alg_onrgoedkenmerk aog,
alg_district d
WHERE LOWER (p.prs_perslid_email) = rec_d.dm
AND aog.alg_kenmerk_key = 1021
AND p.prs_perslid_key =
fac.safe_to_number (
aog.alg_onrgoedkenmerk_waarde)
AND aog.alg_onrgoed_key = d.alg_district_key
AND d.alg_district_verwijder IS NULL
AND aog.alg_onrgoedkenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
IF v_district_key IS NULL
THEN
fac.imp_writelog (
NULL,
'E',
'Import locaties afgebroken, distrinctmanager niet gevonden ( dm_mail:'
|| rec_d.dm
|| '- account:'
|| rec_a.accountcode
|| '-'
|| rec_a.accountnaam
|| ')',
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'W',
r.project
|| 'DM niet gevonden voor '
|| r.dm_mail
|| ' account '
|| r.accountcode
|| ' / project '
|| r.project,
v_error_hint);
END;
IF v_district_key IS NOT NULL
THEN
FOR rec IN c (rec_a.accountcode, rec_d.dm)
LOOP
BEGIN
v_locatie_key := rec.alg_locatie_key;
v_error_hint :=
'Bepalen bb referentie: ' || rec_d.dm;
BEGIN
SELECT alg_onrgoedkenmerk_waarde
INTO v_bud_key
FROM alg_onrgoedkenmerk aogb
WHERE aogb.alg_onrgoed_key =
v_district_key
AND aogb.alg_kenmerk_key = 1060
AND aogb.alg_onrgoed_niveau = 'L'
AND aogb.alg_onrgoedkenmerk_verwijder
IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_bud_key := NULL;
END;
IF v_locatie_key IS NOT NULL
THEN
ELSE
UPDATE alg_locatie
SET alg_locatie_omschrijving =
SUBSTR (rec.omschrijving, 1, 50),
SUBSTR (r.omschrijving, 1, 50),
alg_district_key = v_district_key,
alg_locatie_adres = rec.adres,
alg_locatie_postcode = rec.postcode,
alg_locatie_plaats = rec.woonplaats,
alg_locatie_vervaldatum = NULL
WHERE alg_locatie_key = v_locatie_key;
-- gebouwen op deze locatie ook weer activeren
UPDATE alg_gebouw
SET alg_gebouw_vervaldatum = NULL
alg_locatie_adres = r.adres,
alg_locatie_postcode = r.postcode,
alg_locatie_plaats = r.woonplaats
WHERE alg_locatie_key = v_locatie_key;
csun_set_kenmerk ('ALG',
@@ -9020,170 +9014,200 @@ BEGIN
csun_set_kenmerk ('ALG',
1040,
v_locatie_key,
rec.project,
r.project,
0);
csun_set_kenmerk ('ALG',
1160,
v_locatie_key,
rec.vervaldatum,
r.vervaldatum,
0);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
'(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (
NULL,
'E',
'Import locaties afgebroken ( dm_mail:'
|| rec_d.dm
|| '- account:'
|| rec_a.accountcode
|| '-'
|| rec_a.accountnaam
|| ' Projectnr: '
|| rec.project
|| '):'
|| v_errormsg,
v_error_hint);
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (
NULL,
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
'Import locaties afgebroken ( dm_mail:'
|| rec_d.dm
|| '- account:'
|| rec_a.accountcode
|| '-'
|| rec_a.accountnaam
|| '):'
|| v_errormsg,
v_error_hint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (
NULL,
'E',
'Fout tijdens verwerking account ('
|| rec_a.accountcode
|| '):'
r.project
|| 'Fout bij bijwerken locatie '
|| v_locatie_key
|| ' '
|| v_errormsg,
v_error_hint);
END;
END LOOP;
FOR rec_del IN c_del
v_error_hint := 'Start met vervallen locaties';
FOR r_verv IN c_verv
LOOP
BEGIN
v_count_mld := rec_del.count_mld;
v_error_hint :=
'Vervallen locatie obv 1943=J, locatie: '
|| r_verv.alg_locatie_code;
IF v_count_mld = 0
UPDATE alg_locatie
SET alg_locatie_vervaldatum = SYSDATE
WHERE alg_locatie_key = r_verv.alg_locatie_key;
csun_set_kenmerk ('ALG',
1160,
r_verv.alg_locatie_key,
TO_CHAR (SYSDATE, 'dd-mm-yyyy'),
0);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
r_verv.alg_locatie_code
|| 'Fout bij vervallen zetten locatie '
|| v_locatie_key
|| ' '
|| v_errormsg,
v_error_hint);
END;
END LOOP;
-- Vervallen terugdraaien als 1943 niet meer 'J' is
FOR r_unverv IN c_unverv
LOOP
BEGIN
v_error_hint :=
'Vervallen ongedaan maken obv 1943<>J, locatie: '
|| r_unverv.alg_locatie_code;
-- vervaldatum op locatie leegmaken
UPDATE alg_locatie
SET alg_locatie_vervaldatum = NULL
WHERE alg_locatie_key = r_unverv.alg_locatie_key;
-- kenmerk 1160 (vervaldatum) leegmaken
csun_set_kenmerk ('ALG',
1160,
r_unverv.alg_locatie_key,
NULL,
0);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
r_unverv.alg_locatie_code
|| 'Fout bij vervallen ongedaan maken locatie '
|| v_locatie_key
|| ' '
|| v_errormsg,
v_error_hint);
END;
END LOOP;
v_error_hint := 'Start met verwijderen locaties';
FOR r_del IN c_del
LOOP
BEGIN
IF r_del.count_mld = 0
THEN
v_error_hint :=
'Verwijderen gebouwen - Locatie_code: '
|| rec_del.alg_locatie_code;
|| r_del.alg_locatie_code;
UPDATE alg_gebouw
SET alg_gebouw_verwijder = SYSDATE
WHERE alg_gebouw_verwijder IS NULL
AND alg_locatie_key = rec_del.alg_locatie_key;
AND alg_locatie_key = r_del.alg_locatie_key;
v_error_hint :=
'Verwijderen locatie - Locatie_code: '
|| rec_del.alg_locatie_code;
|| r_del.alg_locatie_code;
UPDATE alg_locatie
SET alg_locatie_verwijder = SYSDATE
WHERE alg_locatie_key = rec_del.alg_locatie_key;
WHERE alg_locatie_key = r_del.alg_locatie_key;
ELSE
v_error_hint :=
'Vervallen gebouwen - Locatie_code: '
|| rec_del.alg_locatie_code;
|| r_del.alg_locatie_code;
UPDATE alg_gebouw
SET alg_gebouw_vervaldatum = SYSDATE
WHERE alg_gebouw_vervaldatum IS NULL
AND alg_locatie_key = rec_del.alg_locatie_key;
AND alg_locatie_key = r_del.alg_locatie_key;
v_error_hint :=
'Vervallen locatie - Locatie_code: '
|| rec_del.alg_locatie_code;
|| r_del.alg_locatie_code;
UPDATE alg_locatie
SET alg_locatie_vervaldatum = SYSDATE
WHERE alg_locatie_key = rec_del.alg_locatie_key;
WHERE alg_locatie_key = r_del.alg_locatie_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (NULL,
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
'Verwijderen locaties:' || v_errormsg,
r_del.alg_locatie_code
|| 'Fout bij verwijderen locatie '
|| v_locatie_key
|| ' '
|| v_errormsg,
v_error_hint);
END;
END LOOP;
FOR rec_ray IN c_rayonl
LOOP
BEGIN
-- 1) Bepaal eerst of de persoon al bestaat op basis van e-mail
v_perslid_key := NULL;
v_email := rec_ray.rayonl_mail; -- al lowercase in cursor
SELECT MAX (p.prs_perslid_key)
BEGIN
SELECT MAX(p.prs_perslid_key)
INTO v_perslid_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder IS NULL
AND pk.prs_kenmerk_key = 1120
AND p.prs_perslid_key = pk.prs_link_key
AND pk.prs_kenmerklink_niveau = 'P') LIKE
'%' || rec_ray.rayonl_persnr || '%';
AND LOWER(p.prs_perslid_email) = v_email;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_perslid_key := NULL;
END;
-- 2) Zo niet: nieuwe rayonleider aanmaken
IF v_perslid_key IS NULL
THEN
INSERT INTO prs_perslid (prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_voornaam)
VALUES (50, 1, rec_ray.achternaam, rec_ray.voornaam)
prs_perslid_voornaam,
prs_perslid_email)
VALUES (50,
1,
rec_ray.achternaam,
rec_ray.voornaam,
v_email)
RETURNING prs_perslid_key
INTO v_perslid_key;
IF v_perslid_key IS NOT NULL
THEN
csun_set_kenmerk ('PRS',
1120,
v_perslid_key,
rec_ray.rayonl_persnr,
0);
fac.trackaction ('PRSUPD',
v_perslid_key,
4,
NULL,
'Kostenplaats CSU -> '
|| rec_ray.rayonl_persnr);
END IF;
-- 3) Naam en tussenvoegsels opschonen (zoals je al had)
v_achternaam := rec_ray.achternaam;
v_tussenv := '';
@@ -9221,10 +9245,10 @@ BEGIN
SET prs_perslid_naam = v_achternaam,
prs_perslid_tussenvoegsel = v_tussenv
WHERE prs_perslid_key = v_perslid_key;
END IF;
END;
BEGIN
-- 4) Afdeling op basis van BU (oude logica, maar nu met rec_ray.bu)
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a,
@@ -9240,15 +9264,20 @@ BEGIN
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
NULL,
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
'Afdeling van Rayonleider kan niet gevonden worden ( Rayonleider:'
rec_ray.rayonl_mail
|| 'Afdeling van Rayonleider kan niet gevonden worden (Rayonleider: '
|| rec_ray.voornaam
|| ' - '
|| ' '
|| rec_ray.achternaam
|| ')',
'');
|| ', mail: '
|| v_email
|| ')'
|| v_errormsg,
v_error_hint);
END;
END LOOP;
@@ -9260,7 +9289,7 @@ BEGIN
1);
END LOOP;
DELETE prs_perslidwerkplek
DELETE prs_perslidwerkplek
WHERE prs_perslidwerkplek_key IN
(SELECT pwpg.prs_perslidwerkplek_key
FROM prs_v_perslidwerkplek_gegevens pwpg,
@@ -9274,7 +9303,7 @@ BEGIN
AND NOT EXISTS
(SELECT 1
FROM alg_onrgoedkenmerk a_proj,
alg_onrgoedkenmerk a_ray
alg_onrgoedkenmerk a_mail
WHERE a_proj.alg_onrgoed_key =
l.alg_locatie_key
AND a_proj.alg_onrgoed_niveau = 'L'
@@ -9283,24 +9312,16 @@ BEGIN
AND a_proj.alg_kenmerk_key = 1942
AND a_proj.alg_onrgoedkenmerk_waarde
IS NOT NULL
AND a_ray.alg_onrgoed_key =
AND a_mail.alg_onrgoed_key =
a_proj.alg_onrgoed_key
AND a_ray.alg_onrgoed_niveau = 'L'
AND a_ray.alg_onrgoedkenmerk_verwijder
AND a_mail.alg_onrgoed_niveau = 'L'
AND a_mail.alg_onrgoedkenmerk_verwijder
IS NULL
AND a_ray.alg_kenmerk_key = 1955
AND (SELECT pk.prs_kenmerklink_waarde
FROM prs_kenmerklink pk
WHERE pk.prs_kenmerklink_verwijder
IS NULL
AND pk.prs_kenmerk_key = 1120
AND p.prs_perslid_key =
pk.prs_link_key
AND pk.prs_kenmerklink_niveau =
'P') LIKE
'%'
|| a_ray.alg_onrgoedkenmerk_waarde
|| '%'));
AND a_mail.alg_kenmerk_key = 2140
AND a_mail.alg_onrgoedkenmerk_waarde
IS NOT NULL
AND LOWER(a_mail.alg_onrgoedkenmerk_waarde) =
LOWER(p.prs_perslid_email)));
COMMIT;
EXCEPTION
@@ -9308,11 +9329,12 @@ EXCEPTION
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (
NULL,
fac.writelog ('CSUN_UPDATE_AFASPROJECT',
'E',
'Fout tijdens importeren van onroerend goed (locatie en gebouw) ',
v_errormsg);
'Fout tijdens csun_update_afasproject: ',
oracle_err_mes);
END csun_update_afasproject;
/