Files
Customer/MNNL/mnnl.sql
Maarten van der Heide d852dde36b MNNL#88808 EUA-import/Dynamisch bepalen delimitor
svn path=/Customer/trunk/; revision=68954
2025-05-08 12:44:37 +00:00

9751 lines
452 KiB
MySQL
Raw Permalink Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for MNNL.
DEFINE thisfile = 'MNNL.SQL'
DEFINE dbuser = '^MNNL'
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 ------
CREATE OR REPLACE PACKAGE MNNL
AS
PROCEDURE vervangen_cert;
END;
/
CREATE OR REPLACE PACKAGE BODY MNNL
AS
-- Registreren 'Vervangen certificaat'-melding (=3781) 30d voor Vervaldatum
-- van 'Certificaten'-object onder 'Certificaten'-discipline (=3481).
PROCEDURE vervangen_cert
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_add NUMBER (10);
v_melding_key NUMBER (10);
CURSOR c1
IS
SELECT '[' || TO_CHAR (d.ins_deel_key) || '|' || d.ins_deel_omschrijving || '|' || bt.ins_kenmerkdeel_waarde || '] '
aanduiding,
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving, -- 7421=Certificaat naam
d.ins_deel_vervaldatum,
MAX (md.ins_discipline_key) behandelteam_key,
MAX (md.ins_discipline_omschrijving) behandelteam_oms,
MAX (a.ins_kenmerkdeel_waarde) aanvrager, -- 7422=Aanvrager
MAX (i.ins_kenmerkdeel_waarde) installateur, -- 7423=Installateur
MAX (p.ins_kenmerkdeel_waarde) product, -- 7424=Product
MAX (u.ins_kenmerkdeel_waarde) uitgever, -- 7425=Uitgever
MAX (o.ins_kenmerkdeel_waarde) omgeving, -- 7426=Omgeving
MAX (t.ins_kenmerkdeel_waarde) toelichting -- 7427=Toelichting
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 381) bt, -- Beheerteam (Facilitor)
(SELECT md.*
FROM mld_discipline md, mld_disc_params dp
WHERE md.ins_discipline_key = dp.mld_ins_discipline_key
AND BITAND (dp.mld_disc_params_srtgroep, 2) = 2) md, -- Behandelteams
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 401) a, -- Aanvrager
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 402) i, -- Installateur
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 403) p, -- Product
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 405) u, -- Uitgever
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 404) o, -- Omgeving
(SELECT * FROM ins_v_aanwezigkenmerkdeel WHERE ins_kenmerk_key = 406) t -- Toelichting
WHERE d.ins_deel_vervaldatum = TRUNC (SYSDATE + 30)
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 3481 -- Certificaten
AND d.ins_deel_key = bt.ins_deel_key(+)
AND UPPER (TRIM (bt.ins_kenmerkdeel_waarde)) = UPPER (TRIM (md.ins_discipline_omschrijving(+)))
AND d.ins_deel_key = a.ins_deel_key(+)
AND d.ins_deel_key = i.ins_deel_key(+)
AND d.ins_deel_key = p.ins_deel_key(+)
AND d.ins_deel_key = u.ins_deel_key(+)
AND d.ins_deel_key = o.ins_deel_key(+)
AND d.ins_deel_key = t.ins_deel_key(+)
GROUP BY '[' || TO_CHAR (d.ins_deel_key) || '|' || d.ins_deel_omschrijving || '|' || bt.ins_kenmerkdeel_waarde || '] ',
sd.ins_srtdeel_code,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_vervaldatum
ORDER BY 2, 3;
BEGIN
v_count_add := 0;
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed)
VALUES ('MLD',
4, -- Email
2, -- ZT/Den Haag
NULL, -- mld_alg_onroerendgoed_keys
SYSDATE,
SUBSTR ('Certificaat ' || rec.ins_deel_omschrijving || ' verloopt op ' || TO_CHAR (rec.ins_deel_vervaldatum, 'dd-mm-yyyy'), 1, 80),
'Certificaat ' || rec.ins_deel_omschrijving || ' verloopt op ' || TO_CHAR (rec.ins_deel_vervaldatum, 'dd-mm-yyyy'),
rec.behandelteam_key,
3781, -- Vervangen certificaat
NULL,
NULL, -- prs_kostenplaats_key
22946, -- TODO:Persoon met achternaam=CMDB en login=MBCMDB!
22946, -- TODO:Persoon met achternaam=CMDB en login=MBCMDB!
NULL,
3) -- Normaal
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := 'Fout toevoegen ' || rec.ins_srtdeel_code || '-object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, rec.ins_deel_key);
v_errormsg := 'Fout toevoegen Certificaat naam'; -- 7421='Certificaat naam' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7421, rec.ins_deel_omschrijving);
v_errormsg := 'Fout toevoegen Aanvrager'; -- 7422='Aanvrager' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7422, rec.aanvrager);
v_errormsg := 'Fout toevoegen Installateur'; -- 7423='Installateur' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7423, rec.installateur);
v_errormsg := 'Fout toevoegen Product'; -- 7424='Product' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7424, rec.product);
v_errormsg := 'Fout toevoegen Uitgever'; -- 7425='Uitgever' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7425, rec.uitgever);
v_errormsg := 'Fout toevoegen Omgeving'; -- 7426='Omgeving' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7426, rec.omgeving);
v_errormsg := 'Fout toevoegen Toelichting'; -- 7427='Toelichting' volgens object
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 7427, rec.toelichting);
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, NULL);
/*
-- Handle workflow actions for completion.
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
*/
v_count_add := v_count_add + 1;
--IF MOD (v_count_add, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('MNNL_CERT', 'E', rec.aanduiding || v_errormsg, '');
END;
END LOOP;
fac.writelog ('MNNL_CERT', 'S', 'Vervangen certificaat/#toegevoegd: ' || TO_CHAR (v_count_add), '');
END vervangen_cert;
END;
/
-- ACTIVE DIRECTORY
CREATE OR REPLACE PROCEDURE mnnl_import_prs (p_import_key IN NUMBER)
AS
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Generieke import';
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure.
-- (Smokkelen met de functie; daar zet ik nu de achternaam in en in de post-import wordt dat 'Onbekend'.)
prs.import_perslid (p_import_key,
'8;0;0;0;0;0;5;4;0;3;' || -- Locatiecode=8/Email=6/Afdeling=5/Achternaam=4/Voornaam=3
'0;0;0;0;0;7;0;6;0;10;' || -- Telefoon=7/Email=6/Personeelsnummer=10
'3;1;0;0;0;0;11;0;0;0;' || -- Functie=3/Login=1/Woon-Werk-afstand=11
'0;0;0;0;0;0;0;0;0;0;' ||
'0;0;0;0;0;0',
--1 2 3 4 5 6 7 8 9 10 11
'"sAMAccountName";"name";"givenname";"sn";"department";"mail";"telephoneNumber";"L"%' -- Daarna nog ;"Company";"EmployeeID";"WW"
);
v_errorhint := 'Verrijken import';
-- Ontbrekende/afwijkende zaken rechtzetten:
-- - vul functie met 'Onbekend'
-- - vul titel/geslacht/mobiel/dienstverband met huidige waarde (om wissen te voorkomen)
UPDATE fac_imp_perslid p
SET prs_srtperslid_omschrijving = (SELECT prs_srtperslid_omschrijving FROM prs_srtperslid WHERE prs_srtperslid_key = 1),
(prs_perslid_titel, prs_perslid_geslacht, prs_perslid_mobiel, prs_perslid_dienstverband) =
(SELECT MAX (prs_perslid_titel), MAX (prs_perslid_geslacht), MAX (prs_perslid_mobiel), MAX (prs_perslid_dienstverband)
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER (p.prs_perslid_oslogin))
WHERE fac_import_key = p_import_key;
COMMIT;
-- Werkplek toekennen, door locatiecode, gebouwcode, verdiepingvolgnr en ruimtenr in importabel te zetten.
-- Heeft de persoon al een WP op deze locatie? Dan kiezen we die, met als netto resultaat dat er niets gebeurt.
-- Anders bepalen we de alfabetisch eerste ruimte op locatie en kiezen we die.
UPDATE fac_imp_perslid ip
SET (alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr) =
(SELECT rg.alg_locatie_code, rg.alg_gebouw_upper, rg.alg_verdieping_volgnr, rg.alg_ruimte_nr
FROM alg_v_ruimte_gegevens rg
WHERE alg_ruimte_aanduiding = COALESCE (
-- Eventuele bestaande werkplek op locatie.
(SELECT MAX (rg.alg_ruimte_aanduiding)
FROM prs_perslid p, prs_perslidwerkplek pw, prs_werkplek w, alg_v_ruimte_gegevens rg
WHERE p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = rg.alg_ruimte_key
AND rg.alg_locatie_omschrijving = 'Den Haag' -- MNNL#78061: Hard op Den Haag!
AND p.prs_perslid_oslogin = UPPER (ip.prs_perslid_oslogin)),
-- Standaardruimte volgens locatieomschrijving in import (alfabetisch eerste).
(SELECT MIN (alg_ruimte_aanduiding)
FROM alg_v_ruimte_gegevens
WHERE alg_locatie_omschrijving = 'Den Haag' -- MNNL#78061: Hard op Den Haag!
AND UPPER (alg_ruimte_nr) = '_WP')))
WHERE fac_import_key = p_import_key;
COMMIT;
-- MNNL#82215:
-- Initieel eenmalig een kopie van PRS_PERSLID_OSLOGIN naar -EXTERNOSLOGIN!
UPDATE prs_perslid p
SET p.prs_perslid_externoslogin = p.prs_perslid_oslogin -- Eigenlijk niet meer nodig, want OSLOGIN niet meer gewist bij verwijderen persoon!
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_externoslogin IS NULL
AND p.prs_perslid_oslogin IS NOT NULL
AND EXISTS (SELECT 1 FROM prs_v_afdeling_boom WHERE prs_bedrijf_key = 5 AND prs_afdeling_key = p.prs_afdeling_key) -- MN
;
-- MNNL#82215/MNNL#84130:
-- Recover PRS_PERSLID_OSLOGIN uit -EXTERNOSLOGIN (waar onzichtbare kopie
-- staat) en reanimeer persoon!
-- NB. Elke loginnaam wordt uniek bepaald/toegekend en nooit meer toegekend
-- aan een andere MN-er!
--SELECT p.prs_perslid_key, p.prs_perslid_email, p.prs_perslid_oslogin, p.prs_perslid_externoslogin
-- FROM prs_perslid p
-- WHERE 1 = 1 --p.prs_perslid_verwijder IS NULL -- Ook voor verwijderde personen!?
-- AND p.prs_perslid_oslogin IS NULL
-- AND EXISTS (SELECT 1 FROM prs_v_afdeling_boom WHERE prs_bedrijf_key = 5 AND prs_afdeling_key = p.prs_afdeling_key) -- MN
-- AND EXISTS (SELECT 1 FROM fac_imp_perslid WHERE prs_perslid_oslogin = p.prs_perslid_externoslogin);
UPDATE prs_perslid p
SET p.prs_perslid_verwijder = NULL,
p.prs_perslid_oslogin = p.prs_perslid_externoslogin -- Eigenlijk niet meer nodig, want OSLOGIN niet meer gewist bij verwijderen persoon!
WHERE 1 = 1 --p.prs_perslid_verwijder IS NULL -- Ook voor verwijderde personen!?
AND EXISTS (SELECT 1 FROM prs_v_afdeling_boom WHERE prs_bedrijf_key = 5 AND prs_afdeling_key = p.prs_afdeling_key) -- MN
AND EXISTS (SELECT 1 FROM fac_imp_perslid WHERE prs_perslid_oslogin = p.prs_perslid_externoslogin);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END mnnl_import_prs;
/
CREATE OR REPLACE PROCEDURE mnnl_update_prs (p_import_key IN NUMBER)
IS
c_ww_kkey NUMBER (10) := 1000; -- 'Woon-Werk-afstand'-kenmerk!
c_pp_gkey NUMBER (10) := 2461; -- 'Reserveer parkeerplek'-autorisatiegroep!
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
-- Verwijderen personen *binnen MN* die niet meer in importbestand voorkomen.
CURSOR c_del
IS
SELECT p.prs_perslid_key
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 5 -- MN
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid
WHERE UPPER (prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin))
ORDER BY 1;
-- Bijwerken Woon-Werk-afstand (= kenmerk1).
CURSOR c_prs
IS
SELECT '[' || TO_CHAR (x.prs_perslid_key) || '|' || x.prs_perslid_oslogin || '] ' aanduiding,
x.prs_perslid_key, kl.prs_kenmerklink_key, ROUND (fac.safe_to_number (x.prs_kenmerk1), 2) afstand_ww
FROM fac_imp_perslid x,
prs_v_aanwezigperslid p,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE fac.safe_to_number (x.prs_kenmerk1) IS NOT NULL
AND x.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_inactief IS NULL
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) != fac.safe_to_number (x.prs_kenmerk1) -- Afstand gewijzigd?
ORDER BY 2;
-- Afnemen _Default-rol afh. van configuratie in Eigen tabel met key=721!
CURSOR c_no_default
IS
SELECT '[' || p.prs_perslid_login || '] ' aanduiding, p.prs_perslid_key
FROM prs_v_aanwezigperslid p, fac_v_aanwezigusrdata ud
WHERE ud.fac_usrtab_key = 721 -- PRS-imp. vs. FE
AND ud.fac_usrdata_omschr LIKE 'Login%' -- Op login _Default afnemen!
AND p.prs_perslid_oslogin LIKE REPLACE (ud.fac_usrdata_code, '_', '\_') || '%' ESCAPE '\' -- ' tbv. opmaak
AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\' -- ' tbv. opmaak
UNION ALL
SELECT '[' || p.prs_perslid_login || '] ' aanduiding, p.prs_perslid_key
FROM prs_v_aanwezigperslid p, fac_v_aanwezigusrdata ud
WHERE ud.fac_usrtab_key = 721 -- PRS-imp. vs. FE
AND ud.fac_usrdata_omschr LIKE 'Afdeling%' -- Op afdeling _Default afnemen!
AND TO_CHAR (p.prs_afdeling_key) = ud.fac_usrdata_code
AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\' -- ' tbv. opmaak
ORDER BY 2;
BEGIN
-- Generic update
SELECT COUNT(*) INTO v_count FROM fac_imp_perslid;
IF v_count < 300
THEN
fac.imp_writelog (p_import_key, 'E',
'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')',
'Zie specificatie');
RETURN;
END IF;
-- Verwijderen personen *binnen MN* die niet meer in importbestand voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
-- p_sleutelkolom Bevat het veld die als sleutel bij de import dient
-- LOGIN - logincode
-- p_alg_type Werkplekken binnen dit niveau verwijderen
-- NULL - geen werkplekken verwijderen
-- A - altijd vaste werkplek verwijderen
-- R,V,G,L,D - werkplek(en) op dit niveau verwijderen
prs.update_perslid (p_import_key, 'LOGIN', NULL);
-- MNNL#79263: De 'Gebruiker mag overrulen'-notificaties op 1 (= Portal aan
-- en E-mail uit).
-- NB. Hier bepaald en MN-ers kunnen daar niet van afwijken!
UPDATE prs_perslid p
SET p.prs_perslid_srtnoti_mode = 1
WHERE p.prs_perslid_verwijder IS NULL
AND EXISTS
(SELECT 1
FROM fac_imp_perslid
WHERE UPPER (prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin));
-- Bijwerken extra persoonsvelden (niet ondersteund door standaard import).
v_count := 0;
FOR rec IN c_prs
LOOP
BEGIN
--IF rec.prs_kenmerklink_key IS NULL
--THEN
-- v_errorhint := 'Fout toevoegen Woon-Werk-afstand';
-- INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde)
-- VALUES (rec.prs_perslid_key, 'P', c_ww_kkey, TO_CHAR (rec.afstand_ww));
--ELSE
-- v_errorhint := 'Fout bijwerken Woon-Werk-afstand';
-- UPDATE prs_kenmerklink
-- SET prs_kenmerklink_waarde = TO_CHAR (rec.afstand_ww)
-- WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key;
--END IF;
v_errorhint := 'Fout bijwerken Woon-Werk-afstand';
prs.upsertkenmerk (c_ww_kkey, rec.prs_perslid_key, TO_CHAR (rec.afstand_ww)); -- Woon-Werk-afstand
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#bijgewerkt: ' || TO_CHAR (v_count), '');
/*
-- Afnemen PP-autorisatiegroep als geldt woon-werk-afstand <8km!
v_errorhint := 'Fout afnemen PP-autorisatiegroep';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 5 -- MN
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) < 8
AND p.prs_perslid_key = gg.prs_perslid_key);
*/
-- Toekennen PP-autorisatiegroep als geldt woon-werk-afstand >=8km!
v_errorhint := 'Fout toekennen PP-autorisatiegroep';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT c_pp_gkey, p.prs_perslid_key -- PP-autorisatiegroep
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 5 -- MN
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) >= 8
AND NOT EXISTS -- Niet al in PP-autorisatiegroep!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
AND prs_perslid_key = p.prs_perslid_key);
-- Afnemen 2101=_Default_VB van medewerkers niet onder VB (op niveau 1)!
v_errorhint := 'Fout afnemen _Default_VB';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 2101 -- _Default_VB
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 421 -- Afdeling-1 met code=VB!
AND p.prs_perslid_key = gg.prs_perslid_key);
COMMIT;
-- Toekennen 2101=_Default_VB aan medewerkers onder VB (op niveau 1)!
v_errorhint := 'Fout toekennen _Default_VB';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 2101, p.prs_perslid_key -- _Default_VB
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_oslogin IS NOT NULL
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 421 -- Afdeling-1 met code=VB!
AND NOT EXISTS -- Niet al in _Default_VB!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 2101 -- _Default_VB
AND prs_perslid_key = p.prs_perslid_key);
COMMIT;
-- Afnemen 2341=_Default_IV van medewerkers niet onder IV (op niveau 1)!
v_errorhint := 'Fout afnemen _Default_IV';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 2341 -- _Default_IV
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 10 -- Afdeling-1 met code=IV!
AND p.prs_perslid_key = gg.prs_perslid_key);
COMMIT;
-- Toekennen 2341=_Default_IV aan medewerkers onder IV (op niveau 1)!
v_errorhint := 'Fout toekennen _Default_IV';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 2341, p.prs_perslid_key -- _Default_IV
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_oslogin IS NOT NULL
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 10 -- Afdeling-1 met code=IV!
AND NOT EXISTS -- Niet al in _Default_IV!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 2341 -- _Default_IV
AND prs_perslid_key = p.prs_perslid_key);
COMMIT;
-- Afnemen 2342=_Default_PV van medewerkers niet onder PV (op niveau 1)!
v_errorhint := 'Fout afnemen _Default_PV';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 2342 -- _Default_PV
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 422 -- Afdeling-1 met code=PV!
AND p.prs_perslid_key = gg.prs_perslid_key);
COMMIT;
-- Toekennen 2342=_Default_PV aan medewerkers onder PV (op niveau 1)!
v_errorhint := 'Fout toekennen _Default_PV';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 2342, p.prs_perslid_key -- _Default_PV
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_oslogin IS NOT NULL
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = 422 -- Afdeling-1 met code=PV!
AND NOT EXISTS -- Niet al in _Default_PV!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 2342 -- _Default_PV
AND prs_perslid_key = p.prs_perslid_key);
COMMIT;
-- Afnemen 2343=_Default_FRS + EC van medewerkers niet onder FRS of EC (op niveau 1)!
v_errorhint := 'Fout afnemen _Default_FRS + EC';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 2343 -- _Default_FRS + EC
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 IN (1061, 1041) -- Afdeling-1 met code=FRS of EC!
AND p.prs_perslid_key = gg.prs_perslid_key);
COMMIT;
-- Toekennen 2343=_Default_FRS + EC aan medewerkers onder FRS of EC (op niveau 1)!
v_errorhint := 'Fout toekennen _Default_FRS + EC';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 2343, p.prs_perslid_key -- _Default_FRS + EC
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
WHERE p.prs_perslid_oslogin IS NOT NULL
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 IN (1061, 1041) -- Afdeling-1 met code=FRS of EC!
AND NOT EXISTS -- Niet al in _Default_FRS + EC!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 2343 -- _Default_FRS + EC
AND prs_perslid_key = p.prs_perslid_key);
COMMIT;
-- Afnemen _Default-rol afh. van configuratie in Eigen tabel met key=721!
FOR rec IN c_no_default
LOOP
BEGIN
v_errorhint := 'Fout afnemen _Default(s)';
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key IN (1, 2101, 2341, 2342, 2343) -- _Default/_Default_VB/_Default_IV/_Default_PV/_Default_FRS + EC
AND prs_perslid_key = rec.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', rec.aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
END mnnl_update_prs;
/
CREATE OR REPLACE PROCEDURE MNNL_IMPORT_WW (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';'; -- Field seperator
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_imp NUMBER (10) := 0;
-- De importvelden
v_perslid_nr VARCHAR2 (255);
v_afstand_ww VARCHAR2 (255);
CURSOR c1
IS
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM mnnl_imp_ww;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
-- Lees alle veldwaarden
--Personeelsnummer;Afstand woon werk
fac.imp_getfield (v_newline, c_delim, v_perslid_nr);
fac.imp_getfield (v_newline, c_delim, v_afstand_ww);
v_aanduiding := '[' || v_perslid_nr || '|' || v_afstand_ww || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_afstand_ww) = 'AFSTAND WOON WERK'
THEN
header_is_valid := 1;
END IF;
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
THEN
BEGIN
v_count_tot := v_count_tot + 1;
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO mnnl_imp_ww (perslid_nr, afstand_ww)
VALUES (TRIM (v_perslid_nr), fac.safe_to_number (REPLACE (v_afstand_ww, ',', '.')));
v_count_imp := v_count_imp + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Woon-Werk afgebroken!');
END MNNL_IMPORT_WW;
/
CREATE OR REPLACE PROCEDURE MNNL_UPDATE_WW (p_import_key IN NUMBER)
AS
c_ww_kkey NUMBER (10) := 1000; -- 'Woon-Werk-afstand'-kenmerk!
c_pp_gkey NUMBER (10) := 2461; -- 'Reserveer parkeerplek'-autorisatiegroep!/A-key=2421
v_errormsg VARCHAR2 (1000) := '';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_count NUMBER (10);
-- Bijwerken persoonsgegevens met Woon-Werk-afstand.
CURSOR c_upd_ww
IS
SELECT '[' || TO_CHAR (p.prs_perslid_key) || '|' || p.prs_perslid_nr || '] ' aanduiding,
p.prs_perslid_key,
p.prs_perslid_nr,
kl.prs_kenmerklink_key,
ROUND (x.afstand_ww, 2) afstand_ww
FROM mnnl_imp_ww x,
prs_v_aanwezigperslid p,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE x.perslid_nr = p.prs_perslid_nr
AND p.prs_perslid_inactief IS NULL
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) != x.afstand_ww -- Afstand gewijzigd?
ORDER BY 2;
BEGIN
v_count := 0;
FOR rec IN c_upd_ww
LOOP
BEGIN
IF rec.prs_kenmerklink_key IS NULL
THEN
v_errormsg := 'Fout toevoegen woon-werk-afstand';
INSERT INTO prs_kenmerklink (prs_link_key, prs_kenmerklink_niveau, prs_kenmerk_key, prs_kenmerklink_waarde)
VALUES (rec.prs_perslid_key, 'P', c_ww_kkey, TO_CHAR (rec.afstand_ww));
ELSE
v_errormsg := 'Fout bijwerken woon-werk-afstand';
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = TO_CHAR (rec.afstand_ww)
WHERE prs_kenmerklink_key = rec.prs_kenmerklink_key;
END IF;
v_count := v_count + 1;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'Woon-Werk/#bijgewerkt: ' || TO_CHAR (v_count), '');
-- Afnemen PP-autorisatiegroep als geldt woon-werk-afstand <8km!
v_errormsg := 'Fout afnemen PP-autorisatiegroep';
DELETE FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
AND EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 5 -- MN
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) < 8
AND p.prs_perslid_key = gg.prs_perslid_key);
-- Toekennen PP-autorisatiegroep als geldt woon-werk-afstand >=8km!
v_errormsg := 'Fout toekennen PP-autorisatiegroep';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT c_pp_gkey, p.prs_perslid_key -- PP-autorisatiegroep
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab,
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = c_ww_kkey) kl
WHERE (p.prs_perslid_oslogin IS NULL OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 5 -- MN
AND p.prs_perslid_key = kl.prs_link_key(+)
AND COALESCE (fac.safe_to_number (kl.prs_kenmerklink_waarde), -1) >= 8
AND NOT EXISTS -- Niet al in PP-autorisatiegroep!
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = c_pp_gkey -- PP-autorisatiegroep
AND prs_perslid_key = p.prs_perslid_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces Woon-Werk afgebroken!');
END MNNL_UPDATE_WW;
/
-- KOPPELING SENTIDO
CREATE OR REPLACE VIEW mnnl_v_api_sentido
AS
SELECT TO_CHAR(rr.res_rsv_ruimte_van, 'YYYYMMDD-HH24MI')||TO_CHAR(rr.res_rsv_ruimte_tot, ',YYYYMMDD-HH24MI') srt,
rr.res_reservering_key||'/'||rr.res_rsv_ruimte_volgnr nummer,
TO_CHAR(rr.res_rsv_ruimte_van, 'YYYY-MM-DD HH24:MI:SS') van,
TO_CHAR(rr.res_rsv_ruimte_tot, 'YYYY-MM-DD HH24:MI:SS') tot,
rr.res_rsv_ruimte_omschrijving omschrijving,
pf.prs_perslid_naam_full host,
TRIM(r.res_ruimte_nr) ruimte,
r.res_ruimte_key ruimte_key
FROM res_rsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte r,
prs_v_perslid_fullnames pf
WHERE ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
AND r.res_ruimte_key = ro.res_ruimte_key
AND pf.prs_perslid_key = rr.res_rsv_ruimte_host_key
AND rr.res_rsv_ruimte_verwijder IS NULL
AND rr.res_status_fo_key NOT IN (3, 4)
AND COALESCE(rr.res_rsv_ruimte_bezoekers_shown, rr.res_rsv_ruimte_noshow) IS NULL
AND TRUNC(rr.res_rsv_ruimte_van) BETWEEN TRUNC(SYSDATE)
AND TRUNC(SYSDATE+3);
-- MNNL#35290: Rapportje met res_ruimte-gegevens, inclusief volledige URL naar de room booking pagina,
-- voor door Sentido te genereren QR-code
CREATE OR REPLACE VIEW mnnl_v_rap_ruimtes_sentido
AS
SELECT res_ruimte_nr ruimte_nr,
res_ruimte_key ruimte_key,
'https://mnnl.facilitor.nl/?u=MYsemfcDEbLOXShZ&'||'res_ruimte_key='||res_ruimte_key ruimte_url
FROM res_v_aanwezigruimte
ORDER BY res_ruimte_nr;
--- MNNL#32852
--- Rapport tbv cateraar Radarport. Alleen ruimten uit catalogus Radarport BG (key 621)
--- En catering in Gebouw Radarport behalve catalogi Servies R9 aanvullen (key 321 ) en Koffie en thee (key 43)
CREATE OR REPLACE VIEW MNNL_V_RAP_CAT_RADAR
(
DATUM,
VAN,
TOT,
RESNR,
FCLT_H_RES_KEY,
RUIMTE,
FCLT_F_ACTIVITEIT,
OMSCHRIJVING,
GASTHEER_VROUW,
TELEFOON,
AANTAL_PERSONEN,
VOORZIENINGEN
)
AS
SELECT RRR.RES_RSV_RUIMTE_VAN,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI') Van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') Tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr Resnr,
rrr.res_rsv_ruimte_key,
r2a.ruimte_nr,
ra.res_activiteit_omschrijving Activiteit,
rrr.res_rsv_ruimte_omschrijving Omschrijving,
pf.prs_perslid_naam_full Gastheer_vrouw,
p.prs_perslid_telefoonnr,
rrr.res_rsv_ruimte_bezoekers pers,
voorzieningen
FROM res_rsv_ruimte rrr,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
res_activiteit ra,
prs_v_perslid_fullnames pf,
prs_perslid p,
( SELECT res_rsv_ruimte_key,
LISTAGG (voorziening, CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY voorziening)
AS voorzieningen
FROM (SELECT res_rsv_ruimte_key,
res_deel_omschrijving voorziening
FROM res_deel rd, res_rsv_deel rrd
WHERE RES_RSV_DEEL_verwijder IS NULL
AND rd.res_deel_key = rrd.res_deel_key
AND res_rsv_ruimte_key IS NOT NULL
AND res_discipline_key != 81
UNION ALL
SELECT res_rsv_ruimte_key,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| res_artikel_omschrijving
voorziening
FROM res_artikel ra, res_rsv_artikel rra
WHERE RES_RSV_artikel_verwijder IS NULL
AND ra.res_artikel_key = rra.res_artikel_key)
GROUP BY res_rsv_ruimte_key) voorz,
( SELECT res_ruimte_opstel_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
AND rr.res_discipline_key = 621
GROUP BY res_ruimte_opstel_key) r2a
WHERE rrr.res_ruimte_opstel_key = r2a.res_ruimte_opstel_key
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE - 14)
AND TRUNC (SYSDATE + 366)
AND r.alg_ruimte_key = r2a.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND ra.res_activiteit_key = rrr.res_activiteit_key
AND pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND voorz.res_rsv_ruimte_key(+) = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_Verwijder IS NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL
SELECT RRR.RES_RSV_RUIMTE_VAN,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI') Van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') Tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr Resnr,
rrr.res_rsv_ruimte_key,
r2a.ruimte_nr,
ra.res_activiteit_omschrijving Activiteit,
rrr.res_rsv_ruimte_omschrijving Omschrijving,
pf.prs_perslid_naam_full Gastheer_vrouw,
p.prs_perslid_telefoonnr,
rrr.res_rsv_ruimte_bezoekers pers,
voorzieningen
FROM res_rsv_ruimte rrr,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r,
res_activiteit ra,
prs_v_perslid_fullnames pf,
prs_perslid p,
( SELECT res_rsv_ruimte_key,
LISTAGG (voorziening, CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY voorziening)
AS voorzieningen
FROM (SELECT res_rsv_ruimte_key,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| res_artikel_omschrijving
voorziening
FROM res_artikel ra, res_rsv_artikel rra
WHERE RES_RSV_artikel_verwijder IS NULL
AND ra.res_artikel_key = rra.res_artikel_key
AND ra.res_discipline_key NOT IN (321, 43))
GROUP BY res_rsv_ruimte_key) voorz,
( SELECT res_ruimte_opstel_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
AND rr.res_discipline_key != 621
GROUP BY res_ruimte_opstel_key) r2a
WHERE rrr.res_ruimte_opstel_key = r2a.res_ruimte_opstel_key
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE - 14)
AND TRUNC (SYSDATE + 366)
AND r.alg_ruimte_key = r2a.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = 1
AND ra.res_activiteit_key = rrr.res_activiteit_key
AND pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND voorz.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_Verwijder IS NULL
AND p.prs_perslid_key = pf.prs_perslid_key
UNION ALL
SELECT RRR.RES_RSV_RUIMTE_VAN,
TO_CHAR (rra.res_rsv_artikel_levering, 'HH24:MI') Van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI') Tot,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr Resnr,
rrr.res_rsv_ruimte_key,
alg_ruimte_nr,
ra.res_activiteit_omschrijving Activiteit,
rrr.res_rsv_ruimte_omschrijving Omschrijving,
pf.prs_perslid_naam_full Gastheer_vrouw,
p.prs_perslid_telefoonnr,
rrr.res_rsv_ruimte_bezoekers pers,
TO_CHAR (rra.res_rsv_artikel_aantal)
|| ' * '
|| res_artikel_omschrijving
voorziening
FROM res_artikel ra,
res_rsv_artikel rra,
res_rsv_ruimte rrr,
alg_ruimte r,
alg_verdieping v,
prs_v_perslid_fullnames pf,
res_activiteit ra,
prs_perslid p
WHERE RES_RSV_artikel_verwijder IS NULL
AND ra.res_artikel_key = rra.res_artikel_key
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE - 14)
AND TRUNC (SYSDATE + 366)
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND res_ruimte_opstel_key IS NULL
AND rrr.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = 1
AND pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
AND ra.res_activiteit_key = rrr.res_activiteit_key
AND ra.res_discipline_key NOT IN (321, 43)
AND p.prs_perslid_key = pf.prs_perslid_key;
-- MNNL#40507: Onderstaande views zijn voor de inrichting van de Realtime Monitor
CREATE OR REPLACE VIEW MNNL_V_STAAFDIAGRAM_SLA
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_YAS3_,
FCLT_YAS4_,
FCLT_SORT
)
AS
SELECT "TO_CHAR(DAG,'DD-MM-YYYY')",
"'Voorraad ITL'",
"'Binnen SLA ITL'",
"'Voorraad ONB'",
"'Binnen SLA ONB'",
dag
FROM (SELECT TO_CHAR (dag, 'DD-MM-YYYY'),
mld_type mld_type,
mld_melding_key,
dag
FROM (SELECT m.mld_melding_key,
mt.mld_type,
mld_melding_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (38, 44)
AND fac_tracking_refkey = m.mld_melding_key)
datum_afgemeld,
sla_eind
FROM mld_melding m,
(SELECT mld_melding_key,
'Binnen SLA ONB' mld_type,
mld.geteinddatum (mld_melding_key)
+ COALESCE (
m.mld_melding_t_respijt.tijdsduur,
0)
sla_eind
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_ins_discipline_key IN
('986',
'1002',
'1008',
'1018',
'1026',
'1028',
'1030',
'1040',
'1062',
'1063',
'1081',
'1032',
'984')
UNION ALL
SELECT mld_melding_key,
'Binnen SLA ITL' mld_type,
mld.geteinddatum (mld_melding_key)
+ COALESCE (
m.mld_melding_t_respijt.tijdsduur,
0)
sla_eind
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_ins_discipline_key IN
('982',
'996',
'998',
'1000',
'1016',
'1024',
'1038',
'1046',
'1061')) mt
WHERE m.mld_melding_key = mt.mld_melding_key) m,
( SELECT TRUNC (SYSDATE) - (ROWNUM - 1) dag
FROM DUAL
CONNECT BY LEVEL <= 10) v
WHERE (TRUNC (datum_afgemeld) > dag OR datum_afgemeld IS NULL)
AND TO_CHAR (dag, 'D') NOT IN ('1', '7')
AND TRUNC (mld_melding_datum) <= dag
AND sla_eind >= dag
AND sla_eind >= mld_melding_datum
UNION ALL
SELECT TO_CHAR (dag, 'DD-MM-YYYY'),
mld_type,
mld_melding_key,
dag
FROM (SELECT m.mld_melding_key,
mt.mld_type,
mld_melding_datum,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_srtnotificatie_key IN (38, 44)
AND fac_tracking_refkey = m.mld_melding_key)
datum_afgemeld
FROM mld_melding m,
(SELECT mld_melding_key, 'Voorraad ITL' mld_type
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_ins_discipline_key IN
('982',
'996',
'998',
'1000',
'1016',
'1024',
'1038',
'1046',
'1061')
UNION ALL
SELECT mld_melding_key, 'Voorraad ONB' mld_type
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key =
std.mld_stdmelding_key
AND std.mld_ins_discipline_key IN
('986',
'1002',
'1008',
'1018',
'1026',
'1028',
'1030',
'1040',
'1062',
'1063',
'1081',
'1032',
'984')) mt
WHERE m.mld_melding_key = mt.mld_melding_key) m,
( SELECT TRUNC (SYSDATE) - (ROWNUM - 1) dag
FROM DUAL
CONNECT BY LEVEL <= 10) v
WHERE (TRUNC (datum_afgemeld) > dag OR datum_afgemeld IS NULL)
AND TO_CHAR (dag, 'D') NOT IN ('1', '7')
AND TRUNC (mld_melding_datum) <= dag) PIVOT (COUNT(mld_melding_key)
FOR mld_type
IN ('Voorraad ITL',
'Binnen SLA ITL',
'Voorraad ONB',
'Binnen SLA ONB'));
CREATE OR REPLACE VIEW MNNL_V_INCIDENTEN_BINNEN_SLA
(
FCLT_XAS_WEEKNUMMER,
FCLT_YAS_PERCENTAGE
)
AS
SELECT sub.weeknummer weeknr,
TRUNC (
SUM (DECODE (sub.mtijd, 'ja', 1, 0)) / COUNT (sub.mldkey) * 100)
Percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE WHEN
DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd,
TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IW-IY') weeknummer
FROM mld_stdmelding mst,
mld_melding m,
mld_v_ins_discipline mv,
ins_srtdiscipline isr
WHERE mst.mld_ins_discipline_key = mv.ins_discipline_key
AND isr.ins_srtdiscipline_key = mv.ins_srtdiscipline_key
AND COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)) > SYSDATE - 70
AND isr.ins_srtdiscipline_key = 22 -- Incident
AND m.mld_stdmelding_key = mst.mld_stdmelding_key
AND m.mld_melding_status = 5) sub -- status afgemeld
GROUP BY sub.weeknummer
ORDER BY weeknr;
CREATE OR REPLACE VIEW MNNL_V_INCIDENTEN_TABLE
(
GROEP,
NIEUW,
OPEN,
GESLOTEN,
SLA_PERCENTAGE
)
AS
SELECT 'Werkplek en Servicedesk' Naam,
wsnew.nieuw,
wsopen.open,
wsges.totaal,
wsges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1061', '1016', '1046')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
wsnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1061', '1016', '1046')
AND m.mld_melding_status NOT IN ('1', '5', '6')) wsopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1061', '1016', '1046')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) wsges
UNION
SELECT 'Wintel en Netwerk' Naam,
wnnew.nieuw,
wnopen.open,
wnges.totaal,
wnges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1024', '1000', '1038', '982')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
wnnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1024', '1000', '1038', '982')
AND m.mld_melding_status NOT IN ('1', '5', '6')) wnopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1024', '1000', '1038', '982')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) wnges
UNION
SELECT 'Oracle Platform' Naam,
opnew.nieuw,
opopen.open,
opges.totaal,
opges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('996', '998')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
opnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('996', '998')
AND m.mld_melding_status NOT IN ('1', '5', '6')) opopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('996', '998')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) opges;
CREATE OR REPLACE VIEW MNNL_V_MDT_INCIDENTEN_TABLE
(
GROEP,
NIEUW,
OPEN,
GESLOTEN,
SLA_PERCENTAGE
)
AS
SELECT 'MDTs Basisadministratie' Naam,
mbanew.nieuw,
mbaopen.open,
mbages.totaal,
mbages.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1030')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mbanew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1030')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mbaopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1030')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mbages
UNION
SELECT 'MDTs Pensioenadministratie' Naam,
mpenew.nieuw,
mpeopen.open,
mpeges.totaal,
mpeges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1008', '1002')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mpenew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1008', '1002')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mpeopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1008', '1002')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mpeges
UNION
SELECT 'MDTs Klantcontact en Portalen' Naam,
mkpnew.nieuw,
mkpopen.open,
mkpges.totaal,
mkpges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1081', '1040')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mkpnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1081', '1040')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mkpopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1081', '1040')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mkpges
UNION
SELECT 'MDTs Verzekeringen' Naam,
mvznew.nieuw,
mvzopen.open,
mvzges.totaal,
mvzges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1018')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mvznew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1018')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mvzopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1018')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mvzges
UNION
SELECT 'MDTs Procesbesturing en integratie' Naam,
mpinew.nieuw,
mpiopen.open,
mpiges.totaal,
mpiges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1028')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mpinew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1028')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mpiopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1028')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mpiges
UNION
SELECT 'MDTs Ontwikkelstraat' Naam,
monnew.nieuw,
monopen.open,
monges.totaal,
monges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1063')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
monnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1063')
AND m.mld_melding_status NOT IN ('1', '5', '6')) monopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1063')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) monges
UNION
SELECT 'MDTs Finance, Directie, Staven en IV' Naam,
mfdnew.nieuw,
mfdopen.open,
mfdges.totaal,
mfdges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1026', '986')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mfdnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1026', '986')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mfdopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1026', '986')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mfdges
UNION
SELECT 'MDTs Data en Reporting' Naam,
mdrnew.nieuw,
mdropen.open,
mdrges.totaal,
mdrges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1062')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
mdrnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1062')
AND m.mld_melding_status NOT IN ('1', '5', '6')) mdropen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1062')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) mdrges
UNION
SELECT 'Vermogensbeheer Informatie Management' Naam,
vimnew.nieuw,
vimopen.open,
vimges.totaal,
vimges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1032')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
vimnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1032')
AND m.mld_melding_status NOT IN ('1', '5', '6')) vimopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('1032')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) vimges
UNION
SELECT 'Document Services' Naam,
dosnew.nieuw,
dosopen.open,
dosges.totaal,
dosges.percentage
FROM (SELECT COUNT (m.mld_melding_key) nieuw
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('984')
AND m.mld_melding_status NOT IN '5'
AND TO_CHAR (m.mld_melding_datum, 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
dosnew,
(SELECT COUNT (m.mld_melding_key) open
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('984')
AND m.mld_melding_status NOT IN ('1', '5', '6')) dosopen,
(SELECT COUNT (sub.mldkey) totaal,
TRUNC( SUM (DECODE (sub.mtijd, 'ja', 1, 0))
/ COUNT (sub.mldkey)
* 100)
percentage
FROM (SELECT m.mld_melding_key mldkey,
CASE
WHEN DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0)
+ DECODE (
mld.getactualuitvoer (m.mld_melding_key).eenheid,
'U',
( (mld.geteinddatum (mld_melding_key)
- COALESCE (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), SYSDATE))
* 24)
+ COALESCE (DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL), 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END mtijd
FROM mld_v_ins_discipline md,
mld_melding m,
mld_stdmelding ms
WHERE md.ins_discipline_key = ms.mld_ins_discipline_key
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key IN ('984')
AND m.mld_melding_status = 5
AND TO_CHAR (COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1)), 'IYYY-IW') BETWEEN TO_CHAR (
SYSDATE
- 7,
'IYYY-IW')
AND TO_CHAR (
SYSDATE,
'IYYY-IW'))
sub) dosges;
-- MNNL#40849: Thema voor graphics / reserveren flexplekken
CREATE OR REPLACE VIEW mnnl_v_thema_wp_sensor
(
ins_deel_key,
alg_ruimte_key,
waarde
)
AS
SELECT d.ins_deel_key,
d.ins_alg_ruimte_key,
DECODE (rrd.res_rsv_deel_key, NULL, '01', '02')
FROM ins_deel d,
res_deel rd,
(SELECT res_rsv_deel_key, res_deel_key
FROM res_v_aanwezigrsv_deel
WHERE SYSDATE BETWEEN res_rsv_deel_van AND res_rsv_deel_tot) rrd
WHERE d.ins_srtdeel_key = 281
AND d.ins_deel_key = rd.res_ins_deel_key(+)
AND rd.res_deel_key = rrd.res_deel_key(+);
-- MNNL#40905: CMDB-import (Applicatie/Server/Database)!
-- MNNL#41252: CMDB-import nu incl. onderdelen (parent-child)!
CREATE OR REPLACE PROCEDURE mnnl_import_cmdb (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden:
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
--v_ins_deel_opmerking VARCHAR2 (2000); -- C2000
v_prs_afdeling_naam VARCHAR2 (255); -- C15
v_ins_parent_omschrijving VARCHAR2 (255); -- C60
CURSOR c1
IS
SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM fac_imp_ins;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
--fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
fac.imp_getfield (v_newline, c_delim, v_prs_afdeling_naam);
fac.imp_getfield (v_newline, c_delim, v_ins_parent_omschrijving);
v_aanduiding :=
'['
|| v_ins_discipline_omschrijving
|| '|'
|| v_ins_srtgroep_omschrijving
|| '|'
|| v_ins_srtdeel_code
|| '|'
|| v_ins_srtdeel_omschrijving
|| '|'
|| v_ins_deel_omschrijving
|| '|'
|| v_prs_afdeling_naam
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTOMSCHRIJVING'
--AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
AND UPPER (v_prs_afdeling_naam) = 'AFDELING'
--AND UPPER (v_ins_parent_omschrijving) = 'PARENT'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Discipline ongeldig; ongedefinieerd of te lang';
v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving);
IF v_ins_discipline_omschrijving IS NULL OR LENGTH (v_ins_discipline_omschrijving) > 30
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Groep ongeldig; ongedefinieerd of te lang';
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
IF v_ins_srtgroep_omschrijving IS NULL OR LENGTH (v_ins_srtgroep_omschrijving) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Soortcode ongeldig; ongedefinieerd of te lang';
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Soort ongeldig; ongedefinieerd of te lang';
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
IF v_ins_srtdeel_omschrijving IS NULL OR LENGTH (v_ins_srtdeel_omschrijving) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Objectid ongeldig; ongedefinieerd of te lang';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF v_ins_deel_omschrijving IS NULL OR LENGTH (v_ins_deel_omschrijving) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
--v_errormsg := 'Objectopmerking te lang';
--v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
--IF LENGTH (v_ins_deel_opmerking) > 2000
--THEN
-- v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 2000);
-- fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Opmerking wordt afgekapt!');
--END IF;
--
v_errormsg := 'Afdelingscode ongeldig; ongedefinieerd of te lang';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF v_prs_afdeling_naam IS NULL OR LENGTH (v_prs_afdeling_naam) > 15
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Parentid te lang';
v_ins_parent_omschrijving := TRIM (v_ins_parent_omschrijving);
IF LENGTH (v_ins_parent_omschrijving) > 60
THEN
v_ins_parent_omschrijving := NULL;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Parentid wordt genegeerd!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
prs_perslid_matchcode,
prs_perslid_matchwaarde,
ins_kenmerkwaarde1)
VALUES (v_ins_discipline_omschrijving,
v_ins_srtgroep_omschrijving,
v_ins_srtdeel_code,
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
NULL, -- Was v_ins_deel_opmerking!
'A',
v_prs_afdeling_naam,
v_ins_parent_omschrijving);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'CMDB-objecten/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'CMDB-objecten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces CMDB-objecten afgebroken!');
END mnnl_import_cmdb;
/
CREATE OR REPLACE PROCEDURE mnnl_update_cmdb (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
-- SUBPROC
PROCEDURE add_insdiscipline (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving)
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout toevoegen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
IF ccount = 0
THEN
INSERT INTO ins_tab_discipline (ins_discipline_module,
ins_discipline_omschrijving,
ins_discipline_min_level,
ins_discipline_kpnverplicht)
VALUES ('INS',
rec.ins_discipline_omschrijving,
1,
0)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
VALUES (v_discipline_key, 0);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Disciplines/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Disciplines/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_srtgroep (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving),
UPPER (ins_srtgroep_omschrijving)
ORDER BY 1, 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bepalen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND ins_discipline_key IN (1101, 1102, 1103) -- Applicatie/Server/Database
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
v_errormsg := 'Fout toevoegen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = rec.ins_srtgroep_upper;
IF ccount = 0
THEN
INSERT INTO ins_srtgroep (ins_discipline_key,
ins_srtgroep_module,
ins_srtgroep_omschrijving)
VALUES (v_discipline_key,
'INS',
rec.ins_srtgroep_omschrijving);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Groepsoorten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Groepsoorten/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
MAX (ins_srtdeel_code) ins_srtdeel_code,
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving),
UPPER (ins_srtgroep_omschrijving),
UPPER (ins_srtdeel_omschrijving)
ORDER BY 1, 2, 3;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
v_srtgroep_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bepalen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND ins_discipline_key IN (1101, 1102, 1103) -- Applicatie/Server/Database
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
v_errormsg := 'Fout bepalen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_srtgroep_module = 'INS'
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = rec.ins_srtgroep_upper;
v_errormsg := 'Fout toevoegen INS-objectsoort [' || rec.ins_srtdeel_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_module = 'INS'
AND ins_srtgroep_key = v_srtgroep_key
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = rec.ins_srtdeel_upper;
IF ccount = 0
THEN
-- Binding 8 betekent organisatiegebonden (Organisatie-vinkje)!
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_module,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_binding)
VALUES (v_srtgroep_key,
'INS',
UPPER (rec.ins_srtdeel_code),
rec.ins_srtdeel_omschrijving,
8);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objectsoorten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objectsoorten/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_deel (p_import_key IN NUMBER)
AS
-- Parent-objecten eerst aanmaken/bijwerken, daarna child-objecten!
CURSOR c1
IS
SELECT ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
prs_perslid_matchwaarde,
ins_kenmerkwaarde1 parent
FROM fac_imp_ins
ORDER BY DECODE (ins_kenmerkwaarde1, NULL, 1, 2), 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500) := '';
v_count_tot NUMBER (10) := 0;
v_count_create NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
v_srtgroep_key NUMBER (10);
v_srtdeel_key NUMBER (10);
v_new_afdeling_key NUMBER (10); -- Volgens import op basis van naam
v_cur_afdeling_key NUMBER (10); -- Zoals geregistreerd in FACILITOR
v_parent_key NUMBER (10);
v_deel_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '|'
|| rec.prs_perslid_matchwaarde
|| '] ';
v_errormsg := 'Fout bepalen INS-discipline';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND ins_discipline_key IN (1101, 1102, 1103) -- Applicatie/Server/Database
AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (rec.ins_discipline_omschrijving);
v_errormsg := 'Fout bepalen INS-groepsoort';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_srtgroep_module = 'INS'
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (rec.ins_srtgroep_omschrijving);
v_errormsg := 'Fout bepalen INS-objectsoort';
SELECT ins_srtdeel_key
INTO v_srtdeel_key
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_module = 'INS'
AND ins_srtgroep_key = v_srtgroep_key
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (rec.ins_srtdeel_omschrijving);
v_errormsg := 'Fout bepalen afdeling [' || rec.prs_perslid_matchwaarde || ']';
SELECT prs_afdeling_key
INTO v_new_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = UPPER (rec.prs_perslid_matchwaarde);
v_errormsg := 'Fout bepalen parent';
IF rec.parent IS NOT NULL
THEN
SELECT MAX (ins_deel_key)
INTO v_parent_key
FROM ins_v_aanwezigdeel
WHERE ins_discipline_key IN (1101, 1102, 1103) -- Applicatie/Server/Database
AND ins_deel_parent_key IS NULL -- Parent niet zelf child
AND TRIM (ins_deel_upper) = UPPER (rec.parent);
IF v_parent_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
END IF;
ELSE
v_parent_key := NULL;
END IF;
-- Afdelingsgebonden objecten hebben een unieke ID!
v_errormsg := 'Fout (uniek) bepalen A-object';
SELECT COUNT ( * )
INTO ccount
FROM ins_v_aanwezigdeel
WHERE ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
IF ccount = 0 -- Object bestaat nog niet, dus toevoegen!
THEN
v_errormsg := 'Fout toevoegen INS-object';
INSERT INTO ins_deel (ins_discipline_key,
ins_srtdeel_key,
ins_deel_module,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_alg_locatie_key,
ins_deel_parent_key)
VALUES (v_discipline_key,
v_srtdeel_key,
'INS',
rec.ins_deel_omschrijving,
rec.ins_deel_opmerking,
v_new_afdeling_key,
'A',
NULL,
v_parent_key)
RETURNING ins_deel_key
INTO v_deel_key;
COMMIT;
v_count_create := v_count_create + 1;
ELSE -- Object bestaat reeds!
v_errormsg := 'Fout bijwerken INS-object';
SELECT d.ins_deel_key, ins_alg_ruimte_key
INTO v_deel_key, v_cur_afdeling_key
FROM ins_deel d
WHERE ins_deel_verwijder IS NULL
AND ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
UPDATE ins_deel
SET ins_alg_ruimte_key = v_new_afdeling_key,
ins_alg_ruimte_type = 'A',
ins_deel_opmerking = rec.ins_deel_opmerking,
ins_deel_vervaldatum = NULL,
ins_alg_locatie_key = NULL,
ins_deel_parent_key = v_parent_key,
ins_alg_ruimte_key_org = NULL,
ins_alg_ruimte_type_org = NULL
WHERE ins_deel_key = v_deel_key;
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#toegevoegd: ' || TO_CHAR (v_count_create), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#bijgewerkt: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE del_deel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT id.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
ins_discipline id
WHERE d.ins_deel_vervaldatum IS NULL -- Vervaldatum nog niet gezet!
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = id.ins_discipline_key
AND id.ins_discipline_key IN (1101, 1102, 1103) -- Applicatie/Server/Database
AND d.ins_deel_omschrijving NOT LIKE '%NIET GEBRUIKEN%'
AND NOT EXISTS
(SELECT 1
FROM fac_imp_ins ic
WHERE UPPER (ic.ins_deel_omschrijving) = d.ins_deel_upper
AND UPPER (ic.ins_srtdeel_omschrijving) = sd.ins_srtdeel_upper
AND UPPER (ic.ins_srtgroep_omschrijving) = sg.ins_srtgroep_upper
AND UPPER (ic.ins_discipline_omschrijving) = UPPER (id.ins_discipline_omschrijving))
ORDER BY 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500):= '';
v_count_delete NUMBER (10) := 0;
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '] ';
v_errormsg := 'Fout verwijderen INS-object';
--DELETE FROM ins_deel
-- WHERE ins_deel_key = rec.ins_deel_key;
UPDATE ins_deel
SET ins_deel_vervaldatum = SYSDATE
WHERE ins_deel_key = rec.ins_deel_key;
COMMIT;
v_count_delete := v_count_delete + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#verwijderd: ' || TO_CHAR (v_count_delete), '');
COMMIT;
END;
-- MAIN
BEGIN
-- Generieke update.
SELECT COUNT ( * ) INTO v_count FROM fac_imp_ins;
IF v_count = 0
THEN
fac.imp_writelog (p_import_key, 'E', 'Niets te importeren!', '');
RETURN;
END IF;
--add_insdiscipline (p_import_key);
add_srtgroep (p_import_key);
add_srtdeel (p_import_key);
add_deel (p_import_key);
del_deel (p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces CMDB-objecten afgebroken!');
END mnnl_update_cmdb;
/
CREATE OR REPLACE VIEW mnnl_v_rap_eua
(
disciplineomschrijving,
groepsoortomschrijving,
objectsoortcode,
objectsoortomschrijving,
objectomschrijving,
objectopmerking,
afdeling,
persoon,
locatiecode,
gebouwcode,
verdiepingvolgnr,
ruimtenr,
status,
redenbijstatus, -- Afhankelijk van status!
serienummer,
model,
aanschafdatum,
ordernummer,
opmerkingen,
vervaldatum,
aanschafwaarde,
organisatie
)
AS
SELECT x.ins_discipline_omschrijving,
x.ins_srtgroep_omschrijving,
x.ins_srtdeel_code,
x.ins_srtdeel_omschrijving,
x.ins_deel_omschrijving,
x.ins_deel_opmerking,
x.prs_afdeling_naam,
x.prs_perslid_oslogin,
x.alg_locatie_code,
x.alg_gebouw_code,
x.alg_verdieping_volgnr,
x.alg_ruimte_nr,
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE TO_CHAR (fac_usrdata_key) = sts.ins_kenmerkdeel_waarde), -- Status
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE TO_CHAR (fac_usrdata_key) = rbs.ins_kenmerkdeel_waarde), -- Reden bij status
snr.ins_kenmerkdeel_waarde, -- Serienummer
mdl.ins_kenmerkdeel_waarde, -- Model
asd.ins_kenmerkdeel_waarde, -- Aanschafdatum
onr.ins_kenmerkdeel_waarde, -- Ordernummer
opm.ins_kenmerkdeel_waarde, -- Opmerkingen
x.ins_deel_vervaldatum,
asw.ins_kenmerkdeel_waarde, -- Aanschafwaarde
x.organisatie
FROM (SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
a.prs_afdeling_naam,
NULL prs_perslid_oslogin,
NULL alg_locatie_code,
NULL alg_gebouw_code,
NULL alg_verdieping_volgnr,
NULL alg_ruimte_nr,
d.ins_deel_vervaldatum,
NULL organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
prs_afdeling a
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key = a.prs_afdeling_key
UNION ALL
SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
NULL prs_afdeling_naam,
p.prs_perslid_oslogin,
NULL alg_locatie_code,
NULL alg_gebouw_code,
NULL alg_verdieping_volgnr,
NULL alg_ruimte_nr,
d.ins_deel_vervaldatum,
a.prs_afdeling_naam organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
prs_perslid p,
prs_afdeling a
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = p.prs_perslid_key
AND a.prs_afdeling_key = p.prs_afdeling_key
UNION ALL
SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
NULL prs_afdeling_naam,
NULL prs_perslid_oslogin,
l.alg_locatie_code,
g.alg_gebouw_code,
v.alg_verdieping_volgnr,
r.alg_ruimte_nr,
d.ins_deel_vervaldatum,
NULL organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) x
LEFT JOIN ins_v_aanwezigkenmerkdeel sts
ON x.ins_deel_key = sts.ins_deel_key
AND sts.ins_kenmerk_key = 21 -- Status
LEFT JOIN ins_v_aanwezigkenmerkdeel rbs
ON x.ins_deel_key = rbs.ins_deel_key
AND rbs.ins_kenmerk_key = 81 -- Reden bij status
LEFT JOIN ins_v_aanwezigkenmerkdeel snr
ON x.ins_deel_key = snr.ins_deel_key
AND snr.ins_kenmerk_key = 22 -- Serienummer
LEFT JOIN ins_v_aanwezigkenmerkdeel mdl
ON x.ins_deel_key = mdl.ins_deel_key
AND mdl.ins_kenmerk_key = 23 -- Model
LEFT JOIN ins_v_aanwezigkenmerkdeel asd
ON x.ins_deel_key = asd.ins_deel_key
AND asd.ins_kenmerk_key = 24 -- Aanschafdatum
LEFT JOIN ins_v_aanwezigkenmerkdeel onr
ON x.ins_deel_key = onr.ins_deel_key
AND onr.ins_kenmerk_key = 25 -- Ordernummer
LEFT JOIN ins_v_aanwezigkenmerkdeel opm
ON x.ins_deel_key = opm.ins_deel_key
AND opm.ins_kenmerk_key = 27 -- Opmerkingen
LEFT JOIN ins_v_aanwezigkenmerkdeel asw
ON x.ins_deel_key = asw.ins_deel_key
AND asw.ins_kenmerk_key = 101 -- MNNL#53670: Aanschafwaarde
;
-- MNNL#40905: EUA-import (EndUser Asset)!
CREATE OR REPLACE PROCEDURE mnnl_import_eua (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1);
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500) := '';
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden:
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
v_ins_deel_opmerking VARCHAR2 (2000); -- C2000
v_prs_afdeling_naam VARCHAR2 (255); -- C15
v_prs_perslid_oslogin VARCHAR2 (255); -- C30
v_alg_locatie_code VARCHAR2 (255); -- C10
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
v_alg_ruimte_nr VARCHAR2 (255); -- C10
v_sts VARCHAR2 (255); -- C60
v_rbs VARCHAR2 (255); -- C60
v_snr VARCHAR2 (255); -- C40
v_mdl VARCHAR2 (255); -- C50
v_asd VARCHAR2 (255); -- C10
v_onr VARCHAR2 (255); -- C50
v_opm VARCHAR2 (2000); -- C255!
v_ins_deel_vervaldatum VARCHAR2 (255); -- D10
v_asw VARCHAR2 (255); -- Nx
CURSOR c1
IS
SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM fac_imp_ins;
COMMIT;
-- Bepaal delimiter zoals gedefinieerd voor importfunctie!
v_errormsg := 'Fout bepalen delimitor';
SELECT COALESCE (fia.fac_import_app_delimiter, ';')
INTO c_delim
FROM fac_import fi, fac_import_app fia
WHERE fi.fac_import_key = p_import_key
AND fi.fac_import_app_key = fia.fac_import_app_key;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
fac.imp_getfield (v_newline, c_delim, v_prs_afdeling_naam);
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_oslogin);
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
fac.imp_getfield (v_newline, c_delim, v_sts);
fac.imp_getfield (v_newline, c_delim, v_rbs);
fac.imp_getfield (v_newline, c_delim, v_snr);
fac.imp_getfield (v_newline, c_delim, v_mdl);
fac.imp_getfield (v_newline, c_delim, v_asd);
fac.imp_getfield (v_newline, c_delim, v_onr);
fac.imp_getfield (v_newline, c_delim, v_opm);
fac.imp_getfield (v_newline, c_delim, v_ins_deel_vervaldatum);
fac.imp_getfield (v_newline, c_delim, v_asw);
v_aanduiding :=
'['
|| v_ins_discipline_omschrijving
|| '|'
|| v_ins_srtgroep_omschrijving
|| '|'
|| v_ins_srtdeel_code
|| '|'
|| v_ins_srtdeel_omschrijving
|| '|'
|| v_ins_deel_omschrijving
|| '|'
|| COALESCE (v_prs_afdeling_naam, v_prs_perslid_oslogin, v_alg_locatie_code || '-' || v_alg_gebouw_code || '-' || v_alg_verdieping_volgnr || '-' || v_alg_ruimte_nr)
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTOMSCHRIJVING'
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
AND UPPER (v_prs_afdeling_naam) = 'AFDELING'
AND UPPER (v_prs_perslid_oslogin) = 'PERSOON'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
AND UPPER (v_alg_verdieping_volgnr) = 'VERDIEPINGVOLGNR'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENR'
AND UPPER (v_sts) = 'STATUS'
AND UPPER (v_rbs) = 'REDENBIJSTATUS'
AND UPPER (v_snr) = 'SERIENUMMER'
AND UPPER (v_mdl) = 'MODEL'
AND UPPER (v_asd) = 'AANSCHAFDATUM'
AND UPPER (v_onr) = 'ORDERNUMMER'
AND UPPER (v_opm) = 'OPMERKINGEN'
AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM'
AND UPPER (v_asw) = 'AANSCHAFWAARDE'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Discipline ongeldig; ongedefinieerd of te lang';
v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving);
IF v_ins_discipline_omschrijving IS NULL OR LENGTH (v_ins_discipline_omschrijving) > 30
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Groep ongeldig; ongedefinieerd of te lang';
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
IF v_ins_srtgroep_omschrijving IS NULL OR LENGTH (v_ins_srtgroep_omschrijving) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Soortcode ongeldig; ongedefinieerd of te lang';
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Soort ongeldig; ongedefinieerd of te lang';
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
IF v_ins_srtdeel_omschrijving IS NULL OR LENGTH (v_ins_srtdeel_omschrijving) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Objectid ongeldig; ongedefinieerd of te lang';
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
IF v_ins_deel_omschrijving IS NULL OR LENGTH (v_ins_deel_omschrijving) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Objectopmerking te lang';
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
IF LENGTH (v_ins_deel_opmerking) > 2000
THEN
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 255);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Opmerking wordt afgekapt!');
END IF;
--
v_errormsg := 'Afdelingscode te lang';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 15
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Loginnaam te lang';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Locatiecode te lang';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Gebouwcode te lang';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 12
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Verdiepingvolgnummer ongeldig; niet numeriek';
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
v_alg_verdieping_volgnr_n := fac.safe_to_number (v_alg_verdieping_volgnr);
IF v_alg_verdieping_volgnr IS NOT NULL AND v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Ruimtenummer te lang';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_sts := TRIM (v_sts);
v_rbs := TRIM (v_rbs);
v_snr := TRIM (v_snr);
v_mdl := TRIM (v_mdl);
v_asd := TRIM (v_asd);
v_onr := TRIM (v_onr);
v_opm := TRIM (v_opm);
--
v_errormsg := 'Vervaldatum ongeldig; geen datum';
v_ins_deel_vervaldatum := TRIM (v_ins_deel_vervaldatum);
IF v_ins_deel_vervaldatum IS NOT NULL AND fac.safe_to_date (v_ins_deel_vervaldatum, 'dd-mm-yyyy') IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_asw := TRIM (v_asw);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_ruimte_nr,
prs_perslid_matchcode,
prs_perslid_matchwaarde,
res_discipline_kostensoort,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8)
VALUES (v_ins_discipline_omschrijving,
v_ins_srtgroep_omschrijving,
v_ins_srtdeel_code,
v_ins_srtdeel_omschrijving,
v_ins_deel_omschrijving,
v_ins_deel_opmerking,
v_alg_locatie_code,
v_alg_gebouw_code,
v_alg_verdieping_volgnr_n,
v_alg_ruimte_nr,
DECODE (v_prs_afdeling_naam, NULL, DECODE (v_prs_perslid_oslogin, NULL, NULL, 'P'), 'A'),
COALESCE (v_prs_afdeling_naam, v_prs_perslid_oslogin),
v_ins_deel_vervaldatum,
v_sts,
v_rbs,
v_snr,
v_mdl,
v_asd,
v_onr,
v_opm,
v_asw);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'EUA-objecten/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'EUA-objecten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces EUA-objecten afgebroken!');
END mnnl_import_eua;
/
CREATE OR REPLACE PROCEDURE mnnl_update_eua (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
v_count NUMBER;
-- SUBPROC
PROCEDURE add_insdiscipline (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving)
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout toevoegen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
IF ccount = 0
THEN
INSERT INTO ins_tab_discipline (ins_discipline_module,
ins_discipline_omschrijving,
ins_discipline_min_level,
ins_discipline_kpnverplicht)
VALUES ('INS',
rec.ins_discipline_omschrijving,
1,
0)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
VALUES (v_discipline_key, 0);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Disciplines/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Disciplines/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_srtgroep (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving),
UPPER (ins_srtgroep_omschrijving)
ORDER BY 1, 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bepalen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
v_errormsg := 'Fout toevoegen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = rec.ins_srtgroep_upper;
IF ccount = 0
THEN
INSERT INTO ins_srtgroep (ins_discipline_key,
ins_srtgroep_module,
ins_srtgroep_omschrijving)
VALUES (v_discipline_key,
'INS',
rec.ins_srtgroep_omschrijving);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Groepsoorten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Groepsoorten/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
MAX (ins_srtdeel_code) ins_srtdeel_code,
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
FROM fac_imp_ins
GROUP BY UPPER (ins_discipline_omschrijving),
UPPER (ins_srtgroep_omschrijving),
UPPER (ins_srtdeel_omschrijving)
ORDER BY 1, 2, 3;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
v_srtgroep_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_errormsg := 'Fout bepalen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_tab_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
v_errormsg := 'Fout bepalen INS-groepsoort [' || rec.ins_srtgroep_omschrijving || ']';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_srtgroep_module = 'INS'
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = rec.ins_srtgroep_upper;
v_errormsg := 'Fout toevoegen INS-objectsoort [' || rec.ins_srtdeel_omschrijving || ']';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_module = 'INS'
AND ins_srtgroep_key = v_srtgroep_key
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = rec.ins_srtdeel_upper;
IF ccount = 0
THEN
-- Binding 25 betekent ruimte-, organisatie- of persoonsgebonden!
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_module,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_binding)
VALUES (v_srtgroep_key,
'INS',
UPPER (rec.ins_srtdeel_code),
rec.ins_srtdeel_omschrijving,
25);
COMMIT;
v_count_update := v_count_update + 1;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objectsoorten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objectsoorten/#toegevoegd: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
p_srtkenmerk_key IN NUMBER,
p_waarde IN VARCHAR2)
AS
v_kenmerk_key NUMBER;
v_srtkenmerk_type VARCHAR2 (1);
ccount NUMBER;
v_waarde VARCHAR2 (255);
v_objectnaam VARCHAR2 (30);
v_kolomnaam VARCHAR2 (30);
v_kolomtxt VARCHAR2 (30);
sql_stmt VARCHAR2 (1000);
v_kenmerkdeel_key NUMBER;
l_cursor_1 INTEGER;
l_rowsprocessed NUMBER DEFAULT 0;
BEGIN
IF p_srtkenmerk_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen kenmerk van soort [' || p_srtkenmerk_key || ']';
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
INTO v_kenmerk_key, v_srtkenmerk_type
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk
WHERE d.ins_deel_key = p_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND k.ins_srtkenmerk_key = p_srtkenmerk_key
AND ((k.ins_srtinstallatie_key = sd.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
IF p_waarde IS NOT NULL
THEN
IF v_srtkenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bepalen eigen tabel';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL;
v_errormsg := 'Fout bepalen nieuwe waarde [' || p_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR (ud.fac_usrdata_key)
INTO v_waarde
FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_code)) = UPPER (p_waarde); -- Match op code in Eigen Tabel!
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.ins_srtkenmerk_key = p_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
sql_stmt :=
'SELECT MAX ('
|| v_kolomnaam
|| ') FROM '
|| v_objectnaam
|| ' WHERE UPPER (TRIM ('
|| v_kolomtxt
|| ')) = UPPER (:pwaarde)';
l_cursor_1 := DBMS_SQL.open_cursor;
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE (l_cursor_1, ':pwaarde', p_waarde);
DBMS_SQL.define_column (l_cursor_1, 1, v_waarde, 255);
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
DBMS_SQL.COLUMN_VALUE (l_cursor_1, 1, v_waarde);
DBMS_SQL.close_cursor (l_cursor_1);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
v_waarde := p_waarde;
END IF;
v_errormsg := 'Fout bepalen huidige waarde';
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
INTO ccount, v_kenmerkdeel_key
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_deel_key = p_deel_key
AND ins_kenmerk_key = v_kenmerk_key;
IF ccount = 0
THEN
v_errormsg := 'Fout toevoegen waarde [' || v_waarde || ']';
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
ELSE
v_errormsg := 'Fout bijwerken waarde [' || v_waarde || ']';
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = v_waarde
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
END IF;
ELSE
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
DELETE ins_kenmerkdeel
WHERE ins_deel_key = p_deel_key
AND ins_kenmerk_key = v_kenmerk_key;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'upsert_inskenmerk');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_deel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
ins_deel_opmerking,
alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr,
prs_perslid_matchcode, prs_perslid_matchwaarde,
ins_kenmerkwaarde1,
ins_kenmerkwaarde2,
ins_kenmerkwaarde3,
ins_kenmerkwaarde4,
ins_kenmerkwaarde5,
ins_kenmerkwaarde6,
ins_kenmerkwaarde7,
ins_kenmerkwaarde8
FROM fac_imp_ins
WHERE res_discipline_kostensoort IS NULL
ORDER BY 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500) := '';
v_count_tot NUMBER (10) := 0;
v_count_create NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
v_srtgroep_key NUMBER (10);
v_srtdeel_key NUMBER (10);
v_srtdeel_binding NUMBER (3);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_type VARCHAR2 (10);
v_deel_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '|'
|| COALESCE (rec.prs_perslid_matchwaarde, rec.alg_locatie_code || '-' || rec.alg_gebouw_code || '-' || TO_CHAR (rec.alg_verdieping_volgnr) || '-' || rec.alg_ruimte_nr)
|| '] ';
v_errormsg := 'Fout bepalen INS-discipline';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (rec.ins_discipline_omschrijving);
v_errormsg := 'Fout bepalen INS-groepsoort';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_srtgroep_module = 'INS'
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (rec.ins_srtgroep_omschrijving);
v_errormsg := 'Fout bepalen INS-objectsoort';
SELECT ins_srtdeel_key, ins_srtdeel_binding
INTO v_srtdeel_key, v_srtdeel_binding
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_module = 'INS'
AND ins_srtgroep_key = v_srtgroep_key
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (rec.ins_srtdeel_omschrijving);
v_locatie_key := NULL;
v_gebouw_key := NULL;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_ruimte_type := NULL;
IF BITAND (v_srtdeel_binding, 1) = 1 AND rec.alg_locatie_code IS NOT NULL
THEN -- Ruimtegebonden object
v_errormsg := 'Fout bepalen locatie [' || rec.alg_locatie_code || ']';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
v_errormsg := 'Fout bepalen gebouw [' || rec.alg_gebouw_code || ']';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = v_locatie_key
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
v_errormsg := 'Fout bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
v_errormsg := 'Fout bepalen ruimte [' || rec.alg_ruimte_nr || ']';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
-- Ruimtegebonden objecten hebben een unieke ID (bij MN; in FACILITOR moet dat binnen locatie)!
v_ruimte_type := 'R';
v_errormsg := 'Fout (uniek) bepalen R-object';
ELSIF BITAND (v_srtdeel_binding, 8) = 8 AND rec.prs_perslid_matchcode = 'A' -- Afdelinsgebonden object
THEN
v_errormsg := 'Fout bepalen afdeling [' || rec.prs_perslid_matchwaarde || ']';
SELECT prs_afdeling_key
INTO v_ruimte_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = UPPER (rec.prs_perslid_matchwaarde);
-- Afdelingsgebonden objecten hebben een unieke ID!
v_ruimte_type := 'A';
v_errormsg := 'Fout (uniek) bepalen A-object';
ELSIF BITAND (v_srtdeel_binding, 16) = 16 AND rec.prs_perslid_matchcode = 'P' -- Persoonsgebonden object
THEN
v_errormsg := 'Fout bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
SELECT prs_perslid_key
INTO v_ruimte_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_oslogin = UPPER (rec.prs_perslid_matchwaarde);
-- Persoonsgebonden objecten hebben een unieke ID!
v_ruimte_type := 'P';
v_errormsg := 'Fout (uniek) bepalen P-object';
END IF;
IF v_ruimte_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Fout bepalen R-, A- of P-binding', COALESCE (rec.prs_perslid_matchcode, 'R'));
ELSE
SELECT COUNT ( * )
INTO ccount
FROM ins_v_aanwezigdeel
WHERE ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
IF ccount = 0 -- Object bestaat nog niet, dus toevoegen!
THEN
v_errormsg := 'Fout toevoegen INS-object';
INSERT INTO ins_deel (ins_discipline_key,
ins_srtdeel_key,
ins_deel_module,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_alg_locatie_key)
VALUES (v_discipline_key,
v_srtdeel_key,
'INS',
rec.ins_deel_omschrijving,
rec.ins_deel_opmerking,
v_ruimte_key,
v_ruimte_type,
v_locatie_key)
RETURNING ins_deel_key
INTO v_deel_key;
COMMIT;
--v_srtnoti_code := 'INSNEW';
v_count_create := v_count_create + 1;
ELSE -- Object bestaat reeds!
v_errormsg := 'Fout bijwerken INS-object';
SELECT d.ins_deel_key
INTO v_deel_key
FROM ins_deel d
WHERE ins_deel_verwijder IS NULL
AND ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
UPDATE ins_deel
SET ins_alg_ruimte_key = v_ruimte_key,
ins_alg_ruimte_type = v_ruimte_type,
ins_deel_opmerking = rec.ins_deel_opmerking,
ins_deel_vervaldatum = NULL,
ins_alg_locatie_key = v_locatie_key,
ins_alg_ruimte_key_org = NULL,
ins_alg_ruimte_type_org = NULL
WHERE ins_deel_key = v_deel_key;
COMMIT;
--v_srtnoti_code := 'INSUPD';
v_count_update := v_count_update + 1;
END IF;
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
-- (bijwerken kan wel, maar wissen dus niet)!
upsert_inskenmerk (v_deel_key, 24, rec.ins_kenmerkwaarde1); -- Status
upsert_inskenmerk (v_deel_key, 41, rec.ins_kenmerkwaarde2); -- Reden bij status
upsert_inskenmerk (v_deel_key, 1, rec.ins_kenmerkwaarde3); -- Serienummer
upsert_inskenmerk (v_deel_key, 21, rec.ins_kenmerkwaarde4); -- Model
upsert_inskenmerk (v_deel_key, 25, rec.ins_kenmerkwaarde5); -- Aanschafdatum
upsert_inskenmerk (v_deel_key, 26, rec.ins_kenmerkwaarde6); -- Ordernummer
upsert_inskenmerk (v_deel_key, 27, rec.ins_kenmerkwaarde7); -- Opmerkingen
upsert_inskenmerk (v_deel_key, 61, rec.ins_kenmerkwaarde8); -- Aanschafwaarde
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#toegevoegd: ' || TO_CHAR (v_count_create), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#bijgewerkt: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE del_deel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT id.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_key,
ic.res_discipline_kostensoort -- Vervaldatum (ingelezen)!
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
ins_discipline id,
fac_imp_ins ic
WHERE d.ins_deel_vervaldatum IS NULL -- Vervaldatum nog niet gezet!
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = id.ins_discipline_key
AND id.ins_discipline_key = 1104 -- EndUser Asset
AND d.ins_deel_omschrijving NOT LIKE '%NIET GEBRUIKEN%'
AND ic.res_discipline_kostensoort IS NOT NULL -- Vervaldatum gezet!
AND UPPER (ic.ins_deel_omschrijving) = d.ins_deel_upper
AND UPPER (ic.ins_srtdeel_omschrijving) = sd.ins_srtdeel_upper
AND UPPER (ic.ins_srtgroep_omschrijving) = sg.ins_srtgroep_upper
AND UPPER (ic.ins_discipline_omschrijving) = UPPER (id.ins_discipline_omschrijving)
ORDER BY 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500):= '';
v_count_delete NUMBER (10) := 0;
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '] ';
v_errormsg := 'Fout verwijderen INS-object';
--DELETE FROM ins_deel
-- WHERE ins_deel_key = rec.ins_deel_key;
UPDATE ins_deel
SET ins_deel_vervaldatum = fac.safe_to_date (rec.res_discipline_kostensoort, 'dd-mm-yyyy')
WHERE ins_deel_key = rec.ins_deel_key
AND ins_deel_vervaldatum IS NULL;
COMMIT;
v_count_delete := v_count_delete + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#verwijderd: ' || TO_CHAR (v_count_delete), '');
COMMIT;
END;
-- MAIN
BEGIN
-- Generieke update.
SELECT COUNT ( * ) INTO v_count FROM fac_imp_ins;
IF v_count = 0
THEN
fac.imp_writelog (p_import_key, 'E', 'Niets te importeren!', '');
RETURN;
END IF;
--add_insdiscipline (p_import_key);
add_srtgroep (p_import_key);
add_srtdeel (p_import_key);
add_deel (p_import_key);
del_deel (p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces EUA-objecten afgebroken!');
END mnnl_update_eua;
/
-- MNNL#69794: CERT-import (CERTificaten)!
-- "Title";"CommonName";"Beheerteam (Facilitor)";"Aanvrager";"Installateur";"EindDatum";"Product";"Omgeving";"Uitgever";"Definition";"Omschrijving certificaat"
CREATE OR REPLACE PROCEDURE mnnl_import_cert (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1);
-- De importvelden:
v_title VARCHAR2 (1000);
v_commonname VARCHAR2 (1000);
v_beheerteam VARCHAR2 (1000);
v_aanvrager VARCHAR2 (1000);
v_installateur VARCHAR2 (1000);
v_einddatum VARCHAR2 (1000);
v_product VARCHAR2 (1000);
v_omgeving VARCHAR2 (1000);
v_uitgever VARCHAR2 (1000);
v_definition VARCHAR2 (1000);
v_omschrijving_cert VARCHAR2 (1000);
CURSOR c1
IS
SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM mnnl_imp_cert;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen importregel';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_title);
fac.imp_getfield (v_newline, c_delim, v_commonname);
fac.imp_getfield (v_newline, c_delim, v_beheerteam);
fac.imp_getfield (v_newline, c_delim, v_aanvrager);
fac.imp_getfield (v_newline, c_delim, v_installateur);
fac.imp_getfield (v_newline, c_delim, v_einddatum);
fac.imp_getfield (v_newline, c_delim, v_product);
fac.imp_getfield (v_newline, c_delim, v_omgeving);
fac.imp_getfield (v_newline, c_delim, v_uitgever);
fac.imp_getfield (v_newline, c_delim, v_definition);
fac.imp_getfield (v_newline, c_delim, v_omschrijving_cert);
v_aanduiding :=
'['
|| v_title
|| '|'
|| v_beheerteam
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_title) = 'TITLE'
AND UPPER (v_commonname) = 'COMMONNAME'
AND UPPER (v_beheerteam) = 'BEHEERTEAM (FACILITOR)'
AND UPPER (v_aanvrager) = 'AANVRAGER'
AND UPPER (v_installateur) = 'INSTALLATEUR'
AND UPPER (v_einddatum) = 'EINDDATUM'
AND UPPER (v_product) = 'PRODUCT'
AND UPPER (v_omgeving) = 'OMGEVING'
AND UPPER (v_uitgever) = 'UITGEVER'
AND UPPER (v_definition) = 'DEFINITION'
AND UPPER (v_omschrijving_cert) = 'OMSCHRIJVING CERTIFICAAT'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Title ongeldig; ongedefinieerd of te lang';
v_title := TRIM (v_title);
IF v_title IS NULL OR LENGTH (v_title) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'EindDatum ongeldig; geen datum';
v_einddatum := TRIM (v_einddatum);
IF v_einddatum IS NOT NULL AND fac.safe_to_date (v_einddatum, 'mm/dd/yy') IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
END IF;
--
v_errormsg := 'Fout bufferen overige velden';
v_commonname := TRIM (v_commonname);
v_beheerteam := TRIM (v_beheerteam);
v_aanvrager := TRIM (v_aanvrager);
v_installateur := TRIM (v_installateur);
v_product := TRIM (v_product);
v_omgeving := TRIM (v_omgeving);
v_uitgever := TRIM (v_uitgever);
v_definition := TRIM (v_definition);
v_omschrijving_cert := TRIM (v_omschrijving_cert);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO mnnl_imp_cert (title,
commonname,
beheerteam,
aanvrager,
installateur,
einddatum,
product,
omgeving,
uitgever,
definition,
omschrijving_cert)
VALUES (v_title,
v_commonname,
v_beheerteam,
v_aanvrager,
v_installateur,
fac.safe_to_date (v_einddatum, 'mm/dd/yy'),
v_product,
v_omgeving,
v_uitgever,
v_definition,
v_omschrijving_cert);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (p_import_key, 'S', 'CERT-objecten/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'CERT-objecten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces CERT-objecten afgebroken!');
END mnnl_import_cert;
/
CREATE OR REPLACE PROCEDURE mnnl_update_cert (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
v_count NUMBER;
-- SUBPROC
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
p_kenmerk_key IN NUMBER,
p_waarde IN VARCHAR2)
AS
v_kenmerk_key NUMBER;
v_srtkenmerk_key NUMBER;
v_srtkenmerk_type VARCHAR2 (1);
ccount NUMBER;
v_waarde VARCHAR2 (255);
v_objectnaam VARCHAR2 (30);
v_kolomnaam VARCHAR2 (30);
v_kolomtxt VARCHAR2 (30);
sql_stmt VARCHAR2 (1000);
v_kenmerkdeel_key NUMBER;
l_cursor_1 INTEGER;
l_rowsprocessed NUMBER DEFAULT 0;
BEGIN
IF p_kenmerk_key IS NOT NULL
THEN
v_errormsg := 'Fout bepalen kenmerk met key=' || p_kenmerk_key || '';
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_key, sk.ins_srtkenmerk_kenmerktype
INTO v_kenmerk_key, v_srtkenmerk_key, v_srtkenmerk_type
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk
WHERE d.ins_deel_key = p_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND k.ins_kenmerk_key = p_kenmerk_key
AND ((k.ins_srtinstallatie_key = sd.ins_srtdeel_key AND k.ins_kenmerk_niveau = 'S')
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key AND k.ins_kenmerk_niveau = 'G')
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key AND k.ins_kenmerk_niveau = 'D'))
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
IF p_waarde IS NOT NULL
THEN
IF v_srtkenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bepalen eigen tabel';
SELECT COUNT ( * )
INTO ccount
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL;
v_errormsg := 'Fout bepalen nieuwe waarde [' || p_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR (ud.fac_usrdata_key)
INTO v_waarde
FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_code)) = UPPER (p_waarde); -- Match op code in Eigen Tabel!
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
sql_stmt :=
'SELECT MAX ('
|| v_kolomnaam
|| ') FROM '
|| v_objectnaam
|| ' WHERE UPPER (TRIM ('
|| v_kolomtxt
|| ')) = UPPER (:pwaarde)';
l_cursor_1 := DBMS_SQL.open_cursor;
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE (l_cursor_1, ':pwaarde', p_waarde);
DBMS_SQL.define_column (l_cursor_1, 1, v_waarde, 255);
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
DBMS_SQL.COLUMN_VALUE (l_cursor_1, 1, v_waarde);
DBMS_SQL.close_cursor (l_cursor_1);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
v_waarde := p_waarde;
END IF;
v_errormsg := 'Fout bepalen huidige waarde';
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
INTO ccount, v_kenmerkdeel_key
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_deel_key = p_deel_key
AND ins_kenmerk_key = v_kenmerk_key;
IF ccount = 0
THEN
v_errormsg := 'Fout toevoegen waarde [' || v_waarde || ']';
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
ELSE
v_errormsg := 'Fout bijwerken waarde [' || v_waarde || ']';
UPDATE ins_kenmerkdeel
SET ins_kenmerkdeel_waarde = v_waarde
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
END IF;
ELSE
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
DELETE ins_kenmerkdeel
WHERE ins_deel_key = p_deel_key
AND ins_kenmerk_key = v_kenmerk_key;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'upsert_inskenmerk');
COMMIT;
END;
-- SUBPROC
PROCEDURE add_deel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT 'Certificaten' ins_discipline_omschrijving,
'Certificaten' ins_srtgroep_omschrijving,
'CERT' ins_srtdeel_code,
'Certificaten' ins_srtdeel_omschrijving,
title ins_deel_omschrijving,
NULL ins_deel_opmerking,
NULL alg_locatie_code, NULL alg_gebouw_code, NULL alg_verdieping_volgnr, NULL alg_ruimte_nr,
--'P' prs_perslid_matchcode, 22946 prs_perslid_matchwaarde, -- 22946=persoon met achternaam=CMDB en login=MBCMDB!
'A' prs_perslid_matchcode, 'IV' prs_perslid_matchwaarde, -- IV=Informatievoorziening (met key=10)!
einddatum ins_deel_vervaldatum,
beheerteam ins_kenmerkwaarde1,
aanvrager ins_kenmerkwaarde2,
installateur ins_kenmerkwaarde3,
product ins_kenmerkwaarde4,
omgeving ins_kenmerkwaarde5,
uitgever ins_kenmerkwaarde6,
omschrijving_cert ins_kenmerkwaarde7
FROM mnnl_imp_cert
ORDER BY 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500) := '';
v_count_tot NUMBER (10) := 0;
v_count_create NUMBER (10) := 0;
v_count_update NUMBER (10) := 0;
v_discipline_key NUMBER (10);
v_srtgroep_key NUMBER (10);
v_srtdeel_key NUMBER (10);
v_srtdeel_binding NUMBER (3);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_type VARCHAR2 (10);
v_deel_key NUMBER (10);
ccount NUMBER (10);
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '|'
|| COALESCE (rec.prs_perslid_matchwaarde, rec.alg_locatie_code || '-' || rec.alg_gebouw_code || '-' || TO_CHAR (rec.alg_verdieping_volgnr) || '-' || rec.alg_ruimte_nr)
|| '] ';
v_errormsg := 'Fout bepalen INS-discipline';
SELECT ins_discipline_key
INTO v_discipline_key
FROM ins_discipline
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_module = 'INS'
AND UPPER (TRIM (ins_discipline_omschrijving)) = UPPER (rec.ins_discipline_omschrijving);
v_errormsg := 'Fout bepalen INS-groepsoort';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL
AND ins_srtgroep_module = 'INS'
AND ins_discipline_key = v_discipline_key
AND UPPER (TRIM (ins_srtgroep_omschrijving)) = UPPER (rec.ins_srtgroep_omschrijving);
v_errormsg := 'Fout bepalen INS-objectsoort';
SELECT ins_srtdeel_key, ins_srtdeel_binding
INTO v_srtdeel_key, v_srtdeel_binding
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_module = 'INS'
AND ins_srtgroep_key = v_srtgroep_key
AND UPPER (TRIM (ins_srtdeel_omschrijving)) = UPPER (rec.ins_srtdeel_omschrijving);
v_locatie_key := NULL;
v_gebouw_key := NULL;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_ruimte_type := NULL;
IF BITAND (v_srtdeel_binding, 1) = 1 AND rec.alg_locatie_code IS NOT NULL
THEN -- Ruimtegebonden object
v_errormsg := 'Fout bepalen locatie [' || rec.alg_locatie_code || ']';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
v_errormsg := 'Fout bepalen gebouw [' || rec.alg_gebouw_code || ']';
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = v_locatie_key
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
v_errormsg := 'Fout bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
v_errormsg := 'Fout bepalen ruimte [' || rec.alg_ruimte_nr || ']';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
-- Ruimtegebonden objecten hebben een unieke ID (bij MN; in FACILITOR moet dat binnen locatie)!
v_ruimte_type := 'R';
v_errormsg := 'Fout (uniek) bepalen R-object';
ELSIF BITAND (v_srtdeel_binding, 8) = 8 AND rec.prs_perslid_matchcode = 'A' -- Afdelinsgebonden object
THEN
v_errormsg := 'Fout bepalen afdeling [' || rec.prs_perslid_matchwaarde || ']';
SELECT prs_afdeling_key
INTO v_ruimte_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_upper = UPPER (rec.prs_perslid_matchwaarde);
-- Afdelingsgebonden objecten hebben een unieke ID!
v_ruimte_type := 'A';
v_errormsg := 'Fout (uniek) bepalen A-object';
ELSIF BITAND (v_srtdeel_binding, 16) = 16 AND rec.prs_perslid_matchcode = 'P' -- Persoonsgebonden object
THEN
v_errormsg := 'Fout bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
SELECT prs_perslid_key
INTO v_ruimte_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
--AND prs_perslid_oslogin = UPPER (rec.prs_perslid_matchwaarde);
AND prs_perslid_key= rec.prs_perslid_matchwaarde;
-- Persoonsgebonden objecten hebben een unieke ID!
v_ruimte_type := 'P';
v_errormsg := 'Fout (uniek) bepalen P-object';
END IF;
IF v_ruimte_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Fout bepalen R-, A- of P-binding', COALESCE (rec.prs_perslid_matchcode, 'R'));
ELSE
SELECT COUNT ( * )
INTO ccount
FROM ins_v_aanwezigdeel
WHERE ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
IF ccount = 0 -- Object bestaat nog niet, dus toevoegen!
THEN
v_errormsg := 'Fout toevoegen INS-object';
INSERT INTO ins_deel (ins_deel_module,
ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_vervaldatum,
ins_discipline_key,
ins_alg_locatie_key)
VALUES ('INS',
v_srtdeel_key,
v_ruimte_key,
v_ruimte_type,
rec.ins_deel_omschrijving,
rec.ins_deel_opmerking,
rec.ins_deel_vervaldatum,
v_discipline_key,
v_locatie_key)
RETURNING ins_deel_key
INTO v_deel_key;
COMMIT;
--v_srtnoti_code := 'INSNEW';
v_count_create := v_count_create + 1;
ELSE -- Object bestaat reeds!
v_errormsg := 'Fout bijwerken INS-object';
SELECT d.ins_deel_key
INTO v_deel_key
FROM ins_deel d
WHERE ins_deel_verwijder IS NULL
AND ins_deel_module = 'INS'
AND ins_srtdeel_key = v_srtdeel_key
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
UPDATE ins_deel
SET ins_alg_ruimte_key = v_ruimte_key,
ins_alg_ruimte_type = v_ruimte_type,
ins_deel_opmerking = rec.ins_deel_opmerking,
ins_deel_vervaldatum = rec.ins_deel_vervaldatum,
ins_alg_locatie_key = v_locatie_key,
ins_alg_ruimte_key_org = NULL,
ins_alg_ruimte_type_org = NULL
WHERE ins_deel_key = v_deel_key;
COMMIT;
--v_srtnoti_code := 'INSUPD';
v_count_update := v_count_update + 1;
END IF;
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
-- (bijwerken kan wel, maar wissen dus niet)!
upsert_inskenmerk (v_deel_key, 381, rec.ins_kenmerkwaarde1); -- Beheerteam (Facilitor)
upsert_inskenmerk (v_deel_key, 401, rec.ins_kenmerkwaarde2); -- Aanvrager
upsert_inskenmerk (v_deel_key, 402, rec.ins_kenmerkwaarde3); -- Installateur
upsert_inskenmerk (v_deel_key, 403, rec.ins_kenmerkwaarde4); -- Product
upsert_inskenmerk (v_deel_key, 404, rec.ins_kenmerkwaarde5); -- Omgeving
upsert_inskenmerk (v_deel_key, 405, rec.ins_kenmerkwaarde6); -- Uitgever
upsert_inskenmerk (v_deel_key, 406, rec.ins_kenmerkwaarde7); -- Toelichting
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#toegevoegd: ' || TO_CHAR (v_count_create), '');
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#bijgewerkt: ' || TO_CHAR (v_count_update), '');
COMMIT;
END;
-- SUBPROC
PROCEDURE del_deel (p_import_key IN NUMBER)
AS
CURSOR c1
IS
SELECT disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
ins_discipline disc
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = disc.ins_discipline_key
AND disc.ins_discipline_key = 3481 -- Certificaten
AND NOT EXISTS (SELECT 1 FROM mnnl_imp_cert WHERE UPPER (title) = d.ins_deel_upper)
ORDER BY 1, 2, 4, 5;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500):= '';
v_count_delete NUMBER (10) := 0;
BEGIN
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.ins_discipline_omschrijving
|| '|'
|| rec.ins_srtgroep_omschrijving
|| '|'
|| rec.ins_srtdeel_code
|| '|'
|| rec.ins_srtdeel_omschrijving
|| '|'
|| rec.ins_deel_omschrijving
|| '] ';
v_errormsg := 'Fout verwijderen INS-object';
--DELETE FROM ins_deel
-- WHERE ins_deel_key = rec.ins_deel_key;
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel_key = rec.ins_deel_key;
COMMIT;
v_count_delete := v_count_delete + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'INS-Objecten/#vervallen: ' || TO_CHAR (v_count_delete), '');
COMMIT;
END;
-- MAIN
BEGIN
SELECT COUNT ( * ) INTO v_count FROM mnnl_imp_cert;
IF v_count = 0
THEN
fac.imp_writelog (p_import_key, 'E', 'Niets te importeren!', '');
RETURN;
END IF;
add_deel (p_import_key);
del_deel (p_import_key);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces CERT-objecten afgebroken!');
END mnnl_update_cert;
/
-- MNNL#41653: Mail2Melding voor 2 stromen (nimbus@ + hr@).
-- MNNL#53176: Mail2Existing ticket/notitie (melding@).
-- MNNL#55078: Mail2Existing ticket/afmelden (melding@).
-- MNNL#61759: FASE1/ServiceNow-koppeling/Mail2Existing opdracht (sogeti@).
-- MNNL#61759: FASE2/ServiceNow-koppeling/Mail2Melding (snow@).
-- MNNL#71193: Gereed-datum op basis van content van mail (hr@).
CREATE OR REPLACE PROCEDURE MNNL_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
-- soortmeldingen 681+682 onder vakgroepen 1321+1322 onder vakgroeptype 81!
c_sogeti_key NUMBER (10) := 22824;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_vakgroep VARCHAR2 (255) := '';
v_message VARCHAR2 (255) := '';
v_ci VARCHAR2 (255) := '';
v_leidinggevende VARCHAR2 (255) := '';
v_melding VARCHAR2 (255) := '';
v_medewerker VARCHAR2 (255) := '';
v_ingangsdatum VARCHAR2 (255) := '';
v_vrijstellingsdatum VARCHAR2 (255) := '';
v_exist_ticket VARCHAR2 (255) := '';
v_afmeldactie NUMBER (10);
v_afmeldtekst VARCHAR2 (4000) := '';
v_perslid_key NUMBER (10);
v_perslid_naam_friendly VARCHAR2 (255);
v_kostenplaats_key NUMBER (10);
v_discipline_key NUMBER (10);
v_stdmelding_key NUMBER (10);
v_onderwerp VARCHAR2 (255);
v_deel_key NUMBER (10);
--v_onrgoed_keys NUMBER (10);
--v_onrgoed_type VARCHAR2 (1);
--v_locatie_key NUMBER (10);
v_melding_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_melding_status NUMBER (10);
v_open_opdr NUMBER (10);
v_opdracht_id VARCHAR2 (30) := '';
v_opdracht_key NUMBER (10);
v_opdracht_status NUMBER (10);
v_kenmerkopdr_key NUMBER (10);
v_refnr_lev VARCHAR2 (30);
--v_kosten NUMBER (9, 2);
v_behandeling VARCHAR2 (4000) := '';
v_afhandeling VARCHAR2 (4000) := '';
BEGIN
CASE
WHEN UPPER (pto) LIKE 'NIMBUS@%'
THEN
v_errormsg := 'Fout bepalen Nimbus-vakgroep';
IF INSTR (pbody, '@VAKGROEP:') > 0
THEN
v_vakgroep := TRIM (SUBSTR (pbody,
INSTR (pbody, '@VAKGROEP:') + 10,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@VAKGROEP:') + 10), '#') - 1));
ELSE
v_vakgroep := '';
END IF;
v_errormsg := 'Fout bepalen Nimbus-message';
IF INSTR (pbody, '@MESSAGE:') > 0
THEN
v_message := TRIM (SUBSTR (pbody,
INSTR (pbody, '@MESSAGE:') + 9,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@MESSAGE:') + 9), '#') - 1));
ELSE
v_message := '';
END IF;
v_errormsg := 'Fout bepalen Nimbus-CI';
IF INSTR (pbody, '@CI:') > 0
THEN
v_ci := TRIM (SUBSTR (pbody,
INSTR (pbody, '@CI:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@CI:') + 4), '#') - 1));
ELSE
v_ci := '';
END IF;
-- Bepaal persoon met key=12784 (Monitoring NimBUS)?
v_errormsg := 'Fout bepalen Nimbus-melder';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_key = 12784
AND p.prs_afdeling_key = a.prs_afdeling_key;
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals in
-- pbody achter @VAKGROEP?
v_errormsg := 'Fout bepalen Nimbus-soortmelding ' || COALESCE (v_vakgroep, '???');
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key)
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE md.ins_discipline_verwijder IS NULL
AND md.ins_srtdiscipline_key = 81 -- Event
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND UPPER (md.ins_discipline_omschrijving) LIKE UPPER (v_vakgroep) || '%'
GROUP BY sm.mld_ins_discipline_key;
v_errormsg := 'Fout bepalen Nimbus-onderwerp';
v_onderwerp := v_message;
-- Bepaal evt. object met omschrijving zoals in pbody achter @CI?
-- Alleen objecten onder Applicatie/Server/Database/EndUser Asset met
-- keys 1101 t/m 1104 worden beschouwd!
v_errormsg := 'Fout bepalen Nimbus-CI ' || COALESCE (v_ci, '???');
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg
WHERE d.ins_deel_vervaldatum IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104)
AND d.ins_deel_upper = UPPER (v_ci);
IF v_count = 1
THEN
SELECT d.ins_deel_key--, d.ins_alg_ruimte_key, d.ins_alg_ruimte_type
INTO v_deel_key--, v_onrgoed_keys, v_onrgoed_type
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg
WHERE d.ins_deel_vervaldatum IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104)
AND d.ins_deel_upper = UPPER (v_ci);
ELSIF v_ci IS NOT NULL
THEN
fac.writelog ('PROCESSEMAIL', 'W', v_errormsg, '');
END IF;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
-- - Append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout toevoegen Nimbus-melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
SUBSTR (pfrom || CHR (13) || CHR (10) || pbody, 1, 4000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
IF v_deel_key IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen Nimbus-object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, v_deel_key);
END IF;
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
WHEN UPPER (pto) LIKE 'HR@%'
THEN
v_errormsg := 'Fout bepalen HR-leidinggevende';
IF INSTR (pbody, '@LEIDINGGEVENDE:') > 0
THEN
--v_leidinggevende := TRIM (SUBSTR (pbody,
-- INSTR (pbody, '@LEIDINGGEVENDE:') + 16,
-- INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@LEIDINGGEVENDE:') + 16), '#') - 1));
v_leidinggevende := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@LEIDINGGEVENDE:') + 16)),
1,
REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@LEIDINGGEVENDE:') + 16)) || ' ', '\s') - 1);
ELSE
v_leidinggevende := '';
END IF;
v_errormsg := 'Fout bepalen HR-melding';
IF INSTR (pbody, '@MELDING:') > 0
THEN
-- Pak 100 tekens (anders dan whitespace) in pbody na 1e voorkomen van @MELDING: en plaats daarachter een '#'.
-- Een standaardmelding is max. 60 tekens, dus buffer is groot genoeg!
v_melding := TRIM (SUBSTR (pbody, INSTR (pbody, '@MELDING:') + 9, 100)) || '#';
-- Vervang newlines [CHR (13) en/of CHR (10)] door # en pak gedeelte tot 1e #.
-- In principe dus tot 1e newline en anders tot # geplaatst op eind van buffer.
v_melding := SUBSTR (v_melding, 1, INSTR (REPLACE (REPLACE (v_melding, CHR (13), '#'), CHR (10), '#'), '#') - 1);
ELSE
v_melding := '';
END IF;
v_errormsg := 'Fout bepalen HR-medewerker';
IF INSTR (pbody, '@MEDEWERKER:') > 0
THEN
-- Pak 100 tekens (anders dan whitespace) in pbody na 1e voorkomen van @MEDEWERKER: en plaats daarachter een '#'.
-- @MEDEWERKER komt in onderwerp en is max. 80 tekens, dus buffer is groot genoeg!
v_medewerker := TRIM (SUBSTR (pbody, INSTR (pbody, '@MEDEWERKER:') + 12, 100)) || '#';
-- Vervang newlines [CHR (13) en/of CHR (10)] door # en pak gedeelte tot 1e #.
-- In principe dus tot 1e newline en anders tot # geplaatst op eind van buffer.
v_medewerker := SUBSTR (v_medewerker, 1, INSTR (REPLACE (REPLACE (v_medewerker, CHR (13), '#'), CHR (10), '#'), '#') - 1);
ELSE
v_medewerker := '?';
END IF;
v_errormsg := 'Fout bepalen HR-ingangsdatum';
IF INSTR (pbody, '@INGANGSDATUM:') > 0
THEN
--v_ingangsdatum := TRIM (SUBSTR (pbody,
-- INSTR (pbody, '@INGANGSDATUM:') + 14,
-- INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@INGANGSDATUM:') + 14), '#') - 1));
v_ingangsdatum := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@INGANGSDATUM:') + 14)),
1,
REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@INGANGSDATUM:') + 14)) || ' ', '\s') - 1);
ELSE
v_ingangsdatum := '?';
END IF;
v_errormsg := 'Fout bepalen HR-vrijstellingsdatum';
IF INSTR (pbody, '@VRIJSTELLINGSDATUM:') > 0
THEN
--v_vrijstellingsdatum := TRIM (SUBSTR (pbody,
-- INSTR (pbody, '@VRIJSTELLINGSDATUM:') + 20,
-- INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, '@VRIJSTELLINGSDATUM:') + 20), '#') - 1));
v_vrijstellingsdatum := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@VRIJSTELLINGSDATUM:') + 20)),
1,
REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '@VRIJSTELLINGSDATUM:') + 20)) || ' ', '\s') - 1);
ELSE
v_vrijstellingsdatum := '';
END IF;
-- Bepaal de melder op basis van loginnaam zoals in pbody achter
-- @LEIDINGGEVENDE?
v_errormsg := 'Fout bepalen HR-melder ' || COALESCE (v_leidinggevende, '???');
SELECT p.prs_perslid_key, pf.prs_perslid_naam_friendly, a.prs_kostenplaats_key
INTO v_perslid_key, v_perslid_naam_friendly, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames_all pf, prs_afdeling a
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_oslogin = UPPER (v_leidinggevende);
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals in
-- pbody achter @MELDING?
v_errormsg := 'Fout bepalen HR-soortmelding ' || COALESCE (v_melding, '???');
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key)
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE md.ins_discipline_verwijder IS NULL
AND md.ins_srtdiscipline_key = 21 -- Service Request
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_upper = UPPER (v_melding)
GROUP BY sm.mld_ins_discipline_key;
v_errormsg := 'Fout bepalen HR-onderwerp';
--v_onderwerp := v_melding || ': ' || v_medewerker || ' per ' || v_ingangsdatum;
v_onderwerp := v_melding || ': ' || v_medewerker || ' per ' || COALESCE (TO_CHAR (fac.safe_to_date (SUBSTR (v_ingangsdatum, 1, 10), 'dd-mm-yyyy'), 'dd-mm-yyyy'), '?');
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
-- - Append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout toevoegen HR-melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
mld_melding_einddatum,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
v_stdmelding_key,
NULL,
COALESCE (fac.safe_to_date (SUBSTR (v_vrijstellingsdatum, 1, 10), 'dd-mm-yyyy'), fac.safe_to_date (SUBSTR (v_ingangsdatum, 1, 10), 'dd-mm-yyyy')),
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
DECODE (fac.safe_to_date (SUBSTR (v_vrijstellingsdatum, 1, 10), 'dd-mm-yyyy'), NULL, 3, 2), -- prio normaal of hoog
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
-- MNNL#83416: Toevoegen ingangsdatum-kenmerkveld.
IF fac.safe_to_date (SUBSTR (v_ingangsdatum, 1, 10), 'dd-mm-yyyy') IS NOT NULL -- Geldige datum?
THEN
-- Bepaal kenmerk-key van kenmerksoort 'Datum' (key=221) voor de
-- bepaalde 'v_stdmelding_key'.
v_errormsg := 'Fout bepalen ingangsdatum';
SELECT MAX (mld_kenmerk_key)
INTO v_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = 221 -- Datum
AND INSTR (UPPER (k.mld_kenmerk_omschrijving), 'INGANGSDATUM') > 0
AND k.mld_kenmerk_niveau = 'S' -- Aanname op S-niveau!
AND k.mld_stdmelding_key = fac.safe_to_number (v_stdmelding_key);
v_errormsg := 'Fout toevoegen ingangsdatum';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, v_kenmerk_key, SUBSTR (v_ingangsdatum, 1, 10));
END IF;
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
-- Handle workflow actions for completion.
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
WHEN UPPER (pto) LIKE 'MELDING@%'
THEN
v_errormsg := 'Fout bepalen existing ticket';
IF INSTR (UPPER (psubject), 'MELDING') > 0
THEN
v_exist_ticket := TRIM (SUBSTR (psubject, INSTR (UPPER (psubject), 'MELDING') + 7)); -- Gedeelte vanaf eerste voorkomen van 'MELDING' in psubject!
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
THEN
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
ELSE
v_exist_ticket := 'x';
END IF;
ELSE
v_exist_ticket := 'x';
END IF;
v_errormsg := 'Fout bepalen afmeldactie';
v_afmeldactie := INSTR (UPPER (psubject), '#AFMELDEN');
v_errormsg := 'Fout bepalen afmeldtekst';
IF INSTR (UPPER (pbody), '@AFMELDTEKST:') > 0
THEN
v_afmeldtekst := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@AFMELDTEKST:') + 13,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@AFMELDTEKST:') + 13), '#') - 1));
ELSE
v_afmeldtekst := '';
END IF;
-- Bepaal de noteur op basis van e-mail adres zoals in pfrom?
v_errormsg := 'Fout bepalen noteur ' || COALESCE (pfrom, '???');
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE '%' || UPPER (pfrom) || '%';
-- Bepaal bestaande melding?
v_errormsg := 'Fout bepalen melding ' || COALESCE (v_exist_ticket, '???');
SELECT m.mld_melding_key, m.mld_melding_status,
(SELECT COUNT ( * )
FROM mld_opdr
WHERE TO_CHAR (mld_melding_key) = v_exist_ticket
AND mld_statusopdr_key NOT IN (1, 2, 6, 7)), -- Open
sm.mld_ins_discipline_key
INTO v_melding_key, v_melding_status, v_open_opdr, v_discipline_key
FROM mld_melding m, mld_stdmelding sm
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND TO_CHAR (m.mld_melding_key) = v_exist_ticket;
-- Als bestaande Sogeti-opdracht, dan ook toevoegen Opdracht-notitie
-- en eventueel afmelden!
v_errormsg := 'Fout bepalen Sogeti-opdracht';
v_opdracht_id := SUBSTR (TRIM (SUBSTR (psubject, INSTR (psubject, 'MELDING') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (psubject, 'MELDING') + 7)) || ' ', '\s') - 1);
v_errormsg := 'Fout bepalen Sogeti-opdracht ' || v_opdracht_id;
SELECT COUNT (*)
INTO v_count
FROM mld_opdr
WHERE mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
IF v_count = 1
THEN
SELECT mld_opdr_key, mld_statusopdr_key
INTO v_opdracht_key, v_opdracht_status
FROM mld_opdr
WHERE mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000));
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-opdracht ' || v_opdracht_id);
-- Sogeti-opdracht afmelden?
IF v_afmeldactie > 0
THEN
-- Bepaal of noteur deze opdracht zou mogen afmelden?
v_errormsg := 'Fout bepalen opdracht-autorisaties';
SELECT COUNT (*)
INTO v_count
FROM fac_gebruikersgroep gg, fac_groeprechten gr
WHERE gg.prs_perslid_key = v_perslid_key
AND gr.fac_groep_key = gg.fac_groep_key
AND gr.fac_functie_key IN (38, 39, 321) -- ORDBOF/ORDBO2/EXTORD
AND gr.ins_discipline_key = v_discipline_key
AND gr.fac_gebruiker_prs_level_write < 9
AND gr.fac_gebruiker_alg_level_write < 9;
-- Opdracht is Toegekend/Geaccepteerd <20>n geautoriseerd?
IF v_opdracht_status IN (5, 8) AND v_count > 0
THEN
v_errormsg := 'Fout toevoegen opdracht-afmeldtekst';
UPDATE mld_opdr
SET mld_opdr_opmerking = v_afmeldtekst || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, 1995)
WHERE mld_opdr_key = v_opdracht_key;
v_errormsg := 'Fout afmelden opdracht';
MLD.setopdrachtstatus (v_opdracht_key, 6, v_perslid_key); -- Afgemeld
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-opdracht naar afgemeld ' || v_opdracht_id);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-opdracht NIET afgemeld ' || v_opdracht_id);
END IF;
END IF;
END IF;
v_errormsg := 'Fout toevoegen melding-notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
0);
-- Default tracking is even goed genoeg.
--fac.trackaction ('MLDNOT', v_melding_key, v_perslid_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
-- Als Sogeti de noteur is, dan vlaggetjes zetten zoals mld_edit_note.asp dat doet!
BEGIN
IF v_perslid_key = c_sogeti_key
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- Backoffice + Attentie
WHERE mld_melding_key = v_melding_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Niet gelukt om Attentie te zetten.');
END;
-- Melding afmelden?
IF v_afmeldactie > 0
THEN
-- Bepaal of noteur deze melding zou mogen afmelden?
v_errormsg := 'Fout bepalen autorisaties';
SELECT COUNT (*)
INTO v_count
FROM fac_gebruikersgroep gg, fac_groeprechten gr
WHERE gg.prs_perslid_key = v_perslid_key
AND gr.fac_groep_key = gg.fac_groep_key
AND gr.fac_functie_key = 34 -- MLDBOF
AND gr.ins_discipline_key = v_discipline_key
AND gr.fac_gebruiker_prs_level_write < 9
AND gr.fac_gebruiker_alg_level_write < 9;
-- Melding is niet al Afgemeld/Verwerkt, g<><67>n open opdrachten <20>n geautoriseerd?
IF v_melding_status NOT IN (5, 6) AND v_open_opdr = 0 AND v_count > 0
THEN
v_errormsg := 'Fout toevoegen afmeldtekst';
UPDATE mld_melding
SET mld_melding_opmerking = v_afmeldtekst
WHERE mld_melding_key = v_melding_key;
v_errormsg := 'Fout afmelden melding';
mld.setmeldingstatus (v_melding_key, 5, v_perslid_key);
mld.mld_nextworkflowstep (v_melding_key, 1); -- 1=Completed
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-melding naar afgemeld ' || v_melding_key);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-melding NIET afgemeld ' || v_melding_key);
END IF;
END IF;
WHEN UPPER (pto) LIKE 'SOGETI@%'
THEN
-- Controleer bestaan afgesproken Sogeti-user!
v_errormsg := 'Fout bepalen Sogeti-user';
SELECT prs_perslid_key
INTO v_count
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_sogeti_key;
v_errormsg := 'Fout bepalen Sogeti-opdracht';
IF INSTR (psubject, '##FID:') > 0
THEN
v_opdracht_id := SUBSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)), 1, REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)) || ' ', '\s') - 1);
END IF;
v_errormsg := 'Fout bepalen Sogeti-opdracht ' || v_opdracht_id;
SELECT o.mld_melding_key, o.mld_opdr_key, o.mld_statusopdr_key, COALESCE (o2k.mld_kenmerk_key, -1)
INTO v_melding_key, v_opdracht_key, v_opdracht_status, v_kenmerk_key
FROM mld_opdr o,
(SELECT mld_typeopdr_key, mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = 2141) o2k -- Refnr. leverancier
WHERE o.mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'))
AND o.mld_typeopdr_key = o2k.mld_typeopdr_key(+);
v_errormsg := 'Fout bepalen Sogeti-ref';
IF INSTR (pbody, '##SNID:') > 0 AND v_kenmerk_key IS NOT NULL
THEN
SELECT MAX (mld_kenmerkopdr_key)
INTO v_kenmerkopdr_key
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_opdr_key = v_opdracht_key
AND mld_kenmerk_key = v_kenmerk_key;
v_refnr_lev := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)) || ' ', '\s') - 1);
IF v_kenmerkopdr_key IS NULL
THEN
v_errormsg := 'Fout toevoegen Sogeti-ref';
INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde)
VALUES (v_opdracht_key, v_kenmerk_key, v_refnr_lev);
ELSE
v_errormsg := 'Fout bijwerken Sogeti-ref';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = v_refnr_lev
WHERE mld_kenmerkopdr_key = v_kenmerkopdr_key;
END IF;
END IF;
v_errormsg := 'Fout bepalen behandeling';
IF INSTR (pbody, '##BEHANDELING:') > 0
THEN
v_behandeling := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##BEHANDELING:') + 14)), 1, LEAST (INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##BEHANDELING:') + 14)) || '##', '##') - 1, 2000));
END IF;
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, c_sogeti_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || v_behandeling);
v_errormsg := 'Fout bepalen afhandeling';
IF INSTR (pbody, '##AFHANDELING:') > 0
THEN
v_afhandeling := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AFHANDELING:') + 14)), 1, LEAST (INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AFHANDELING:') + 14)) || '##', '##') - 1, 2000));
IF INSTR (UPPER (v_afhandeling), 'RESOLUTION NOTES:') > 0
THEN
v_afhandeling := TRIM (SUBSTR (v_afhandeling, INSTR (UPPER (v_afhandeling), 'RESOLUTION NOTES:') + 17));
IF INSTR (UPPER (v_afhandeling), 'REF:', -1) > 0
THEN
v_afhandeling := TRIM (SUBSTR (v_afhandeling, 1, INSTR (UPPER (v_afhandeling), 'REF:', -1) - 1));
END IF;
END IF;
END IF;
IF INSTR (UPPER (psubject), '##AFMELDEN') > 0 AND v_opdracht_status IN (5, 8) -- Toegekend/Geaccepteerd
THEN
v_errormsg := 'Fout toevoegen opdracht-afhandeling';
UPDATE mld_opdr
SET mld_opdr_opmerking = v_afhandeling || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, 1995)
WHERE mld_opdr_key = v_opdracht_key;
--v_errormsg := 'Fout toevoegen melding-afhandeling';
--UPDATE mld_melding
-- SET mld_melding_opmerking = v_afhandeling || CHR (13) || CHR (10) || SUBSTR (mld_melding_opmerking, 1, 1995)
-- WHERE mld_melding_key = v_melding_key;
v_errormsg := 'Fout toevoegen melding-notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
c_sogeti_key,
v_afhandeling,
0);
v_errormsg := 'Fout bijwerken opdracht-status';
MLD.setopdrachtstatus (v_opdracht_key, 6, c_sogeti_key); -- Afgemeld
--v_errormsg := 'Fout bijwerken melding-status'; -- MNNL#61759: Besloten de bovenliggende melding niet te sluiten!
--MLD.updatemeldingstatus (v_melding_key, 1, NULL);
END IF;
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Status/voortgang bijgewerkt bij opdracht: ' || v_opdracht_id);
WHEN UPPER (pto) LIKE 'SNOW@%'
THEN
-- Controleer bestaan afgesproken Sogeti-user!
v_errormsg := 'Fout bepalen Sogeti-user';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_key = c_sogeti_key
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen melding';
IF INSTR (UPPER (pbody), '@MELDING:') > 0
THEN
v_melding := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@MELDING:') + 9,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@MELDING:') + 9), '#') - 1));
ELSE
v_melding := '';
END IF;
v_errormsg := 'Fout bepalen onderwerp';
IF INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') > 0
THEN
v_onderwerp := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') + 19,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') + 19), '#') - 1));
ELSE
v_onderwerp := '';
END IF;
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals in
-- pbody achter @MELDING?
v_errormsg := 'Fout bepalen soortmelding ' || COALESCE (v_melding, '???');
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key), MIN (COALESCE (m2k.mld_kenmerk_key, -1))
INTO v_discipline_key, v_stdmelding_key, v_kenmerk_key
FROM mld_discipline md, mld_stdmelding sm,
(SELECT mld_stdmelding_key, mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = -1) m2k -- Refnr. leverancier
WHERE md.ins_discipline_verwijder IS NULL
--AND md.ins_srtdiscipline_key = 21 -- Service Request
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_verwijder IS NULL
AND sm.mld_stdmelding_upper = UPPER (v_melding)
AND sm.mld_stdmelding_key = m2k.mld_stdmelding_key(+)
GROUP BY sm.mld_ins_discipline_key;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
/*
v_errormsg := 'Fout bepalen Sogeti-ref';
IF INSTR (pbody, '##SNID:') > 0 AND v_kenmerk_key IS NOT NULL
THEN
v_refnr_lev := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)) || ' ', '\s') - 1);
v_errormsg := 'Fout toevoegen Sogeti-ref';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, v_kenmerk_key, v_refnr_lev);
END IF;
*/
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
-- Handle workflow actions for completion.
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PROCESSEMAIL', 'E', 'MNNL_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
CREATE OR REPLACE VIEW mnnl_v_rap_mail_error
(
hide_f_offset,
datum,
hint,
error
)
AS
SELECT SYSDATE - imp_log_datum, imp_log_datum, imp_log_hint, imp_log_omschrijving
FROM imp_log
WHERE imp_log_applicatie = 'PROCESSEMAIL' AND imp_log_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1);
CREATE OR REPLACE VIEW mnnl_v_incident_xref
(
mld_melding_key,
incident_xref
)
AS
SELECT m.mld_melding_key, TO_CHAR (m.mld_melding_key) || ' [' || s.mld_statuses_omschrijving || ']'
FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline td, mld_statuses s
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = 22 -- Incident
AND m.mld_melding_status = s.mld_statuses_key;
CREATE OR REPLACE VIEW mnnl_v_udr_deel
(
deel_key,
discipline,
soort,
groep,
soortcode,
omschrijving,
plaatseigenaar,
plaatseigenaartype,
plaatsaanduiding,
eigenaar,
afdeling,
opmerking,
regio,
district,
locatie_code,
locatie_omschrijving,
locatie_plaats,
gebouwcode,
gebouw,
terreinsectorcode,
terreinsector,
verdiepingcode,
ruimtenr,
werkplekvolgnr,
werkplek,
uitleenbaar,
uitgeleend,
res_opmerking,
beheerder,
vervaldatum,
actief,
aantal,
state,
statedate,
fclt_3d_discipline_key,
fclt_3d_afdeling_key,
fclt_3d_locatie_key,
status
)
AS
SELECT ii.ins_deel_key,
lcl.x ('ins_discipline_omschrijving',
id.ins_discipline_key,
id.ins_discipline_omschrijving),
lcl.x ('ins_srtdeel_omschrijving',
s.ins_srtdeel_key,
s.ins_srtdeel_omschrijving),
lcl.x ('ins_srtgroep_omschrijving',
sg.ins_srtgroep_key,
sg.ins_srtgroep_omschrijving),
s.ins_srtdeel_code,
ii.ins_deel_omschrijving,
COALESCE (ii.plaats, ii.eigenaar),
ii.ins_alg_ruimte_type,
ii.plaats,
ii.eigenaar,
ii.afdeling,
ii.ins_deel_opmerking,
ii.regio,
ii.district,
ii.locatie_code,
ii.locatie_omschrijving,
ii.locatie_plaats,
ii.alg_gebouw_code,
ii.alg_gebouw_omschrijving,
ii.alg_terreinsector_code,
ii.alg_terreinsector_omschrijving,
ii.alg_verdieping_code,
ii.alg_ruimte_nr,
ii.prs_werkplek_volgnr,
ii.prs_werkplek_omschrijving,
DECODE (s.ins_srtdeel_uitleenbaar,
1, lcl.l ('lcl_yes'),
lcl.l ('lcl_no')),
DECODE (ii.ins_alg_ruimte_key_org,
NULL, lcl.l ('lcl_no'),
lcl.l ('lcl_yes')),
ii.res_deel_opmerking,
pf.prs_perslid_naam_full,
ii.ins_deel_vervaldatum,
DECODE (ii.ins_deel_actief, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')),
ii.ins_deel_aantal,
ii.ins_deel_state,
ii.ins_deel_statedate,
sg.ins_discipline_key,
ii.ins_alg_ruimte_key,
ii.alg_locatie_key,
(SELECT fu.fac_usrdata_omschr
FROM ins_kenmerkdeel kd, ins_kenmerk k, fac_usrdata fu
WHERE k.ins_kenmerk_key = kd.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 24
AND fu.fac_usrtab_key = 204
AND TO_CHAR (fac_usrdata_key) = kd.ins_kenmerkdeel_waarde
AND ii.ins_deel_key = kd.ins_deel_key) stat
FROM (SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
eigenaar,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
afdeling,
i.ins_discipline_key,
i.ins_alg_ruimte_key,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_v_afdeling_boom d,
prs_bedrijf b
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'A'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
pf.prs_perslid_naam_full eigenaar,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE prs_afdeling_key = p.prs_afdeling_key),
i.ins_discipline_key,
p.prs_afdeling_key,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom d
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'P'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
c.prs_contactpersoon_naam eigenaar,
NULL afdeling,
NULL discipline_key,
NULL,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_contactpersoon c
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = c.prs_contactpersoon_key
AND i.ins_alg_ruimte_type = 'C'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
o.alg_plaatsaanduiding,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
re.alg_regio_omschrijving,
di.alg_district_omschrijving,
l.alg_locatie_code locatie_code,
l.alg_locatie_omschrijving locatie_omschrijving,
l.alg_locatie_plaats locatie_plaats,
o.alg_gebouw_code,
o.alg_gebouw_omschrijving,
o.alg_terreinsector_code,
o.alg_terreinsector_omschrijving,
o.alg_verdieping_code,
o.alg_ruimte_nr,
o.prs_werkplek_volgnr,
o.prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
NULL eigenaar,
NULL afdeling,
i.ins_discipline_key,
NULL,
l.alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
ins_v_alg_overzicht o,
alg_locatie l,
alg_district di,
alg_regio re,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND di.alg_regio_key = re.alg_regio_key) ii,
ins_srtdeel s,
ins_srtgroep sg,
ins_discipline id,
prs_v_perslid_fullnames pf
WHERE sg.ins_srtgroep_key = s.ins_srtgroep_key
AND id.ins_discipline_key = sg.ins_discipline_key
AND ii.prs_perslid_key_beh = pf.prs_perslid_key(+)
AND s.ins_srtdeel_key = ii.ins_srtdeel_key;
-- MNNL#41772: Stakeholders voor small changes.
CREATE OR REPLACE VIEW mnnl_v_perslid_small_changes
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_naam_log_full,
prs_perslid_naam_log_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key IN (441, 442, 443, 444, 445, 447, 456, 453, 462) -- ITL Rechtenbeheer/Unix/Werkplekbeheer (ICT)/Wintel/Oracle/Netwerken/Technisch Applicatiebeheer+MDT Procesbesturing&Integratie+IV Security
AND prs_perslid_key = pf.prs_perslid_key);
CREATE OR REPLACE VIEW mnnl_v_perslid_all
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_naam_log_full,
prs_perslid_naam_log_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key;
-- MNNL#84275: Kenmerkdomein met alle PGGM-ers.
CREATE OR REPLACE VIEW mnnl_v_perslid_pggm
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_naam_log_full,
prs_perslid_naam_log_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_afdeling a, prs_v_afdeling_boom ab, prs_v_perslid_fullnames_all pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = 39284 -- PGGM
AND p.prs_perslid_key = pf.prs_perslid_key;
-- MNNL#58785: Kenmerkdomein met alle objecten.
CREATE OR REPLACE VIEW mnnl_v_objecten
(
ins_deel_key,
ins_deel_oms,
ins_deel_verwijder
)
AS SELECT d.ins_deel_key,
--td.ins_discipline_omschrijving || '-' || sg.ins_srtgroep_omschrijving || '-' || sd.ins_srtdeel_omschrijving || '-' || d.ins_deel_omschrijving ins_deel_oms,
d.ins_deel_omschrijving || ' (' || sd.ins_srtdeel_omschrijving || ')' ins_deel_oms,
d.ins_deel_verwijder
FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_discipline td
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key;
-- MNNL#59416: Kenmerkdomein met lopende Service Request/Incident-meldingen.
CREATE OR REPLACE VIEW mnnl_v_mld_uitleen
(
mld_melding_key,
mld_melding_oms,
mld_melding_tht
)
AS SELECT m.mld_melding_key,
TO_CHAR (m.mld_melding_key) || '/' || m.mld_melding_onderwerp || '/' || pf.prs_perslid_naam_full,
DECODE (m.mld_melding_status, 1, TRUNC (SYSDATE), 5, TRUNC (SYSDATE), 6, TRUNC (SYSDATE), NULL)
FROM mld_melding m, mld_stdmelding sm, mld_discipline md, prs_v_perslid_fullnames_all pf
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (21, 22) -- Service Request/Incident
AND m.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW mnnl_v_rap_change_appr
(
--fclt_3d_discipline_key,
mld_melding_key,
changenr,
soortchange,
onderwerp,
aanvrager,
urgent,
datum_gereed, -- MNNL#67050: Wijzigen naar datum_gereed (ipv. uitvoering).
appr_infra_op,
appr_infra_wn,
appr_infra_wp,
appr_peba,
appr_pepa,
appr_vz,
appr_vb,
appr_fds,
appr_port,
appr_pega,
appr_doc,
appr_ota,
appr_pi,
appr_bi,
appr_rpa,
appr_fac,
appr_cbv,
appr_sec,
appr_infra_nw,
appr_ccc,
appr_nps,
besproken_in_cab
)
AS
SELECT --m.mld_ins_discipline_key,
m.mld_melding_key,
TO_CHAR (m.mld_melding_key),
m.mld_stdmelding_omschrijving,
m.mld_melding_onderwerp,
m.prs_perslid_naam_friendly,
DECODE (urgent.mld_kenmerkmelding_waarde, NULL, NULL, 'Ja') urgent,
--duv.mld_kenmerkmelding_waarde,
mld_melding_einddatum,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = op.mld_kenmerkmelding_waarde) op,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = wn.mld_kenmerkmelding_waarde) wn,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = wp.mld_kenmerkmelding_waarde) wp,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = peba.mld_kenmerkmelding_waarde) peba,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pepa.mld_kenmerkmelding_waarde) pepa,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = vz.mld_kenmerkmelding_waarde) vz,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = vb.mld_kenmerkmelding_waarde) vb,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = fds.mld_kenmerkmelding_waarde) fds,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = port.mld_kenmerkmelding_waarde) port,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pega.mld_kenmerkmelding_waarde) pega,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = doc.mld_kenmerkmelding_waarde) doc,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = ota.mld_kenmerkmelding_waarde) ota,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pi.mld_kenmerkmelding_waarde) pi,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = bi.mld_kenmerkmelding_waarde) bi,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = rpa.mld_kenmerkmelding_waarde) rpa,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = fac.mld_kenmerkmelding_waarde) fac,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = cbv.mld_kenmerkmelding_waarde) cbv,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = sec.mld_kenmerkmelding_waarde) sec,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = nw.mld_kenmerkmelding_waarde) nw,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = ccc.mld_kenmerkmelding_waarde) ccc,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = nps.mld_kenmerkmelding_waarde) nps,
NULL
FROM (SELECT sm.mld_ins_discipline_key, m.mld_melding_key, sm.mld_stdmelding_omschrijving, m.mld_melding_onderwerp, pf.prs_perslid_naam_friendly, m.mld_melding_einddatum
FROM mld_melding m, mld_stdmelding sm, prs_v_perslid_fullnames_all pf
WHERE m.mld_melding_status IN (2, 3, 0) -- 1-Ingevoerd, 3-Ingezien, 0-Pending (zolang nog niet Geaccepteerd/Afgewezen)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key IN (502, 501, 2141, 2381, 2401) -- RFC Medium change/RFC Large change/Vastlegging CAB approvals/RFC Medium/RFC Large
AND m.prs_perslid_key = pf.prs_perslid_key) m
LEFT JOIN mld_v_aanwezigkenmerkmelding urgent
ON m.mld_melding_key = urgent.mld_melding_key
AND urgent.mld_kenmerk_key = 381 -- Urgent change
--LEFT JOIN mld_v_aanwezigkenmerkmelding duv
-- ON m.mld_melding_key = duv.mld_melding_key
-- AND duv.mld_kenmerk_key IN (387, 386) -- Gewenste datum uitvoering
LEFT JOIN mld_v_aanwezigkenmerkmelding op
ON m.mld_melding_key = op.mld_melding_key
AND op.mld_kenmerk_key IN (251, 252, 3121, 3841, 3822) -- Approval Infra Oracle Platform
LEFT JOIN mld_v_aanwezigkenmerkmelding wn
ON m.mld_melding_key = wn.mld_melding_key
AND wn.mld_kenmerk_key IN (255, 256, 3122, 3842, 3823) -- Approval Infra Wintel en Netwerken
LEFT JOIN mld_v_aanwezigkenmerkmelding wp
ON m.mld_melding_key = wp.mld_melding_key
AND wp.mld_kenmerk_key IN (253, 254, 3124, 3844, 3824) -- Approval Infra Werkplekbeheer
LEFT JOIN mld_v_aanwezigkenmerkmelding peba
ON m.mld_melding_key = peba.mld_melding_key
AND peba.mld_kenmerk_key IN (246, 245, 3126, 3846, 3826) -- Approval Basisadministratie
LEFT JOIN mld_v_aanwezigkenmerkmelding pepa
ON m.mld_melding_key = pepa.mld_melding_key
AND pepa.mld_kenmerk_key IN (259, 260, 3127, 3847, 3827) -- Approval Pensioenadministratie
LEFT JOIN mld_v_aanwezigkenmerkmelding vz
ON m.mld_melding_key = vz.mld_melding_key
AND vz.mld_kenmerk_key IN (266, 265, 3129, 3849, 3829) -- Approval Verzekeringen
LEFT JOIN mld_v_aanwezigkenmerkmelding vb
ON m.mld_melding_key = vb.mld_melding_key
AND vb.mld_kenmerk_key IN (264, 263, 3182, 3850, 3830) -- Approval Vermogensbeheer
LEFT JOIN mld_v_aanwezigkenmerkmelding fds
ON m.mld_melding_key = fds.mld_melding_key
AND fds.mld_kenmerk_key IN (250, 249, 3123, 3851, 3831) -- Approval Finance, Risk en HR
LEFT JOIN mld_v_aanwezigkenmerkmelding port
ON m.mld_melding_key = port.mld_melding_key
AND port.mld_kenmerk_key IN (262, 261, 3130, 3852, 3832) -- Approval Portalen
LEFT JOIN mld_v_aanwezigkenmerkmelding pega
ON m.mld_melding_key = pega.mld_melding_key
AND pega.mld_kenmerk_key IN (2681, 2683, 3131, 3853, 3833) -- Approval PEGA
LEFT JOIN mld_v_aanwezigkenmerkmelding doc
ON m.mld_melding_key = doc.mld_melding_key
AND doc.mld_kenmerk_key IN (248, 247, 3132, 3854, 3834) -- Approval Document Services
LEFT JOIN mld_v_aanwezigkenmerkmelding ota
ON m.mld_melding_key = ota.mld_melding_key
AND ota.mld_kenmerk_key IN (257, 258, 3133, 3855, 3835) -- Approval Ontwikkelstraat
LEFT JOIN mld_v_aanwezigkenmerkmelding pi
ON m.mld_melding_key = pi.mld_melding_key
AND pi.mld_kenmerk_key IN (1102, 1122, 3134, 3856, 3836) -- Approval Procesbesturing en Integratie
LEFT JOIN mld_v_aanwezigkenmerkmelding bi
ON m.mld_melding_key = bi.mld_melding_key
AND bi.mld_kenmerk_key IN (1204, 1203, 3135, 3857, 3837) -- Approval Business Intelligence
LEFT JOIN mld_v_aanwezigkenmerkmelding rpa
ON m.mld_melding_key = rpa.mld_melding_key
AND rpa.mld_kenmerk_key IN (2785, 2782, 3128, 3848, 3828) -- Approval Robotics
LEFT JOIN mld_v_aanwezigkenmerkmelding fac
ON m.mld_melding_key = fac.mld_melding_key
AND fac.mld_kenmerk_key IN (3081, 3103, 3125, 3845, 3825) -- Approval Facilities
LEFT JOIN mld_v_aanwezigkenmerkmelding cbv
ON m.mld_melding_key = cbv.mld_melding_key
AND cbv.mld_kenmerk_key IN (3163, 3162, 3181, 3821, 3803) -- Approval Batchverwerking en Implementatie
LEFT JOIN mld_v_aanwezigkenmerkmelding sec
ON m.mld_melding_key = sec.mld_melding_key
AND sec.mld_kenmerk_key IN (4102, 4161) -- Approval Security
LEFT JOIN mld_v_aanwezigkenmerkmelding nw
ON m.mld_melding_key = nw.mld_melding_key
AND nw.mld_kenmerk_key IN (4942, 4941) -- Approval Infra Netwerken
LEFT JOIN mld_v_aanwezigkenmerkmelding ccc
ON m.mld_melding_key = ccc.mld_melding_key
AND ccc.mld_kenmerk_key IN (5701, 5724) -- Approval CCC
LEFT JOIN mld_v_aanwezigkenmerkmelding nps
ON m.mld_melding_key = nps.mld_melding_key
AND nps.mld_kenmerk_key IN (7321, 7341) -- Approval NPS MAP
;
-- MNNL#63830: Soortgelijke rapportage als hierboven, maar dan kijkend naar de
-- 'CAB Testakkoord'- ipv. 'CAB Appr'-reeks van kenmerksoorten.
CREATE OR REPLACE VIEW mnnl_v_rap_change_test
(
--fclt_3d_discipline_key,
mld_melding_key,
changenr,
soortchange,
onderwerp,
aanvrager,
urgent,
datum_gereed, -- MNNL#67050: Wijzigen naar datum_gereed (ipv. uitvoering).
testakoord_infra_op,
testakoord_infra_wn,
testakoord_infra_wp,
testakoord_peba,
testakoord_pepa,
testakoord_vz,
testakoord_vb,
testakoord_fds,
testakoord_port,
testakoord_pega,
testakoord_doc,
testakoord_ota,
testakoord_pi,
testakoord_bi,
testakoord_rpa,
testakoord_fac,
testakoord_cbv,
testakoord_sec,
testakoord_infra_nw,
testakoord_ccc,
testakoord_nps,
besproken_in_cab,
status
)
AS
SELECT --m.mld_ins_discipline_key,
m.mld_melding_key,
TO_CHAR (m.mld_melding_key),
m.mld_stdmelding_omschrijving,
m.mld_melding_onderwerp,
m.prs_perslid_naam_friendly,
DECODE (urgent.mld_kenmerkmelding_waarde, NULL, NULL, 'Ja') urgent,
--duv.mld_kenmerkmelding_waarde,
mld_melding_einddatum,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = op.mld_kenmerkmelding_waarde) op,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = wn.mld_kenmerkmelding_waarde) wn,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = wp.mld_kenmerkmelding_waarde) wp,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = peba.mld_kenmerkmelding_waarde) peba,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pepa.mld_kenmerkmelding_waarde) pepa,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = vz.mld_kenmerkmelding_waarde) vz,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = vb.mld_kenmerkmelding_waarde) vb,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = fds.mld_kenmerkmelding_waarde) fds,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = port.mld_kenmerkmelding_waarde) port,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pega.mld_kenmerkmelding_waarde) pega,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = doc.mld_kenmerkmelding_waarde) doc,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = ota.mld_kenmerkmelding_waarde) ota,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = pi.mld_kenmerkmelding_waarde) pi,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = bi.mld_kenmerkmelding_waarde) bi,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = rpa.mld_kenmerkmelding_waarde) rpa,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = fac.mld_kenmerkmelding_waarde) fac,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = cbv.mld_kenmerkmelding_waarde) cbv,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = sec.mld_kenmerkmelding_waarde) sec,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = nw.mld_kenmerkmelding_waarde) nw,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = ccc.mld_kenmerkmelding_waarde) ccc,
(SELECT fac_usrdata_code FROM fac_v_aanwezigusrdata WHERE TO_CHAR (fac_usrdata_key) = nps.mld_kenmerkmelding_waarde) nps,
NULL,
m.mld_statuses_omschrijving status
FROM (SELECT sm.mld_ins_discipline_key, m.mld_melding_key, sm.mld_stdmelding_omschrijving, m.mld_melding_onderwerp, pf.prs_perslid_naam_friendly, ms.mld_statuses_omschrijving, m.mld_melding_einddatum
FROM mld_melding m, mld_stdmelding sm, prs_v_perslid_fullnames_all pf, mld_statuses ms
WHERE EXISTS (SELECT 1 FROM mld_opdr WHERE mld_melding_key = m.mld_melding_key) -- Zodra opdracht aangemaakt
AND m.mld_melding_status NOT IN (1, 5, 6) -- 1-Afgewezen, 5-Afgemeld, 6-Verwerkt (totdat RFC gesloten)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key IN (502, 501, 2381, 2401) -- RFC Medium change/RFC Large change/RFC Medium/RFC Large
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_melding_status = ms.mld_statuses_key) m
LEFT JOIN mld_v_aanwezigkenmerkmelding urgent
ON m.mld_melding_key = urgent.mld_melding_key
AND urgent.mld_kenmerk_key = 381 -- Urgent change
--LEFT JOIN mld_v_aanwezigkenmerkmelding duv
-- ON m.mld_melding_key = duv.mld_melding_key
-- AND duv.mld_kenmerk_key IN (387, 386) -- Gewenste datum uitvoering
LEFT JOIN mld_v_aanwezigkenmerkmelding op
ON m.mld_melding_key = op.mld_melding_key
AND op.mld_kenmerk_key IN (3961, 3978) -- Testakkoord Infra Oracle Platform
LEFT JOIN mld_v_aanwezigkenmerkmelding wn
ON m.mld_melding_key = wn.mld_melding_key
AND wn.mld_kenmerk_key IN (3962, 3979) -- Testakkoord Infra Wintel en Netwerken
LEFT JOIN mld_v_aanwezigkenmerkmelding wp
ON m.mld_melding_key = wp.mld_melding_key
AND wp.mld_kenmerk_key IN (3963, 3980) -- Testakkoord Infra Werkplekbeheer
LEFT JOIN mld_v_aanwezigkenmerkmelding peba
ON m.mld_melding_key = peba.mld_melding_key
AND peba.mld_kenmerk_key IN (3965, 3982) -- Testakkoord Basisadministratie
LEFT JOIN mld_v_aanwezigkenmerkmelding pepa
ON m.mld_melding_key = pepa.mld_melding_key
AND pepa.mld_kenmerk_key IN (3966, 3983) -- Testakkoord Pensioenadministratie
LEFT JOIN mld_v_aanwezigkenmerkmelding vz
ON m.mld_melding_key = vz.mld_melding_key
AND vz.mld_kenmerk_key IN (3968, 3985) -- Testakkoord Verzekeringen
LEFT JOIN mld_v_aanwezigkenmerkmelding vb
ON m.mld_melding_key = vb.mld_melding_key
AND vb.mld_kenmerk_key IN (3969, 3986) -- Testakkoord Vermogensbeheer
LEFT JOIN mld_v_aanwezigkenmerkmelding fds
ON m.mld_melding_key = fds.mld_melding_key
AND fds.mld_kenmerk_key IN (3970, 3987) -- Testakkoord Finance, Risk en HR
LEFT JOIN mld_v_aanwezigkenmerkmelding port
ON m.mld_melding_key = port.mld_melding_key
AND port.mld_kenmerk_key IN (3971, 3988) -- Testakkoord Portalen
LEFT JOIN mld_v_aanwezigkenmerkmelding pega
ON m.mld_melding_key = pega.mld_melding_key
AND pega.mld_kenmerk_key IN (3972, 3989) -- Testakkoord PEGA
LEFT JOIN mld_v_aanwezigkenmerkmelding doc
ON m.mld_melding_key = doc.mld_melding_key
AND doc.mld_kenmerk_key IN (3973, 3990) -- Testakkoord Document Services
LEFT JOIN mld_v_aanwezigkenmerkmelding ota
ON m.mld_melding_key = ota.mld_melding_key
AND ota.mld_kenmerk_key IN (3974, 3991) -- Testakkoord Ontwikkelstraat
LEFT JOIN mld_v_aanwezigkenmerkmelding pi
ON m.mld_melding_key = pi.mld_melding_key
AND pi.mld_kenmerk_key IN (3975, 3992) -- Testakkoord Procesbesturing en Integratie
LEFT JOIN mld_v_aanwezigkenmerkmelding bi
ON m.mld_melding_key = bi.mld_melding_key
AND bi.mld_kenmerk_key IN (3976, 3993) -- Testakkoord Business Intelligence
LEFT JOIN mld_v_aanwezigkenmerkmelding rpa
ON m.mld_melding_key = rpa.mld_melding_key
AND rpa.mld_kenmerk_key IN (3967, 3984) -- Testakkoord Robotics
LEFT JOIN mld_v_aanwezigkenmerkmelding fac
ON m.mld_melding_key = fac.mld_melding_key
AND fac.mld_kenmerk_key IN (3964, 3981) -- Testakkoord Facilities
LEFT JOIN mld_v_aanwezigkenmerkmelding cbv
ON m.mld_melding_key = cbv.mld_melding_key
AND cbv.mld_kenmerk_key IN (3941, 3977) -- Testakkoord Batchverwerking en Implementatie
LEFT JOIN mld_v_aanwezigkenmerkmelding sec
ON m.mld_melding_key = sec.mld_melding_key
AND sec.mld_kenmerk_key IN (4121, 4163) -- Testakkoord Security
LEFT JOIN mld_v_aanwezigkenmerkmelding nw
ON m.mld_melding_key = nw.mld_melding_key
AND nw.mld_kenmerk_key IN (4962, 4982) -- Testakkoord Infra Netwerken
LEFT JOIN mld_v_aanwezigkenmerkmelding ccc
ON m.mld_melding_key = ccc.mld_melding_key
AND ccc.mld_kenmerk_key IN (5722, 5726) -- Testakkoord CCC
LEFT JOIN mld_v_aanwezigkenmerkmelding nps
ON m.mld_melding_key = nps.mld_melding_key
AND nps.mld_kenmerk_key IN (7323, 7343) -- Testakkoord NPS MAP
;
CREATE OR REPLACE VIEW mnnl_v_noti_change_appr
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS -- Ter info naar enkele medewerkers voor alle medium en large changes!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM fac_tracking t,
mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 43 -- MLDNEW
AND t.fac_tracking_refkey = km.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_kenmerktype = 'V' -- Checkbox
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key = 1261 -- IV Changemanagement
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter approval naar approver volgens hint als 'Impact'-kenmerk gezet op 'Moet approven'!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_v_aanwezigusrdata ud,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND INSTR (sk.mld_srtkenmerk_upper, 'IMPACT') > 0
AND sk.fac_kenmerkdomein_key IS NOT NULL -- Referentie-kenmerk
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key = 1261 -- IV Changemanagement
--AND m.mld_melding_status NOT IN (1, 5, 6) -- 1-Afgewezen, 5-Afgemeld, 6-Verwerkt (zolang nog niet Gesloten)
AND m.mld_melding_status IN (2, 3, 0) -- 1-Ingevoerd, 3-Ingezien, 0-Pending (zolang nog niet Geaccepteerd/Afgewezen)
AND km.mld_kenmerkmelding_waarde = TO_CHAR (ud.fac_usrdata_key)
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = 'MOET APPROVEN'
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter info naar enkele medewerkers volgens checkbox-hint (generieke notificatie voor alle vakgroepen/statussen)!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_kenmerktype = 'V' -- Checkbox
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key != 1261 -- Anders dan IV Changemanagement
AND sn.fac_srtnotificatie_code = 'CUST04'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter approval naar approver zoals voor small changes ingevuld bij 'Approval van collega'!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
p.prs_perslid_email,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 241 -- Approval van collega
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 503 -- RFC Small change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND m.mld_melding_status NOT IN (1, 5, 6) -- 1-Afgewezen, 5-Afgemeld, 6-Verwerkt (zolang nog niet Gesloten)
AND m.mld_melding_status IN (2, 3, 0) -- 1-Ingevoerd, 3-Ingezien, 0-Pending (zolang nog niet Geaccepteerd/Afgewezen)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST07'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
CREATE OR REPLACE VIEW mnnl_v_noti_jira
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (sn.fac_srtnotificatie_oms, '##TEAM##', TRIM (SUBSTR (sk.mld_srtkenmerk_omschrijving, INSTR (sk.mld_srtkenmerk_omschrijving, ' ')))),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = 763 -- Intake business verzoek
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_kenmerk_key IN (1049, 1040, 1042, 1045, 1046, 1038, 1501, 1502, 1563)
AND INSTR (UPPER (k.mld_kenmerk_hint), '@') > 0 -- TODO: Preciezer?
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sn.fac_srtnotificatie_code = 'CUST03'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_JIRA'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MNNL#67354: Inzage medewerkers tbv. Jira (alleen key + oslogin)!
CREATE OR REPLACE VIEW mnnl_v_rap_prs_api (id, login)
AS
SELECT prs_perslid_key, prs_perslid_oslogin FROM prs_v_aanwezigperslid;
-- MNNL#62675: Volgens configuratie in Eigen tabel met key=1081 reminders naar
-- <email> als <soortmelding> met <prio> op <percentage van SLA>.
-- MNNL#71193: CUST10-noti op SLA_DREMPEL3 (initieel 110%=10% overschrijding).
CREATE OR REPLACE VIEW mnnl_v_noti_mld_sla
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
WITH m2m
AS (SELECT sm.mld_stdmelding_key,
SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, ':') + 1, 1) drempel,
ud.fac_usrdata_prijs prio,
ud.fac_usrdata_omschr mailto
FROM fac_v_aanwezigusrdata ud, mld_discipline md, mld_stdmelding sm
WHERE fac_usrtab_key = 1081
AND SUBSTR (fac_usrdata_code, 1, 1) = 'V'
AND fac.safe_to_number (SUBSTR (ud.fac_usrdata_code, 2, INSTR (ud.fac_usrdata_code, ':') - 2)) = md.ins_discipline_key
AND md.ins_discipline_key = sm.mld_ins_discipline_key
UNION ALL
SELECT sm.mld_stdmelding_key,
SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, ':') + 1, 1) drempel,
ud.fac_usrdata_prijs prio,
ud.fac_usrdata_omschr mailto
FROM fac_v_aanwezigusrdata ud, mld_stdmelding sm
WHERE fac_usrtab_key = 1081
AND SUBSTR (ud.fac_usrdata_code, 1, 1) = 'M'
AND fac.safe_to_number (SUBSTR (ud.fac_usrdata_code, 2, INSTR (ud.fac_usrdata_code, ':') - 2)) = sm.mld_stdmelding_key),
drempel1 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 2841), -- SLA_DREMPEL1
drempel2 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 2842), -- SLA_DREMPEL2
drempel3 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 4081) -- SLA_DREMPEL3
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL1##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel1.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel1.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat50pct
FROM mld_melding m, m2m, drempel1
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '1' -- Initieel 50%
AND drempel1.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST05'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat50pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat50pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL2##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel2.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel2.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat80pct
FROM mld_melding m, m2m, drempel2
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '2' -- Initieel 80%
AND drempel2.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST06'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat80pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat80pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL3##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel3.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel3.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat110pct
FROM mld_melding m, m2m, drempel3
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '3' -- Initieel 110%
AND drempel3.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST10'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat110pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat110pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MNNL#61759: Notificatie van status/voortgang tbv. Sogeti/ServiceNow!
CREATE OR REPLACE VIEW mnnl_v_noti_sogeti
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##SNID##', TRIM (ko.mld_kenmerkopdr_waarde)),
'##SUBJECT##', m.mld_melding_onderwerp),
mn.mld_melding_key,
NULL,
NULL,
'sogeti@service-now.com',
NULL,
NULL
FROM mld_melding_note mn,
mld_melding m,
--mld_stdmelding sm,
--mld_discipline md,
mld_opdr o,
mld_v_aanwezigkenmerkopdr ko,
mld_kenmerk k,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE mn.mld_melding_note_flag = 0 -- Hidden notitie
AND mn.prs_perslid_key != 22824 -- Mail-user tbv. Sogeti/Werkplekbeheer
AND mn.mld_melding_key = m.mld_melding_key
--AND m.mld_stdmelding_key = sm.mld_stdmelding_key
--AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND mn.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = 22644 -- Sogeti
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2141 -- Refnr. leverancier
AND NOT EXISTS (SELECT 1 FROM mld_opdr WHERE mld_melding_key = o.mld_melding_key AND mld_opdr_bedrijfopdr_volgnr > o.mld_opdr_bedrijfopdr_volgnr)
AND sn.fac_srtnotificatie_code = 'CUST08'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_SOGETI'
AND mn.mld_melding_note_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MMNL#54758: RAPPORT met alle (INCIDENT) meldingen met en of zonder object (regel per object).
CREATE OR REPLACE VIEW mnnl_v_udr_meldingen
(
melding_key,
melding_nr,
melder,
melder_key,
melder_afd,
melder_afd_omschr,
melding_soort,
melding_productgroep,
melding_subproductgroep,
melding_behandelgroep,
melding_behandelaar,
melding_behandelaar_key,
melding_subproductgroepgroep,
melding_status,
melding_sla_nvt,
melding_sla_werkdgn,
melding_sla_werkuren,
melding_sla_accptdgn,
melding_sla_accpturen,
melding_sla_plan_uitvoertijd,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
melding_doorlooptijd_dgn,
melding_doorloopijd_uren,
melding_onderwerp,
melding_vomschrijving,
melding_opmerking,
melding_prioriteit,
melding_prioriteittxt,
melding_rating,
melding_rating_opmerking,
melding_uitvoering_sla_dagen,
melding_uitvoering_sla_uren,
melding_afspraak_sla_dagen,
melding_afspraak_sla_uren,
melding_accept_sla_optijd,
melding_uitvoering_sla_optijd,
melding_afspraak_sla_optijd,
melding_selfservice,
object_discipline,
object_soort,
object_groep,
object_omschrijving,
object_plaatseigenaar,
storing_scope,
storing_blokkerend,
storing_sinds,
storing_frequency,
storing_type
)
AS
SELECT DISTINCT
m.melding_key,
m.meldingnummer,
m.melder,
m.melder_key,
m.afdeling,
m.afdeling_omschrijving,
m.soortmelding,
m.productgroep,
m.subproductgroep,
m.behandelgroep,
m.behandelaar,
m.behandelaar_key,
m.subproductgroepgroep,
m.melding_status,
m.sla_nvt,
m.sla_werkdgn,
m.sla_werkuren,
m.sla_accptdgn,
m.sla_accpturen,
m.plan_uitvoertijd_sla,
m.melding_datum,
m.melding_einddatum,
m.melding_acceptdatum,
m.melding_afgemeld,
m.melding_accepted,
m.doorlooptijd_werkdgn,
m.doorlooptijd_werkuren,
m.onderwerp,
TO_CHAR (SUBSTR (m.vomschrijving, 1, 4000)) omschrijving,
m.melding_opmerking,
m.prioriteit,
m.prioriteittxt,
m.rating,
m.rating_opmerking,
m.uitvoering_sla_dagen,
m.uitvoering_sla_uren,
m.afspraak_sla_dagen,
m.afspraak_sla_uren,
m.accept_sla_optijd,
m.uitvoering_sla_optijd,
m.afspraak_sla_optijd,
m.selfservice,
dg.ins_discipline_omschrijving discipline,
dg.ins_srtgroep_omschrijving groep,
dg.ins_srtdeel_omschrijving soort,
dg.ins_deel_omschrijving omschrijving,
dg.alg_plaatsaanduiding plaatseigenaar,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 143 AND mld_melding_key = m.melding_key))
waarde143, -- Collega's met zelfde storing
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 145 AND mld_melding_key = m.melding_key),
1, 'ja',
' ')
waarde145, -- De storing is blokkerend
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 146 AND mld_melding_key = m.melding_key)
waarde146, -- De storing treedt op sinds
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 147 AND mld_melding_key = m.melding_key))
waarde147, -- Frequentie van de storing
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 2441 AND mld_melding_key = m.melding_key))
waarde2441 -- Type verstoring
FROM mld_v_udr_melding m, mld_melding_object mo, ins_v_deel_gegevens dg
WHERE m.melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND UPPER (m.soortmelding) = 'INCIDENT'
AND m.melding_key = mo.mld_melding_key(+)
AND mo.ins_deel_key = dg.ins_deel_key(+);
-- MMNL#54758: RAPPORT met alle (INCIDENT) meldingen met en of zonder object (regel per melding).
CREATE OR REPLACE VIEW mnnl_v_udr_meldingen2
(
melding_key,
melding_nr,
melder,
melder_key,
melder_afd,
melder_afd_omschr,
melding_soort,
melding_productgroep,
melding_subproductgroep,
melding_behandelgroep,
melding_behandelaar,
melding_behandelaar_key,
melding_subproductgroepgroep,
melding_status,
melding_sla_nvt,
melding_sla_werkdgn,
melding_sla_werkuren,
melding_sla_accptdgn,
melding_sla_accpturen,
melding_sla_plan_uitvoertijd,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
melding_doorlooptijd_dgn,
melding_doorloopijd_uren,
melding_onderwerp,
melding_vomschrijving,
melding_opmerking,
melding_prioriteit,
melding_prioriteittxt,
melding_rating,
melding_rating_opmerking,
melding_uitvoering_sla_dagen,
melding_uitvoering_sla_uren,
melding_afspraak_sla_dagen,
melding_afspraak_sla_uren,
melding_accept_sla_optijd,
melding_uitvoering_sla_optijd,
melding_afspraak_sla_optijd,
melding_selfservice,
melding_objecten,
storing_scope,
storing_blokkerend,
storing_sinds,
storing_frequency,
storing_type
)
AS
SELECT DISTINCT
m.melding_key,
m.meldingnummer,
m.melder,
m.melder_key,
m.afdeling,
m.afdeling_omschrijving,
m.soortmelding,
m.productgroep,
m.subproductgroep,
m.behandelgroep,
m.behandelaar,
m.behandelaar_key,
m.subproductgroepgroep,
m.melding_status,
m.sla_nvt,
m.sla_werkdgn,
m.sla_werkuren,
m.sla_accptdgn,
m.sla_accpturen,
m.plan_uitvoertijd_sla,
m.melding_datum,
m.melding_einddatum,
m.melding_acceptdatum,
m.melding_afgemeld,
m.melding_accepted,
m.doorlooptijd_werkdgn,
m.doorlooptijd_werkuren,
m.onderwerp,
TO_CHAR (SUBSTR (m.vomschrijving, 1, 4000)) omschrijving,
m.melding_opmerking,
m.prioriteit,
m.prioriteittxt,
m.rating,
m.rating_opmerking,
m.uitvoering_sla_dagen,
m.uitvoering_sla_uren,
m.afspraak_sla_dagen,
m.afspraak_sla_uren,
m.accept_sla_optijd,
m.uitvoering_sla_optijd,
m.afspraak_sla_optijd,
m.selfservice,
mo.objecten,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 143 AND mld_melding_key = m.melding_key))
waarde143, -- Collega's met zelfde storing
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 145 AND mld_melding_key = m.melding_key),
1, 'ja',
' ')
waarde145, -- De storing is blokkerend
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 146 AND mld_melding_key = m.melding_key)
waarde146, -- De storing treedt op sinds
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 147 AND mld_melding_key = m.melding_key))
waarde147, -- Frequentie van de storing
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 2441 AND mld_melding_key = m.melding_key))
waarde2441 -- Type verstoring
FROM mld_v_udr_melding m,
( SELECT mo.mld_melding_key,
LISTAGG (dg.ins_deel_omschrijving || ' (' || dg.ins_srtdeel_omschrijving || ')', ', ' ON OVERFLOW TRUNCATE) WITHIN GROUP (ORDER BY dg.ins_deel_omschrijving)
objecten
FROM mld_melding_object mo, ins_v_deel_gegevens dg
WHERE mo.ins_deel_key = dg.ins_deel_key
GROUP BY mo.mld_melding_key) mo
WHERE m.melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND UPPER (m.soortmelding) = 'INCIDENT'
AND m.melding_key = mo.mld_melding_key(+);
CREATE OR REPLACE VIEW mnnl_v_udr_meldingen3
(
melding_key,
melding_nr,
melder,
melder_key,
melder_afd,
melder_afd_omschr,
melding_soort,
melding_productgroep,
melding_subproductgroep,
melding_behandelgroep,
melding_behandelaar,
melding_behandelaar_key,
melding_subproductgroepgroep,
melding_status,
melding_sla_nvt,
melding_sla_werkdgn,
melding_sla_werkuren,
melding_sla_accptdgn,
melding_sla_accpturen,
melding_sla_plan_uitvoertijd,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
melding_doorlooptijd_dgn,
melding_doorloopijd_uren,
melding_onderwerp,
melding_vomschrijving,
melding_opmerking,
melding_prioriteit,
melding_prioriteittxt,
melding_rating,
melding_rating_opmerking,
melding_uitvoering_sla_dagen,
melding_uitvoering_sla_uren,
melding_afspraak_sla_dagen,
melding_afspraak_sla_uren,
melding_accept_sla_optijd,
melding_uitvoering_sla_optijd,
melding_afspraak_sla_optijd,
melding_selfservice,
melding_objecten,
storing_scope,
storing_blokkerend,
storing_sinds,
storing_frequency,
storing_type,
aant_onderliggend,
problem_eigenaar,
behandelteam,
actieve_behandelaar
)
AS
WITH onderliggend AS ( SELECT mld_melding_mldgroup_key, COUNT ( * ) aant
FROM mld_melding
WHERE mld_melding_mldgroup_key IS NOT NULL
GROUP BY mld_melding_mldgroup_key)
SELECT DISTINCT
m.melding_key,
m.meldingnummer,
m.melder,
m.melder_key,
m.afdeling,
m.afdeling_omschrijving,
m.soortmelding,
m.productgroep,
m.subproductgroep,
m.behandelgroep,
m.behandelaar,
m.behandelaar_key,
m.subproductgroepgroep,
m.melding_status,
m.sla_nvt,
m.sla_werkdgn,
m.sla_werkuren,
m.sla_accptdgn,
m.sla_accpturen,
m.plan_uitvoertijd_sla,
m.melding_datum,
m.melding_einddatum,
m.melding_acceptdatum,
m.melding_afgemeld,
m.melding_accepted,
m.doorlooptijd_werkdgn,
m.doorlooptijd_werkuren,
m.onderwerp,
TO_CHAR (SUBSTR (m.vomschrijving, 1, 4000)) omschrijving,
m.melding_opmerking,
m.prioriteit,
m.prioriteittxt,
m.rating,
m.rating_opmerking,
m.uitvoering_sla_dagen,
m.uitvoering_sla_uren,
m.afspraak_sla_dagen,
m.afspraak_sla_uren,
m.accept_sla_optijd,
m.uitvoering_sla_optijd,
m.afspraak_sla_optijd,
m.selfservice,
mo.objecten,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 143 AND mld_melding_key = m.melding_key))
waarde143, -- Collega's met zelfde storing
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 145 AND mld_melding_key = m.melding_key),
1, 'ja',
' ')
waarde145, -- De storing is blokkerend
(SELECT mld_kenmerkmelding_waarde
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 146 AND mld_melding_key = m.melding_key)
waarde146, -- De storing treedt op sinds
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 147 AND mld_melding_key = m.melding_key))
waarde147, -- Frequentie van de storing
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 2441 AND mld_melding_key = m.melding_key))
waarde2441, -- Type verstoring
onderliggend.aant,
pe.prs_perslid_naam_full problem_eigenaar,
m.actieve_behandelgroep behandelteam,
pfab.prs_perslid_naam_full act_behandelaar
FROM mld_v_udr_melding m,
( SELECT mo.mld_melding_key,
LISTAGG (dg.ins_deel_omschrijving || ' (' || dg.ins_srtdeel_omschrijving || ')', ', ' ON OVERFLOW TRUNCATE) WITHIN GROUP (ORDER BY dg.ins_deel_omschrijving)
objecten
FROM mld_melding_object mo, ins_v_deel_gegevens dg
WHERE mo.ins_deel_key = dg.ins_deel_key
GROUP BY mo.mld_melding_key) mo,
onderliggend,
(SELECT km.mld_melding_key, pf.prs_perslid_naam_full
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
prs_v_perslid_fullnames_all pf
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1217 -- Problem eigenaar
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
pf.prs_perslid_key) pe,
prs_v_perslid_fullnames pfab
WHERE m.melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND m.melding_key = mo.mld_melding_key(+)
AND m.melding_key = onderliggend.mld_melding_mldgroup_key(+)
AND m.melding_key = pe.mld_melding_key(+)
AND m.actieve_behandelaar_key = pfab.prs_perslid_key(+);
-- MNNL#53038: Basisrapport met alle Intake-meldingen incl. kenmerken.
CREATE OR REPLACE VIEW mnnl_v_rap_mld_intake
(
melding_key,
meldingnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
bedrijf_key,
invoerder,
meldbron,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice,
reden_aanvraag, --kenmerk1,
aanvullende_acties, --kenmerk2,
afronding_intake, --kenmerk3,
jira_ticket, --kenmerk4,
cap_bestelling, --kenmerk5,
gewenst_gereed, --kenmerk6,
leverancier, --kenmerk7,
teaminzet_netwerken, --kenmerk8,
teaminzet_oracle_dba, --kenmerk9,
teaminzet_oracle_mw, --kenmerk10,
teaminzet_unix_linux, --kenmerk11,
teaminzet_wpbeheer, --kenmerk12,
teaminzet_wintel, --kenmerk13,
wens, --kenmerk14,
stappen_genomen, --kenmerk15,
bpost_niet_aanmaken, --kenmerk16,
uren_bestelling, --kenmerk17,
teaminzet_tab, --kenmerk18,
teaminzet_security, --kenmerk19,
afronding_ontwerp, --kenmerk20,
teaminzet_cloud_comp, --kenmerk21,
service_ontwerp, --kenmerk22,
link_naar_ontwerp, --kenmerk23,
coord_ontwerpfase, --kenmerk24,
kenmerk25,
kenmerk26,
kenmerk27,
kenmerk28,
kenmerk29,
kenmerk30
)
AS
WITH mk AS (SELECT sk.vnr, sk.mld_srtkenmerk_key, sk.mld_srtkenmerk_omschrijving, kw.mld_melding_key melding_key, kw.waarde
FROM (SELECT ROWNUM vnr, mld_srtkenmerk_key, mld_srtkenmerk_omschrijving
FROM ( SELECT sk.mld_srtkenmerk_key, sk.mld_srtkenmerk_omschrijving, sk.mld_srtkenmerk_aanmaak
FROM mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V')
AND COALESCE (sk.mld_srtkenmerk_verwijder, SYSDATE) > TO_DATE ('010118', 'ddmmyy')
AND EXISTS (SELECT 1 -- Alleen Intake-kenmerksoorten
FROM mld_stdmelding sm, mld_discipline md, mld_kenmerk k
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 121 -- Intake!
AND ((k.mld_kenmerk_niveau = 'S' AND k.mld_stdmelding_key = sm.mld_stdmelding_key)
OR (k.mld_kenmerk_niveau = 'D' AND k.mld_stdmelding_key = md.ins_discipline_key)
OR (k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = 121)) -- Intake!
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key)
AND sk.mld_srtkenmerk_key != 1061 -- VERWIJDERD/Co<43>rdinator van Ontwerp fase
ORDER BY 3, 1)) sk
LEFT JOIN
(SELECT sk.mld_srtkenmerk_key, km.mld_melding_key,
DECODE (sk.mld_srtkenmerk_kenmerktype,
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
km.mld_kenmerkmelding_waarde)
waarde
FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key) kw
ON sk.mld_srtkenmerk_key = kw.mld_srtkenmerk_key)
SELECT x.melding_key,
x.meldingnummer,
x.melding_regio,
x.melding_district,
x.melding_locatiecode,
x.melding_locatie,
x.melding_locatieplaats,
x.fclt_3d_locatie_key,
x.melding_gebouwcode,
x.melding_gebouw,
x.melding_verdieping,
x.melding_ruimtenr,
x.melding_ruimte,
x.melding_ordernr,
x.kostensoortgroep,
x.kostensoort,
x.kostenplaats,
x.kostenplaats_oms,
x.melder,
x.melder_key,
x.afdeling,
x.afdeling_omschrijving,
x.fclt_3d_afdeling_key,
x.bedrijf_key,
x.invoerder,
x.meldbron,
x.soortmelding,
x.fclt_3d_discipline_key,
x.productgroep,
x.subproductgroep,
x.behandelgroep,
x.behandelaar,
x.behandelaar_key,
x.subproductgroepgroep,
x.fclt_3d_discipline2_key,
x.actieve_behandelgroep,
x.actieve_behandelaar_key,
x.actieve_behandelaar,
x.melding_status,
x.sla_nvt,
x.sla_werkdgn,
x.sla_werkuren,
x.sla_respijtdgn,
x.sla_respijturen,
x.sla_accptdgn,
x.sla_accpturen,
x.plan_uitvoertijd_sla,
x.melding_datum,
x.melding_einddatum,
x.melding_acceptdatum,
x.melding_afgemeld,
x.melding_accepted,
x.doorlooptijd_werkdgn,
x.doorlooptijd_werkuren,
x.onderwerp,
x.vomschrijving,
x.melding_opmerking,
x.prioriteit,
x.prioriteittxt,
x.rating,
x.rating_opmerking,
x.bolletje,
x.accept_sla_dagen,
x.accept_sla_uren,
x.uitvoering_sla_dagen,
x.uitvoering_sla_uren,
x.afspraak_sla_dagen,
x.afspraak_sla_uren,
x.accept_sla_optijd,
x.uitvoering_sla_optijd,
x.afspraak_sla_optijd,
x.selfservice,
k1.waarde kenmerk1,
k2.waarde kenmerk2,
k3.waarde kenmerk3,
k4.waarde kenmerk4,
k5.waarde kenmerk5,
k6.waarde kenmerk6,
k7.waarde kenmerk7,
k8.waarde kenmerk8,
k9.waarde kenmerk9,
k10.waarde kenmerk10,
k11.waarde kenmerk11,
k12.waarde kenmerk12,
k13.waarde kenmerk13,
k14.waarde kenmerk14,
k15.waarde kenmerk15,
k16.waarde kenmerk16,
k17.waarde kenmerk17,
k18.waarde kenmerk18,
k19.waarde kenmerk19,
k20.waarde kenmerk20,
k21.waarde kenmerk21,
k22.waarde kenmerk22,
k23.waarde kenmerk23,
k24.waarde kenmerk24,
k25.waarde kenmerk25,
k26.waarde kenmerk26,
k27.waarde kenmerk27,
k28.waarde kenmerk28,
k29.waarde kenmerk29,
k30.waarde kenmerk30
FROM (SELECT v.* FROM mld_v_udr_melding v WHERE UPPER (v.soortmelding) = 'INTAKE') x
LEFT JOIN mk k1 ON x.melding_key = k1.melding_key AND k1.vnr = 1
LEFT JOIN mk k2 ON x.melding_key = k2.melding_key AND k2.vnr = 2
LEFT JOIN mk k3 ON x.melding_key = k3.melding_key AND k3.vnr = 3
LEFT JOIN mk k4 ON x.melding_key = k4.melding_key AND k4.vnr = 4
LEFT JOIN mk k5 ON x.melding_key = k5.melding_key AND k5.vnr = 5
LEFT JOIN mk k6 ON x.melding_key = k6.melding_key AND k6.vnr = 6
LEFT JOIN mk k7 ON x.melding_key = k7.melding_key AND k7.vnr = 7
LEFT JOIN mk k8 ON x.melding_key = k8.melding_key AND k8.vnr = 8
LEFT JOIN mk k9 ON x.melding_key = k9.melding_key AND k9.vnr = 9
LEFT JOIN mk k10 ON x.melding_key = k10.melding_key AND k10.vnr = 10
LEFT JOIN mk k11 ON x.melding_key = k11.melding_key AND k11.vnr = 11
LEFT JOIN mk k12 ON x.melding_key = k12.melding_key AND k12.vnr = 12
LEFT JOIN mk k13 ON x.melding_key = k13.melding_key AND k13.vnr = 13
LEFT JOIN mk k14 ON x.melding_key = k14.melding_key AND k14.vnr = 14
LEFT JOIN mk k15 ON x.melding_key = k15.melding_key AND k15.vnr = 15
LEFT JOIN mk k16 ON x.melding_key = k16.melding_key AND k16.vnr = 16
LEFT JOIN mk k17 ON x.melding_key = k17.melding_key AND k17.vnr = 17
LEFT JOIN mk k18 ON x.melding_key = k18.melding_key AND k18.vnr = 18
LEFT JOIN mk k19 ON x.melding_key = k19.melding_key AND k19.vnr = 19
LEFT JOIN mk k20 ON x.melding_key = k20.melding_key AND k20.vnr = 20
LEFT JOIN mk k21 ON x.melding_key = k21.melding_key AND k21.vnr = 21
LEFT JOIN mk k22 ON x.melding_key = k22.melding_key AND k22.vnr = 22
LEFT JOIN mk k23 ON x.melding_key = k23.melding_key AND k23.vnr = 23
LEFT JOIN mk k24 ON x.melding_key = k24.melding_key AND k24.vnr = 24
LEFT JOIN mk k25 ON x.melding_key = k25.melding_key AND k25.vnr = 25
LEFT JOIN mk k26 ON x.melding_key = k26.melding_key AND k26.vnr = 26
LEFT JOIN mk k27 ON x.melding_key = k27.melding_key AND k27.vnr = 27
LEFT JOIN mk k28 ON x.melding_key = k28.melding_key AND k28.vnr = 28
LEFT JOIN mk k29 ON x.melding_key = k29.melding_key AND k29.vnr = 29
LEFT JOIN mk k30 ON x.melding_key = k30.melding_key AND k30.vnr = 30;
CREATE OR REPLACE VIEW MNNL_V_PERSLID_NAAMTEL
(
PERSLID_KEY,
NAAMTEL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam
|| ' ('
|| prs_perslid_voornaam
|| ') - '
|| prs_perslid_oslogin
|| ' - '
|| prs_perslid_telefoonnr
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_voornaam NOT LIKE '%Leverancier%'
AND prs_perslid_voornaam NOT LIKE '%Algemeen%'
AND prs_perslid_naam NOT LIKE '%test%'
AND prs_perslid_naam NOT LIKE '%INACTIEF%'
AND prs_perslid_oslogin NOT LIKE '%LEV_%'
AND prs_perslid_email LIKE '%@mn.nl%'
ORDER BY prs_perslid_naam;
CREATE OR REPLACE VIEW mnnl_v_rap_overwerk
(
res_key,
res_rsv_ruimte_key,
datum_overwerk,
start_tijd,
eind_tijd,
soort_overwerk,
verdieping,
interne_deelnemers,
externe_deelnemers
)
AS
SELECT DISTINCT
rsv.res_reservering_key,
rsv.res_rsv_ruimte_key,
TRUNC (rsv.res_rsv_ruimte_van),
TO_CHAR (rsv.res_rsv_ruimte_van, 'HH24:MI'),
TO_CHAR (rsv.res_rsv_ruimte_tot, 'HH24:MI'),
ra.res_activiteit_omschrijving,
x.fac_usrdata_omschr,
pers.deelnemer,
(SELECT LISTAGG (bez_afspraak_naam || ' (' || bez_afspraak_bedrijf || ')' , ', ')
WITHIN GROUP (ORDER BY bez_afspraak_naam)
FROM bez_bezoekers b, bez_afspraak a
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.res_rsv_ruimte_key = rsv.res_rsv_ruimte_key) -- Externe deelnemers
FROM res_rsv_ruimte rsv,
res_activiteit ra,
res_kenmerkwaarde rkw,
mnnl_v_perslid_naamtel pt,
(SELECT DISTINCT f.fac_usrdata_omschr, f.fac_usrdata_key
FROM fac_usrdata f, res_kenmerk rk, res_kenmerkwaarde rkw
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 164 -- Verdieping
AND rkw.res_kenmerkwaarde_verwijder IS NULL
AND f.fac_usrtab_key = 621) x,
(SELECT DISTINCT
LISTAGG (pt.naamtel, ', ')
WITHIN GROUP (ORDER BY pt.naamtel)
deelnemer,
rkw.res_rsv_ruimte_key
FROM mnnl_v_perslid_naamtel pt,
res_kenmerk rk,
res_kenmerkwaarde rkw
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 162 -- Deelnemer
AND rkw.res_kenmerkwaarde_verwijder IS NULL
AND rkw.res_kenmerkreservering_waarde = pt.perslid_key
GROUP BY rkw.res_rsv_ruimte_key) pers
WHERE ra.res_activiteit_key IN (210, 211) -- Overwerk, Overwerk Weekend
AND rsv.res_activiteit_key = ra.res_activiteit_key
AND rsv.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key
AND x.fac_usrdata_key =
fac.safe_to_number (rkw.res_kenmerkreservering_waarde)
AND pers.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key;
CREATE OR REPLACE VIEW mnnl_v_ins_qrc_ruimte
(
FCLT_3D_LOCATIE_KEY,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
PLAATS,
SOORTRUIMTE,
INS_ALG_RUIMTE_TYPE,
ALG_DISTRICT_KEY,
ALG_RUIMTE_KEY,
HIDE_F_BOOKMARK_ID
)
AS
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving,
x.alg_gebouw_naam,
SUBSTR (x.alg_plaatsaanduiding, 7) plaats,
x.alg_ruimte_omschrijving soortruimte,
sr.alg_srtruimte_omschrijving,
l.alg_district_key,
x.alg_ruimte_key,
b.fac_bookmark_id
FROM alg_v_allonrgoed_gegevens x,
alg_locatie l,
alg_district di,
fac_bookmark b,
alg_ruimte r,
alg_srtruimte sr
WHERE b.fac_bookmark_naam = 'QRC naar ruimte'
AND x.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND x.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key;
-- Dummy export NACHTWERK!
-- MNNL#54328: Automatisch verwerken alle afgemelde meldingen.
CREATE OR REPLACE PROCEDURE mnnl_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Auto-afmelden alle afgemelde meldingen in de nacht na afmelden!
CURSOR c_mldver
IS
SELECT '[' || TO_CHAR (m.mld_melding_key) || '] ' aanduiding,
m.mld_melding_key
FROM mld_melding m
WHERE m.mld_melding_status = 5 -- Afgemeld
ORDER BY m.mld_melding_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_bedrijf_key NUMBER;
v_count NUMBER;
BEGIN
v_count := 0;
-- Auto-verwerken alle afgemelde meldingen in de nacht na afmelden!
FOR rec IN c_mldver
LOOP
BEGIN
v_errormsg := 'Fout auto-verwerken';
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL);
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'Meldingen/#verwerkt: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END mnnl_select_nachtwerk;
/
-- MNNL#72704: Export naar SNOW (= Servicenow) die telkens voorafgaand aan
-- putOrders het volgende doet:
-- 1. Relevante wijzigingen in opdracht (anders dan vanuit SNOW
-- via API) opnieuw uitgeven via orderqueue.
-- 2. Laatste sync-datum registreren, zodat eerdere wijzigingen
-- niet nogmaals worden doorgezet.
CREATE OR REPLACE PROCEDURE MNNL_SELECT_SNOW
AS
-- Nieuwe notitie(s) sinds laatste sync!
CURSOR c_sync
IS
SELECT '[' || TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) || '] '
aanduiding,
mld_opdr_key,
COALESCE (syncdate_old, TRUNC (SYSDATE)) syncdate_old,
MAX (syncdate_new) syncdate_new,
MAX (actie) actie
FROM (SELECT o.mld_melding_key, -- Door te zetten Notities?
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
o.mld_opdr_externsyncdate syncdate_old,
GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum)
syncdate_new,
'1Notitie(s) naar SNOW' actie
FROM mld_opdr o, mld_opdr_note mon
WHERE o.mld_uitvoerende_keys = 22644 -- Sogeti
AND o.mld_opdr_externnr IS NOT NULL -- Via API-koppeling
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend/Geaccepteerd
AND o.mld_opdr_verzonden IS NOT NULL
AND o.mld_opdr_key = mon.mld_opdr_key
AND mon.prs_perslid_key != 32984 -- API-user tbv. Sogeti
AND GREATEST (mon.mld_opdr_note_aanmaak, mon.mld_opdr_note_wijzigdatum) >
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE))
UNION ALL
SELECT o.mld_melding_key, -- Reopen als 'Klant niet akkoord' aangevinkt?
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
o.mld_opdr_externsyncdate syncdate_old,
ko.mld_kenmerkopdr_aanmaak syncdate_new,
'2Ticket reopen naar SNOW' actie
FROM mld_opdr o, mld_v_aanwezigkenmerkopdr ko
WHERE o.mld_uitvoerende_keys = 22644 -- Sogeti
AND o.mld_opdr_externnr IS NOT NULL -- Via API-koppeling
AND o.mld_statusopdr_key IN (5, 8) -- Toegekend/Geaccepteerd
AND o.mld_opdr_verzonden IS NOT NULL
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key IN (5921, 5925) -- Klant niet akkoord (5925=TEST-opdrachttype)
AND ko.mld_kenmerkopdr_aanmaak >
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE))
UNION ALL
SELECT o.mld_melding_key, -- Close als ORDAFM vanuit MN (klant akkoord)?
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
o.mld_opdr_externsyncdate syncdate_old,
t.fac_tracking_datum syncdate_new,
'3Ticket closed naar SNOW' actie
FROM mld_opdr o, fac_tracking t
WHERE o.mld_uitvoerende_keys = 22644 -- Sogeti
AND o.mld_opdr_externnr IS NOT NULL -- Via API-koppeling
AND o.mld_opdr_verzonden IS NOT NULL
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 58 -- ORDAFM
AND t.prs_perslid_key != 32984 -- API-user tbv. Sogeti
AND t.fac_tracking_datum >
COALESCE (o.mld_opdr_externsyncdate, TRUNC (SYSDATE)))
GROUP BY '[' || TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) || '] ',
mld_opdr_key,
COALESCE (syncdate_old, TRUNC (SYSDATE))
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_exist NUMBER;
v_kenmerk_key NUMBER(10);
v_kenmerkopdr_key NUMBER(10);
BEGIN
v_count := 0;
v_errormsg := 'Fout sync-en opdracht(en)';
-- Sync-en wijziging(en)!
FOR rec IN c_sync
LOOP
BEGIN
v_errormsg := 'Fout bijwerken notitie(s)';
-- TRUC: Zet wijzigdatum van te notificeren notities op syncdate_new!
-- Bij 1 notitie zal gelden syncdate_new = wijzigdatum (en wijzigt er
-- niets), maar truc gaat pas echt werken als er >1 notities zijn!
UPDATE mld_opdr_note
SET mld_opdr_note_wijzigdatum = rec.syncdate_new
WHERE mld_opdr_key = rec.mld_opdr_key
AND GREATEST (mld_opdr_note_aanmaak, mld_opdr_note_wijzigdatum) > rec.syncdate_old;
-- Als klant niet akkoord, dan wissen 'Klant niet akkoord'-kenmerk en
-- vullen 'Laatst heropend'-kenmerk!
IF SUBSTR (rec.actie, 1, 1) = '2' -- Reopen (incl. evt. Notities)
THEN
v_errormsg := 'Fout verwijderen Klant niet akkoord';
DELETE FROM mld_kenmerkopdr
WHERE mld_kenmerk_key IN (5921, 5925) -- Klant niet akkoord (5925=TEST-opdrachttype)
AND mld_opdr_key = rec.mld_opdr_key;
SELECT COUNT ( * ), MAX (mld_kenmerk_key)
INTO v_exist, v_kenmerk_key
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key IN (5922, 5926) -- Laatst heropend (5926=TEST-opdrachttype)
AND mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bijwerken Laatst heropend';
IF v_exist = 0
THEN
--INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
-- mld_opdr_key,
-- mld_kenmerkopdr_waarde)
-- VALUES (5922,
-- rec.mld_opdr_key,
-- TO_CHAR (rec.syncdate_new, 'dd-mm-yyyy hh24:mi:ss'));
IF v_kenmerk_key = 5922
THEN
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (5922,
rec.mld_opdr_key,
TO_CHAR (rec.syncdate_new, 'dd-mm-yyyy hh24:mi:ss'));
ELSE -- 5926=TEST-opdrachttype
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (5926,
rec.mld_opdr_key,
TO_CHAR (rec.syncdate_new, 'dd-mm-yyyy hh24:mi:ss'));
END IF;
ELSE
SELECT mld_kenmerkopdr_key
INTO v_kenmerkopdr_key
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_kenmerk_key IN (5922, 5926) -- Laatst heropend (5926=TEST-opdrachttype)
AND mld_opdr_key = rec.mld_opdr_key;
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = TO_CHAR (rec.syncdate_new, 'dd-mm-yyyy hh24:mi:ss')
WHERE mld_kenmerkopdr_key = v_kenmerkopdr_key;
END IF;
END IF;
v_errormsg := 'Fout bijwerken opdracht';
UPDATE mld_opdr
SET mld_opdr_teverzenden = 2,
mld_opdr_verzonden = NULL,
mld_opdr_teverzenden_datum = NULL, -- TODO:Navragen???
mld_opdr_externsyncdate = rec.syncdate_new
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bijwerken tracking';
fac.trackaction ('ORDUPD', rec.mld_opdr_key, NULL, NULL, SUBSTR (rec.actie, 2));
COMMIT;
v_count := v_count + 1;
v_errormsg := 'Done sync-en opdracht(en)';
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('ORDUPD2SNOW', 'W', rec.aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.writelog ('ORDUPD2SNOW', 'S', 'Opdrachten/#sync: ' || TO_CHAR (v_count), v_errormsg);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('ORDUPD2SNOW', 'E', 'SNOW-export afgebroken!', v_errormsg);
END MNNL_SELECT_SNOW;
/
-- MNNL#53390: Inzicht in voortgang van specifiek geidentificeerde workflows.
CREATE OR REPLACE VIEW mnnl_v_rap_wf_progress
(
wf,
melding_key,
melding_datum,
melding_onderwerp,
melding_status,
melding_behandelaar,
max_stap_melding_key,
max_stap_melding_datum,
max_stap_melding_onderwerp,
max_stap_melding_status,
max_stap_melding_behandelaar,
max_stap_stdmelding_key,
max_stap_stdmelding_oms,
melder,
melder_afdeling_code,
melder_afdeling_oms,
problem_eigenaar,
aant_onderliggend
)
AS
WITH onderliggend AS ( SELECT wf.mld_melding_start_key, COUNT (*) aant
FROM mld_melding wf, mld_melding gr
WHERE wf.mld_melding_start_key IS NOT NULL
AND wf.mld_melding_mldgroup_key = gr.mld_melding_mldgroup_key
GROUP BY wf.mld_melding_start_key)
SELECT (SELECT mld_workflowstep_omschrijving FROM mld_workflowstep WHERE mld_workflowstep_key = x.mld_workflowstep_key)
wf,
x.mld_melding_key,
x.mld_melding_datum,
x.mld_melding_onderwerp,
x.mld_statuses_omschrijving melding_status,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.mld_melding_behandelaar_key)
melding_behandelaar,
stap.mld_melding_key max_stap_melding_key,
stap.mld_melding_datum max_stap_melding_datum,
stap.mld_melding_onderwerp max_stap_melding_onderwerp,
stap.mld_statuses_omschrijving max_stap_melding_status,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = stap.mld_melding_behandelaar_key)
max_stap_melding_behandelaar,
stap.mld_stdmelding_key max_stap_stdmelding_key,
stap.mld_stdmelding_omschrijving max_stap_stdmelding_oms,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.prs_perslid_key)
melder,
x.prs_afdeling_naam,
x.prs_afdeling_omschrijving,
pf.prs_perslid_naam_full problem_eigenaar,
onderliggend.aant
FROM (SELECT m.mld_melding_key,
m.mld_melding_datum,
m.mld_melding_onderwerp,
ms.mld_statuses_omschrijving,
m.mld_melding_behandelaar_key,
m.mld_workflowstep_key,
p.prs_perslid_key,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving
FROM mld_melding m, mld_statuses ms, prs_perslid p, prs_afdeling a
WHERE m.mld_workflowstep_key IN (156, 325, 331, 335) -- Intake business verzoek aan IV/Problem onderzoek/Problem known error/Problem performance
AND m.mld_melding_status NOT IN (1, 5, 6) -- Lopende WFs (eerste WF-stap nog niet gesloten)
AND m.mld_melding_status = ms.mld_statuses_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key) x
LEFT JOIN (SELECT m.mld_melding_start_key,
m.mld_melding_key,
m.mld_melding_datum,
m.mld_melding_onderwerp,
ms.mld_statuses_omschrijving,
m.mld_melding_behandelaar_key,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving
FROM mld_melding m, mld_statuses ms, mld_stdmelding sm
WHERE m.mld_workflowstep_key IS NOT NULL -- Beschouw alleen WF-stappen
AND m.mld_stdmelding_key NOT IN (921, 1041) -- Uitsluiten specifieke "dangling" Intake-stappen
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND NOT EXISTS
(SELECT 1
FROM mld_melding
WHERE mld_workflowstep_key IS NOT NULL -- Beschouw alleen WF-stappen
AND mld_stdmelding_key NOT IN (921, 1041) -- Uitsluiten specifieke "dangling" Intake-stappen
AND mld_melding_start_key = m.mld_melding_start_key
AND mld_melding_key > m.mld_melding_key)) stap
ON x.mld_melding_key = stap.mld_melding_start_key
LEFT JOIN mld_v_aanwezigkenmerkmelding km
ON stap.mld_melding_key = km.mld_melding_key
AND EXISTS
(SELECT 1
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 1217 -- Problem eigenaar
AND mld_kenmerk_key = km.mld_kenmerk_key)
LEFT JOIN prs_v_perslid_fullnames_all pf
ON fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key
LEFT JOIN onderliggend
ON x.mld_melding_key = onderliggend.mld_melding_start_key;
-- MNNL#56677/59398: FO afhandeling.
CREATE OR REPLACE VIEW mnnl_v_rap_fo_afhandeling
(
aanmelddatum,
afmelddatum,
vakgroeptype_key,
vakgroeptype,
vakgroep_key,
vakgroep,
soortmelding_key,
soortmelding,
meldingnr,
aanmelder,
aangemeld_fo_aant,
aangemeld_fo_perc,
afmelder,
afgemeld_fo_aant,
afgemeld_fo_perc
)
AS
SELECT fac.gettrackingdate ('MLDNEW', x.mld_melding_key) mldnew,
t.fac_tracking_datum mldafm,
x.ins_srtdiscipline_key,
x.ins_srtdiscipline_omschrijving,
x.ins_discipline_key,
x.ins_discipline_omschrijving,
x.mld_stdmelding_key,
x.mld_stdmelding_omschrijving,
COALESCE (x.ins_srtdiscipline_prefix, '') || TO_CHAR (x.mld_melding_key) melding_nr,
pnew.prs_perslid_naam_full,
DECODE (udnew.fac_usrdata_key, NULL, 0, DECODE (SIGN (udnew.fac_usrdata_vervaldatum - t.fac_tracking_datum), -1, 0, 1)),
DECODE (udnew.fac_usrdata_key, NULL, 0, DECODE (SIGN (udnew.fac_usrdata_vervaldatum - t.fac_tracking_datum), -1, 0, 100)),
pafm.prs_perslid_naam_full,
DECODE (t.prs_perslid_key, NULL, TO_NUMBER (NULL), DECODE (udafm.fac_usrdata_key, NULL, 0, DECODE (SIGN (udafm.fac_usrdata_vervaldatum - t.fac_tracking_datum), -1, 0, 1))),
DECODE (t.prs_perslid_key, NULL, TO_NUMBER (NULL), DECODE (udafm.fac_usrdata_key, NULL, 0, DECODE (SIGN (udafm.fac_usrdata_vervaldatum - t.fac_tracking_datum), -1, 0, 100)))
FROM (SELECT sd.ins_srtdiscipline_key,
sd.ins_srtdiscipline_prefix,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_key,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) prs_mldnew_key
FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd
WHERE 1 = 1
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key) x
LEFT JOIN prs_v_perslid_fullnames_all pnew
ON x.prs_mldnew_key = pnew.prs_perslid_key
LEFT JOIN fac_v_aanwezigusrdata udnew
ON x.prs_mldnew_key = fac.safe_to_number (udnew.fac_usrdata_code)
AND udnew.fac_usrtab_key = 921 -- Aanmelders als FO
LEFT JOIN fac_tracking t
ON x.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 38
LEFT JOIN fac_v_aanwezigusrdata udafm
ON t.prs_perslid_key = fac.safe_to_number (udafm.fac_usrdata_code)
AND udafm.fac_usrtab_key = 921 -- Afmelders als FO
LEFT JOIN prs_v_perslid_fullnames_all pafm
ON t.prs_perslid_key = pafm.prs_perslid_key;
-- MNNL#62537: WP-reserveringen.
-- MNNL#74028: Nieuwe werkwijze PP-reserveringen (los van WP-reserveringen en
-- parkeerplaatsen bij bezoekers).
-- MNNL#84275: Nieuwe werkwijze PP-reserveringen voor PGGM-ers.
CREATE OR REPLACE VIEW mnnl_v_rap_res_wp
(
hide_f_sortering,
res_rsv_ruimte_key,
activiteit,
maand,
datum,
van,
tot,
afd_code,
afd_oms,
res_id,
aanvrager,
aanvrager_login,
gastheer_vrouw,
wp_id,
pp_id,
kenteken,
dirty,
pggm
)
AS
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd') || a.prs_afdeling_naam2 || pc.prs_perslid_naam_full sortering,
rrr.res_rsv_ruimte_key,
ra.res_activiteit_omschrijving activiteit,
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
rrr.res_rsv_ruimte_van datum,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
a.prs_afdeling_naam2,
a.prs_afdeling_omschrijving,
TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr)
resid,
pc.prs_perslid_naam_full || '[' || p.prs_perslid_oslogin || ']' aanvrager,
p.prs_perslid_oslogin aanvrager_login,
ph.prs_perslid_naam_full gastheer,
DECODE (wp.aant,
NULL, '',
0, '',
1, wp.wp_id,
wp.wp_id || '[' || wp.aant || ']')
wp_id,
DECODE (pp.aant,
NULL, '',
0, '',
1, pp.pp_id,
pp.pp_id || '[' || pp.aant || ']')
pp_id,
res_kenmerkreservering_waarde kenteken,
DECODE (rrr.res_rsv_ruimte_dirtlevel + COALESCE (wp.res_rsv_deel_dirtlevel, 0) + COALESCE (pp.res_rsv_deel_dirtlevel, 0), 0, 'Nee', 'Ja'),
--DECODE (wp.res_discipline_key, 3542, 1, 0) pggm
DECODE (ab.prs_bedrijf_key, 39284, 1, 0) pggm
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_v_afdeling a,
bez_afspraak ba,
bez_bezoekers bb,
( SELECT rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel, rd.res_discipline_key,
MIN (rd.res_deel_omschrijving) wp_id,
COUNT ( * ) aant
FROM res_v_aanwezigrsv_deel rrd, res_deel rd
WHERE rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key IN (2362, 3141, 3542) -- Werkplekken/Parkeerplek (per 2023/voorjaar)/Parkeerplek-PGGM (per 2024/zomer)
GROUP BY rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel, rd.res_discipline_key) wp,
( SELECT rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel,
MIN (d.ins_deel_omschrijving) pp_id,
COUNT ( * ) aant
FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d
WHERE rrd.bez_bezoekers_key IS NOT NULL
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
--AND EXISTS (SELECT 1 FROM res_rsv_ruimte WHERE res_activiteit_key = 250 AND res_rsv_ruimte_key = rrd.res_rsv_ruimte_key)
GROUP BY rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel) pp,
(SELECT * FROM res_v_aanwezigkenmerkwaarde WHERE res_kenmerk_key = 421) rk,
prs_v_perslid_fullnames_all pc,
prs_v_perslid_fullnames_all ph
WHERE rrr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND rrr.res_activiteit_key = ra.res_activiteit_key
--AND rrr.res_activiteit_key IN (250, 390) -- Werkplekken/Parkeerplek
AND rrr.res_activiteit_key = 390 -- Parkeerplek
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key -- Of host?
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key = a.prs_afdeling_key
AND rrr.res_rsv_ruimte_key = ba.res_rsv_ruimte_key(+)
AND ba.bez_afspraak_key = bb.bez_afspraak_key(+)
AND rrr.res_rsv_ruimte_key = wp.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = pp.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_key = rk.res_rsv_ruimte_key(+)
AND rrr.res_rsv_ruimte_contact_key = pc.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = ph.prs_perslid_key;
CREATE OR REPLACE VIEW mnnl_v_rap_res_wp_aant
(
hide_f_sortering,
activiteit,
maand,
datum,
unit_code,
unit_oms,
pggm,
aant_wp,
aant_pp
)
AS
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd') || a.prs_afdeling_naam sortering,
ra.res_activiteit_omschrijving activiteit,
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
TRUNC (rrr.res_rsv_ruimte_van) datum,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
--DECODE (pp.res_discipline_key, 3542, 1, 0) pggm,
DECODE (ab.prs_bedrijf_key, 39284, 1, 0) pggm,
COUNT ( * ) aant_wp,
SUM (DECODE (pp.aant, NULL, 0, 0, 0, pp.aant)) aant_pp
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_afdeling a,
--( SELECT res_rsv_ruimte_key, COUNT ( * ) aant
-- FROM res_v_aanwezigrsv_deel
-- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty
-- AND bez_bezoekers_key IS NOT NULL
-- GROUP BY res_rsv_ruimte_key) pp
( SELECT rrd.res_rsv_ruimte_key, rd.res_discipline_key,
COUNT ( * ) aant
FROM res_v_aanwezigrsv_deel rrd, res_deel rd
WHERE rrd.res_rsv_deel_dirtlevel = 0 -- Niet dirty
AND rrd.bez_bezoekers_key IS NOT NULL
AND rrd.res_deel_key = rd.res_deel_key
GROUP BY rrd.res_rsv_ruimte_key, rd.res_discipline_key) pp
WHERE rrr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND rrr.res_activiteit_key = ra.res_activiteit_key
--AND rrr.res_activiteit_key IN (250, 390) -- Werkplekken/Parkeerplekken
AND rrr.res_activiteit_key = 390 -- Parkeerplek
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key -- Of host?
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
AND rrr.res_rsv_ruimte_key = pp.res_rsv_ruimte_key(+)
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd') || a.prs_afdeling_naam,
ra.res_activiteit_omschrijving,
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm'),
TRUNC (rrr.res_rsv_ruimte_van),
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
--DECODE (pp.res_discipline_key, 3542, 1, 0)
DECODE (ab.prs_bedrijf_key, 39284, 1, 0)
;
-- MNNL#64264: Personen per autorisatiegroep.
CREATE OR REPLACE VIEW mnnl_v_udr_prs_per_groep
(
groep_key,
groep_oms,
perslid_key,
naam_full,
naam_friendly,
loginnaam,
afd_code,
afd_oms
)
AS
SELECT g.fac_groep_key, g.fac_groep_omschrijving,
p.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly,
COALESCE (p.prs_perslid_oslogin, p.prs_perslid_oslogin2),
a.prs_afdeling_naam, a.prs_afdeling_omschrijving
FROM fac_groep g, fac_gebruikersgroep gg, prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames pf
WHERE g.fac_groep_key = gg.fac_groep_key
AND gg.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL
AND p.prs_perslid_key = pf.prs_perslid_key;
-- MNNL#65883: FirstTimeRight-rapportage!
-- Meldingen left-joinen met first en aantal vakgroep-wijzigingen:
-- FTR=J als gesloten en nul vakgroep-wijzigingen
-- FTR=NULL als lopend en nul vakgroep-wijzigingen
-- FTR=N als 1 of meer vakgroep-wijzigingen
CREATE OR REPLACE VIEW mnnl_v_udr_mld_ftr
AS
WITH t
AS ( SELECT fac_tracking_refkey,
COUNT ( * ) aantal,
MIN (SUBSTR ('00000' || TO_CHAR (fac_tracking_key), -10)
|| SUBSTR (fac_tracking_oms,
INSTR (fac_tracking_oms, 'Vakgroep:') + 10,
INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Vakgroep:') + 10, 100), ' --> ') - 1))
omschr
FROM fac_tracking
WHERE fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND fac_srtnotificatie_key = 45 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Vakgroep:') > 0
GROUP BY fac_tracking_refkey)
SELECT m.mld_melding_key,
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) meldingnummer,
mb.mld_meldbron_omschrijving meldbron,
ms.mld_statuses_omschrijving meldingstatus,
m.mld_melding_datum meldingdatum,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) afmelddatum,
pd.prs_perslid_naam_full door,
pv.prs_perslid_naam_full voor,
DECODE (pd.prs_perslid_key, pv.prs_perslid_key, 'J', 'N') zelf,
DECODE (m.mld_melding_status,
5, DECODE (t.aantal, NULL, 'J', 'N'),
6, DECODE (t.aantal, NULL, 'J', 'N'),
DECODE (t.aantal, NULL, NULL, 'N'))
ftr,
COALESCE (t.aantal, 0) aantal,
sd.ins_srtdiscipline_omschrijving vakgroeptype_now,
COALESCE (SUBSTR (t.omschr, 11), md.ins_discipline_omschrijving) vakgroep_1st,
md.ins_discipline_omschrijving vakgroep_now,
sm.mld_stdmelding_omschrijving meldingsoort_now
FROM mld_melding m,
mld_meldbron mb,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_v_perslid_fullnames_all pd, -- Door=Invoer
prs_v_perslid_fullnames_all pv, -- Voor=Melder
t
WHERE m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND m.mld_meldbron_key = mb.mld_meldbron_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key = 22 -- Incident (of meer?)
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = pd.prs_perslid_key
AND m.prs_perslid_key_voor = pv.prs_perslid_key
AND m.mld_melding_key = t.fac_tracking_refkey(+);
-- MNNL#65935: Notitie-rapportage!
CREATE OR REPLACE VIEW mnnl_v_udr_mld_notes
AS
SELECT SYSDATE - n.mld_melding_note_aanmaak hide_f_sort, -- Recentste bovenaan
m.mld_melding_key,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
sm.mld_stdmelding_omschrijving meldingsoort,
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) meldingnummer,
ms.mld_statuses_omschrijving meldingstatus,
m.mld_melding_datum meldingdatum,
pm.prs_perslid_naam_full melder,
a.prs_afdeling_naam melderafdeling,
n.mld_melding_note_aanmaak notitiedatum,
pn.prs_perslid_naam_full notitiedoor,
n.mld_melding_note_flag notitievlag,
ng.fac_note_group_naam notitieclassificatie
FROM mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
prs_perslid p,
prs_afdeling a,
prs_v_perslid_fullnames_all pm, -- Melder
mld_melding_note n,
prs_v_perslid_fullnames_all pn, -- Noteur
fac_note_group ng
WHERE m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pm.prs_perslid_key
AND m.mld_melding_key = n.mld_melding_key
AND n.prs_perslid_key = pn.prs_perslid_key
AND n.fac_note_group_key = ng.fac_note_group_key(+);
-- MNNL#66030: Kennisbank-rapportage!
CREATE OR REPLACE VIEW mnnl_v_udr_faq_clicks
AS
SELECT x.fac_faq_key kennisbanknr,
SUBSTR (x.fac_faq_question, 1, 100) vraag,
--x.fac_faq_answer antwoord,
--x.fac_faq_hint zoekwoorden,
--x.fac_faq_url url, -- Meer info (URL)
DECODE (x.fac_faq_level,
1, 'Zelfservice',
2, 'Professionals',
3, 'Zelfservice en professionals',
NULL)
zichtbaar_voor,
DECODE (x.fac_faq_displaymode,
0, 'Beide',
1, 'Altijd tonen',
2, 'Pop-up',
3, 'Niet automatisch',
NULL)
weergave_bij_melding,
x.fac_faq_source oorsprong,
x.fac_faq_datum publicatiedatum, -- Publicatiedatum
x.fac_faq_wijzigdatum laatst_gewijzigd_op, -- Wijzigdatum
pf.prs_perslid_naam_full laatst_gewijzigd_door, -- Aangepast door
x.fac_faq_lang taal,
DECODE (f.fac_functie_key, NULL, 'Alle', f.fac_functie_code)
autorisatie_als,
x.fac_faq_rank clicks
--aog.alg_plaatsaanduiding
FROM fac_faq x
LEFT JOIN prs_v_perslid_fullnames_all pf
ON x.prs_perslid_key = pf.prs_perslid_key
LEFT JOIN fac_functie f
ON x.fac_functie_key = f.fac_functie_key
--LEFT JOIN mld_stdmeldingfaq kbsm
-- ON x.fac_faq_key = kbsm.fac_faq_key
--LEFT JOIN mld_discipline md
-- ON kbsm.ins_discipline_key = md.ins_discipline_key
--LEFT JOIN mld_stdmelding sm
-- ON kbsm.mld_stdmelding_key = sm.mld_stdmelding_key
--LEFT JOIN alg_algfaq kbpl
-- ON x.fac_faq_key = kbpl.fac_faq_key
--LEFT JOIN alg_v_onroerendgoed_gegevens aog
-- ON kbpl.alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
;
-- MNNL#66460: Verstuurde MLDAFM-notificaties!
CREATE OR REPLACE VIEW mnnl_v_rap_mldafm
AS
SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype,
md.ins_discipline_omschrijving vakgroep,
sm.mld_stdmelding_omschrijving meldingsoort,
m.mld_melding_key,
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) meldingnummer,
m.mld_melding_datum meldingdatum,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) afmelddatum,
DECODE (t.fac_tracking_key, NULL, 'N', 'J') mldafm_noti
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
(SELECT * FROM fac_tracking WHERE INSTR (UPPER (fac_tracking_oms), 'NOTIFICATIE MLDAFM VERSTUURD') = 1) t
WHERE m.mld_melding_datum > TO_DATE ('14-09-2020', 'dd-mm-yyyy')
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_melding_key = t.fac_tracking_refkey(+);
-- MNNL#66706: Exports tbv. Snowflake!
CREATE OR REPLACE VIEW mnnl_v_rap_sf_mld
AS
SELECT TO_CHAR (x.melding_key) meldingnummer,
x.melder,
x.afdeling,
x.invoerder,
x.meldbron,
x.soortmelding,
x.productgroep,
x.subproductgroep,
x.behandelgroep,
x.behandelaar,
x.actieve_behandelgroep,
x.actieve_behandelaar,
x.melding_status,
x.sla_werkdgn,
x.sla_werkuren,
x.sla_accptdgn,
x.sla_accpturen,
x.plan_uitvoertijd_sla,
x.melding_datum,
x.melding_einddatum,
x.melding_einddatum_std,
x.melding_acceptdatum,
x.melding_afgemeld,
x.melding_accepted,
x.doorlooptijd_werkdgn,
x.doorlooptijd_werkuren,
x.onderwerp,
TO_CHAR(SUBSTR(x.vomschrijving,1,4000)) omschrijving,
x.melding_opmerking,
x.prioriteit,
x.rating,
x.rating_opmerking,
x.actiecode,
x.accept_sla_dagen,
x.accept_sla_uren,
x.uitvoering_sla_dagen,
x.uitvoering_sla_uren,
x.afspraak_sla_dagen,
x.afspraak_sla_uren,
x.accept_sla_optijd,
x.uitvoering_sla_optijd,
x.afspraak_sla_optijd,
x.selfservice,
DECODE (x.bolletje, NULL, NULL, TO_CHAR (x.bolletje) || '=' || lcl.l ('lcl_mld_flag' || x.bolletje)) markering,
TO_CHAR (m.mld_melding_parentkey) parentmelding,
TO_CHAR (x.melding_start_key) startmelding
FROM mld_v_udr_melding x, mld_melding m
WHERE x.melding_key = m.mld_melding_key
AND EXISTS -- MNNL#80040: Filteren op vakgroeptypen tbv. MN zelf (itt. huurders van MN)!
(SELECT 1
FROM mld_stdmelding sm, mld_discipline md
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (1, 21, 22, 23, 41, 61, 81, 101, 121, 141, 201, 221, 241, 261, 321, 341, 381)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key);
CREATE OR REPLACE VIEW mnnl_v_export_sf_mld
(
result,
result_order
)
AS
SELECT '"MELDINGNUMMER"'
|| ';"MELDER"'
|| ';"AFDELING"'
|| ';"INVOERDER"'
|| ';"MELDBRON"'
|| ';"SOORTMELDING"'
|| ';"PRODUCTGROEP"'
|| ';"SUBPRODUCTGROEP"'
|| ';"BEHANDELGROEP"'
|| ';"BEHANDELAAR"'
|| ';"ACTIEVE_BEHANDELGROEP"'
|| ';"ACTIEVE_BEHANDELAAR"'
|| ';"MELDING_STATUS"'
|| ';"SLA_WERKDGN"'
|| ';"SLA_WERKUREN"'
|| ';"SLA_ACCPTDGN"'
|| ';"SLA_ACCPTUREN"'
|| ';"PLAN_UITVOERTIJD_SLA"'
|| ';"MELDING_DATUM"'
|| ';"MELDING_EINDDATUM"'
|| ';"MELDING_EINDDATUM_STD"'
|| ';"MELDING_ACCEPTDATUM"'
|| ';"MELDING_AFGEMELD"'
|| ';"MELDING_ACCEPTED"'
|| ';"DOORLOOPTIJD_WERKDGN"'
|| ';"DOORLOOPTIJD_WERKUREN"'
|| ';"ONDERWERP"'
|| ';"OMSCHRIJVING"'
|| ';"MELDING_OPMERKING"'
|| ';"PRIORITEIT"'
|| ';"RATING"'
|| ';"RATING_OPMERKING"'
|| ';"ACTIECODE"'
|| ';"ACCEPT_SLA_DAGEN"'
|| ';"ACCEPT_SLA_UREN"'
|| ';"UITVOERING_SLA_DAGEN"'
|| ';"UITVOERING_SLA_UREN"'
|| ';"AFSPRAAK_SLA_DAGEN"'
|| ';"AFSPRAAK_SLA_UREN"'
|| ';"ACCEPT_SLA_OPTIJD"'
|| ';"UITVOERING_SLA_OPTIJD"'
|| ';"AFSPRAAK_SLA_OPTIJD"'
|| ';"SELFSERVICE"'
|| ';"MARKERING"'
|| ';"PARENTMELDING"'
|| ';"STARTMELDING"',
0
FROM DUAL
UNION ALL
SELECT '"' || meldingnummer || '";'
|| DECODE (melder, NULL, ';', '"' || melder || '";')
|| DECODE (afdeling, NULL, ';', '"' || afdeling || '";')
|| DECODE (invoerder, NULL, ';', '"' || invoerder || '";')
|| DECODE (meldbron, NULL, ';', '"' || meldbron || '";')
|| DECODE (soortmelding, NULL, ';', '"' || soortmelding || '";')
|| DECODE (productgroep, NULL, ';', '"' || productgroep || '";')
|| DECODE (subproductgroep, NULL, ';', '"' || subproductgroep || '";')
|| DECODE (behandelgroep, NULL, ';', '"' || behandelgroep || '";')
|| DECODE (behandelaar, NULL, ';', '"' || behandelaar || '";')
|| DECODE (actieve_behandelgroep, NULL, ';', '"' || actieve_behandelgroep || '";')
|| DECODE (actieve_behandelaar, NULL, ';', '"' || actieve_behandelaar || '";')
|| DECODE (melding_status, NULL, ';', '"' || melding_status || '";')
|| TO_CHAR (sla_werkdgn) || ';' -- Zonder dubbele quotes
|| TO_CHAR (sla_werkuren) || ';' -- Zonder dubbele quotes
|| TO_CHAR (sla_accptdgn) || ';' -- Zonder dubbele quotes
|| TO_CHAR (sla_accpturen) || ';' -- Zonder dubbele quotes
|| TO_CHAR (plan_uitvoertijd_sla) || ';' -- Zonder dubbele quotes
|| DECODE (melding_datum, NULL, ';', TO_CHAR (melding_datum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (melding_einddatum, NULL, ';', TO_CHAR (melding_einddatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (melding_einddatum_std, NULL, ';', TO_CHAR (melding_einddatum_std, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (melding_acceptdatum, NULL, ';', TO_CHAR (melding_acceptdatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (melding_afgemeld, NULL, ';', TO_CHAR (melding_afgemeld, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (melding_accepted, NULL, ';', TO_CHAR (melding_accepted, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| TO_CHAR (doorlooptijd_werkdgn) || ';' -- Zonder dubbele quotes
|| TO_CHAR (doorlooptijd_werkuren) || ';' -- Zonder dubbele quotes
|| DECODE (onderwerp, NULL, ';', '"' || REPLACE (onderwerp, '"', '''') || '";')
|| DECODE (omschrijving, NULL, ';', '"' || REPLACE (SUBSTR (omschrijving, 1, 200), '"', '''') || '";')
|| DECODE (melding_opmerking, NULL, ';', '"' || REPLACE (SUBSTR (melding_opmerking, 1, 200), '"', '''') || '";')
|| TO_CHAR (prioriteit) || ';' -- Zonder dubbele quotes
|| TO_CHAR (rating) || ';' -- Zonder dubbele quotes
|| DECODE (rating_opmerking, NULL, ';', '"' || REPLACE (rating_opmerking, '"', '''') || '";')
|| TO_CHAR (actiecode) || ';' -- Zonder dubbele quotes
|| TO_CHAR (accept_sla_dagen) || ';' -- Zonder dubbele quotes
|| TO_CHAR (accept_sla_uren) || ';' -- Zonder dubbele quotes
|| TO_CHAR (uitvoering_sla_dagen) || ';' -- Zonder dubbele quotes
|| TO_CHAR (uitvoering_sla_uren) || ';' -- Zonder dubbele quotes
|| TO_CHAR (afspraak_sla_dagen) || ';' -- Zonder dubbele quotes
|| TO_CHAR (afspraak_sla_uren) || ';' -- Zonder dubbele quotes
|| DECODE (accept_sla_optijd, NULL, ';', '"' || accept_sla_optijd || '";')
|| DECODE (uitvoering_sla_optijd, NULL, ';', '"' || uitvoering_sla_optijd || '";')
|| DECODE (afspraak_sla_optijd, NULL, ';', '"' || afspraak_sla_optijd || '";')
|| DECODE (selfservice, NULL, ';', '"' || selfservice || '";')
|| DECODE (markering, NULL, ';', '"' || markering || '";')
|| DECODE (parentmelding, NULL, ';', '"' || parentmelding || '";')
|| DECODE (startmelding, NULL, ';', '"' || startmelding || '"'),
ROWNUM
FROM mnnl_v_rap_sf_mld
ORDER BY 2;
-- LET OP: Export met een "lege regel" voor meldingen zonder kenmerken!
CREATE OR REPLACE VIEW mnnl_v_rap_sf_mld_kmk
AS
SELECT m.mld_melding_key,
--k.mld_kenmerk_key kenmerk_key,
--k.mld_kenmerk_volgnummer kenmerkvolgnr,
--k.mld_kenmerk_groep kenmerkgroep,
COALESCE (k.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving)
kenmerknaam,
--sk.mld_srtkenmerk_key srtkenmerk_key,
sk.mld_srtkenmerk_kenmerktype kenmerktype,
DECODE (sk.mld_srtkenmerk_kenmerktype,
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
km.mld_kenmerkmelding_waarde)
kenmerkwaarde
FROM mld_melding m, mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE 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 EXISTS -- MNNL#80040: Filteren op vakgroeptypen tbv. MN zelf (itt. huurders van MN)!
(SELECT 1
FROM mld_stdmelding sm, mld_discipline md
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (1, 21, 22, 23, 41, 61, 81, 101, 121, 141, 201, 221, 241, 261, 321, 341, 381)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key);
CREATE OR REPLACE VIEW mnnl_v_export_sf_mld_kmk
(
result,
result_order
)
AS
SELECT '"MLD_MELDING_KEY"'
|| ';"KENMERKNAAM"'
|| ';"KENMERKTYPE"'
|| ';"KENMERKWAARDE"',
0
FROM DUAL
UNION ALL
SELECT TO_CHAR (mld_melding_key) || ';' -- Zonder dubbele quotes
|| DECODE (kenmerknaam, NULL, ';', '"' || kenmerknaam || '";')
|| DECODE (kenmerktype, NULL, ';', '"' || kenmerktype || '";')
|| DECODE (kenmerkwaarde, NULL, ';', '"' || REPLACE (kenmerkwaarde, '"', '''') || '"'),
ROWNUM
FROM mnnl_v_rap_sf_mld_kmk
ORDER BY 2;
CREATE OR REPLACE VIEW mnnl_v_rap_sf_ins
AS
SELECT deel_key,
discipline,
groep, -- Omgewisseld met soort
soort, -- Omgewisseld met groep
--soortcode,
omschrijving,
plaatseigenaar,
--plaatseigenaartype,
--plaatsaanduiding,
eigenaar,
--eigenaar_key,
opmerking,
--regio,
--district,
--locatie_code,
locatie_omschrijving,
--locatie_plaats,
--gebouwcode,
gebouw,
--terreinsectorcode,
--terreinsector,
--verdiepingcode,
ruimtenr,
--werkplekvolgnr,
--werkplek,
uitleenbaar,
uitgeleend,
--res_opmerking,
--beheerder,
vervaldatum,
actief --aantal, state, statedate
FROM ins_v_udr_deel;
CREATE OR REPLACE VIEW mnnl_v_export_sf_ins
(
result,
result_order
)
AS
SELECT '"DEEL_KEY"'
|| ';"DISCIPLINE"'
|| ';"GROEP"'
|| ';"SOORT"'
|| ';"OMSCHRIJVING"'
|| ';"PLAATSEIGENAAR"'
|| ';"EIGENAAR"'
|| ';"OPMERKING"'
|| ';"LOCATIE_OMSCHRIJVING"'
|| ';"GEBOUW"'
|| ';"RUIMTENR"'
|| ';"UITLEENBAAR"'
|| ';"UITGELEEND"'
|| ';"VERVALDATUM"'
|| ';"ACTIEF"',
0
FROM DUAL
UNION ALL
SELECT TO_CHAR (deel_key) || ';' -- Zonder dubbele quotes
|| DECODE (discipline, NULL, ';', '"' || REPLACE (discipline, '"', '''') || '";')
|| DECODE (groep, NULL, ';', '"' || REPLACE (groep, '"', '''') || '";')
|| DECODE (soort, NULL, ';', '"' || REPLACE (soort, '"', '''') || '";')
|| DECODE (omschrijving, NULL, ';', '"' || REPLACE (omschrijving, '"', '''') || '";')
|| DECODE (plaatseigenaar, NULL, ';', '"' || plaatseigenaar || '";')
|| DECODE (eigenaar, NULL, ';', '"' || eigenaar || '";')
|| DECODE (opmerking, NULL, ';', '"' || REPLACE (opmerking, '"', '''') || '";')
|| DECODE (locatie_omschrijving, NULL, ';', '"' || locatie_omschrijving || '";')
|| DECODE (gebouw, NULL, ';', '"' || gebouw || '";')
|| DECODE (ruimtenr, NULL, ';', '"' || ruimtenr || '";')
|| DECODE (uitleenbaar, NULL, ';', '"' || uitleenbaar || '";')
|| DECODE (uitgeleend, NULL, ';', '"' || uitgeleend || '";')
|| DECODE (vervaldatum, NULL, ';', TO_CHAR (vervaldatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (actief, NULL, ';', '"' || actief || '"'),
ROWNUM
FROM mnnl_v_rap_sf_ins
ORDER BY 2;
-- LET OP: Export met een "lege regel" voor objecten zonder kenmerken!
CREATE OR REPLACE VIEW mnnl_v_rap_sf_ins_kmk
AS
SELECT d.ins_deel_key,
sk.ins_srtkenmerk_omschrijving kenmerknaam,
sk.ins_srtkenmerk_kenmerktype kenmerktype,
DECODE (sk.ins_srtkenmerk_kenmerktype,
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, kd.ins_kenmerkdeel_waarde),
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, kd.ins_kenmerkdeel_waarde),
kd.ins_kenmerkdeel_waarde)
kenmerkwaarde
FROM ins_deel d, ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk
WHERE d.ins_deel_key = kd.ins_deel_key(+)
AND kd.ins_kenmerk_key = k.ins_kenmerk_key(+)
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key(+);
CREATE OR REPLACE VIEW mnnl_v_export_sf_ins_kmk
(
result,
result_order
)
AS
SELECT '"INS_DEEL_KEY"'
|| ';"KENMERKNAAM"'
|| ';"KENMERKTYPE"'
|| ';"KENMERKWAARDE"',
0
FROM DUAL
UNION ALL
SELECT TO_CHAR (ins_deel_key) || ';' -- Zonder dubbele quotes
|| DECODE (kenmerknaam, NULL, ';', '"' || kenmerknaam || '";')
|| DECODE (kenmerktype, NULL, ';', '"' || kenmerktype || '";')
|| DECODE (kenmerkwaarde, NULL, ';', '"' || REPLACE (kenmerkwaarde, '"', '''') || '"'),
ROWNUM
FROM mnnl_v_rap_sf_ins_kmk
ORDER BY 2;
CREATE OR REPLACE VIEW mnnl_v_rap_sf_mld_ins
AS
SELECT mo.mld_melding_object_key,
mo.mld_melding_key,
mo.ins_deel_key,
mo.mld_melding_object_aanmaak
FROM mld_melding_object mo, mld_melding m
WHERE mo.mld_melding_key = m.mld_melding_key
AND EXISTS -- MNNL#80040: Filteren op vakgroeptypen tbv. MN zelf (itt. huurders van MN)!
(SELECT 1
FROM mld_stdmelding sm, mld_discipline md
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (1, 21, 22, 23, 41, 61, 81, 101, 121, 141, 201, 221, 241, 261, 321, 341, 381)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key);
CREATE OR REPLACE VIEW mnnl_v_export_sf_mld_ins
(
result,
result_order
)
AS
SELECT '"MLD_MELDING_OBJECT_KEY"'
|| ';"MLD_MELDING_KEY"'
|| ';"INS_DEEL_KEY"'
|| ';"MLD_MELDING_OBJECT_AANMAAK"',
0
FROM DUAL
UNION ALL
SELECT TO_CHAR (mld_melding_object_key) || ';' -- Zonder dubbele quotes
|| TO_CHAR (mld_melding_key) || ';' -- Zonder dubbele quotes
|| TO_CHAR (ins_deel_key) || ';' -- Zonder dubbele quotes
|| TO_CHAR (mld_melding_object_aanmaak, 'dd-mm-yyyy hh24:mi:ss'), -- Zonder dubbele quotes
ROWNUM
FROM mnnl_v_rap_sf_mld_ins
ORDER BY 2;
CREATE OR REPLACE VIEW mnnl_v_rap_sf_ord
AS
SELECT o.opdracht_key,
o.opdracht_nummer opdrachtnummer,
o.melding_key meldingnummer,
o.opdracht_kostenplaats,
o.opdracht_kostenplaats_oms,
o.opdracht_type,
o.opdracht_volgnummer,
o.opdracht_status,
o.opdracht_duur_gepland,
o.opdracht_datum,
o.opdracht_einddatum,
o.opdracht_plandatum,
o.opdracht_acceptdatum,
o.opdracht_afgemeld,
o.opdracht_doorlooptijd,
o.opdracht_accepttijd,
o.opdracht_omschrijving,
o.opdracht_opmerking,
o.opdracht_uitvoerende,
o.opdracht_uitvoerende_contact,
o.opdracht_behandelaar,
--o.opdracht_contract,
--o.opdracht_contract_versie,
o.opdracht_contactpersoon,
--o.opdracht_uren,
--o.opdracht_correctie,
--o.opdracht_materiaal,
--o.opdracht_uurtarief,
--o.opdracht_kosten,
--o.opdracht_parent_key,
--o.opdracht_parent_nummer,
--o.opdracht_parent_volgnummer,
o.opdracht_verstrektdatum,
o.opdracht_lev_doorloopdagen,
o.opdracht_lev_doorloopuren
FROM mld_v_udr_opdracht o, mld_melding m
WHERE o.melding_key = m.mld_melding_key
AND EXISTS -- MNNL#80040: Filteren op vakgroeptypen tbv. MN zelf (itt. huurders van MN)!
(SELECT 1
FROM mld_stdmelding sm, mld_discipline md
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (1, 21, 22, 23, 41, 61, 81, 101, 121, 141, 201, 221, 241, 261, 321, 341, 381)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key);
CREATE OR REPLACE VIEW mnnl_v_export_sf_ord
(
result,
result_order
)
AS
SELECT '"OPDRACHT_KEY"'
|| ';"OPDRACHTNUMMER"'
|| ';"MELDINGNUMMER"'
|| ';"KOSTENPLAATS"'
|| ';"KOSTENPLAATS_OMS"'
|| ';"OPDRACHT_TYPE"'
|| ';"OPDRACHT_VOLGNUMMER"'
|| ';"OPDRACHT_STATUS"'
|| ';"OPDRACHT_DUUR_GEPLAND"'
|| ';"OPDRACHT_DATUM"'
|| ';"OPDRACHT_EINDDATUM"'
|| ';"OPDRACHT_PLANDATUM"'
|| ';"OPDRACHT_ACCEPTDATUM"'
|| ';"OPDRACHT_AFGEMELD"'
|| ';"OPDRACHT_DOORLOOPTIJD"'
|| ';"OPDRACHT_ACCEPTTIJD"'
|| ';"OPDRACHT_OMSCHRIJVING"'
|| ';"OPDRACHT_OPMERKING"'
|| ';"OPDRACHT_UITVOERENDE"'
|| ';"OPDRACHT_UITVOERENDE_CONTACT"'
|| ';"OPDRACHT_BEHANDELAAR"'
--|| ';"OPDRACHT_CONTRACT"'
--|| ';"OPDRACHT_CONTRACT_VERSIE"'
|| ';"OPDRACHT_CONTACTPERSOON"'
--|| ';"OPDRACHT_UREN"'
--|| ';"OPDRACHT_CORRECTIE"'
--|| ';"OPDRACHT_MATERIAAL"'
--|| ';"OPDRACHT_UURTARIEF"'
--|| ';"OPDRACHT_KOSTEN"'
--|| ';"OPDRACHT_PARENT_KEY"'
--|| ';"OPDRACHT_PARENT_NUMMER"'
--|| ';"OPDRACHT_PARENT_VOLGNUMMER"'
|| ';"OPDRACHT_VERSTREKTDATUM"'
|| ';"OPDRACHT_LEV_DOORLOOPDAGEN"'
|| ';"OPDRACHT_LEV_DOORLOOPUREN"',
0
FROM DUAL
UNION ALL
SELECT '"' || TO_CHAR (opdracht_key) || '";'
|| '"' || opdrachtnummer || '";'
|| '"' || TO_CHAR (meldingnummer) || '";'
|| DECODE (opdracht_kostenplaats, NULL, ';', '"' || opdracht_kostenplaats || '";')
|| DECODE (opdracht_kostenplaats_oms, NULL, ';', '"' || opdracht_kostenplaats_oms || '";')
|| '"' || opdracht_type || '";'
|| '"' || TO_CHAR (opdracht_volgnummer) || '";'
|| '"' || opdracht_status || '";'
|| TO_CHAR (opdracht_duur_gepland) || ';' -- Zonder dubbele quotes
|| DECODE (opdracht_datum, NULL, ';', TO_CHAR (opdracht_datum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (opdracht_einddatum, NULL, ';', TO_CHAR (opdracht_einddatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (opdracht_plandatum, NULL, ';', TO_CHAR (opdracht_plandatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (opdracht_acceptdatum, NULL, ';', TO_CHAR (opdracht_acceptdatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| DECODE (opdracht_afgemeld, NULL, ';', TO_CHAR (opdracht_afgemeld, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| TO_CHAR (opdracht_doorlooptijd) || ';' -- Zonder dubbele quotes
|| TO_CHAR (opdracht_accepttijd) || ';' -- Zonder dubbele quotes
|| DECODE (opdracht_omschrijving, NULL, ';', '"' || REPLACE (SUBSTR (opdracht_omschrijving, 1, 200), '"', '''') || '";')
|| DECODE (opdracht_opmerking, NULL, ';', '"' || REPLACE (SUBSTR (opdracht_opmerking, 1, 200), '"', '''') || '";')
|| DECODE (opdracht_uitvoerende, NULL, ';', '"' || opdracht_uitvoerende || '";')
|| DECODE (opdracht_uitvoerende_contact, NULL, ';', '"' || opdracht_uitvoerende_contact || '";')
|| DECODE (opdracht_behandelaar, NULL, ';', '"' || opdracht_behandelaar || '";')
--|| DECODE (opdracht_contract, NULL, ';', '"' || opdracht_contract || '";')
--|| DECODE (opdracht_contract_versie, NULL, ';', '"' || opdracht_contract_versie || '";')
|| DECODE (opdracht_contactpersoon, NULL, ';', '"' || opdracht_contactpersoon || '";')
--|| TO_CHAR (opdracht_uren) || ';' -- Zonder dubbele quotes
--|| TO_CHAR (opdracht_correctie) || ';' -- Zonder dubbele quotes
--|| TO_CHAR (opdracht_materiaal) || ';' -- Zonder dubbele quotes
--|| TO_CHAR (opdracht_uurtarief) || ';' -- Zonder dubbele quotes
--|| TO_CHAR (opdracht_kosten) || ';' -- Zonder dubbele quotes
--|| DECODE (opdracht_parent_key, NULL, ';', '"' || TO_CHAR (opdracht_parent_key) || '";')
--|| DECODE (opdracht_parent_nummer, NULL, ';', '"' || opdracht_parent_nummer || '";')
--|| DECODE (opdracht_parent_volgnummer, NULL, ';', '"' || TO_CHAR (opdracht_parent_volgnummer) || '";')
|| DECODE (opdracht_verstrektdatum, NULL, ';', TO_CHAR (opdracht_verstrektdatum, 'dd-mm-yyyy hh24:mi:ss') || ';') -- Zonder dubbele quotes
|| TO_CHAR (opdracht_lev_doorloopdagen) || ';' -- Zonder dubbele quotes
|| TO_CHAR (opdracht_lev_doorloopuren), -- Zonder dubbele quotes
ROWNUM
FROM mnnl_v_rap_sf_ord
ORDER BY 2;
-- LET OP: Export met een "lege regel" voor opdrachten zonder kenmerken!
CREATE OR REPLACE VIEW mnnl_v_rap_sf_ord_kmk
AS
SELECT o.mld_opdr_key,
COALESCE (k.mld_kenmerk_omschrijving, sk.mld_srtkenmerk_omschrijving)
kenmerknaam,
sk.mld_srtkenmerk_kenmerktype kenmerktype,
DECODE (sk.mld_srtkenmerk_kenmerktype,
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, ko.mld_kenmerkopdr_waarde),
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, ko.mld_kenmerkopdr_waarde),
ko.mld_kenmerkopdr_waarde)
kenmerkwaarde
FROM mld_opdr o, mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk, mld_melding m
WHERE o.mld_opdr_key = ko.mld_opdr_key(+)
AND ko.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND EXISTS -- MNNL#80040: Filteren op vakgroeptypen tbv. MN zelf (itt. huurders van MN)!
(SELECT 1
FROM mld_stdmelding sm, mld_discipline md
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key IN (1, 21, 22, 23, 41, 61, 81, 101, 121, 141, 201, 221, 241, 261, 321, 341, 381)
AND sm.mld_stdmelding_key = m.mld_stdmelding_key);
CREATE OR REPLACE VIEW mnnl_v_export_sf_ord_kmk
(
result,
result_order
)
AS
SELECT '"MLD_OPDR_KEY"'
|| ';"KENMERKNAAM"'
|| ';"KENMERKTYPE"'
|| ';"KENMERKWAARDE"',
0
FROM DUAL
UNION ALL
SELECT TO_CHAR (mld_opdr_key) || ';' -- Zonder dubbele quotes
|| DECODE (kenmerknaam, NULL, ';', '"' || kenmerknaam || '";')
|| DECODE (kenmerktype, NULL, ';', '"' || kenmerktype || '";')
|| DECODE (kenmerkwaarde, NULL, ';', '"' || REPLACE (kenmerkwaarde, '"', '''') || '"'),
ROWNUM
FROM mnnl_v_rap_sf_ord_kmk
ORDER BY 2;
-- MNNL#67162: Export tbv. Flexera (kolommen in HOOFDLETTERS)!
CREATE OR REPLACE VIEW MNNL_V_RAP_FLEXERA
(
IDENTIFICATIE,
BESCHRIJVING,
AFDELING,
VOORLETTERS,
VOORNAAM,
TUSSENVOEGSEL,
ACHTERNAAM,
LOCATIECODE,
GEBOUWCODE,
VERDIEPINGVOLGNR,
RUIMTENR,
DISCIPLINE,
GROEP,
OBJECTSOORTCODE,
OBJECTSOORTOMSCHRIJVING,
ACTIEF,
STATUS,
REDENBIJSTATUS,
FNMSASSETSTATUS,
SERIENUMMER,
MODEL,
AANSCHAFDATUM,
ORDERNUMMER,
--OPMERKINGEN,
REGISTRATIEDATUM,
VERVALDATUM,
AANSCHAFWAARDE,
ORGANISATIE
)
AS
SELECT x.ins_deel_omschrijving identificatie,
x.ins_deel_opmerking beschrijving,
x.prs_afdeling_naam afdeling,
x.voorletters,
x.voornaam,
x.tussenvoegsel,
x.naam achternaam,
x.alg_locatie_code locatiecode,
x.alg_gebouw_code gebouwcode,
x.alg_verdieping_volgnr verdiepingvolgnr,
x.alg_ruimte_nr ruimtenr,
x.ins_discipline_omschrijving discipline,
x.ins_srtgroep_omschrijving groep,
x.ins_srtdeel_code objectsoortcode,
x.ins_srtdeel_omschrijving objectsoortomschrijving,
DECODE (x.ins_deel_actief, 1, 'Ja', 'Nee') actief,
--(SELECT fac_usrdata_code
-- FROM fac_v_aanwezigusrdata
-- WHERE TO_CHAR (fac_usrdata_key) = sts.ins_kenmerkdeel_waarde)
ud_sts.fac_usrdata_code status, -- Status
(SELECT fac_usrdata_code
FROM fac_v_aanwezigusrdata
WHERE TO_CHAR (fac_usrdata_key) = rbs.ins_kenmerkdeel_waarde)
redenbijstatus, -- Reden bij status
DECODE (TRIM (ud_sts.fac_usrdata_upper),
'AFTEVOEREN', 'Retired',
'GEBRUIK', 'Installed',
'TER REPARATIE', 'In storage',
'VERWIJDERD', 'Disposed',
'???')
fnmsassetstatus,
snr.ins_kenmerkdeel_waarde serienummer, -- Serienummer
mdl.ins_kenmerkdeel_waarde model, -- Model
asd.ins_kenmerkdeel_waarde aanschafdatum, -- Aanschafdatum
onr.ins_kenmerkdeel_waarde ordernummer, -- Ordernummer
--opm.ins_kenmerkdeel_waarde opmerkingen, -- Opmerkingen
x.ins_deel_aanmaak registratiedatum,
x.ins_deel_vervaldatum vervaldatum,
--x.ins_deel_verwijder verwijderdatum,
asw.ins_kenmerkdeel_waarde aanschafwaarde, -- Aanschafwaarde
x.organisatie organisatie
FROM (SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
a.prs_afdeling_naam,
-- NULL prs_perslid_oslogin,
NULL voorletters,
NULL voornaam,
NULL tussenvoegsel,
NULL naam,
NULL alg_locatie_code,
NULL alg_gebouw_code,
NULL alg_verdieping_volgnr,
NULL alg_ruimte_nr,
d.ins_deel_aanmaak,
d.ins_deel_vervaldatum,
d.ins_deel_verwijder,
d.ins_deel_actief,
NULL organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
prs_afdeling a
WHERE d.ins_srtdeel_key = 181 -- Pc-Laptop
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key = a.prs_afdeling_key
UNION ALL
SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
NULL prs_afdeling_naam,
-- NULL prs_perslid_oslogin,
p.prs_perslid_voorletters voorletters,
p.prs_perslid_voornaam voornaam,
p.prs_perslid_tussenvoegsel tussenvoegsel,
p.prs_perslid_naam naam,
NULL alg_locatie_code,
NULL alg_gebouw_code,
NULL alg_verdieping_volgnr,
NULL alg_ruimte_nr,
d.ins_deel_aanmaak,
d.ins_deel_vervaldatum,
d.ins_deel_verwijder,
d.ins_deel_actief,
a.prs_afdeling_naam organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
prs_perslid p,
prs_afdeling a
WHERE d.ins_srtdeel_key = 181 -- Pc-Laptop
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
UNION ALL
SELECT d.ins_deel_key,
td.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_code,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
NULL prs_afdeling_naam,
-- NULL prs_perslid_oslogin,
NULL voorletters,
NULL voornaam,
NULL tussenvoegsel,
NULL naam,
l.alg_locatie_code,
g.alg_gebouw_code,
v.alg_verdieping_volgnr,
r.alg_ruimte_nr,
d.ins_deel_aanmaak,
d.ins_deel_vervaldatum,
d.ins_deel_verwijder,
d.ins_deel_actief,
NULL organisatie
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline td,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE d.ins_srtdeel_key = 181 -- Pc-Laptop
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = td.ins_discipline_key
AND td.ins_discipline_key IN (1104, 1741) -- EndUser Asset, uitleen Assets
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) x
LEFT JOIN ins_v_aanwezigkenmerkdeel sts
ON x.ins_deel_key = sts.ins_deel_key
AND sts.ins_kenmerk_key = 21 -- Status
LEFT JOIN fac_usrdata ud_sts
ON fac.safe_to_number (sts.ins_kenmerkdeel_waarde) = ud_sts.fac_usrdata_key
LEFT JOIN ins_v_aanwezigkenmerkdeel rbs
ON x.ins_deel_key = rbs.ins_deel_key
AND rbs.ins_kenmerk_key = 81 -- Reden bij status
LEFT JOIN ins_v_aanwezigkenmerkdeel snr
ON x.ins_deel_key = snr.ins_deel_key
AND snr.ins_kenmerk_key = 22 -- Serienummer
LEFT JOIN ins_v_aanwezigkenmerkdeel mdl
ON x.ins_deel_key = mdl.ins_deel_key
AND mdl.ins_kenmerk_key = 23 -- Model
LEFT JOIN ins_v_aanwezigkenmerkdeel asd
ON x.ins_deel_key = asd.ins_deel_key
AND asd.ins_kenmerk_key = 24 -- Aanschafdatum
LEFT JOIN ins_v_aanwezigkenmerkdeel onr
ON x.ins_deel_key = onr.ins_deel_key
AND onr.ins_kenmerk_key = 25 -- Ordernummer
--LEFT JOIN ins_v_aanwezigkenmerkdeel opm
-- ON x.ins_deel_key = opm.ins_deel_key AND opm.ins_kenmerk_key = 27 -- Opmerkingen
LEFT JOIN ins_v_aanwezigkenmerkdeel asw
ON x.ins_deel_key = asw.ins_deel_key
AND asw.ins_kenmerk_key = 101 -- MNNL#53670: Aanschafwaarde
--WHERE ud_sts.fac_usrdata_key IN (592, 593, 595, 664)
;
-- MNNL#68674: CUST09-notificatie naar hard adres MBCHG@mn.nl bij afmelden van
-- elke Change(-workflowstap).
CREATE OR REPLACE VIEW MNNL_V_NOTI_CHANGE_AFM
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
'MBCHG@mn.nl',
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 41 -- Change (RFC)
AND sn.fac_srtnotificatie_code = 'CUST09'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_AFM'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_lastrun AND nj.fac_notificatie_job_nextrun;
-- MNNL#73240: Combineren 'Actiedatum' (MLD) en 'Afspraak SD' (RES) in kalender.
CREATE OR REPLACE VIEW MNNL_V_RAP_CAL_SD
AS
SELECT NULL user_key,
TO_CHAR (m.mld_melding_key)
|| ' [' || COALESCE (m.mld_melding_onderwerp, md.ins_discipline_omschrijving || ' - ' || sm.mld_stdmelding_omschrijving) || ']' title,
m.mld_melding_actiedatum van,
m.mld_melding_actiedatum + (0.5 / 24) tot,
m.mld_melding_key item_key,
'#008000' color,
'#FFFFFF' textcolor,
'?u=melding' || CHR (38) || 'internal=1' || CHR (38) || 'k=' || m.mld_melding_key url
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key IN (988, 1016, 1061, 1065, 1421) -- ITL Servicedesk (Req.)/ITIO Werkplekbeheer (Inc.)/ITIO Servicedesk (Inc.)/MDT PE Overeenkomst (Req.)/ITIO Werkplekbeheer (Pilot)
AND m.mld_melding_actiedatum > TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm')
UNION ALL
SELECT NULL user_key,
TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|| ' [' || COALESCE (kr.res_kenmerkreservering_waarde, 'Afspraak Servicedesk') || ']' title,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
rrr.res_rsv_ruimte_key item_key,
'#008000' color,
'#FFFFFF' textcolor,
'?u=reservering' || CHR (38) || 'internal=1' || CHR (38) || 'k=' || rrr.res_rsv_ruimte_key url
FROM res_v_aanwezigrsv_ruimte rrr,
(SELECT * FROM res_v_aanwezigkenmerkwaarde WHERE res_kenmerk_key = 381) kr --322 -- Reden van de afspraak
WHERE rrr.res_activiteit_key = 330 -- Afspraak Servicedesk
AND rrr.res_rsv_ruimte_van > TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm')
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key(+);
-- MNNL#74028: Securitas-koppeling tbv. kentekens (per dag zoals geregistreerd
-- in kenmerk bij WP-reserveringen).
CREATE OR REPLACE VIEW mnnl_v_rap_kentekens_datum
AS
SELECT kr.res_kenmerkreservering_waarde kenteken
FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigrsv_deel rrd, res_v_aanwezigkenmerkwaarde kr
WHERE rrr.res_activiteit_key = 390 -- Reservering parkeerplek
AND TRUNC (rrr.res_rsv_ruimte_van) = TRUNC (SYSDATE) -- Vandaag
AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty
AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_rsv_deel_dirtlevel = 0 -- Niet dirty
AND rrr.res_rsv_ruimte_key = kr.res_rsv_ruimte_key
AND kr.res_kenmerk_key = 421 -- Kenteken
;
-- MNNL#78302: Verwijderen data 7 jaar en ouder/automatische schoning!
-- TODO: Periodieke bestelaanvragen/opdrachten niet beschouwen? => Bij MN niet gebruikt!
CREATE OR REPLACE VIEW mnnl_v_rap_bes_schoning
(
jaar,
bes_bestelling_key
)
AS
WITH b
AS (SELECT bes_bestelling_key,
bes_bestelling_datum,
bes_bestelling_retourvan_key,
COALESCE (
fac.gettrackingdate ('BESREJ', bes_bestelling_key),
--fac.gettrackingdate ('BESXXX', bes_bestelling_key), -- key=257 (1x voor 164572 in 2012)
--fac.gettrackingdate ('BESINF', bes_bestelling_key), -- key=44
fac.gettrackingdate ('BESOTV', bes_bestelling_key))
gesloten
FROM bes_bestelling
WHERE bes_bestelling_status IN (1, 6, 7, 8, 9) -- Gesloten bestelling
AND bes_bestelling_datum < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')) -- Aangemaakt > 7 jaar geleden
SELECT TO_CHAR (b.bes_bestelling_datum, 'yyyy') jaar, bes_bestelling_key
FROM b
WHERE 1 = 1 --b.gesloten < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy') -- Gesloten > 7 jaar geleden
AND bes_bestelling_retourvan_key IS NULL -- Alleen bron-bestelling (dus zonder de retouren)
--AND NOT EXISTS
-- (SELECT 1
-- FROM bes_bestelling_item bbi, bes_bestelopdr_item boi, bes_bestelopdr bo
-- WHERE bbi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
-- AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
-- AND bo.bes_bestelopdr_status IN (2, 3, 4, 5) -- Lopende bestelopdracht
-- AND bbi.bes_bestelling_key = b.bes_bestelling_key)
AND NOT EXISTS -- Geen later gewijzigde child-bestelopdrachten!
(SELECT 1
FROM fac_tracking t, fac_srtnotificatie sn, bes_bestelopdr_item boi, bes_bestelling_item bbi
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'bestelopdracht'
AND t.fac_tracking_refkey = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
AND bbi.bes_bestelling_key = b.bes_bestelling_key)
--AND NOT EXISTS -- Evt. retour-bestelling ook > 7 jaar gesloten!
-- (SELECT 1
-- FROM bes_bestelling rb, -- Retour-bestelling!
-- fac_tracking t,
-- fac_srtnotificatie sn
-- WHERE rb.bes_bestelling_retourvan_key = b.bes_bestelling_key
-- AND rb.bes_bestelling_key = t.fac_tracking_refkey
-- AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
-- AND sn.fac_srtnotificatie_xmlnode = 'bestelling'
-- AND (rb.bes_bestelling_status NOT IN (1, 6, 7, 8, 9) -- Lopend
-- OR t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy'))) -- Geraakt < 7 jaar geleden
AND NOT EXISTS -- Geen lopende facturen op child-bestelopdrachten!
(SELECT 1
FROM fin_factuur f, bes_bestelopdr_item boi, bes_bestelling_item bbi
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND f.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
AND bbi.bes_bestelling_key = b.bes_bestelling_key);
CREATE OR REPLACE VIEW mnnl_v_rap_bez_schoning
(
jaar,
bez_afspraak_key,
bezoekers
)
AS
WITH a
AS ( SELECT a.bez_afspraak_key,
a.bez_afspraak_datum,
COUNT (*) bezoekers
FROM bez_afspraak a, bez_bezoekers b
WHERE a.bez_afspraak_datum < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy') -- Aangemaakt > 7 jaar geleden
AND a.bez_afspraak_key = b.bez_afspraak_key
GROUP BY a.bez_afspraak_key, a.bez_afspraak_datum)
SELECT TO_CHAR (a.bez_afspraak_datum, 'yyyy') jaar, bez_afspraak_key, bezoekers
FROM a;
CREATE OR REPLACE VIEW mnnl_v_rap_res_schoning
(
jaar,
verwijderd,
res_rsv_ruimte_key
)
AS
WITH r
AS (SELECT res_rsv_ruimte_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_tot,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')) -- Aangemaakt > 7 jaar geleden
SELECT TO_CHAR (res_rsv_ruimte_tot, 'yyyy') jaar, DECODE (res_rsv_ruimte_verwijder, NULL, 'J', 'N') verwijderd, res_rsv_ruimte_key
FROM r
WHERE NOT EXISTS -- Geen latere child-reserveringen!
(SELECT 1
FROM res_rsv_ruimte cr -- Child-reserveringen!
WHERE cr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')
AND cr.res_reservering_key = r.res_reservering_key);
-- TODO: Periodieke meldingen/opdrachten niet beschouwen? => Bij MN niet gebruikt!
-- TODO: Geantedateerde meldingen/opdrachten?
CREATE OR REPLACE VIEW mnnl_v_rap_mld_schoning
(
jaar,
datum,
mld_melding_key
)
AS
WITH m
AS (SELECT mld_melding_key,
mld_melding_datum,
mld_melding_start_key,
mld_melding_parentkey,
COALESCE (
fac.gettrackingdate ('MLDREJ', mld_melding_key),
fac.gettrackingdate ('MLDAFM', mld_melding_key), -- Soms niet Afgemeld?
fac.gettrackingdate ('MLDVER', mld_melding_key), -- MNNL#85354: Negeer MLDVER???
TRUNC (ADD_MONTHS (mld_melding_datum, 12), 'yyyy'))
gesloten
FROM mld_melding
WHERE mld_melding_status IN (1, 5, 6) -- Gesloten
AND mld_melding_datum < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')) -- Aangemaakt > 7 jaar geleden
SELECT TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, m.mld_melding_datum datum, mld_melding_key
FROM m
WHERE m.gesloten < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy') -- Gesloten > 7 jaar geleden
AND (m.mld_melding_start_key IS NULL OR m.mld_melding_key = m.mld_melding_start_key) -- Alleen bron-melding
AND m.mld_melding_parentkey IS NULL -- Alleen bron-melding
AND NOT EXISTS -- Geen later gewijzigde child-opdrachten!
(SELECT 1
FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')
AND t.fac_srtnotificatie_key <> 389 -- ORDANO!
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key)
AND EXISTS -- Eventuele start-melding ook > 7 jaar gesloten!
(SELECT 1
FROM m sm -- Start-meldingen!
WHERE sm.mld_melding_key = COALESCE (m.mld_melding_start_key, m.mld_melding_key))
AND EXISTS -- Eventuele parent-melding ook > 7 jaar gesloten!
(SELECT 1
FROM m pm -- Parent-meldingen!
WHERE pm.mld_melding_key = COALESCE (m.mld_melding_parentkey, m.mld_melding_key))
AND NOT EXISTS -- Eventuele vervolg-melding ook > 7 jaar gesloten!
(SELECT 1
FROM mld_melding vm, -- Vervolg-meldingen!
--fac_tracking t,
(SELECT * FROM fac_tracking WHERE fac_srtnotificatie_key != 46) t, -- MNNL#85354: Negeer MLDVER!
fac_srtnotificatie sn
WHERE vm.mld_melding_start_key = m.mld_melding_key
AND vm.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND (vm.mld_melding_status NOT IN (1, 5, 6) -- Lopend
OR t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy'))) -- Geraakt < 7 jaar geleden
AND NOT EXISTS -- Eventuele child-melding ook > 7 jaar gesloten!
(SELECT 1
FROM mld_melding cm, -- Child-meldingen!
--fac_tracking t,
(SELECT * FROM fac_tracking WHERE fac_srtnotificatie_key != 46) t, -- MNNL#85354: Negeer MLDVER!
fac_srtnotificatie sn
WHERE cm.mld_melding_parentkey = m.mld_melding_key
AND cm.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND (cm.mld_melding_status NOT IN (1, 5, 6) -- Lopend
OR t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy'))) -- Geraakt < 7 jaar geleden
AND NOT EXISTS -- Geen lopende facturen op child-opdrachten!
(SELECT 1
FROM fin_factuur f, mld_opdr o
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key);
/*
CREATE OR REPLACE VIEW mnnl_v_rap_cnt_schoning
(
ins_discipline_key,
contractsoort,
cnt_contract_key,
contractnr,
cnt_contract_omschrijving,
cnt_contract_looptijd_tot,
cnt_contract_status
)
AS
SELECT DISTINCT
c.ins_discipline_key,
cd.ins_discipline_omschrijving,
c.cnt_contract_key,
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
contractnr,
c.cnt_contract_omschrijving,
c.cnt_contract_looptijd_tot,
c.cnt_contract_status
FROM cnt_contract c, cnt_discipline cd
WHERE c.cnt_contract_looptijd_tot < TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy') -- Verlopen > 7 jaar geleden
AND c.ins_discipline_key = cd.ins_discipline_key
AND NOT EXISTS -- Geen dossier-contract onder dezelfde mantel <= 7 jaar geleden
(SELECT 1
FROM cnt_contract dc
WHERE dc.cnt_contract_verwijder IS NULL
AND dc.cnt_contract_looptijd_tot >= TRUNC (ADD_MONTHS (SYSDATE, -84), 'yyyy')
AND dc.cnt_contract_mantel_key = c.cnt_contract_key)
AND NOT EXISTS -- Geen lopende facturen op contract!
(SELECT 1
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND cnt_contract_key = c.cnt_contract_key);
*/
CREATE OR REPLACE VIEW mnnl_v_rap_auto_schoning
(
module,
jaar,
aantal,
subaantal
)
AS
SELECT 'BES', jaar, COUNT (*) aantal, NULL subaantal
FROM mnnl_v_rap_bes_schoning
GROUP BY 'BES', jaar
UNION ALL
SELECT 'BEZ', jaar, COUNT (*) aantal, SUM (bezoekers) subaantal
FROM mnnl_v_rap_bez_schoning
GROUP BY 'BEZ', jaar
UNION ALL
SELECT 'RES', jaar, COUNT (*) aantal, NULL subaantal
FROM mnnl_v_rap_res_schoning
GROUP BY 'RES', jaar
UNION ALL
SELECT 'MLD', jaar, COUNT (*) aantal, NULL subaantal
FROM mnnl_v_rap_mld_schoning
GROUP BY 'MLD', jaar
--UNION ALL
-- SELECT 'CNT', TO_CHAR (cnt_contract_looptijd_tot, 'yyyy') jaar, COUNT ( * ) aantal, NULL subaantal
-- FROM mnnl_v_rap_cnt_schoning
--GROUP BY 'CNT', TO_CHAR (cnt_contract_looptijd_tot, 'yyyy'), ins_discipline_key
;
CREATE OR REPLACE PROCEDURE mnnl_daily
AS
-- BES per jaar!
CURSOR cbes (p_jaar VARCHAR2)
IS
SELECT bes_bestelling_key FROM mnnl_v_rap_bes_schoning WHERE jaar <= p_jaar ORDER BY 1;
-- BEZ per jaar (samen met RES)!
CURSOR cbez (p_jaar VARCHAR2)
IS
SELECT bez_afspraak_key FROM mnnl_v_rap_bez_schoning WHERE jaar <= p_jaar ORDER BY 1;
-- RES per jaar (samen met BEZ)!
CURSOR cres (p_jaar VARCHAR2)
IS
SELECT res_rsv_ruimte_key FROM mnnl_v_rap_res_schoning WHERE jaar <= p_jaar ORDER BY 1;
-- MLD per jaar (of maand)!
CURSOR cmld (p_datum DATE)
IS
SELECT mld_melding_key FROM mnnl_v_rap_mld_schoning WHERE TRUNC (datum) <= p_datum ORDER BY 1;
/*
-- CNT allemaal tegelijk!
CURSOR ccnt --(p_datum DATE)
IS
SELECT ins_discipline_key, cnt_contract_key FROM mnnl_v_rap_cnt_schoning ORDER BY 1, 2;
*/
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_jaar1 VARCHAR2 (4);
v_jaar2 VARCHAR2 (4);
v_datum DATE;
v_datum1 DATE;
v_datum2 DATE;
BEGIN
-- Registreren 'Vervangen certificaat'-melding (=3781) 30d voor Vervaldatum
-- van 'Certificaten'-object onder 'Certificaten'-discipline (=3481).
mnnl.vervangen_cert;
-- Aanname dat er elk jaar iets te schonen valt, anders rustig jaartje!
v_errormsg := 'Fout bepalen of er nog iets te schonen valt';
SELECT SUM (aantal)
INTO v_count
FROM mnnl_v_rap_auto_schoning;
-- Initieel dagelijks een jaartje schonen totdat achterstand ingelopen!
IF TO_CHAR (SYSDATE, 'mm-dd') >= '03-01' AND v_count > 0
THEN
v_count := 0;
v_datum1 := SYSDATE;
v_errormsg := 'Fout bepalen van-jaar!';
SELECT MIN (jaar)
INTO v_jaar1
FROM mnnl_v_rap_bes_schoning;
v_errormsg := 'Fout bepalen tot-jaar!';
SELECT MAX (jaar)
INTO v_jaar2
FROM mnnl_v_rap_bes_schoning
WHERE jaar > '1999';
FOR r IN cbes (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Fout schonen bestelling: ' || TO_CHAR (r.bes_bestelling_key);
bes.remove (r.bes_bestelling_key);
v_count := v_count + 1;
-- Elke 1000 BES een COMMIT!
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', v_errormsg, 'BES-loop');
END;
END LOOP;
v_datum2 := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog ('DAILY', 'S', '#Bestellingen geschoond (jaar=' || v_jaar1 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog ('DAILY', 'S', '#Bestellingen geschoond (jaar=' || v_jaar1 || ' t/m ' || v_jaar2 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
v_count := 0;
v_datum1 := SYSDATE;
-- Fout bepalen jaar tbv. BEZ+RES (aanname dat elk jaar wel 1 bezoeker,
-- anders worden ook geen reserveringen geschoond)!
v_errormsg := 'Fout bepalen van-jaar!';
SELECT MIN (jaar)
INTO v_jaar1
--FROM mnnl_v_rap_bez_schoning
FROM (SELECT DISTINCT jaar FROM mnnl_v_rap_bez_schoning
UNION
SELECT DISTINCT jaar FROM mnnl_v_rap_res_schoning);
v_errormsg := 'Fout bepalen tot-jaar!';
SELECT MAX (jaar)
INTO v_jaar2
--FROM mnnl_v_rap_bez_schoning
FROM (SELECT DISTINCT jaar FROM mnnl_v_rap_bez_schoning
UNION ALL
SELECT DISTINCT jaar FROM mnnl_v_rap_res_schoning)
WHERE jaar > '1999';
FOR r IN cbez (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Fout schonen afspraak: ' || TO_CHAR (r.bez_afspraak_key);
bez.remove (r.bez_afspraak_key);
v_count := v_count + 1;
-- Elke 1000 BEZ een COMMIT!
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', v_errormsg, 'BEZ-loop');
END;
END LOOP;
v_datum2 := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog ('DAILY', 'S', '#Afspraken geschoond (jaar=' || v_jaar1 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog ('DAILY', 'S', '#Afspraken geschoond (jaar=' || v_jaar1 || ' t/m ' || v_jaar2 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
v_count := 0;
v_datum1 := SYSDATE;
-- Fout bepalen jaar (zie BEZ)!
FOR r IN cres (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Fout schonen reservering: ' || TO_CHAR (r.res_rsv_ruimte_key);
res.remove (r.res_rsv_ruimte_key);
v_count := v_count + 1;
-- Elke 1000 RES een COMMIT!
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', v_errormsg, 'RES-loop');
END;
END LOOP;
v_datum2 := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog ('DAILY', 'S', '#Reserveringen geschoond (jaar=' || v_jaar1 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog ('DAILY', 'S', '#Reserveringen geschoond (jaar=' || v_jaar1 || ' t/m ' || v_jaar2 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
v_count := 0;
v_datum1 := SYSDATE;
-- Fout bepalen jaar tbv. MLD!
v_errormsg := 'Fout bepalen van-jaar!';
SELECT MIN (jaar)
INTO v_jaar1
FROM mnnl_v_rap_mld_schoning;
v_errormsg := 'Fout bepalen tot-jaar!';
SELECT MAX (jaar)
INTO v_jaar2
FROM mnnl_v_rap_mld_schoning
WHERE jaar > '1999';
v_errormsg := 'Fout bepalen oudste datum!';
--SELECT MIN (datum)
-- INTO v_datum
-- FROM mnnl_v_rap_mld_schoning
-- WHERE jaar > '1999';
--v_datum := TRUNC (ADD_MONTHS (v_datum, 1), 'mm');
--v_datum := TRUNC (ADD_MONTHS (v_datum, 12), 'yyyy');
v_datum := fac.safe_to_date ('31-12-' || v_jaar2, 'dd-mm-yyyy');
FOR r IN cmld (v_datum)
LOOP
BEGIN
v_errormsg := 'Fout schonen melding: ' || TO_CHAR (r.mld_melding_key);
mld.remove (r.mld_melding_key);
v_count := v_count + 1;
-- Elke 1000 MLD een COMMIT!
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', v_errormsg, 'MLD-loop');
END;
END LOOP;
v_datum2 := SYSDATE;
--fac.writelog ('DAILY', 'S', '#Meldingen geschoond (maand=' || TO_CHAR (v_datum - 1, 'yyyy-mm') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
--fac.writelog ('DAILY', 'S', '#Meldingen geschoond (jaar=' || TO_CHAR (v_datum - 1, 'yyyy') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
IF v_jaar1 = v_jaar2
THEN
fac.writelog ('DAILY', 'S', '#Meldingen geschoond (jaar=' || v_jaar1 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog ('DAILY', 'S', '#Meldingen geschoond (jaar=' || v_jaar1 || ' t/m ' || v_jaar2 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
/*
v_count := 0;
v_datum1 := SYSDATE;
--v_errormsg := 'Fout bepalen oudste datum!';
--SELECT MIN (cnt_contract_looptijd_tot)
-- INTO v_datum
-- FROM mnnl_v_rap_cnt_schoning
-- WHERE cnt_contract_looptijd_tot > TO_DATE ( '01-01-1999', 'dd-mm-yyyy');
--v_datum := TRUNC (ADD_MONTHS (v_datum, 12), 'yyyy');
v_errormsg := 'Fout bepalen van-jaar!';
SELECT MIN (cnt_contract_looptijd_tot)
INTO v_datum
FROM mnnl_v_rap_cnt_schoning;
v_jaar1 := TO_CHAR (v_datum, 'yyyy');
v_errormsg := 'Fout bepalen tot-jaar!';
SELECT MAX (cnt_contract_looptijd_tot)
INTO v_datum
FROM mnnl_v_rap_cnt_schoning;
v_jaar2 := TO_CHAR (v_datum, 'yyyy');
-- Alle te schonen contracten(-dossiers) in 1x!
FOR r IN ccnt --(v_datum)
LOOP
BEGIN
v_errormsg := 'Fout schonen contract: ' || TO_CHAR (r.cnt_contract_key);
cnt.remove (r.cnt_contract_key);
v_count := v_count + 1;
-- Elke 1000 CNT een COMMIT!
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', v_errormsg, 'CNT-loop');
END;
END LOOP;
v_datum2 := SYSDATE;
--fac.writelog ('DAILY', 'S', '#Contracten geschoond (jaar=' || TO_CHAR (v_datum - 1, 'yyyy') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
IF v_jaar1 = v_jaar2
THEN
fac.writelog ('DAILY', 'S', '#Contracten geschoond (jaar=' || v_jaar1 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog ('DAILY', 'S', '#Contracten geschoond (jaar=' || v_jaar1 || ' t/m ' || v_jaar2 || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
*/
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('DAILY', 'E', 'Proces afgebroken!', v_errormsg);
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE MNNL_PRE_PUTORDERS
AS
BEGIN
MNNL_SELECT_SNOW;
END MNNL_PRE_PUTORDERS;
/
------ 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