AAXX#87553 -- Personenkoppeling Kenter - Werkpleksynchronisatie

svn path=/Customer/trunk/; revision=69043
This commit is contained in:
Jos Migo
2025-05-16 13:12:09 +00:00
parent 5d9c411d9a
commit cd8cb14797

View File

@@ -240,7 +240,6 @@ BEGIN
AND ROWNUM = 1);
-- Medewerkers van Kenter worden vanaf 6 november buiten de koppeling gehouden
-- SCRIPT NIET EERDER LEVEREN!!!!!!!!!!!!!
DELETE fac_imp_perslid WHERE LOWER(prs_perslid_email) LIKE '%kenter.nu';
DELETE fac_imp_perslid WHERE LOWER(prs_perslid_email) LIKE '%@alliander.onmicrosoft.com';
@@ -621,6 +620,253 @@ BEGIN
END;
/
-- functie om de Kenter-medewerkers de werkplek-koppelingen te geven op de Kenter-gerelateerde gebouwen (zie AAXX#87553)
CREATE OR REPLACE VIEW allr_v_export_kenter_wp
(
result,
result_order
)
AS
SELECT '"SYNC - Werkplekkoppelingen Kenter medewerkers"'
|| ';"Uitgevoerd"',
0
FROM DUAL
UNION
SELECT 'ERROR: Datum '|| TO_CHAR(imp_log_datum) || ' - ' || imp_log_omschrijving || ' - ' || imp_log_hint,
1
FROM imp_log
WHERE imp_log_applicatie = 'KENTER_WP' ;
CREATE OR REPLACE PROCEDURE allr_select_kenter_wp (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- specifiek
c_alg_bedrijf_key NUMBER (10) := 22421 ; -- bedrijf Kenter B.V.
c_alg_kenmerk_key NUMBER (10) := 1500 ; -- Kenmerk_key Kenter-gerelateerd-gebouw
c_prs_kenmerk_key NUMBER (10) := 1060 ; -- Kenmerk_key op personenkaart om de laatste sync-datum op weg te schrijven
v_upsert_sync NUMBER (1) ;
-- Werkplekkoppelingen toevoegen of verwijder
CURSOR c
IS
SELECT km.prs_perslid_key,
km.prs_perslid_email,
kw.alg_ruimte_key,
kw.alg_gebouw_key,
kw.alg_gebouw_naam,
kw.alg_locatie_key,
(SELECT w.prs_werkplek_key
FROM prs_werkplek w, prs_perslidwerkplek wp
WHERE wp.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = kw.alg_ruimte_key
AND wp.prs_perslid_key = km.prs_perslid_key)
prs_werkplek_key,
CASE
WHEN kw.alg_ruimte_key IN
(SELECT r.alg_ruimte_key
FROM prs_perslid p,
prs_srtperslid sp,
prs_perslidwerkplek wp,
prs_werkplek w,
alg_ruimte r,
alg_v_onrgoed_boom onr,
alg_locatie l
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = wp.prs_perslid_key
AND wp.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_ruimte_key = onr.alg_ruimte_key
AND onr.alg_locatie_key = l.alg_locatie_key
AND p.prs_perslid_key = km.prs_perslid_key
)
THEN
'OK'
ELSE
'TOEVOEGEN WP'
END actie
FROM (SELECT p.prs_perslid_key, p.prs_perslid_email
FROM prs_perslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = c_alg_bedrijf_key
AND p.prs_perslid_verwijder IS NULL
) km, -- alle kentermedewerkers
(SELECT k.alg_kenmerk_omschrijving,
v.alg_gebouw_key,
g.alg_gebouw_naam,
v.alg_ruimte_key,
g.alg_locatie_key
FROM alg_gebouw g,
alg_onrgoedkenmerk kw,
alg_kenmerk k,
( SELECT alg_gebouw_key, MIN (alg_ruimte_key) alg_ruimte_key
FROM alg_v_allonrgoed_gegevens
WHERE alg_ruimte_nr = '_WP'
GROUP BY alg_gebouw_key) v
WHERE g.alg_gebouw_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'G'
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = c_alg_kenmerk_key
AND g.alg_gebouw_key = v.alg_gebouw_key) kw -- alle kenter werkplekken
UNION
SELECT km.prs_perslid_key,
km.prs_perslid_email,
wp.alg_ruimte_key,
wp.alg_gebouw_key,
wp.alg_gebouw_naam,
wp.alg_locatie_key,
wp.prs_werkplek_key,
CASE
WHEN wp.alg_ruimte_key IN
(SELECT v.alg_ruimte_key
FROM alg_gebouw g,
alg_onrgoedkenmerk kw,
alg_kenmerk k,
( SELECT alg_gebouw_key,
MIN (alg_ruimte_key) alg_ruimte_key
FROM alg_v_allonrgoed_gegevens
WHERE alg_ruimte_nr = '_WP'
GROUP BY alg_gebouw_key) v
WHERE g.alg_gebouw_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'G'
AND kw.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key = c_alg_kenmerk_key
AND g.alg_gebouw_key = v.alg_gebouw_key) -- kw -- alle kenter werkplekken
THEN
'OK'
ELSE
'VERWIJDEREN WP'
END actie
FROM (SELECT p.prs_perslid_key, p.prs_perslid_email
FROM prs_perslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = c_alg_bedrijf_key
AND p.prs_perslid_verwijder IS NULL
) km, -- alle kentermedewerkers
( SELECT p.prs_perslid_key,
l.alg_locatie_key,
r.alg_ruimte_key,
g.alg_gebouw_key,
g.alg_gebouw_naam,
w.prs_werkplek_key
FROM prs_perslid p,
prs_srtperslid sp,
prs_perslidwerkplek wp,
prs_werkplek w,
alg_ruimte r,
alg_v_onrgoed_boom onr,
alg_locatie l,
alg_gebouw g
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = wp.prs_perslid_key
AND wp.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_ruimte_key = onr.alg_ruimte_key
AND onr.alg_locatie_key = l.alg_locatie_key
AND onr.alg_gebouw_key = g.alg_gebouw_key
ORDER BY wp.prs_perslid_key) wp
WHERE km.prs_perslid_key = wp.prs_perslid_key
ORDER BY 1, 3, 4;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_mes VARCHAR2 (200);
oracle_err_num NUMBER;
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR2 (1000);
v_count NUMBER;
BEGIN
v_count := 0;
FOR rec IN c
LOOP
BEGIN
-- Werkplekkoppelingen van de Kentergebouwen
v_aanduiding :=
'bijwerken werkplekkoppelingen kenter-medewerker - perslid_key:'
|| TO_CHAR (rec.prs_perslid_key);
v_upsert_sync := 0 ;
IF rec.actie = 'TOEVOEGEN WP'
THEN
v_errorhint :=
'actie toevoegen werkplek - gebouw_key: '
|| TO_CHAR (rec.alg_gebouw_key);
-- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0);
BEGIN
PRS.movetoruimte (rec.prs_perslid_key,
rec.alg_ruimte_key,
'G',
1);
v_upsert_sync := 1 ;
END;
END IF;
IF rec.actie = 'VERWIJDEREN WP'
THEN
v_errorhint :=
'actie verwijderen werkplek - gebouw_key: '
|| TO_CHAR (rec.alg_gebouw_key);
DELETE prs_werkplek
WHERE prs_werkplek_key = rec.prs_werkplek_key;
v_upsert_sync := 1 ;
END IF;
-- In personenkaart nog even vermelden wanneer deze vanuit de WP-sync voor het laatst zijn gemuteerd
IF v_upsert_sync = 1
THEN
PRS.upsertkenmerk (c_prs_kenmerk_key, rec.prs_perslid_key, TO_CHAR(sysdate, 'dd-mm-yyyy HH24:MI'));
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname,
'E',
v_aanduiding || ' - ' || v_errormsg,
v_errorhint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.writelog (p_applname,
'E',
v_errormsg,
v_aanduiding || ' - HINT: ' || v_errorhint);
END;
/
-------------------
-- Rapportages --
-------------------
@@ -1340,6 +1586,9 @@ CREATE OR REPLACE PROCEDURE allr_select_daily_task (p_applname IN VARCHAR2,
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
-- kenter - toevoegen gebouw-werkplekken
allr_select_kenter_wp ('KENTER_WP', SYSDATE) ;
END;
/