BLOS#79136 -- Procedure werkplekkoppelingen voor regiomanagers en -directeuren incl. kp-budgethouders
svn path=/Customer/trunk/; revision=61988
This commit is contained in:
366
BLOS/blos.sql
366
BLOS/blos.sql
@@ -248,11 +248,12 @@ EXCEPTION
|
||||
END;
|
||||
/
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
-- Systematiek Locatieleiders en Werkplekkoppelingen ---
|
||||
----- 1. Personenkaart vinlkboxen Cluster/Label - OUD ---
|
||||
----- 2. Locatiekaart en gekoppelde locatieleider - NIEUW 2023-juli ---
|
||||
-------------------------------------------------------------------------
|
||||
-----------------------------------------------------------------------------------
|
||||
-- Systematiek Locatieleiders en Regiomanagers en Werkplekkoppelingen ---
|
||||
----- 1. Personenkaart vinlkboxen Cluster/Label - OUD ---
|
||||
----- 2. Locatiekaart en gekoppelde locatieleider - NIEUW 2023-juli ---
|
||||
----- 3. Regiomanagers en directeuren incl. budgethouderschap - NIEUW 2023-okt ---
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
--------------------------------------------------------------------
|
||||
-- 2. Locatiekaart en gekoppelde locatieleider - NIEUW 2023-juli ---
|
||||
@@ -680,7 +681,362 @@ EXCEPTION
|
||||
END;
|
||||
/
|
||||
|
||||
-----------------------------------------------------------------------------------
|
||||
----- 3. Regiomanagers en directeuren incl. budgethouderschap - NIEUW 2023-okt ---
|
||||
-----------------------------------------------------------------------------------
|
||||
|
||||
-- Lijst van regiomanagers en directeuren en de locaties die onder hun cluster(district) en regio vallen
|
||||
CREATE OR REPLACE VIEW blos_v_regiomanagers
|
||||
(
|
||||
PRS_PERSLID_KEY,
|
||||
ALG_LOCATIE_KEY,
|
||||
REGIOMANAGER,
|
||||
LOCATIE,
|
||||
REGIODIRECTEUR,
|
||||
PRS_PERSLID_VERWIJDER
|
||||
)
|
||||
AS
|
||||
SELECT p.prs_perslid_key,
|
||||
l.alg_locatie_key,
|
||||
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving
|
||||
regiomanager,
|
||||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||||
locatie,
|
||||
CASE WHEN ok.alg_kenmerk_key = 1181 THEN 'ja' ELSE 'nee' END
|
||||
directeur,
|
||||
p.prs_perslid_verwijder
|
||||
FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l, alg_district d
|
||||
WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key
|
||||
AND ok.alg_kenmerk_key IN (1164, 1181) -- regiomanager en regiodirecteur
|
||||
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
|
||||
AND ok.alg_onrgoed_niveau = 'D' AND ok.alg_onrgoed_key = d.alg_district_key
|
||||
AND d.alg_district_key = l.alg_district_key
|
||||
AND l.alg_locatie_verwijder IS NULL
|
||||
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
|
||||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key ;
|
||||
|
||||
-- Lijst van Regiomanagers + Regio-directeuren en de Werkplekkoppeling die ze in hun personenkaart hebben
|
||||
CREATE OR REPLACE VIEW blos_v_regiomanagers_wp
|
||||
(
|
||||
PRS_PERSLID_KEY,
|
||||
ALG_LOCATIE_KEY,
|
||||
NAAM,
|
||||
LOCATIE_WP,
|
||||
PRS_WERKPLEK_KEY
|
||||
)
|
||||
AS
|
||||
SELECT wp.prs_perslid_key,
|
||||
onr.alg_locatie_key,
|
||||
p.prs_perslid_naam_friendly,
|
||||
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
|
||||
locatie,
|
||||
w.prs_werkplek_key
|
||||
FROM (
|
||||
SELECT prs_perslid_key
|
||||
FROM (SELECT *
|
||||
FROM blos_v_personenlijst_clus
|
||||
UNION
|
||||
SELECT *
|
||||
FROM blos_v_personenlijst_dir
|
||||
) x
|
||||
GROUP BY x.prs_perslid_key
|
||||
) v,
|
||||
prs_v_perslid_fullnames p, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l
|
||||
WHERE v.prs_perslid_key = p.prs_perslid_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
|
||||
ORDER BY wp.prs_perslid_key
|
||||
;
|
||||
|
||||
CREATE OR REPLACE VIEW blos_v_export_wp_loc_regioman
|
||||
(
|
||||
result,
|
||||
result_order
|
||||
)
|
||||
AS
|
||||
SELECT '"SYNC - Werkplekkoppeling Locatiemanager (incl. zijn/haar Mandaten)"'
|
||||
|| ';"Uitgevoerd"',
|
||||
0
|
||||
FROM DUAL ;
|
||||
|
||||
CREATE OR REPLACE PROCEDURE blos_select_wp_loc_regioman (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2)
|
||||
AS
|
||||
-- Werkplekkoppelingen toevoegen
|
||||
CURSOR c_loc_wp -- Voor updaten van regiomanagers en - directeuren (werkplek-koppelingen)
|
||||
IS
|
||||
SELECT v.prs_perslid_key,
|
||||
v.alg_locatie_key,
|
||||
v.prs_werkplek_key,
|
||||
v.actie
|
||||
FROM (SELECT man.prs_perslid_key,
|
||||
man.alg_locatie_key,
|
||||
NULL prs_werkplek_key,
|
||||
'toevoegen' actie
|
||||
FROM blos_v_regiomanagers man -- WAS: blos_v_locatiemanagers man WORDT: blos_v_regiomanagers man
|
||||
WHERE NOT EXISTS
|
||||
(SELECT *
|
||||
FROM blos_v_regiomanagers_wp wp -- WAS: blos_v_locatiemanagers_wp wp WORDT: blos_v_regiomanagers_wp wp
|
||||
WHERE wp.alg_locatie_key =
|
||||
man.alg_locatie_key
|
||||
AND wp.prs_perslid_key =
|
||||
man.prs_perslid_key)
|
||||
UNION
|
||||
SELECT wp.prs_perslid_key,
|
||||
wp.alg_locatie_key,
|
||||
wp.prs_werkplek_key,
|
||||
'verwijderen' actie
|
||||
FROM blos_v_regiomanagers_wp wp
|
||||
WHERE NOT EXISTS
|
||||
(SELECT *
|
||||
FROM blos_v_regiomanagers man
|
||||
WHERE man.alg_locatie_key =
|
||||
wp.alg_locatie_key
|
||||
AND man.prs_perslid_key =
|
||||
wp.prs_perslid_key)
|
||||
UNION
|
||||
SELECT wp.prs_perslid_key,
|
||||
wp.alg_locatie_key,
|
||||
wp.prs_werkplek_key,
|
||||
'ok' actie
|
||||
FROM blos_v_regiomanagers_wp wp,
|
||||
blos_v_regiomanagers man
|
||||
WHERE man.alg_locatie_key = wp.alg_locatie_key
|
||||
AND man.prs_perslid_key = wp.prs_perslid_key) v
|
||||
ORDER BY 1, 2, 3;
|
||||
|
||||
CURSOR c_loc_kp -- Voor updaten van regiomanagers en directeuren (mandaten op kostenplaatsen en voor regiomanagers ook budgethouders-schap)
|
||||
IS
|
||||
SELECT w.prs_perslid_key, w.alg_locatie_key, w.prs_kostenplaats_key,
|
||||
CASE WHEN f1.prs_perslid_key IS NOT NULL THEN 'regiomanager'
|
||||
WHEN f2.prs_perslid_key IS NOT NULL THEN 'regio-directeur'
|
||||
ELSE ''
|
||||
END
|
||||
functie
|
||||
FROM ( SELECT v_prs.prs_perslid_key,
|
||||
v_prs.alg_locatie_key,
|
||||
v_kp.prs_kostenplaats_key
|
||||
FROM blos_v_regiomanagers v_prs, blos_v_locaties_kp v_kp
|
||||
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
|
||||
GROUP BY v_prs.prs_perslid_key,
|
||||
v_prs.alg_locatie_key,
|
||||
v_kp.prs_kostenplaats_key) w,
|
||||
blos_v_personenlijst_clus f1 , -- regiomanagers
|
||||
blos_v_personenlijst_dir f2 -- regiodirecteuren
|
||||
WHERE w.prs_perslid_key = f1.prs_perslid_key(+)
|
||||
AND w.prs_perslid_key = f2.prs_perslid_key(+)
|
||||
ORDER BY 1, 2, 3;
|
||||
|
||||
CURSOR c_loc_kp_del -- Voor deleten van mandaten die niet meer van toepassing zijn
|
||||
IS
|
||||
SELECT pk.prs_perslid_key, pk.prs_perslidkostenplaats_key
|
||||
FROM prs_perslidkostenplaats pk
|
||||
WHERE NOT EXISTS
|
||||
( SELECT v_prs.prs_perslid_key,
|
||||
v_kp.prs_kostenplaats_key
|
||||
FROM blos_v_regiomanagers v_prs,
|
||||
blos_v_locaties_kp v_kp
|
||||
WHERE v_prs.alg_locatie_key =
|
||||
v_kp.alg_locatie_key
|
||||
AND v_prs.prs_perslid_key = pk.prs_perslid_key
|
||||
AND v_kp.prs_kostenplaats_key =
|
||||
pk.prs_kostenplaats_key
|
||||
GROUP BY v_prs.prs_perslid_key,
|
||||
v_kp.prs_kostenplaats_key)
|
||||
AND pk.prs_perslid_key IN ( SELECT prs_perslid_key
|
||||
FROM blos_v_regiomanagers
|
||||
GROUP BY prs_perslid_key)
|
||||
ORDER BY 1, 2;
|
||||
|
||||
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;
|
||||
|
||||
|
||||
v_alg_ruimte_key NUMBER;
|
||||
v_prs_perslidkostenplaats_key NUMBER (10);
|
||||
v_prs_perslid_key NUMBER (10);
|
||||
|
||||
BEGIN
|
||||
v_count := 0;
|
||||
|
||||
FOR rec IN c_loc_wp
|
||||
LOOP
|
||||
BEGIN
|
||||
-- Werkplekkoppelingen op basis van de locaties die onder het cluster/district of regio vallen waar men regiomanager/directeur van is
|
||||
v_aanduiding :=
|
||||
'bijwerken werkplekkoppelingen regiomanager/directeur - perslid_key:'
|
||||
|| TO_CHAR (rec.prs_perslid_key);
|
||||
|
||||
IF rec.actie = 'toevoegen'
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'actie toevoegen werkplek - loc-key: '
|
||||
|| TO_CHAR (rec.alg_locatie_key);
|
||||
|
||||
BEGIN
|
||||
SELECT MIN (r.alg_ruimte_key)
|
||||
INTO v_alg_ruimte_key
|
||||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||||
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
||||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||||
AND r.alg_ruimte_verwijder IS NULL
|
||||
AND v.alg_verdieping_verwijder IS NULL
|
||||
AND g.alg_gebouw_verwijder IS NULL
|
||||
AND g.alg_locatie_key = rec.alg_locatie_key;
|
||||
|
||||
IF v_alg_ruimte_key IS NOT NULL
|
||||
THEN
|
||||
-- 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,
|
||||
v_alg_ruimte_key,
|
||||
'L',
|
||||
1);
|
||||
END;
|
||||
END IF;
|
||||
END;
|
||||
END IF;
|
||||
|
||||
IF rec.actie = 'verwijderen'
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'actie verwijderen werkplek - loc-key: '
|
||||
|| TO_CHAR (rec.alg_locatie_key);
|
||||
|
||||
DELETE prs_werkplek
|
||||
WHERE prs_werkplek_key = rec.prs_werkplek_key;
|
||||
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;
|
||||
|
||||
FOR rec IN c_loc_kp
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
-- kostenplaatsen en budgethouders - voor regiomanagers het budgethouderschap op kostenplaats updaten indien nodig
|
||||
v_aanduiding :=
|
||||
'bijwerken budgethouder regiomanager/directeur - perslid_key '
|
||||
|| TO_CHAR (rec.prs_perslid_key);
|
||||
|
||||
|
||||
IF rec.functie = 'regiomanager'
|
||||
THEN
|
||||
|
||||
-- check eers of er nu afwijkende budgethouder op KP zit. Zo ja updaten
|
||||
SELECT prs_perslid_key
|
||||
INTO v_prs_perslid_key
|
||||
FROM prs_kostenplaats
|
||||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||||
AND prs_kostenplaats_verwijder IS NULL
|
||||
AND (prs_kostenplaats_eind IS NULL OR prs_kostenplaats_eind > TRUNC(SYSDATE) )
|
||||
AND prs_kostenplaats_module = 'PRS' ;
|
||||
|
||||
IF v_prs_perslid_key IS NULL OR v_prs_perslid_key <> rec.prs_perslid_key
|
||||
THEN
|
||||
|
||||
v_errorhint :=
|
||||
'bijwerken budgethouder op kostenplaats - kostenplaats_key '
|
||||
|| TO_CHAR (rec.prs_kostenplaats_key);
|
||||
|
||||
UPDATE prs_kostenplaats
|
||||
SET prs_perslid_key = rec.prs_perslid_key
|
||||
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
|
||||
|
||||
-- Geen fac_tracking nodig. Mutatie wordt namelijk al via trigger met aud.auditaction weggeschreven
|
||||
|
||||
END IF;
|
||||
|
||||
END IF;
|
||||
|
||||
-- kostenplaatsen en mandaat - alle mandaten voor regiomanagers en directeuren van hun onderliggende locaties doorvoeren
|
||||
v_aanduiding :=
|
||||
'bijwerken mandaten regiomanager/directeur - perslid_key '
|
||||
|| TO_CHAR (rec.prs_perslid_key);
|
||||
|
||||
|
||||
-- Alle mandaten goed inregelen
|
||||
SELECT prs_perslidkostenplaats_key
|
||||
INTO v_prs_perslidkostenplaats_key
|
||||
FROM prs_perslidkostenplaats
|
||||
WHERE prs_perslid_key = rec.prs_perslid_key
|
||||
AND prs_kostenplaats_key = rec.prs_kostenplaats_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
v_prs_perslidkostenplaats_key := NULL;
|
||||
|
||||
IF v_prs_perslidkostenplaats_key IS NULL
|
||||
THEN
|
||||
v_errorhint :=
|
||||
'bijwerken kostenplaats-mandaat - kostenplaat_key '
|
||||
|| TO_CHAR (rec.prs_kostenplaats_key);
|
||||
|
||||
|
||||
INSERT INTO prs_perslidkostenplaats (
|
||||
prs_perslidkostenplaats_boeken,
|
||||
prs_perslidkostenplaats_inzage,
|
||||
prs_perslid_key,
|
||||
prs_kostenplaats_key)
|
||||
VALUES (1,
|
||||
1,
|
||||
rec.prs_perslid_key,
|
||||
rec.prs_kostenplaats_key);
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
FOR rec IN c_loc_kp_del
|
||||
LOOP
|
||||
BEGIN
|
||||
-- opschonen mandaten die niet meer geldig zijn
|
||||
v_aanduiding :=
|
||||
'verwijderen mandaten regiomanager/directeur - perslid_key:'
|
||||
|| TO_CHAR (rec.prs_perslid_key);
|
||||
v_errorhint := 'verwijderen mandaten die niet meer geldig zijn';
|
||||
|
||||
DELETE FROM prs_perslidkostenplaats
|
||||
WHERE prs_perslidkostenplaats_key =
|
||||
rec.prs_perslidkostenplaats_key;
|
||||
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_errorhint);
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user