Files
Customer/MNNL/mnnl.sql
Maarten van der Heide c875d6b25b MNNL#80040 SF-export/Alleen afgesproken vakgroeptypen
svn path=/Customer/trunk/; revision=61976
2023-09-29 10:26:58 +00:00

9782 lines
446 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for MNNL.
DEFINE thisfile = 'MNNL.SQL'
DEFINE dbuser = '^MNNL'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
-- 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;0;0;0;0;' || -- Functie=3/Login=1
'0;0;0;0;0;0;0;0;0;0;' ||
'0;0;0;0;0;0',
--1 2 3 4 5 6 7 8
'"sAMAccountName";"name";"givenname";"sn";"department";"mail";"telephoneNumber";"L"%' -- Daarna nog ;"Company";"EmployeeID"
);
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;
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
-- 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;
-- 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;
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
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));
-- 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';
DELETE FROM fac_gebruikersgroep
WHERE fac_groep_key = 1 -- _Default
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;
-- 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;
END mnnl_update_prs;
/
-- 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,
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 als 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#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_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_kenmerk_key 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;
-- 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;
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
-- Handle workflow actions for completion.
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
WHEN UPPER (pto) LIKE 'MELDING@%'
THEN
v_errormsg := 'Fout bepalen existing ticket';
IF INSTR (UPPER (psubject), 'MELDING') > 0
THEN
v_exist_ticket := TRIM (SUBSTR (psubject, INSTR (UPPER (psubject), 'MELDING') + 7)); -- Gedeelte vanaf eerste voorkomen van 'MELDING' in psubject!
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
THEN
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
ELSE
v_exist_ticket := 'x';
END IF;
ELSE
v_exist_ticket := 'x';
END IF;
v_errormsg := 'Fout bepalen afmeldactie';
v_afmeldactie := INSTR (UPPER (psubject), '#AFMELDEN');
v_errormsg := 'Fout bepalen afmeldtekst';
IF INSTR (UPPER (pbody), '@AFMELDTEKST:') > 0
THEN
v_afmeldtekst := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@AFMELDTEKST:') + 13,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@AFMELDTEKST:') + 13), '#') - 1));
ELSE
v_afmeldtekst := '';
END IF;
-- Bepaal de noteur op basis van e-mail adres zoals in pfrom?
v_errormsg := 'Fout bepalen noteur ' || COALESCE (pfrom, '???');
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE '%' || UPPER (pfrom) || '%';
-- Bepaal bestaande melding?
v_errormsg := 'Fout bepalen melding ' || COALESCE (v_exist_ticket, '???');
SELECT m.mld_melding_key, m.mld_melding_status,
(SELECT COUNT ( * )
FROM mld_opdr
WHERE TO_CHAR (mld_melding_key) = v_exist_ticket
AND mld_statusopdr_key NOT IN (1, 2, 6, 7)), -- Open
sm.mld_ins_discipline_key
INTO v_melding_key, v_melding_status, v_open_opdr, v_discipline_key
FROM mld_melding m, mld_stdmelding sm
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND TO_CHAR (m.mld_melding_key) = v_exist_ticket;
-- Als bestaande Sogeti-opdracht, dan ook toevoegen Opdracht-notitie
-- en eventueel afmelden!
v_errormsg := 'Fout bepalen Sogeti-opdracht';
v_opdracht_id := SUBSTR (TRIM (SUBSTR (psubject, INSTR (psubject, 'MELDING') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (psubject, 'MELDING') + 7)) || ' ', '\s') - 1);
v_errormsg := 'Fout bepalen Sogeti-opdracht ' || v_opdracht_id;
SELECT COUNT (*)
INTO v_count
FROM mld_opdr
WHERE mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
IF v_count = 1
THEN
SELECT mld_opdr_key, mld_statusopdr_key
INTO v_opdracht_key, v_opdracht_status
FROM mld_opdr
WHERE mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000));
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-opdracht ' || v_opdracht_id);
-- Sogeti-opdracht afmelden?
IF v_afmeldactie > 0
THEN
-- Bepaal of noteur deze opdracht zou mogen afmelden?
v_errormsg := 'Fout bepalen opdracht-autorisaties';
SELECT COUNT (*)
INTO v_count
FROM fac_gebruikersgroep gg, fac_groeprechten gr
WHERE gg.prs_perslid_key = v_perslid_key
AND gr.fac_groep_key = gg.fac_groep_key
AND gr.fac_functie_key IN (38, 39, 321) -- ORDBOF/ORDBO2/EXTORD
AND gr.ins_discipline_key = v_discipline_key
AND gr.fac_gebruiker_prs_level_write < 9
AND gr.fac_gebruiker_alg_level_write < 9;
-- Opdracht is Toegekend/Geaccepteerd <20>n geautoriseerd?
IF v_opdracht_status IN (5, 8) AND v_count > 0
THEN
v_errormsg := 'Fout toevoegen opdracht-afmeldtekst';
UPDATE mld_opdr
SET mld_opdr_opmerking = v_afmeldtekst || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, 1995)
WHERE mld_opdr_key = v_opdracht_key;
v_errormsg := 'Fout afmelden opdracht';
MLD.setopdrachtstatus (v_opdracht_key, 6, v_perslid_key); -- Afgemeld
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-opdracht naar afgemeld ' || v_opdracht_id);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-opdracht NIET afgemeld ' || v_opdracht_id);
END IF;
END IF;
END IF;
v_errormsg := 'Fout toevoegen melding-notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
0);
-- Default tracking is even goed genoeg.
--fac.trackaction ('MLDNOT', v_melding_key, v_perslid_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
-- Als Sogeti de noteur is, dan vlaggetjes zetten zoals mld_edit_note.asp dat doet!
BEGIN
IF v_perslid_key = c_sogeti_key AND fac.getsetting ('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- Backoffice + Attentie
WHERE mld_melding_key = v_melding_key;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Niet gelukt om Attentie te zetten.');
END;
-- Melding afmelden?
IF v_afmeldactie > 0
THEN
-- Bepaal of noteur deze melding zou mogen afmelden?
v_errormsg := 'Fout bepalen autorisaties';
SELECT COUNT (*)
INTO v_count
FROM fac_gebruikersgroep gg, fac_groeprechten gr
WHERE gg.prs_perslid_key = v_perslid_key
AND gr.fac_groep_key = gg.fac_groep_key
AND gr.fac_functie_key = 34 -- MLDBOF
AND gr.ins_discipline_key = v_discipline_key
AND gr.fac_gebruiker_prs_level_write < 9
AND gr.fac_gebruiker_alg_level_write < 9;
-- Melding is niet al Afgemeld/Verwerkt, g<><67>n open opdrachten <20>n geautoriseerd?
IF v_melding_status NOT IN (5, 6) AND v_open_opdr = 0 AND v_count > 0
THEN
v_errormsg := 'Fout toevoegen afmeldtekst';
UPDATE mld_melding
SET mld_melding_opmerking = v_afmeldtekst
WHERE mld_melding_key = v_melding_key;
v_errormsg := 'Fout afmelden melding';
mld.setmeldingstatus (v_melding_key, 5, v_perslid_key);
mld.mld_nextworkflowstep (v_melding_key, 1); -- 1=Completed
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-melding naar afgemeld ' || v_melding_key);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Exist-melding NIET afgemeld ' || v_melding_key);
END IF;
END IF;
WHEN UPPER (pto) LIKE 'SOGETI@%'
THEN
-- Controleer bestaan afgesproken Sogeti-user!
v_errormsg := 'Fout bepalen Sogeti-user';
SELECT prs_perslid_key
INTO v_count
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_sogeti_key;
v_errormsg := 'Fout bepalen Sogeti-opdracht';
IF INSTR (psubject, '##FID:') > 0
THEN
v_opdracht_id := SUBSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)), 1, REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)) || ' ', '\s') - 1);
END IF;
v_errormsg := 'Fout bepalen Sogeti-opdracht ' || v_opdracht_id;
SELECT o.mld_melding_key, o.mld_opdr_key, o.mld_statusopdr_key, COALESCE (o2k.mld_kenmerk_key, -1)
INTO v_melding_key, v_opdracht_key, v_opdracht_status, v_kenmerk_key
FROM mld_opdr o,
(SELECT mld_typeopdr_key, mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = 2141) o2k -- Refnr. leverancier
WHERE o.mld_uitvoerende_keys = 22644 -- Sogeti
AND TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'))
AND o.mld_typeopdr_key = o2k.mld_typeopdr_key(+);
v_errormsg := 'Fout bepalen Sogeti-ref';
IF INSTR (pbody, '##SNID:') > 0 AND v_kenmerk_key IS NOT NULL
THEN
SELECT MAX (mld_kenmerkopdr_key)
INTO v_kenmerkopdr_key
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_opdr_key = v_opdracht_key
AND mld_kenmerk_key = v_kenmerk_key;
v_refnr_lev := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)) || ' ', '\s') - 1);
IF v_kenmerkopdr_key IS NULL
THEN
v_errormsg := 'Fout toevoegen Sogeti-ref';
INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde)
VALUES (v_opdracht_key, v_kenmerk_key, v_refnr_lev);
ELSE
v_errormsg := 'Fout bijwerken Sogeti-ref';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = v_refnr_lev
WHERE mld_kenmerkopdr_key = v_kenmerkopdr_key;
END IF;
END IF;
v_errormsg := 'Fout bepalen behandeling';
IF INSTR (pbody, '##BEHANDELING:') > 0
THEN
v_behandeling := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##BEHANDELING:') + 14)), 1, LEAST (INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##BEHANDELING:') + 14)) || '##', '##') - 1, 2000));
END IF;
v_errormsg := 'Fout toevoegen opdracht-notitie';
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, c_sogeti_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || v_behandeling);
v_errormsg := 'Fout bepalen afhandeling';
IF INSTR (pbody, '##AFHANDELING:') > 0
THEN
v_afhandeling := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AFHANDELING:') + 14)), 1, LEAST (INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AFHANDELING:') + 14)) || '##', '##') - 1, 2000));
IF INSTR (UPPER (v_afhandeling), 'RESOLUTION NOTES:') > 0
THEN
v_afhandeling := TRIM (SUBSTR (v_afhandeling, INSTR (UPPER (v_afhandeling), 'RESOLUTION NOTES:') + 17));
IF INSTR (UPPER (v_afhandeling), 'REF:', -1) > 0
THEN
v_afhandeling := TRIM (SUBSTR (v_afhandeling, 1, INSTR (UPPER (v_afhandeling), 'REF:', -1) - 1));
END IF;
END IF;
END IF;
IF INSTR (UPPER (psubject), '##AFMELDEN') > 0 AND v_opdracht_status IN (5, 8) -- Toegekend/Geaccepteerd
THEN
v_errormsg := 'Fout toevoegen opdracht-afhandeling';
UPDATE mld_opdr
SET mld_opdr_opmerking = v_afhandeling || CHR (13) || CHR (10) || SUBSTR (mld_opdr_opmerking, 1, 1995)
WHERE mld_opdr_key = v_opdracht_key;
--v_errormsg := 'Fout toevoegen melding-afhandeling';
--UPDATE mld_melding
-- SET mld_melding_opmerking = v_afhandeling || CHR (13) || CHR (10) || SUBSTR (mld_melding_opmerking, 1, 1995)
-- WHERE mld_melding_key = v_melding_key;
v_errormsg := 'Fout toevoegen melding-notitie';
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
c_sogeti_key,
v_afhandeling,
0);
v_errormsg := 'Fout bijwerken opdracht-status';
MLD.setopdrachtstatus (v_opdracht_key, 6, c_sogeti_key); -- Afgemeld
--v_errormsg := 'Fout bijwerken melding-status'; -- MNNL#61759: Besloten de bovenliggende melding niet te sluiten!
--MLD.updatemeldingstatus (v_melding_key, 1, NULL);
END IF;
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Status/voortgang bijgewerkt bij opdracht: ' || v_opdracht_id);
WHEN UPPER (pto) LIKE 'SNOW@%'
THEN
-- Controleer bestaan afgesproken Sogeti-user!
v_errormsg := 'Fout bepalen Sogeti-user';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_key = c_sogeti_key
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen melding';
IF INSTR (UPPER (pbody), '@MELDING:') > 0
THEN
v_melding := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@MELDING:') + 9,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@MELDING:') + 9), '#') - 1));
ELSE
v_melding := '';
END IF;
v_errormsg := 'Fout bepalen onderwerp';
IF INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') > 0
THEN
v_onderwerp := TRIM (SUBSTR (pbody,
INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') + 19,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (UPPER (pbody), '@SHORT DESCRIPTION:') + 19), '#') - 1));
ELSE
v_onderwerp := '';
END IF;
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals in
-- pbody achter @MELDING?
v_errormsg := 'Fout bepalen soortmelding ' || COALESCE (v_melding, '???');
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key), MIN (COALESCE (m2k.mld_kenmerk_key, -1))
INTO v_discipline_key, v_stdmelding_key, v_kenmerk_key
FROM mld_discipline md, mld_stdmelding sm,
(SELECT mld_stdmelding_key, mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = -1) m2k -- Refnr. leverancier
WHERE md.ins_discipline_verwijder IS NULL
--AND md.ins_srtdiscipline_key = 21 -- Service Request
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND sm.mld_stdmelding_verwijder IS NULL
AND sm.mld_stdmelding_upper = UPPER (v_melding)
AND sm.mld_stdmelding_key = m2k.mld_stdmelding_key(+)
GROUP BY sm.mld_ins_discipline_key;
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
v_errormsg := 'Fout toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_stdmelding_key,
mld_melding_t_uitvoertijd,
prs_kostenplaats_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_melding_onderwerp)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
v_stdmelding_key,
NULL,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
/*
v_errormsg := 'Fout bepalen Sogeti-ref';
IF INSTR (pbody, '##SNID:') > 0 AND v_kenmerk_key IS NOT NULL
THEN
v_refnr_lev := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##SNID:') + 7)) || ' ', '\s') - 1);
v_errormsg := 'Fout toevoegen Sogeti-ref';
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, v_kenmerk_key, v_refnr_lev);
END IF;
*/
v_errormsg := 'Fout bijwerken melding-status';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
-- Handle workflow actions for completion.
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PROCESSEMAIL', 'E', 'MNNL_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
CREATE OR REPLACE VIEW mnnl_v_rap_mail_error
(
hide_f_offset,
datum,
hint,
error
)
AS
SELECT SYSDATE - imp_log_datum, imp_log_datum, imp_log_hint, imp_log_omschrijving
FROM imp_log
WHERE imp_log_applicatie = 'PROCESSEMAIL' AND imp_log_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1);
CREATE OR REPLACE VIEW mnnl_v_incident_xref
(
mld_melding_key,
incident_xref
)
AS
SELECT m.mld_melding_key, TO_CHAR (m.mld_melding_key) || ' [' || s.mld_statuses_omschrijving || ']'
FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline td, mld_statuses s
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND td.ins_srtdiscipline_key = 22 -- Incident
AND m.mld_melding_status = s.mld_statuses_key;
CREATE OR REPLACE VIEW mnnl_v_udr_deel
(
deel_key,
discipline,
soort,
groep,
soortcode,
omschrijving,
plaatseigenaar,
plaatseigenaartype,
plaatsaanduiding,
eigenaar,
afdeling,
opmerking,
regio,
district,
locatie_code,
locatie_omschrijving,
locatie_plaats,
gebouwcode,
gebouw,
terreinsectorcode,
terreinsector,
verdiepingcode,
ruimtenr,
werkplekvolgnr,
werkplek,
uitleenbaar,
uitgeleend,
res_opmerking,
beheerder,
vervaldatum,
actief,
aantal,
state,
statedate,
fclt_3d_discipline_key,
fclt_3d_afdeling_key,
fclt_3d_locatie_key,
status
)
AS
SELECT ii.ins_deel_key,
lcl.x ('ins_discipline_omschrijving',
id.ins_discipline_key,
id.ins_discipline_omschrijving),
lcl.x ('ins_srtdeel_omschrijving',
s.ins_srtdeel_key,
s.ins_srtdeel_omschrijving),
lcl.x ('ins_srtgroep_omschrijving',
sg.ins_srtgroep_key,
sg.ins_srtgroep_omschrijving),
s.ins_srtdeel_code,
ii.ins_deel_omschrijving,
COALESCE (ii.plaats, ii.eigenaar),
ii.ins_alg_ruimte_type,
ii.plaats,
ii.eigenaar,
ii.afdeling,
ii.ins_deel_opmerking,
ii.regio,
ii.district,
ii.locatie_code,
ii.locatie_omschrijving,
ii.locatie_plaats,
ii.alg_gebouw_code,
ii.alg_gebouw_omschrijving,
ii.alg_terreinsector_code,
ii.alg_terreinsector_omschrijving,
ii.alg_verdieping_code,
ii.alg_ruimte_nr,
ii.prs_werkplek_volgnr,
ii.prs_werkplek_omschrijving,
DECODE (s.ins_srtdeel_uitleenbaar,
1, lcl.l ('lcl_yes'),
lcl.l ('lcl_no')),
DECODE (ii.ins_alg_ruimte_key_org,
NULL, lcl.l ('lcl_no'),
lcl.l ('lcl_yes')),
ii.res_deel_opmerking,
pf.prs_perslid_naam_full,
ii.ins_deel_vervaldatum,
DECODE (ii.ins_deel_actief, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')),
ii.ins_deel_aantal,
ii.ins_deel_state,
ii.ins_deel_statedate,
sg.ins_discipline_key,
ii.ins_alg_ruimte_key,
ii.alg_locatie_key,
(SELECT fu.fac_usrdata_omschr
FROM ins_kenmerkdeel kd, ins_kenmerk k, fac_usrdata fu
WHERE k.ins_kenmerk_key = kd.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 24
AND fu.fac_usrtab_key = 204
AND TO_CHAR (fac_usrdata_key) = kd.ins_kenmerkdeel_waarde
AND ii.ins_deel_key = kd.ins_deel_key) stat
FROM (SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
eigenaar,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
afdeling,
i.ins_discipline_key,
i.ins_alg_ruimte_key,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_v_afdeling_boom d,
prs_bedrijf b
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'A'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
pf.prs_perslid_naam_full eigenaar,
(SELECT d.prs_afdeling_naam
FROM prs_v_afdeling d
WHERE prs_afdeling_key = p.prs_afdeling_key),
i.ins_discipline_key,
p.prs_afdeling_key,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_perslid p,
prs_v_perslid_fullnames_all pf,
prs_v_afdeling_boom d
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'P'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
TO_CHAR (NULL) plaats,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
NULL regio,
NULL district,
NULL locatie_code,
NULL locatie_omschrijving,
NULL locatie_plaats,
NULL alg_gebouw_code,
NULL alg_gebouw_omschrijving,
NULL alg_terreinsector_code,
NULL alg_terreinsector_omschrijving,
NULL alg_verdieping_code,
NULL alg_ruimte_nr,
NULL prs_werkplek_volgnr,
NULL prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
c.prs_contactpersoon_naam eigenaar,
NULL afdeling,
NULL discipline_key,
NULL,
NULL alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_contactpersoon c
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = c.prs_contactpersoon_key
AND i.ins_alg_ruimte_type = 'C'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
i.ins_srtdeel_key,
i.prs_perslid_key_beh,
o.alg_plaatsaanduiding,
i.ins_deel_opmerking,
i.ins_alg_ruimte_type,
re.alg_regio_omschrijving,
di.alg_district_omschrijving,
l.alg_locatie_code locatie_code,
l.alg_locatie_omschrijving locatie_omschrijving,
l.alg_locatie_plaats locatie_plaats,
o.alg_gebouw_code,
o.alg_gebouw_omschrijving,
o.alg_terreinsector_code,
o.alg_terreinsector_omschrijving,
o.alg_verdieping_code,
o.alg_ruimte_nr,
o.prs_werkplek_volgnr,
o.prs_werkplek_omschrijving,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
NULL eigenaar,
NULL afdeling,
i.ins_discipline_key,
NULL,
l.alg_locatie_key,
i.ins_deel_actief,
i.ins_deel_aantal,
i.ins_alg_ruimte_key_org,
i.ins_deel_state,
i.ins_deel_statedate
FROM ins_deel i,
ins_v_alg_overzicht o,
alg_locatie l,
alg_district di,
alg_regio re,
(SELECT res_deel_key,
res_ins_deel_key,
res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd
WHERE i.ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND di.alg_regio_key = re.alg_regio_key) ii,
ins_srtdeel s,
ins_srtgroep sg,
ins_discipline id,
prs_v_perslid_fullnames pf
WHERE sg.ins_srtgroep_key = s.ins_srtgroep_key
AND id.ins_discipline_key = sg.ins_discipline_key
AND ii.prs_perslid_key_beh = pf.prs_perslid_key(+)
AND s.ins_srtdeel_key = ii.ins_srtdeel_key;
-- MNNL#41772: Stakeholders voor small changes.
CREATE OR REPLACE VIEW mnnl_v_perslid_small_changes
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_naam_log_full,
prs_perslid_naam_log_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key IN (441, 442, 443, 444, 445, 447, 456, 453, 462) -- ITL Rechtenbeheer/Unix/Werkplekbeheer (ICT)/Wintel/Oracle/Netwerken/Technisch Applicatiebeheer+MDT Procesbesturing&Integratie+IV Security
AND prs_perslid_key = pf.prs_perslid_key);
CREATE OR REPLACE VIEW mnnl_v_perslid_all
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam_friendly,
prs_perslid_naam_log_full,
prs_perslid_naam_log_friendly,
prs_perslid_verwijder
)
AS
SELECT pf.prs_perslid_key,
pf.prs_perslid_naam_full || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_full || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
pf.prs_perslid_naam_friendly || ' [' || p.prs_perslid_oslogin || ']' || ' [' || a.prs_afdeling_naam || ']',
p.prs_perslid_verwijder
FROM prs_perslid p, prs_afdeling a, prs_v_perslid_fullnames_all pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = pf.prs_perslid_key;
-- MNNL#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,
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,
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
;
-- 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,
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,
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
;
CREATE OR REPLACE VIEW mnnl_v_noti_change_appr
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS -- Ter info naar enkele medewerkers voor alle medium en large changes!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM fac_tracking t,
mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 43 -- MLDNEW
AND t.fac_tracking_refkey = km.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_kenmerktype = 'V' -- Checkbox
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key = 1261 -- IV Changemanagement
AND sn.fac_srtnotificatie_code = 'CUST01'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter approval naar approver volgens hint als 'Impact'-kenmerk gezet op 'Moet approven'!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_v_aanwezigusrdata ud,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND INSTR (sk.mld_srtkenmerk_upper, 'IMPACT') > 0
AND sk.fac_kenmerkdomein_key IS NOT NULL -- Referentie-kenmerk
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key = 1261 -- IV Changemanagement
--AND m.mld_melding_status NOT IN (1, 5, 6) -- 1-Afgewezen, 5-Afgemeld, 6-Verwerkt (zolang nog niet Gesloten)
AND m.mld_melding_status IN (2, 3, 0) -- 1-Ingevoerd, 3-Ingezien, 0-Pending (zolang nog niet Geaccepteerd/Afgewezen)
AND km.mld_kenmerkmelding_waarde = TO_CHAR (ud.fac_usrdata_key)
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = 'MOET APPROVEN'
AND sn.fac_srtnotificatie_code = 'CUST02'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter info naar enkele medewerkers volgens checkbox-hint (generieke notificatie voor alle vakgroepen/statussen)!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND INSTR (UPPER (k.mld_kenmerk_hint), '@MN.NL') > 0
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_kenmerktype = 'V' -- Checkbox
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key != 1261 -- Anders dan IV Changemanagement
AND sn.fac_srtnotificatie_code = 'CUST04'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL -- Ter approval naar approver zoals voor small changes ingevuld bij 'Approval van collega'!
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##', TO_CHAR (m.mld_melding_key)),
'##DISC##', md.ins_discipline_omschrijving),
'##STDMLD##', sm.mld_stdmelding_omschrijving),
'##SUBJECT##', m.mld_melding_onderwerp),
m.mld_melding_key,
NULL,
NULL,
p.prs_perslid_email,
NULL,
NULL
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 241 -- Approval van collega
AND km.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 503 -- RFC Small change
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND m.mld_melding_status NOT IN (1, 5, 6) -- 1-Afgewezen, 5-Afgemeld, 6-Verwerkt (zolang nog niet Gesloten)
AND m.mld_melding_status IN (2, 3, 0) -- 1-Ingevoerd, 3-Ingezien, 0-Pending (zolang nog niet Geaccepteerd/Afgewezen)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key
AND sn.fac_srtnotificatie_code = 'CUST07'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_CHANGE_APPR'
AND km.mld_kenmerkmelding_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
CREATE OR REPLACE VIEW mnnl_v_noti_jira
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (sn.fac_srtnotificatie_oms, '##TEAM##', TRIM (SUBSTR (sk.mld_srtkenmerk_omschrijving, INSTR (sk.mld_srtkenmerk_omschrijving, ' ')))),
m.mld_melding_key,
NULL,
NULL,
k.mld_kenmerk_hint,
NULL,
NULL
FROM fac_tracking t,
mld_melding m,
mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = 763 -- Intake business verzoek
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_kenmerk_key IN (1049, 1040, 1042, 1045, 1046, 1038, 1501, 1502, 1563)
AND INSTR (UPPER (k.mld_kenmerk_hint), '@') > 0 -- TODO: Preciezer?
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sn.fac_srtnotificatie_code = 'CUST03'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_JIRA'
AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MNNL#67354: Inzage medewerkers tbv. Jira (alleen key + oslogin)!
CREATE OR REPLACE VIEW mnnl_v_rap_prs_api (id, login)
AS
SELECT prs_perslid_key, prs_perslid_oslogin FROM prs_v_aanwezigperslid;
-- MNNL#62675: Volgens configuratie in Eigen tabel met key=1081 reminders naar
-- <email> als <soortmelding> met <prio> op <percentage van SLA>.
-- MNNL#71193: CUST10-noti op SLA_DREMPEL3 (initieel 110%=10% overschrijding).
CREATE OR REPLACE VIEW mnnl_v_noti_mld_sla
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
WITH m2m
AS (SELECT sm.mld_stdmelding_key,
SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, ':') + 1, 1) drempel,
ud.fac_usrdata_prijs prio,
ud.fac_usrdata_omschr mailto
FROM fac_v_aanwezigusrdata ud, mld_discipline md, mld_stdmelding sm
WHERE fac_usrtab_key = 1081
AND SUBSTR (fac_usrdata_code, 1, 1) = 'V'
AND fac.safe_to_number (SUBSTR (ud.fac_usrdata_code, 2, INSTR (ud.fac_usrdata_code, ':') - 2)) = md.ins_discipline_key
AND md.ins_discipline_key = sm.mld_ins_discipline_key
UNION ALL
SELECT sm.mld_stdmelding_key,
SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, ':') + 1, 1) drempel,
ud.fac_usrdata_prijs prio,
ud.fac_usrdata_omschr mailto
FROM fac_v_aanwezigusrdata ud, mld_stdmelding sm
WHERE fac_usrtab_key = 1081
AND SUBSTR (ud.fac_usrdata_code, 1, 1) = 'M'
AND fac.safe_to_number (SUBSTR (ud.fac_usrdata_code, 2, INSTR (ud.fac_usrdata_code, ':') - 2)) = sm.mld_stdmelding_key),
drempel1 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 2841), -- SLA_DREMPEL1
drempel2 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 2842), -- SLA_DREMPEL2
drempel3 AS (SELECT fac.safe_to_number (fac_usrdata_omschr) waarde FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 1081 AND fac_usrdata_key = 4081) -- SLA_DREMPEL3
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL1##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel1.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel1.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat50pct
FROM mld_melding m, m2m, drempel1
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '1' -- Initieel 50%
AND drempel1.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST05'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat50pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat50pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL2##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel2.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel2.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat80pct
FROM mld_melding m, m2m, drempel2
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '2' -- Initieel 80%
AND drempel2.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST06'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat80pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat80pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
'##SUBJECT##',
m.mld_melding_onderwerp),
'##DREMPEL3##',
TO_CHAR (100 * m.waarde)),
m.mld_melding_key,
NULL,
NULL,
REPLACE (m.mailto, '##BEHANDELAAR##', p.prs_perslid_email),
NULL,
NULL
FROM (SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_behandelaar_key,
m2m.mailto,
drempel3.waarde,
mld.geteinddatum (
m.mld_melding_datum,
m.mld_stdmelding_key,
m.mld_melding_spoed,
NULL, -- Plaats binnen/kleiner locatie!
NULL, -- Object met laagste uitvoertijd
MLD_T_UITVOERTIJD (drempel3.waarde * m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid))
dat110pct
FROM mld_melding m, m2m, drempel3
WHERE m.mld_melding_status NOT IN (1, 5, 6) -- Lopende meldingen!
AND m.mld_melding_einddatum_std > SYSDATE
AND m.mld_stdmelding_key = m2m.mld_stdmelding_key
AND m2m.drempel = '3' -- Initieel 110%
AND drempel3.waarde > 0 -- Drempel gedefinieerd
AND BITAND (m2m.prio, POWER (2, m.mld_melding_spoed - 1)) > 0) m,
prs_perslid p,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
AND sn.fac_srtnotificatie_code = 'CUST10'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_MLD_SLA'
--AND TO_CHAR (m.dat110pct, 'yyyymmddhh24') = TO_CHAR (SYSDATE, 'yyyymmddhh24')
AND m.dat110pct BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MNNL#61759: Notificatie van status/voortgang tbv. Sogeti/ServiceNow!
CREATE OR REPLACE VIEW mnnl_v_noti_sogeti
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile,
attachments
)
AS
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
NULL,
REPLACE (
REPLACE (sn.fac_srtnotificatie_oms,
'##SNID##', TRIM (ko.mld_kenmerkopdr_waarde)),
'##SUBJECT##', m.mld_melding_onderwerp),
mn.mld_melding_key,
NULL,
NULL,
'sogeti@service-now.com',
NULL,
NULL
FROM mld_melding_note mn,
mld_melding m,
--mld_stdmelding sm,
--mld_discipline md,
mld_opdr o,
mld_v_aanwezigkenmerkopdr ko,
mld_kenmerk k,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE mn.mld_melding_note_flag = 0 -- Hidden notitie
AND mn.prs_perslid_key != 22824 -- Mail-user tbv. Sogeti/Werkplekbeheer
AND mn.mld_melding_key = m.mld_melding_key
--AND m.mld_stdmelding_key = sm.mld_stdmelding_key
--AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND mn.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = 22644 -- Sogeti
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2141 -- Refnr. leverancier
AND NOT EXISTS (SELECT 1 FROM mld_opdr WHERE mld_melding_key = o.mld_melding_key AND mld_opdr_bedrijfopdr_volgnr > o.mld_opdr_bedrijfopdr_volgnr)
AND sn.fac_srtnotificatie_code = 'CUST08'
AND nj.fac_notificatie_job_view = 'MNNL_V_NOTI_SOGETI'
AND mn.mld_melding_note_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;
-- MMNL#54758: RAPPORT met alle (INCIDENT) meldingen met en of zonder object (regel per object).
CREATE OR REPLACE VIEW mnnl_v_udr_meldingen
(
melding_key,
melding_nr,
melder,
melder_key,
melder_afd,
melder_afd_omschr,
melding_soort,
melding_productgroep,
melding_subproductgroep,
melding_behandelgroep,
melding_behandelaar,
melding_behandelaar_key,
melding_subproductgroepgroep,
melding_status,
melding_sla_nvt,
melding_sla_werkdgn,
melding_sla_werkuren,
melding_sla_accptdgn,
melding_sla_accpturen,
melding_sla_plan_uitvoertijd,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
melding_doorlooptijd_dgn,
melding_doorloopijd_uren,
melding_onderwerp,
melding_vomschrijving,
melding_opmerking,
melding_prioriteit,
melding_prioriteittxt,
melding_rating,
melding_rating_opmerking,
melding_uitvoering_sla_dagen,
melding_uitvoering_sla_uren,
melding_afspraak_sla_dagen,
melding_afspraak_sla_uren,
melding_accept_sla_optijd,
melding_uitvoering_sla_optijd,
melding_afspraak_sla_optijd,
melding_selfservice,
object_discipline,
object_soort,
object_groep,
object_omschrijving,
object_plaatseigenaar,
storing_scope,
storing_blokkerend,
storing_sinds,
storing_frequency,
storing_type
)
AS
SELECT DISTINCT m.melding_key,
m.meldingnummer,
m.melder,
m.melder_key,
m.afdeling,
m.afdeling_omschrijving,
m.soortmelding,
m.productgroep,
m.subproductgroep,
m.behandelgroep,
m.behandelaar,
m.behandelaar_key,
m.subproductgroepgroep,
m.melding_status,
m.sla_nvt,
m.sla_werkdgn,
m.sla_werkuren,
m.sla_accptdgn,
m.sla_accpturen,
m.plan_uitvoertijd_sla,
m.melding_datum,
m.melding_einddatum,
m.melding_acceptdatum,
m.melding_afgemeld,
m.melding_accepted,
m.doorlooptijd_werkdgn,
m.doorlooptijd_werkuren,
m.onderwerp,
m.vomschrijving,
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_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 143))
waarde143,
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 145),
1, 'ja',
' ')
waarde145,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.MLD_KENMERK_KEY = 146) waarde146, -- storing_sinds,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 147))
waarde147, -- storing_frequency,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 2441))
waarde2441
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,
m.vomschrijving,
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_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 143))
waarde143,
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 145),
1, 'ja',
' ')
waarde145,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 146)
waarde146, -- storing_sinds,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 147))
waarde147, -- storing_frequency,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 2441))
waarde2441
FROM mld_v_udr_melding m,
( SELECT mo.mld_melding_key,
LISTAGG (dg.ins_deel_omschrijving || ' (' || dg.ins_srtdeel_omschrijving || ')', ', ')
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,
m.vomschrijving,
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_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 143))
waarde143,
DECODE (
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 145),
1, 'ja',
' ')
waarde145,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 146)
waarde146, -- storing_sinds,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 147))
waarde147, -- storing_frequency,
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrdata_key =
(SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.melding_key
AND km.mld_kenmerk_key = 2441))
waarde2441,
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 || ')', ', ')
WITHIN GROUP (ORDER BY dg.ins_deel_omschrijving)
objecten
FROM mld_melding_object mo, ins_v_deel_gegevens dg
WHERE mo.ins_deel_key = dg.ins_deel_key
GROUP BY mo.mld_melding_key) mo,
onderliggend,
(SELECT km.mld_melding_key, pf.prs_perslid_naam_full
FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, prs_v_perslid_fullnames_all pf
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1217 -- Problem eigenaar
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key) pe,
prs_v_perslid_fullnames pfab
WHERE m.melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
AND m.melding_key = mo.mld_melding_key(+)
AND m.melding_key = onderliggend.mld_melding_mldgroup_key(+)
AND m.melding_key = pe.mld_melding_key(+)
AND m.actieve_behandelaar_key = pfab.prs_perslid_key(+);
-- MNNL#53038: Basisrapport met alle Intake-meldingen incl. kenmerken.
CREATE OR REPLACE VIEW mnnl_v_rap_mld_intake
(
melding_key,
meldingnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
bedrijf_key,
invoerder,
meldbron,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice,
reden_aanvraag, --kenmerk1,
aanvullende_acties, --kenmerk2,
afronding_intake, --kenmerk3,
jira_ticket, --kenmerk4,
cap_bestelling, --kenmerk5,
gewenst_gereed, --kenmerk6,
leverancier, --kenmerk7,
teaminzet_netwerken, --kenmerk8,
teaminzet_oracle_dba, --kenmerk9,
teaminzet_oracle_mw, --kenmerk10,
teaminzet_unix_linux, --kenmerk11,
teaminzet_wpbeheer, --kenmerk12,
teaminzet_wintel, --kenmerk13,
wens, --kenmerk14,
stappen_genomen, --kenmerk15,
bpost_niet_aanmaken, --kenmerk16,
uren_bestelling, --kenmerk17,
teaminzet_tab, --kenmerk18,
teaminzet_security, --kenmerk19,
afronding_ontwerp, --kenmerk20,
teaminzet_cloud_comp, --kenmerk21,
service_ontwerp, --kenmerk22,
link_naar_ontwerp, --kenmerk23,
coord_ontwerpfase, --kenmerk24,
kenmerk25,
kenmerk26,
kenmerk27,
kenmerk28,
kenmerk29,
kenmerk30
)
AS
WITH mk AS (SELECT sk.vnr, sk.mld_srtkenmerk_key, sk.mld_srtkenmerk_omschrijving, kw.mld_melding_key melding_key, kw.waarde
FROM (SELECT ROWNUM vnr, mld_srtkenmerk_key, mld_srtkenmerk_omschrijving
FROM ( SELECT sk.mld_srtkenmerk_key, sk.mld_srtkenmerk_omschrijving, sk.mld_srtkenmerk_aanmaak
FROM mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V')
AND COALESCE (sk.mld_srtkenmerk_verwijder, SYSDATE) > TO_DATE ('010118', 'ddmmyy')
AND EXISTS (SELECT 1 -- Alleen Intake-kenmerksoorten
FROM mld_stdmelding sm, mld_discipline md, mld_kenmerk k
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 121 -- Intake!
AND ((k.mld_kenmerk_niveau = 'S' AND k.mld_stdmelding_key = sm.mld_stdmelding_key)
OR (k.mld_kenmerk_niveau = 'D' AND k.mld_stdmelding_key = md.ins_discipline_key)
OR (k.mld_kenmerk_niveau = 'T' AND k.mld_stdmelding_key = 121)) -- Intake!
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key)
AND sk.mld_srtkenmerk_key != 1061 -- VERWIJDERD/Co<43>rdinator van Ontwerp fase
ORDER BY 3, 1)) sk
LEFT JOIN
(SELECT sk.mld_srtkenmerk_key, km.mld_melding_key,
DECODE (sk.mld_srtkenmerk_kenmerktype,
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde),
km.mld_kenmerkmelding_waarde)
waarde
FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key) kw
ON sk.mld_srtkenmerk_key = kw.mld_srtkenmerk_key)
SELECT x.melding_key,
x.meldingnummer,
x.melding_regio,
x.melding_district,
x.melding_locatiecode,
x.melding_locatie,
x.melding_locatieplaats,
x.fclt_3d_locatie_key,
x.melding_gebouwcode,
x.melding_gebouw,
x.melding_verdieping,
x.melding_ruimtenr,
x.melding_ruimte,
x.melding_ordernr,
x.kostensoortgroep,
x.kostensoort,
x.kostenplaats,
x.kostenplaats_oms,
x.melder,
x.melder_key,
x.afdeling,
x.afdeling_omschrijving,
x.fclt_3d_afdeling_key,
x.bedrijf_key,
x.invoerder,
x.meldbron,
x.soortmelding,
x.fclt_3d_discipline_key,
x.productgroep,
x.subproductgroep,
x.behandelgroep,
x.behandelaar,
x.behandelaar_key,
x.subproductgroepgroep,
x.fclt_3d_discipline2_key,
x.actieve_behandelgroep,
x.actieve_behandelaar_key,
x.actieve_behandelaar,
x.melding_status,
x.sla_nvt,
x.sla_werkdgn,
x.sla_werkuren,
x.sla_respijtdgn,
x.sla_respijturen,
x.sla_accptdgn,
x.sla_accpturen,
x.plan_uitvoertijd_sla,
x.melding_datum,
x.melding_einddatum,
x.melding_acceptdatum,
x.melding_afgemeld,
x.melding_accepted,
x.doorlooptijd_werkdgn,
x.doorlooptijd_werkuren,
x.onderwerp,
x.vomschrijving,
x.melding_opmerking,
x.prioriteit,
x.prioriteittxt,
x.rating,
x.rating_opmerking,
x.bolletje,
x.accept_sla_dagen,
x.accept_sla_uren,
x.uitvoering_sla_dagen,
x.uitvoering_sla_uren,
x.afspraak_sla_dagen,
x.afspraak_sla_uren,
x.accept_sla_optijd,
x.uitvoering_sla_optijd,
x.afspraak_sla_optijd,
x.selfservice,
k1.waarde kenmerk1,
k2.waarde kenmerk2,
k3.waarde kenmerk3,
k4.waarde kenmerk4,
k5.waarde kenmerk5,
k6.waarde kenmerk6,
k7.waarde kenmerk7,
k8.waarde kenmerk8,
k9.waarde kenmerk9,
k10.waarde kenmerk10,
k11.waarde kenmerk11,
k12.waarde kenmerk12,
k13.waarde kenmerk13,
k14.waarde kenmerk14,
k15.waarde kenmerk15,
k16.waarde kenmerk16,
k17.waarde kenmerk17,
k18.waarde kenmerk18,
k19.waarde kenmerk19,
k20.waarde kenmerk20,
k21.waarde kenmerk21,
k22.waarde kenmerk22,
k23.waarde kenmerk23,
k24.waarde kenmerk24,
k25.waarde kenmerk25,
k26.waarde kenmerk26,
k27.waarde kenmerk27,
k28.waarde kenmerk28,
k29.waarde kenmerk29,
k30.waarde kenmerk30
FROM (SELECT v.* FROM mld_v_udr_melding v WHERE UPPER (v.soortmelding) = 'INTAKE') x
LEFT JOIN mk k1 ON x.melding_key = k1.melding_key AND k1.vnr = 1
LEFT JOIN mk k2 ON x.melding_key = k2.melding_key AND k2.vnr = 2
LEFT JOIN mk k3 ON x.melding_key = k3.melding_key AND k3.vnr = 3
LEFT JOIN mk k4 ON x.melding_key = k4.melding_key AND k4.vnr = 4
LEFT JOIN mk k5 ON x.melding_key = k5.melding_key AND k5.vnr = 5
LEFT JOIN mk k6 ON x.melding_key = k6.melding_key AND k6.vnr = 6
LEFT JOIN mk k7 ON x.melding_key = k7.melding_key AND k7.vnr = 7
LEFT JOIN mk k8 ON x.melding_key = k8.melding_key AND k8.vnr = 8
LEFT JOIN mk k9 ON x.melding_key = k9.melding_key AND k9.vnr = 9
LEFT JOIN mk k10 ON x.melding_key = k10.melding_key AND k10.vnr = 10
LEFT JOIN mk k11 ON x.melding_key = k11.melding_key AND k11.vnr = 11
LEFT JOIN mk k12 ON x.melding_key = k12.melding_key AND k12.vnr = 12
LEFT JOIN mk k13 ON x.melding_key = k13.melding_key AND k13.vnr = 13
LEFT JOIN mk k14 ON x.melding_key = k14.melding_key AND k14.vnr = 14
LEFT JOIN mk k15 ON x.melding_key = k15.melding_key AND k15.vnr = 15
LEFT JOIN mk k16 ON x.melding_key = k16.melding_key AND k16.vnr = 16
LEFT JOIN mk k17 ON x.melding_key = k17.melding_key AND k17.vnr = 17
LEFT JOIN mk k18 ON x.melding_key = k18.melding_key AND k18.vnr = 18
LEFT JOIN mk k19 ON x.melding_key = k19.melding_key AND k19.vnr = 19
LEFT JOIN mk k20 ON x.melding_key = k20.melding_key AND k20.vnr = 20
LEFT JOIN mk k21 ON x.melding_key = k21.melding_key AND k21.vnr = 21
LEFT JOIN mk k22 ON x.melding_key = k22.melding_key AND k22.vnr = 22
LEFT JOIN mk k23 ON x.melding_key = k23.melding_key AND k23.vnr = 23
LEFT JOIN mk k24 ON x.melding_key = k24.melding_key AND k24.vnr = 24
LEFT JOIN mk k25 ON x.melding_key = k25.melding_key AND k25.vnr = 25
LEFT JOIN mk k26 ON x.melding_key = k26.melding_key AND k26.vnr = 26
LEFT JOIN mk k27 ON x.melding_key = k27.melding_key AND k27.vnr = 27
LEFT JOIN mk k28 ON x.melding_key = k28.melding_key AND k28.vnr = 28
LEFT JOIN mk k29 ON x.melding_key = k29.melding_key AND k29.vnr = 29
LEFT JOIN mk k30 ON x.melding_key = k30.melding_key AND k30.vnr = 30;
CREATE OR REPLACE VIEW MNNL_V_PERSLID_NAAMTEL
(
PERSLID_KEY,
NAAMTEL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam
|| ' ('
|| prs_perslid_voornaam
|| ') - '
|| prs_perslid_oslogin
|| ' - '
|| prs_perslid_telefoonnr
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_voornaam NOT LIKE '%Leverancier%'
AND prs_perslid_voornaam NOT LIKE '%Algemeen%'
AND prs_perslid_naam NOT LIKE '%test%'
AND prs_perslid_naam NOT LIKE '%INACTIEF%'
AND prs_perslid_oslogin NOT LIKE '%LEV_%'
AND prs_perslid_email LIKE '%@mn.nl%'
ORDER BY prs_perslid_naam;
CREATE OR REPLACE VIEW mnnl_v_rap_overwerk
(
res_key,
res_rsv_ruimte_key,
datum_overwerk,
start_tijd,
eind_tijd,
soort_overwerk,
verdieping,
interne_deelnemers,
externe_deelnemers
)
AS
SELECT DISTINCT
rsv.res_reservering_key,
rsv.res_rsv_ruimte_key,
TRUNC (rsv.res_rsv_ruimte_van),
TO_CHAR (rsv.res_rsv_ruimte_van, 'HH24:MI'),
TO_CHAR (rsv.res_rsv_ruimte_tot, 'HH24:MI'),
ra.res_activiteit_omschrijving,
x.fac_usrdata_omschr,
pers.deelnemer,
(SELECT LISTAGG (bez_afspraak_naam || ' (' || bez_afspraak_bedrijf || ')' , ', ')
WITHIN GROUP (ORDER BY bez_afspraak_naam)
FROM bez_bezoekers b, bez_afspraak a
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.res_rsv_ruimte_key = rsv.res_rsv_ruimte_key) -- Externe deelnemers
FROM res_rsv_ruimte rsv,
res_activiteit ra,
res_kenmerkwaarde rkw,
mnnl_v_perslid_naamtel pt,
(SELECT DISTINCT f.fac_usrdata_omschr, f.fac_usrdata_key
FROM fac_usrdata f, res_kenmerk rk, res_kenmerkwaarde rkw
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 164 -- Verdieping
AND rkw.res_kenmerkwaarde_verwijder IS NULL
AND f.fac_usrtab_key = 621) x,
(SELECT DISTINCT
LISTAGG (pt.naamtel, ', ')
WITHIN GROUP (ORDER BY pt.naamtel)
deelnemer,
rkw.res_rsv_ruimte_key
FROM mnnl_v_perslid_naamtel pt,
res_kenmerk rk,
res_kenmerkwaarde rkw
WHERE rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_srtkenmerk_key = 162 -- Deelnemer
AND rkw.res_kenmerkwaarde_verwijder IS NULL
AND rkw.res_kenmerkreservering_waarde = pt.perslid_key
GROUP BY rkw.res_rsv_ruimte_key) pers
WHERE ra.res_activiteit_key IN (210, 211) -- Overwerk, Overwerk Weekend
AND rsv.res_activiteit_key = ra.res_activiteit_key
AND rsv.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key
AND x.fac_usrdata_key =
fac.safe_to_number (rkw.res_kenmerkreservering_waarde)
AND pers.res_rsv_ruimte_key = rkw.res_rsv_ruimte_key;
CREATE OR REPLACE VIEW mnnl_v_ins_qrc_ruimte
(
FCLT_3D_LOCATIE_KEY,
FCLT_F_LOCATIE,
FCLT_F_GEBOUW,
PLAATS,
SOORTRUIMTE,
INS_ALG_RUIMTE_TYPE,
ALG_DISTRICT_KEY,
ALG_RUIMTE_KEY,
HIDE_F_BOOKMARK_ID
)
AS
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving,
x.alg_gebouw_naam,
SUBSTR (x.alg_plaatsaanduiding, 7) plaats,
x.alg_ruimte_omschrijving soortruimte,
sr.alg_srtruimte_omschrijving,
l.alg_district_key,
x.alg_ruimte_key,
b.fac_bookmark_id
FROM alg_v_allonrgoed_gegevens x,
alg_locatie l,
alg_district di,
fac_bookmark b,
alg_ruimte r,
alg_srtruimte sr
WHERE b.fac_bookmark_naam = 'QRC naar ruimte'
AND x.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND x.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key;
-- Dummy export NACHTWERK!
-- MNNL#54328: Automatisch verwerken alle afgemelde meldingen.
CREATE OR REPLACE PROCEDURE mnnl_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Auto-afmelden alle afgemelde meldingen in de nacht na afmelden!
CURSOR c_mldver
IS
SELECT '[' || TO_CHAR (m.mld_melding_key) || '] ' aanduiding,
m.mld_melding_key
FROM mld_melding m
WHERE m.mld_melding_status = 5 -- Afgemeld
ORDER BY m.mld_melding_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_bedrijf_key NUMBER;
v_count NUMBER;
BEGIN
v_count := 0;
-- Auto-verwerken alle afgemelde meldingen in de nacht na afmelden!
FOR rec IN c_mldver
LOOP
BEGIN
v_errormsg := 'Fout auto-verwerken';
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL);
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'Meldingen/#verwerkt: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END mnnl_select_nachtwerk;
/
-- MNNL#72704: Export naar SNOW (= Servicenow) die telkens voorafgaand aan
-- putOrders het volgende doet:
-- 1. Relevante wijzigingen in opdracht (anders dan vanuit SNOW
-- via API) opnieuw uitgeven via orderqueue.
-- 2. Laatste sync-datum registreren, zodat eerdere wijzigingen
-- niet nogmaals worden doorgezet.
CREATE OR REPLACE PROCEDURE MNNL_SELECT_SNOW (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
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 (p_applname, 'W', rec.aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, '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 (p_applname, 'E', 'SNOW-export afgebroken!', v_errormsg);
END MNNL_SELECT_SNOW;
/
-- MNNL#63195 MJOB IMPORT
CREATE OR REPLACE PROCEDURE mnnl_import_insp_mjob (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_header_is_valid NUMBER (1);
v_dummy VARCHAR2 (1000);
v_count NUMBER;
v_count_rec NUMBER := 0 ; -- totaal aantal record in csv
v_count_verwerk NUMBER ; -- aantal te verwerken regels
v_count_n_taak NUMBER ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject NUMBER ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak NUMBER ; -- aantal bestaande taken te wijzigen
-- De importvelden:
v_locatiecode VARCHAR2(1000);
v_objectomschrijving VARCHAR2(1000);
v_taakcategorie VARCHAR2(1000);
v_taakomschrijving VARCHAR2(1000);
v_taakomschrijving_nieuw VARCHAR2(1000); -- Vullen we in kolom extra_veld5
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakprioriteit VARCHAR2(1000);
v_taakobjectpercentage VARCHAR2(1000);
v_taakobjectopmerking VARCHAR2(1000);
v_taakobjectperiode VARCHAR2(1000);
v_taakobjectstartjaar VARCHAR2(1000); -- Startjaar uit CSV
v_taakobjectstartjaar_d DATE;
v_object_aanmaak DATE; -- Datum aanmaak van Object
v_taakobjecteindjaar VARCHAR2(1000);
v_taakobjecteindjaar_d DATE;
v_taakobjectmateriaal VARCHAR2(1000);
v_taakobjectkosten VARCHAR2(1000);
v_taakobjecteenheid VARCHAR2(1000);
v_taakdienst VARCHAR2(1000);
v_deel_key NUMBER(10);
v_discipline_key NUMBER(10);
v_ismjob NUMBER;
v_taak_geschiedenis NUMBER (10); -- Vullen we in kolom extra_veld4
v_srtcontrole_key NUMBER(10);
v_srtcontrole_teller NUMBER(10);
v_ins_srtdeel_key NUMBER(10);
v_ins_srtdeel_code VARCHAR2(10);
v_ins_srtcontroledl_xcp_key NUMBER(10);
v_taakobject_startjaar_d DATE; -- Startjaar van de reeds in Facilitor gekoppelde objecttaak
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM tmp_imp_mjb;
COMMIT;
v_header_is_valid := 0;
v_ongeldig := 0;
FOR rec IN c
LOOP
BEGIN
v_ongeldig := 0;
v_taak_geschiedenis := NULL ;
v_deel_key := NULL ;
v_ins_srtdeel_key := NULL ;
v_ins_srtdeel_code := NULL ;
v_srtcontrole_key := NULL ;
v_ins_srtcontroledl_xcp_key := NULL;
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij:' || SUBSTR (v_newline, 1, 200);
v_aanduiding := '';
-- OUD: 'OBJECTOMSCHRIJVING;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN%
-- NIEUW (vanaf 2020-6): OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW;
IF (REPLACE(UPPER (v_newline), ' ') LIKE 'OBJECTIDENTIFICATIE;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;TAAKPRIORITEIT;TAAKOBJECTPERCENTAGE;TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;TAAKOBJECTKOSTEN;DIENST;TAAKOMSCHRIJVINGNIEUW%')
THEN
v_header_is_valid := 1;
ELSE
-- Lees alle veldwaarden
v_count_rec := v_count_rec + 1 ;
v_errormsg := 'Fout opvragen te importeren rij (object)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_objectomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (discipline)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakcategorie);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving);
v_errormsg := 'Fout opvragen te importeren rij (taakopmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakopmerking);
v_errormsg := 'Fout opvragen te importeren rij (taakgroep)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakgroep);
v_errormsg := 'Fout opvragen te importeren rij (prioriteit)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakprioriteit);
v_errormsg := 'Fout opvragen te importeren rij (percentage)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectpercentage);
v_errormsg := 'Fout opvragen te importeren rij (opmerking)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectopmerking);
v_errormsg := 'Fout opvragen te importeren rij (eenheid)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteenheid);
v_errormsg := 'Fout opvragen te importeren rij (periode)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectperiode);
v_errormsg := 'Fout opvragen te importeren rij (startjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectstartjaar);
v_errormsg := 'Fout opvragen te importeren rij (eindjaar)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjecteindjaar);
v_errormsg := 'Fout opvragen te importeren rij (materiaal)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakobjectmateriaal);
v_errormsg := 'Fout opvragen te importeren rij (dienst)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakdienst);
v_errormsg := 'Fout opvragen te importeren rij (taakomschrijvingnieuw)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_taakomschrijving_nieuw);
IF v_header_is_valid = 1 THEN -- Als geldige header gepasseerd en csv-recordvelden gevuld dan gaan we eerst checken of data klopt
-- Controleer of het object bestaat
-- Controleer of object er meerdere keren in staat (valt terug naar OTHERS, regel 300)
BEGIN
v_errormsg :=
'Fout bij opzoeken object: ' || v_objectomschrijving ||' komt vaker dan 1 keer voor';
SELECT ins_deel_key
INTO v_deel_key
FROM ins_deel
WHERE UPPER (ins_deel_omschrijving) = UPPER (v_objectomschrijving)
AND ins_deel_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key, 'E', 'Object bestaat niet - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
v_ongeldig := 1;
END;
-- Controleer de taakcategorie
v_errormsg :=
'Fout bij controleren taakcategorie ' ;
BEGIN
SELECT ins_discipline_key, ctr_disc_params_ismjob
INTO v_discipline_key, v_ismjob
FROM ins_tab_discipline d, ctr_disc_params dp
WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key
AND UPPER (d.ins_discipline_omschrijving) = TRIM(UPPER(v_taakcategorie));
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key, 'E', 'Inspectie discipline niet gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_taakcategorie);
v_ongeldig := 1;
END;
-- Controleer de eenheid
IF v_ismjob = 1
THEN
v_taakobjecteenheid := '4'; -- jaar
END IF;
IF v_taakobjecteenheid IS NOT NULL AND v_taakobjecteenheid NOT IN ('1', '2', '3', '4')
THEN
fac.imp_writelog (
p_import_key, 'E', 'Eenheid is niet correct gevuld (of leeg of 1,2,3,4) - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
-- Controleer dienst
v_errormsg :=
'Fout controleren dienst ';
IF v_taakdienst IS NOT NULL
THEN
SELECT count(*)
INTO v_count
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(v_taakdienst);
IF v_count = 0
THEN
fac.imp_writelog (
p_import_key, 'W', 'Dienst onbekend - zal bij verwerken aangemaakt worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakdienst);
END IF;
END IF;
-- Controleer de kosten - leeg of numeriek
v_errormsg :=
'Fout controleren kosten ';
IF v_taakobjectmateriaal IS NOT NULL AND fac.safe_to_number (REPLACE (v_taakobjectmateriaal, ',', '.')) IS NULL
THEN
fac.imp_writelog (
p_import_key, 'E', 'Kosten taakobject niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakobjectmateriaal);
v_ongeldig := 1;
END IF;
-- Controleer de taakperiode - Leeg of numeriek
v_errormsg :=
'Fout controleren taakperiode ';
IF v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL
THEN
fac.imp_writelog (
p_import_key, 'E', 'Ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
-- Controleer de taakprioriteit - Leeg of numeriek
v_errormsg :=
'Fout controleren taakprioriteit ';
IF v_taakprioriteit IS NOT NULL AND fac.safe_to_number (v_taakprioriteit) IS NULL
THEN
fac.imp_writelog (
p_import_key, 'E', 'Prioriteit taak niet goed ingevuld - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || 'Kosten csv: ' || v_taakprioriteit);
v_ongeldig := 1;
END IF;
-- Controleer de startdatum
v_errormsg :=
'Fout bij controle startdatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjectstartjaar) = 4
THEN
v_taakobjectstartjaar := '01-01-' || v_taakobjectstartjaar;
END IF;
IF v_taakobjectstartjaar IS NOT NULL AND fac.safe_to_date (v_taakobjectstartjaar, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key, 'E', 'Startdatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjectstartjaar);
v_ongeldig := 1;
ELSE
v_taakobjectstartjaar_d := fac.safe_to_date(v_taakobjectstartjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de startdatum voor de Objectregisratiedatum ligt
v_errormsg :=
'Fout bij controle start- en objectregistratiedatum ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
SELECT ins_deel_aanmaak
INTO v_object_aanmaak
FROM ins_deel
WHERE ins_deel_key = v_deel_key ;
END IF;
-- Controleer de einddatum
v_errormsg :=
'Fout bij controle einddatum ';
-- In geval jaar-invoer op datum zetten..
IF LENGTH (v_taakobjecteindjaar) = 4
THEN
v_taakobjecteindjaar := '31-12-' || v_taakobjecteindjaar;
END IF;
IF v_taakobjecteindjaar IS NOT NULL AND fac.safe_to_date (v_taakobjecteindjaar, 'dd-mm-yyyy') IS NULL
THEN
fac.imp_writelog (
p_import_key, 'E', 'Einddatum ongeldige invoer - Regel wordt niet verwerkt.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - Datum csv: ' || v_taakobjecteindjaar);
v_ongeldig := 1;
ELSE
v_taakobjecteindjaar_d := fac.safe_to_date(v_taakobjecteindjaar, 'dd-mm-yyyy') ;
END IF;
-- Hier controleren of de taak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande taak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0
THEN
-- Eerst ins_srtdeel_code bepalen
SELECT d.ins_srtdeel_key, sd.ins_srtdeel_code
INTO v_ins_srtdeel_key, v_ins_srtdeel_code
FROM ins_deel d, ins_srtdeel sd
WHERE d.ins_deel_key = v_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_deel_verwijder IS NULL;
-- Vervolgens kijken of er al een taak op aangemaakt is
SELECT count(*)
INTO v_srtcontrole_teller
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60);
-- Zo ja, dan gaan we de srt_controle_key vullen
--- Ps. Komt soms bij heyday voor dat eenzelfde basistaak er meer dan 1 keer in staat (per ongeluk) en daarom pakken we hier dan de max(key).
IF v_srtcontrole_teller >0 THEN
SELECT max(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE LOWER(ins_srtcontrole_omschrijving) =
SUBSTR (
TRIM (
v_ins_srtdeel_code
|| ' - '
|| LOWER(v_taakomschrijving)),
1,
60) ;
ELSE -- Zo niet, dan is het dus geen bestaande standaard taak en gaan we straks in de update NIEUWE taak aanmaken
-- En passen dan ook maar gelijk taakomschrijving goed aan
v_errormsg := 'Fout bij aanpassen taakomschrijving ';
IF (LENGTH (TRIM(v_ins_srtdeel_code)) + 3 + LENGTH(TRIM(v_taakomschrijving))) > 60
THEN
fac.imp_writelog (
p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' wordt: ' || SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) );
END IF;
v_taakomschrijving := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || v_taakomschrijving), 1, 60) ;
END IF;
END IF;
-- Hier controleren of voor de bestaande taak ook de objecttaak al bestaat...
v_errormsg :=
'Fout controleren nieuwe of bestaande objecttaak ' || rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving ;
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL THEN
SELECT max(t.ins_srtcontroledl_xcp_key), max(t.ins_srtcontroledl_xcp_startdat)
INTO v_ins_srtcontroledl_xcp_key, v_taakobject_startjaar_d
FROM ins_srtcontroledl_xcp t
WHERE t.ins_srtcontrole_key = v_srtcontrole_key AND t.ins_deel_key = v_deel_key ;
END IF;
-- Hier controleren of alle verplichte velden voor de nieuwe objecttaak correct zijn gevuld
---- Dit zijn: Startdatum + Eenheid + Periode + Taakgroep(?) + Percentage (?) + Kosten (?)
v_errormsg := 'Fout controleren verplichte velden bij nieuwe objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_ins_srtcontroledl_xcp_key IS NULL THEN
-- startdatum mag ook leeg zijn, dan is het automatich object registratie + cyclus
-- IF v_taakobjectstartjaar IS NULL THEN
-- fac.imp_writelog (
-- p_import_key, 'E', 'Startdatum niet ingevuld - Regel wordt niet verwerkt.. ',
-- rec.fac_imp_file_index || ' - ' || v_objectomschrijving);
-- v_ongeldig := 1;
-- END IF;
IF v_taakobjecteenheid IS NULL or v_taakobjecteenheid NOT IN ('1', '2', '3', '4') THEN
fac.imp_writelog (
p_import_key, 'E', 'Geen of ongeldige eenheid gevonden - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjecteenheid);
v_ongeldig := 1;
END IF;
IF (v_taakobjectperiode IS NULL) OR (v_taakobjectperiode IS NOT NULL AND fac.safe_to_number (v_taakobjectperiode) IS NULL) THEN
fac.imp_writelog (
p_import_key, 'E', 'Geen of ongeldige taakobjectperiode - Regel wordt niet verwerkt ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakobjectperiode);
v_ongeldig := 1;
END IF;
END IF;
-- Hier controleren of er al geschiedenis op de objecttaak zit en de startdatum afwijkt van degene meegegeven in csv
v_errormsg :=
'Fout controleren geschiedenis op objecttaak ';
IF v_deel_key IS NOT NULL AND v_ongeldig = 0 AND v_srtcontrole_key IS NOT NULL AND v_ins_srtcontroledl_xcp_key IS NOT NULL THEN
v_taak_geschiedenis := 0;
SELECT count(*)
INTO v_taak_geschiedenis
FROM ins_deelsrtcontrole
WHERE ins_deel_key = v_deel_key and ins_srtcontrole_key = v_srtcontrole_key ;
IF v_taak_geschiedenis > 0 AND v_taakobjectstartjaar IS NOT NULL AND v_taakobjectstartjaar_d <> v_taakobject_startjaar_d
THEN
fac.imp_writelog (
p_import_key, 'W', 'Op deze objecttaak zit al geschiedenis - afwijkende startdatum zal niet aangepast worden.. ',
rec.fac_imp_file_index || ' - ' || v_objectomschrijving || ' - ' || v_taakomschrijving || ' - ' || v_taakobjectstartjaar_d || ' vs. ' || v_taakobject_startjaar_d) ;
END IF;
END IF;
-- Aangezien de taken altijd een startdatum hebben, en objecten niet altijd een aanmaakdatum, gaan we die hier gelijk trekken.
-- Daarna maken we de taak startdatum leeg, zodat de cyclus gaat lopen vanaf de bijgewerkte ins_deel_aanmaak.
-- Zo blijft het mogelijk om taken in de MJOB console te verslepen naar jaartallen eerder dan het aangegeven startjaar.
IF v_taakobjectstartjaar_d < SYSDATE
THEN
UPDATE ins_deel
SET ins_deel_aanmaak = v_taakobjectstartjaar_d
WHERE ins_deel_key = v_deel_key;
END IF;
-- v_taakobjectstartjaar_d := NULL;
-- Nu kunnen we de tussentabel vullen
v_errormsg :=
'Fout bij toevoegen regel aan tabel '
|| v_objectomschrijving;
IF v_ongeldig = 0
THEN
INSERT INTO tmp_imp_mjb (locatiecode,
objectomschrijving ,
taakcategorie,
taakomschrijving,
taakopmerking,
taakgroep,
taakprioriteit,
taakobjectpercentage,
taakobjectopmerking,
taakobjectperiode,
-- taakobjectstartjaar,
taakobjecteindjaar,
taakobjectmateriaal,
taakobjecteenheid,
taakdienst,
extra_veld4, -- Gebruiken voor taakgeschiedenis
extra_veld5, -- Gebruiken voor taakomschrijving_nieuw
deel_key,
discipline_key,
ismjob,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_key,
ins_srtdeel_key)
VALUES (v_locatiecode,
v_objectomschrijving,
v_taakcategorie,
v_taakomschrijving,
v_taakopmerking,
v_taakgroep,
v_taakprioriteit,
v_taakobjectpercentage,
v_taakobjectopmerking,
v_taakobjectperiode,
-- v_taakobjectstartjaar_d,
v_taakobjecteindjaar_d,
v_taakobjectmateriaal,
v_taakobjecteenheid,
v_taakdienst,
v_taak_geschiedenis,
v_taakomschrijving_nieuw,
v_deel_key,
v_discipline_key,
v_ismjob,
v_srtcontrole_key,
v_ins_srtcontroledl_xcp_key,
v_ins_srtdeel_key);
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END;
END LOOP;
-- Aantallen tellen voor logging
v_errormsg := 'Fout bij tellen aantallen voor logging ' ;
v_count_verwerk := 0 ; -- aantal te verwerken regels
v_count_n_taak := 0 ; -- aantal nieuw aan te maken basistaken
v_count_n_taakobject := 0 ; -- aantal nieuw aan te maken objecttaken
v_count_w_taak := 0 ; -- aantal bestaande (object)taken te wijzigen
SELECT count(*) INTO v_count_verwerk FROM tmp_imp_mjb ;
SELECT count(*) INTO v_count_n_taak FROM (SELECT DISTINCT(taakomschrijving) FROM tmp_imp_mjb WHERE ins_srtcontrole_key IS NULL) v ;
SELECT count(*) INTO v_count_n_taakobject FROM tmp_imp_mjb WHERE ins_srtcontroledl_xcp_key IS NULL ;
SELECT count(*) INTO v_count_w_taak FROM tmp_imp_mjb WHERE ins_srtcontrole_key IS NOT NULL AND ins_srtcontroledl_xcp_key IS NOT NULL ;
IF v_header_is_valid = 0
THEN
ROLLBACK;
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: Verkeerde header. Niet conform specs. ');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'IMPORT TAKEN: aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)'
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe taken: ' || TO_CHAR (v_count_n_taak)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken: ' || TO_CHAR (v_count_n_taakobject)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande, te wijzigen (object)taken: ' || TO_CHAR (v_count_w_taak),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
v_hint := v_errormsg;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_hint);
END mnnl_import_insp_mjob;
/
CREATE OR REPLACE PROCEDURE mnnl_update_insp_mjob (p_import_key IN NUMBER)
AS
CURSOR c_n -- nieuwe taken en objecttaken aanmaken..
IS
SELECT i.*
FROM tmp_imp_mjb i
WHERE i.ins_srtcontrole_key IS NULL;
CURSOR c_no -- nieuwe objecttaken aanmaken..
IS
SELECT i.*
FROM tmp_imp_mjb i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NULL;
CURSOR c_m -- bestaande taak en/of objecttaak wijzigen
IS
SELECT i.*
FROM tmp_imp_mjb i
WHERE i.ins_srtcontrole_key IS NOT NULL AND i.ins_srtcontroledl_xcp_key IS NOT NULL;
v_errormsg VARCHAR2 (4000);
v_error_hint VARCHAR2 (4000);
oracle_err_mes VARCHAR2 (4000);
oracle_err_num VARCHAR2 (4000);
v_aanduiding VARCHAR2 (1000);
v_aanduiding_objecttaak VARCHAR2 (1000);
v_ongeldig NUMBER (1);
v_ins_srtcontrole_key NUMBER (10);
v_dienst_key NUMBER (10);
v_taak_al_aangemaakt NUMBER(10);
v_count_verwerk NUMBER := 0 ; -- aantal verwerkte records
v_count_n_taak NUMBER := 0 ; -- aantal nieuw aangemaakte basistaken
v_count_n_taakobject NUMBER := 0 ; -- aantal nieuw aangemaakte objecttaken
v_count_w_taak NUMBER := 0 ; -- aantal bestaande basistaken gewijzigd
v_count_w_taakobject NUMBER := 0 ; -- aantal bestaande object-taken gewijzigd
v_count_taak NUMBER := 0 ;
v_count_taakobject NUMBER := 0 ;
-- Velden
v_taakomschrijving VARCHAR2(1000);
v_ins_srtdeel_code VARCHAR2(10);
v_taakomschrijving_nieuw VARCHAR2(1000);
v_taakopmerking VARCHAR2(1000);
v_taakgroep VARCHAR2(1000);
v_taakdienst_key NUMBER(10);
v_taakdienst VARCHAR2(1000);
v_taakprioriteit NUMBER(3);
v_percentage NUMBER(3);
v_objecttaakopmerking VARCHAR2(1000);
v_eenheid NUMBER(3);
v_periode NUMBER(3);
v_startjaar DATE;
v_eindjaar DATE;
v_materiaalkosten NUMBER(10);
BEGIN
v_ongeldig := 0;
FOR rec IN c_n
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- Eenzelfde basistaak kan meerdere keren in CSV zitten.
-- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is.
-- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis
v_errormsg := 'Opzoeken basistaak ' || v_aanduiding;
v_taak_al_aangemaakt:=0;
SELECT count(*)
INTO v_taak_al_aangemaakt
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
-- Als basistaak al in loop was aangemaakt nog even de key erbij zoeken
IF v_taak_al_aangemaakt >0
THEN
SELECT max(ins_srtcontrole_key)
INTO v_ins_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtcontrole_omschrijving = rec.taakomschrijving;
END IF;
-- Basistaak aanmaken
IF v_taak_al_aangemaakt = 0
THEN
-- We gaan we eerst op zoek naar de dienst.
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
RETURNING prs_dienst_key INTO v_dienst_key;
END;
END IF;
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taak := v_count_n_taak +1 ;
v_errormsg := 'Aanmaken taak ' || v_aanduiding;
INSERT INTO ins_srtcontrole (
ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode,
ins_srtcontrole_level,
ins_srtcontrole_opmerking,
prs_dienst_key)
VALUES (
rec.ins_srtdeel_key,
'S',
rec.taakomschrijving,
rec.discipline_key,
NULL,
0,
rec.taakobjecteenheid,
1,
COALESCE (rec.taakprioriteit, '0'),
rec.taakopmerking,
v_dienst_key)
RETURNING ins_srtcontrole_key
INTO v_ins_srtcontrole_key;
fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport ');
END IF;
-- Nu kunnen we de objectaak aanmaken
v_count_n_taakobject := v_count_n_taakobject +1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| v_ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || ']';
INSERT INTO ins_srtcontroledl_xcp (
ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_groep,
ins_srtcontroledl_xcp_opmerk)
VALUES (
rec.deel_key,
v_ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking
);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_no
LOOP
BEGIN
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- We kunnen direct objectaak aanmaken
v_count_verwerk := v_count_verwerk + 1 ;
v_count_n_taakobject := v_count_n_taakobject +1 ;
v_errormsg := 'Aanmaken taak object ' || v_aanduiding || ' ['
|| rec.deel_key || '|'
|| rec.ins_srtcontrole_key || '|'
|| rec.taakobjectperiode || '|'
|| rec.taakobjecteenheid || '|'
|| fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) || '|'
|| ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.'))) || '|'
|| rec.taakgroep || '|'
|| rec.taakobjectopmerking || ']';
INSERT INTO ins_srtcontroledl_xcp (
ins_deel_key,
ins_srtcontrole_key,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_materia,
ins_srtcontroledl_xcp_perc,
ins_srtcontroledl_xcp_groep,
ins_srtcontroledl_xcp_opmerk)
VALUES (
rec.deel_key,
rec.ins_srtcontrole_key,
rec.taakobjectperiode,
rec.taakobjecteenheid,
fac.safe_to_number (
REPLACE (rec.taakobjectmateriaal, ',', '.')),
ROUND(fac.safe_to_number (
REPLACE (rec.taakobjectpercentage, ',', '.'))),
rec.taakgroep,
rec.taakobjectopmerking);
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
FOR rec IN c_m
LOOP
BEGIN
v_count_verwerk := v_count_verwerk + 1 ;
v_aanduiding :=
rec.objectomschrijving
|| ' / '
|| rec.taakcategorie
|| ' - '
|| rec.taakomschrijving;
-- Basis-taak - Taakomschrijving
v_errormsg := 'Fout taakomschrijving wijzigen ';
v_taakomschrijving := '' ; -- huidige taakomschrijving
v_taakomschrijving_nieuw := '' ;
IF rec.extra_veld5 IS NOT NULL
THEN
-- Eerst de objectsrt-code ophalen en nieuwe taakomschrijving bepalen
SELECT ins_srtdeel_code_upper
INTO v_ins_srtdeel_code
FROM ins_srtdeel
WHERE ins_srtdeel_key = rec.ins_srtdeel_key ;
v_taakomschrijving_nieuw := SUBSTR (TRIM (v_ins_srtdeel_code || ' - ' || rec.extra_veld5), 1, 60) ;
-- Huidige omschrijving ophalen
SELECT ins_srtcontrole_omschrijving
INTO v_taakomschrijving
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakomschrijving <> v_taakomschrijving_nieuw
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_omschrijving = v_taakomschrijving_nieuw
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakomschrijving: ' || v_taakomschrijving || '-->' || v_taakomschrijving_nieuw);
END IF;
END IF;
-- Basis-taak - Taakopmerking
v_errormsg := 'Fout taakopmerking wijzigen ';
SELECT ins_srtcontrole_opmerking
INTO v_taakopmerking
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF v_taakopmerking IS NULL THEN v_taakopmerking := '<leeg>' ;
END IF;
IF v_taakopmerking <> rec.taakopmerking AND rec.taakopmerking IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_opmerking = rec.taakopmerking
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Taakopmerking: ' || v_taakopmerking || '-->' || rec.taakopmerking);
END IF;
-- Basis-taak - Taakprioriteit
v_errormsg := 'Fout prioriteit wijzigen ';
SELECT ins_srtcontrole_level
INTO v_taakprioriteit
FROM ins_srtcontrole
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
IF rec.taakprioriteit IS NOT NULL AND v_taakprioriteit <> fac.safe_to_number(rec.taakprioriteit)
THEN
UPDATE ins_srtcontrole
SET ins_srtcontrole_level = fac.safe_to_number(rec.taakprioriteit)
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd Prioriteit: ' || v_taakprioriteit || '-->' || rec.taakprioriteit);
END IF;
-- Basis-taak - Dienst
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
v_taakdienst_key := NULL ;
v_taakdienst := '<leeg>' ;
-- Eerst huidige dienstkey en omschrijving ophalen
BEGIN
SELECT max(t.prs_dienst_key), max(d.prs_dienst_omschrijving)
INTO v_taakdienst_key, v_taakdienst
FROM ins_srtcontrole t, prs_dienst d
WHERE t.ins_srtcontrole_key = rec.ins_srtcontrole_key AND t.prs_dienst_key = d.prs_dienst_key AND t.prs_dienst_key IS NOT NULL ;
IF v_taakdienst IS NULL THEN v_taakdienst := '<leeg>' ; END IF;
IF v_taakdienst_key IS NULL THEN v_taakdienst_key := -1 ; END IF;
END;
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
v_dienst_key := NULL;
IF rec.taakdienst IS NOT NULL
THEN
BEGIN
SELECT prs_dienst_key
INTO v_dienst_key
FROM prs_dienst
WHERE UPPER(prs_dienst_omschrijving) = UPPER(SUBSTR(rec.taakdienst, 1,60));
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_dienst (prs_dienst_omschrijving)
VALUES (SUBSTR(rec.taakdienst,1,60))
RETURNING prs_dienst_key INTO v_dienst_key;
END;
END IF;
IF v_taakdienst_key <> v_dienst_key AND rec.taakdienst IS NOT NULL
THEN
UPDATE ins_srtcontrole
SET prs_dienst_key = v_dienst_key
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
v_count_taak:= 1 ;
fac.trackaction('CTRSUP', rec.ins_srtcontrole_key, 4, NULL, 'Gewijzigd taakdienst: ' || v_taakdienst || '-->' || rec.taakdienst);
END IF;
IF v_count_taak = 1 THEN
v_count_w_taak := v_count_w_taak +1 ;
END IF;
-- Gaan nu de object-taken aanpassen
v_aanduiding_objecttaak := rec.taakcategorie || ' - ' || v_ins_srtdeel_code || rec.taakomschrijving || CHR(13) || CHR(10) ;
-- Object-taak - Percentage
v_errormsg := 'Fout percentage wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
INTO v_percentage
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectpercentage IS NOT NULL AND v_percentage <> rec.taakobjectpercentage
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_perc = ROUND(fac.safe_to_number (REPLACE (rec.taakobjectpercentage, ',', '.')))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Percentage: (' || v_percentage || ') --> ' || rec.taakobjectpercentage );
END IF;
-- Object-taak - Opmerking
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
SELECT ins_srtcontroledl_xcp_opmerk
INTO v_objecttaakopmerking
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_objecttaakopmerking IS NULL THEN v_objecttaakopmerking := '<leeg>' ;
END IF;
IF rec.taakobjectopmerking IS NOT NULL AND v_objecttaakopmerking <> rec.taakobjectopmerking
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_opmerk = rec.taakobjectopmerking
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakopmerking: (' || v_objecttaakopmerking || ') --> ' || rec.taakobjectopmerking );
END IF;
-- Object-taak - Eenheid
v_errormsg := 'Fout eenheid wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_eenheid,0)
INTO v_eenheid
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjecteenheid IS NOT NULL AND fac.safe_to_number(rec.taakobjecteenheid) <> v_eenheid AND rec.ismjob = 0
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eenheid = fac.safe_to_number(rec.taakobjecteenheid)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eenheid: (' || v_eenheid || ') --> ' || rec.taakobjecteenheid );
END IF;
-- Object-taak - Periode
v_errormsg := 'Fout periode wijzigen ';
SELECT COALESCE(ins_srtcontroledl_xcp_periode,0)
INTO v_periode
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF rec.taakobjectperiode IS NOT NULL AND fac.safe_to_number(rec.taakobjectperiode) <> v_periode
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_periode = fac.safe_to_number(rec.taakobjectperiode)
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Periode: (' || v_periode || ') --> ' || rec.taakobjectperiode );
END IF;
-- Object-taak - Taakgroep
v_errormsg := 'Fout taakgroep wijzigen ';
SELECT ins_srtcontroledl_xcp_groep
INTO v_taakgroep
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_taakgroep IS NULL THEN v_taakgroep := '<leeg>' ;
END IF;
IF v_taakgroep <> rec.taakgroep AND rec.taakgroep IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_groep = rec.taakgroep
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Taakgroep: (' || v_taakgroep || ') --> ' || rec.taakgroep );
END IF;
-- Object-taak - Eindjaar
v_errormsg := 'Fout eindjaar wijzigen ';
SELECT ins_srtcontroledl_xcp_eind
INTO v_eindjaar
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
-- IF v_eindjaar IS NULL THEN v_eindjaar := TO_DATE(01-01-1900, 'DD-MM-YYYY'); END IF;
IF (v_eindjaar IS NULL and rec.taakobjecteindjaar IS NOT NULL) OR (v_eindjaar IS NOT NULL AND rec.taakobjecteindjaar IS NOT NULL AND v_eindjaar <> rec.taakobjecteindjaar)
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_eind = rec.taakobjecteindjaar
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Eindjaar: (' || v_eindjaar || ') --> ' || rec.taakobjecteindjaar );
END IF;
-- Object-taak - Kosten
v_errormsg := 'Fout kosten wijzigen ';
SELECT COALESCE(max(ins_srtcontroledl_xcp_materia),0)
INTO v_materiaalkosten
FROM ins_srtcontroledl_xcp
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
IF v_materiaalkosten <> fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.')) AND rec.taakobjectmateriaal IS NOT NULL
THEN
UPDATE ins_srtcontroledl_xcp
SET ins_srtcontroledl_xcp_materia = fac.safe_to_number (REPLACE (rec.taakobjectmateriaal, ',', '.'))
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key ;
v_count_taakobject:= 1 ;
fac.trackaction ('INSUPD', rec.deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, v_aanduiding_objecttaak || 'Kosten: (' || v_materiaalkosten || ') --> ' || rec.taakobjectmateriaal );
END IF;
IF v_count_taakobject = 1 THEN
v_count_w_taakobject := v_count_w_taakobject + 1 ;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_error_hint := v_errormsg;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_error_hint);
v_ongeldig := 1;
END;
v_aanduiding := 'Einde loop ' || v_aanduiding;
END LOOP;
v_ongeldig := 0;
IF v_ongeldig = 0
THEN
COMMIT;
fac.imp_writelog (
p_import_key,
'S',
'IMPORT TAKEN: aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe taken ingelezen: ' || TO_CHAR (v_count_n_taak)
|| CHR(13) || CHR(10)
|| 'Aantal nieuwe objecttaken ingelezen: ' || TO_CHAR (v_count_n_taakobject)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande basistaken gewijzigd: ' || TO_CHAR (v_count_w_taak)
|| CHR(13) || CHR(10)
|| 'Aantal bestaande objecttaken gewijzigd: ' || TO_CHAR (v_count_w_taakobject),
'');
ELSE
ROLLBACK;
END IF;
END;
/
-- 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).
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
)
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')
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
prs_perslid p,
prs_v_afdeling a,
bez_afspraak ba,
bez_bezoekers bb,
( SELECT rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel,
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) -- Werkplekken/Parkeerplekken (per 2023/voorjaar)
GROUP BY rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_dirtlevel) 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_activiteit_key = ra.res_activiteit_key
AND rrr.res_activiteit_key IN (250, 390) -- Werkplekken/Parkeerplekken
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 = 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,
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,
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,
--bez_afspraak ba,
--bez_bezoekers bb,
( 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
WHERE rrr.res_activiteit_key = ra.res_activiteit_key
AND rrr.res_activiteit_key IN (250, 390) -- Werkplekken/Parkeerplekken
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 = ba.res_rsv_ruimte_key(+)
--AND ba.bez_afspraak_key = bb.bez_afspraak_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;
-- 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,
x.vomschrijving 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 = 988 -- ITL Servicedesk (Request)
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))
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,
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,
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
-- 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 DAILY afgebroken!', v_errormsg);
COMMIT;
END;
/
------ 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