IMPU#70628 -- Implementatie Facilitor bij Impuls Kinderopvang - Diverse afrondende zaken (rapportage, prs-import)

svn path=/Customer/trunk/; revision=55898
This commit is contained in:
Jos Migo
2022-05-15 16:26:57 +00:00
parent 4bbedf90dd
commit 6381438448

View File

@@ -138,8 +138,173 @@ BEGIN
END;
/
-------------------------------
--- DOMEIN-VIEWS --------------
-------------------------------
CREATE OR REPLACE PROCEDURE impu_import_perslid (p_import_key IN NUMBER)
CREATE OR REPLACE VIEW impu_v_kostenplaatsen
(
KEY,
NR,
OMSCHRIJVING
)
AS
SELECT
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
omschrijving
FROM
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE
kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND kp.prs_kostenplaats_verwijder IS NULL
AND (kp.prs_kostenplaats_eind IS NULL OR kp.prs_kostenplaats_eind > TRUNC(SYSDATE) )
AND kp.prs_kostenplaats_module = 'ALG'
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
;
-- Voor keuzelijstjes (kenmerk domein)
CREATE OR REPLACE VIEW impu_v_personenlijst
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 21 -- bedrijfs_key IMPULS
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT')
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Locatiemanagers + Regiomanagers (tbv domeinview)
CREATE OR REPLACE VIEW impu_v_personenlijst_loc
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 21 -- bedrijfs_key IMPULS
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND (INSTR(UPPER(sp.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0) -- ACTIE: TITELS UIT AFAS ZIJN = Locatiemanager + Locatiemanager IKC + Regiomanager
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Locatiemanagers + Regiomanagers en de locaties waar men verantwoordelijk is (tbv personen-import)
CREATE OR REPLACE VIEW impu_v_locatiemanagers
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY,
LOCATIEMANAGER,
LOCATIE,
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
locatiemanager,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
locatie,
p.prs_perslid_verwijder
FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l
WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key
AND ok.alg_kenmerk_key IN (1016,1018) -- locatiemanagers en Regiomanagers
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND ok.alg_onrgoed_niveau = 'L' AND ok.alg_onrgoed_key = l.alg_locatie_key
AND (l.alg_locatie_verwijder IS NULL OR l.alg_locatie_vervaldatum > TRUNC(SYSDATE) )
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
GROUP BY p.prs_perslid_key, l.alg_locatie_key,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving,
p.prs_perslid_verwijder
;
-- Lijst van Locatiemanagers + Regiomanagers en de Werkplekkoppeling die ze in hun persoonskaart hebben
CREATE OR REPLACE VIEW impu_v_locatiemanagers_wp
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY,
LOCATIEMANAGER,
LOCATIE_WP
)
AS
SELECT wp.prs_perslid_key,
onr.alg_locatie_key,
v.naam,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
locatie
FROM impu_v_personenlijst_loc v, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l
WHERE v.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 impu_v_ict_nummers
(
INS_DEEL_KEY,
INS_DEEL_UPPER
)
AS
SELECT
v.ins_deel_key,
v.ins_deel_upper
FROM ins_v_deel_gegevens v, ins_deel d
WHERE v.ins_discipline_key = 62 -- ICT-Nummers
AND v.ins_deel_key = d.ins_deel_key
AND d.ins_deel_verwijder IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ;
CREATE OR REPLACE PROCEDURE impu_import_afasonline (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
@@ -149,7 +314,8 @@ AS
-- overige variabelen
v_prs_afdeling_key NUMBER(10);
c_prs_afdeling_key NUMBER(10) := 62 ; -- Fallback-afdeling 'ONBEKEND_IMPU'
c_prs_afdeling_key NUMBER(10) := 22 ; -- Fallback-afdeling 'OVERIG voor Medewerkers Impuls'
c_prs_afdeling_key_leid NUMBER(10) := 21 ; -- Afdeling waaronder Locatiemanagers en Regiomanagers komen te vallen
v_alg_locatie_key NUMBER(10);
v_alg_locatie_code VARCHAR2(10);
v_alg_gebouw_key NUMBER(10);
@@ -162,7 +328,7 @@ AS
CURSOR c_afd
IS
SELECT fac_imp_file_index, prs_kenmerk1, prs_afdeling_naam
SELECT fac_imp_file_index, prs_kenmerk1, prs_afdeling_naam, prs_srtperslid_omschrijving
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key ;
@@ -174,17 +340,6 @@ IS
BEGIN
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
v_errorhint := 'Delimiter goed zetten';
UPDATE fac_imp_file
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
WHERE fac_import_key = p_import_key;
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
UPDATE fac_imp_file
SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
WHERE fac_import_key = p_import_key;
v_errorhint := 'Generieke update';
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
@@ -192,14 +347,15 @@ BEGIN
---
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;1;1;0;3;'
|| '0;0;0;0;0;0;0;5;0;9;'
|| '1;0;0;0;0;0;7;4;6;8;'
|| '2;0;0;0;0;0;0;0;0;0;'
'0;0;0;0;0;0;1;2;3;5;'
|| '4;0;0;0;0;0;0;6;0;8;'
|| '7;0;0;0;0;0;9;10;11;12;'
|| '0;13;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Country;UserPrincipalName;GivenName;Surname;Mail;JobTitle;Department;PhysicalDeliveryOfficeName;EmployeeId%');
-- Country;UserPrincipalName;GivenName;Surname;Mail;JobTitle;Department;PhysicalDeliveryOfficeName;EmployeeId
-- DEF. BESTAND bij IMPULS : "Country","UserPrincipalName","GivenName","Surname","Mail","JobTitle","Department","PhysicalDeliveryOfficeName","EmployeeId"
'Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;Mail werk;Functie;Medewerker;Organisatorische eenheid;Kostenplaats_oms;In dienst;Uit dienst;Soort medewerker%');
-- 1 (7) 2 (8) 3 (9) 4 (11) 5 (10) 6 (18) 7 (21) 8(20) 9 (27) 10 (28) 11 (29) 12 (30) 13 (32)
-- DEF: Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;Mail werk;Functie;Medewerker;Organisatorische eenheid;Kostenplaats_oms;In dienst;Uit dienst;Soort medewerker
v_errorhint := 'Login afleiden van emailadres';
-- Loginnaam afleiden van emailadres
@@ -215,61 +371,68 @@ BEGIN
0,
INSTR (prs_perslid_email, '@') - 1))) <=30 ;
v_errorhint := 'Delete record op basis klantregels';
-- Delete uit AD IMPULS - Opschoning NODIG ??
/*DELETE fac_imp_perslid
WHERE UPPER (prs_kenmerk3) IN ('GEDEELD POSTVAK','GENERIEK ACCOUNT', 'OC', 'RVT', 'RESOURCES') OR prs_kenmerk3 IS NULL;
v_errorhint := 'Uitfilteren records'; -- in afasonline-bestand zitten aantal zaken die niet mee hoeven naar Facilitor
---- functie gevuld met PROFIT dan record delete
---- emailadres <leeg> en emailadres <> @impuls.nl dan record delete
DELETE fac_imp_perslid
WHERE UPPER (prs_srtperslid_omschrijving) IN ('PROFIT');
DELETE fac_imp_perslid
WHERE UPPER (prs_kenmerk5) NOT LIKE '%SINNEKINDEROPVANG.NL';
*/
v_errorhint := 'Functie goed vullen';
-- Functie is niet altijd gevuld, eerst gevuld met Gebruikerslocatie, nu vullen met kenmerk3 (of 'Onbekend').
UPDATE fac_imp_perslid
SET prs_srtperslid_omschrijving =
DECODE (prs_kenmerk3, NULL, 'Onbekend', prs_kenmerk3);
v_errorhint := 'Naam goed vullen';
-- Naam is niet altijd gevuld, eerst gevuld met Gebruikerslocatie, nu vullen met kenmerk2 (of 'Algemeen').
UPDATE fac_imp_perslid
SET prs_perslid_naam =
DECODE (prs_kenmerk2, NULL, 'Algemeen', prs_kenmerk2);
WHERE UPPER (prs_perslid_email) NOT LIKE '%@IMPULS.NL';
v_errorhint := 'Afdeling bepalen en vullen';
-- Afdeling bepalen waar persoon onder komt te vallen
-- Afdeling bepalen waar persoon onder komt te vallen.
-- Voor locatiemanagers en regiomanagers geldt dat deze altijd op organisatie 'OPVANG' moeten komen (onder dit organisatieonderdeel zitten op niveau 2 de team/afdelingen/kostenplaatsen)
FOR rec IN c_afd
LOOP
BEGIN
v_errorhint := 'Persoon aan Afdeling koppelen';
SELECT min(prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_v_afdeling
WHERE UPPER(prs_afdeling_naam) = UPPER(rec.prs_kenmerk1)
AND prs_bedrijf_key = 21 -- bedrijf IMPULS - !!!!!!!!
AND prs_afdeling_verwijder IS NULL ;
IF v_prs_afdeling_key IS NOT NULL THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = v_prs_afdeling_key)
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
ELSE
-- Als locatie/regio-managerleider dan afdeling altijd LOCATIE (c_prs_afdeling_key_leid)
IF INSTR(UPPER(rec.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(rec.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key)
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key_leid)
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
ELSE
SELECT min(a.prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_v_afdeling a, prs_kostenplaats kp
WHERE kp.prs_kostenplaats_upper = UPPER(rec.prs_afdeling_naam)
AND a.prs_bedrijf_key = 21 -- bedrijf IMPULS
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key ;
-- Als afdeling uit AFAS (nog) niet bekend is in Facilitor dan medewerker op afdeling OVERIG zetten
IF v_prs_afdeling_key IS NULL THEN
-- kenmerk5 vullen zodat deze AFAS-kostenplaats-waarde wel in personenkaart kan landen
UPDATE fac_imp_perslid
SET prs_kenmerk5 = prs_afdeling_naam
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
-- op afdeling OVERIG zetten
UPDATE fac_imp_perslid
SET prs_afdeling_naam = (SELECT prs_afdeling_upper FROM prs_afdeling WHERE prs_afdeling_key = c_prs_afdeling_key)
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
END IF;
END IF;
END;
END LOOP;
END LOOP;
v_errorhint := 'Locatie bepalen en vullen';
-- Default Locatie / Standplaats bepalen voor persoon
-- Default Locatie / Standplaats bepalen voor persoon => ACTIE - Indien gewenst dan kan dit voor IMPULS nog netjes via de kostenplaatsen in de Locatiekaart ingepast worden
/*
FOR rec IN c_loc
LOOP
BEGIN
@@ -371,6 +534,7 @@ BEGIN
END;
END LOOP;
*/
COMMIT;
@@ -384,36 +548,87 @@ EXCEPTION
'E',
v_errormsg,
v_errorhint);
END impu_import_perslid;
END impu_import_afasonline;
/
CREATE OR REPLACE PROCEDURE impu_update_perslid (p_import_key IN NUMBER)
CREATE OR REPLACE PROCEDURE impu_update_afasonline (p_import_key IN NUMBER)
IS
-- Alle personen verwijderen die niet meer in het import bestand voorkomen
-- Alle personen verwijderen die niet meer in het import bestand voorkomen.
-- Teamaccounts (functie 'Teamaccount' laten we ongemoeid)
-- Personen in de juiste autorisatiegroep zetten.
-- Match bij SINNE KINDEROPVANG is Email.
-- Geen acties tenzij het aantal records in de importtabel meer dan 50 medewerkers betreft.
-- Match bij IMPULS KINDEROPVANG kan via Email of Personeelsnummer.
-- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft.
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
FROM prs_perslid p, prs_v_perslid_fullnames pf
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving
FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a
WHERE UPPER (p.prs_perslid_email) LIKE '%IMPULS.NL'
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- Impuls Kinderopvang
AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_upper NOT IN 'TEAMACCOUNT'
AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid WHERE INSTR(UPPER (p.prs_perslid_email),UPPER (prs_perslid_email) ) > 0 )
AND pf.prs_perslid_key = p.prs_perslid_key ;
ORDER BY 1 ;
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
IS
SELECT p.prs_perslid_key, i.prs_kenmerk4
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 1;
CURSOR c_loc -- Voor updaten van locatieleiders (in eigen autorisatiegroep)
IS
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving
FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a
WHERE UPPER (p.prs_perslid_email) LIKE '%IMPULS.NL'
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- Impuls
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND (INSTR(UPPER(sp.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0 )
AND p.prs_perslid_oslogin IS NOT NULL
ORDER BY 1 ;
CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen)
IS
SELECT v.prs_perslid_key, v.alg_locatie_key, v.actie
FROM
(
SELECT man.prs_perslid_key, man.alg_locatie_key, 'toevoegen' actie
FROM impu_v_locatiemanagers man
WHERE NOT EXISTS
(SELECT *
FROM impu_v_locatiemanagers_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, 'verwijderen' actie
FROM impu_v_locatiemanagers_wp wp
WHERE NOT EXISTS
(SELECT *
FROM impu_v_locatiemanagers 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, 'ok' actie
FROM impu_v_locatiemanagers_wp wp, impu_v_locatiemanagers man
WHERE man.alg_locatie_key = wp.alg_locatie_key
AND man.prs_perslid_key = wp.prs_perslid_key
) v
ORDER BY v.prs_perslid_key, v.alg_locatie_key
;
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_fac_gebruikersgroep_key NUMBER(10);
v_alg_ruimte_key NUMBER;
v_prs_werkplek_key NUMBER;
BEGIN
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
@@ -446,10 +661,106 @@ BEGIN
FOR rec IN c_flex
LOOP
BEGIN
v_errorhint:='Fout bijwerken kenmerkveld4 - Standplaats';
PRS.upsertkenmerk (1020, rec.prs_perslid_key, rec.prs_kenmerk4); -- IN PRODUCTIE KEY = 1020
v_errorhint:='Fout bijwerken kenmerkveld1 - OE-Standplaats Afas';
PRS.upsertkenmerk (1001, rec.prs_perslid_key, rec.prs_kenmerk1);
v_errorhint:='Fout bijwerken kenmerkveld2 - Kostenplaats_oms';
PRS.upsertkenmerk (1002, rec.prs_perslid_key, rec.prs_kenmerk2);
v_errorhint:='Fout bijwerken kenmerkveld3 - DatumInDienst';
PRS.upsertkenmerk (1004, rec.prs_perslid_key, rec.prs_kenmerk3);
v_errorhint:='Fout bijwerken kenmerkveld4 - DatumUitDienst';
PRS.upsertkenmerk (1005, rec.prs_perslid_key, rec.prs_kenmerk4);
v_errorhint:='Fout bijwerken kenmerkveld5 - Kostenplaats';
PRS.upsertkenmerk (1003, rec.prs_perslid_key, rec.prs_kenmerk5);
v_errorhint:='Fout bijwerken kenmerkveld5 - Soort Medewerker';
PRS.upsertkenmerk (1006, rec.prs_perslid_key, rec.prs_kenmerk6);
END;
END LOOP;
FOR rec IN c_loc
LOOP
BEGIN
-- Alle locatiemanagers toevoegen aan eigen autorisatiegroep'
v_errorhint:='Fout bijwerken locatiemanagers in eigen autorisatiegroep';
BEGIN
SELECT fac_gebruikersgroep_key
INTO v_fac_gebruikersgroep_key
FROM fac_gebruikersgroep
WHERE fac_groep_key = 22 -- Groep 'Locatie- en Regiomanagers'
AND prs_perslid_key = rec.prs_perslid_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key,
prs_perslid_key)
VALUES (22, rec.prs_perslid_key);
END;
END;
END LOOP;
FOR rec IN c_loc_wp
LOOP
BEGIN
IF rec.actie = 'toevoegen'
THEN
v_errorhint:='Fout bij toevoegen werkplekken';
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:='Fout bij verwijderen werkplekken';
SELECT prs_werkplek_key
INTO v_prs_werkplek_key
FROM prs_v_perslidwerkplek_gegevens pwpg, alg_locatie l
WHERE pwpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_locatie_key = rec.alg_locatie_key
AND pwpg.prs_perslid_key = rec.prs_perslid_key ;
DELETE prs_werkplek WHERE prs_werkplek_key = v_prs_werkplek_key;
END IF;
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
@@ -470,64 +781,76 @@ EXCEPTION
'E',
v_errormsg,
v_errorhint);
END impu_update_perslid;
END impu_update_afasonline;
/
-- Voor keuzelijstjes (kenmerk domein)
CREATE OR REPLACE VIEW impu_v_personenlijst
(
KEY,
NAAM,
PERSONEELSNUMMER
)
AS
SELECT
p.prs_perslid_key,
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
naam,
p.prs_perslid_nr
FROM
prs_perslid p,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 81 -- bedrijfs_key IMPULS
-- AND p.prs_perslid_voornaam !='TEAM' -- Voor team-accounts
ORDER BY p.prs_perslid_naam
;
CREATE OR REPLACE VIEW impu_v_personenlijst_wijkmanager
(
KEY,
NAAM,
PERSONEELSNUMMER
)
AS
SELECT
p.prs_perslid_key,
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
naam,
p.prs_perslid_nr
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 81 -- bedrijfs_key IMPULS
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND UPPER(sp.prs_srtperslid_omschrijving) = 'WIJKMANAGER'
ORDER BY p.prs_perslid_naam
;
-------------------------------
--- RAPPORTAGES ---------------
-------------------------------
-- ICT-nummer - beheer
CREATE OR REPLACE VIEW impu_v_ict_nummers_man
(
ICT_NUMMER,
PROVIDER,
STATUS,
ICT_OBJECT,
GEKOPPELD_AAN_TYPE,
GEKOPPELD_AAN,
NR_INS_DEEL_KEY,
OBJ_INS_DEEL_KEY
)
AS
SELECT
nr.ins_deel_upper,
impu_get_kenmerk('INS',42, nr.ins_deel_key) provider,
CASE WHEN d.ins_deel_upper IS NOT NULL THEN 'Gekoppeld' ELSE 'Vrij' END
status,
d.ins_deel_upper,
d.gekoppeld_aan_type,
d.gekoppeld_aan,
nr.ins_deel_key,
d.ins_deel_key
FROM (SELECT v.ins_deel_key,
v.ins_deel_upper
FROM ins_v_deel_gegevens v, ins_deel d
WHERE v.ins_discipline_key = 62 -- ICT-Nummers
AND v.ins_deel_key = d.ins_deel_key
AND d.ins_deel_verwijder IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) )
) nr,
(SELECT d.ins_deel_key,
d.ins_deel_upper,
kw.ins_kenmerkdeel_waarde,
num.ins_deel_upper as nummer_gekoppeld,
DECODE(d.ins_alg_ruimte_type, 'R', 'Locatie',
'A', 'Afdeling',
'P', 'Persoon/Teamaccount',
'')
gekoppeld_aan_type,
v.alg_plaatsaanduiding,
DECODE(d.ins_alg_ruimte_type, 'R', l.alg_locatie_omschrijving, v.alg_plaatsaanduiding)
gekoppeld_aan
FROM ins_deel d,
ins_kenmerkdeel kw,
ins_kenmerk k,
ins_deel num,
ins_v_deel_gegevens v,
alg_locatie l
WHERE d.ins_deel_key = kw.ins_deel_key
AND kw.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 6
AND kw.ins_kenmerkdeel_verwijder IS NULL
AND fac.safe_to_number (kw.ins_kenmerkdeel_waarde) =
num.ins_deel_key
AND d.ins_deel_key = v.ins_deel_key
AND d.ins_alg_locatie_key = l.alg_locatie_key(+)
) d
WHERE
nr.ins_deel_upper = d.nummer_gekoppeld(+) ;
-- Rapportage Gebouwbeheer
CREATE OR REPLACE VIEW IMPU_V_ALG_ONROERENDGOED
(
@@ -537,6 +860,9 @@ CREATE OR REPLACE VIEW IMPU_V_ALG_ONROERENDGOED
LOCATIE_KEY,
GEBOUW,
-- gegevens uit locatiekaart
LOCATIEMANAGER,
REGIOMANAGER,
CONTACT_TOELICHTING,
GEBRUIKSRECHT,
DIENST_AFVAL,
DIENST_SCHOONMAAK,
@@ -545,9 +871,6 @@ CREATE OR REPLACE VIEW IMPU_V_ALG_ONROERENDGOED
KDV,
VO,
BSO,
KDV_LRK,
VO_LRK,
BSO_LRK,
--
VERDIEPING,
RUIMTENR,
@@ -563,6 +886,9 @@ AS
l.alg_locatie_key,
v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam
gebouw,
km.locatiemanager,
km.regiomanager,
km.contact_toelichting,
km.gebruiksrecht,
km.dienst_afval,
km.dienst_schoonmaak,
@@ -571,31 +897,28 @@ AS
km.kdv,
km.vo,
km.bso,
km.kdv_lrk,
km.vo_lrk,
km.bso_lrk,
v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code
verdieping,
v.alg_ruimte_nr,
v.alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
r.alg_ruimte_bruto_vloeropp,
impu_get_kenmerk('ALG',1000, r.alg_ruimte_key) vloersoort
impu_get_kenmerk('ALG',1040, r.alg_ruimte_key) vloersoort
FROM alg_v_onroerendgoed_gegevens v,
alg_locatie l,
alg_district d,
(SELECT l.alg_locatie_key,
impu_get_kenmerk('ALG',1022, l.alg_locatie_key) gebruiksrecht,
impu_get_kenmerk('ALG',1024, l.alg_locatie_key) dienst_afval,
impu_get_kenmerk('ALG',1025, l.alg_locatie_key) dienst_schoonmaak,
impu_get_kenmerk('ALG',1026, l.alg_locatie_key) dienst_telefonie,
impu_get_kenmerk('ALG',1083, l.alg_locatie_key) eigenaarschap_toelichting,
impu_get_kenmerk('ALG',1002, l.alg_locatie_key) KDV,
impu_get_kenmerk('ALG',1003, l.alg_locatie_key) VO,
impu_get_kenmerk('ALG',1004, l.alg_locatie_key) BSO,
impu_get_kenmerk('ALG',1080, l.alg_locatie_key) KDV_LRK,
impu_get_kenmerk('ALG',1081, l.alg_locatie_key) VO_LRK,
impu_get_kenmerk('ALG',1082, l.alg_locatie_key) BSO_LRK
impu_get_kenmerk('ALG',1016, l.alg_locatie_key) locatiemanager,
impu_get_kenmerk('ALG',1018, l.alg_locatie_key) regiomanager,
impu_get_kenmerk('ALG',1019, l.alg_locatie_key) contact_toelichting,
impu_get_kenmerk('ALG',1005, l.alg_locatie_key) gebruiksrecht,
impu_get_kenmerk('ALG',1007, l.alg_locatie_key) dienst_afval,
impu_get_kenmerk('ALG',1008, l.alg_locatie_key) dienst_schoonmaak,
impu_get_kenmerk('ALG',1009, l.alg_locatie_key) dienst_telefonie,
impu_get_kenmerk('ALG',1011, l.alg_locatie_key) eigenaarschap_toelichting,
impu_get_kenmerk('ALG',1001, l.alg_locatie_key) KDV,
impu_get_kenmerk('ALG',1002, l.alg_locatie_key) VO,
impu_get_kenmerk('ALG',1003, l.alg_locatie_key) BSO
FROM alg_locatie l ) km,
alg_ruimte r,
alg_srtruimte sr
@@ -607,6 +930,117 @@ AS
AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+)
ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_ruimte_nr
;
CREATE OR REPLACE VIEW impu_v_rap_opdrachten_intern
(
TYPE,
MLD_OPDR_KEY,
MLD_UITVOERENDE_KEY,
OPDRACHTNR,
OPDRACHT_DATUM,
STATUS,
MELDING,
BEHANDELAAR,
LOCATIE_PLAATS,
LOCATIE_OMSCHRIJVING,
GEPLANDE_AANVANG,
OMSCHRIJVING,
PRS_PERSLID_KEY,
NAAM_UITVOERDER,
AFMELD_DATUM,
OPDRACHT_TYPE,
TD_NAAM,
FILTERSTATUS,
FILTERSTATUS_TD
)
AS
SELECT CASE
WHEN mu.TYPE = 'B' THEN 'Poule-opdracht'
WHEN mu.TYPE = 'P' THEN 'Klus-opdracht'
ELSE '<?>'
END
TYPE,
o.mld_opdr_key,
CASE
WHEN mu.TYPE = 'B' THEN o.prs_perslid_key
WHEN mu.TYPE = 'P' THEN mu.mld_uitvoerende_key
ELSE NULL
END
mld_uitvoerende_key,
TO_CHAR (o.mld_melding_key)
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
opdrachtnummer,
o.mld_opdr_datumbegin,
DECODE (
os.mld_statusopdr_key,
8, DECODE (o.mld_opdr_halted,
1, 'Onderbroken',
os.mld_statusopdr_omschrijving),
os.mld_statusopdr_omschrijving)
status,
std.mld_stdmelding_omschrijving,
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>'), -- BEHANDELAAR
l.alg_locatie_plaats,
CASE WHEN m.mld_alg_onroerendgoed_keys IS NOT NULL
THEN l.alg_locatie_omschrijving || ' - ' || COALESCE(onr.alg_gebouw_naam, onr.alg_terreinsector_naam)
ELSE l.alg_locatie_omschrijving
END
locatie_omschrijving,
COALESCE(o.mld_opdr_plandatum, o.mld_opdr_einddatum)
geplande_aanvang,
TRIM (
REGEXP_REPLACE (
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
'(([^ ]*)( |$)*){10}'),
'[[:space:]]',
' '))
|| '...',
p.prs_perslid_key,
mu.naam,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key = 74), -- ORDAFM
ot.mld_typeopdr_omschrijving,
CASE
WHEN mu.TYPE = 'B' THEN COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
WHEN mu.TYPE = 'P' THEN mu.naam
ELSE '<?>'
END TD_NAAM,
(CASE
WHEN o.mld_opdr_flag>0 THEN Lcl.L('lcl_opdr_flag' || o.mld_opdr_flag)
ELSE ''
END) filterstatus,
(SELECT ud.fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk km, fac_usrdata ud
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = km.mld_kenmerk_key
AND fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key
AND ud.fac_usrtab_key = 22 -- domeinview filterstatus
AND ko.mld_kenmerk_key = 11) -- filterstatus TD
filterstatus_td
FROM mld_opdr o,
mld_melding m,
mld_typeopdr ot,
prs_v_perslid_fullnames p,
ins_tab_discipline d,
mld_stdmelding std,
alg_locatie l,
alg_v_onroerendgoed_gegevens onr,
mld_v_uitvoerende mu,
mld_statusopdr os
WHERE o.mld_melding_key = m.mld_melding_key(+)
AND o.prs_perslid_key = p.prs_perslid_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
AND os.mld_statusopdr_key = o.mld_statusopdr_key
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys (+)
AND mu.intern = 1;
------ payload end ------