BLOS#68339 -- Clusterindeling herzien - Procedure werkplekkoppeling en Rapportages

svn path=/Customer/trunk/; revision=55254
This commit is contained in:
Jos Migo
2022-03-10 09:27:48 +00:00
parent 197f9cd55d
commit 1f68003cc0

View File

@@ -248,8 +248,8 @@ CREATE OR REPLACE VIEW blos_v_cluster_locaties
ALG_LOCATIE_KEY,
ALG_LOCATIE_CODE,
ALG_LOCATIE_OMSCHRIJVING,
CLUSTER_CODE,
CLUSTER_LABEL,
CLUSTER_DISTRICT_CODE, -- Districtsniveau
CLUSTER_LABEL_CODE, -- Locatieniveau - Het (oorspronkelijke) label
TYPE_LOCATIE,
RUIMTE_KEY,
VERVALDATUM
@@ -268,7 +268,7 @@ SELECT l.alg_locatie_key,
AND fac.safe_to_number (km.alg_onrgoedkenmerk_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 1)
AS cluster_label,
AS cluster_label_code,
(SELECT ud.fac_usrdata_upper
FROM alg_onrgoedkenmerk km, fac_usrdata ud
WHERE km.alg_onrgoed_key = l.alg_locatie_key
@@ -283,57 +283,85 @@ SELECT l.alg_locatie_key,
FROM alg_v_allonrgoed_gegevens v
WHERE v.alg_locatie_key = l.alg_locatie_key and v.alg_type ='R')
AS ruimte_key,
COALESCE(trunc(l.alg_locatie_vervaldatum),trunc(sysdate)+1)
l.alg_locatie_vervaldatum
vervaldatum
FROM alg_locatie l, alg_district d
WHERE l.alg_locatie_verwijder IS NULL AND l.alg_district_key = d.alg_district_key
AND COALESCE(trunc(l.alg_locatie_vervaldatum),trunc(sysdate)+1) > trunc(sysdate) ;
-- Hulpview Personen - Alle locatiemanagers onder REGMAN
---- Alles onder locatie (niveau 1) REGMAN-Regiomanagement
---- Per persoon de AFDELING (= CLUSTER-code) + De kostenplaats en de bovenliggende kostenplaats_groep (= tevens ook CLUSTER-code)
---- PRS_perslid_key || Organisatie_CODE || Kostenplaats_Code || Kostenplaats_Groep_CODE
CREATE OR REPLACE VIEW blos_v_cluster_personen
-- Hulpview Personen - Alle locatiemanagers/personen met werkplekkoppelingen
-- NIEUWE opzet van de werkplekkoppeling - Aansturing via PERSONENKAART (zie ticket BLOS#68339).
--- Toelichting:
---- Je hebt LABELS op Locatieniveau + Op Districts-niveau
---- Niveau 1 = Kenmerk PRS => Te koppelen met NAAM label uit Eigen Tabel
---- Niveau 2 = Kenmerk PRS => Te koppelen met CODE/NAAM uit Districtstabel
CREATE OR REPLACE VIEW blos_v_cluster_personen_1
(
NIVEAU,
PRS_PERSLID_KEY,
PRS_PERSLID_VOLLEDIGENAAM,
PRS_AFDELING_UPPER, -- is CLUSTER_CODE
PRS_AFDELING_OMSCHRIJVING,
PRS_AFDELING_PARENT,
PRS_AFDELING_PARENT_OMS,
PRS_KOSTENPLAATS_KEY,
PRS_KOSTENPLAATS_UPPER,
PRS_KOSTENPLAATS_OMSCHRIJVING,
PRS_KOSTENPLAATSGRP_OMS -- is CLUSTER_CODE
PRS_KENMERK_UPPER,
CLUSTER_WP
)
AS
SELECT p.prs_perslid_key,
SELECT '1 - locatie',
p.prs_perslid_key,
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam,
v.prs_afdeling_upper,
v.prs_afdeling_omschrijving,
ap.prs_afdeling_upper,
ap.prs_afdeling_omschrijving,
vkp.prs_kostenplaats_key,
vkp.prs_kostenplaats_upper,
vkp.prs_kostenplaats_omschrijving,
vkp.prs_kostenplaatsgrp_oms
k.prs_kenmerk_upper,
v.cluster_label_code -- uit eigen tabel
cluster_wp
FROM prs_perslid p,
prs_v_aanwezigafdeling v,
prs_afdeling ap,
(SELECT kp.prs_kostenplaats_key,
kp.prs_kostenplaats_upper,
kp.prs_kostenplaats_omschrijving,
kpg.prs_kostenplaatsgrp_oms
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
WHERE kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND prs_kostenplaats_verwijder IS NULL
AND kp.prs_kostenplaats_module = 'PRS') vkp
WHERE p.prs_afdeling_key = v.prs_afdeling_key
AND v.prs_afdeling_parentkey = ap.prs_afdeling_key
AND ap.prs_afdeling_key = 34 -- REGMAN als PARENT_KEY (alles onder de Regiomanagement tonen en in procedure bewaken/herzien
AND p.prs_perslid_verwijder is null
AND v.prs_kostenplaats_key = vkp.prs_kostenplaats_key(+)
ORDER BY v.prs_afdeling_upper, p.prs_perslid_naam ;
prs_kenmerklink kl,
prs_kenmerk k,
(SELECT UPPER (ud.fac_usrdata_omschr) cluster_label, ud.fac_usrdata_code cluster_label_code,
ud.fac_usrdata_vervaldatum
FROM fac_usrtab ut, fac_usrdata ud
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key
AND ut.fac_usrtab_key = 1
AND fac_usrdata_verwijder IS NULL) v
WHERE p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerklink_niveau = 'P'
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_kenmerk_key = k.prs_kenmerk_key
AND k.prs_kenmerk_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL
AND k.prs_kenmerk_upper = v.cluster_label -- Koppeling op Clusternaam
AND NOT EXISTS (SELECT 1 FROM blos_v_cluster_locaties WHERE k.prs_kenmerk_upper = cluster_district_code GROUP BY cluster_district_code)
UNION
SELECT '2 - district',
p.prs_perslid_key,
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam,
k.prs_kenmerk_upper,
v.cluster_district_code
cluster_wp
FROM prs_perslid p,
prs_kenmerklink kl,
prs_kenmerk k,
(SELECT cluster_district_code, COUNT (*)
FROM blos_v_cluster_locaties
GROUP BY cluster_district_code) v
WHERE p.prs_perslid_key = kl.prs_link_key AND kl.prs_kenmerklink_niveau = 'P'
AND kl.prs_kenmerklink_verwijder IS NULL
AND kl.prs_kenmerk_key = k.prs_kenmerk_key
AND k.prs_kenmerk_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL
AND k.prs_kenmerk_upper = v.cluster_district_code -- Koppeling op Districtnaam/code
;
CREATE OR REPLACE VIEW blos_v_cluster_personen_2
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY
)
AS
SELECT p.prs_perslid_key, l.alg_locatie_key
FROM blos_v_cluster_personen_1 p, blos_v_cluster_locaties l
WHERE p.niveau = '1 - locatie' AND p.cluster_wp = l.cluster_label_code
UNION
SELECT p.prs_perslid_key, l.alg_locatie_key
FROM blos_v_cluster_personen_1 p, blos_v_cluster_locaties l
WHERE p.niveau = '2 - district'
AND p.cluster_wp = l.cluster_district_code ;
--- DE PROCEDURE om voor de Locatiemanagers van de CLUSTERS de juiste CLUSTER-LOCATIES te koppelen als werkplek
CREATE OR REPLACE PROCEDURE blos_export_wpcluster (
@@ -343,40 +371,37 @@ CREATE OR REPLACE PROCEDURE blos_export_wpcluster (
AS
CURSOR c_nieuw
IS
SELECT cp.prs_perslid_key, cp.prs_perslid_volledigenaam, cl.alg_locatie_key, cl.alg_locatie_code, cl.alg_locatie_omschrijving, cl.cluster_label
FROM blos_v_cluster_locaties cl, blos_v_cluster_personen cp
WHERE cl.cluster_label = cp.prs_afdeling_upper
SELECT p.prs_perslid_key, p.alg_locatie_key, l.alg_locatie_code, l.cluster_label_code, l.cluster_district_code
FROM blos_v_cluster_personen_2 p, blos_v_cluster_locaties l
WHERE p.alg_locatie_key = l.alg_locatie_key
AND NOT EXISTS
(SELECT v.alg_locatie_key
FROM prs_perslidwerkplek wp, prs_v_werkplekafdeling_geg v
WHERE wp.prs_perslidwerkplek_key =
v.prs_perslidwerkplek_key
AND wp.prs_perslid_key = cp.prs_perslid_key
AND v.alg_locatie_key = cl.alg_locatie_key);
AND wp.prs_perslid_key = p.prs_perslid_key
AND v.alg_locatie_key = p.alg_locatie_key) ;
CURSOR c_del
IS
SELECT b.prs_perslid_key, b.alg_locatie_key, cl.alg_locatie_code, cl.alg_locatie_omschrijving, cl.cluster_label, b.prs_perslidwerkplek_key
FROM blos_v_cluster_locaties cl,
(SELECT wp.prs_perslid_key,
v.alg_locatie_key,
wp.prs_perslidwerkplek_key,
v.prs_werkplek_key,
v.prs_werkplek_volgnr,
v.alg_ruimte_key
SELECT b.prs_perslid_key, b.alg_locatie_key, b.prs_perslidwerkplek_key, COALESCE(l.alg_locatie_code, 'Vervallen locactie ' || loc.alg_locatie_code) alg_locatie_code, l.cluster_label_code, l.cluster_district_code
FROM (SELECT wp.prs_perslid_key,
v.alg_locatie_key,
wp.prs_perslidwerkplek_key,
v.prs_werkplek_key,
v.prs_werkplek_volgnr,
v.alg_ruimte_key
FROM prs_perslidwerkplek wp, prs_v_werkplekafdeling_geg v
WHERE wp.prs_perslidwerkplek_key = v.prs_perslidwerkplek_key) b
WHERE b.alg_locatie_key = cl.alg_locatie_key
AND NOT EXISTS
(SELECT cl.alg_locatie_key
FROM blos_v_cluster_locaties cl, blos_v_cluster_personen cp
WHERE cl.cluster_label = cp.prs_afdeling_upper
AND cp.prs_perslid_key = b.prs_perslid_key
AND cl.alg_locatie_key = b.alg_locatie_key)
AND EXISTS
(SELECT cp.prs_perslid_key
FROM blos_v_cluster_personen cp
WHERE cp.prs_perslid_key = b.prs_perslid_key);
WHERE wp.prs_perslidwerkplek_key = v.prs_perslidwerkplek_key) b,
blos_v_cluster_locaties l,
alg_locatie loc
WHERE b.alg_locatie_key = l.alg_locatie_key (+)
AND b.alg_locatie_key = loc.alg_locatie_key
AND NOT EXISTS
(SELECT l.alg_locatie_key
FROM blos_v_cluster_personen_2 l
WHERE l.prs_perslid_key = b.prs_perslid_key
AND l.alg_locatie_key = b.alg_locatie_key) ;
v_ruimte_key NUMBER;
v_prs_werkplek_volgnr NUMBER;
@@ -385,7 +410,7 @@ AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_mes VARCHAR2 (200);
oracle_err_num NUMBER;
oracle_err_num NUMBER;
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR2 (1000);
v_count NUMBER;
@@ -398,7 +423,7 @@ BEGIN
LOOP
v_aanduiding :=
'Werkplekkoppeling: ' || rec.alg_locatie_code || ' (' || rec.cluster_label || ')' ;
'Werkplekkoppeling: ' || rec.alg_locatie_code || ' (' || rec.cluster_label_code || ' - ' || rec.cluster_district_code || ')' ;
v_errormsg := 'Fout bij aanmaken werkplekkoppeling';
-- Ruimte_key ophalen van desbetreffende locatie_keten
@@ -415,7 +440,7 @@ BEGIN
v_aanduiding);
END IF;
v_errorhint := 'INSERT clusterkoppeling bij persoon: ' || rec.alg_locatie_code || ' / ' || rec.prs_perslid_volledigenaam;
v_errorhint := 'INSERT clusterkoppeling bij persoon: ' || rec.alg_locatie_code || ' / ' || rec.prs_perslid_key;
IF v_ruimte_key IS NOT NULL THEN
@@ -432,11 +457,7 @@ BEGIN
FROM prs_werkplek WHERE prs_alg_ruimte_key = v_ruimte_key AND prs_werkplek_volgnr = v_prs_werkplek_volgnr ;
INSERT INTO prs_perslidwerkplek(prs_perslidwerkplek_bezetting, prs_perslidwerkplek_volgnr, prs_werkplek_key, prs_perslid_key) -- prs_perslidwerkplek_key)
VALUES (100, NULL, v_prs_werkplek_key, rec.prs_perslid_key) ; -- 82) ;
-- UPDATE prs_perslid p
-- SET prs_perslid_telefoonnr = rec.nummer_object
-- WHERE p.prs_perslid_key = rec.prs_perslid_key ;
VALUES (100, NULL, v_prs_werkplek_key, rec.prs_perslid_key) ;
fac.trackaction (
'PRSUPD',
@@ -452,12 +473,12 @@ BEGIN
FOR rec IN c_del
LOOP
v_aanduiding :=
'Werkplekkoppeling verwijderen - betreft: ' || rec.alg_locatie_code || ' (' || rec.cluster_label || ')' ;
'Werkplekkoppeling verwijderen - betreft: ' || rec.alg_locatie_code || ' (' || rec.cluster_label_code || ' - ' || rec.cluster_district_code || ')' ;
v_errorhint := 'werkplekkoppeling verwijderen';
DELETE FROM prs_werkplek WHERE prs_werkplek_key IN (SELECT prs_werkplek_key FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key) ;
DELETE FROM PRS_PERSLIDWERKPLEK WHERE PRS_PERSLIDWERKPLEK_key = rec.prs_perslidwerkplek_key ;
DELETE FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key ;
fac.trackaction (
'PRSUPD',
@@ -481,7 +502,6 @@ EXCEPTION
v_errormsg,
v_errorhint);
END;
/
@@ -513,7 +533,7 @@ AS
|| ' - '
|| v.alg_locatie_omschrijving
|| ' van '
|| v.cluster_code,
|| v.cluster_label_code,
'CUST01',
m.prs_perslid_key,
NULL
@@ -530,30 +550,33 @@ AS
AND p.prs_perslid_verwijder IS NULL) m
WHERE
v.ruimte_key IS NULL
and v.cluster_code IS NOT NULL ;
and v.cluster_label_code IS NOT NULL ;
-- Hook functie die na het invoeren van een melding aangeroepen wordt.
-- Hook functie die na het saven (mld_postsave) van een melding aangeroepen wordt.
CREATE OR REPLACE PROCEDURE blos_mld_after_insert (p_key IN NUMBER)
AS
v_locatie_key NUMBER;
v_kenmerk_waarde VARCHAR (100);
v_kenmerk_waarde_cluster VARCHAR (100);
v_kenmerk_waarde_key NUMBER (10);
v_mld_kenmerkmelding_key NUMBER (10);
v_mld_kenmerkmelding_waarde VARCHAR (100);
v_errormsg VARCHAR2 (100);
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
BEGIN
v_errormsg := 'Ophalen meldinggegevens';
SELECT m.mld_alg_locatie_key
INTO v_locatie_key
FROM mld_melding m
WHERE mld_melding_key = p_key;
WHERE mld_melding_key = p_key AND mld_stdmelding_key NOT IN (1) ; -- Niet voor M2M-meldingen
IF v_locatie_key IS NOT NULL
THEN
BEGIN
SELECT ud.fac_usrdata_omschr
INTO v_kenmerk_waarde
-- Ophalen waarde Cluster bij Locatie vastgelegd
SELECT ud.fac_usrdata_omschr, ud.fac_usrdata_key
INTO v_kenmerk_waarde_cluster, v_kenmerk_waarde_key
FROM alg_locatie l, alg_onrgoedkenmerk k, alg_kenmerk km, fac_kenmerkdomein kd, fac_usrdata ud
WHERE l.alg_locatie_key = v_locatie_key
AND l.alg_locatie_key = k.alg_onrgoed_key AND alg_onrgoed_niveau = 'L' AND k.alg_kenmerk_key = 1000 -- Clusterlabel (oorspronkelijk)
@@ -564,24 +587,87 @@ CREATE OR REPLACE PROCEDURE blos_mld_after_insert (p_key IN NUMBER)
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_kenmerk_waarde := NULL;
v_kenmerk_waarde_cluster := NULL;
v_kenmerk_waarde_key := NULL;
END;
IF v_kenmerk_waarde IS NOT NULL
BEGIN
-- Is het kenmerk al eerder weggeschreven op de melding?
SELECT km.mld_kenmerkmelding_key, km.mld_kenmerkmelding_waarde
INTO v_mld_kenmerkmelding_key, v_mld_kenmerkmelding_waarde
FROM mld_melding m, mld_kenmerkmelding km
WHERE m.mld_melding_key = p_key
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = 221 -- Clusterlabel (oorspronkelijk)
AND km.mld_kenmerkmelding_verwijder IS NULL ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_mld_kenmerkmelding_key := NULL;
END;
-- Toevoegen kenmerk-record als waarde gevuld en er nog geen record is aangemaakt
IF v_kenmerk_waarde_cluster IS NOT NULL AND v_mld_kenmerkmelding_key IS NULL
THEN
BEGIN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (p_key, 221, v_kenmerk_waarde) ;
VALUES (p_key, 221, v_kenmerk_waarde_cluster) ;
END;
END IF;
END IF;
-- Aanpassen kenmerk-record als de locatie is omgezet op de melding
IF v_kenmerk_waarde_cluster IS NOT NULL AND v_mld_kenmerkmelding_key IS NOT NULL AND v_mld_kenmerkmelding_waarde <> v_kenmerk_waarde_cluster
THEN
BEGIN
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = v_kenmerk_waarde_cluster
WHERE mld_kenmerkmelding_key = v_mld_kenmerkmelding_key;
END;
END IF;
END IF;
END;
END;
END;
END blos_mld_after_insert;
/
CREATE OR REPLACE VIEW blos_v_rap_ruimteketen_check
AS
SELECT l.alg_locatie_code,
g.alg_gebouw_omschrijving,
v.alg_verdieping_volgnr,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
r.alg_ruimte_nr,
r.alg_ruimte_verwijder
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND ( v.alg_verdieping_volgnr <> 0
OR alg_verdieping_omschrijving <> 'Verdieping 0'
OR alg_ruimte_nr <> CHR (95))
AND l.alg_locatie_verwijder IS NULL
AND l.alg_locatie_vervaldatum IS NULL
AND v.alg_verdieping_verwijder IS NULL
AND r.alg_ruimte_verwijder IS NULL;
CREATE OR REPLACE VIEW blos_v_rap_locatie_labels
AS
SELECT cluster_label_code label_oorspronkelijk, COUNT (*) aantal_locaties
FROM blos_v_cluster_locaties
GROUP BY cluster_label_code;
CREATE OR REPLACE VIEW blos_v_rap_locatie_clusters
AS
SELECT cluster_district_code cluster_district, COUNT (*) aantal_locaties
FROM blos_v_cluster_locaties
GROUP BY cluster_district_code;
CREATE OR REPLACE VIEW blos_v_rap_opdrachten_intern
(