-- -- $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 = ip.alg_locatie_code 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 = ip.alg_locatie_code 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; 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 é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één open opdrachten é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 -- als met op . -- 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�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