Files
Customer/IMPU/impu.sql
2025-12-04 15:04:43 +00:00

2207 lines
92 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'impu.SQL'
DEFINE dbuser = 'IMPU'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
-------------------------------
--- DOMEIN-VIEWS --------------
-------------------------------
CREATE OR REPLACE VIEW impu_v_locatielijst
(
ALG_LOCATIE_KEY,
ALG_LOCATIE_OMSCHRIJVING,
ALG_LOCATIE_ADRES,
ALG_LOCATIE_VERWIJDER
)
AS
SELECT
l.alg_locatie_key,
l.alg_locatie_omschrijving,
l.alg_locatie_adres,
l.alg_locatie_verwijder
FROM
alg_locatie l
;
CREATE OR REPLACE VIEW impu_v_kostenplaatsen
(
KEY,
NR,
OMSCHRIJVING,
OMSCHRIJVING_KPG,
KOSTENPLAATS_EINDDATUM
)
AS
SELECT
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
omschrijving,
kpg.prs_kostenplaatsgrp_oms,
kp.prs_kostenplaats_eind
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 kpg.prs_kostenplaatsgrp_key NOT IN (41) -- Alle GMK-bedrijf kostenplaatsen met uitzondering van STWT (key 41)
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
;
CREATE OR REPLACE VIEW impu_v_kostenplaatsen_stwt
(
KEY,
NR,
OMSCHRIJVING,
OMSCHRIJVING_KPG,
KOSTENPLAATS_EINDDATUM
)
AS
SELECT
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
omschrijving,
kpg.prs_kostenplaatsgrp_oms,
kp.prs_kostenplaats_eind
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 kpg.prs_kostenplaatsgrp_key IN (41) -- Kostenplaatsgroep STWT
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
;
-- Voor keuzelijstjes (kenmerk domein)
--- Personen onder de GMK-bedrijven
CREATE OR REPLACE VIEW impu_v_personenlijst
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL,
BEDRIJFSNAAM
)
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,
b.prs_bedrijf_naam
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 p.prs_srtperslid_key = sp.prs_srtperslid_key
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT')
AND b.prs_bedrijf_key IN (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 1040 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL) -- GMK-BEDRIJF
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Voor keuzelijstjes (kenmerk domein)
--- Personen onder bedrijf STWT (stichting westelijke tuinsteden
CREATE OR REPLACE VIEW impu_v_personenlijst_stwt
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL,
BEDRIJFSNAAM
)
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,
b.prs_bedrijf_naam
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 p.prs_srtperslid_key = sp.prs_srtperslid_key
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT')
AND b.prs_bedrijf_key = 13722
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Locatiemanagers + Regiomanagers + Tijdelijke waarnemers (tbv domeinview)
--- Personen onder de GMK-bedrijven die je aan locaties kunt koppelen
CREATE OR REPLACE VIEW impu_v_personenlijst_loc
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL,
BEDRIJFSNAAM
)
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,
b.prs_bedrijf_naam
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 IN (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 1040 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL)
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND (INSTR(UPPER(sp.prs_srtperslid_omschrijving),'DIVISIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIODIRECTEUR') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'TEAMLEIDER') > 0) -- Titels uit AFAS die meelopen in Locatiemanager-verhaal zijn: Locatiemanager + Locatiemanager IKC + Regiomanager + Teamleider
AND p.prs_perslid_verwijder IS NULL
UNION
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email,
b.prs_bedrijf_naam
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b,
prs_kenmerklink kl
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key IN (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 1040 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL)
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1021 -- kenmerk waarnemer (vinkbox)
AND kl.prs_kenmerklink_waarde = '1' AND kl.prs_kenmerklink_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL ;
-- Lijst van STWT-mensen die locatieverantwoordelijk zijn (tbv domeinview)
--- Personen onder STWT-bedrijf en die je aan locaties kunt koppelen
CREATE OR REPLACE VIEW impu_v_personenlijst_loc_stwt
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL,
BEDRIJFSNAAM
)
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,
b.prs_bedrijf_naam
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b,
prs_kenmerklink kl
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 13722
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1160 -- kenmerk locatieverantwoordelijke STWT(vinkbox)
AND p.prs_perslid_verwijder IS NULL
;
-- Lijst van Locatiemanagers + Regiomanagers/Direceurenen de locaties waar men verantwoordelijk is (tbv personen-import) omdat ze in de locatie-kaart gekoppeld zijn
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, 1180, 1200) -- locatiemanagers en Regiomanagers en locatiemanager-2 en -3
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 (tbv personen-import)
CREATE OR REPLACE VIEW impu_v_locatiemanagers_wp
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY,
NAAM,
LOCATIE_WP,
PRS_WERKPLEK_KEY,
BEDRIJFSNAAM
)
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,
v.bedrijfsnaam
FROM (
SELECT prs_perslid_key, bedrijfsnaam
FROM impu_v_personenlijst_loc
GROUP BY prs_perslid_key, bedrijfsnaam
) 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 ;
-- BRONVIEW: Alle locaties met haar kostenplaats(en)
CREATE OR REPLACE VIEW impu_v_locaties_kp
(
alg_locatie_key,
alg_locatie_omschrijving,
vinkje_kdv,
vinkje_vo,
vinkje_bso,
vinkje_welzijn,
vinkje_ssc,
kostenplaats_opvangsoort,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
locatie_status
)
AS
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats kdv' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1021 -- kostenplaats-1
UNION
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats vo' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1022 -- kostenplaats-2
UNION
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats bso' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1023 -- kostenplaats-3
UNION
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats vo2' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1080 -- kostenplaats-4
UNION
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats welzijn' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1120 -- kostenplaats-4
UNION
SELECT alg_locatie_key,
alg_locatie_omschrijving,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') vinkje_kdv,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') vinkje_vo,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') vinkje_bso,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') vinkje_welzijn,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') vinkje_ssc,
'kostenplaats ssc' kostenplaats_opvangsoort,
kw.alg_onrgoedkenmerk_waarde prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_eind,
prs_kostenplaats_verwijder,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_locatie l, alg_onrgoedkenmerk kw, prs_kostenplaats kp
WHERE kw.alg_onrgoed_key = l.alg_locatie_key
AND fac.safe_to_number (kw.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND alg_onrgoed_niveau = 'L'
AND kw.alg_kenmerk_key = 1140 -- kostenplaats-5
;
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);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_fclt NUMBER;
-- overige variabelen
v_prs_afdeling_key NUMBER (10);
c_prs_afdeling_key_leid NUMBER (10) := 21; -- Afdeling waaronder Locatiemanagers en Regiomanagers komen te vallen
c_prs_afdeling_key_gmk NUMBER (10) := 22; -- Algemene medewerkersafdeling GMK
c_prs_afdeling_key_akros NUMBER (10) := 1101; -- Algemene medewerkersafdeling Akros
c_prs_afdeling_key_combi NUMBER (10) := 1102; -- Algemene medewerkersafdeling Combiwel
c_prs_afdeling_key_impuls NUMBER (10) := 1141; -- Algemene medewerkersafdeling Impu
v_alg_locatie_key NUMBER (10);
v_alg_locatie_code VARCHAR2 (10);
v_alg_gebouw_key NUMBER (10);
v_alg_gebouw_code VARCHAR2 (12);
v_alg_verdieping_key NUMBER (10);
v_alg_verdieping_volgnr NUMBER (3);
v_alg_ruimte_key NUMBER (10);
v_alg_ruimte_nr VARCHAR2 (20);
CURSOR c_afd
IS
SELECT fac_imp_file_index,
prs_kenmerk1,
prs_afdeling_naam,
CASE WHEN INSTR(UPPER(prs_perslid_email), '@IMPULS.NL') > 0 THEN 'IMPULS'
WHEN INSTR(UPPER(prs_perslid_email), '@GMK.NL') > 0 THEN 'GMK'
WHEN INSTR(UPPER(prs_perslid_email), '@AKROS-AMSTERDAM.NL') > 0 THEN 'AKROS'
WHEN INSTR(UPPER(prs_perslid_email), '@COMBIWELVOORKINDEREN.NL') > 0 THEN 'COMBIWEL'
ELSE 'GMK'
END
bedrijf,
prs_srtperslid_omschrijving
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key;
CURSOR c_tel
IS
SELECT p.fac_imp_file_index,
p.prs_perslid_email,
pp.prs_perslid_telefoonnr
FROM fac_imp_perslid p, prs_perslid pp
WHERE p.prs_perslid_email = pp.prs_perslid_email
AND pp.prs_perslid_telefoonnr IS NOT NULL ;
CURSOR c_loc
IS
SELECT fac_imp_file_index, prs_kenmerk5 -- kostenplaatsnr afas...
FROM fac_imp_perslid
WHERE prs_kenmerk5 IS NOT NULL
AND fac_import_key = p_import_key
ORDER BY fac_imp_file_index ;
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';
-- WORDT 2025-MRT
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;1;2;3;5;'
|| '4;0;0;0;0;0;20;6;0;8;'
|| '7;0;0;0;0;0;9;10;11;12;'
|| '1;13;14;15;16;17;18;19;20;0;'
|| '0;0;0;0;0;0',
'Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;E-Mail_werk;Omschrijving_Functie;Medewerker;Organisatorische_eenheid_omschrijving;Kostenplaats_2;Datum_in_dienst;Datum_uit_dienst;Soort_medewerker;Soort_medewerker__Code_obv_medewerkertaal_;Organisatorische_eenheid;Leidinggevende_pers_nr;Leidinggevende_Naam;Werkgever;Naam_werkgever;Mobiel_werk');
-- AFASONLINE: "Kostenplaats";"Achternaam";"Voorvoegsel";"Voorletters";"Roepnaam";"E-Mail_werk";"Omschrijving_Functie";"Medewerker";"Organisatorische_eenheid_omschrijving";"Kostenplaats_2";"Datum_in_dienst";"Datum_uit_dienst";"Soort_medewerker";"Soort_medewerker__Code_obv_medewerkertaal_";"Organisatorische_eenheid";"Leidinggevende_pers_nr";"Leidinggevende_Naam";"Werkgever";"Naam_werkgever";"Mobiel_werk"
-- 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) 14 (33) 15 (34) 16 (35) 17 (36) 18 (37) 19 (38) 20 (39)
-- DEF: Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;Mail werk;Functie;Medewerker;Organisatorische eenheid;Kostenplaats_oms;In dienst;Uit dienst;Soort medewerker;Soort_medewerker__Code_obv_medewerkertaal_;Organisatorische_eenheid;Leidinggevende_pers_nr;Leidinggevende_Naam;Werkgever;Naam_werkgever;Mobiel_werk
v_errorhint := 'Login afleiden van emailadres';
-- Loginnaam afleiden van emailadres
UPDATE fac_imp_perslid
SET prs_perslid_oslogin =
UPPER (
(SUBSTR (prs_perslid_email,
0,
INSTR (prs_perslid_email, '@') - 1)))
WHERE prs_perslid_email IS NOT NULL ;
v_errorhint := 'Uitfilteren records'; -- in afasonline-bestand zitten aantal zaken die niet mee hoeven naar Facilitor
---- functie gevuld met PROFIT dan record delete
DELETE fac_imp_perslid
WHERE UPPER (prs_srtperslid_omschrijving) IN ('PROFIT');
---- we nemen uit afas alleen de bedrijven/domeinen mee van impuls, gmk, akros en combiwel
DELETE fac_imp_perslid
WHERE (
UPPER (prs_perslid_email) NOT LIKE '%@IMPULS.NL'
AND
UPPER (prs_perslid_email) NOT LIKE '%@GMK.NL'
AND
UPPER (prs_perslid_email) NOT LIKE '%@AKROS-AMSTERDAM.NL'
AND
UPPER (prs_perslid_email) NOT LIKE '%@COMBIWELVOORKINDEREN.NL'
)
;
v_errorhint := 'Afdeling bepalen en vullen';
-- Afdeling bepalen waar persoon onder komt te vallen.
-- Voor locatiemanagers, regiomanagers, teamleider en divisiemanager, geldt dat deze altijd op 'LOCATIE_MAN' moeten komen
-- Voor de overige personen/accounts geldt:
---- De mederwerkers komen uit AFAS en hebben een kostenplaats uit AFAS. Als in Facilitor er een afdeling is aangemaakt met dit gekoppelde kostenplaats_nr dan koppelen we de persoon ook aan die afdeling.
------ indien er op de medewerker geen kostenplaats-afdeling gevonden is, dan wordt deze medewerker onder zijn bedrijf op standaard afdeling gezet: MEDEW_AKROS / MEDEW_COMBIW / MEDEW_IMPULS / MEDEW_GMK
---- De teamaccounts lopen niet via de afas-koppeling. Voor volledigheid, deze komen op eigen TEAM_code onder Eigen bedrijf
FOR rec IN c_afd
LOOP
BEGIN
v_errorhint := 'Persoon aan Afdeling koppelen';
-- 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
OR INSTR (UPPER (rec.prs_srtperslid_omschrijving),
'TEAMLEIDER') >
0
OR INSTR (UPPER (rec.prs_srtperslid_omschrijving),
'DIVISIEMANAGER') >
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_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 IN (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 1040 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL) -- bedrijven GMK
AND a.prs_afdeling_verwijder IS NULL
AND a.niveau = 1 -- kijken alleen naar afdelingen op niveau 1
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key;
-- Als afdeling/kostenplaats uit AFAS bekend is in Facilitor dan medewerker op die afdeling zetten
IF v_prs_afdeling_key IS NOT NULL
THEN
-- op de Facilitor-kp-afdeling zetten
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;
END IF;
-- Als afdeling uit AFAS (nog) niet bekend is in Facilitor dan medewerkers GMK, AKROS, COMBIWEL op hun algemene medewerkers-afdeling zetten
IF v_prs_afdeling_key IS NULL
THEN
-- op algemene medewerkers-afdeling zetten
IF rec.bedrijf = 'GMK'
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key_gmk)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
IF rec.bedrijf = 'IMPULS'
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key_impuls)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
IF rec.bedrijf = 'AKROS'
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key_akros)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
IF rec.bedrijf = 'COMBIWEL'
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key_combi)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
END IF;
END IF;
END;
END LOOP;
FOR rec IN c_tel
LOOP
-- 2025-MAART
--- Mobiele telefoonnummers komen nu uit AFAS
--- De vaste telefoonnummers kan/mag men in Facilitor-kaart handmatig opnemen. Deze vullen we nu met import dus aan in fac_imp_perslid-tabel zodat ze niet leeg gemaakt worden met update afasonlinee
v_errorhint :=
'Telefoonnummer toevoegen aan import-tabel'
|| '-'
|| rec.prs_perslid_email;
IF rec.prs_perslid_telefoonnr IS NOT NULL
THEN
UPDATE fac_imp_perslid p
SET p.prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr
WHERE p.fac_imp_file_index = rec.fac_imp_file_index ;
END IF;
END LOOP;
v_errorhint := 'Locatie bepalen en vullen';
-- Default Locatie / Standplaats bepalen voor persoon op basis AFAS-kostenplaats standplaats en de gekoppelde kostenplaatsen in de Locatiekaart
FOR rec IN c_loc
LOOP
BEGIN
v_errorhint := 'Persoon aan Locatie-Ruimte koppelen';
v_alg_locatie_key := NULL;
v_alg_gebouw_key := NULL;
v_alg_verdieping_key := NULL;
v_alg_ruimte_key := NULL;
SELECT min(alg_locatie_key)
INTO v_alg_locatie_key
FROM impu_v_locaties_kp v
WHERE UPPER(v.prs_kostenplaats_nr) = UPPER(rec.prs_kenmerk5)
AND (TRUNC(v.prs_kostenplaats_eind) > TRUNC(sysdate) OR v.prs_kostenplaats_verwijder IS NULL ) ;
IF v_alg_locatie_key IS NOT NULL THEN
-- Locatie_code ophalen
SELECT alg_locatie_code
INTO v_alg_locatie_code
FROM alg_locatie
WHERE alg_locatie_key = v_alg_locatie_key ;
-- Gebouw_key ophalen
SELECT min(alg_gebouw_key)
INTO v_alg_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_alg_locatie_key
AND alg_gebouw_verwijder IS NULL
AND (TRUNC(alg_gebouw_vervaldatum) > TRUNC(sysdate) OR alg_gebouw_vervaldatum IS NULL ) ;
IF v_alg_gebouw_key IS NOT NULL THEN
-- Gebouw_code ophalen
SELECT alg_gebouw_code
INTO v_alg_gebouw_code
FROM alg_gebouw
WHERE alg_gebouw_key = v_alg_gebouw_key ;
-- Verdiepings_key ophalen
SELECT min(alg_verdieping_key)
INTO v_alg_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_alg_gebouw_key
AND alg_verdieping_verwijder IS NULL ;
END IF;
IF v_alg_verdieping_key IS NOT NULL THEN
-- Verdieping_volgnr ophalen
SELECT alg_verdieping_volgnr
INTO v_alg_verdieping_volgnr
FROM alg_verdieping
WHERE alg_verdieping_key = v_alg_verdieping_key ;
-- Ruimte_key ophalen
SELECT min(alg_ruimte_key)
INTO v_alg_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_alg_verdieping_key
AND alg_ruimte_verwijder IS NULL ;
END IF;
IF v_alg_ruimte_key IS NOT NULL THEN
-- Ruimte_nr ophalen
SELECT alg_ruimte_nr
INTO v_alg_ruimte_nr
FROM alg_ruimte
WHERE alg_ruimte_key = v_alg_ruimte_key ;
-- Vullen vastgoed-keten in import-tabel
UPDATE fac_imp_perslid
SET alg_locatie_code = v_alg_locatie_code,
alg_gebouw_code = v_alg_gebouw_code,
alg_verdieping_volgnr = v_alg_verdieping_volgnr,
alg_ruimte_nr = v_alg_ruimte_nr
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
END IF;
ELSE
-- Geen Locatie/Vastgoedketen kunnen vinden
NULL;
END IF;
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END impu_import_afasonline;
/
CREATE OR REPLACE PROCEDURE impu_update_afasonline (p_import_key IN NUMBER)
IS
-- Alle personen verwijderen die niet meer in het import bestand voorkomen.
-- Personen in de juiste autorisatiegroep zetten.
-- Match bij IMPULS KINDEROPVANG kan via Email of Personeelsnummer.
---- Zie ticket IMPU#84705 - ivm overgang GMK omzetting van email naar personeelsnummer
-- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft.
-- Daarnaast in 2025-juni toegevoegd dat werkplekken van locatiemanager-2/3 + mandaten worden ingeregeld
-- De verantwoordelijke (leidinggevende) koppelen in personenkaart
-- Bij de Teamaccounts ook deze verantwoordelijke (leidinggevende) vullen met de eerste locatiemanager uit de locatiekaart
--- + de eerste locatiemanager ook opvoeren als budgethouder bij de kostenplaatsen
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving, a.prs_afdeling_omschrijving, b.prs_bedrijf_naam
FROM prs_perslid p, fac_imp_perslid i, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND i.prs_perslid_nr IS NULL -- in Facilitor, met onderstaande voorwaarden, is er dus geen mapping op personeelsnummer en die personen gaan we verwijderen/inactief maken
AND a.prs_bedrijf_key IN (SELECT prs_link_key FROM prs_kenmerklink WHERE prs_kenmerk_key = 1040 AND prs_kenmerklink_niveau = 'B' AND prs_kenmerklink_verwijder IS NULL) -- bedrijven GMK
AND sp.prs_srtperslid_upper NOT IN 'TEAMACCOUNT'
AND p.prs_perslid_nr IS NOT NULL
AND (
UPPER (p.prs_perslid_email) LIKE '%IMPULS.NL'
OR
UPPER (p.prs_perslid_email) LIKE '%GMK.NL'
OR
UPPER (p.prs_perslid_email) LIKE '%@AKROS-AMSTERDAM.NL'
OR
UPPER (p.prs_perslid_email) LIKE '%@COMBIWELVOORKINDEREN.NL'
)
ORDER BY 1 ;
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
IS
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_perslid_nr,
i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12, i.prs_kenmerk13, i.prs_srtperslid_omschrijving
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 v.prs_perslid_key
FROM impu_v_locatiemanagers v
GROUP BY v.prs_perslid_key ;
CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen)
IS
SELECT v.prs_perslid_key, v.persoon, v.alg_locatie_key, v.locatienaam, v.prs_werkplek_key, v.actie
FROM
(
SELECT man.prs_perslid_key, man.locatiemanager persoon, man.alg_locatie_key, man.locatie locatienaam, NULL prs_werkplek_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.naam persoon, wp.alg_locatie_key, wp.locatie_wp locatienaam, wp.prs_werkplek_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, man.locatiemanager persoon, wp.alg_locatie_key, man.locatie locatienaam, wp.prs_werkplek_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 ;
CURSOR c_loc_kp -- Voor updaten van locatiemanagers (mandaten op kostenplaatsen)
IS
SELECT w.prs_perslid_key, w.locatiemanager, w.alg_locatie_key, w.alg_locatie_omschrijving, w.prs_kostenplaats_key, w.prs_kostenplaats_omschrijving
FROM ( SELECT v_prs.prs_perslid_key,
v_prs.locatiemanager,
v_prs.alg_locatie_key,
v_kp.alg_locatie_omschrijving,
v_kp.prs_kostenplaats_key,
v_kp.prs_kostenplaats_nr || ' - ' || v_kp.prs_kostenplaats_omschrijving
prs_kostenplaats_omschrijving
FROM impu_v_locatiemanagers v_prs, impu_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.locatiemanager,
v_prs.alg_locatie_key,
v_kp.alg_locatie_omschrijving,
v_kp.prs_kostenplaats_key,
v_kp.prs_kostenplaats_nr || ' - ' || v_kp.prs_kostenplaats_omschrijving
) w
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 impu_v_locatiemanagers v_prs,
impu_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 d.prs_perslid_key FROM impu_v_personenlijst_loc d)
ORDER BY 1, 2 ;
CURSOR c_verantw
IS
SELECT p.prs_perslid_key,
p.prs_perslid_email,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
CASE WHEN p.prs_perslid_key_verantw IS NOT NULL
THEN (SELECT prs_perslid_nr FROM prs_perslid WHERE prs_perslid_key = p.prs_perslid_key_verantw)
ELSE NULL
END
prs_perslid_verantw_nr,
p.prs_perslid_verantw_nr_afas
FROM fac_imp_perslid i,
(SELECT p.prs_perslid_key,
p.prs_perslid_email,
p.prs_perslid_nr,
p.prs_perslid_oslogin,
p.prs_perslid_key_verantw,
(SELECT kw.prs_kenmerklink_waarde
FROM prs_kenmerklink kw
WHERE kw.prs_kenmerk_key = 1082
AND kw.prs_kenmerklink_niveau = 'P'
AND kw.prs_link_key = p.prs_perslid_key)
prs_perslid_verantw_nr_afas
FROM prs_perslid p) p
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 1 ;
-- Voor teamaccounts de verantwoordelijke vullen met 1e-locatiemanager en gekoppelde opvang-kostenplaats met dezelfde 1e-locatiemanager
CURSOR c_verantw_t
IS
SELECT p.prs_perslid_key, -- teamaccount perslid_key
p.prs_perslid_naam,
p.prs_perslid_email,
p.prs_perslid_key_verantw, -- huidige verantwoordelijke teamaccount
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = p.prs_perslid_key_verantw)
prs_perslid_verantwoordelijke,
l.alg_locatie_key,
k.prs_kostenplaats_key,
k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving
prs_kostenplaats_teamaccount,
k.prs_perslid_key
prs_perslid_key_budget, -- huidige budgetverantwoordelijke opvang-kostenplaats
-- eerste locatiemanager van die locatie
(SELECT p.prs_perslid_key
FROM ( SELECT ROWNUM volgnr, v.*, ok.alg_kenmerk_key
FROM impu_v_locatiemanagers v, alg_onrgoedkenmerk ok
WHERE ok.alg_onrgoed_niveau = 'L'
AND ok.alg_onrgoed_key = v.alg_locatie_key
AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) = v.prs_perslid_key
AND v.prs_perslid_verwijder IS NULL
AND INSTR (UPPER (locatiemanager), 'REGIOMANAGER') = 0
AND v.alg_locatie_key = l.alg_locatie_key
ORDER BY ok.alg_kenmerk_key) p
WHERE p.volgnr = 1) locatiemanager_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,
prs_kostenplaats k
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_upper = 'TEAMACCOUNT'
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_kostenplaats_key = k.prs_kostenplaats_key
ORDER BY wp.prs_perslid_key;
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;
v_prs_perslid_key_verantw NUMBER(10);
v_teller_mandaat NUMBER(10);
v_locatiemanager VARCHAR2 (200);
BEGIN
v_errormsg := 'Update afasonline';
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
IF v_count >= 100
THEN
v_errorhint := 'Verwerken persoonsgegevens';
-- Geldig importbestand wat betreft aantal personen
COMMIT;
-- generic update
-- 'EMAIL' betekent dat op basis van Email wordt gematched.
-- 'NR' betekent op basis Personeelsnummer
-- 'NULL' betekent altijd geen werkplekken verwijderen
prs.update_perslid (p_import_key, 'NR', NULL);
v_errorhint := 'Verwijderen persoonsgegevens';
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
FOR rec IN c_flex
LOOP
BEGIN
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);
v_errorhint:='Fout bijwerken kenmerkveld6 - Medewerker-nummer';
PRS.upsertkenmerk (1060, rec.prs_perslid_key, rec.prs_perslid_nr);
-- NIEUWE VELDEN 2025-MRT
PRS.upsertkenmerk (1080, rec.prs_perslid_key, rec.prs_kenmerk7); -- Soort_medewerker__Code_obv_medewerkertaal_
PRS.upsertkenmerk (1081, rec.prs_perslid_key, rec.prs_kenmerk8); -- Organisatorische_eenheid
PRS.upsertkenmerk (1082, rec.prs_perslid_key, rec.prs_kenmerk9); -- Leidinggevende_pers_nr
PRS.upsertkenmerk (1083, rec.prs_perslid_key, rec.prs_kenmerk10); -- Leidinggevende_Naam
PRS.upsertkenmerk (1084, rec.prs_perslid_key, rec.prs_kenmerk11); -- Werkgever
PRS.upsertkenmerk (1085, rec.prs_perslid_key, rec.prs_kenmerk12); -- Naam_werkgever
PRS.upsertkenmerk (1086, rec.prs_perslid_key, rec.prs_kenmerk13); -- Mobiel_werk
PRS.upsertkenmerk (1100, rec.prs_perslid_key, rec.prs_srtperslid_omschrijving); -- Functie_afas
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';
DELETE prs_werkplek WHERE prs_werkplek_key = rec.prs_werkplek_key;
END IF;
END;
END LOOP;
FOR rec IN c_loc_kp
LOOP
BEGIN
-- kostenplaatsen en mandaat
v_errorhint :=
'bijwerken mandaten locatiemanager - perslid_key:'
|| TO_CHAR (rec.prs_perslid_key);
-- Alle mandaten goed inregelen
SELECT COUNT(*)
INTO v_teller_mandaat
FROM prs_perslidkostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_kostenplaats_key = rec.prs_kostenplaats_key ;
IF v_teller_mandaat = 0
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_errorhint :=
'verwijderen mandaten locatiemanager - perslid_key:'
|| TO_CHAR (rec.prs_perslid_key);
DELETE FROM prs_perslidkostenplaats
WHERE prs_perslidkostenplaats_key =
rec.prs_perslidkostenplaats_key;
END;
END LOOP;
-- En de verantwoordelijk manager updaten in de personenkaart indien nodig
FOR rec IN c_verantw
LOOP
BEGIN
v_errorhint:='Fout bijwerken verantwoordelijke';
-- als de aangeboden waarde uit afas anders is dan de huidige verantwoordelijke in de personenkaart dan gaan we personenkaart updaten
IF COALESCE(rec.prs_perslid_verantw_nr_afas, '<leeg>') <> COALESCE(rec.prs_perslid_verantw_nr, '<leeg>')
THEN
-- geen gevonden facilitor-manager dan gevulde verantwoordelijke verwijderen
IF rec.prs_perslid_verantw_nr_afas IS NULL
THEN
UPDATE prs_perslid
SET prs_perslid_key_verantw = ''
WHERE prs_perslid_key = rec.prs_perslid_key ;
END IF;
-- wel gevonden facilitor-manager dan bijbehorende verantwoordelijke_key in personenkaart vullen
IF rec.prs_perslid_verantw_nr_afas IS NOT NULL
THEN
SELECT MIN(prs_perslid_key)
INTO v_prs_perslid_key_verantw
FROM prs_perslid
WHERE prs_perslid_nr = rec.prs_perslid_verantw_nr_afas ;
IF v_prs_perslid_key_verantw IS NOT NULL
THEN
UPDATE prs_perslid
SET prs_perslid_key_verantw = v_prs_perslid_key_verantw
WHERE prs_perslid_key = rec.prs_perslid_key ;
ELSE
UPDATE prs_perslid
SET prs_perslid_key_verantw = ''
WHERE prs_perslid_key = rec.prs_perslid_key ;
END IF;
END IF;
END IF;
END;
END LOOP;
-- En de verantwoordelijk manager updaten in de personenkaart van de teamaccounts en bij de opvang-kostenplaats dezelfde manager als budgetverantwoordelijke toevoegen
FOR rec IN c_verantw_t
LOOP
BEGIN
v_errorhint:='Fout bijwerken verantwoordelijke en budgetverantwoordelijke in/voor teamaccount';
v_locatiemanager := '' ;
-- als de huidge gekoppelde verantwoordelijke in de teamaccount-personenkaart anders is dan de waarde/locatiemanager uit de gekoppelde locatiekaart dan zaken updaten in teamaccount
IF COALESCE(rec.prs_perslid_key_verantw, -1) <> COALESCE(rec.locatiemanager_key, -1)
THEN
-- geen gevonden locatiemanager in locatiekaart dan verantwoordelijke in teamaccount verwijderen
IF rec.locatiemanager_key IS NULL
THEN
UPDATE prs_perslid
SET prs_perslid_key_verantw = ''
WHERE prs_perslid_key = rec.prs_perslid_key ;
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Verantwoordelijke: ' || rec.prs_perslid_verantwoordelijke || ' --> (leeg) (uit afas-koppeling)'); END;
END IF;
-- wel gevonden locatiemanager dan bijbehorende verantwoordelijke_key in teamaccount vullen
IF rec.locatiemanager_key IS NOT NULL
THEN
SELECT prs_perslid_naam_friendly
INTO v_locatiemanager
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = rec.locatiemanager_key ;
UPDATE prs_perslid
SET prs_perslid_key_verantw = rec.locatiemanager_key
WHERE prs_perslid_key = rec.prs_perslid_key ;
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Verantwoordelijke: ' || rec.prs_perslid_verantwoordelijke || ' --> ' || v_locatiemanager || '(uit afas-koppeling)'); END;
END IF;
END IF;
-- als de huidge gekoppelde budgethouder in de opvang-kostenplaats anders is dan de waarde/locatiemanager uit de gekoppelde locatiekaart dan zaken updaten in kostenplaats
IF COALESCE(rec.prs_perslid_key_budget, -1) <> COALESCE(rec.locatiemanager_key, -1)
THEN
-- geen gevonden locatiemanager in locatiekaart dan budgetverantwoordelijke in kostenplaats verwijderen
IF rec.locatiemanager_key IS NULL
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = ''
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
-- logging op kostenplaats wordt al automatisch via audit gedaan..
END IF;
-- wel gevonden locatiemanager dan bijbehorende verantwoordelijke_key in teamaccount vullen
IF rec.locatiemanager_key IS NOT NULL
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = rec.locatiemanager_key
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
-- logging op kostenplaats wordt al automatisch via audit gedaan..
END IF;
END IF;
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END impu_update_afasonline;
/
-------------------------------
--- 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,
flx.getdomeinwaarde(21,flx.getflex('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
(
WIJK,
LOCATIE,
LOCATIE_CODE,
LOCATIE_KEY,
GEBOUW,
-- gegevens uit locatiekaart
LOCATEMANAGERS,
LOCATIEMANAGER,
LOCATIEMANAGER_2,
LOCATIEMANAGER_3,
REGIOMANAGER,
CONTACT_TOELICHTING,
GEBRUIKSRECHT,
DIENST_AFVAL,
DIENST_SCHOONMAAK,
DIENST_TELEFONIE,
EIGENAARSCHAP_TOELICHTING,
KDV,
VO,
BSO,
WELZIJN,
SSC,
LOCATIE_STATUS
)
AS
SELECT d.alg_district_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
l.alg_locatie_key,
v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam
gebouw,
DECODE(km.locatiemanager, NULL, '', km.locatiemanager) ||
DECODE(km.locatiemanager_2, NULL, '', ', ' || km.locatiemanager_2) ||
DECODE(km.locatiemanager_3, NULL, '', ', ' || km.locatiemanager_3)
locatiemanagers,
km.locatiemanager,
km.locatiemanager_2,
km.locatiemanager_3,
km.regiomanager,
km.contact_toelichting,
km.gebruiksrecht,
km.dienst_afval,
km.dienst_schoonmaak,
km.dienst_telefonie,
km.eigenaarschap_toelichting,
km.kdv,
km.vo,
km.bso,
km.welzijn,
km.ssc,
CASE WHEN l.alg_locatie_vervaldatum IS NULL OR TRUNC(l.alg_locatie_vervaldatum) > TRUNC(SYSDATE)
THEN 'actueel'
ELSE 'oud'
END
locatie_status
FROM alg_v_onroerendgoed_gegevens v,
alg_locatie l,
alg_district d,
(SELECT l.alg_locatie_key,
flx.getdomeinwaarde(2, flx.getflex('ALG',1016, l.alg_locatie_key,'L')) locatiemanager,
flx.getdomeinwaarde(2, flx.getflex('ALG',1180, l.alg_locatie_key,'L')) locatiemanager_2,
flx.getdomeinwaarde(2, flx.getflex('ALG',1200, l.alg_locatie_key,'L')) locatiemanager_3,
flx.getdomeinwaarde(2, flx.getflex('ALG',1018, l.alg_locatie_key,'L')) regiomanager,
flx.getflex('ALG',1019, l.alg_locatie_key,'L') contact_toelichting,
flx.getdomeinwaarde(1,flx.getflex('ALG',1005, l.alg_locatie_key,'L')) gebruiksrecht,
flx.getflex('ALG',1007, l.alg_locatie_key,'L') dienst_afval,
flx.getflex('ALG',1008, l.alg_locatie_key,'L') dienst_schoonmaak,
flx.getflex('ALG',1009, l.alg_locatie_key,'L') dienst_telefonie,
flx.getflex('ALG',1011, l.alg_locatie_key,'L') eigenaarschap_toelichting,
flx.getflex('ALG',1001, l.alg_locatie_key,'L') KDV,
flx.getflex('ALG',1002, l.alg_locatie_key,'L') VO,
flx.getflex('ALG',1003, l.alg_locatie_key,'L') BSO,
flx.getflex('ALG',1100, l.alg_locatie_key,'L') WELZIJN,
flx.getflex('ALG',1160, l.alg_locatie_key,'L') SSC
FROM alg_locatie l ) km
WHERE v.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND v.alg_type IN ('G')
AND v.alg_locatie_key = km.alg_locatie_key
ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code
;
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, -- Bolletje
FILTERSTATUS_TD,
FILTERSTATUS_BO
)
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 = 78), -- 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,
(SELECT DECODE(mld_kenmerkopdr_waarde, '1', 'SPOED', NULL)
FROM mld_kenmerkopdr ko, mld_kenmerk km
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_srtkenmerk_key = 101) -- spoedindicatie door backoffice
filterstatus_bo
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;
-- Rapportage view voor Behandelteam bloktitels
CREATE OR REPLACE VIEW impu_v_mld_behandelteams_blok
(
MLD_MELDING_KEY,
BLOK,
FCLT_3D_DISCIPLINE_KEY,
BEHANDELTEAM,
BEHANDELAAR,
STATUS,
AFGEMELD_DATUM,
-- HOOFDMELDING-GEGEVENS
MLD_STDMELDING_KEY,
MLD_STDMELDING_OMSCHRIJVING,
FCLT_3D_LOCATIE_KEY,
HM_LOCATIE,
HM_BEHANDELAAR,
HM_STATUS,
HM_STREEFDATUM_GEREED,
HM_AFHANDELINGSTEKST,
-- KENMERKVELDEN IN BLOK - HIERONDER OPNEMEN
ACTIEDATUM,
ACTIEGEVRAAGD,
STATUS_BT,
CONTACT,
CONTACT_T,
GESPREKKEN,
GESPREKKEN_T,
TEUGKOPPELING,
TERUGKOPPELING_T,
BELEID,
BELEID_T,
VRIJETEKST
-- KENMERKVELDEN IN HOOFDMELDING- VIA UDR GUI TOEVOEGEN
)
AS
SELECT m.mld_melding_key,
COALESCE (kmb.mld_kenmerk_code, 'BLOK_ONBEKEND')
blok,
mb.ins_discipline_key,
d.ins_discipline_omschrijving
behandelteam,
p.prs_perslid_naam
behandelaar,
CASE
WHEN mb.mld_kenmerkblokmelding_afmelddatum IS NULL THEN 'lopend'
ELSE 'afgemeld'
END
status,
mb.mld_kenmerkblokmelding_afmelddatum
afgemeld_datum,
-- gegevens hoofdmelding
m.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
m.mld_alg_locatie_key,
CASE WHEN m.mld_alg_locatie_key IS NOT NULL THEN (SELECT alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = m.mld_alg_locatie_key)
ELSE 'geen locatie op mld'
END
hm_locatie,
CASE WHEN m.mld_melding_behandelaar_key IS NOT NULL THEN (SELECT prs_perslid_voornaam || ' ' || prs_perslid_naam FROM prs_perslid WHERE prs_perslid_key = m.mld_melding_behandelaar_key)
ELSE 'geen hoofd-behandelaar'
END
hm_behandelaar,
(SELECT mld_statuses_omschrijving FROM mld_statuses WHERE mld_statuses_key = m.mld_melding_status)
hm_status,
m.mld_melding_einddatum
hm_streefdatum_gereed,
m.mld_melding_opmerking
hm_afhandelingstekst,
-- kenmerkvelden in blok van behandelteam - hieronder opnemen
fac.safe_to_date(
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 303
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_ACTIEDATUM'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
, 'dd-mm-yyyy')
actiedatum,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 302
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_ACTIEGEVRAAGD'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
actiegevraagd,
FLX.getdomeinwaarde(
221,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 601 -- BT - Status mijn BV-melding
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_STATUS_BT'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key))
status_bt,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 581 -- BT - Contact opgenomen met melder
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_CONTACT'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
contact,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 621 -- BT - Contact opgenomen met melder - Toelichting
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_CONTACT_T'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
contact_t,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 582 -- BT - Gesprekken gevoerd
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_GESPREKKEN'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
gesprekken,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 622 -- BT - Gesprekken gevoerd - Toelichting
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_GESPREKKEN_T'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
gesprekken_t,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 661 -- BT - Terugkoppeling naar melder
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_TERUGKOPPELING'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
terugkoppeling,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 624 -- BT - Terugkoppeling naar melder - Toelichting
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_TERUGKOPPELING_T'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
terugkoppeling_t,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 584 -- BT - Beleid aangepast
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_BELEID'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
beleid,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 641 -- BT - Beleid aangepast - Toelichting
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_BELEID_T'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
beleid_t,
FLX.getflex (
'MLD',
COALESCE (
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 301
AND mld_kenmerk_code =
COALESCE (kmb.mld_kenmerk_code,
'BLOK_ONBEKEND')
|| '_VRIJETEKST'
AND mld_kenmerk_verwijder IS NULL
AND mld_stdmelding_key = m.mld_stdmelding_key),
-1),
m.mld_melding_key)
vrijetekst
FROM mld_melding m,
mld_stdmelding sm,
mld_kenmerkblokmelding mb,
mld_kenmerk kmb,
mld_discipline d,
prs_perslid p
WHERE m.mld_melding_key = mb.mld_melding_key
AND mb.ins_discipline_key = d.ins_discipline_key
AND mb.mld_kenmerk_key = kmb.mld_kenmerk_key
AND mb.prs_perslid_key = p.prs_perslid_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key;
-------------------------------
--- NOTI-JOBS ---------------
-------------------------------
-- IMPULS: Contractbeheerder(_eig) is Beheerder/Administrateur en de Contractverantwoordelijke (_beh) is 1e aanspreekpunt die beslist over wel/niet verlengen
CREATE OR REPLACE VIEW impu_v_noti_cntreminder
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS -- Op rappel-datum naar de Beheerder/Administrateur sturen
SELECT 'CNTMAI',
NULL,
c.prs_perslid_key_beh,
'TER INFO: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern
|| DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
|| ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')'
|| ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
NULL,
NULL,
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND cnt_contract_status = 0
AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE)
AND c.prs_perslid_key_beh <> c.prs_perslid_key_eig -- als administratuer gelijk aan 1e aanspreekpunt dan dan sturen we de info-mail niet uit
AND NOT EXISTS -- kenmerkveld 'Opgezegd' staat uit
(SELECT km.cnt_contract_key
FROM cnt_kenmerkcontract km, cnt_kenmerk k
WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 7)
UNION ALL -- Op rappel-datum ACTIE-mail naar het 1e aanspreekpunt sturen
SELECT 'CUST01',
NULL,
c.prs_perslid_key_eig,
'ACTIE: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern
|| DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
|| ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')'
|| ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
NULL,
NULL,
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND cnt_contract_status = 0
AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE)
AND c.prs_perslid_key_eig IS NOT NULL
AND NOT EXISTS -- kenmerkveld 'Opgezegd' staat uit
(SELECT km.cnt_contract_key
FROM cnt_kenmerkcontract km, cnt_kenmerk k
WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = 7) ;
-- IMPULS: Notificatie ontvangstbevestiging aan externe partij (ouder, etc.)
CREATE OR REPLACE VIEW impu_v_noti_mld_bev_extern
(
code,
sender, -- hoofd-behandelaar melding
receiver, -- geen geregistreerde melder dus via xemail sturen
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST02',
m.mld_melding_behandelaar_key,
NULL
receiver,
'Onze ontvangstbevestiging op uw meldingnr ' || 'BV' || m.mld_melding_key,
m.mld_melding_key,
NULL
xkey,
m.mld_melding_email_ext,
NULL
xmobile
FROM mld_melding m,
mld_stdmelding sm,
(select km.mld_melding_key,
sk.mld_srtkenmerk_omschrijving,
fac.safe_to_number(km.mld_kenmerkmelding_waarde)
reactie_vinkje_sturen,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = km.mld_melding_key
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_code = 'CUST02')
AS reactie_datum_uitgestuurd, -- Datum genotificeerd door deze noti-job
flx.getflex('MLD', COALESCE((SELECT km.mld_kenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 314 AND km.mld_kenmerk_niveau = 'S' AND km.mld_stdmelding_key = m.mld_stdmelding_key), -1), km.mld_melding_key)
reactie_tekst
from mld_melding m,
mld_stdmelding sm,
mld_kenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
where sm.mld_stdmelding_key = m.mld_stdmelding_key
and m.mld_melding_key = km.mld_melding_key
and km.mld_kenmerk_key = k.mld_kenmerk_key
and k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
and sk.mld_srtkenmerk_key = 304 -- bevestiging naar externe - uitsturen
) v
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key IN (382, 462) -- voor welzijn (462) en externe klacht ouder (382)
AND m.mld_melding_status IN (2, 3, 4, 7)
AND m.mld_melding_behandelaar_key IS NOT NULL
AND m.mld_melding_key = v.mld_melding_key (+)
-- Voorwaarden voor uitsturen
----- vinkje staat aan + is nog nooit uitgestuurd + tekst is gevuld
AND v.reactie_vinkje_sturen = 1 AND v.reactie_datum_uitgestuurd IS NULL AND v.reactie_tekst IS NOT NULL ;
-- IMPULS: Notificatie van behandelteam (bt) bij afmelding naar de hoofdbehandelaar van de BV-melding
CREATE OR REPLACE VIEW impu_v_noti_mld_afmelding_bt
(
code,
sender, -- uit BT-team.... dus facilitor
receiver, -- de hoofdbehandelaar van de BV-melding
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST03',
3
sender,
m.mld_melding_behandelaar_key
receiver,
'Meldingnr BV' || m.mld_melding_key || ' - ' || v.blok || ' is door behandelteam ' || v.behandelteam || ' afgemeld'
onderwerp_mail,
m.mld_melding_key,
NULL
xkey,
NULL
xemail,
NULL
xmobile
FROM mld_melding m,
mld_stdmelding sm,
impu_v_mld_behandelteams_blok v,
(SELECT m.mld_melding_key,
MAX (ft.fac_tracking_datum)
blok_afgemeld_last_cust03 -- Datum laatst genotificeerd door deze noti-job
FROM mld_melding m,
fac_tracking ft,
fac_srtnotificatie sn
WHERE
m.mld_melding_key = ft.fac_tracking_refkey
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_code = 'CUST03'
GROUP BY m.mld_melding_key
) t
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND m.mld_melding_status IN (2, 3, 4, 7)
AND m.mld_melding_behandelaar_key IS NOT NULL
AND m.mld_melding_key = v.mld_melding_key
AND m.mld_melding_key = t.mld_melding_key (+)
-- Voorwaarden voor uitsturen
----- afmeld_datum in blok gevuld en na deze datum is er geen CUST03 meer uitgegaan
AND v.afgemeld_datum IS NOT NULL
AND v.afgemeld_datum >= COALESCE(t.blok_afgemeld_last_cust03, v.afgemeld_datum)
;
----------------------------------
--- OVERIGE CUST-FUNCTIES ------
----------------------------------
-- Hook functie die na het saven (mld_postsave) van een externe klacht-melding de verplichte gegevens ouder en email vult in mld_melding_externegegevens
CREATE OR REPLACE PROCEDURE impu_mld_after_insert_klacht (p_key IN NUMBER)
AS
v_errormsg VARCHAR2 (200);
v_mld_stdmelding_key NUMBER (10) ;
v_ouder VARCHAR2 (60);
v_ouder_email VARCHAR2 (100);
v_ouder_tel VARCHAR2 (20);
BEGIN
v_errormsg := 'Ophalen meldinggegevens ouder';
SELECT mld_stdmelding_key
INTO v_mld_stdmelding_key
FROM mld_melding
WHERE mld_melding_key = p_key ;
IF v_mld_stdmelding_key IN (382, 462) -- Klacht externe en Welzijns-melding
THEN
SELECT flx.getflex('MLD', COALESCE((SELECT km.mld_kenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 161 AND km.mld_kenmerk_niveau = 'S' AND km.mld_stdmelding_key = v_mld_stdmelding_key), -1), m.mld_melding_key) ouder,
flx.getflex('MLD', COALESCE((SELECT km.mld_kenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 162 AND km.mld_kenmerk_niveau = 'S' AND km.mld_stdmelding_key = v_mld_stdmelding_key), -1), m.mld_melding_key) ouder_mail,
flx.getflex('MLD', COALESCE((SELECT km.mld_kenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 181 AND km.mld_kenmerk_niveau = 'S' AND km.mld_stdmelding_key = v_mld_stdmelding_key), -1), m.mld_melding_key) ouder_tel
INTO v_ouder, v_ouder_email, v_ouder_tel
FROM mld_melding m
WHERE mld_melding_key = p_key ;
UPDATE mld_melding
SET mld_melding_naam_ext = v_ouder,
mld_melding_email_ext = v_ouder_email,
mld_melding_tel_ext = COALESCE(v_ouder_tel, 'onbekend')
WHERE mld_melding_key = p_key ;
ELSE
NULL;
END IF;
END impu_mld_after_insert_klacht;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile