Files
Customer/IMPU/impu.sql

1185 lines
46 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) )
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,
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)
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Locatiemanagers + Regiomanagers + Tijdelijke waarnemers (tbv domeinview)
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),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 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 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
AND (INSTR(UPPER(sp.prs_srtperslid_omschrijving),'LOCATIEMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'REGIOMANAGER') > 0 OR INSTR(UPPER(sp.prs_srtperslid_omschrijving),'TEAMLEIDER') > 0) -- Titels uit AFAS die meelopen in Locatiemanager-verhaal zijn: Locatiemanager + Locatiemanager IKC + Regiomanager + Teamleider
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 ;
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 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);
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,
prs_srtperslid_omschrijving
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key;
CURSOR c_tel
IS
SELECT p.prs_perslid_email,
pp.prs_perslid_telefoonnr,
pp.prs_perslid_mobiel
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
OR pp.prs_perslid_mobiel IS NOT NULL);
CURSOR c_loc
IS
SELECT fac_imp_file_index, prs_kenmerk4
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key;
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
-- Voor IMPULS geldt:
---
prs.import_perslid (
p_import_key,
'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',
'Kostenplaats;Achternaam;Voorvoegsel;Voorletters;Roepnaam;E-Mail_werk;Omschrijving_Functie;Medewerker;Organisatorische_eenheid_omschrijving;Kostenplaats_2;Datum_in_dienst;Datum_uit_dienst;Soort_medewerker');
-- 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"
-- 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
UPDATE fac_imp_perslid
SET prs_perslid_oslogin =
UPPER (
(SUBSTR (prs_perslid_email,
0,
INSTR (prs_perslid_email, '@') - 1)))
WHERE UPPER (prs_perslid_email) LIKE '%IMPULS.NL'
AND prs_perslid_email IS NOT NULL
AND LENGTH (
(SUBSTR (prs_perslid_email,
0,
INSTR (prs_perslid_email, '@') - 1))) <=
30;
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_perslid_email) NOT LIKE '%@IMPULS.NL';
v_errorhint := 'Afdeling bepalen en vullen';
-- 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';
-- 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
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 = 21 -- bedrijf IMPULS
AND a.prs_afdeling_verwijder IS NULL
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key;
-- Als afdeling uit AFAS (nog) WEL bekend is in Facilitor dan medewerker op die afdeling zetten
IF v_prs_afdeling_key IS NOT NULL
THEN
-- prs_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 de Facilitor-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 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;
FOR rec IN c_tel
LOOP
-- Telefoonnummers voert men zelf in Facilitor handmatig in en zitten dus niet in importbestand.
-- We vullen daarom deze aan in de fac_imp_perslid
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.prs_perslid_email = rec.prs_perslid_email;
END IF;
IF rec.prs_perslid_mobiel IS NOT NULL
THEN
UPDATE fac_imp_perslid p
SET p.prs_perslid_mobiel = rec.prs_perslid_mobiel
WHERE p.prs_perslid_email = rec.prs_perslid_email;
END IF;
END LOOP;
v_errorhint := 'Locatie bepalen en vullen';
-- 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
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 alg_locatie
WHERE UPPER(alg_locatie_omschrijving) = UPPER(rec.prs_kenmerk4)
AND (TRUNC(alg_locatie_vervaldatum) > TRUNC(sysdate) OR alg_locatie_vervaldatum IS NULL )
AND alg_locatie_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 ) ;
-- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'default standplaats'
UPDATE fac_imp_perslid
SET prs_kenmerk6 = (SELECT UPPER(alg_locatie_code) || alg_locatie_omschrijving FROM alg_locatie WHERE alg_locatie_key = v_alg_locatie_key)
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
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
UPDATE fac_imp_perslid
SET prs_kenmerk6 = 'LOCATIE ONBEKEND'
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
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.
-- Teamaccounts (functie 'Teamaccount' laten we ongemoeid)
-- 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.
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 = 21 -- Impuls Kinderopvang
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'
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
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.alg_locatie_key, v.prs_werkplek_key, v.actie
FROM
(
SELECT man.prs_perslid_key, man.alg_locatie_key, NULL prs_werkplek_key, 'toevoegen' actie
FROM 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, 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, wp.alg_locatie_key, 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
;
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';
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);
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;
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
LOCATIEMANAGER,
REGIOMANAGER,
CONTACT_TOELICHTING,
GEBRUIKSRECHT,
DIENST_AFVAL,
DIENST_SCHOONMAAK,
DIENST_TELEFONIE,
EIGENAARSCHAP_TOELICHTING,
KDV,
VO,
BSO,
--
VERDIEPING,
RUIMTENR,
RUIMTE_OMSCHRIJVING,
RUIMTEFUNCTIE,
BVO_M2,
VLOERSOORT
)
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,
km.locatiemanager,
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,
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,
flx.getdomeinwaarde(25, flx.getflex('ALG', 1040, r.alg_ruimte_key, 'R')) vloersoort
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',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
FROM alg_locatie l ) km,
alg_ruimte r,
alg_srtruimte sr
WHERE v.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND v.alg_type IN ('R')
AND v.alg_locatie_key = km.alg_locatie_key
AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL
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, -- 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;
-------------------------------
--- 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) ;
----------------------------------
--- 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) -- Klacht externe
THEN
SELECT flx.getflex('MLD', COALESCE((SELECT km.mld_kenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 161), -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), -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), -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