-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database -- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust) -- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group) -- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM' -- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt. -- (dit in tegenstelling tot sample_xxxx.sql) DEFINE thisfile = 'PNBR.SQL' DEFINE dbuser = 'PNBR' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust ('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PROCEDURE pnbr_imp_writelog (p_import_key IN NUMBER, p_severity IN VARCHAR2, p_errormsg IN VARCHAR2, p_errorhint IN VARCHAR2) AS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN fac.imp_writelog (p_import_key, p_severity, p_errormsg, p_errorhint); COMMIT; END; / ------------ Tijdelijke view voor logging CREATE OR REPLACE VIEW pnbr_v_cursor_noti_bezoek ( bez_bezoekers_key, bez_afspraak_key, bez_afspraak_datum, bez_afspraak_tijd, gastheer_email, res_reservering_key, res_rsv_ruimte_omschrijving, fac_srtnotificatie_code ) AS SELECT b.bez_bezoekers_key, a.bez_afspraak_key, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd, bk.bez_kenmerkwaarde_waarde email, res_reservering_key, res_rsv_ruimte_omschrijving, DECODE ( (SELECT bk2.bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde bk2 WHERE bk2.bez_bezoekers_key = b.bez_bezoekers_key AND bk2.bez_kenmerk_key = 1020), 1, DECODE (rrr.res_rsv_ruimte_key, NULL, 'CUST03', 'CUST01'), -- uitnodiging voor gastheer alleen als aangevinkt bij bezoek en gekoppeld aan reservering. 'CUST03') fac_srtnotificatie_code FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr, bez_kenmerkwaarde bk WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) AND bk.bez_bezoekers_key = b.bez_bezoekers_key AND bk.bez_kenmerk_key = 1001 AND ( --Herinnering 3 dagen van te voren is uitgeschakeld. PNBR#31869 --TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 4, 'DAGEN')) = -- TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum, -- 0, -- 'UREN')) -- OR EXISTS -- email adres is als kenmerk toegevoegd (SELECT kw.bez_kenmerkwaarde_key FROM bez_kenmerkwaarde kw WHERE kw.bez_kenmerk_key = 1001 -- emailadres externe bezoeker AND kw.bez_bezoekers_key = b.bez_bezoekers_key AND TRUNC (kw.bez_kenmerkwaarde_aanmaak) = TRUNC (SYSDATE)) OR EXISTS -- aankomstdatum of tijdstip is aangepast (SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'BEZUPD' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = a.bez_afspraak_key AND fac_tracking_oms LIKE '%Aankomst:%' AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE)) OR EXISTS -- afspraak is aangemaakt (SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'BEZMUT' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = a.bez_afspraak_key AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE))) UNION ALL -- bedank/feedbackbrief SELECT b.bez_bezoekers_key, a.bez_afspraak_key, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd, bk.bez_kenmerkwaarde_waarde email, res_reservering_key, res_rsv_ruimte_omschrijving, 'CUST02' fac_srtnotificatie_code FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr, bez_kenmerkwaarde bk, bez_kenmerkwaarde bk2 WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND bk.bez_bezoekers_key = b.bez_bezoekers_key AND bk.bez_kenmerk_key = 1001 AND bk2.bez_bezoekers_key = b.bez_bezoekers_key AND bk2.bez_kenmerk_key = 1020 AND TRUNC ( fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum, 1, 'DAGEN')) = TRUNC (SYSDATE); CREATE OR REPLACE PACKAGE pnbr AS TYPE t_cursor IS REF CURSOR; PROCEDURE update_vertr_bezoeker (p_bezoekers_key NUMBER); PROCEDURE noti_bezoek; PROCEDURE noti_bezoek_gastheer; FUNCTION get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2; FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2; PROCEDURE set_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER, p_kenmerk_waarde IN VARCHAR2, p_history IN NUMBER); PROCEDURE export_werkplekbezetting; PROCEDURE pnbr_rap_top10_doorlooptijd (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); PROCEDURE pnbr_rap_aant_tijdsblok (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); PROCEDURE pnbr_rap_top10_melders (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); PROCEDURE pnbr_rap_rap_aant_na_17uur (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); PROCEDURE pnbr_rap_rap_aant_weekend (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); END; / CREATE OR REPLACE PACKAGE BODY pnbr AS PROCEDURE update_vertr_bezoeker (p_bezoekers_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); BEGIN -- Overschrijf de naam en het emailadres UPDATE bez_bezoekers b SET bez_afspraak_naam = 'Vertrouwelijk', bez_bezoekers_email = NULL, bez_afspraak_bedrijf = 'Vertrouwelijk' WHERE b.bez_bezoekers_key = p_bezoekers_key; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('VERTR_BEZOEKER', 'E', v_errormsg, ''); END; /* PROCEDURE noti_bezoek AS -- cust01 brief naar cursusleider bij reserververingen -- cust02 dank/feedbackbrief naar cursusleider van reservering -- cust03 brief naar deelnemer aan reservering en los bezoek CURSOR c IS SELECT b.bez_bezoekers_key, a.bez_afspraak_key, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd, bk.bez_kenmerkwaarde_waarde email, res_reservering_key, res_rsv_ruimte_omschrijving, DECODE ( (SELECT bk2.bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde bk2 WHERE bk2.bez_bezoekers_key = b.bez_bezoekers_key AND bk2.bez_kenmerk_key = 1020), 1, DECODE (rrr.res_rsv_ruimte_key, NULL, 'CUST03', 'CUST01'), -- uitnodiging voor gastheer alleen als aangevinkt bij bezoek en gekoppeld aan reservering. 'CUST03') fac_srtnotificatie_code FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr, bez_kenmerkwaarde bk WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) AND bk.bez_bezoekers_key = b.bez_bezoekers_key AND bk.bez_kenmerk_key = 1001 AND ( --Herinnering 3 dagen van te voren is uitgeschakeld. PNBR#31869 --TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 4, 'DAGEN')) = -- TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum, -- 0, -- 'UREN')) -- OR EXISTS -- email adres is als kenmerk toegevoegd (SELECT kw.bez_kenmerkwaarde_key FROM bez_kenmerkwaarde kw WHERE kw.bez_kenmerk_key = 1001 -- emailadres externe bezoeker AND kw.bez_bezoekers_key = b.bez_bezoekers_key AND TRUNC ( kw.bez_kenmerkwaarde_aanmaak) = TRUNC (SYSDATE)) OR EXISTS -- aankomstdatum of tijdstip is aangepast (SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'BEZUPD' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = a.bez_afspraak_key AND fac_tracking_oms LIKE '%Aankomst:%' AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE)) OR EXISTS -- afspraak is aangemaakt (SELECT fac_tracking_refkey FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'BEZMUT' AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = a.bez_afspraak_key AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE))) UNION ALL -- bedank/feedbackbrief SELECT b.bez_bezoekers_key, a.bez_afspraak_key, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd, bk.bez_kenmerkwaarde_waarde email, res_reservering_key, res_rsv_ruimte_omschrijving, 'CUST02' fac_srtnotificatie_code FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr, bez_kenmerkwaarde bk, bez_kenmerkwaarde bk2 WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND bk.bez_bezoekers_key = b.bez_bezoekers_key AND bk.bez_kenmerk_key = 1001 AND bk2.bez_bezoekers_key = b.bez_bezoekers_key AND bk2.bez_kenmerk_key = 1020 AND TRUNC ( fac.datumtijdplusuitvoertijd ( a.bez_afspraak_datum, 1, 'DAGEN')) = TRUNC (SYSDATE); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_srtnotificatie_key NUMBER (10); v_onderwerp VARCHAR2 (100); BEGIN -- cleanup kenmerklink DELETE bez_kenmerkwaarde WHERE bez_kenmerk_key = 1000; -- link naar reservering FOR rec IN c LOOP IF rec.res_reservering_key IS NOT NULL THEN INSERT INTO bez_kenmerkwaarde (bez_bezoekers_key, bez_kenmerk_key, bez_kenmerkwaarde_waarde) VALUES (rec.bez_bezoekers_key, 1000, rec.res_reservering_key); IF rec.fac_srtnotificatie_code = 'CUST02' -- feedbackbrief THEN v_onderwerp := 'Feedback: ' || rec.res_rsv_ruimte_omschrijving; ELSE v_onderwerp := 'Uitnodiging: ' || rec.res_rsv_ruimte_omschrijving; END IF; ELSE v_onderwerp := 'Afspraak ' || rec.datum || ' om ' || rec.tijd || ' uur'; END IF; SELECT fac_srtnotificatie_key INTO v_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = rec.fac_srtnotificatie_code; INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit) VALUES (v_srtnotificatie_key, 2, rec.email, v_onderwerp, rec.bez_afspraak_key, rec.bez_bezoekers_key, 2); IF rec.fac_srtnotificatie_code = 'CUST02' -- feedbackbrief THEN INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, prs_perslid_key_receiver, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit) VALUES (v_srtnotificatie_key, 2, 3593, -- kopie naar Rob van der Plas v_onderwerp, rec.bez_afspraak_key, rec.bez_bezoekers_key, 2); END IF; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('NOTI_BEZOEKERS', 'E', v_errormsg, ''); END; */ -- Met 62081 (Inrichten bezoekersmodule + aanzetten) zijn de wensen wat aangepast -- Ivm de wat grillige organisatie binnen PNB voorlopig de oorspronkelijke notificaties ook maar even laten staan PROCEDURE noti_bezoek AS -- cust03 brief naar deelnemer aan reservering en los bezoek CURSOR c IS SELECT b.bez_bezoekers_key, a.bez_afspraak_key, TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (a.bez_afspraak_datum, 'hh24:mi') tijd, b.bez_bezoekers_email email, res_reservering_key, res_rsv_ruimte_omschrijving, 'CUST03' fac_srtnotificatie_code FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr WHERE b.bez_afspraak_key = a.bez_afspraak_key AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) AND b.bez_bezoekers_email IS NOT NULL AND TRUNC (a.bez_afspraak_datum) < TRUNC (SYSDATE) + 4 AND TRUNC (a.bez_afspraak_datum) > TRUNC (SYSDATE) - 1 AND NOT EXISTS -- (SELECT kw.bez_kenmerkwaarde_key FROM bez_kenmerkwaarde kw WHERE kw.bez_kenmerk_key = 1001 -- time stamp waarop notificatie verstuurd is AND kw.bez_bezoekers_key = b.bez_bezoekers_key); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_srtnotificatie_key NUMBER (10); v_onderwerp VARCHAR2 (100); BEGIN FOR rec IN c LOOP v_onderwerp := 'Uw bezoek op ' || rec.datum || ' aan het Provinciehuis Noord-Brabant'; SELECT fac_srtnotificatie_key INTO v_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = rec.fac_srtnotificatie_code; INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit) VALUES (v_srtnotificatie_key, 2, rec.email, v_onderwerp, rec.bez_afspraak_key, rec.bez_bezoekers_key, 2); -- een timestamp zetten dat de mail verstuurd is pnbr.set_kenmerk ('BEZ', 1001, rec.bez_bezoekers_key, TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'), 0); END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('NOTI_BEZOEKERS', 'E', v_errormsg, ''); END; PROCEDURE noti_bezoek_gastheer AS -- Notificatie die naar de gastheer verzonden wordt 15 minuten voordat het bezoek verwacht wordt. oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_srtnotificatie_key NUMBER (10); v_van DATE; v_tot DATE; v_onderwerp VARCHAR2 (100); BEGIN -- cleanup kenmerklink SELECT GREATEST ( COALESCE ( fac.safe_to_date (MAX (fac_usrdata_omschr), 'yyyymmdd hh24miss'), SYSDATE - 10), SYSDATE + 1 / (24 * 12)) -- 5 min voor aanvang INTO v_van FROM fac_usrdata WHERE fac_usrdata_code = 'BEZ_NOT_LASTTIME'; v_tot := SYSDATE + 3 / (24 * 12); -- 15 min voor aanvang SELECT fac_srtnotificatie_key INTO v_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'BEZMAI'; INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit, prs_perslid_key_receiver) SELECT v_srtnotificatie_key, 2, h.prs_perslid_email, 'Herinnering: ' || DECODE ( rrr.res_rsv_ruimte_key, NULL, 'Reservering ' || rrr.res_reservering_key || ': over 15 minuten arriveren deelnemers voor bijeenkomst: ' || rrr.res_rsv_ruimte_omschrijving, 'Over 15 minuten arriveert bezoek voor uw afspraak'), a.bez_afspraak_key, NULL, 2, h.prs_perslid_key FROM bez_afspraak a, prs_perslid h, res_rsv_ruimte rrr WHERE a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND bez_afspraak_datum > v_van AND bez_afspraak_datum <= v_tot AND a.bez_afspraak_host_key = h.prs_perslid_key AND h.prs_perslid_email IS NOT NULL; UPDATE fac_usrdata SET fac_usrdata_omschr = TO_CHAR (v_tot, 'yyyymmdd hh24miss') WHERE fac_usrdata_code = 'BEZ_NOT_LASTTIME'; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('NOTI_BEZOEKERS_GASTHEER', 'E', v_errormsg, ''); END; FUNCTION get_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER) RETURN VARCHAR2 AS v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE; v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE; v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE; BEGIN CASE p_module WHEN 'MLD' THEN SELECT mld_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM mld_v_aanwezigkenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk WHERE km.mld_melding_key = p_link_key AND km.mld_kenmerk_key = p_kenmerk_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key; WHEN 'CNT' THEN SELECT cnt_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, kc.cnt_kenmerkcontract_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM cnt_kenmerkcontract kc, cnt_kenmerk k, cnt_srtkenmerk sk WHERE kc.cnt_contract_key = p_link_key AND kc.cnt_kenmerk_key = p_kenmerk_key AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key; WHEN 'ALG' THEN SELECT alg_kenmerk_kenmerktype, k.fac_kenmerkdomein_key, aogk.alg_onrgoedkenmerk_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM alg_onrgoedkenmerk aogk, alg_kenmerk k WHERE aogk.alg_onrgoed_key = p_link_key AND aogk.alg_kenmerk_key = p_kenmerk_key AND aogk.alg_kenmerk_key = k.alg_kenmerk_key; WHEN 'INS' THEN SELECT sk.ins_srtkenmerk_kenmerktype, sk.fac_kenmerkdomein_key, ikd.ins_kenmerkdeel_waarde INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk WHERE ikd.ins_deel_key = p_link_key AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ikd.ins_kenmerk_key = p_kenmerk_key AND ikd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; END CASE; RETURN get_kenmerkwaarde (v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde); END; PROCEDURE set_kenmerk (p_module IN VARCHAR2, p_kenmerk_key IN NUMBER, p_link_key IN NUMBER, p_kenmerk_waarde IN VARCHAR2, p_history IN NUMBER) AS v_count NUMBER; v_niveau VARCHAR2 (1); BEGIN CASE p_module WHEN 'PRS' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT prs_kenmerk_niveau INTO v_niveau FROM prs_kenmerk WHERE prs_kenmerk_key = p_kenmerk_key; SELECT COUNT (*) INTO v_count FROM prs_kenmerklink WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE prs_kenmerklink WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; ELSE UPDATE prs_kenmerklink SET prs_kenmerklink_waarde = p_kenmerk_waarde WHERE prs_link_key = p_link_key AND prs_kenmerk_key = p_kenmerk_key AND prs_kenmerklink_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO prs_kenmerklink (prs_kenmerk_key, prs_link_key, prs_kenmerklink_niveau, prs_kenmerklink_waarde) VALUES (p_kenmerk_key, p_link_key, v_niveau, p_kenmerk_waarde); END IF; END IF; WHEN 'ALG' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT alg_kenmerk_niveau INTO v_niveau FROM alg_kenmerk WHERE alg_kenmerk_key = p_kenmerk_key; SELECT COUNT (*) INTO v_count FROM alg_onrgoedkenmerk WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE alg_onrgoedkenmerk WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; ELSE UPDATE alg_onrgoedkenmerk SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde WHERE alg_onrgoed_key = p_link_key AND alg_kenmerk_key = p_kenmerk_key AND alg_onrgoedkenmerk_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO alg_onrgoedkenmerk ( alg_kenmerk_key, alg_onrgoed_key, alg_onrgoed_niveau, alg_onrgoedkenmerk_waarde) VALUES (p_kenmerk_key, p_link_key, v_niveau, p_kenmerk_waarde); END IF; END IF; WHEN 'BEZ' THEN SELECT COUNT (*) INTO v_count FROM bez_kenmerkwaarde WHERE bez_bezoekers_key = p_link_key AND bez_kenmerk_key = p_kenmerk_key AND bez_kenmerkwaarde_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE bez_kenmerkwaarde WHERE bez_bezoekers_key = p_link_key AND bez_kenmerk_key = p_kenmerk_key AND bez_kenmerkwaarde_verwijder IS NULL; ELSE UPDATE bez_kenmerkwaarde SET bez_kenmerkwaarde_waarde = p_kenmerk_waarde WHERE bez_bezoekers_key = p_link_key AND bez_kenmerk_key = p_kenmerk_key AND bez_kenmerkwaarde_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO bez_kenmerkwaarde ( bez_kenmerk_key, bez_bezoekers_key, bez_kenmerkwaarde_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; WHEN 'MLD' THEN -- melding- of opdrachtkenmerk? SELECT mld_kenmerk_niveau INTO v_niveau FROM mld_kenmerk WHERE mld_kenmerk_key = p_kenmerk_key; CASE v_niveau WHEN 'O' THEN SELECT COUNT (*) INTO v_count FROM mld_kenmerkopdr WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE mld_kenmerkopdr WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; ELSE UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = p_kenmerk_waarde WHERE mld_opdr_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkopdr_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO mld_kenmerkopdr ( mld_kenmerk_key, mld_opdr_key, mld_kenmerkopdr_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; WHEN 'S' THEN SELECT COUNT (*) INTO v_count FROM mld_kenmerkmelding WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE mld_kenmerkmelding WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; ELSE UPDATE mld_kenmerkmelding SET mld_kenmerkmelding_waarde = p_kenmerk_waarde WHERE mld_melding_key = p_link_key AND mld_kenmerk_key = p_kenmerk_key AND mld_kenmerkmelding_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO mld_kenmerkmelding ( mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; END CASE; WHEN 'FIN' THEN -- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt -- opgeslagen (da's dus redundant..?) SELECT fin_kenmerk_type INTO v_niveau FROM fin_kenmerk WHERE fin_kenmerk_key = p_kenmerk_key; IF v_niveau = 'F' THEN SELECT COUNT (*) INTO v_count FROM fin_kenmerkfactuur WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE fin_kenmerkfactuur WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; ELSE UPDATE fin_kenmerkfactuur SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde WHERE fin_factuur_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactuur_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO fin_kenmerkfactuur ( fin_kenmerk_key, fin_factuur_key, fin_kenmerkfactuur_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; ELSE -- Kenmerk bij factuurregel SELECT COUNT (*) INTO v_count FROM fin_kenmerkfactregel WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE fin_kenmerkfactregel WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; ELSE UPDATE fin_kenmerkfactregel SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde WHERE fin_factuurregel_key = p_link_key AND fin_kenmerk_key = p_kenmerk_key AND fin_kenmerkfactregel_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO fin_kenmerkfactregel ( fin_kenmerk_key, fin_factuurregel_key, fin_kenmerkfactregel_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; END IF; WHEN 'RES' THEN -- res_rsv_ruimte kenmerk SELECT COUNT (*) INTO v_count FROM res_kenmerkwaarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; IF v_count = 1 THEN IF p_kenmerk_waarde IS NULL THEN DELETE res_kenmerkwaarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; ELSE UPDATE res_kenmerkwaarde SET res_kenmerkreservering_waarde = p_kenmerk_waarde WHERE res_rsv_ruimte_key = p_link_key AND res_kenmerk_key = p_kenmerk_key AND res_kenmerkwaarde_verwijder IS NULL; END IF; ELSE IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL THEN INSERT INTO res_kenmerkwaarde ( res_kenmerk_key, res_rsv_ruimte_key, res_kenmerkreservering_waarde) VALUES (p_kenmerk_key, p_link_key, p_kenmerk_waarde); END IF; END IF; END CASE; END; FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2, p_kenmerkdomein_key NUMBER, p_kenmerk_waarde VARCHAR2) RETURN VARCHAR2 AS v_result VARCHAR2 (2000); BEGIN IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN v_result := fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde); ELSIF p_kenmerk_type = 'D' THEN v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd'); ELSE v_result := p_kenmerk_waarde; END IF; RETURN v_result; END; PROCEDURE export_werkplekbezetting AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); CURSOR c IS SELECT * FROM (SELECT * FROM ( SELECT d.ins_deel_key, r.alg_ruimte_key, TRUNC (stat_his.ins_deel_statedate) DATUM, 'BEZET' waarde, SUM (stat_his.duur_status) MINUTEN FROM ins_deel d, alg_ruimte r, (SELECT ranking, ins_deel_key, ins_deel_state, ins_deel_statedate, ( ins_deel_statedate - LAG (ins_deel_statedate) OVER ( PARTITION BY ins_deel_key ORDER BY ranking)) * -1440 AS duur_status --- duur van de status in minuten FROM (SELECT ins_deel_key, ins_deel_state, ins_deel_statedate, RANK () OVER ( PARTITION BY ins_deel_key ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking FROM ins_deel_state_history) rank_state) stat_his WHERE d.ins_deel_key = stat_his.ins_deel_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies AND stat_his.ins_deel_state = 1 -- voor de management info houden we het simpel: wat bezet is bewaren we GROUP BY d.ins_deel_key, r.alg_ruimte_key, TRUNC (stat_his.ins_deel_statedate) UNION ALL SELECT d.ins_deel_key, r.alg_ruimte_key, TRUNC (stat_his.ins_deel_statedate) DATUM, 'STORING' waarde, SUM (stat_his.duur_status) MINUTEN FROM ins_deel d, alg_ruimte r, (SELECT ranking, ins_deel_key, ins_deel_state, ins_deel_statedate, ( ins_deel_statedate - LAG (ins_deel_statedate) OVER ( PARTITION BY ins_deel_key ORDER BY ranking)) * -1440 AS duur_status --- duur van de status in minuten FROM (SELECT ins_deel_key, ins_deel_state, ins_deel_statedate, RANK () OVER ( PARTITION BY ins_deel_key ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking FROM ins_deel_state_history) rank_state) stat_his WHERE d.ins_deel_key = stat_his.ins_deel_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies AND stat_his.ins_deel_state = 99 -- voor de management info houden we het simpel: wat in storing is bewaren we GROUP BY d.ins_deel_key, r.alg_ruimte_key, TRUNC (stat_his.ins_deel_statedate))) WHERE TRUNC (DATUM) = TRUNC (SYSDATE) - 1; BEGIN FOR rec IN c LOOP INSERT INTO pnbr_werkplekbezetting (ins_deel_key, alg_ruimte_key, ins_deel_state_date, status, duur_status) VALUES (rec.ins_deel_key, rec.alg_ruimte_key, rec.datum, rec.waarde, rec.minuten); END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('NOTI_BEZOEKERS', 'E', v_errormsg, ''); END; PROCEDURE pnbr_rap_top10_doorlooptijd (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT ranking, vakgroep, standaardmelding, gem_doorloopt_uren FROM ( SELECT vg.ins_discipline_omschrijving AS vakgroep, sm.mld_stdmelding_omschrijving AS standaardmelding, ROUND ( SUM ( COALESCE (sla.doorlooptijd_werkdgn * 8, sla.doorlooptijd_werkuren)) / COUNT (m.mld_melding_key), 1) gem_doorloopt_uren, DENSE_RANK () OVER ( ORDER BY (ROUND ( SUM ( COALESCE ( sla.doorlooptijd_werkdgn * 8, sla.doorlooptijd_werkuren)) / COUNT (m.mld_melding_key), 1)) DESC) ranking FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline vg, mld_v_udr_melding sla WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = vg.ins_discipline_key AND m.mld_melding_key = sla.melding_key AND m.mld_melding_datum <= v_datum_tot AND m.mld_melding_datum >= v_datum_van GROUP BY vg.ins_discipline_omschrijving, vg.ins_discipline_key, sm.mld_stdmelding_omschrijving, sm.mld_stdmelding_key) ranking_stdmelding WHERE ranking_stdmelding.ranking <= 10; END; PROCEDURE pnbr_rap_aant_tijdsblok (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT COUNT (m.mld_melding_key) aant_mld, SUM ( CASE WHEN m.tijd >= 0 AND m.tijd < 7 THEN 1 ELSE 0 END) AS nacht, ROUND ( ( SUM ( CASE WHEN m.tijd >= 0 AND m.tijd < 7 THEN 1 ELSE 0 END) / COUNT (m.mld_melding_key)) * 100, 1) perc_nacht, SUM ( CASE WHEN m.tijd >= 7 AND m.tijd < 12 THEN 1 ELSE 0 END) AS ochtend, ROUND ( ( SUM ( CASE WHEN m.tijd >= 7 AND m.tijd < 12 THEN 1 ELSE 0 END) / COUNT (m.mld_melding_key)) * 100, 1) perc_ochtend, SUM ( CASE WHEN m.tijd >= 12 AND m.tijd < 18 THEN 1 ELSE 0 END) AS middag, ROUND ( ( SUM ( CASE WHEN m.tijd >= 12 AND m.tijd < 18 THEN 1 ELSE 0 END) / COUNT (m.mld_melding_key)) * 100, 1) perc_middag, SUM (CASE WHEN m.tijd >= 18 THEN 1 ELSE 0 END) AS avond, ROUND ( ( SUM (CASE WHEN m.tijd >= 18 THEN 1 ELSE 0 END) / COUNT (m.mld_melding_key)) * 100, 1) perc_avond FROM (SELECT m.mld_melding_key, m.mld_melding_datum, TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) tijd, TO_CHAR (m.mld_melding_datum, 'DAY') dag, TO_CHAR (m.mld_melding_datum, 'd') dag_week FROM mld_melding m WHERE m.mld_melding_datum <= v_datum_tot AND m.mld_melding_datum >= v_datum_van AND m.mld_melding_datum - TRUNC (m.mld_melding_datum) > 0) m; END; PROCEDURE pnbr_rap_top10_melders (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT ranking, prs_perslid_naam_friendly, aant_mld FROM ( SELECT p.prs_perslid_key, p.prs_perslid_naam_friendly, COUNT (m.mld_melding_key) aant_mld, DENSE_RANK () OVER (ORDER BY COUNT (m.mld_melding_key) DESC) ranking FROM mld_melding m, prs_v_perslid_fullnames_all p WHERE m.prs_perslid_key_voor = p.prs_perslid_key AND m.mld_melding_datum <= v_datum_tot AND m.mld_melding_datum >= v_datum_van GROUP BY p.prs_perslid_key, p.prs_perslid_naam_friendly) ranking_users WHERE ranking_users.ranking <= 10; END; PROCEDURE pnbr_rap_rap_aant_na_17uur (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT COUNT (m.mld_melding_key) aant_mld, SUM (CASE WHEN m.tijd > 17 THEN 1 ELSE 0 END) AS na_17uur, ROUND ( ( SUM (CASE WHEN m.tijd > 17 THEN 1 ELSE 0 END) / COUNT (m.mld_melding_key)) * 100, 1) perc_na_17uur FROM (SELECT m.mld_melding_key, m.mld_melding_datum, TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) tijd, TO_CHAR (m.mld_melding_datum, 'DAY') dag, TO_CHAR (m.mld_melding_datum, 'd') dag_week FROM mld_melding m WHERE m.mld_melding_datum <= v_datum_tot AND m.mld_melding_datum >= v_datum_van AND m.mld_melding_datum - TRUNC (m.mld_melding_datum) > 0) m; END; PROCEDURE pnbr_rap_rap_aant_weekend (user_key IN NUMBER, p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor) AS v_datum_van DATE; v_datum_tot DATE; BEGIN v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy'); v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy'); OPEN p_cursor FOR SELECT COUNT (m.mld_melding_key) AANT_MLD, SUM ( CASE WHEN ( DAG_WEEK = 1 -- zondag OR DAG_WEEK = 7 -- zaterdag OR (DAG_WEEK = 2 AND TIJD < 7) --- maandag voor 8 uur OR (DAG_WEEK = 6 AND TIJD > 17) -- vrijdag na 8 uur ) THEN 1 ELSE 0 END) AS AANT_WEEKEND FROM (SELECT m.mld_melding_key, m.mld_melding_datum, TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) tijd, DECODE (fac.getweekdaynum (m.mld_melding_datum), 2, 'maandag', 3, 'dinsdag', 4, 'woensdag', 5, 'donderdag', 6, 'vrijdag', 7, 'zaterdag', 1, 'zondag') AS dag, TO_CHAR (m.mld_melding_datum, 'd') dag_week FROM mld_melding m WHERE m.mld_melding_datum <= v_datum_tot AND m.mld_melding_datum >= v_datum_van AND m.mld_melding_datum - TRUNC (m.mld_melding_datum) > 0) m; END; END; / -- script om dagelijks terugkerende scripts aan te roepen. CREATE OR REPLACE PROCEDURE pnbr_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- notificatiejob om voor bezoekers. pnbr.noti_bezoek (); END; / -- script om 5-min terugkerende scripts aan te roepen. CREATE OR REPLACE PROCEDURE pnbr_select_five_min_task ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS BEGIN -- notificatiejob om bezoekers te notificeren naar de gastheer. pnbr.noti_bezoek_gastheer (); END; / --============================================================================= -- IMPORTFUNCTIES ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE pnbr_import_perslid_mut (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR (255); BEGIN v_seq_of_columns := '0;0;0;0;0;0;7;8;9;11;10;0;0;0;0;14;15;16;0;18;17;19;20;13;0;0;12;0;0;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46'; --- '0;0;0;0;0;0;7;8;9;11;10;0;0;0;0;13;14;15;0;17;16;18;19;12;0;0;0;0;0;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46'; prs.import_perslid ( p_import_key, v_seq_of_columns, 'LOCATIECODE;GEBOUWCODE;BOUWLAAGVOLGNUMMER;RUIMTENUMMER;WERKPLEKVOLGNUMMER;OMSCHRIJVING;AFDELINGSCODE;PERSOONACHTERNAAM;TUSSENVOEGSEL;VOORLETTERS;VOORNAAM;TELEFOONNR3;TITEL_AANHEF;TELEFOONNUMMER;MOBIEL;EMAIL;FUNCTIE;PERSONEELSNUMMER;LOGINNAAM;PASSWORD%'); -- we gebruikten kenmerk1 om tijdelijk de verdieping op te slaan. Bij PNBR kunnen namelijk letters in de verdieping staan. Deze -- proberen we eruit te werken zodat we op het laatst de verdieping weer om kunnen zetten. -- Zie Logcentre #63326: aanpassing personen import. De ruimte gegevens geven veel foutmeldingen. -- We nemen de locatie gegevens voorlopig niet meer over /* UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '01', alg_verdieping_volgnr = DECODE (prs_kenmerk1, 'B (Begane grond)', 0, 'P (Parkeerkuilniveau)', -1, fac.safe_to_number (SUBSTR (prs_kenmerk1, 12, 2))), alg_ruimte_nr = DECODE (UPPER (alg_ruimte_nr), 'FLEX', '_FLEX', alg_ruimte_nr) WHERE prs_kenmerk2 = 'Provinciehuis - toren' AND prs_kenmerk1 NOT LIKE 'Domein%'; -- Pas de ruimten van de nieuwbouw aan. UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '02', alg_verdieping_volgnr = fac.safe_to_number (SUBSTR (prs_kenmerk1, 12, 1)), alg_ruimte_nr = COALESCE (alg_ruimte_nr, '_FLEX') WHERE prs_kenmerk2 = 'Provinciehuis - nieuwbouw'; UPDATE fac_imp_perslid SET alg_locatie_code = 'PH', alg_gebouw_code = '01', alg_verdieping_volgnr = fac.safe_to_number (SUBSTR (prs_kenmerk1, 11, 2)) + 1, alg_ruimte_nr = '_FLEX' WHERE prs_kenmerk2 = 'Provinciehuis - toren' AND prs_kenmerk1 LIKE 'Domein%'; UPDATE fac_imp_perslid SET alg_locatie_code = 'OMWB', alg_gebouw_code = 'OMWB', alg_verdieping_volgnr = 1, alg_ruimte_nr = '1' WHERE prs_kenmerk2 = 'Omg.dienst West Brabant'; UPDATE fac_imp_perslid SET alg_locatie_code = '27', alg_gebouw_code = '27', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Rekenkamer Brabant/Limburg'; UPDATE fac_imp_perslid SET alg_locatie_code = 'ODZOB', alg_gebouw_code = 'ODZOB', alg_verdieping_volgnr = '1', alg_ruimte_nr = '1' WHERE prs_kenmerk2 = 'Omg.dienst Zuid-Oost Brabant'; UPDATE fac_imp_perslid SET alg_locatie_code = '26', alg_gebouw_code = '26', alg_verdieping_volgnr = '1', alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Eindhoven'; UPDATE fac_imp_perslid SET alg_locatie_code = 'BRU', alg_gebouw_code = 'BRU', alg_verdieping_volgnr = '1', alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Brussel'; UPDATE fac_imp_perslid SET alg_locatie_code = '23', alg_gebouw_code = '23', alg_verdieping_volgnr = '1', alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Het Noordbrabants museum'; UPDATE fac_imp_perslid SET alg_locatie_code = '51', alg_gebouw_code = '51', alg_verdieping_volgnr = '1', alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Kantoor Den Haag'; UPDATE fac_imp_perslid SET alg_locatie_code = 'ODBN', alg_gebouw_code = 'ODBN', alg_verdieping_volgnr = 1, alg_ruimte_nr = '1' WHERE prs_kenmerk2 = 'Omg.dienst Brabant Noord'; UPDATE fac_imp_perslid SET alg_locatie_code = '5', alg_gebouw_code = '5', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Steunpunt Eethen'; UPDATE fac_imp_perslid SET alg_locatie_code = '11', alg_gebouw_code = '11', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Steunpunt Helmond'; UPDATE fac_imp_perslid SET alg_locatie_code = '2', alg_gebouw_code = '2', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Steunpunt Oud Gastel'; UPDATE fac_imp_perslid SET alg_locatie_code = '07', alg_gebouw_code = '07', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Steunpunt Uden'; UPDATE fac_imp_perslid SET alg_locatie_code = '09', alg_gebouw_code = '09', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Steunpunt Westerhoven'; UPDATE fac_imp_perslid SET alg_locatie_code = '--', alg_gebouw_code = '--', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Streekhuis Boven Dommel'; UPDATE fac_imp_perslid SET alg_locatie_code = '---', alg_gebouw_code = '---', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Streekhuis Kempenland'; UPDATE fac_imp_perslid SET alg_locatie_code = '41', alg_gebouw_code = '41', alg_verdieping_volgnr = 1, alg_ruimte_nr = '01' WHERE prs_kenmerk2 = 'Streekhuis Liempde'; UPDATE fac_imp_perslid SET alg_ruimte_nr = 'HJZ' WHERE alg_ruimte_nr LIKE 'HJZ%'; */ COMMIT; END pnbr_import_perslid_mut; / CREATE OR REPLACE PROCEDURE pnbr_update_perslid_mut (p_import_key IN NUMBER) IS c_fielddelimitor VARCHAR2 (1) := ';'; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_sleutelkolom VARCHAR2 (200); v_count NUMBER (10); v_ongeldig NUMBER (1); v_count_update NUMBER (10); v_count_error NUMBER (10); v_count_tot NUMBER (10); v_wpcount_error NUMBER (10); -- v_perslid_key NUMBER (10); v_perslid_nr VARCHAR2 (100); v_afdeling_key NUMBER (10); v_srtperslid_key NUMBER (10); v_prs_perslid_naam VARCHAR2 (200); v_prs_perslid_tussenvoegsel VARCHAR2 (200); v_kostenplaats_nr VARCHAR2 (100); v_locatie_key NUMBER (10); v_gebouw_key NUMBER (10); v_verdieping_key NUMBER (10); v_ruimte_key NUMBER (10); v_space VARCHAR2 (1); -- OS LOGIN komt meerdere keren voor met verschillende personeelsnrs -- Van de personen die dubbel voorkomen in de import (nieuw account is aangemaakt maar oude is nog niet vervallen) zal slechts 1 regel gebruikt worden om de persoonsgegevens bij te werken. -- Dat zal op basis van het reeds bestaande personeelsnummer moeten zijn. CURSOR c_del_dubbele IS SELECT ip.prs_perslid_nr FROM fac_imp_perslid ip WHERE EXISTS ( SELECT i.prs_perslid_oslogin FROM fac_imp_perslid i WHERE i.prs_perslid_oslogin IS NOT NULL AND i.prs_perslid_oslogin = ip.prs_perslid_oslogin GROUP BY i.prs_perslid_oslogin HAVING COUNT (i.prs_perslid_nr) > 1) AND NOT EXISTS (SELECT p.prs_perslid_nr FROM prs_perslid p WHERE p.prs_perslid_nr = ip.prs_perslid_nr); -- In de import is een oslogin bekend -- Dan moet de persoon eigenlijk op login gematch worden -- Maar de mdw is alleen nog maar met persnr bekend in Facilitor CURSOR c_oslogin IS SELECT ip.prs_perslid_oslogin, ip.prs_perslid_nr FROM fac_imp_perslid ip, prs_perslid p WHERE p.prs_perslid_nr = ip.prs_perslid_nr AND ip.prs_perslid_oslogin IS NOT NULL AND ip.prs_perslid_nr IS NOT NULL AND p.prs_perslid_oslogin IS NULL AND NOT EXISTS (SELECT pl.prs_perslid_nr FROM prs_perslid pl WHERE pl.prs_perslid_oslogin IS NOT NULL AND ip.prs_perslid_nr = pl.prs_perslid_nr); --- bijwerken stamtabel met functies als er nieuwe functies in de import zitten CURSOR c_imp_functie IS SELECT MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving FROM fac_imp_perslid i WHERE NOT EXISTS (SELECT prs_srtperslid_key FROM prs_srtperslid sp WHERE UPPER (sp.prs_srtperslid_omschrijving) = UPPER (i.prs_srtperslid_omschrijving) AND prs_srtperslid_verwijder IS NULL) GROUP BY UPPER (prs_srtperslid_omschrijving); --- import van perslid CURSOR c_imp_perslid IS SELECT * FROM fac_imp_perslid ip; -- Set kenmerk 'Datum uitdienst' als pers met persnr niet meer in de import file zit -- Let op: oslogin kan er wel in zitten, persoon heeft dan nieuw persnummer! -- Account wordt dan na 2 maanden definitief beeindigd CURSOR c_mark IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_nr IS NOT NULL AND i.prs_perslid_nr IS NULL AND p.prs_perslid_verwijder IS NULL AND NOT EXISTS (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink kl WHERE kl.prs_kenmerklink_verwijder IS NULL AND prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1020) -- datum uitdienst ORDER BY 2; --- Daadwerkelijk beeindigen van account als deze 2 maanden geleden is gemarkeerd CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_nr IS NOT NULL AND i.prs_perslid_nr IS NULL AND p.prs_perslid_verwijder IS NULL AND ADD_MONTHS ( COALESCE ( (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy') FROM prs_kenmerklink kl WHERE kl.prs_kenmerklink_verwijder IS NULL AND prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1020), SYSDATE), 2) < SYSDATE ORDER BY 2; -- Kenmerk veld 'Datum uitdienst' leegmaken bij perslid als deze toch weer in de import tabel zit -- Mdw is waarschijnlijk weer in dienst CURSOR c_renew IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE ( p.prs_perslid_oslogin = i.prs_perslid_oslogin OR p.prs_perslid_nr = i.prs_perslid_nr) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder IS NULL AND EXISTS (SELECT prs_kenmerklink_waarde FROM prs_kenmerklink kl WHERE kl.prs_kenmerklink_verwijder IS NULL AND prs_link_key = p.prs_perslid_key AND prs_kenmerk_key = 1020) -- datum uitdienst ORDER BY 2; CURSOR c_tel3 IS SELECT p.prs_perslid_key, REPLACE (p.prs_kenmerk1, '-', '') tel3, p.prs_perslid_nr FROM fac_imp_perslid p WHERE p.prs_kenmerk1 IS NOT NULL AND p.prs_kenmerk1 LIKE '06%' AND p.prs_perslid_key IS NOT NULL AND LENGTH (REPLACE (p.prs_kenmerk1, '-', '')) = 10 AND NOT EXISTS (SELECT kl.prs_kenmerklink_waarde FROM prs_kenmerk k, prs_kenmerklink kl WHERE k.prs_kenmerk_key = 1100 AND kl.prs_kenmerk_key = k.prs_kenmerk_key AND kl.prs_link_key = p.prs_perslid_key); BEGIN v_count_update := 0; v_count_tot := 0; v_count_error := 0; v_wpcount_error := 0; SELECT COUNT (*) INTO v_count FROM fac_imp_perslid; IF v_count < 1000 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; -- Personen die 2x voorkomen in de importtabel op basis van oslogin -- Daarvan moet 1 record uit de importtabel verwijderd worden FOR rec IN c_del_dubbele LOOP v_aanduiding := rec.prs_perslid_nr; v_errorhint := 'Verwijder records van personen die 2 keer voorkomen'; BEGIN DELETE fac_imp_perslid i WHERE i.prs_perslid_nr = rec.prs_perslid_nr; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; -- tbv logging END; END LOOP; -- Personen die nu een login in de import hebben maar voorheen alleen een persnr -- Dan zetten we eerst de login even goed zodat daarna via login bijgewerkt kan worden FOR rec IN c_oslogin LOOP v_aanduiding := rec.prs_perslid_nr || ' - ' || rec.prs_perslid_oslogin; v_errorhint := 'Aanpassen login van mensen die nog geen login hadden'; BEGIN UPDATE prs_perslid p SET p.prs_perslid_oslogin = rec.prs_perslid_oslogin WHERE p.prs_perslid_nr = rec.prs_perslid_nr AND p.prs_perslid_verwijder IS NULL; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; -- tbv logging END; END LOOP; -- eerst alle functies up to date FOR rec IN c_imp_functie LOOP BEGIN v_aanduiding := ''; v_errormsg := ''; v_errorhint := ''; v_count_tot := v_count_tot + 1; v_aanduiding := rec.prs_srtperslid_omschrijving; v_errorhint := 'Zoek in verwijderde functies'; SELECT MAX (prs_srtperslid_key) INTO v_srtperslid_key FROM prs_srtperslid sp WHERE UPPER (sp.prs_srtperslid_omschrijving) = UPPER (rec.prs_srtperslid_omschrijving); IF v_srtperslid_key IS NULL THEN v_errorhint := 'Fout bij toevoegen functie'; INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving) VALUES (rec.prs_srtperslid_omschrijving); ELSE v_errorhint := 'Reanimeer functie'; UPDATE prs_srtperslid SET prs_srtperslid_verwijder = NULL WHERE prs_srtperslid_key = v_srtperslid_key; END IF; COMMIT; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; -- tbv logging END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'Personeelsfunctie: toegevoegde regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Personeelsfunctie: toegevoegde regels met foutmelding: ' || TO_CHAR (v_count_error), ''); COMMIT; -- logging v_count_update := 0; v_count_tot := 0; v_count_error := 0; ---------------------------------------------------- --- BEGIN STANDAARD IMPORT ------------------------- ---------------------------------------------------- FOR rec IN c_imp_perslid LOOP BEGIN v_aanduiding := ''; v_errormsg := ''; v_errorhint := ''; v_count_tot := v_count_tot + 1; v_aanduiding := rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '| '; v_errormsg := ''; v_errorhint := 'Fout bij bepalen functie'; SELECT prs_srtperslid_key INTO v_srtperslid_key FROM prs_srtperslid WHERE prs_srtperslid_verwijder IS NULL AND UPPER (prs_srtperslid_omschrijving) = UPPER (rec.prs_srtperslid_omschrijving); IF rec.prs_perslid_oslogin IS NOT NULL THEN v_sleutelkolom := 'LOGIN'; ELSE v_sleutelkolom := 'NR'; END IF; v_errorhint := 'Afdeling niet gevonden [' || rec.prs_afdeling_naam || ']'; SELECT a.prs_afdeling_key INTO v_afdeling_key FROM prs_v_aanwezigafdeling_boom b, prs_afdeling a WHERE UPPER (a.prs_afdeling_naam) = UPPER (rec.prs_afdeling_naam) AND a.prs_afdeling_verwijder IS NULL AND a.prs_afdeling_key = b.prs_afdeling_key; v_space := ''; -- kijk hoe we met partnernamen moeten omgaan: IF rec.prs_perslid_naamgebruik_code = 0 THEN -- normaal gebruik van naam. Eigen naam wordt gebruikt v_prs_perslid_naam := rec.prs_perslid_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel; ELSIF rec.prs_perslid_naamgebruik_code = 1 THEN -- personen die de geboortenaam van de partner icm de eigen naam willen gebruiken IF rec.prs_perslid_tussenvoegsel IS NOT NULL THEN v_space := ' '; END IF; v_prs_perslid_naam := rec.prs_perslid_partner_naam || ' - ' || rec.prs_perslid_tussenvoegsel || v_space || rec.prs_perslid_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_partner_tussenv; ELSIF rec.prs_perslid_naamgebruik_code = 2 THEN -- personen die de geboortenaam van de partner willen gebruiken v_prs_perslid_naam := rec.prs_perslid_partner_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_partner_tussenv; ELSIF rec.prs_perslid_naamgebruik_code = 3 THEN -- personen die de eigen naam icm de geboortenaam van de partner willen gebruiken IF rec.prs_perslid_partner_tussenv IS NOT NULL THEN v_space := ' '; END IF; v_prs_perslid_naam := rec.prs_perslid_naam || ' - ' || rec.prs_perslid_partner_tussenv || v_space || rec.prs_perslid_partner_naam; v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel; END IF; IF LENGTH (v_prs_perslid_naam) > 60 THEN v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60); fac.imp_writelog ( p_import_key, 'W', rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '| ' || 'Samengestelde achternaam is te lang', 'Aanduiding wordt afgebroken tot [' || v_prs_perslid_naam || ']'); END IF; -- v_sleutelkolom -- NR = prs_perslid_nr -- LOGIN = prs_perslid_oslogin v_errorhint := 'Kijken of de persoon al bestaat'; SELECT MAX (prs_perslid_key), COUNT (*) INTO v_perslid_key, v_count FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND ( ( UPPER (v_sleutelkolom) = 'NR' AND UPPER (prs_perslid_nr) = UPPER (rec.prs_perslid_nr)) OR ( UPPER (v_sleutelkolom) = 'LOGIN' AND UPPER (prs_perslid_oslogin) = UPPER (rec.prs_perslid_oslogin))); IF (v_count = 0) THEN v_errorhint := 'Fout bij toevoegen persoon'; INSERT INTO prs_perslid (prs_perslid_module, prs_srtperslid_key, prs_afdeling_key, prs_perslid_naam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_voornaam, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_email, prs_perslid_nr, prs_perslid_geslacht, prs_perslid_titel, prs_perslid_dienstverband, prs_perslid_oslogin, prs_perslid_apikey) VALUES ('PRS', v_srtperslid_key, v_afdeling_key, v_prs_perslid_naam, rec.prs_perslid_voorletters, v_prs_perslid_tussenvoegsel, rec.prs_perslid_voornaam, rec.prs_perslid_telefoonnr, rec.prs_perslid_mobiel, rec.prs_perslid_email, rec.prs_perslid_nr, rec.prs_perslid_geslacht, rec.prs_perslid_titel, rec.prs_perslid_dienstverband, rec.prs_perslid_oslogin, rec.prs_perslid_apikey) RETURNING prs_perslid_key INTO v_perslid_key; prs.setpassword (v_perslid_key, rec.prs_perslid_wachtwoord); COMMIT; v_count_update := v_count_update + 1; ELSIF v_count = 1 THEN UPDATE prs_perslid SET prs_srtperslid_key = v_srtperslid_key, prs_afdeling_key = v_afdeling_key, prs_perslid_naam = v_prs_perslid_naam, prs_perslid_voorletters = rec.prs_perslid_voorletters, prs_perslid_tussenvoegsel = v_prs_perslid_tussenvoegsel, prs_perslid_voornaam = rec.prs_perslid_voornaam, prs_perslid_nr = rec.prs_perslid_nr, prs_perslid_dienstverband = rec.prs_perslid_dienstverband, prs_perslid_geslacht = rec.prs_perslid_geslacht, prs_perslid_titel = rec.prs_perslid_titel, prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr, prs_perslid_mobiel = rec.prs_perslid_mobiel, prs_perslid_email = rec.prs_perslid_email, prs_perslid_oslogin = rec.prs_perslid_oslogin, prs_perslid_apikey = rec.prs_perslid_apikey WHERE prs_perslid_key = v_perslid_key; IF rec.prs_perslid_wachtwoord IS NOT NULL THEN prs.setpassword (v_perslid_key, rec.prs_perslid_wachtwoord); END IF; END IF; -- Voor CUST-postprocessing (van de kenmerken) is het handig te onthouden: UPDATE fac_imp_perslid SET prs_perslid_key = v_perslid_key WHERE fac_import_key = rec.fac_import_key AND fac_imp_file_index = rec.fac_imp_file_index; COMMIT; -- persoon in ieder geval toegevoegd. v_aanduiding := rec.prs_perslid_nr || '|' || rec.prs_perslid_naam || '|' || rec.prs_perslid_voornaam || '|' || rec.alg_locatie_code || '|' || rec.alg_gebouw_code || '|' || rec.alg_verdieping_volgnr || '|' || rec.alg_ruimte_nr || ' - '; v_locatie_key := NULL; v_gebouw_key := NULL; v_verdieping_key := NULL; v_ruimte_key := NULL; v_errorhint := 'Fout bij bepalen locatie'; SELECT MAX (alg_locatie_key) INTO v_locatie_key FROM alg_v_aanweziglocatie WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code); v_errorhint := 'Fout bij bepalen gebouw'; SELECT MAX (alg_gebouw_key) INTO v_gebouw_key FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_code) = UPPER (rec.alg_gebouw_code) AND alg_locatie_key = v_locatie_key; v_errorhint := 'Fout bij bepalen verdieping'; SELECT MAX (alg_verdieping_key) INTO v_verdieping_key FROM alg_v_aanwezigverdieping WHERE UPPER (alg_verdieping_volgnr) = UPPER (rec.alg_verdieping_volgnr) AND alg_gebouw_key = v_gebouw_key; v_errorhint := 'Fout bij bepalen beoogde ruimte'; SELECT MAX (alg_ruimte_key) INTO v_ruimte_key FROM alg_v_aanwezigruimte r WHERE r.alg_ruimte_upper_nr = UPPER (rec.alg_ruimte_nr) AND r.alg_verdieping_key = v_verdieping_key; -- standaard ruimte moet door cust gedeelte van deFout bij bepalen beoogde ruimte import ingevuld worden. -- als er een locatie ingevuld is willen we ook een ruimte vinden. IF v_ruimte_key IS NULL AND rec.alg_locatie_code IS NOT NULL THEN fac.imp_writelog ( p_import_key, 'W', v_aanduiding || ' Ruimte kan niet gevonden worden', 'Controleer locatie,gebouw en verdieping'); END IF; -- fouten bij het bepalen van de werkplek worden als waarschuwing weergegeven. BEGIN v_errorhint := 'Fout bij het aanpassen van de werkplek'; PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'A'); EXCEPTION WHEN OTHERS THEN v_wpcount_error := v_wpcount_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, v_errorhint); END; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; -- tbv logging END; END LOOP; fac.imp_writelog ( p_import_key, 'S', 'Persoon: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Persoon: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), ''); fac.imp_writelog ( p_import_key, 'S', 'Werkplek: verwerkte regels met foutmelding: ' || TO_CHAR (v_wpcount_error), ''); -- ken iedereen een profiel toe UPDATE prs_perslid SET fac_profiel_key = 1 WHERE fac_profiel_key IS NULL; --- PNBR#72332: telefoonnr 3 opnemen indien deze aanwezig. FOR rec IN c_tel3 LOOP BEGIN prs.upsertkenmerk (1100, rec.prs_perslid_key, rec.tel3); fac.imp_writelog ( p_import_key, 'I', 'Telefoonnr 3 toegevoegd [' || rec.prs_perslid_nr || ']', ''); END; END LOOP; FOR rec IN c_renew LOOP BEGIN prs.upsertkenmerk (1020, rec.prs_perslid_key, NULL); fac.imp_writelog ( p_import_key, 'I', 'Uitdienstdatum is verwijderd [' || rec.prs_perslid_naam_full || ']', ''); END; END LOOP; FOR rec IN c_mark LOOP BEGIN PRS.upsertkenmerk (1020, rec.prs_perslid_key, TO_CHAR (SYSDATE, 'dd-mm-yyyy')); fac.imp_writelog ( p_import_key, 'I', 'Uitdienstdatum wordt gezet [' || rec.prs_perslid_naam_full || ']', ''); UPDATE prs_perslid SET prs_perslid_email = NULL WHERE rec.prs_perslid_key = prs_perslid_key; END; END LOOP; FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_perslidkostenplaats_boeken) SELECT prs_perslid_key, 1 FROM prs_v_aanwezigperslid p WHERE NOT EXISTS (SELECT pk.prs_perslid_key FROM prs_perslidkostenplaats pk WHERE p.prs_perslid_key = pk.prs_perslid_key); -- we gaan conflicten in de login notificeren naar Menno Udo (key = 3371) SELECT COUNT (*) INTO v_count FROM imp_log WHERE fac_import_key = p_import_key AND imp_log_omschrijving LIKE '%PRS_C_PRS_PERSLID_OSLOGIN%'; -- we notificeren alleen op maandag IF v_count > 0 AND TO_CHAR (SYSDATE, 'D') = 2 THEN INSERT INTO fac_notificatie (fac_notificatie_status, fac_notificatie_oms, prs_perslid_key_sender, prs_perslid_key_receiver) VALUES ( 2, 'Aantal geimporteerde gebruikers met conflict in de login: ' || v_count, 4, 3371); END IF; END pnbr_update_perslid_mut; / CREATE OR REPLACE PROCEDURE pnbr_import_organisatie_mut ( p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count NUMBER; v_ongeldig NUMBER (1); v_mode NUMBER (1); v_aanduiding VARCHAR2 (200); v_all_null BOOLEAN; v_count_error NUMBER (10); v_count_tot NUMBER (10); v_count_import NUMBER (10); -- De importvelden: v_bedrijf_naam VARCHAR2 (256); v_afdeling_naam VARCHAR2 (256); v_afdeling_naam_parent VARCHAR2 (256); v_afdeling_omschrijving VARCHAR2 (256); v_kostenplaats VARCHAR2 (256); -- PRS_BEDRIJF CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM imp_log WHERE fac_import_key = p_import_key; DELETE FROM fac_imp_organisatie; COMMIT; v_count_error := 0; header_is_valid := 0; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_errormsg := 'Fout FETCH te importeren rij'; v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam); fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent); fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam); fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving); fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats); v_aanduiding := v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| '; IF (header_is_valid = 0) THEN IF UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM' AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; v_bedrijf_naam := TRIM (v_bedrijf_naam); IF LENGTH (v_bedrijf_naam) > 60 THEN v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Bedrijf-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']'); END IF; -- v_afdeling_naam := TRIM (v_afdeling_naam); IF LENGTH (v_afdeling_naam) > 10 THEN v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Afdeling-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'); END IF; -- v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent); IF LENGTH (v_afdeling_naam_parent) > 10 THEN v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Afdeling-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'); END IF; -- v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving); IF LENGTH (v_afdeling_omschrijving) > 60 THEN v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Afdelingsomschrijving is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'); END IF; v_kostenplaats := LTRIM (v_kostenplaats, '0'); v_all_null := (v_bedrijf_naam IS NULL) AND (v_afdeling_naam IS NULL) AND (v_afdeling_naam_parent IS NULL) AND (v_afdeling_omschrijving IS NULL); -- Insert geformatteerde import record IF v_ongeldig = 0 THEN v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']'; INSERT INTO fac_imp_organisatie ( prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_naam_parent, prs_afdeling_omschrijving, prs_kostenplaats_nr) VALUES (v_bedrijf_naam, v_afdeling_naam, v_afdeling_naam_parent, v_afdeling_omschrijving, v_kostenplaats); v_count_import := v_count_import + 1; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Geen geldige headerregel aanwezig'); ELSE fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog ( p_import_key, 'S', 'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import), ''); END IF; -- De top elementen in de import hebben een parent die wijst naar -- een niet bestaande afdeling. Daarom maken we die maar leeg. UPDATE fac_imp_organisatie i SET prs_afdeling_naam_parent = NULL WHERE NOT EXISTS (SELECT prs_afdeling_naam FROM fac_imp_organisatie i2 WHERE i.prs_afdeling_naam_parent = i2.prs_afdeling_naam); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); END pnbr_import_organisatie_mut; / CREATE OR REPLACE PROCEDURE pnbr_update_organisatie_mut ( p_import_key IN NUMBER) AS CURSOR c IS SELECT i.*, a.prs_afdeling_key FROM fac_imp_organisatie i, prs_afdeling a WHERE i.prs_afdeling_naam = a.prs_afdeling_naam(+); v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); oracle_err_mes VARCHAR2 (150); currentversion fac_module.fac_module_version%TYPE; v_aanduiding VARCHAR (100); v_prs_kostenplaats_oms PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_OMSCHRIJVING%TYPE; v_prs_bedrijf_key NUMBER; v_prs_afd_parent_key NUMBER; v_prs_kostenplaats_key NUMBER; v_prs_afdeling_key NUMBER; v_prs_afd_niveau_parent NUMBER; v_count NUMBER; v_newcount NUMBER; v_oldcount NUMBER; v_impcount NUMBER; BEGIN SELECT MAX (fac_module_version) INTO currentversion FROM fac_module; fac.imp_writelog (p_import_key, 'I', 'Facilitor afdeling import version ' || currentversion, '$Revision$'); -- How many active records are now present? SELECT COUNT (*) INTO v_oldcount FROM prs_afdeling WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1) AND prs_afdeling_verwijder IS NULL; -- How many active records are imported? SELECT COUNT (*) INTO v_impcount FROM fac_imp_organisatie; IF v_impcount < 50 THEN fac.imp_writelog ( p_import_key, 'E', 'Het verschil tussen de actieve afdelingen (' || TO_CHAR (v_oldcount) || ') en geimporteerde aantallen (' || TO_CHAR (v_impcount) || ') is te groot', 'Zie Specificatie'); RETURN; END IF; FOR rec IN c LOOP v_aanduiding := rec.prs_afdeling_naam; v_errorhint := 'Kijk of bedrijf al bestaat'; -- Bestaat het bedrijf al? BEGIN SELECT prs_bedrijf_key INTO v_prs_bedrijf_key FROM prs_bedrijf WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam) AND prs_bedrijf_verwijder IS NULL; v_errorhint := 'Kijk of kostenplaats al bestaat'; v_prs_kostenplaats_key := NULL; BEGIN SELECT prs_kostenplaats_key INTO v_prs_kostenplaats_key FROM prs_kostenplaats WHERE prs_kostenplaats_verwijder IS NULL AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr; -- Komt deze kostenplaats ook misschien vaker voor? SELECT COUNT (prs_kostenplaats_nr) INTO v_count FROM fac_imp_organisatie WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr; IF v_count > 1 THEN -- zo ja, dan pakken we de eerste omschrijving die we in het importbestand tegenkomen. FOR rec_k IN (SELECT prs_afdeling_omschrijving FROM fac_imp_organisatie WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr) LOOP v_prs_kostenplaats_oms := rec_k.prs_afdeling_omschrijving; EXIT; END LOOP; ELSE v_prs_kostenplaats_oms := rec.prs_afdeling_omschrijving; END IF; UPDATE prs_kostenplaats SET prs_kostenplaats_omschrijving = v_prs_kostenplaats_oms WHERE prs_kostenplaats_key = v_prs_kostenplaats_key; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'Nieuwe kostenplaats toevoegen'; IF rec.prs_kostenplaats_nr IS NOT NULL THEN INSERT INTO prs_kostenplaats ( prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module) VALUES (rec.prs_kostenplaats_nr, rec.prs_afdeling_omschrijving, 'PRS') RETURNING prs_kostenplaats_key INTO v_prs_kostenplaats_key; END IF; END; v_errorhint := 'Kijk of parent bestaat'; IF rec.prs_afdeling_naam_parent IS NOT NULL THEN SELECT prs_afdeling_key INTO v_prs_afd_parent_key FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL AND prs_afdeling_naam = rec.prs_afdeling_naam_parent; ELSE v_prs_afd_parent_key := NULL; END IF; v_errorhint := 'Zoek het niveau van de parent'; IF v_prs_afd_parent_key IS NOT NULL THEN SELECT prs_kenmerklink_waarde INTO v_prs_afd_niveau_parent FROM prs_kenmerklink WHERE prs_kenmerk_key = 1081 -- afdelingsniveau AND prs_link_key = v_prs_afd_parent_key; ELSE v_prs_afd_niveau_parent := 0; END IF; v_prs_afd_niveau_parent := v_prs_afd_niveau_parent + 1; IF rec.prs_afdeling_key IS NULL THEN -- toevoegen afdeling v_errorhint := 'Toevoegen afdeling'; INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_parentkey, prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_key) VALUES (v_prs_bedrijf_key, NULL, rec.prs_afdeling_naam, rec.prs_afdeling_omschrijving, v_prs_kostenplaats_key) RETURNING prs_afdeling_key INTO v_prs_afdeling_key; ELSE -- aanpassen afdeling v_errorhint := 'Aanpassen afdeling'; UPDATE prs_afdeling SET prs_bedrijf_key = v_prs_bedrijf_key, prs_afdeling_parentkey = NULL, prs_afdeling_naam = rec.prs_afdeling_naam, prs_afdeling_omschrijving = rec.prs_afdeling_omschrijving, prs_kostenplaats_key = v_prs_kostenplaats_key WHERE prs_afdeling_key = rec.prs_afdeling_key; v_prs_afdeling_key := rec.prs_afdeling_key; END IF; PRS.upsertkenmerk (1080, v_prs_afdeling_key, v_prs_afd_parent_key); PRS.upsertkenmerk (1081, v_prs_afdeling_key, v_prs_afd_niveau_parent); EXCEPTION WHEN OTHERS THEN oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || SQLCODE || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint || '-' || v_aanduiding); END; END LOOP; SELECT COUNT (*) INTO v_newcount FROM prs_afdeling WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1) AND prs_afdeling_verwijder IS NULL; fac.imp_writelog ( p_import_key, 'S', 'Aantal ingelezen afdelingen: ' || TO_CHAR (v_impcount), ''); fac.imp_writelog ( p_import_key, 'S', 'Aantal afdelingen vooraf: ' || TO_CHAR (v_oldcount) || ' nu: ' || TO_CHAR (v_newcount), ''); UPDATE prs_kostenplaats k SET prs_kostenplaats_verwijder = SYSDATE WHERE NOT EXISTS (SELECT i.prs_kostenplaats_nr FROM fac_imp_organisatie i WHERE i.prs_kostenplaats_nr = k.prs_kostenplaats_nr) AND prs_kostenplaats_verwijder IS NULL AND prs_kostenplaats_module = 'PRS'; UPDATE prs_kostenplaats k SET prs_kostenplaats_omschrijving = 'Externe dienstverlening' WHERE prs_kostenplaats_verwijder IS NULL AND prs_kostenplaats_module = 'PRS' AND prs_kostenplaats_nr = 5034; UPDATE prs_afdeling a SET prs_afdeling_omschrijving = SUBSTR ('Inactief - ' || prs_afdeling_omschrijving, 1, 60) WHERE prs_afdeling_key <> 1 AND prs_afdeling_verwijder IS NULL AND prs_afdeling_omschrijving NOT LIKE 'Inactief - %' AND NOT EXISTS (SELECT prs_afdeling_naam FROM fac_imp_organisatie i WHERE i.prs_afdeling_naam = a.prs_afdeling_naam); END pnbr_update_organisatie_mut; / CREATE OR REPLACE VIEW pnbr_v_afdeling ( prs_bedrijf_key, prs_afdeling_key, prs_afdeling_parentkey ) AS SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey FROM prs_afdeling a, (SELECT prs_link_key prs_afdeling_key, prs_kenmerklink_waarde prs_afdeling_parentkey FROM prs_kenmerklink WHERE prs_kenmerk_key = 1080) kl WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+); CREATE OR REPLACE VIEW pnbr_v_afdeling_boom ( niveau, prs_bedrijf_key, prs_afdeling_key, prs_afdeling_key1, prs_afdeling_key2, prs_afdeling_key3, prs_afdeling_key4, prs_afdeling_key5, prs_afdeling_key6, prs_afdeling_key7, prs_afdeling_key8, prs_afdeling_key9, prs_afdeling_key10 ) AS SELECT '1' niveau, a1.prs_bedrijf_key, a1.prs_afdeling_key, a1.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1 WHERE a1.prs_afdeling_parentkey IS NULL UNION SELECT '2' niveau, a1.prs_bedrijf_key, a2.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '3' niveau, a1.prs_bedrijf_key, a3.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '4' niveau, a1.prs_bedrijf_key, a4.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '5' niveau, a1.prs_bedrijf_key, a5.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '6' niveau, a1.prs_bedrijf_key, a6.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, a6.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5, pnbr_v_afdeling a6 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '7' niveau, a1.prs_bedrijf_key, a7.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, a6.prs_afdeling_key, a7.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5, pnbr_v_afdeling a6, pnbr_v_afdeling a7 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '8' niveau, a1.prs_bedrijf_key, a8.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, a6.prs_afdeling_key, a7.prs_afdeling_key, a8.prs_afdeling_key, TO_NUMBER (NULL), TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5, pnbr_v_afdeling a6, pnbr_v_afdeling a7, pnbr_v_afdeling a8 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '9' niveau, a1.prs_bedrijf_key, a9.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, a6.prs_afdeling_key, a7.prs_afdeling_key, a8.prs_afdeling_key, a9.prs_afdeling_key, TO_NUMBER (NULL) FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5, pnbr_v_afdeling a6, pnbr_v_afdeling a7, pnbr_v_afdeling a8, pnbr_v_afdeling a9 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL UNION SELECT '10' niveau, a1.prs_bedrijf_key, a10.prs_afdeling_key, a1.prs_afdeling_key, a2.prs_afdeling_key, a3.prs_afdeling_key, a4.prs_afdeling_key, a5.prs_afdeling_key, a6.prs_afdeling_key, a7.prs_afdeling_key, a8.prs_afdeling_key, a9.prs_afdeling_key, a10.prs_afdeling_key FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3, pnbr_v_afdeling a4, pnbr_v_afdeling a5, pnbr_v_afdeling a6, pnbr_v_afdeling a7, pnbr_v_afdeling a8, pnbr_v_afdeling a9, pnbr_v_afdeling a10 WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL; /* CREATE OR REPLACE PROCEDURE pnbr_import_mjob (p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count NUMBER; v_ongeldig NUMBER (1); v_mode NUMBER (1); v_aanduiding VARCHAR2 (200); v_all_null BOOLEAN; v_count_error NUMBER (10); v_count_tot NUMBER (10); v_count_import NUMBER (10); -- De importvelden: v_alg_object_code VARCHAR2(200); v_ins_plaats VARCHAR2(200) v_ins_id VARCHAR2(200); v_ins_nlsfb VARCHAR2(200); v_ins_aanduiding VARCHAR2(200); v_ins_bouwjaar VARCHAR2(200); v_crt_startjaar VARCHAR2(200); v_crt_stopjaar VARCHAR2(200); v_ins_dimensie VARCHAR2(200); v_ins_aantal VARCHAR2(200); v_crt_dimensie VARCHAR2(200); v_crt_aantal VARCHAR2(200); v_crt_prijs VARCHAR2(200); v_crt_opmerking VARCHAR2(200); v_crt_kostensoort VARCHAR2(200); v_crt_btw VARCHAR2(200); v_crt_prioriteit VARCHAR2(200); v_ins_levensduur VARCHAR2(200); v_ins_cno VARCHAR2(200); v_ins_cvo VARCHAR2(200); v_crt_omschrijving VARCHAR2(200); v_crt_key VARCHAR2(200); v_crt_periode VARCHAR2(200); v_crt_totaalprijs VARCHAR2(200); v_crt_urgentie VARCHAR2(200); v_crt_fonds VARCHAR2(200); CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM imp_log WHERE fac_import_key = p_import_key; DELETE FROM pnbr_imp_mjob; COMMIT; v_count_error := 0; header_is_valid := 0; v_count_tot := 0; v_count_import := 0; FOR rec1 IN c1 LOOP BEGIN v_errormsg := 'Fout FETCH te importeren rij'; v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_object_code); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_id); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_aanduiding); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_aantal); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_dimensie); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_plaats) fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_nlsfb); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_bouwjaar); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_cno); fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_cvo); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_key); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_omschrijving); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_dimensie); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_aantal); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_prijs); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_startjaar); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_prioriteit); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_periode); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_totaalprijs); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_urgentie); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_fonds); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_stopjaar); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_opmerking); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_kostensoort); fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_btw); --fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_levensduur); v_aanduiding := v_ins_id || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| '; IF (header_is_valid = 0) THEN IF UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM' AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT' THEN header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; v_bedrijf_naam := TRIM (v_bedrijf_naam); IF LENGTH (v_bedrijf_naam) > 60 THEN v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Bedrijf-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']' ); END IF; -- v_afdeling_naam := TRIM (v_afdeling_naam); IF LENGTH (v_afdeling_naam) > 10 THEN v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdeling-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']' ); END IF; -- v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent); IF LENGTH (v_afdeling_naam_parent) > 10 THEN v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdeling-aanduiding is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']' ); END IF; -- v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving); IF LENGTH (v_afdeling_omschrijving) > 60 THEN v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60); fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Afdelingsomschrijving is te lang', 'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']' ); END IF; v_kostenplaats := LTRIM(v_kostenplaats, '0'); v_all_null := (v_bedrijf_naam IS NULL) AND (v_afdeling_naam IS NULL) AND (v_afdeling_naam_parent IS NULL) AND (v_afdeling_omschrijving IS NULL); -- Insert geformatteerde import record IF v_ongeldig = 0 THEN v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']'; INSERT INTO fac_imp_organisatie ( prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_naam_parent, prs_afdeling_omschrijving, prs_kostenplaats_nr ) VALUES ( v_bedrijf_naam, v_afdeling_naam, v_afdeling_naam_parent, v_afdeling_omschrijving, v_kostenplaats ); v_count_import := v_count_import + 1; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Geen geldige headerregel aanwezig' ); ELSE fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), ''); fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; -- De top elementen in de import hebben een parent die wijst naar -- een niet bestaande afdeling. Daarom maken we die maar leeg. UPDATE fac_imp_organisatie i SET prs_afdeling_naam_parent = NULL WHERE NOT EXISTS (SELECT prs_afdeling_naam FROM fac_imp_organisatie i2 WHERE i.prs_afdeling_naam_parent = i2.prs_afdeling_naam); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, ''); END pnbr_import_organisatie_mut; / */ CREATE OR REPLACE VIEW pnbr_v_perslid_fullnames ( prs_perslid_key, prs_perslid_naam_full ) AS SELECT prs_perslid_key, prs_perslid_naam || DECODE (p.prs_perslid_voorletters, NULL, '', ', ' || p.prs_perslid_voorletters) || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', ' ' || p.prs_perslid_tussenvoegsel) || DECODE (p.prs_perslid_voornaam, NULL, '', ' (' || p.prs_perslid_voornaam || ')') || ' [' || prs_perslid_oslogin || ']' prs_perslid_naam_full FROM prs_v_aanwezigperslid p; -- -- evenementen -- CREATE OR REPLACE VIEW pnbr_v_accmngrevenement ( prs_perslid_key, prs_perslid_naam_full ) AS SELECT p.prs_perslid_key, prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames_all pf, fac_usrtab t, fac_usrdata d WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_nr = d.fac_usrdata_code AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_naam = 'AccMngrEvenement' AND d.fac_usrdata_verwijder IS NULL; CREATE OR REPLACE VIEW pnbr_v_opermngrevenement ( prs_perslid_key, prs_perslid_naam_full ) AS SELECT p.prs_perslid_key, prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames_all pf, fac_usrtab t, fac_usrdata d WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_nr = d.fac_usrdata_code AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_naam = 'OperMngrEvenemen' AND d.fac_usrdata_verwijder IS NULL; CREATE OR REPLACE VIEW pnbr_v_projmngrevenement ( prs_perslid_key, prs_perslid_naam_full ) AS SELECT p.prs_perslid_key, prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames_all pf, fac_usrtab t, fac_usrdata d WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_nr = d.fac_usrdata_code AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_naam = 'ProjMngrEvenemen' AND d.fac_usrdata_verwijder IS NULL; CREATE OR REPLACE VIEW pnbr_v_evenement ( res_reservering_key, res_reservering_omschrijving ) AS SELECT r.res_reservering_key, TO_CHAR (r.res_reservering_key) || ' - ' || MAX (res_rsv_ruimte_omschrijving) res_reservering_omschrijving FROM res_reservering r, res_rsv_ruimte rrr WHERE r.res_reservering_key = rrr.res_reservering_key AND rrr.res_activiteit_key = 30 -- evenementen GROUP BY r.res_reservering_key; CREATE OR REPLACE VIEW pnbr_v_rap_evenementen ( hide_f_ts, dag, fclt_d_datum, omschrijving, ruimte, van, tot, aant, om, pm, am ) AS SELECT TO_CHAR (r.res_rsv_ruimte_van, 'yyyymmddhh24mi') ts, DECODE (TO_CHAR (r.res_rsv_ruimte_van, 'D'), 1, 'Zondag', 2, 'Maandag', 3, 'Dinsdag', 4, 'Woensdag', 5, 'Donderdag', 6, 'Vrijdag', 7, 'Zaterdag') dag, TO_CHAR (r.res_rsv_ruimte_van, 'dd-mm-yyyy') datum, oms.mld_kenmerkmelding_waarde oms, TRIM (res_ruimte_nr) ruimte, TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi') van, TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi') tot, r.res_rsv_ruimte_bezoekers, om.naam, pm.naam, am.naam FROM mld_melding m, res_ruimte_opstelling ro, res_ruimte rr, (SELECT km.mld_melding_key, rg.* FROM res_rsv_ruimte rg, mld_kenmerkmelding km WHERE rg.res_reservering_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde) AND km.mld_kenmerk_key = 6032 AND rg.res_rsv_ruimte_volgnr = (SELECT MIN (res_rsv_ruimte_volgnr) FROM res_v_aanwezigrsv_ruimte r WHERE r.res_reservering_key = rg.res_reservering_key)) r, (SELECT km.mld_melding_key, km.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 6028) oms, (SELECT km.mld_melding_key, SUBSTR (prs_perslid_voornaam, 1, 1) || SUBSTR (prs_perslid_naam, 1, 1) naam FROM mld_kenmerkmelding km, prs_perslid p WHERE km.mld_kenmerk_key = 6030 AND p.prs_perslid_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde)) pm, (SELECT km.mld_melding_key, SUBSTR (prs_perslid_voornaam, 1, 1) || SUBSTR (prs_perslid_naam, 1, 1) naam FROM mld_kenmerkmelding km, prs_perslid p WHERE km.mld_kenmerk_key = 6029 AND p.prs_perslid_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde)) am, (SELECT km.mld_melding_key, SUBSTR (prs_perslid_voornaam, 1, 1) || SUBSTR (prs_perslid_naam, 1, 1) naam FROM mld_kenmerkmelding km, prs_perslid p WHERE km.mld_kenmerk_key = 6031 AND p.prs_perslid_key = fac.safe_to_number (km.mld_kenmerkmelding_waarde)) om WHERE m.mld_melding_key = r.mld_melding_key(+) AND m.mld_melding_key = oms.mld_melding_key(+) AND m.mld_melding_key = am.mld_melding_key(+) AND m.mld_melding_key = om.mld_melding_key(+) AND m.mld_melding_key = pm.mld_melding_key(+) AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+) AND ro.res_ruimte_key = rr.res_ruimte_key(+) AND mld_stdmelding_key = 2441; ---------------------------- -- Rapportages CREATE OR REPLACE VIEW pnbr_v_rap_errorlog ( HIDE_F_IMP_LOG_DATUM, FCLT_F_APPLICATIE, FCLT_F_DATUM, TIJDSTIP, FCLT_F_NIVEAU, FCLT_F_OMSCHRIJVING, HINT ) AS SELECT imp_log_datum hide_f_imp_log_datum, fac_import_app_code, TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum, TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip, DECODE (imp_log_status, 'F', 'Fataal', 'E', 'Error', 'W', 'Waarschuwing', 'S', 'Samenvatting', 'I', 'Informatief', '-') fclt_f_niveau, imp_log_omschrijving fclt_f_omschrijving, imp_log_hint FROM imp_log l, fac_import i, fac_import_app a WHERE l.fac_import_key = i.fac_import_key AND i.fac_import_app_key = a.fac_import_app_key AND l.fac_import_key IN ( SELECT MAX (fac_import_key) FROM fac_import GROUP BY fac_import_app_key); CREATE OR REPLACE VIEW pnbr_v_rap_import_status ( fclt_f_import, datum, fclt_f_status, omschrijving, hint ) AS SELECT fac_import_app_code, i.imp_log_datum, i.imp_log_status, i.imp_log_omschrijving, i.imp_log_hint FROM imp_log i, fac_import fi, fac_import_app ia WHERE i.fac_import_key = fi.fac_import_key AND fi.fac_import_app_key = ia.fac_import_app_key AND ( fac_import_app_code = 'PERSLID_MUT' OR fac_import_app_code = 'ORGANISATIE_MUT') AND i.imp_log_datum > SYSDATE - 1; CREATE OR REPLACE VIEW pnbr_v_rap_servicdesk_status ( behandelgroep, bij_frontoffice, afgewezen, nieuw, te_behandelen, in_behandeling, afgemeld, historie, uitgegeven, actie_vereist ) AS SELECT ins_discipline_omschrijving, SUM (bij_frontoffice) bij_frontoffice, SUM (afgewezen) afgewezen, SUM (nieuw) nieuw, SUM (te_behandelen) te_behandelen, SUM (in_behandeling) in_behandeling, SUM (afgemeld) afgemeld, SUM (historie) historie, SUM (uitgegeven) uitgegeven, SUM (actie_vereist) actie_vereist FROM (SELECT ins_discipline_omschrijving, DECODE (mld_melding_status, 0, 1, 0) bij_frontoffice, DECODE (mld_melding_status, 1, 1, 0) afgewezen, DECODE (mld_melding_status, 2, 1, 0) nieuw, DECODE (mld_melding_status, 3, 1, 0) te_behandelen, DECODE (mld_melding_status, 4, 1, 0) in_behandeling, DECODE (mld_melding_status, 5, 1, 0) afgemeld, DECODE (mld_melding_status, 6, 1, 0) historie, DECODE (mld_melding_status, 7, 1, 0) uitgegeven, DECODE (mld_melding_status, 99, 1, 0) actie_vereist FROM mld_melding m, mld_stdmelding std, mld_discipline d WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND ins_discipline_key > 400 AND std.mld_ins_discipline_key = d.ins_discipline_key) GROUP BY ins_discipline_omschrijving; CREATE OR REPLACE VIEW pnbr_v_rap_perf_servicedesk ( naam, ingevoerd, afgemeld, afgewezen ) AS SELECT prs_perslid_naam_full, SUM ( COALESCE ( (SELECT 1 FROM fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDNEW'), 0)) ingevoerd, SUM ( COALESCE ( (SELECT 1 FROM fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDAFM'), 0)) afgemeld, SUM ( COALESCE ( (SELECT 1 FROM fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'MLDREJ'), 0)) afgewezen FROM fac_gebruikersgroep gg, prs_v_perslid_fullnames pf, fac_tracking t WHERE gg.prs_perslid_key = pf.prs_perslid_key AND gg.fac_groep_key = 253 AND t.prs_perslid_key = pf.prs_perslid_key AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE) GROUP BY prs_perslid_naam_full; CREATE OR REPLACE VIEW pnbr_v_rap_afm_servicedesk ( fclt_f_behandelgroep, servicedesk, totaal, fclt_f_periode ) AS SELECT ins_discipline_omschrijving behandelgroep, SUM (servicedesk) servicedesk, COUNT (mld_melding_key) totaal, TO_CHAR (fac_tracking_datum, 'yyyy-mm') periode FROM (SELECT DISTINCT 1 servicedesk, prs_perslid_key FROM fac_gebruikersgroep gg WHERE gg.fac_groep_key = 253 OR gg.fac_groep_key = 91) gg, prs_v_perslid_fullnames pf, fac_tracking t, fac_srtnotificatie sn, mld_melding m, mld_stdmelding std, ins_tab_discipline d WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND ( sn.fac_srtnotificatie_code = 'MLDAFM' OR sn.fac_srtnotificatie_code = 'MLDREJ') AND t.fac_tracking_refkey = mld_melding_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND gg.prs_perslid_key(+) = pf.prs_perslid_key AND t.prs_perslid_key = pf.prs_perslid_key GROUP BY d.ins_discipline_omschrijving, TO_CHAR (fac_tracking_datum, 'yyyy-mm'); -- rapportages tbv het IT dashbord. CREATE OR REPLACE VIEW pnbr_v_rap_beschikb_dienst ( naam, mobiel, dect, ins_key ) AS SELECT SUBSTR (ins_deel_omschrijving, 4, 20), kdm.ins_kenmerkdeel_waarde, kdd.ins_kenmerkdeel_waarde, d.ins_deel_key FROM ins_deel d, (SELECT ins_deel_key, ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE ins_kenmerkdeel_verwijder IS NULL AND ins_kenmerk_key = 801) kdm, -- mobiel nummer (SELECT ins_deel_key, ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE ins_kenmerkdeel_verwijder IS NULL AND ins_kenmerk_key = 821) kdd -- DECT nummer WHERE d.ins_deel_verwijder IS NULL AND d.ins_deel_key = kdm.ins_deel_key(+) AND d.ins_deel_key = kdd.ins_deel_key(+) AND d.ins_srtdeel_key = 562; CREATE OR REPLACE VIEW pnbr_v_rap_appl_beschikb ( applicatie, status, ins_key ) AS SELECT SUBSTR (ins_deel_omschrijving, 6, 20), DECODE (ins_kenmerkdeel_waarde, 1, 'UP', 'DOWN'), d.ins_deel_key FROM ins_deel d, (SELECT ins_deel_key, ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd WHERE ins_kenmerk_key = 641) kd WHERE d.ins_deel_key = kd.ins_deel_key(+) AND d.ins_srtdeel_key = 561; CREATE OR REPLACE VIEW pnbr_v_rap_dpl_meldingen ( mld_key, datum, omschrijving, eind, intervalwijz, workaround, status, afgemeld ) AS SELECT mld_melding_key, TO_CHAR (mld_melding_datum, 'yyyy-mm-dd / hh24:mi'), mld_melding_omschrijving, fac.gettrackingdate ('MLDAFM', m.mld_melding_key) einddatum, SYSDATE - (SELECT MAX (t.fac_tracking_datum) FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_tracking_refkey = m.mld_melding_key AND sn.fac_srtnotificatie_xmlnode = 'melding') intervalwijz, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 6821 AND km.mld_melding_key = m.mld_melding_key) workaround, s.mld_statuses_omschrijving, DECODE (m.mld_melding_status, 1, 1, 5, 1, 6, 1, 0) FROM mld_melding m, mld_statuses s WHERE mld_stdmelding_key = 5481 AND m.mld_melding_status = s.mld_statuses_key AND COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key), SYSDATE) < SYSDATE + 14; CREATE OR REPLACE VIEW pnbr_v_melding_bestuur ( mld_melding_key, meldingnummer, prs_perslid_naam_full, mld_stdmelding_omschrijving, mld_melding_omschrijving, mld_melding_status, opengesloten, mld_melding_datum, mld_melding_afgemeld ) AS SELECT m.mld_melding_key, m.mld_melding_key, p.prs_perslid_naam_full, sm.mld_stdmelding_omschrijving, m.mld_melding_omschrijving, ms.mld_statuses_omschrijving, DECODE (m.mld_melding_status, 1, 'Gesloten', 5, 'Gesloten', 6, 'Gesloten', 'Open') opengesloten, m.mld_melding_datum, mld.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld FROM (SELECT p.prs_perslid_key, prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames_all pf, fac_usrtab t, fac_usrdata d WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_nr = d.fac_usrdata_code AND t.fac_usrtab_key = d.fac_usrtab_key AND t.fac_usrtab_naam = 'BestuurOnderst' UNION ALL SELECT p.prs_perslid_key, prs_perslid_naam_full FROM prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_key = pf.prs_perslid_key AND prs_afdeling_key IN (127, 128)) p, -- GS en PS mld_melding m, mld_statuses ms, mld_stdmelding sm WHERE m.prs_perslid_key_voor = p.prs_perslid_key AND ms.mld_statuses_key = m.mld_melding_status AND sm.mld_stdmelding_key = m.mld_stdmelding_key; CREATE OR REPLACE VIEW pnbr_v_rap_melding_bestuur ( fclt_d_datum, melding, voor, soortmelding, omschrijving, fclt_f_status, fclt_f_opengesloten, ingediend, afgemeld ) AS SELECT TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'), meldingnummer, prs_perslid_naam_full, mld_stdmelding_omschrijving, mld_melding_omschrijving, mld_melding_status, opengesloten, mld_melding_datum, mld_melding_afgemeld FROM pnbr_v_melding_bestuur; CREATE OR REPLACE VIEW pnbr_v_noti_melding_bestuur ( sender, receiver, text, code, key, xkey ) AS SELECT NULL sender, 4426 receiver, -- Dominique Verwiel (dverwiel@brabant.nl) 'Nieuwe melding ' || meldingnummer || ' ingevoerd voor/door: ' || prs_perslid_naam_full text, 'MLDNEW' code, mld_melding_key key, NULL xkey FROM pnbr_v_melding_bestuur WHERE mld_melding_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MELDING_BESTUUR') AND mld_melding_datum < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MELDING_BESTUUR'); CREATE OR REPLACE VIEW pnbr_v_rap_notificatie ( fclt_f_module, code, omschrijving, fclt_f_status, fclt_f_mail, fclt_f_sms, fclt_f_alert ) AS SELECT SUBSTR (fac_srtnotificatie_code, 1, 3) module, fac_srtnotificatie_code, lcl.x ('fac_srtnotificatie_oms', fac_srtnotificatie_key, fac_srtnotificatie_oms), DECODE (BITAND (fac_srtnotificatie_mode, 1), 0, '', 'status') status, DECODE (BITAND (fac_srtnotificatie_mode, 2), 0, '', 'mail') mail, DECODE (BITAND (fac_srtnotificatie_mode, 4), 0, '', 'sms') sms, DECODE (BITAND (fac_srtnotificatie_mode, 8), 0, '', 'alert') alert FROM fac_srtnotificatie; CREATE OR REPLACE VIEW PNBR_V_RAP_VOORRAAD ( HIDE_F_EXTERN_DISKEY, HIDE_F_SRTGROEP_OMSCHRIJVING, FCLT_F_CATALOGUS, ARTIKEL_NR, ARTIKEL_OMSCHRIJVING, ARTIKEL_PRIJS, MAGAZIJN, MIN_VOORRAAD, MAX_VOORRAAD, INKOOP_GELEVERD, INTERN_BESTELD, VOORRAAD, INKOOP_BESTELD, INKOOP_LEVERDATUM, INKOOP_GEWENST ) AS SELECT extern.dkey, COALESCE (intern.bes_srtgroep_omschrijving, extern.bes_srtgroep_omschrijving), COALESCE (intern.ins_discipline_omschrijving, extern.ins_discipline_omschrijving), extern.bes_srtdeel_nr, COALESCE (intern.bes_srtdeel_omschrijving, extern.bes_srtdeel_omschrijving), COALESCE (intern.srtdeel_prijs, extern.srtdeel_prijs), intern.magazijn, extern.vmin, extern.vmax, extern.geleverd, intern.besteld, extern.geleverd - COALESCE (intern.besteld, 0) voorraad, extern.besteld, TO_CHAR (extern.leverdatum, 'dd-mm-yyyy'), CASE WHEN ( ( COALESCE (extern.besteld, 0) + COALESCE (extern.geleverd, 0)) - COALESCE (intern.besteld, 0)) < extern.vmin THEN extern.vmax - ( ( COALESCE (extern.besteld, 0) + COALESCE (extern.geleverd, 0)) - COALESCE (intern.besteld, 0)) ELSE NULL END extern_gewenst FROM (SELECT bd.ins_discipline_key dkey, -- INKOOP-key g.bes_srtgroep_omschrijving, sd.bes_srtdeel_nr, -- ext. artikelnr sd.bes_srtdeel_omschrijving, bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL) srtdeel_prijs, bd.ins_discipline_omschrijving, -- ext. catalogusnaam sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin sd.bes_srtdeel_voorraadmax vmax, -- ext. voorraadmax (SELECT SUM ( COALESCE (boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal) - COALESCE ( boi.bes_bestelopdr_item_aantalontv, 0)) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key AND bi.bes_bestelling_item_status IN (2, 3, 4, 5) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) besteld, (SELECT MIN (b.bes_bestelling_leverdatum) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key AND bi.bes_bestelling_item_status IN (2, 3, 4, 5) AND COALESCE (bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal) <> COALESCE (bes_bestelopdr_item_aantalontv, 0) AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) leverdatum, (SELECT SUM (boi.bes_bestelopdr_item_aantalontv) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE -- boi.bes_bestelopdr_item_status in (6,7) AND b.bes_bestelling_key = bi.bes_bestelling_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) geleverd FROM bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_ins_discipline_key_inkoop IS NULL AND bd.ins_discipline_key IN (SELECT bes_ins_discipline_key_inkoop FROM bes_disc_params WHERE bes_ins_discipline_key_inkoop IS NOT NULL)) extern -- Inkoop artikelen uit externe catalogus! FULL JOIN (SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key g.bes_srtgroep_omschrijving, sd.bes_srtdeel_nr, -- int. artikelnr sd.bes_srtdeel_omschrijving, sd.bes_srtdeel_notitie magazijn, bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL) srtdeel_prijs, bd.ins_discipline_omschrijving, -- int. catalogusnaam (SELECT SUM ( COALESCE (boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal)) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) besteld FROM bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_ins_discipline_key_inkoop IS NOT NULL) intern -- Verkoop artikelen uit interne catalogus! ON extern.dkey = intern.dkey AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr; CREATE OR REPLACE VIEW pnbr_v_rap_bestellingen ( bestelnummer, fclt_d_bes_bestelling_datum, fclt_f_aanvrager, fclt_f_afdeling, fclt_f_kostenplaats, fclt_f_catalogus, fclt_f_groep, aantal, fclt_f_omschrijving, stuksprijs, totaalprijs ) AS SELECT b.bes_bestelling_key, TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy'), pf.prs_perslid_naam_full, a.prs_afdeling_naam || '-' || a.prs_afdeling_omschrijving, k.prs_kostenplaats_nr || '-' || k.prs_kostenplaats_omschrijving, d.ins_discipline_omschrijving, sg.bes_srtgroep_omschrijving, bes_bestelling_item_aantal, sd.bes_srtdeel_omschrijving, COALESCE (bi.bes_bestelling_item_prijs, bes.getsrtdeelprijs (sd.bes_srtdeel_key, SYSDATE)), ROUND ( COALESCE (bi.bes_bestelling_item_prijs, bes.getsrtdeelprijs (sd.bes_srtdeel_key, SYSDATE)) * bes_bestelling_item_aantal, 2) FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, bes_discipline d, prs_v_perslid_fullnames_all pf, prs_perslid p, prs_afdeling a, prs_kostenplaats k WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND b.prs_perslid_key = pf.prs_perslid_key AND b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+); -- -- Sync view -- CREATE OR REPLACE VIEW pnbr_v_sync_alg_ruimte ( alg_ruimte_key, alg_verdieping_key, cadlabel ) AS SELECT r.alg_ruimte_key, r.alg_verdieping_key, DECODE (LENGTH (alg_verdieping_code), 1, '0' || alg_verdieping_code, alg_verdieping_code) || '.' || DECODE (LENGTH (alg_ruimte_nr), 1, '00' || alg_ruimte_nr, 2, '0' || alg_ruimte_nr, alg_ruimte_nr) FROM alg_v_aanwezigruimte r, alg_verdieping v WHERE r.alg_verdieping_key = v.alg_verdieping_key; -- tijdelijk vervangen door: CREATE OR REPLACE VIEW pnbr_v_sync_alg_ruimte ( alg_ruimte_key, alg_verdieping_key, cadlabel ) AS SELECT r.alg_ruimte_key, r.alg_verdieping_key, DECODE (fac.safe_to_number (alg_ruimte_nr), NULL, alg_ruimte_nr, TO_CHAR (TO_NUMBER (alg_ruimte_nr))) FROM alg_v_aanwezigruimte r, alg_verdieping v WHERE r.alg_verdieping_key = v.alg_verdieping_key; CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat ( res_rsv_ruimte_key, res_rsv_ruimte_omschrijving, res_rsv_ruimte_van, res_rsv_ruimte_tot, res_rsv_ruimte_bezoekers, res_ruimte_key, res_ruimte_nr, tonen ) AS SELECT * FROM (SELECT r.res_rsv_ruimte_key, res_rsv_ruimte_omschrijving, TO_CHAR (r.res_rsv_ruimte_van, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi:ss') van, TO_CHAR (r.res_rsv_ruimte_tot, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi:ss') tot, COALESCE (res_rsv_ruimte_bezoekers, 0) bezoekers, rr.res_ruimte_key, DECODE ( INSTR (res_ruimte_nr, '('), 0, res_ruimte_nr, SUBSTR ( res_ruimte_nr, INSTR (res_ruimte_nr, '(') + 1, INSTR (res_ruimte_nr, ')') - INSTR (res_ruimte_nr, '(') - 1)) ruimtenr, CASE WHEN res_rsv_ruimte_tot + INTERVAL '15' MINUTE < SYSDATE THEN 'Nee' ELSE 'Ja' END AS tonen FROM res_rsv_ruimte r, res_ruimte_opstelling rro, res_ruimte rr, (SELECT rrr.res_rsv_ruimte_key, (SELECT w.res_kenmerkreservering_waarde FROM res_kenmerkwaarde w, res_kenmerk k WHERE w.res_kenmerk_key = k.res_kenmerk_key AND w.res_kenmerk_key = k.res_kenmerk_key AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key AND k.res_srtkenmerk_key = 1 -- zichtbaar op planbord AND k.res_activiteit_key = rrr.res_activiteit_key) res_kenmerkreservering_waarde FROM res_rsv_ruimte rrr) ds WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_status_fo_key = 2 AND r.res_rsv_ruimte_key = ds.res_rsv_ruimte_key AND r.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND ( fac.safe_to_number (ds.res_kenmerkreservering_waarde) = 2 OR r.res_rsv_ruimte_contact_key = 30064) -- SmartSigns user AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE) AND NOT EXISTS (SELECT rrr.res_rsv_ruimte_key FROM res_rsv_ruimte rrr WHERE rrr.res_activiteit_key = 370 -- teamruimtes niet meenemen in dit overzicht AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key)) d WHERE d.tonen = 'Ja'; CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_5wd ( res_rsv_ruimte_key, res_rsv_ruimte_omschrijving, res_rsv_ruimte_van, res_rsv_ruimte_tot, res_rsv_ruimte_bezoekers, res_ruimte_key, res_ruimte_nr, tonen ) AS SELECT * FROM (SELECT r.res_rsv_ruimte_key, res_rsv_ruimte_omschrijving, TO_CHAR (r.res_rsv_ruimte_van, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi:ss') van, TO_CHAR (r.res_rsv_ruimte_tot, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi:ss') tot, COALESCE (res_rsv_ruimte_bezoekers, 0) bezoekers, rr.res_ruimte_key, DECODE ( INSTR (res_ruimte_nr, '('), 0, res_ruimte_nr, SUBSTR (res_ruimte_nr, INSTR (res_ruimte_nr, '(') + 1, INSTR (res_ruimte_nr, ')') - INSTR (res_ruimte_nr, '(') - 1)) ruimtenr, CASE WHEN res_rsv_ruimte_tot + INTERVAL '15' MINUTE < SYSDATE THEN 'Nee' ELSE 'Ja' END AS tonen FROM res_rsv_ruimte r, res_ruimte_opstelling rro, res_ruimte rr, (SELECT rrr.res_rsv_ruimte_key, (SELECT w.res_kenmerkreservering_waarde FROM res_kenmerkwaarde w, res_kenmerk k WHERE w.res_kenmerk_key = k.res_kenmerk_key AND w.res_kenmerk_key = k.res_kenmerk_key AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key AND k.res_srtkenmerk_key = 1 -- zichtbaar op planbord AND k.res_activiteit_key = rrr.res_activiteit_key) res_kenmerkreservering_waarde FROM res_rsv_ruimte rrr) ds, (SELECT d.datum_van, d.datum_tot FROM ( SELECT TRUNC (SYSDATE) datum_van, TRUNC (SYSDATE) + 7 datum_max, --- 5 dgn + max 2 weekenddagen TRUNC (SYSDATE) + LEVEL - 1 datum_tot, FAC.getweekdaynum (TRUNC (SYSDATE) + LEVEL - 1) weekday, ROW_NUMBER () OVER (ORDER BY (TRUNC (SYSDATE) + LEVEL - 1)) aant_dgn FROM DUAL WHERE FAC.getweekdaynum (TRUNC (SYSDATE) + LEVEL - 1) NOT IN (1, 7) CONNECT BY LEVEL <= ((SYSDATE + 7) - SYSDATE + 1) ORDER BY TRUNC (SYSDATE) + LEVEL - 1) d WHERE d.aant_dgn = 6) wd WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_status_fo_key = 2 AND r.res_rsv_ruimte_key = ds.res_rsv_ruimte_key AND r.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND ( fac.safe_to_number (ds.res_kenmerkreservering_waarde) = 2 OR r.res_rsv_ruimte_contact_key = 30064) -- SmartSigns user AND TRUNC (res_rsv_ruimte_van) BETWEEN wd.datum_van AND wd.datum_tot AND NOT EXISTS (SELECT rrr.res_rsv_ruimte_key FROM res_rsv_ruimte rrr WHERE rrr.res_activiteit_key = 370 -- teamruimtes niet meenemen in dit overzicht AND rrr.res_rsv_ruimte_key = r.res_rsv_ruimte_key))D WHERE d.tonen = 'Ja'; CREATE OR REPLACE VIEW PNBR_V_RAP_DAGSTAAT_TEAMS ( RES_RSV_RUIMTE_KEY, RES_RSV_RUIMTE_OMSCHRIJVING, RES_RSV_RUIMTE_VAN, RES_RSV_RUIMTE_TOT, RES_RSV_RUIMTE_BEZOEKERS, RES_RUIMTE_KEY, RES_RUIMTE_NR ) AS SELECT r.res_rsv_ruimte_key, team.res_kenmerkreservering_waarde, TO_CHAR (r.res_rsv_ruimte_van, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi:ss'), TO_CHAR (r.res_rsv_ruimte_tot, 'yyyy-mm-dd') || 'T' || TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi:ss'), COALESCE (res_rsv_ruimte_bezoekers, 0), rr.res_ruimte_key, DECODE (INSTR (res_ruimte_nr, '('), 0, res_ruimte_nr, SUBSTR (res_ruimte_nr, 1, INSTR (res_ruimte_nr, '(') - 1)) FROM res_rsv_ruimte r, res_ruimte_opstelling rro, res_ruimte rr, (SELECT rrr.res_rsv_ruimte_key, (SELECT w.res_kenmerkreservering_waarde FROM res_kenmerkwaarde w, res_kenmerk k, res_srtkenmerk sk WHERE w.res_kenmerk_key = k.res_kenmerk_key AND w.res_kenmerk_key = k.res_kenmerk_key AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key AND sk.res_srtkenmerk_upper LIKE '%TEAM%' -- team AND k.res_activiteit_key = rrr.res_activiteit_key) res_kenmerkreservering_waarde FROM res_rsv_ruimte rrr) team, (SELECT rrr.res_rsv_ruimte_key, (SELECT w.res_kenmerkreservering_waarde FROM res_kenmerkwaarde w, res_kenmerk k WHERE w.res_kenmerk_key = k.res_kenmerk_key AND w.res_kenmerk_key = k.res_kenmerk_key AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key AND k.res_srtkenmerk_key = 1 -- zichtbaar op planbord AND k.res_activiteit_key = rrr.res_activiteit_key) res_kenmerkreservering_waarde FROM res_rsv_ruimte rrr) ds, (SELECT d.datum_van, d.datum_tot FROM ( SELECT TRUNC (SYSDATE) datum_van, TRUNC (SYSDATE) + 7 datum_max, --- 5 dgn + max 2 weekenddagen TRUNC (SYSDATE) + LEVEL - 1 datum_tot, FAC.getweekdaynum (TRUNC (SYSDATE) + LEVEL - 1) weekday, ROW_NUMBER () OVER (ORDER BY (TRUNC (SYSDATE) + LEVEL - 1)) aant_dgn FROM DUAL WHERE FAC.getweekdaynum (TRUNC (SYSDATE) + LEVEL - 1) NOT IN (1, 7) CONNECT BY LEVEL <= ((SYSDATE + 7) - SYSDATE + 1) ORDER BY TRUNC (SYSDATE) + LEVEL - 1) d WHERE d.aant_dgn = 6) wd WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_status_fo_key = 2 AND r.res_rsv_ruimte_key = ds.res_rsv_ruimte_key AND r.res_rsv_ruimte_key = team.res_rsv_ruimte_key AND r.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND r.res_activiteit_key = 370 --- alleen reserveringen teamruimtes AND rro.res_ruimte_key = rr.res_ruimte_key AND ( fac.safe_to_number (ds.res_kenmerkreservering_waarde) = 2 OR r.res_rsv_ruimte_contact_key = 30064) -- SmartSigns user AND TRUNC (res_rsv_ruimte_van) BETWEEN wd.datum_van AND wd.datum_tot ORDER BY res_rsv_ruimte_van; CREATE OR REPLACE VIEW PNBR_V_RAP_DAGSTAAT_BRON ( FCLT_D_DATUM, DAGVWEEK, MAAND, DAG, JAAR, NUMMER, TIJDSORT, RUIMTE_VAN, RUIMTE_TOT, BEZOEKERS, ACTIVITEIT, OMSCHRIJVING, OPMERKING, RUIMTE, VERDIEPING, LOCATIE, MELDER, TELEFOON, KOSTENPLAATS, BEGRPOST, BESTELNR, OPSTELLING, AANTALCATERING, V_VAN, V_TOT, V_OMSCHRIJVING, V_AANTAL, V_PRIJS, V_TOTAAL, GS, CDK, RES_RSV_RUIMTE_KEY, RES_DISCIPLINE_KEY, RES_BESNR_CATERAAR, PROJECTMGR_EVENEMENT, LM_MUT, LM_DEL ) AS SELECT TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') datum, DECODE (TO_CHAR (res_rsv_ruimte_van, 'd'), 1, 'zondag', 2, 'maandag', 3, 'dinsdag', 4, 'woensdag', 5, 'donderdag', 6, 'vrijdag', 7, 'zaterdag') dagvweek, DECODE (TO_CHAR (res_rsv_ruimte_van, 'mm'), 1, 'januari', 2, 'februari', 3, 'maart', 4, 'april', 5, 'mei', 6, 'juni', 7, 'juli', 8, 'augustus', 9, 'september', 10, 'oktober', 11, 'november', 12, 'december') maand, TO_CHAR (res_rsv_ruimte_van, 'dd') dag, TO_CHAR (res_rsv_ruimte_van, 'yyyy') jaar, res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer, TO_CHAR (res_rsv_ruimte_van, 'yyyymmddhh24mi') tijdsort, TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') ruimte_van, TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') ruimte_tot, res_rsv_ruimte_bezoekers bezoekers, res_activiteit_omschrijving, DECODE ( rrr.res_activiteit_key, 150, 'GEBAK ' || (SELECT ud.fac_usrdata_omschr FROM res_kenmerkwaarde rk, fac_usrdata ud WHERE rk.res_kenmerk_key = 262 AND ud.fac_usrtab_key = 1943 -- kenmerk + usertab zakelijk/prive AND ud.fac_usrdata_key = fac.safe_to_number ( rk.res_kenmerkreservering_waarde) AND rk.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key), UPPER (res_rsv_ruimte_omschrijving)), res_rsv_ruimte_opmerking opmerking, COALESCE ( (SELECT res_ruimte_nr FROM res_v_ruimte_opstel_gegevens rog WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key), (SELECT MAX (alg_ruimte_aanduiding) FROM alg_v_ruimte_gegevens rg WHERE rrr.alg_ruimte_key = rg.alg_ruimte_key)) ruimte, vg.alg_verdieping_omschrijving verdieping, vg.alg_locatie_omschrijving locatie, prs_perslid_naam_full melder, COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel) telefoon, k.prs_kostenplaats_nr kostenplaats, COALESCE (bp_extra.waarde, bp.waarde) begrpost, bnk.waarde bestelnr, (SELECT rog.res_opstelling_omschrijving FROM res_v_ruimte_opstel_gegevens rog WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key) opstelling, (SELECT COUNT (*) FROM res_rsv_artikel rra WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) aantalcatering, TO_CHAR (v.van, 'hh24:mi') v_van, v.tot v_tot, v.omschrijving v_omschrijving, v.aantal v_aantal, v.prijs v_prijs, COALESCE (v.aantal, 0) * v.prijs v_totaal, COALESCE (gs.waarde, '0') gs, COALESCE (cdk.waarde, '0') cdk, rrr.res_rsv_ruimte_key, v.res_discipline_key, kn_bes_cateraar.waarde, projmngr_evenement.prs_perslid_naam_friendly, v.lm_mut, v.lm_del FROM res_rsv_ruimte rrr, (SELECT res_rsv_ruimte_key, res_rsv_artikel_aantal aantal, res_artikel_prijs prijs, res_rsv_artikel_levering van, NULL tot, ra.res_artikel_omschrijving omschrijving, ra.res_discipline_key, CASE WHEN ( rra.res_rsv_artikel_aanmaak >= referentie.ref_datum OR rra.res_rsv_artikel_mutatie >= referentie.ref_datum) THEN 'Ja' ELSE 'Nee' END LM_MUT, CASE WHEN rra.res_rsv_artikel_verwijder >= referentie.ref_datum THEN 'Ja' ELSE 'Nee' END LM_DEL FROM res_rsv_artikel rra, res_artikel ra, (SELECT fac.safe_to_date ( ( TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 16:00'), -- om te bekijken welke wijzigingen in de catering zijn doorgevoerd na 16 uur 'dd-mm-yyyy HH24:mi') AS ref_datum FROM DUAL) referentie WHERE rra.res_rsv_artikel_verwijder IS NULL AND rra.res_artikel_key = ra.res_artikel_key UNION ALL SELECT res_rsv_ruimte_key, 1 aantal, NULL, res_rsv_deel_van van, res_rsv_deel_tot tot, ins_deel_omschrijving omschrijving, rd.res_discipline_key, '' lm_mut, -- dit beoordelen we alleen voor verbuiksartikelen '' lm_del FROM res_rsv_deel rrd, res_deel rd, ins_deel d, ins_srtdeel sd WHERE rrd.res_rsv_deel_verwijder IS NULL AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key) v, (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 21 AND kw.res_kenmerk_key = rk.res_kenmerk_key AND fac.safe_to_number (res_kenmerkreservering_waarde) = fac_usrdata_key) bp, (SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde FROM res_kenmerkwaarde kw, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 61 AND kw.res_kenmerk_key = rk.res_kenmerk_key) bp_extra, (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 2 AND kw.res_kenmerk_key = rk.res_kenmerk_key AND fac.safe_to_number (res_kenmerkreservering_waarde) = fac_usrdata_key) gs, (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 22 AND kw.res_kenmerk_key = rk.res_kenmerk_key AND fac.safe_to_number (res_kenmerkreservering_waarde) = fac_usrdata_key) cdk, (SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde FROM res_kenmerkwaarde kw, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 281 AND kw.res_kenmerk_key = rk.res_kenmerk_key) bnk, (SELECT fac_usrdata_omschr waarde, kw.res_rsv_ruimte_key FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 441 AND kw.res_kenmerk_key = rk.res_kenmerk_key AND fac.safe_to_number (res_kenmerkreservering_waarde) = fac_usrdata_key) kn_bes_cateraar, (SELECT rrr2.res_rsv_ruimte_key, rg.alg_verdieping_omschrijving, rg.alg_locatie_omschrijving FROM alg_v_ruimte_gegevens rg, res_rsv_ruimte rrr2 WHERE rg.alg_ruimte_key = COALESCE ( rrr2.alg_ruimte_key, (SELECT MIN (rar.alg_ruimte_key) FROM res_v_rsv_ruimte_2_alg_ruimte rar WHERE rar.res_rsv_ruimte_key = rrr2.res_rsv_ruimte_key))) vg, (SELECT res_rsv_ruimte_key, p.prs_perslid_naam_friendly FROM res_kenmerk k, res_srtkenmerk sk, res_kenmerkwaarde kw, prs_v_perslid_fullnames_all p WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key AND kw.res_kenmerk_key = k.res_kenmerk_key AND fac.safe_to_number (kw.res_kenmerkreservering_waarde) = p.prs_perslid_key AND sk.res_srtkenmerk_key = 521) projmngr_evenement, prs_perslid p, prs_v_perslid_fullnames pf, prs_kostenplaats k, res_activiteit a WHERE rrr.res_rsv_ruimte_key = v.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_activiteit_key = a.res_activiteit_key AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rrr.res_rsv_ruimte_key = vg.res_rsv_ruimte_key AND rrr.res_rsv_ruimte_key = bp.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = bp_extra.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = gs.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = cdk.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = bnk.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = projmngr_evenement.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_key = kn_bes_cateraar.res_rsv_ruimte_key(+); CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_cat ( fclt_f_datum, dag, dagvweek, maand, jaar, nummer, tijdsort, ruimte_van, ruimte_tot, bezoekers, activiteit, omschrijving, opmerking, ruimte, verdieping, fclt_f_locatie, melder, telefoon, kostenplaats, begrpost, bestelnr, opstelling, aantalcatering, v_van, v_tot, v_omschrijving, v_aantal, v_prijs, v_totaal, gs, cdk, res_besnr_cateraar, lm_mut, lm_del ) AS SELECT TO_CHAR (TO_DATE (fclt_d_datum, 'dd-mm-yyyy'), 'yyyy-mm-dd') || ' (' || dagvweek || ')', dag, dagvweek, maand, jaar, nummer, tijdsort, ruimte_van, ruimte_tot, bezoekers, activiteit, omschrijving, opmerking, ruimte, verdieping, locatie, melder, telefoon, kostenplaats, begrpost, bestelnr, opstelling, aantalcatering, v_van, v_tot, v_omschrijving, v_aantal, v_prijs, v_totaal, gs, cdk, res_besnr_cateraar, LM_MUT, LM_DEL FROM pnbr_v_rap_dagstaat_bron WHERE TO_DATE (fclt_d_datum, 'dd-mm-yyyy') BETWEEN TRUNC (SYSDATE - 5) AND TRUNC (SYSDATE + 10); CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_even ( fclt_d_datum, dag, dagvweek, maand, jaar, nummer, tijdsort, ruimte_van, ruimte_tot, bezoekers, activiteit, omschrijving, opmerking, ruimte, verdieping, melder, telefoon, kostenplaats, begrpost, bestelnr, opstelling, v_van, v_tot, v_omschrijving, v_aantal, v_prijs, v_totaal, gs, cdk, res_besnr_cateraar, projectmgr_evenement ) AS SELECT fclt_d_datum, dag, dagvweek, maand, jaar, nummer, tijdsort, ruimte_van, ruimte_tot, bezoekers, activiteit, omschrijving, opmerking, ruimte, verdieping, melder, telefoon, kostenplaats, begrpost, bestelnr, opstelling, v_van, v_tot, v_omschrijving, v_aantal, v_prijs, v_totaal, gs, cdk, res_besnr_cateraar, projectmgr_evenement FROM pnbr_v_rap_dagstaat_bron b WHERE activiteit = 'Evenement' OR EXISTS -- of reserveringen met catering die de klant niet zelf mag bestellen (SELECT res_rsv_ruimte_key FROM pnbr_v_rap_dagstaat_bron b2, ins_tab_discipline d WHERE b2.res_discipline_key IS NOT NULL AND d.ins_discipline_min_level = 2 AND b2.res_discipline_key = d.ins_discipline_key AND b.res_rsv_ruimte_key = b2.res_rsv_ruimte_key); -- Rapport om status van reserveringen op te laten halen door SmartSigns. CREATE OR REPLACE VIEW pnbr_v_api_reserveringen ( van, tot, key, resid, locatiecode, gebouwcode, fclt_3d_gebouw_key, verdiepingcode, ruimtecode, ruimtenaam, rvck_vnr, voorziening, aantal, prijs, btw, act_oms, srtact_oms, bezoekers, fo_status_key, fo_status, bo_status_key, bo_status, contact, HOST, kostenplaats, resruimtekey, algruimtekey, algruimtenr, omschrijving, opmerking, dagstaat, vroegt_beeindigen ) AS SELECT x.van van_datumtijd, x.tot tot_datumtijd, x.res_rsv_ruimte_key res_key, TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) res_id, rvck.loc_code, rvck.geb_code, rvck.geb_key, rvck.ver_code, rvck.ruimtenr, rvck.ruimtenaam, rvck.vnr, rvck.voorziening, rvck.aantal, ROUND (COALESCE (rvck.res_rsv_prijs, rvck.aantal * rvck.ps), 2) prijs, rvck.btw, x.res_activiteit_omschrijving, x.res_srtactiviteit_omschrijving, x.res_rsv_ruimte_bezoekers bezoekers, x.fo_status_key, DECODE (x.fo_status_key, 1, 'RESOPT', 2, 'RESDEF', 3, 'RESBLK', 'RESDEL') fo_status, x.bo_status_key, x.bo_status_oms, x.contact_naam, x.host_naam, x.kp_nr, rvck.res_ruimte_key, rvck.alg_ruimte_key, rvck.alg_ruimte_nr, x.res_rsv_ruimte_omschrijving oms, x.res_rsv_ruimte_opmerking opm, DECODE ( x.contact_key, 30064, 'Ja', DECODE ( COALESCE ( (SELECT res_kenmerkreservering_waarde FROM res_kenmerkwaarde kw, res_kenmerk k WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 1 AND kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key), '1'), '1', 'Nee', 'Ja')) dagstaat, CASE WHEN x.vt_eindigen = 1 THEN 'Nee' ELSE 'Ja' END vroegt_beeindigen FROM (SELECT rr.res_rsv_ruimte_key, rr.res_reservering_key, rr.res_rsv_ruimte_volgnr, a.res_activiteit_key, a.res_activiteit_omschrijving, sa.res_srtactiviteit_key, sa.res_srtactiviteit_omschrijving, rr.res_rsv_ruimte_van van, rr.res_rsv_ruimte_tot tot, rr.res_rsv_ruimte_bezoekers, fs.res_status_fo_key fo_status_key, fs.res_status_fo_omschrijving fo_status_oms, bs.res_status_bo_key bo_status_key, bs.res_status_bo_omschrijving bo_status_oms, pfc.prs_perslid_key contact_key, pfc.prs_perslid_naam_full contact_naam, pfh.prs_perslid_key host_key, pfh.prs_perslid_naam_full host_naam, k.prs_kostenplaats_nr kp_nr, k.prs_kostenplaats_omschrijving kp_oms, rr.res_rsv_ruimte_omschrijving, rr.res_rsv_ruimte_opmerking, vte.vt_eindigen FROM res_v_aanwezigrsv_ruimte rr, -- Alleen actieve! res_activiteit a, res_srtactiviteit sa, res_status_fo fs, res_status_bo bs, prs_v_perslid_fullnames_all pfc, prs_v_perslid_fullnames_all pfh, prs_kostenplaats k, (SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde vt_eindigen FROM res_kenmerk k, res_kenmerkwaarde kw WHERE kw.res_kenmerk_key = k.res_kenmerk_key AND k.res_kenmerk_key IN (961, 962) AND kw.res_kenmerkwaarde_verwijder IS NULL) vte WHERE rr.res_rsv_ruimte_tot > TRUNC (SYSDATE, 'IW') - 7 AND rr.res_ruimte_opstel_key IS NOT NULL -- Alleen ruimtereserveringen! AND rr.res_activiteit_key = a.res_activiteit_key AND a.res_activiteit_verwijder IS NULL AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key AND sa.res_srtactiviteit_verwijder IS NULL AND rr.res_status_fo_key = fs.res_status_fo_key AND rr.res_status_bo_key = bs.res_status_bo_key AND rr.res_rsv_ruimte_dirtlevel = 0 AND rr.res_rsv_ruimte_contact_key = pfc.prs_perslid_key AND rr.res_rsv_ruimte_host_key = pfh.prs_perslid_key AND rr.res_rsv_ruimte_key = vte.res_rsv_ruimte_key(+) AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x LEFT JOIN (SELECT rrr.res_rsv_ruimte_key, l.alg_locatie_code loc_code, g.alg_gebouw_code geb_code, g.alg_gebouw_key geb_key, v.alg_verdieping_code ver_code, r.alg_ruimte_nr ruimtenr, r.alg_ruimte_key alg_ruimte_key, rr.res_ruimte_key res_ruimte_key, r.alg_ruimte_nr, rr.res_ruimte_nr ruimtenaam, TO_NUMBER (NULL) vnr, ro.res_opstelling_omschrijving voorziening, ROUND ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 2) aantal, -- Duur in uren rrr.res_rsv_ruimte_prijs res_rsv_prijs, rr.res_ruimte_prijs ps, -- Uur-tarief rr.res_ruimte_prijs_ochtend po, rr.res_ruimte_prijs_middag pm, rr.res_ruimte_prijs_avond pa, NULL btw, TO_NUMBER (NULL) k_key, NULL k_naam, NULL k_type, NULL k_waarde FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr, res_opstelling ro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key, COUNT (*) aantal FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rr.res_ruimte_key AND rro.res_opstelling_key = ro.res_opstelling_key AND rr.res_ruimte_key = rar.res_ruimte_key(+) AND rar.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(+)) rvck ON x.res_rsv_ruimte_key = rvck.res_rsv_ruimte_key; CREATE OR REPLACE VIEW pnbr_v_rap_ideeenbus ( melding, datum, fclt_f_korte_omschrijving, fclt_f_status, idee, financieel, immaterieel, afhandeling ) AS SELECT m.mld_melding_key, TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'), mld_kenmerkmelding_waarde korteomschrijving, DECODE ( (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 3261 AND km.mld_melding_key = m.mld_melding_key), 1542, 'Afgewezen', 1541, 'Gehonoreerd', 'In behandeling'), (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 262 AND km.mld_melding_key = m.mld_melding_key) idee, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 263 AND km.mld_melding_key = m.mld_melding_key) financieel, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 264 AND km.mld_melding_key = m.mld_melding_key) immaterieel, mld_melding_opmerking FROM mld_melding m, mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 261 AND km.mld_melding_key = m.mld_melding_key AND mld_stdmelding_key = 262 AND mld_melding_status <> 1; -- rapport om inzage te krijgen in de bezittingen en of ze functioneel beheerders zijn, -- van medewerkers die uitdienst gaan. CREATE OR REPLACE VIEW pnbr_v_rap_uitdienst_objecten ( uitdienst, naam, aantal, objecten, beheer, applicaties ) AS SELECT TO_DATE (prs_kenmerklink_waarde, 'dd-mm-yyyy'), pf.prs_perslid_naam_full, d.aantal, d.ins_deel_omschrijving, f.aantal, f.ins_deel_omschrijving FROM prs_kenmerklink kl, prs_perslid p, prs_v_perslid_fullnames pf, ( SELECT COUNT (ins_deel_key) aantal, LISTAGG ( CASE WHEN aantal < 40 THEN ins_deel_omschrijving ELSE '.' END, ',') WITHIN GROUP (ORDER BY ins_deel_omschrijving) AS ins_deel_omschrijving, d.ins_alg_ruimte_key prs_perslid_key FROM ins_deel d, ( SELECT ins_alg_ruimte_key, COUNT (*) aantal FROM ins_deel WHERE ins_alg_ruimte_type = 'P' AND ins_deel_verwijder IS NULL GROUP BY ins_alg_ruimte_key) da WHERE ins_alg_ruimte_type = 'P' AND ins_deel_verwijder IS NULL AND d.ins_alg_ruimte_key = da.ins_alg_ruimte_key AND COALESCE (ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE GROUP BY d.ins_alg_ruimte_key, da.aantal) d, ( SELECT COUNT (d.ins_deel_key) aantal, LISTAGG (ins_deel_opmerking, ',') WITHIN GROUP (ORDER BY ins_deel_opmerking) AS ins_deel_omschrijving, fac.safe_to_number (ins_kenmerkdeel_waarde) prs_perslid_key FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_deel d WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key IN (549, 550, 551) -- functioneel beheerder altx AND kd.ins_kenmerkdeel_verwijder IS NULL AND d.ins_deel_key = kd.ins_deel_key AND d.ins_deel_verwijder IS NULL GROUP BY fac.safe_to_number (ins_kenmerkdeel_waarde)) f WHERE kl.prs_kenmerklink_verwijder IS NULL AND kl.prs_link_key = p.prs_perslid_key AND kl.prs_kenmerk_key = 1020 AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key = d.prs_perslid_key(+) AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_key = f.prs_perslid_key(+); CREATE OR REPLACE VIEW pnbr_v_noti_resreminder ( code, sender, receiver, text, key, xkey ) AS SELECT code, sender, receiver, 'Herinnering - ' || REPLACE (text, ' ', ' '), key, xkey FROM fac_v_noti_resreminder n, prs_perslid p WHERE n.receiver = p.prs_perslid_key AND prs_perslid_naam NOT LIKE 'INACTIEF:%'; --- PNBR#77939 Reservering herinnering --- Indien contact en host 2 verschillende personen zijn dan ook host een reminder sturen CREATE OR REPLACE FORCE VIEW PNBR_V_NOTI_RESREMINDER_HOST ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY ) AS SELECT 'RESINF' code, NULL sender, rsvr.res_rsv_ruimte_host_key receiver, 'Herinnering - ' || REPLACE ( 'Reservering ' || res.res_reservering_key || ': U heeft op ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM') || ' van ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI') || ' tot ' || TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI') || ' ruimte ' || r.res_ruimte_nr || ' gereserveerd.', ' ', ' ') text, res.res_reservering_key key, rsvr.res_rsv_ruimte_key xkey FROM res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte rsvr, res_ruimte_opstelling opst, res_disc_params rdp, res_ruimte r, prs_perslid p WHERE r.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND res.res_reservering_key = rsvr.res_reservering_key AND opst.res_ruimte_opstel_key = rsvr.res_ruimte_opstel_key AND opst.res_ruimte_key = r.res_ruimte_key AND rsvr.res_status_fo_key <= 5 AND rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen + 1, 'DAGEN') AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_rsv_ruimte_van >= SYSDATE AND p.prs_perslid_key = rsvr.res_rsv_ruimte_host_key AND prs_perslid_naam NOT LIKE 'INACTIEF:%' AND rsvr.res_rsv_ruimte_host_key <> rsvr.res_rsv_ruimte_contact_key UNION ALL SELECT 'RESINF', NULL, res_rsv_ruimte_host_key, 'Herinnering - ' || REPLACE ( 'Reservering ' || res_reservering_key || ': U heeft op ' || TO_CHAR (MIN (van), 'dd-mm') || DECODE ( MIN (van), MAX (tot), ' om ' || TO_CHAR (MIN (van), 'hh24:mi'), ' van ' || TO_CHAR (MIN (van), 'hh24:mi') || ' tot ' || TO_CHAR (MAX (tot), 'hh24:mi')) || ' in ruimte (' || (SELECT alg_gebouw_code || '-' || alg_verdieping_code || '-' || alg_ruimte_nr FROM alg_v_onroerendgoed_gegevens arg WHERE arg.alg_ruimte_key = ruimte_key) || ') ' || COUNT (res_reservering_key) || ' voorziening(en) gereserveerd.', ' ', ' ') text, res_reservering_key, res_rsv_ruimte_key FROM (SELECT rsvr.res_rsv_ruimte_contact_key, rsvr.res_rsv_ruimte_host_key, res.res_reservering_key, rsvd.res_rsv_deel_van van, rsvd.res_rsv_deel_tot tot, rsvr.res_rsv_ruimte_key, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte rsvr, res_disc_params rdp, res_rsv_deel rsvd, res_deel rd, prs_perslid p WHERE rsvd.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key AND rd.res_deel_key = rsvd.res_deel_key AND rd.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND res.res_reservering_key = rsvr.res_reservering_key AND rsvr.res_ruimte_opstel_key IS NULL AND rsvr.res_status_fo_key <= 5 AND rsvd.res_rsv_deel_verwijder IS NULL AND rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen + 1, 'DAGEN') AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvd.res_rsv_deel_van >= SYSDATE AND p.prs_perslid_key = rsvr.res_rsv_ruimte_host_key AND prs_perslid_naam NOT LIKE 'INACTIEF:%' AND rsvr.res_rsv_ruimte_host_key <> rsvr.res_rsv_ruimte_contact_key UNION ALL SELECT rsvr.res_rsv_ruimte_contact_key, rsvr.res_rsv_ruimte_host_key, res.res_reservering_key, rsva.res_rsv_artikel_levering van, rsva.res_rsv_artikel_levering tot, rsvr.res_rsv_ruimte_key, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigreservering res, res_v_aanwezigrsv_ruimte rsvr, res_disc_params rdp, res_rsv_artikel rsva, res_artikel ra, prs_perslid p WHERE rsva.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key AND ra.res_discipline_key = rdp.res_ins_discipline_key AND rsva.res_artikel_key = ra.res_artikel_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND res.res_reservering_key = rsvr.res_reservering_key AND rsvr.res_ruimte_opstel_key IS NULL AND rsvr.res_status_fo_key <= 5 AND rsva.res_rsv_artikel_verwijder IS NULL AND rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd ( SYSDATE, res_disc_params_noti_dagen + 1, 'DAGEN') AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsva.res_rsv_artikel_levering >= SYSDATE AND p.prs_perslid_key = rsvr.res_rsv_ruimte_host_key AND prs_perslid_naam NOT LIKE 'INACTIEF:%' AND rsvr.res_rsv_ruimte_host_key <> rsvr.res_rsv_ruimte_contact_key) GROUP BY res_rsv_ruimte_contact_key, res_rsv_ruimte_host_key, res_reservering_key, res_rsv_ruimte_key, ruimte_key; -- notificatie naar klant die niet binnen 7 dagen op een vraag heeft geantwoord. -- PNBR#82100 Herinnering e-mail van "Reactie aan KLANT vragen", deze moet binnen 2 dagen CREATE OR REPLACE VIEW pnbr_v_noti_mld_fenote_rem ( code, sender, receiver, text, key, xkey ) AS SELECT 'MLDNOT', NULL, prs_perslid_key, 'Herinnering: vraag over melding M' || mld_melding_key, mld_melding_key, NULL FROM ( SELECT m.mld_melding_key, MAX (n.mld_melding_note_aanmaak) mld_melding_note_aanmaak, m.prs_perslid_key FROM mld_melding m, mld_melding_note n WHERE mld_melding_actiecode = 2 AND mld_melding_note_flag = 1 AND n.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key NOT in (14781) AND mld_melding_status IN (0, 2, 3, 4, 7, 99) GROUP BY m.mld_melding_key, m.prs_perslid_key) WHERE TRUNC (mld_melding_note_aanmaak) = TRUNC (SYSDATE) - 7 UNION ALL SELECT 'MLDNOT', NULL, prs_perslid_key, 'Herinnering: vraag over melding M' || mld_melding_key, mld_melding_key, NULL FROM ( SELECT m.mld_melding_key, MAX (n.mld_melding_note_aanmaak) mld_melding_note_aanmaak, m.prs_perslid_key FROM mld_melding m, mld_melding_note n WHERE mld_melding_actiecode = 2 AND mld_melding_note_flag = 1 AND n.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = 14781 AND mld_melding_status IN (0, 2, 3, 4, 7, 99) GROUP BY m.mld_melding_key, m.prs_perslid_key) WHERE TRUNC (mld_melding_note_aanmaak) = TRUNC (SYSDATE) - 2; CREATE OR REPLACE VIEW pnbr_v_rap_mld_fenote ( melding, melder, standaardmelding, behandelgroep, omschrijving ) AS SELECT 'M' || mld_melding_key, pf.prs_perslid_naam_full, std.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, m.mld_melding_omschrijving FROM prs_v_perslid_fullnames pf, mld_stdmelding std, ins_tab_discipline d, ( SELECT m.mld_melding_key, m.mld_stdmelding_key, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)) mld_melding_omschrijving, MAX (n.mld_melding_note_aanmaak) mld_melding_note_aanmaak, m.prs_perslid_key FROM mld_melding m, mld_melding_note n WHERE mld_melding_actiecode = 2 AND mld_melding_note_flag = 1 AND n.mld_melding_key = m.mld_melding_key AND mld_melding_status IN (0, 2, 3, 4, 7, 99) GROUP BY m.mld_melding_key, m.prs_perslid_key, mld_stdmelding_key, TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000))) m WHERE mld_melding_note_aanmaak < SYSDATE - 14 AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key; -- PNBR#28111 Rapportage met kunstobjecten inclusief foto -- Overige keys zijn kenmerken voor deze objecten die dezelfde naam hebben als het veld. CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST ( FCLT_F_OBJECT, HTML_INS_DEEL_KEY, FCLT_F_KUNSTENAAR, FCLT_F_TITEL, THEMA, TECHNIEK_KUNST, MATERIAAL, DATERING, HOOGTE, BREEDTE, DIEPTE, HXBXD_INCL_LIJST, EIGENAAR, ACHTERGRONDINFO, LAATSTE_TAXATIEDATUM, GETAXEERD_DOOR, TAXATIEWAARDE, VERZEKERDE_WAARDE, RESTAURATIE_ONDERHOUD, HTML_FOTO ) AS SELECT ins_deel_omschrijving id, '' || HTF.escape_sc (ins_deel_omschrijving) || '', (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 3201 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND d.ins_deel_key = ikd.ins_deel_key) Naam_kunstenaar, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3221 AND d.ins_deel_key = ikd.ins_deel_key) Titel, DECODE ( (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3242 AND d.ins_deel_key = ikd.ins_deel_key), NULL, (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 3241 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND d.ins_deel_key = ikd.ins_deel_key), (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 3241 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND d.ins_deel_key = ikd.ins_deel_key) || ' / ' || (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3242 AND d.ins_deel_key = ikd.ins_deel_key)) thema, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3261 AND d.ins_deel_key = ikd.ins_deel_key) techniek_kunst, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3281 AND d.ins_deel_key = ikd.ins_deel_key) Materiaal, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3282 AND d.ins_deel_key = ikd.ins_deel_key) datering, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3301 AND d.ins_deel_key = ikd.ins_deel_key) Hoogte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3302 AND d.ins_deel_key = ikd.ins_deel_key) Breedte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3303 AND d.ins_deel_key = ikd.ins_deel_key) Diepte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3321 AND d.ins_deel_key = ikd.ins_deel_key) hxbxd_incl_lijst, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3322 AND d.ins_deel_key = ikd.ins_deel_key) Eigenaar, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3341 AND d.ins_deel_key = ikd.ins_deel_key) achtergrondinfo, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3361 AND d.ins_deel_key = ikd.ins_deel_key) laatste_taxatiedatum, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3362 AND d.ins_deel_key = ikd.ins_deel_key) getaxeerd_door, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3363 AND d.ins_deel_key = ikd.ins_deel_key) Taxatiewaarde, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3381 AND d.ins_deel_key = ikd.ins_deel_key) verzekerde_waarde, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 3401 AND d.ins_deel_key = ikd.ins_deel_key) restauratie_onderhoud, DECODE ( (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 4321 AND d.ins_deel_key = ikd.ins_deel_key), NULL, 'Geen foto', '') Foto FROM ins_deel d WHERE ins_srtdeel_key = 1082 AND ins_deel_verwijder IS NULL ORDER BY 3, 1; -- PNBR#31907: Objectwijzigingen (alle) en ook direct bovenstaande rapportage -- daarmee in lijn gebracht! CREATE OR REPLACE VIEW pnbr_v_rap_objectwijzigingen ( hide_f_id, html_identificatie, beschrijving, fclt_f_discipline, fclt_f_groep, mutatie, fclt_d_mutatiedatum, gemuteerd_door ) AS SELECT d.ins_deel_omschrijving, '' || d.ins_deel_omschrijving || '' identificatie, d.ins_deel_opmerking beschrijving, td.ins_discipline_omschrijving discipline, sd.ins_srtdeel_omschrijving groep, DECODE ( d.ins_deel_verwijder, NULL, lcl.x ('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms), 'Object verwijderd') || DECODE ( sn.fac_srtnotificatie_code, 'INSUPD', ' (' || COUNT (sn.fac_srtnotificatie_oms) || ')') mutatie, TO_CHAR (t.fac_tracking_datum, 'dd-mm-yyyy') mutatiedatum, p.prs_perslid_naam_friendly FROM fac_tracking t, fac_srtnotificatie sn, ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_discipline td, prs_v_perslid_fullnames_all p WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'deel' AND t.fac_tracking_refkey = d.ins_deel_key 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 p.prs_perslid_key = t.prs_perslid_key GROUP BY d.ins_deel_omschrijving, d.ins_deel_key, d.ins_deel_opmerking, td.ins_discipline_omschrijving, sd.ins_srtdeel_omschrijving, d.ins_deel_verwijder, sn.fac_srtnotificatie_oms, sn.fac_srtnotificatie_code, sn.fac_srtnotificatie_key, p.prs_perslid_naam_friendly, t.fac_tracking_datum; CREATE OR REPLACE VIEW pnbr_v_rap_open_cmdb_status ( hide_f_volgorde, html_melding, html_wijziging, datum, melding_status, klasse, status, domein, laatste_update, omschrijving_wijziging, gewenste_opleverdat, verwachte_oplostijd ) AS SELECT TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'), '' || w.start_key || '', '' || m.mld_melding_key || '', m.mld_melding_datum, (SELECT mld_statuses_omschrijving FROM mld_statuses WHERE mld_statuses_key = m.mld_melding_status) melding_status, (SELECT fac_usrdata_code FROM mld_kenmerkmelding km2, mld_kenmerk k, fac_usrdata ud WHERE km2.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 3565 -- Wijzigingsklasse AND km2.mld_melding_key = m.mld_melding_key AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) klasse, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 3621 -- status AND ud.fac_usrdata_key = fac.safe_to_number (mld_kenmerkmelding_waarde) AND km.mld_melding_key = m.mld_melding_key) status, (SELECT ins_discipline_omschrijving FROM ins_tab_discipline d, mld_stdmelding std WHERE d.ins_discipline_key = std.mld_ins_discipline_key AND std.mld_stdmelding_key = m.mld_stdmelding_key) domein, (SELECT MAX (fac_tracking_datum) FROM (SELECT fac_tracking_datum, fac_tracking_refkey FROM fac_tracking t WHERE ( t.fac_tracking_oms LIKE '%' || 'Status wijzigingsbeheer:' || '%' OR t.fac_srtnotificatie_key = 161) UNION ALL SELECT mld_melding_note_aanmaak, mld_melding_key FROM mld_melding_note mn) grp WHERE grp.fac_tracking_refkey = m.mld_melding_key) laatstestatwijz, m.mld_melding_omschrijving, (SELECT fac.safe_to_date (mld_kenmerkmelding_waarde, 'dd-mm-yyyy') FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 3568 -- gewenste opleverdatum AND km.mld_melding_key = m.mld_melding_key) gewenste_opleverdat, m.mld_melding_einddatum verwachte_oplostijd FROM (SELECT m.mld_melding_key start_key, m2.mld_melding_key vervolg_key FROM (SELECT mld_kenmerkmelding_waarde, km.mld_melding_key FROM mld_kenmerkmelding km, mld_kenmerk k2 WHERE km.mld_kenmerk_key = k2.mld_kenmerk_key AND k2.mld_srtkenmerk_key = 3601) km2, -- wijziging mld_melding m, mld_melding m2, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_melding_key = km2.mld_melding_key(+) AND m2.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND ins_srtdiscipline_key = 21 -- wijzigingsverzoeken AND m2.mld_melding_start_key = m.mld_melding_key AND m2.mld_melding_status NOT IN (1, 5, 6) UNION SELECT NULL start_key, m2.mld_melding_key vervolg_key FROM mld_melding m2, mld_stdmelding std, ins_tab_discipline d WHERE m2.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND ins_srtdiscipline_key = 21 -- wijzigingsverzoeken AND mld_melding_start_key IS NULL AND m2.mld_melding_status NOT IN (1, 5, 6)) w, mld_melding m WHERE w.vervolg_key = m.mld_melding_key; CREATE OR REPLACE VIEW pnbr_v_rap_cmdb_status ( hide_f_volgorde, html_melding, html_wijziging, datum, klasse, status, domein, laatste_update, omschrijving_wijziging, gewenste_opleverdatum ) AS SELECT TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'), '' || w.start_key || '', '' || m.mld_melding_key || '', m.mld_melding_datum, (SELECT fac_usrdata_code FROM mld_kenmerkmelding km2, mld_kenmerk k, fac_usrdata ud WHERE km2.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 3565 -- Wijzigingsklasse AND km2.mld_melding_key = m.mld_melding_key AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) klasse, (SELECT fac_usrdata_omschr FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud, ( SELECT kmmax.mld_melding_key, MAX (kmmax.mld_kenmerkmelding_aanmaak) laatste FROM mld_kenmerkmelding kmmax, mld_kenmerk kmax WHERE kmmax.mld_kenmerk_key = kmax.mld_kenmerk_key AND kmax.mld_srtkenmerk_key = 3621 GROUP BY kmmax.mld_melding_key) lkm WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND lkm.mld_melding_key = km.mld_melding_key AND lkm.laatste = km.mld_kenmerkmelding_aanmaak AND k.mld_srtkenmerk_key = 3621 -- status AND ud.fac_usrdata_key = fac.safe_to_number (mld_kenmerkmelding_waarde) AND km.mld_melding_key = m.mld_melding_key) status, (SELECT ins_discipline_omschrijving FROM ins_tab_discipline d, mld_stdmelding std WHERE d.ins_discipline_key = std.mld_ins_discipline_key AND std.mld_stdmelding_key = m.mld_stdmelding_key) domein, (SELECT MAX (fac_tracking_datum) FROM fac_tracking t WHERE fac_tracking_refkey = m.mld_melding_key AND t.fac_tracking_oms LIKE '%' || 'Status wijzigingsbeheer:' || '%') laatstestatwijz, m.mld_melding_omschrijving, (SELECT fac.safe_to_date (mld_kenmerkmelding_waarde, 'dd-mm-yyyy') FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 3568 -- gewenste opleverdatum AND km.mld_melding_key = m.mld_melding_key) gewenste_opleverdatum FROM (SELECT m.mld_melding_key start_key, m2.mld_melding_key vervolg_key FROM (SELECT mld_kenmerkmelding_waarde, km.mld_melding_key FROM mld_kenmerkmelding km, mld_kenmerk k2 WHERE km.mld_kenmerk_key = k2.mld_kenmerk_key AND k2.mld_srtkenmerk_key = 3601) km2, -- wijziging mld_melding m, mld_melding m2, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_melding_key = km2.mld_melding_key(+) AND m2.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND ins_srtdiscipline_key = 21 -- wijzigingsverzoeken AND m2.mld_melding_start_key = m.mld_melding_key AND m2.mld_melding_status IN (5, 6) UNION ALL SELECT NULL start_key, m2.mld_melding_key vervolg_key FROM mld_melding m2, mld_stdmelding std, ins_tab_discipline d WHERE m2.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND ins_srtdiscipline_key = 21 -- wijzigingsverzoeken AND mld_melding_start_key IS NULL AND m2.mld_melding_status IN (5, 6)) w, mld_melding m WHERE w.vervolg_key = m.mld_melding_key; -- View achter de API om de software componenten beschikbaar te stellen op brain CREATE OR REPLACE VIEW pnbr_v_rap_sw_catalog ( ins_deel_key, omschrijving, groep, code_applicatie, lange_applicatienaam, functionele_beschrijving, versie_applicatie, locatie_van_installatie, categorie, fabrikant, koppelingen_met, beschrijving_relatie_met, applicatiebeheerder, technisch_beheerder, functioneel_beheerder_alt_1, functioneel_beheerder_alt_2, functioneel_beheerder_alt_3, eigenaar_organisatieonderdeel, bedrijfskritisch, dienstverleningsniveau, status_software, contract_beschikbaar, licentie_beschikbaar, indicatie_aantal_gebruikers, relatie_met_snow, beschikbare_documentatie, locatie_documentatie, notitie, bevat_data_met_bewaartermijn, startdatum_gebruik_applicatie, einddatum_gebruik_applicatie ) AS SELECT d.ins_deel_key, ins_deel_omschrijving, ins_srtdeel_omschrijving groep, pnbr.get_kenmerk ('INS', 661, d.ins_deel_key), -- Code_applicatie pnbr.get_kenmerk ('INS', 662, d.ins_deel_key), -- Lange applicatienaam pnbr.get_kenmerk ('INS', 663, d.ins_deel_key), -- Functionele beschrijving pnbr.get_kenmerk ('INS', 664, d.ins_deel_key), -- Versie applicatie pnbr.get_kenmerk ('INS', 665, d.ins_deel_key), -- Locatie van installatie pnbr.get_kenmerk ('INS', 667, d.ins_deel_key), -- Categorie pnbr.get_kenmerk ('INS', 668, d.ins_deel_key), -- Fabrikant pnbr.get_kenmerk ('INS', 669, d.ins_deel_key), -- Koppelingen met andere applicatie(s) pnbr.get_kenmerk ('INS', 670, d.ins_deel_key), -- Beschrijving relatie met andere configuratie items pnbr.get_kenmerk ('INS', 671, d.ins_deel_key), -- Applicatiebeheerder pnbr.get_kenmerk ('INS', 672, d.ins_deel_key), -- Technisch beheerder pnbr.get_kenmerk ('INS', 673, d.ins_deel_key), -- Functioneel beheerder alt 1 pnbr.get_kenmerk ('INS', 674, d.ins_deel_key), -- Functioneel beheerder alt 2 pnbr.get_kenmerk ('INS', 675, d.ins_deel_key), -- Functioneel beheerder alt 3 pnbr.get_kenmerk ('INS', 676, d.ins_deel_key), -- Eigenaar /Organisatieonderdeel pnbr.get_kenmerk ('INS', 677, d.ins_deel_key), -- Bedrijfskritisch pnbr.get_kenmerk ('INS', 678, d.ins_deel_key), -- Dienstverleningsniveau pnbr.get_kenmerk ('INS', 679, d.ins_deel_key), -- Status Software pnbr.get_kenmerk ('INS', 680, d.ins_deel_key), -- Contract beschikbaar pnbr.get_kenmerk ('INS', 681, d.ins_deel_key), -- Licentie beschikbaar pnbr.get_kenmerk ('INS', 682, d.ins_deel_key), -- Indicatie aantal gebruikers pnbr.get_kenmerk ('INS', 683, d.ins_deel_key), -- Relatie met SNOW pnbr.get_kenmerk ('INS', 684, d.ins_deel_key), -- Beschikbare documentatie pnbr.get_kenmerk ('INS', 685, d.ins_deel_key), -- Locatie documentatie pnbr.get_kenmerk ('INS', 686, d.ins_deel_key), -- Notitie pnbr.get_kenmerk ('INS', 741, d.ins_deel_key), -- Bevat data met bewaartermijn pnbr.get_kenmerk ('INS', 687, d.ins_deel_key), -- Startdatum gebruik applicatie pnbr.get_kenmerk ('INS', 688, d.ins_deel_key) -- Einddatum gebruik applicatie FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_kenmerkdeel kd, ins_kenmerk k WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = 1621 -- software AND d.ins_deel_key = kd.ins_deel_key AND kd.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = 567 -- dienstverleningsniveau AND ( kd.ins_kenmerkdeel_waarde = 2990 -- kern OR kd.ins_kenmerkdeel_waarde = 2991 -- functionele ruimte ); CREATE OR REPLACE VIEW pnbr_v_rap_melding_top25 ( ins_discipline_omschrijving, mld_stdmelding_omschrijving, aantal ) AS SELECT ins_discipline_omschrijving, mld_stdmelding_omschrijving, COUNT (mld_melding_key) FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND m.mld_melding_datum BETWEEN TO_DATE ( TO_CHAR ( ADD_MONTHS (SYSDATE, -1), 'yyyymm') || '01', 'yyyymmdd') AND TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd') GROUP BY mld_stdmelding_omschrijving, d.ins_discipline_omschrijving; CREATE OR REPLACE VIEW pnbr_v_rap_melding_oro ( mld_melding_key, mld_discipline_stdmelding, mld_melding_datum, prs_perslid_naam, mld_melding_omschrijving ) AS SELECT mld_melding_key, d.ins_discipline_omschrijving || '-' || std.mld_stdmelding_omschrijving, mld_melding_datum, pf.prs_perslid_naam_full, mld_melding_omschrijving FROM mld_melding m, prs_perslid p, prs_v_perslid_fullnames pf, mld_stdmelding std, ins_tab_discipline d WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND m.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = 381 AND m.mld_melding_datum BETWEEN TO_DATE ( TO_CHAR ( ADD_MONTHS (SYSDATE, -1), 'yyyymm') || '01', 'yyyymmdd') AND TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd'); CREATE OR REPLACE VIEW pnbr_v_rap_mnd_bestelling ( catalogus, groep, aantal, prijs ) AS SELECT d.ins_discipline_omschrijving, sg.bes_srtgroep_omschrijving, COUNT (DISTINCT b.bes_bestelling_key), SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs) prijs FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_srtdeel bd, bes_srtgroep sg, bes_discipline d WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = bd.bes_srtdeel_key AND bd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_omschrijving NOT LIKE '%-ink' AND b.bes_bestelling_datum BETWEEN TO_DATE ( TO_CHAR ( ADD_MONTHS (SYSDATE, -1), 'yyyymm') || '01', 'yyyymmdd') AND TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd') GROUP BY d.ins_discipline_omschrijving, sg.bes_srtgroep_omschrijving; CREATE OR REPLACE VIEW pnbr_v_rap_mnd_kosten_afd ( afdeling, prijs ) AS SELECT prs_afdeling_naam, SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs) prijs FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_srtdeel bd, bes_srtgroep sg, bes_discipline d, prs_afdeling a, prs_perslid p WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = bd.bes_srtdeel_key AND bd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND d.ins_discipline_omschrijving NOT LIKE '%-ink' AND b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.bes_bestelling_datum BETWEEN TO_DATE ( TO_CHAR ( ADD_MONTHS (SYSDATE, -1), 'yyyymm') || '01', 'yyyymmdd') AND TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd') GROUP BY a.prs_afdeling_naam; CREATE OR REPLACE VIEW pnbr_v_rap_mnd_res_dag ( hide_f_volgorde, fclt_f_maaand, fclt_f_dag, fclt_f_activiteit, fclt_f_frontend_frontoffice, aantal, prijs ) AS SELECT TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm') || TO_CHAR (res_rsv_ruimte_van, 'd'), TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm'), DECODE (TO_CHAR (res_rsv_ruimte_van, 'd'), '1', 'Zondag', '2', 'Maandag', '3', 'Dinsdag', '4', 'Woensdag', '5', 'Donderdag', '6', 'Vrijdag', '7', 'Zaterdag') dag, res_activiteit_omschrijving, fe_fo, COUNT (rrr.res_rsv_ruimte_key) aantal, SUM (res.getdeelresprijs (rrr.res_rsv_ruimte_key)) prijs FROM res_rsv_ruimte rrr, res_activiteit a, (SELECT fac_tracking_refkey res_rsv_ruimte_key, DECODE (res_rsv_ruimte_contact_key, tr.prs_perslid_key, 'Frontend', 'Frontoffice') fe_fo FROM fac_tracking tr, fac_srtnotificatie str, res_rsv_ruimte rrr2 WHERE str.fac_srtnotificatie_code = 'RESNEW' AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND tr.fac_tracking_refkey = rrr2.res_rsv_ruimte_key) f WHERE rrr.res_activiteit_key = a.res_activiteit_key AND rrr.res_rsv_ruimte_key = f.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_verwijder IS NULL AND ( rrr.res_ruimte_opstel_key IS NOT NULL OR EXISTS (SELECT res_rsv_artikel_key FROM res_rsv_artikel rra WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key UNION ALL SELECT res_rsv_deel_key FROM res_rsv_deel rrd WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)) AND res_rsv_ruimte_van > ADD_MONTHS ( TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd'), -4) AND TO_CHAR (res_rsv_ruimte_van, 'yyyymm') < TO_CHAR (SYSDATE, 'yyyymm') GROUP BY TO_CHAR (res_rsv_ruimte_van, 'd'), TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm'), res_activiteit_omschrijving, f.fe_fo; CREATE OR REPLACE VIEW pnbr_v_mld_kenmrk ( melding_key, meldingnummer, melding_start_key, externnummer, 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_einddatum_std, melding_acceptdatum, melding_afgemeld, melding_accepted, doorlooptijd_werkdgn, doorlooptijd_werkuren, onderwerp, vomschrijving, melding_opmerking, prioriteit, prioriteittxt, rating, rating_opmerking, bolletje, 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, relatie_security, relatie_transformatie ) AS SELECT melding_key, meldingnummer, melding_start_key, externnummer, 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_einddatum_std, melding_acceptdatum, melding_afgemeld, melding_accepted, doorlooptijd_werkdgn, doorlooptijd_werkuren, onderwerp, vomschrijving, melding_opmerking, prioriteit, prioriteittxt, rating, rating_opmerking, bolletje, 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, pnbr.get_kenmerk ('MLD', 19903, melding_key) relatie_security, pnbr.get_kenmerk ('MLD', 19903, melding_key) relatie_transformatie FROM mld_v_udr_melding; ------------------------------------------------------------------------------------ -- -- Tijdelijke notificatie voor bezoek dat aangemeld is in Toren C van het -- SNS Reaal gebouw -- ------------------------------------------------------------------------------------ CREATE OR REPLACE VIEW pnbr_v_rap_bezoekers_c_toren ( hide_f_ts, locatie, datum, van, tot, bezoeker, bedrijf, opdrachtgever, telefoon, opmerking ) AS SELECT TO_CHAR (bez_afspraak_datum, 'yyyymmddhh24mi') ts, l.alg_locatie_code, TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum, TO_CHAR (bez_afspraak_datum, 'hh24:mi') van, TO_CHAR (bez_afspraak_eind, 'hh24:mi') tot, bez_afspraak_naam bezoeker, bez_afspraak_bedrijf bedrijf, bez_afspraak_gastheer opdrachtgever, h.prs_perslid_telefoonnr telefoon, a.bez_afspraak_opmerking opmerking FROM bez_afspraak a, bez_bezoekers b, prs_perslid h, alg_locatie l WHERE a.bez_afspraak_key = b.bez_afspraak_key AND a.alg_locatie_key = 221 AND a.alg_locatie_key = l.alg_locatie_key AND bez_afspraak_host_key = h.prs_perslid_key AND bez_afspraak_datum BETWEEN TRUNC (SYSDATE) AND fac.datumtijdplusuitvoertijd ( TRUNC (SYSDATE), 2, 'DAGEN'); -- notificatie naar medewerkers van SNS Reaal over bezoekers voor vandaag en volgende werkdag. CREATE OR REPLACE VIEW pnbr_v_noti_bezoekers_c_toren ( code, sender, receiver, text, key, xkey ) AS SELECT 'FACUSR', NULL, 23044, 'PNB Bezoekers voor vandaag en eerstvolgende werkdag', 681, NULL FROM DUAL; CREATE OR REPLACE VIEW PNBR_V_RAP_FAQMLD_VERVALLEN ( Kennisbankitem, Publicatiedatum, FCLT_F_Vakgroep, FCLT_F_Melding, Vervaldatum, Verwijderdatum ) AS SELECT fac_faq_question kennisbankitem, fac_faq_datum publicatiedatum, ins_srtdiscipline_prefix || '-' || ins_discipline_omschrijving vakgroep, mld_stdmelding_omschrijving melding, mld_stdmelding_vervaldatum vervaldatum, mld_stdmelding_verwijder verwijderdatum FROM fac_faq f, mld_stdmeldingfaq fm, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt WHERE f.fac_faq_key = fm.fac_faq_key AND fm.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key AND ( std.mld_stdmelding_verwijder IS NOT NULL OR std.mld_stdmelding_vervaldatum < SYSDATE) UNION ALL SELECT fac_faq_question vraag, fac_faq_datum publicatiedatum, ins_srtdiscipline_prefix || '-' || ins_discipline_omschrijving vakgroep, NULL melding, NULL vervaldatum, d.ins_discipline_verwijder verwijderdatum FROM fac_faq f, mld_stdmeldingfaq fm, mld_discipline d, ins_srtdiscipline srt WHERE f.fac_faq_key = fm.fac_faq_key AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key AND d.ins_discipline_key = fm.ins_discipline_key AND fm.mld_stdmelding_key IS NULL AND d.ins_discipline_verwijder IS NOT NULL; -- PNBR#31166. De MLDNEW notificatie staat uit. -- Toch moet de melding controle email adres (3941) wel worden genotificeerd CREATE OR REPLACE VIEW PNBR_V_NOTI_MLD_CONTROLEMAIL ( SENDER, RECEIVER, TEXT, CODE, KEY, XKEY ) AS SELECT NULL sender, prs_perslid_key_voor, 'Nieuwe melding ' || ins_srtdiscipline_prefix || '-' || mld_melding_key || ' (' || d.ins_discipline_omschrijving || '/' || std.mld_stdmelding_omschrijving || ') geregistreerd' text, 'MLDNEW' code, mld_melding_key key, NULL xkey FROM mld_melding m, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt WHERE m.mld_stdmelding_key = 3941 AND mld_melding_status != 1 AND m.mld_stdmelding_key = std.mld_stdmelding_key AND d.ins_discipline_key = std.mld_ins_discipline_key AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key AND mld_melding_datum > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MLD_CONTROLEMAIL') AND mld_melding_datum < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MLD_CONTROLEMAIL'); -- PNBR#31533 - notijob tbv voorraadbehher -- Als de minimale voorrraad van een artikel is behaald dan wordt een CUST05 notificatie verstuurd naar de groep LOGISTIEK VOORRAAD. CREATE OR REPLACE VIEW PNBR_V_NOTI_BES_VOORRAAD ( SENDER, RECEIVER, TEXT, CODE, KEY, XKEY ) AS SELECT NULL, prs.prs_perslid_key, 'Herinnering: Minimale voorraad (' || vmin || ') van artikel ' || artikel || ' (nr. ' || nr || ') is bereikt', 'CUST05', bst.bes_key, NULL FROM (SELECT extern.dkey, extern.bes_srtdeel_nr nr, intern.bes_srtdeel_key, COALESCE (intern.bes_srtdeel_omschrijving, extern.bes_srtdeel_omschrijving) artikel, extern.vmin, extern.geleverd - COALESCE (intern.besteld, 0) voorraad FROM (SELECT bd.ins_discipline_key dkey, -- INKOOP-key sd.bes_srtdeel_nr, -- ext. artikelnr sd.bes_srtdeel_omschrijving, sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin (SELECT SUM (boi.bes_bestelopdr_item_aantalontv) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE -- boi.bes_bestelopdr_item_status in (6,7) AND b.bes_bestelling_key = bi.bes_bestelling_key AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) geleverd FROM bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_ins_discipline_key_inkoop IS NULL AND bd.ins_discipline_key IN (SELECT bes_ins_discipline_key_inkoop FROM bes_disc_params WHERE bes_ins_discipline_key_inkoop IS NOT NULL)) extern -- Inkoop artikelen uit externe catalogus! FULL JOIN (SELECT dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key sd.bes_srtdeel_key, sd.bes_srtdeel_nr, -- int. artikelnr sd.bes_srtdeel_omschrijving, bd.ins_discipline_omschrijving, -- int. catalogusnaam (SELECT SUM ( COALESCE ( boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal)) FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key) besteld FROM bes_srtdeel sd, bes_srtgroep g, bes_discipline bd, bes_disc_params dp WHERE sd.bes_srtdeel_verwijder IS NULL AND sd.bes_srtgroep_key = g.bes_srtgroep_key AND g.ins_discipline_key = bd.ins_discipline_key AND bd.ins_discipline_key = dp.bes_ins_discipline_key AND dp.bes_ins_discipline_key_inkoop IS NOT NULL) intern -- Verkoop artikelen uit interne catalogus! ON extern.dkey = intern.dkey AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr) vrd, ( SELECT MAX (bes_bestelling_datum) bes_dat, MAX (b.bes_bestelling_key) bes_key, bes_srtdeel_key FROM bes_bestelling b, bes_bestelling_item bi WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND b.bes_bestelling_datum > SYSDATE - 90 GROUP BY bes_srtdeel_key) bst, (SELECT p.prs_perslid_key FROM fac_groep fg, fac_gebruikersgroep fgg, prs_perslid p WHERE fac_groep_upper = 'LOGISTIEK VOORRAAD' AND fg.fac_groep_key = fgg.fac_groep_key AND p.prs_perslid_key = fgg.prs_perslid_key AND p.prs_perslid_verwijder IS NULL) prs WHERE vrd.bes_srtdeel_key = bst.bes_srtdeel_key AND vrd.vmin >= vrd.voorraad AND bst.bes_dat > (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_BES_VOORRAAD') AND bst.bes_dat < (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_BES_VOORRAAD'); -- PNBR#35208 backoffice gebak reminder (autorisatiegroep hutten = key 101) -- als er nieuwe (status gefiatteerd = key 3) gebak aanvragen (=2161) zijn -- PNBR# 35590 backoffice gebak bestellen omgezet van bestelling naar reservering -- cateraar krijgt een dag van te voren bericht als er gebakbestelling voor 'morgen' zijn -- gefilterd op ccatalogi van bakkers Hutten (2342), Vermeulen (2341) en De Rouw (2343) CREATE OR REPLACE FORCE VIEW PNBR_V_NOTI_BES_BOGEBREMINDER ( CODE, SENDER, RECEIVER, TEXT, KEY, PAR1, PAR2, XKEY ) AS SELECT 'CUST06', NULL, prs_perslid_key, 'Let op: er zijn ' || aantal || ' gebakbestelregels voor morgen', res_artikel_key, NULL, NULL, NULL FROM (SELECT COUNT (*) aantal, MAX (res_artikel_key) res_artikel_key FROM ( SELECT rsv.res_artikel_key FROM RES_V_AANWEZIGRSV_ARTIKEL rsv, RES_ARTIKEL a WHERE A.RES_ARTIKEL_KEY = RSV.RES_ARTIKEL_KEY AND A.RES_DISCIPLINE_KEY IN (2342, 2341, 2343) AND TRUNC (rsv.res_rsv_artikel_levering) = TRUNC (SYSDATE) + 1 GROUP BY rsv.res_artikel_key) HAVING COUNT (*) > 0) x, (SELECT p.prs_perslid_key FROM fac_gebruikersgroep fg, prs_perslid p WHERE fac_groep_key = 101 AND p.prs_perslid_key = fg.prs_perslid_key AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_email IS NOT NULL AND p.prs_perslid_oslogin IS NOT NULL) y; CREATE OR REPLACE FORCE VIEW PNBR_V_RAP_GEBAKBESTELLING ( LEVERANCIER, ARTIKEL, EENHEID, PRIJS, AANTAL, TOTAAL, LEVERDATUM, KOSTENPLAATS, OMSCHR_KOSTENPLAATS, MEDEWERKER, HTML_BESTELNUMMER, NOTITIE, ZAKELIJK_PRIVE, RESERVERINGNR ) AS SELECT D.INS_DISCIPLINE_OMSCHRIJVING AS Leverancier, A.RES_ARTIKEL_OMSCHRIJVING AS Artikel, A.RES_ARTIKEL_EENHEID AS Eenheid, A.RES_ARTIKEL_PRIJS AS Prijs, RA.RES_RSV_ARTIKEL_AANTAL AS Aantal, RA.RES_RSV_ARTIKEL_LEVERING AS Leverdatum, COALESCE (A.RES_ARTIKEL_PRIJS, 0) * RA.RES_RSV_ARTIKEL_AANTAL, KP.PRS_KOSTENPLAATS_NR AS Kostenplaats, KP.PRS_KOSTENPLAATS_OMSCHRIJVING AS Omschr_kostenplaats, P.PRS_PERSLID_NAAM_FRIENDLY AS Medewerker, '' || rr.res_reservering_key || '/' || res_rsv_ruimte_volgnr || '' AS html_Bestelnummer, RR.RES_RSV_RUIMTE_OPMERKING, (SELECT ud.fac_usrdata_omschr FROM res_kenmerkwaarde rk, fac_usrdata ud WHERE rk.res_kenmerk_key = 262 AND ud.fac_usrtab_key = 1943 -- kenmerk + usertab zakelijk of prive AND ud.fac_usrdata_key = fac.safe_to_number (rk.res_kenmerkreservering_waarde) AND rk.res_rsv_ruimte_key = rr.res_rsv_ruimte_key) zakpriv, RR.RES_RESERVERING_KEY || '/' || res_rsv_ruimte_volgnr FROM res_rsv_artikel ra, res_artikel a, res_rsv_ruimte rr, prs_kostenplaats kp, PRS_V_PERSLID_FULLNAMES_ALL P, res_activiteitdiscipline AD, ins_tab_discipline d WHERE A.RES_ARTIKEL_KEY = RA.RES_ARTIKEL_KEY AND A.RES_DISCIPLINE_KEY IN (2342, 2341, 2343) AND RA.RES_RSV_RUIMTE_KEY = RR.RES_RSV_RUIMTE_KEY AND RR.PRS_KOSTENPLAATS_KEY = kp.prs_kostenplaats_key AND RR.RES_RSV_RUIMTE_HOST_KEY = P.PRS_PERSLID_KEY AND AD.RES_DISCIPLINE_KEY = A.RES_DISCIPLINE_KEY AND AD.RES_DISCIPLINE_KEY = D.INS_DISCIPLINE_KEY AND RR.RES_RSV_RUIMTE_VERWIJDER IS NULL AND RA.RES_RSV_ARTIKEL_AFGEMELD IS NULL AND RA.RES_RSV_ARTIKEL_VERWIJDER IS NULL; -- Rapportage inzicht in welke meldingen autgroep Servicedesk (key 253) registreerd (key 39) -- en welke meldingen autgroep Servicedesk (key 253) afmeld (key 35) CREATE OR REPLACE VIEW mld_v_udr_mld_actiegroep ( melding_key, registratie_datum, geregistreerd_door, registratie_autorisatiegroep, afmeld_datum, afgemeld_door, afmeld_autorisatiegroep, zelfservice, meldingnummer, locatiecode, locatie_omschrijving, gebouwcode, gebouw_omschrijving, verdieping, ruimtenr, ruimte_omschrijving, melder, afdeling, afdeling_omschrijving, vakgroeptype, vakgroep, standaard_melding, melding_datum, melding_einddatum, omschrijving, status ) AS SELECT mld_melding_key, tr2.fac_tracking_datum registratie_datum, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = tr2.prs_perslid_key) geregistreerd_door, tr2.groep registratie_autorisatiegroep, tr.fac_tracking_datum afmeld_datum, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = tr.prs_perslid_key) afgemeld_door, tr.groep afmeld_autorisatiegroep, DECODE (tr2.prs_perslid_key, m.prs_perslid_key, 'Ja', 'Nee') zelfservice, sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer, alg_locatie_code locatie, alg_locatie_omschrijving locatie_omschrijving, og.alg_gebouw_code gebouw, og.alg_gebouw_naam gebouw_naam, og.alg_verdieping_code verdieping, og.alg_ruimte_nr ruimte, og.alg_ruimte_omschrijving ruimte_omschrijving, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = m.prs_perslid_key_voor) melder, (SELECT prs_afdeling_naam FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling, (SELECT prs_afdeling_omschrijving FROM prs_afdeling afd, prs_perslid pp WHERE afd.prs_afdeling_key = pp.prs_afdeling_key AND pp.prs_perslid_key = m.prs_perslid_key) afdeling_omschrijving, sd.ins_srtdiscipline_omschrijving vakgroeptype, md.ins_discipline_omschrijving vakgroep, s.mld_stdmelding_omschrijving standaard_melding, mld_melding_datum, m.mld_melding_einddatum einddatum, mld_melding_omschrijving, (SELECT mld_statuses_omschrijving FROM mld_statuses sta WHERE sta.mld_statuses_key = m.mld_melding_status) status FROM mld_melding m, alg_v_allonrgoed_gegevens og, alg_locatie l, mld_discipline md, mld_stdmelding s, ins_srtdiscipline sd, (SELECT 'Afgemeld' afgemeld, fac_tracking_refkey, fac_tracking_datum, track.prs_perslid_key, COALESCE (fac_groep_omschrijving, 'Anders') groep FROM fac_tracking track, (SELECT prs_perslid_key, fac_groep_omschrijving FROM fac_groep g, fac_gebruikersgroep gg WHERE g.fac_groep_key = 253 AND g.fac_groep_key = gg.fac_groep_key) auth WHERE fac_srtnotificatie_key = 35 AND auth.prs_perslid_key(+) = track.prs_perslid_key) tr, (SELECT 'Geregistreerd' geregistreerd, fac_tracking_refkey, fac_tracking_datum, track.prs_perslid_key, COALESCE (fac_groep_omschrijving, 'Anders') groep FROM fac_tracking track, (SELECT prs_perslid_key, fac_groep_omschrijving FROM fac_groep g, fac_gebruikersgroep gg WHERE g.fac_groep_key = 253 AND g.fac_groep_key = gg.fac_groep_key) auth WHERE fac_srtnotificatie_key = 39 AND auth.prs_perslid_key(+) = track.prs_perslid_key) tr2 WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+) AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+) AND s.mld_stdmelding_key = m.mld_stdmelding_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND fac_activiteit_key IS NULL AND tr.fac_tracking_refkey(+) = m.mld_melding_key AND tr2.fac_tracking_refkey(+) = m.mld_melding_key; --- PNBR#36004 Functie voor het 'uitlezen' van de mail body vanuit SAP voor een 'Choose Your Own Device' aanvraag CREATE OR REPLACE FUNCTION pnbr_get_html_value (p_text IN VARCHAR2, p_start IN VARCHAR2) RETURN VARCHAR2 AS v_pos NUMBER; v_pos_begin NUMBER; v_pos_eind NUMBER; v_result VARCHAR2 (4000); v_lb VARCHAR2 (2); BEGIN -- Wat gebruiken we als linebreak IF INSTR (p_text, CHR (13) || CHR (10)) <> 0 THEN v_lb := CHR (13) || CHR (10); DBMS_OUTPUT.put_line ('1310'); ELSIF INSTR (p_text, CHR (10) || CHR (13)) <> 0 THEN v_lb := CHR (10) || CHR (13); DBMS_OUTPUT.put_line ('1013'); ELSIF INSTR (p_text, CHR (10) || CHR (10)) <> 0 THEN v_lb := CHR (10) || CHR (10); DBMS_OUTPUT.put_line ('1010'); END IF; -- Controleer of de begintag aanwezig is. Zo nee, dan hebben we niets te tonen. -- Bepaal de positie waar de opgegeven start tekst begint v_pos := INSTR (p_text, p_start); -- Als de opgegeven start tekst niet gevonden wordt dan is v_pos 0 IF v_pos = 0 THEN RETURN NULL; END IF; -- Bij pnbr staat de beginpositie op dezelfde regel. -- De beginpositie wordt bepaald door startpositie van de opgegeven start tekst Personeelsnummer de lengte van de starttekst + carriage return (CHR13) + linefeed (CHR10) v_pos_begin := INSTR (p_text, v_lb || p_start) + LENGTH (p_start) + 2; --- Eind positie is altijd einde van de regel v_pos_eind := INSTR (p_text, v_lb, v_pos_begin, 1); -- v_result is alles vanaf de startpositie tot aan het einde v_result := SUBSTR (p_text, v_pos_begin, v_pos_eind - v_pos_begin); -- Soms wordt een tag niet gevonden. Dan wordt de hele body inclusief CSS meegestuurd. -- Dat willen we natuurlijk niet. Daarom maken we daar maar een lege tag van. IF LENGTH (v_result) > 1000 THEN v_result := p_start; END IF; RETURN v_result; END; / -- PNBR#36004 Procedure voor het verwerken van 'Choose Your Own Device' aanvraag vanuit SAP CREATE OR REPLACE PROCEDURE pnbr_processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS sender prs_perslid.prs_perslid_key%TYPE; persnr prs_perslid.prs_perslid_nr%TYPE; kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE; v_mldkey mld_melding.mld_melding_key%TYPE; defaultstdmelding fac_setting.fac_setting_default%TYPE; errormsg fac_result.fac_result_waarde%TYPE; v_soort_aanvraag VARCHAR2 (50); v_model_omschrijving VARCHAR2 (2000); -- 40 v_plus_standaard VARCHAR2 (2000); -- 30 v_eigen_bijdrage VARCHAR2 (2000); -- 8 v_from VARCHAR2 (1000); v_mld_meldbron_key NUMBER (10); v_hint VARCHAR2 (1000); BEGIN -- Choose Your Own Device aanvragen vanuit SAP naar mld_stdmelding_key 7441 (Tablet) of mld_stdmelding_key 7442 (Telefoon) v_soort_aanvraag := pnbr_get_html_value (pbody, 'Soort Choose Your Own : '); v_hint := 'sa:' || v_soort_aanvraag; IF v_soort_aanvraag = 'Tablet' THEN defaultstdmelding := '7721'; END IF; IF v_soort_aanvraag = 'Telefoon' THEN defaultstdmelding := '7701'; END IF; v_hint := v_hint || '-std:' || defaultstdmelding; -- Meldbron = SAP, dus systeem = 6 v_mld_meldbron_key := 6; -- Bij PNBR is de melder terug te halen uit de body van de email obv personeelsnummer aanvrager -- Op basis van dit personeelsnummer kan de melder en de kostenplaats bepaald worden persnr := pnbr_get_html_value (pbody, 'Personeelsnummer aanvrager : '); v_hint := v_hint || '-pnr:' || persnr; SELECT prs_perslid_key, d.prs_kostenplaats_key INTO sender, kostenplaats FROM prs_perslid p, prs_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key AND prs_perslid_nr = persnr AND prs_perslid_verwijder IS NULL; v_hint := v_hint || '-pk:' || sender; v_hint := v_hint || '-kp:' || kostenplaats; -- Bepaal de kenmerkwaarden die bij de melding moeten worden weggeschreven v_model_omschrijving := pnbr_get_html_value (pbody, 'Model omschrijving : '); v_plus_standaard := pnbr_get_html_value (pbody, 'Plus/standaard model : '); v_eigen_bijdrage := pnbr_get_html_value (pbody, 'Eigen bijdrage : '); -- Registreer de melding in Facilitor BEGIN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_alg_locatie_key, mld_melding_omschrijving, mld_melding_status, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ( 'MLD', v_mld_meldbron_key, SYSDATE, 2, -- Provinciehuis Provincie Noord Brabant, alg_locatie_key=2 SUBSTR ( psubject || CHR (13) || REPLACE ( SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels NULL, defaultstdmelding, sender, sender, kostenplaats, 3) RETURNING mld_melding_key INTO v_mldkey; BEGIN -- Vullen van kenmerk Model omschrijving (key = 9564) voor CYO aanvraag tablet (mld_key 7441) IF v_model_omschrijving IS NOT NULL AND defaultstdmelding = '7721' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9564, SUBSTR (v_model_omschrijving, 1, 40)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Model omschrijving (key = 9564) kon niet opgeslagen worden.', SUBSTR (v_model_omschrijving, 1, 100)); END; BEGIN -- Vullen van kenmerk Plus/standaard (key = 9565) voor CYO aanvraag tablet (mld_key 7441) IF v_plus_standaard IS NOT NULL AND defaultstdmelding = '7721' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9565, SUBSTR (v_plus_standaard, 1, 30)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Plus/standaard (key = 9565) kon niet opgeslagen worden.', SUBSTR (v_plus_standaard, 1, 100)); END; BEGIN -- Vullen van kenmerk Eigen bijdrag (key = 9566) voor CYO aanvraag tablet (mld_key 7441) IF v_eigen_bijdrage IS NOT NULL AND defaultstdmelding = '7721' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9566, SUBSTR (v_eigen_bijdrage, 1, 8)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Eigen bijdrag (key = 9566) kon niet opgeslagen worden.', SUBSTR (v_eigen_bijdrage, 1, 100)); END; BEGIN -- Vullen van kenmerk Model omschrijving (key = 9561) voor CYO aanvraag telefoon (mld_key 7442) IF v_model_omschrijving IS NOT NULL AND defaultstdmelding = '7701' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9561, SUBSTR (v_model_omschrijving, 1, 40)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Model omschrijving (key = 9561) kon niet opgeslagen worden.', SUBSTR (v_model_omschrijving, 1, 100)); END; BEGIN -- Vullen van kenmerk Plus/standaard (key = 9562) voor CYO aanvraag telefoon (mld_key 7442) IF v_plus_standaard IS NOT NULL AND defaultstdmelding = '7701' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9562, SUBSTR (v_plus_standaard, 1, 30)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Plus/standaard (key = 9562) kon niet opgeslagen worden.', SUBSTR (v_plus_standaard, 1, 100)); END; BEGIN -- Vullen van kenmerk Eigen bijdrag (key = 9563) voor CYO aanvraag telefoon (mld_key 7442) IF v_eigen_bijdrage IS NOT NULL AND defaultstdmelding = '7701' THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (v_mldkey, 9563, SUBSTR (v_eigen_bijdrage, 1, 8)); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Veld Eigen bijdrag (key = 9563) kon niet opgeslagen worden.', SUBSTR (v_eigen_bijdrage, 1, 100)); END; mld.setmeldingstatus (v_mldkey, 2, sender); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey); END; IF errormsg IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', errormsg); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Mail kon niet verwerkt worden afzender: ' || pfrom || '[' || errormsg || '-' || v_hint || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); -- bewaar ook even de mail die ontvangen is. fac.writelog ('PROCESSEMAIL', 'I', SUBSTR (pbody, 1, 900), ''); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES ( psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder'); END; / -- view voor zoekfunctie op brain CREATE OR REPLACE VIEW pnbr_v_rap_brain_search AS SELECT sd.ins_srtdiscipline_prefix, sd.ins_srtdiscipline_omschrijving, d.ins_discipline_omschrijving, mld_stdmelding_omschrijving, mld_stdmelding_hint, 'https://pnbr.facilitor.nl/?u=61EsxN5AJI2Yf4Dq&mld_defaultstdmelding=' || mld_stdmelding_key facilitor_link FROM mld_stdmelding std, mld_discipline d, ins_srtdiscipline sd, fac_groeprechten gr WHERE std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND gr.ins_discipline_key = d.ins_discipline_key AND gr.fac_functie_key = 2 -- MLDUSE AND gr.fac_groep_key = 1 -- _default AND std.mld_stdmelding_verwijder IS NULL AND COALESCE (std.mld_stdmelding_notfrontend, 0) = 0; --- Tbv eigen tabel met nog actieve kosten plaatsen CREATE OR REPLACE VIEW PNBR_V_KOSTENPLAATSEN ( PRS_KOSTENPLAATS_KEY, PRS_KOSTENPLAATS, PRS_KOSTENPLAATS_VERWIJDER ) AS SELECT prs_kostenplaats_key, prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving, COALESCE (prs_kostenplaats_verwijder, prs_kostenplaats_eind) FROM prs_kostenplaats k; --- Overzicht met kunstuitleen tbv kenmerkdomein CREATE OR REPLACE VIEW PNBR_V_KUNST_AANVRAGEN ( MLD_MELDING_KEY, MLD_MELDING_NUMMER ) AS SELECT m.mld_melding_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d, ins_srtdiscipline sd WHERE m.mld_stdmelding_key = 4201 AND m.mld_melding_status NOT IN (1, 5, 7) AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key; --- Portal menu item 'Kunst uitleen' -- Overzicht 'KUNST: Kunstuitleen' CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST_UITLEEN ( FCLT_F_OBJECT, TECHNIEK, ONDERWERP, FCLT_F_KUNSTENAAR, FCLT_F_TITEL, MATERIAAL, GESIGNEERD, HOOGTE, BREEDTE, HTML_FOTO, VERKRIJGINGSINFORMATIE, TAXATIEWAARDE, RUIMTE, STATUS, RESERVERING, AANVRAAGNR, STATUS_SELECTIE, OBJECT_KEY ) AS SELECT o.ins_deel_omschrijving, (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 107 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) techniek, (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 1382 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) onderwerp, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 102 AND o.ins_deel_key = ikd.ins_deel_key) naam_kunstenaar, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 104 AND o.ins_deel_key = ikd.ins_deel_key) titel, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 110 AND o.ins_deel_key = ikd.ins_deel_key) materiaal, (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 112 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) gesigneerd, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 119 AND o.ins_deel_key = ikd.ins_deel_key) hoogte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 120 AND o.ins_deel_key = ikd.ins_deel_key) breedte, DECODE ( (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 109 AND o.ins_deel_key = ikd.ins_deel_key), NULL, 'Geen foto', '') foto, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 125 AND o.ins_deel_key = ikd.ins_deel_key) verkrijgingsinformatie, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 132 AND o.ins_deel_key = ikd.ins_deel_key) taxatiewaarde, r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')', DECODE ( r.alg_ruimte_key, 1614, 'Beschikbaar', 'Uitgeleend' || ' sinds: ' || (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1363 AND o.ins_deel_key = ikd.ins_deel_key)) status, (SELECT DECODE (ins_kenmerkdeel_waarde, 1, 'Gereserveerd', NULL) FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1342 AND o.ins_deel_key = ikd.ins_deel_key) reservering, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1343 AND o.ins_deel_key = ikd.ins_deel_key) aanvraagnr, DECODE (r.alg_ruimte_key, 1614, 'Beschikbaar', 'Uitgeleend') status_selectie, o.ins_deel_key FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s WHERE s.ins_srtdeel_key = 41 AND o.ins_deel_verwijder IS NULL AND o.ins_alg_ruimte_key = r.alg_ruimte_key AND o.ins_srtdeel_key = s.ins_srtdeel_key AND (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 115 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) = 'Ja' AND o.INS_DEEL_KEY NOT IN (SELECT o.ins_deel_key FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s WHERE s.ins_srtdeel_key = 41 AND o.ins_deel_verwijder IS NULL AND o.ins_alg_ruimte_key = r.alg_ruimte_key AND o.ins_srtdeel_key = s.ins_srtdeel_key AND (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 115 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) = 'Ja' -- objecten die niet in het depot staan AND r.alg_ruimte_key <> 1614 --- objecten die al gereserveerd zijn AND (SELECT DECODE (ins_kenmerkdeel_waarde, 1, 'Gereserveerd', NULL) FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1342 AND o.ins_deel_key = ikd.ins_deel_key) IS NOT NULL); --- Portal menu item 'Verzoek inname kunst' -- Overzicht 'KUNST: Kunstinname' CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST_INNAME ( FCLT_F_OBJECT, FCLT_F_KUNSTENAAR, FCLT_F_TITEL, MATERIAAL, GESIGNEERD, HOOGTE, BREEDTE, HTML_FOTO, VERKRIJGINGSINFORMATIE, TAXATIEWAARDE, RUIMTE, STATUS, RESERVERING, AANVRAAGNR, OBJECT_KEY ) AS SELECT o.ins_deel_omschrijving, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 102 AND o.ins_deel_key = ikd.ins_deel_key) naam_kunstenaar, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 104 AND o.ins_deel_key = ikd.ins_deel_key) titel, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 110 AND o.ins_deel_key = ikd.ins_deel_key) materiaal, (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 112 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) gesigneerd, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 119 AND o.ins_deel_key = ikd.ins_deel_key) hoogte, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 120 AND o.ins_deel_key = ikd.ins_deel_key) breedte, DECODE ( (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 109 AND o.ins_deel_key = ikd.ins_deel_key), NULL, 'Geen foto', '') foto, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 125 AND o.ins_deel_key = ikd.ins_deel_key) verkrijgingsinformatie, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 132 AND o.ins_deel_key = ikd.ins_deel_key) taxatiewaarde, r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')', DECODE ( r.alg_ruimte_key, 1614, 'Beschikbaar', 'Uitgeleend' || ' sinds: ' || (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1363 AND o.ins_deel_key = ikd.ins_deel_key)) status, (SELECT DECODE (ins_kenmerkdeel_waarde, 1, 'Gereserveerd', NULL) FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1282 AND o.ins_deel_key = ikd.ins_deel_key) reservering, (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd WHERE ins_kenmerk_key = 1342 AND o.ins_deel_key = ikd.ins_deel_key) aanvraagnr, o.ins_deel_key FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s WHERE s.ins_srtdeel_key = 41 AND o.ins_deel_verwijder IS NULL AND o.ins_alg_ruimte_key = r.alg_ruimte_key AND o.ins_srtdeel_key = s.ins_srtdeel_key AND (SELECT fac_usrdata_omschr FROM ins_kenmerkdeel ikd, ins_kenmerk ik, ins_srtkenmerk isk, fac_kenmerkdomein kd, fac_usrdata ud WHERE ikd.ins_kenmerk_key = 115 AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key AND ud.fac_usrtab_key = kd.fac_usrtab_key AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key AND o.ins_deel_key = ikd.ins_deel_key) = 'Ja' AND r.alg_ruimte_key <> 1614; CREATE OR REPLACE VIEW PNBR_V_RUIMTE_GEGEVENS ( RUIMTE_KEY, OMSCHRIJVING ) AS SELECT r.alg_ruimte_key, r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')' FROM alg_v_ruimte_gegevens r; -- PNBR#52789 - Rapportage bedrijfscatering CREATE OR REPLACE VIEW PNBR_V_RAP_CATERING ( RESERVERINGSNUMMER, AFLEVERADRES, ADRES, LOCATIE, RUIMTE, RUIMTENR, KOSTENPLAATS, KOSTENPLAATS_OMSCHRIJVING, PERSOONSNAAM, AFDELING, COSTCENTER, DATUM, TIJD_RESERVERING_VAN, TIJD_RESERVERING_TOT, AANTAL_PERSONEN, OMSCHRIJVING, OPMERKING, TIJD_LEVERING, BESTELNR, ARTIKELNR, ARTIKEL_OMSCHRIJVING, ARTIKEL_AANTAL, ARTIKEL_PRIJS, TOTAAL_PRIJS, BTW, ARTIKEL_PRIJS_BTW, TOTAAL_PARIJS_BTW, kn_besnr_cateraar ) AS SELECT (x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr) reserveringsnummer, DECODE ( x.alg_ruimte_key, NULL, 'Onbekend', rg.alg_locatie_code || '-' || rg.alg_gebouw_upper || '-' || rg.alg_verdieping_code || '-' || rg.alg_ruimte_nr || ' (' || rg.alg_ruimte_omschrijving || ')') afleveradres, rg.alg_locatie_adres adres, rg.alg_locatie_omschrijving locatie, rg.alg_ruimte_omschrijving ruimte, rg.alg_ruimte_nr ruimtenr, x.prs_kostenplaats_nr kostenplaats, x.prs_kostenplaats_omschrijving kostenplaats_omschrijving, x.prs_perslid_naam_full, (x.prs_afdeling_upper || '-' || x.prs_afdeling_omschrijving) afdeling, (SELECT MAX (kw.res_kenmerkreservering_waarde) FROM res_kenmerkwaarde kw, res_kenmerk rk WHERE kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key AND kw.res_kenmerkwaarde_verwijder IS NULL AND kw.res_kenmerk_key = rk.res_kenmerk_key AND rk.res_srtkenmerk_key = 1) costcenter, x.res_rsv_artikel_levering datum, TO_CHAR (x.res_rsv_ruimte_van, 'hh24:mi') tijd_ruimtereservering, TO_CHAR (x.res_rsv_ruimte_tot, 'hh24:mi') tijd_einde_ruimtereservering, x.res_rsv_ruimte_bezoekers, x.res_rsv_ruimte_omschrijving, x.res_rsv_ruimte_opmerking, TO_CHAR (x.res_rsv_artikel_levering, 'hh24:mi') tijd_levering, x.bestelnr, x.res_artikel_nr, x.res_artikel_omschrijving, x.res_rsv_artikel_aantal, x.res_artikel_prijs, ROUND ((x.res_rsv_artikel_aantal) * (x.res_artikel_prijs), 5) prijs_totaal_btw, TO_NUMBER ( DECODE (x.res_artikel_btw, NULL, '6', x.res_artikel_btw)) btw, ROUND ( x.res_artikel_prijs * ( 1 + ( TO_NUMBER ( DECODE (x.res_artikel_btw, NULL, '6', x.res_artikel_btw)) / 100)), 2) res_artikel_prijs_btw, ROUND ( x.res_artikel_prijs * ( 1 + ( TO_NUMBER ( DECODE (x.res_artikel_btw, NULL, '6', x.res_artikel_btw)) / 100)) * x.res_rsv_artikel_aantal, 2) prijs_totaal_btw, (SELECT fac_usrdata_omschr waarde FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk WHERE rk.res_srtkenmerk_key = 441 AND kw.res_kenmerk_key = rk.res_kenmerk_key AND fac.safe_to_number (res_kenmerkreservering_waarde) = fac_usrdata_key AND x.res_rsv_ruimte_key = kw.res_rsv_ruimte_key) kn_bes_cateraar FROM (SELECT rra.res_rsv_artikel_verwerkt, COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key, rra.res_rsv_artikel_levering, rrr.res_rsv_ruimte_key, rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, rrr.res_rsv_ruimte_bezoekers, rrr.res_rsv_ruimte_omschrijving, rrr.res_rsv_ruimte_opmerking, rrr.res_rsv_ruimte_totaal, td.ins_discipline_volgnr, -- Ter bepaling leverancier/DEPRECATED! b.prs_bedrijf_naam, a.prs_afdeling_key, a.prs_afdeling_naam, rra.res_artikel_nr, ( rra.res_artikel_omschrijving || ' (' || rra.res_artikel_eenheid || ')') res_artikel_omschrijving, rra.res_rsv_artikel_prijs, rra.res_artikel_prijs, rra.res_rsv_artikel_aantal, rra.btw, rra.res_artikel_btw, pf.prs_perslid_naam_full, paf.prs_afdeling_omschrijving, paf.prs_afdeling_upper, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, (SELECT rrk.res_kenmerkreservering_waarde FROM res_kenmerkwaarde rrk WHERE rrk.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrk.res_kenmerk_key = 281) bestelnr FROM res_rsv_ruimte rrr, (SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_verwerkt, rra.res_rsv_artikel_levering, ra.res_artikel_nr, ra.res_artikel_omschrijving, ra.res_artikel_eenheid, ra.res_artikel_prijs, rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal, rra.res_rsv_artikel_btw btw, ra.res_discipline_key, ra.res_artikel_btw FROM res_rsv_artikel rra, res_artikel ra WHERE rra.res_artikel_key = ra.res_artikel_key) rra, res_discipline td, res_disc_params dp, prs_bedrijf b, prs_afdeling a, prs_v_afdeling_perslid paf, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, alg_v_allonroerendgoed aog, prs_v_perslid_fullnames_all pf, prs_kostenplaats k WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rra.res_discipline_key = td.ins_discipline_key AND rrr.res_rsv_ruimte_verwijder IS NULL --- AND rrr.res_activiteit_key != 50 -- PNBR#72235 activiteit Afhalen catering toch zichtbaar maken AND td.ins_discipline_key = dp.res_ins_discipline_key AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+) AND paf.prs_perslid_key = pf.prs_perslid_key AND a.prs_afdeling_parentkey IS NULL AND b.prs_leverancier_nr = a.prs_afdeling_naam(+) AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x LEFT JOIN alg_v_ruimte_gegevens_all rg ON x.alg_ruimte_key = rg.alg_ruimte_key; CREATE OR REPLACE VIEW PNBR_V_BEDRIJF ( bedrijf_key, naam, eind_datum ) AS SELECT prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_verwijder FROM PRS_BEDRIJF; -- View voor QR Codes CREATE OR REPLACE VIEW PNBR_V_INS_QRC_OBJECT ( HIDE_F_SORT, LOCATIE_CODE, FCLT_F_LOCATIE, FCLT_F_GEBOUW, FCLT_F_PLAATS, RUIMTENR, FCLT_F_DISCIPLINE, FCLT_F_OBJECTGROEP, FCLT_F_OBJECTSOORT, FCLT_F_IDENTIFICATIE, FCLT_F_BOOKMARK, INS_DEEL_KEY, INS_SRTDEEL_KEY, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, INS_ALG_RUIMTE_TYPE, INS_ALG_RUIMTE_KEY, HIDE_F_BOOKMARK_ID ) AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code, l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, SUBSTR (o.alg_plaatsaanduiding, 13) fclt_f_plaats, o.alg_ruimte_nr, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, b.fac_bookmark_naam fclt_f_bookmark, i.ins_deel_key, s.ins_srtdeel_key, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, b.fac_bookmark_id hide_f_bookmark_id FROM ins_deel i, ins_v_alg_overzicht o, ins_srtdeel s, ins_srtgroep g, ins_discipline d, alg_locatie l, fac_bookmark b WHERE b.fac_bookmark_path = 'appl/pda/ins_deel.asp' AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE AND ins_deel_verwijder IS NULL AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND s.ins_srtdeel_key = i.ins_srtdeel_key AND g.ins_srtgroep_key = s.ins_srtgroep_key AND d.ins_discipline_key = g.ins_discipline_key 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 l.alg_locatie_key = i.ins_alg_locatie_key; CREATE OR REPLACE VIEW pnbr_v_programmamanagers ( prs_perslid_key, prs_perslid_verwijder, prs_perslid_naam ) AS SELECT p.prs_perslid_key, p.prs_perslid_verwijder, n.prs_perslid_naam_full || ' - ' || f.prs_srtperslid_omschrijving FROM prs_perslid p, prs_srtperslid f, prs_v_perslid_fullnames n WHERE p.prs_srtperslid_key = f.prs_srtperslid_key AND ( f.prs_srtperslid_upper LIKE '%PROGRAMMAMANAGER%' OR f.prs_srtperslid_upper LIKE '%PROGR.MAN%' OR f.prs_srtperslid_upper LIKE 'H-MANGR%' OR f.prs_srtperslid_upper LIKE 'H-MANAGER%' OR f.prs_srtperslid_upper LIKE 'PROVINCIESECRETARIS / ALGEMEEN DIRECTEUR' OR f.prs_srtperslid_upper LIKE '%KABINETSCHEF COMMISSARIS VAN DE KONING%' OR f.prs_srtperslid_upper LIKE '%GRIFFIER%' OR f.prs_srtperslid_upper LIKE '%CHIEF INFORMATION OFFICER%' OR f.prs_srtperslid_upper LIKE '%CONCERNCONTROLLER%') AND n.prs_perslid_key = p.prs_perslid_key ORDER BY prs_perslid_naam_full; CREATE OR REPLACE VIEW pnbr_v_h_managers ( PRS_PERSLID_KEY, PRS_PERSLID_VERWIJDER, PRS_PERSLID_NAAM ) AS SELECT p.prs_perslid_key, p.prs_perslid_verwijder, n.prs_perslid_naam_full || ' - ' || f.prs_srtperslid_omschrijving FROM prs_perslid p, prs_srtperslid f, prs_v_perslid_fullnames n WHERE p.prs_srtperslid_key = f.prs_srtperslid_key AND ( f.prs_srtperslid_upper LIKE 'H-MANGR%' OR f.prs_srtperslid_upper LIKE 'H-MANAGER%' OR f.prs_srtperslid_upper LIKE 'PROVINCIESECRETARIS / ALGEMEEN DIRECTEUR' OR f.prs_srtperslid_upper LIKE '%KABINETSCHEF COMMISSARIS VAN DE KONING%' OR f.prs_srtperslid_upper LIKE '%GRIFFIER%' OR f.prs_srtperslid_upper LIKE '%CHIEF INFORMATION OFFICER%' OR f.prs_srtperslid_upper LIKE '%CONCERNCONTROLLER%') AND n.prs_perslid_key = p.prs_perslid_key ORDER BY prs_perslid_naam_full; CREATE OR REPLACE VIEW pnbr_v_programma_h_managers ( PRS_PERSLID_KEY, PRS_PERSLID_VERWIJDER, PRS_PERSLID_NAAM ) AS SELECT p.prs_perslid_key, p.prs_perslid_verwijder, n.prs_perslid_naam_full || ' - ' || f.prs_srtperslid_omschrijving FROM prs_perslid p, prs_srtperslid f, prs_v_perslid_fullnames n WHERE p.prs_srtperslid_key = f.prs_srtperslid_key AND ( f.prs_srtperslid_upper LIKE '%PROGRAMMAMANAGER%' OR f.prs_srtperslid_upper LIKE 'H-MANGR%' OR f.prs_srtperslid_upper LIKE 'H-MANAGER%' OR f.prs_srtperslid_upper LIKE '%PROGR.MAN%' OR f.prs_srtperslid_upper LIKE 'PROVINCIESECRETARIS / ALGEMEEN DIRECTEUR' OR f.prs_srtperslid_upper LIKE '%KABINETSCHEF COMMISSARIS VAN DE KONING%' OR f.prs_srtperslid_upper LIKE '%GRIFFIER%' OR f.prs_srtperslid_upper LIKE '%GEDEP%' OR f.prs_srtperslid_upper LIKE '%RO TEAMLEIDER BRABANTSTAD%' OR f.prs_srtperslid_upper LIKE '%CHIEF INFORMATION OFFICER%' OR f.prs_srtperslid_upper LIKE '%CONCERNCONTROLLER%' ) AND n.prs_perslid_key = p.prs_perslid_key ORDER BY prs_perslid_naam_full; -- Import SAP bestelnummers CREATE OR REPLACE PROCEDURE pnbr_import_bestelnr (p_import_key IN NUMBER) AS CURSOR c_cursor IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; NEXT_RECORD c_cursor%ROWTYPE; v_newline VARCHAR2 (1000); v_field VARCHAR2 (100); v_fielddelimitor VARCHAR2 (1); v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_empty VARCHAR2 (100); v_aanduiding VARCHAR2 (200); -- de velden uit het importbestand v_leverancier VARCHAR2 (100); v_naam VARCHAR2 (100); v_jaar VARCHAR2 (100); v_maand VARCHAR2 (100); v_bestelnummer VARCHAR2 (100); v_bestelregel VARCHAR2 (100); v_begrotingspost VARCHAR2 (100); v_budgethouder VARCHAR2 (100); v_budgethouder_naam VARCHAR2 (100); v_budgethouder_key NUMBER (10); v_bestelnummer_omschr VARCHAR2 (100); BEGIN v_fielddelimitor := ';'; header_is_valid := 0; DELETE FROM fac_imp_kpn; FOR NEXT_RECORD IN c_cursor LOOP BEGIN v_aanduiding := ''; v_newline := NEXT_RECORD.FAC_IMP_FILE_LINE; fac.imp_getfield (v_newline, v_fielddelimitor, v_leverancier); fac.imp_getfield (v_newline, v_fielddelimitor, v_naam); fac.imp_getfield (v_newline, v_fielddelimitor, v_jaar); fac.imp_getfield (v_newline, v_fielddelimitor, v_maand); fac.imp_getfield (v_newline, v_fielddelimitor, v_bestelnummer); fac.imp_getfield (v_newline, v_fielddelimitor, v_bestelregel); fac.imp_getfield (v_newline, v_fielddelimitor, v_begrotingspost); fac.imp_getfield (v_newline, v_fielddelimitor, v_budgethouder); fac.imp_getfield (v_newline, v_fielddelimitor, v_budgethouder_naam); IF ( header_is_valid = 0 AND UPPER (v_leverancier) = 'LEVERANC.' AND UPPER (v_naam) = 'NAAM 1' AND UPPER (v_jaar) = 'JAAR' AND UPPER (v_maand) = 'MAAND' AND UPPER (v_bestelnummer) = 'BESTELNUMMER' AND UPPER (v_bestelregel) = 'BESTELNUMMER REGEL' AND UPPER (v_begrotingspost) = 'BEGROTINGSPOST' AND UPPER (v_budgethouder) = 'BUDG.HOUD' AND UPPER (v_budgethouder_naam) = 'NAAM BUDGETHOUDER') THEN header_is_valid := 1; ELSE v_aanduiding := v_bestelnummer; IF v_budgethouder IS NOT NULL THEN BEGIN SELECT prs_perslid_key INTO v_budgethouder_key FROM prs_perslid p WHERE v_budgethouder = p.prs_perslid_oslogin; EXCEPTION WHEN NO_DATA_FOUND THEN v_budgethouder_key := NULL; fac.imp_writelog ( p_import_key, 'E', v_aanduiding || 'Budgethouder kan niet gevonden worden', 'Budgethouder wordt leeg gemaakt [' || v_budgethouder || ']'); END; ELSE v_budgethouder_key := NULL; END IF; IF LENGTH (v_bestelnummer) > 30 THEN v_bestelnummer := SUBSTR (v_bestelnummer, 1, 30); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Bestelnummer is te lang', 'Bestelnummer wordt afgebroken tot [' || v_bestelnummer || ']'); END IF; v_bestelnummer_omschr := v_budgethouder_naam || '/' || v_bestelnummer; IF LENGTH (v_bestelnummer_omschr) > 60 THEN v_bestelnummer_omschr := SUBSTR (v_bestelnummer_omschr, 1, 60); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || 'Bestelnummer omschrijving is te lang', 'Bestelnummer omschrijving wordt afgebroken tot [' || v_bestelnummer_omschr || ']'); END IF; INSERT INTO fac_imp_kpn (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module, prs_kostenplaatsgrp_key, prs_perslid_key) VALUES (v_bestelnummer, v_bestelnummer_omschr, 'PRJ', 2, -- kostenplaatsgroep voor catering PO's voor combinatie validatie v_budgethouder_key); END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog ( p_import_key, 'E', 'Invalid import file', 'Er is geen geldige Header aangetroffen en in het importbestand'); END IF; DELETE FROM fac_imp_file WHERE fac_import_key = p_import_key; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; 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, ''); END pnbr_import_bestelnr; / CREATE OR REPLACE PROCEDURE pnbr_update_bestelnr (p_import_key IN NUMBER) AS v_errormsg VARCHAR (200); v_errorhint VARCHAR (200); v_aanduiding VARCHAR (200); oracle_err_mes VARCHAR (200); oracle_err_num NUMBER; CURSOR kpn_del IS SELECT * FROM prs_kostenplaats kp WHERE kp.prs_kostenplaats_module = 'PRJ' AND UPPER (kp.prs_kostenplaats_omschrijving) LIKE '%SAP%' AND kp.prs_kostenplaats_upper NOT IN (SELECT UPPER (imp_kp.prs_kostenplaats_nr) FROM fac_imp_kpn imp_kp); BEGIN fac_update_kpn (p_import_key); FOR rec IN kpn_del LOOP BEGIN v_aanduiding := rec.prs_kostenplaats_nr; v_errorhint := 'Bepalen vervallen kostenplaats'; UPDATE prs_kostenplaats kp SET kp.prs_kostenplaats_verwijder = SYSDATE WHERE kp.prs_kostenplaats_key = rec.prs_kostenplaats_key; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint || ' | ' || v_aanduiding); END; END LOOP; END pnbr_update_bestelnr; / --- Genereren factuurregels voor catering CREATE OR REPLACE PROCEDURE pnbr_select_res_cat (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); -- Stap 1: de gegevens voor de factuur verzamelen CURSOR c (c_tot DATE) IS SELECT rr.res_rsv_ruimte_key, rr.res_rsv_ruimte_van, rr.res_rsv_ruimte_key res_ruimte_key, rr.res_reservering_key res_key, rr.res_rsv_ruimte_volgnr res_volgnr, rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr reservering, TO_CHAR (rr.res_rsv_ruimte_van, 'YYYYMM') periode, k.prs_kostenplaats_nr SAP_bestelnr, k.prs_kostenplaats_omschrijving SAP_omschr, ks.prs_kostensoort_oms, DECODE (ks.prs_kostensoort_btw, 1, 'Incl', 'Excl') btw, NVL ( (SELECT r.res_ruimte_nr FROM res_ruimte_opstelling ro, res_ruimte r WHERE ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key AND r.res_ruimte_key = ro.res_ruimte_key), ---- NVL ipv coalesce aangepast nav Oracle bug #55835 (SELECT 'Kamer ' || alg_ruimte_nr || ' (' || alg_ruimte_omschrijving || ')' FROM alg_v_ruimte_gegevens rg WHERE rg.alg_ruimte_key = rr.alg_ruimte_key)) ruimte, rr.res_rsv_ruimte_omschrijving naam_bijeenkomst, ra.res_artikel_omschrijving, ra.res_artikel_eenheid, ra.res_artikel_prijs, ra.res_artikel_prijs_vast, rra.res_rsv_artikel_prijs, ra.res_artikel_btw, rra.res_rsv_artikel_aantal, COALESCE (rra.res_rsv_artikel_prijs, ra.res_artikel_prijs * rra.res_rsv_artikel_aantal) totaal_prijs, bo_stat.res_status_bo_omschrijving, fo_stat.res_status_fo_omschrijving FROM res_rsv_ruimte rr, prs_kostenplaats k, prs_kostenplaatsgrp kg, res_rsv_artikel rra, res_artikel ra, res_status_bo bo_stat, res_status_fo fo_stat, res_discipline di, prs_kostensoort ks WHERE kg.prs_kostenplaatsgrp_key(+) = k.prs_kostenplaatsgrp_key AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key AND rr.res_rsv_ruimte_dirtlevel = 0 AND rr.res_rsv_ruimte_verwijder IS NULL AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key AND rra.res_artikel_key = ra.res_artikel_key AND rr.res_status_bo_key = bo_stat.res_status_bo_key AND rr.res_status_fo_key = fo_stat.res_status_fo_key AND ra.res_discipline_key = di.ins_discipline_key AND ks.prs_kostensoort_key = di.prs_kostensoort_key AND COALESCE (rra.res_rsv_artikel_prijs, ra.res_artikel_prijs) <> 0 AND bo_stat.res_status_bo_key = 5 -- alleen reserveringen met de status afgemeld AND rra.res_rsv_artikel_levering < c_tot -- AND rra.res_rsv_artikel_levering > to_date ('31-12-2018','dd-mm-yyyy') AND rra.res_rsv_artikel_levering < to_date ('1-2-2019','dd-mm-yyyy') AND NOT EXISTS -- entry komt nog niet voor in de verkoopfactuurtabel (SELECT fin_verkoopfactuur_key FROM fin_verkoopfactuur vf WHERE vf.fin_verkoopfactuur_xmlnode = 'reservering' AND vf.fin_verkoopfactuur_refkey = rr.res_rsv_ruimte_key AND COALESCE (vf.fin_verkoopfactuur_c4, 'NOP') = 'catering'); v_teller NUMBER; v_rap_count NUMBER; v_kenmerk_key_laatste NUMBER; v_ruimte_key_prev NUMBER; v_verkoopfactuurkop_key NUMBER; v_tot DATE; v_van DATE; BEGIN v_teller := 0; v_rap_count := 0; v_aanduiding := 'Init'; v_errormsg := 'Periode bepalen'; -- Bepalen wanneer de laatste export was, datum laatste export staat in kolom d2 SELECT TRUNC (MAX (fin_verkoopfactuur_d2)) INTO v_van FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_datum IS NOT NULL AND fin_verkoopfactuur_c4 = 'catering'; -- v_van := to_date ('1-1-2019', 'dd-mm-yyyy'); -- Er wordt nu gerekend met een periode van 4 weken. Dit in overleg met Vermaat. v_tot := v_van + 28; DELETE imp_log WHERE imp_log_applicatie = p_applname; -- verwijder de factuurkop en de regels die nog niet definitief verwerkt zijn DELETE fin_verkoopfactuurkop WHERE fin_verkoopfactuurkop_key IN (SELECT fin_verkoopfactuurkop_key FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c4 = 'catering'); DELETE fin_verkoopfactuur WHERE fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c4 = 'catering'; v_ruimte_key_prev := -1; FOR rec IN c (v_tot) LOOP IF rec.res_rsv_ruimte_key <> v_ruimte_key_prev THEN v_ruimte_key_prev := rec.res_rsv_ruimte_key; INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) VALUES (rec.res_key || '/' || rec.res_volgnr || '-c') RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key; END IF; INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, fin_verkoopfactuur_id, fin_verkoopfactuur_datum, fin_verkoopfactuur_omschr, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, -- key naar juiste factuur prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_debiteur_naam, fin_verkoopfactuur_bedrag, --fin_verkoopfactuur_btw, --fin_btwtabelwaarde_code, fin_btwtabelwaarde_perc, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c4, fin_verkoopfactuur_d1, fin_verkoopfactuur_d2) VALUES (v_verkoopfactuurkop_key, TO_CHAR (SYSDATE, 'YYYY-MM-DD'), NULL, rec.naam_bijeenkomst, 'reservering', rec.res_ruimte_key, rec.sap_bestelnr, rec.sap_omschr, rec.sap_bestelnr, rec.totaal_prijs, -- btw bedrag, -- btw code , rec.res_artikel_btw, rec.periode, rec.res_key || '/' || rec.res_volgnr, 'catering', rec.res_rsv_ruimte_van, v_tot); END LOOP; fac.writelog (p_applname, 'S', 'Factuurregels gegenereerd', ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Onbekende fout!'); COMMIT; END pnbr_select_res_cat; / CREATE OR REPLACE PROCEDURE pnbr_export_res_cat_verwerk ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_periode VARCHAR (6); v_periodeNaam VARCHAR2 (20); v_kenmerk_key_cred NUMBER; v_kenmerk_key_datum NUMBER; v_kenmerk_key_geexp NUMBER; v_trackmessage VARCHAR2 (100); BEGIN v_aanduiding := 'Init'; v_errormsg := 'Aanpassen facturdatum'; UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_datum = SYSDATE WHERE fin_verkoopfactuur_datum IS NULL AND fin_verkoopfactuur_c4 = 'catering'; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'Onbekende fout! Niets verwerkt.'); COMMIT; END pnbr_export_res_cat_verwerk; / CREATE OR REPLACE VIEW PNBR_V_RES_CAT_VERMAAT ( RESERVERING, SAP_BESTELNR, KOSTENPLAATS_GRP, KOSTENSOORT, BEDRAG, BTW, BTWCODE, OPMERKING ) AS SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr reservering, prs_kostenplaats_nr, prs_kostenplaatsgrp_oms, prs_kostensoort_oms, COALESCE (fin_verkoopfactuur_bedrag, 0), COALESCE (fin_verkoopfactuur_btw, 0), fin_btwtabelwaarde_code, DECODE ( TRUNC (fin_verkoopfactuur_datum), NULL, 'Vermaat', 'Vermaat ' || TO_CHAR (fin_verkoopfactuur_d2 - 28, 'dd/mm/yyyy') || ' - ' || TO_CHAR (fin_verkoopfactuur_d2 - 1, 'dd/mm/yyyy')) FROM fin_verkoopfactuur v, res_rsv_ruimte r, (SELECT l.alg_locatie_key, alg_locatie_code, alg_locatie_omschrijving, r.alg_ruimte_key FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key) locatie, ( SELECT res_rsv_ruimte_key, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ro.res_ruimte_opstel_bezoekers) capaciteit, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND 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 GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, '' opstelling, NULL capaciteit, rrr.alg_ruimte_key, r.alg_ruimte_nr FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a WHERE fin_verkoopfactuur_c4 = 'catering' AND fin_verkoopfactuur_c1 <> 'dummy' AND r.res_rsv_ruimte_key = v.fin_verkoopfactuur_refkey AND locatie.alg_ruimte_key = r2a.alg_ruimte_key AND r.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+); CREATE OR REPLACE PROCEDURE pnbr_export_topdesk (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errorhint VARCHAR2 (100); v_aanduiding VARCHAR2 (100); v_locatie_key NUMBER; v_lengte NUMBER; v_status_ogd VARCHAR2 (200); v_status_ogd_new VARCHAR2 (200); v_status_ogd_key NUMBER; v_new_note VARCHAR2 (4000); -- Dit haalt het externnummer op uit de opdrachtomschrijving indien externnr bij de melding nog leeg is -- De syncstate moet gezet worden om te bepalen wat wanneer gesynchroniseerd is -- Na het aanmaken van de opdracht zetten we de sync state gelijk aan de order date CURSOR externnr IS SELECT DISTINCT m.mld_melding_key, o.mld_opdr_key, o.mld_statusopdr_key, MAX (o.mld_opdr_datumbegin), o.mld_opdr_externnr AS externnr, SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) topdesknr, km.mld_kenmerk_key, fac.safe_to_number ( TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) AS sync_date_new FROM mld_melding m, mld_opdr o, mld_stdmelding sm, mld_kenmerk km, mld_srtkenmerk sk WHERE m.mld_melding_key = o.mld_melding_key AND sm.mld_stdmelding_key = m.mld_stdmelding_key AND o.mld_opdr_externnr IS NOT NULL AND km.mld_stdmelding_key = sm.mld_ins_discipline_key AND sk.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'SYNC_OGD' AND sm.mld_ins_discipline_key IN (1582, 4162, 5341) -- Enkel voor de vakgroepen die met Topdesk gekoppeld worden. AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9) AND ( m.mld_melding_externnr IS NULL OR m.mld_melding_externnr <> SUBSTR ( o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12)) GROUP BY m.mld_melding_key, o.mld_opdr_key, o.mld_statusopdr_key, o.mld_opdr_externnr, SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12), km.mld_kenmerk_key, fac.safe_to_number ( TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')); -- Onderstaande cursor verzamelt de meldingen die status 'Actie aanvrager' (actie code = 2) moeten krijgen -- Dit is wanneer OGD 60449 een notitie heeft aangemaakt -- Wacht op klant (voorheen: Pending customer) is gezet na de laatste sync state of de sync state was nog leeg CURSOR actie_cust IS SELECT m.mld_melding_key, o.mld_opdr_key, o.mld_statusopdr_key opdr_status, sm.mld_ins_discipline_key, m.prs_perslid_key_voor, pm.prs_perslid_email email_melder, pr.prs_perslid_email email_registreerder, DECODE (sm.mld_ins_discipline_key, 4162, 'onsloket@brabant.nl', 1582, pr.prs_perslid_email) email_opdrrej, n.mld_melding_note_aanmaak, fac.safe_to_number (TO_CHAR (SYSDATE, 'yyyymmddhh24miss')) AS sync_date_new, n.prs_perslid_key, syncdate.syncdate, syncdate.mld_kenmerkmelding_key, km.mld_kenmerk_key FROM mld_melding m, mld_opdr o, prs_perslid pm, -- melder prs_perslid pr, -- registreerder mld_stdmelding sm, mld_melding_note n, mld_kenmerk km, (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde) syncdate, mld.mld_melding_key, sync.mld_kenmerkmelding_key FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding mld WHERE mld.mld_melding_key = sync.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) syncdate WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key AND sm.mld_ins_discipline_key IN (4162, 1582, 5341) --- alleen vakgroepen OGD en ICT wijziging AND sm.mld_stdmelding_key <> 11121 AND n.mld_melding_key = m.mld_melding_key AND o.mld_melding_key = m.mld_melding_key AND n.prs_perslid_key = 60449 AND m.prs_perslid_key_voor = pm.prs_perslid_key AND m.prs_perslid_key = pr.prs_perslid_key AND syncdate.mld_melding_key(+) = m.mld_melding_key AND km.mld_stdmelding_key = sm.mld_ins_discipline_key --- let op: kenmerk zit gekoppeld op discipline niveau --- AND m.mld_melding_status NOT IN (1, 2, 6, 7, 9) na overleg met Menno: status doet er niet toe AND km.mld_srtkenmerk_key = 9083 AND ( fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > syncdate.syncdate OR syncdate.syncdate IS NULL); -- Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen heeft en die verzonden kunnen worden naar Topdesk -- Alle notities bij een melding die niet al eerder zijn verstuurd en niet door OGD zijn gemaakt mogen verstuurd worden CURSOR sync IS SELECT n.mld_melding_key, n.mld_opdr_key, n.mld_ins_discipline_key, n.notitie, n.mld_melding_note_aanmaak, fac.safe_to_number ( TO_CHAR (n.mld_melding_note_aanmaak, 'yyyymmddhh24miss')) AS note, n.sync, n.sync_key FROM ( SELECT mld.mld_melding_key, o.mld_opdr_key, sm.mld_ins_discipline_key, LISTAGG ( prs.prs_perslid_naam_friendly || '/' || mn.mld_melding_note_aanmaak || ' ' || mn.mld_melding_note_omschrijving, '; ') WITHIN GROUP (ORDER BY mld.mld_melding_key) notitie, MAX (mn.mld_melding_note_aanmaak) mld_melding_note_aanmaak, (SELECT fac.safe_to_number ( sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) AS sync, (SELECT sync.mld_kenmerkmelding_key FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) AS sync_key FROM mld_melding mld, mld_melding_note mn, mld_stdmelding sm, mld_opdr o, prs_v_perslid_fullnames_all prs WHERE mn.mld_melding_key = mld.mld_melding_key AND sm.mld_stdmelding_key = mld.mld_stdmelding_key AND mn.prs_perslid_key = prs.prs_perslid_key AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen AND o.mld_statusopdr_key IN (5, 8) AND fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > fac.safe_to_number ( TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) AND ( (SELECT fac.safe_to_number ( sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) < fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) OR ((SELECT fac.safe_to_number ( sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) IS NULL)) GROUP BY mld.mld_melding_key, o.mld_opdr_key, sm.mld_ins_discipline_key ORDER BY mld_melding_key, mld_melding_note_aanmaak DESC) n, (SELECT mld_melding_key, aant_char FROM (SELECT mld.mld_melding_key, SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char FROM mld_melding mld, mld_melding_note mn, mld_stdmelding sm, mld_opdr o, prs_v_perslid_fullnames_all prs WHERE mn.mld_melding_key = mld.mld_melding_key AND sm.mld_stdmelding_key = mld.mld_stdmelding_key AND mn.prs_perslid_key = prs.prs_perslid_key AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen AND o.mld_statusopdr_key IN (5, 8) AND fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > fac.safe_to_number ( TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) AND ( (SELECT fac.safe_to_number (sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) < fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) OR ((SELECT fac.safe_to_number (sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) IS NULL)) GROUP BY mld.mld_melding_key) WHERE aant_char < 4000) t where t.mld_melding_key = n.mld_melding_key; --- meldingen waarbij het totaal te versturen notities de 4000 karakters overschrijdt --- deze zetten we in de tracking zodat functioneel beheer genotificeerd wordt --- en zo waarschuwen dat de notitie velden opgeschoond moeten worden CURSOR large IS SELECT mld_melding_key, mld_opdr_key, aant_char FROM ( SELECT mld.mld_melding_key, o.mld_opdr_key, SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char FROM mld_melding mld, mld_melding_note mn, mld_stdmelding sm, mld_opdr o, prs_v_perslid_fullnames_all prs WHERE mn.mld_melding_key = mld.mld_melding_key AND sm.mld_stdmelding_key = mld.mld_stdmelding_key AND mn.prs_perslid_key = prs.prs_perslid_key AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen AND o.mld_statusopdr_key IN (5, 8) AND fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > fac.safe_to_number ( TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) AND ( (SELECT fac.safe_to_number ( sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) < fac.safe_to_number ( TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) OR ((SELECT fac.safe_to_number ( sync.mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding sync, mld_kenmerk km, mld_srtkenmerk skm, mld_melding m WHERE m.mld_melding_key = sync.mld_melding_key AND m.mld_melding_key = mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key AND skm.mld_srtkenmerk_key = 9083) IS NULL)) GROUP BY mld.mld_melding_key, o.mld_opdr_key) WHERE aant_char > 4000; -- PNBR#76614 Extern nr als kenmerk toevoegen -- Hier vullen we het externnr van changes in bij de melding, zodra deze bij de opdracht binnenkomt vanuit Topdesk CURSOR externnr_opdr IS SELECT m.mld_melding_key, SUBSTR (o.mld_opdr_omschrijving, INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) topdesknr FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline vg, ins_srtdiscipline vgt, mld_opdr o, prs_bedrijf b WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND vg.ins_discipline_key = sm.mld_ins_discipline_key AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key AND vgt.ins_srtdiscipline_key = 21 --- wijzigingen AND o.mld_melding_key = m.mld_melding_key AND o.mld_uitvoerende_keys = b.prs_bedrijf_key AND b.prs_bedrijf_key = 59728 --- OGD AND INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') > 0 AND m.mld_melding_externnr IS NULL; BEGIN v_errorhint := 'init'; v_lengte := 0; -- Hier vullen we het externnr bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Topdesk FOR rec IN externnr LOOP BEGIN v_aanduiding := 'Topdesknr zetten bij melding: ' || rec.mld_melding_key; v_errorhint := 'Melding vullen met externnr voor melding ' || rec.mld_melding_key; UPDATE mld_melding SET mld_melding_externnr = rec.topdesknr WHERE mld_melding_key = rec.mld_melding_key; -- Vervolgens zetten we de sync state zodat we weten vanaf wanneer de sync van notities en bijlagen mag gaan lopen mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, rec.mld_melding_key, rec.sync_date_new); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); -- aanmaken mldtrk in fac_tracking INSERT INTO fac_tracking (fac_srtnotificatie_key, fac_tracking_refkey, fac_tracking_oms) VALUES ( 655, rec.mld_melding_key, v_aanduiding || '/' || oracle_err_num || ': ' || oracle_err_mes); END; END LOOP; -- We zetten de status van de melding nog op respectievelijk 'Actie aanvrager', 'Attentie' indien Topdesk na laatste bericht vanuit Facilitor hierom vraagt. FOR rec IN actie_cust LOOP BEGIN v_aanduiding := 'Topdesk actie naar aanvr mld: ' || rec.mld_melding_key; SELECT COALESCE (mld_kenmerkopdr_waarde, 'Wacht op klant') INTO v_status_ogd FROM (SELECT o.mld_melding_key, o.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk, mld_opdr o WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND o.mld_opdr_key = ko.mld_opdr_key AND sk.mld_srtkenmerk_key = 9081 AND o.mld_statusopdr_key IN (5, 8) AND ko.mld_kenmerkopdr_verwijder IS NULL) status, mld_melding m WHERE m.mld_melding_key = status.mld_melding_key(+) AND m.mld_melding_key = rec.mld_melding_key; IF rec.opdr_status = 1 THEN -- de opdracht is door OGD afgewezen, de melding krijgt een attentie belletje UPDATE mld_melding SET mld_melding_actiecode = 129 WHERE mld_melding_key = rec.mld_melding_key; -- we sturen ook een notificatie naar DPL of de melder INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, prs_perslid_key_receiver, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_prioriteit) VALUES ( 57, --- ordrej 2, NULL, rec.email_opdrrej, 'Opdracht bij melding ' || rec.mld_melding_key || ' is afgewezen door OGD', rec.mld_opdr_key, 2); -- Als vanuit Topdesk een status wordt meegestuurd dan moet er genotificeerd worden ELSE IF UPPER (v_status_ogd) = 'WACHT OP KLANT' --- voorheen: PENDING CUSTOMER THEN v_aanduiding := 'Melding: ' || rec.mld_melding_key; v_errorhint := 'Status melding naar Actie aanvrager voor melding ' || rec.mld_melding_key; UPDATE mld_melding SET mld_melding_actiecode = 2 WHERE mld_melding_key = rec.mld_melding_key; INSERT INTO fac_notificatie ( fac_srtnotificatie_key, fac_notificatie_status, prs_perslid_key_receiver, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_prioriteit) VALUES ( 161, --- mldnot 2, rec.prs_perslid_key_voor, rec.email_melder, 'Notitie toegevoegd door OGD bij melding ' || rec.mld_melding_key, rec.mld_melding_key, 2); ELSE IF UPPER (v_status_ogd) = 'MELDING KWALITATIEF ONVOLDOENDE' THEN v_aanduiding := 'Melding: ' || rec.mld_melding_key; v_errorhint := 'Status melding naar Attentie voor melding ' || rec.mld_melding_key; UPDATE mld_melding SET mld_melding_actiecode = 129 WHERE mld_melding_key = rec.mld_melding_key; UPDATE mld_melding SET mld_melding_flag = 5 WHERE mld_melding_key = rec.mld_melding_key; INSERT INTO fac_notificatie ( fac_srtnotificatie_key, fac_notificatie_status, prs_perslid_key_receiver, fac_notificatie_receiver_email, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_prioriteit) VALUES ( 282, --- mldnob gaat altijd naar DPL 2, NULL, 'onsloket@brabant.nl', 'Melding ' || rec.mld_melding_key || ' is incompleet bevonden door OGD', rec.mld_melding_key, 2); END IF; END IF; END IF; -- Vervolgens zetten we de sync date zodat we weten dat we weten tot hoever de notities al verwerkt zijn mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, rec.mld_melding_key, rec.sync_date_new); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); -- aanmaken mldtrk in fac_tracking INSERT INTO fac_tracking (fac_srtnotificatie_key, fac_tracking_refkey, fac_tracking_oms) VALUES ( 655, rec.mld_melding_key, v_aanduiding || '/' || oracle_err_num || ': ' || oracle_err_mes); END; END LOOP; FOR rec IN sync LOOP BEGIN -- Eerst verzamelen we alle nieuwe notities en zetten deze klaar in een kenmerk voor verzending v_aanduiding := 'Note naar Topdesk voor melding: ' || rec.mld_melding_key; v_errorhint := 'Notities verzamelen voor verzending ' || rec.mld_melding_key; -- Daarvoor moeten we de juiste kenmerkkey bepalen SELECT k.mld_kenmerk_key INTO v_new_note FROM mld_opdr o, mld_kenmerk k, mld_srtkenmerk sk WHERE o.mld_typeopdr_key = k.mld_typeopdr_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'UPDATE_NOTITIES' AND o.mld_opdr_key = rec.mld_opdr_key; -- De oude notitie gooien we weg DELETE MLD_KENMERKOPDR ko WHERE ko.mld_opdr_key = rec.mld_opdr_key AND ko.mld_kenmerk_key = v_new_note; -- Dan vullen we de nieuwe notitie mld.upsertopdrachtkenmerk (v_new_note, rec.mld_opdr_key, rec.notitie); v_errorhint := 'Opdracht opnieuw te verzenden naar Topdesk voor melding: ' || rec.mld_melding_key; -- Eerst zetten we de opdracht opnieuw klaar om te verzenden UPDATE mld_opdr o SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL WHERE o.mld_opdr_key = rec.mld_opdr_key; v_errorhint := 'Syncdatum Topdesk bijwerken voor melding ' || rec.mld_melding_key; -- Als er nog niet eerder gesynchroniseerd is maken we een kenmerk aan met de syncdatum -- Als al eerder gesynchroniseerd is werken we de syncdatum bij -- Hiermee komt deze notitie de volgende keer niet meer voor in de cursor CASE WHEN rec.sync IS NULL THEN INSERT INTO mld_kenmerkmelding ( mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES ( rec.mld_melding_key, (SELECT DISTINCT mld_kenmerk_key FROM mld_kenmerk WHERE mld_srtkenmerk_key = 9083 -- Kenmerksoort tbv synchronisatie van opmerkingen naar Topdesk AND mld_stdmelding_key = rec.mld_ins_discipline_key), rec.note); --- deze notitie moet resulteren in een patch naar Topdesk --- dat wordt getriggerd door een ordupd fac.trackaction ('ORDUPD', rec.mld_opdr_key, NULL, NULL, 'Sync_OGD: (leeg) --> ' || rec.note); ELSE UPDATE mld_kenmerkmelding SET mld_kenmerkmelding_waarde = rec.note WHERE rec.sync_key = mld_kenmerkmelding_key; --- deze notitie moet resulteren in een patch naar Topdesk --- dat wordt getriggerd door een ordupd fac.trackaction ( 'ORDUPD', rec.mld_opdr_key, NULL, NULL, 'Sync_OGD: ' || rec.sync || ' --> ' || rec.note); END CASE; -- De status OGD werken we dan ook nog even netjes bij SELECT k.mld_kenmerk_key, CASE WHEN (UPPER (status_ogd.mld_kenmerkopdr_waarde) = 'WACHT OP KLANT') --> PENDING CUSTOMER is geworden Wacht op klant THEN 'Reactie ontvangen' WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = 'MELDING KWALITATIEF ONVOLDOENDE' --> PENDING DPL is geworden Melding kwalitatief onvoldoende AND m.mld_melding_flag = 3 THEN 'Melding kwalitatief onvoldoende' WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = 'MELDING KWALITATIEF ONVOLDOENDE' AND ( m.mld_melding_flag <> 3 OR m.mld_melding_flag IS NULL) THEN 'Reactie ontvangen' ELSE 'Reactie ontvangen' END CASE INTO v_status_ogd_key, v_status_ogd_new FROM mld_kenmerk k, mld_opdr o, mld_srtkenmerk sk, mld_melding m, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde, k.mld_kenmerk_key FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk sk WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND sk.mld_srtkenmerk_key = 9081 AND ko.mld_kenmerkopdr_verwijder IS NULL) status_ogd WHERE o.mld_typeopdr_key = k.mld_typeopdr_key AND sk.mld_srtkenmerk_key = 9081 AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND o.mld_melding_key = m.mld_melding_key AND status_ogd.mld_opdr_key(+) = o.mld_opdr_key AND o.mld_statusopdr_key IN (5, 8) AND o.mld_opdr_key = rec.mld_opdr_key; mld.upsertopdrachtkenmerk (v_status_ogd_key, rec.mld_opdr_key, v_status_ogd_new); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); -- aanmaken ordtrk in fac_tracking INSERT INTO fac_tracking (fac_srtnotificatie_key, fac_tracking_refkey, fac_tracking_oms) VALUES ( 658, rec.mld_opdr_key, v_aanduiding || '/' || oracle_err_num || ': ' || oracle_err_mes); END; END LOOP; FOR rec IN large LOOP BEGIN -- v_aanduiding := 'Notities bij melding ' || rec.mld_melding_key || ' te groot voor export naar Topdesk.'; -- aanmaken mldtrk in fac_tracking INSERT INTO fac_tracking (fac_srtnotificatie_key, fac_tracking_refkey, fac_tracking_oms) VALUES ( 658, rec.mld_opdr_key, v_aanduiding); END; END LOOP; FOR rec IN externnr_opdr LOOP BEGIN v_aanduiding := 'Topdesknr zetten bij change: ' || rec.mld_melding_key; v_errorhint := 'Melding vullen met externnr voor change ' || rec.mld_melding_key; UPDATE mld_melding SET mld_melding_externnr = rec.topdesknr WHERE mld_melding_key = rec.mld_melding_key; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); -- aanmaken mldtrk in fac_tracking INSERT INTO fac_tracking (fac_srtnotificatie_key, fac_tracking_refkey, fac_tracking_oms) VALUES ( 655, rec.mld_melding_key, v_aanduiding || '/' || oracle_err_num || ': ' || oracle_err_mes); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); fac.writelog (p_applname, 'E', oracle_err_num || '/' || oracle_err_mes, v_errorhint); END pnbr_export_topdesk; / CREATE OR REPLACE PROCEDURE pnbr_export_sms_bezoeker ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS CURSOR bez IS SELECT sn.fac_srtnotificatie_key, 4 status, COALESCE (pl.prs_perslid_mobiel, telnr.telefoonnr, '31652794464') mobiel, ---- indien geen nummer bekend nummer van de gastvrouwen/heren PNBR 'Bezoek voor ' || p.prs_perslid_naam_friendly || ' is gearriveerd' text, b.bez_afspraak_key, b.bez_bezoekers_key, t.fac_tracking_datum FROM fac_tracking t, bez_bezoekers b, fac_srtnotificatie sn, bez_afspraak a, prs_perslid pl, prs_v_perslid_fullnames_all p, (SELECT kl.prs_link_key prs_key, kl.prs_kenmerklink_waarde telefoonnr FROM prs_kenmerklink kl, prs_kenmerk k WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key AND k.prs_kenmerk_niveau = 'P' AND k.prs_kenmerk_key = 1100) telnr WHERE t.fac_srtnotificatie_key = 26 --- bezdon, aankomst bezoek AND t.fac_tracking_refkey = b.bez_bezoekers_key AND a.bez_afspraak_key = b.bez_afspraak_key AND a.bez_afspraak_host_key = p.prs_perslid_key AND a.bez_afspraak_host_key = pl.prs_perslid_key AND telnr.prs_key(+) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST07' AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE) AND b.bez_bezoekers_key NOT IN (SELECT kw.bez_bezoekers_key FROM bez_kenmerkwaarde kw, bez_kenmerk k WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key AND k.bez_kenmerk_upper = 'VERTROUWELIJK') -- wanneer bezoek vertrouwelijk is geen sms AND NOT EXISTS (SELECT bez_kenmerkwaarde_waarde FROM bez_kenmerkwaarde kw, bez_kenmerk k WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key AND k.bez_kenmerk_upper = 'SMS' -- sms verzonden AND kw.bez_bezoekers_key = b.bez_bezoekers_key); BEGIN FOR rec IN bez LOOP -- de SMS berichten versturen INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_phone, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit) VALUES (rec.fac_srtnotificatie_key, rec.status, rec.mobiel, rec.text, rec.bez_afspraak_key, rec.bez_bezoekers_key, 2); -- een timestamp zetten dat de sms verstuurd is pnbr.set_kenmerk ('BEZ', 1060, rec.bez_bezoekers_key, TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'), 0); COMMIT; END LOOP; END; / CREATE OR REPLACE VIEW PNBR_V_RAP_REL_GESCHENKEN AS SELECT bes_bestelling_key, bestelaanvraagnr, besteldatum, besteller, bestelling_voor, afdeling_code, afdeling_omschrijving, groep, catalogus, catalogus_key, productomschrijving, itemprijs, aantal, prijs, keuze, begrotingspost, bet_pin, (SELECT kb.bes_kenmerkbestell_waarde FROM bes_kenmerk k, bes_srtkenmerk sk, bes_kenmerkbestell kb WHERE k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND sk.bes_srtkenmerk_key = 381 AND k.bes_kenmerk_verwijder IS NULL AND kb.bes_kenmerk_key = k.bes_kenmerk_key AND kb.bes_kenmerkbestell_verwijder IS NULL AND kb.bes_bestelling_key = best.bes_bestelling_key) WBS_element FROM (SELECT b.bes_bestelling_key bes_bestelling_key, 'A-' || b.bes_bestelling_key bestelaanvraagnr, b.bes_bestelling_datum besteldatum, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key) besteller, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = pv.prs_perslid_key) bestelling_voor, a.prs_afdeling_naam afdeling_code, a.prs_afdeling_omschrijving afdeling_omschrijving, sg.bes_srtgroep_omschrijving groep, d.ins_discipline_omschrijving catalogus, d.ins_discipline_key catalogus_key, bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal prijs, bi.bes_bestelling_item_aantal aantal, bi.bes_bestelling_item_prijs itemprijs, sd.bes_srtdeel_omschrijving productomschrijving, (SELECT ud.fac_usrdata_code FROM bes_srtkenmerk sk, bes_kenmerk k, bes_kenmerkbestell kb, fac_usrdata ud WHERE UPPER (sk.bes_srtkenmerk_omschrijving) = 'MAAK EEN KEUZE' AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND kb.bes_kenmerk_key = k.bes_kenmerk_key AND kb.bes_kenmerkbestell_waarde = ud.fac_usrdata_key AND kb.bes_kenmerkbestell_verwijder IS NULL AND kb.bes_bestelling_key = b.bes_bestelling_key) keuze, (SELECT kb.bes_kenmerkbestell_waarde FROM bes_srtkenmerk sk, bes_kenmerk k, bes_kenmerkbestell kb WHERE UPPER (sk.bes_srtkenmerk_omschrijving) = 'BEGROTINGSPOST' AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND kb.bes_kenmerk_key = k.bes_kenmerk_key AND kb.bes_kenmerkbestell_verwijder IS NULL AND kb.bes_bestelling_key = b.bes_bestelling_key) begrotingspost, (SELECT kb.bes_kenmerkbestell_waarde FROM bes_srtkenmerk sk, bes_kenmerk k, bes_kenmerkbestell kb WHERE UPPER (sk.bes_srtkenmerk_omschrijving) = 'BETALING PER PIN' AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key AND kb.bes_kenmerk_key = k.bes_kenmerk_key AND kb.bes_kenmerkbestell_verwijder IS NULL AND kb.bes_bestelling_key = b.bes_bestelling_key) bet_pin FROM bes_bestelling b, prs_perslid p, prs_perslid pv, prs_afdeling a, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d WHERE b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND pv.prs_perslid_key(+) = b.prs_perslid_key_voor AND b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key) best WHERE besteldatum > = ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3) AND besteldatum < = TRUNC (SYSDATE, 'Q') - 1 AND catalogus_key IN (2441, --- Bloemenboetiek D. Bragt 2442, --- Bloemsierkunst Oxalis 2443, --- Bloemsierkunst Peter Kuys 3041, --- Cadeaubon 123, --- Geschenk 1041, --- Geschenk GS (cat. D) 3481, --- VVV Cadeaukaart 5901 --- Kistje planten ); CREATE OR REPLACE VIEW PNBR_V_NOTI_MAILING ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XEMAIL, XMOBILE ) AS SELECT fac_srtnotificatie_code code, 4 sender, --- 4 = Facilitor NULL receiver, 'Besteloverzicht relatiegeschenken afgelopen kwartaal' text, 82644 key, ---- refkey: prs_perslid_key NULL xkey, 'mlemen@brabant.nl' xemail, NULL xmobile FROM fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'CUST08' AND TO_CHAR (SYSDATE, 'dd') = '01' -- Elke 1e dag het nieuwe kwartaal AND TO_CHAR (SYSDATE, 'mm') IN ('01', -- Over kwartaal 4 vorig jaar '04', -- Over kwartaal 1 '07', -- Over kwartaal 2 '10' -- Over kwartaal 3 ); -- Dit rapport toont alle fouten van vandaag die in de tracking tabel zijn gelogd CREATE OR REPLACE VIEW PNBR_V_RAP_TOPDESK_LOG ( TRACKING_KEY, MELDINGNR, OPDR_NR, TRACKING_DATUM, TRACKING_OMS, RESPONSE, AANTAL_X ) AS SELECT tracking_key, meldingnr, opdr_nr, tracking_datum, tracking_oms, response, RANK () OVER (PARTITION BY meldingnr ORDER BY tracking_key) aantal_x FROM (SELECT m.mld_melding_externnr topdesknr, TO_CHAR (m.mld_melding_key) meldingnr, m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdr_nr, t.fac_tracking_key tracking_key, t.fac_tracking_datum tracking_datum, t.fac_tracking_oms tracking_oms, CASE WHEN UPPER (t.fac_tracking_oms) LIKE '%CREATING CHANGE TOPDESK%' THEN fac.safe_to_number ( SUBSTR (t.fac_tracking_oms, 34)) WHEN UPPER (t.fac_tracking_oms) LIKE '%CREATING INCIDENT TOPDESK%' THEN fac.safe_to_number ( SUBSTR (t.fac_tracking_oms, 36)) WHEN UPPER (t.fac_tracking_oms) LIKE '%UPDATING CHANGE TOPDESK%' THEN fac.safe_to_number ( SUBSTR (t.fac_tracking_oms, 34)) WHEN UPPER (t.fac_tracking_oms) LIKE '%UPDATING INCIDENT TOPDESK%' THEN fac.safe_to_number ( SUBSTR (t.fac_tracking_oms, 36)) END response FROM fac_tracking t, mld_opdr o, mld_melding m WHERE t.fac_tracking_refkey = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND ( UPPER (fac_tracking_oms) LIKE '%CREATING CHANGE TOPDESK%' OR UPPER (fac_tracking_oms) LIKE '%CREATING INCIDENT TOPDESK%' OR UPPER (fac_tracking_oms) LIKE '%UPDATING CHANGE TOPDESK%' OR UPPER (fac_tracking_oms) LIKE '%UPDATING INCIDENT TOPDESK%') UNION ALL SELECT m.mld_melding_externnr topdesknr, TO_CHAR (m.mld_melding_key) meldingnr, m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdr_nr, t.fac_tracking_key tracking_key, t.fac_tracking_datum tracking_datum, t.fac_tracking_oms tracking_oms, 999 response FROM fac_tracking t, mld_opdr o, mld_melding m WHERE t.fac_tracking_refkey = o.mld_opdr_key AND o.mld_melding_key = m.mld_melding_key AND UPPER (fac_tracking_oms) LIKE '%TOPDESK%' AND t.fac_srtnotificatie_key IN (655, 658)) WHERE response >= 400 AND TRUNC (SYSDATE) = TRUNC (tracking_datum) GROUP BY tracking_key, meldingnr, opdr_nr, tracking_datum, tracking_oms, response ORDER BY meldingnr, tracking_datum DESC; --- Monitoring Topdesk koppeling Als de afgelopen 5 minuten een fout in het --- verwerken van berichten is geconstateerd moet er genotificeerd worden --- We notificeren alleen de 1e keer per dag CREATE OR REPLACE VIEW PNBR_V_NOTI_OGD AS SELECT * FROM pnbr_v_rap_topdesk_log WHERE ROUND ((SYSDATE - tracking_datum) * 1440) <= 5 AND aantal_x < 2; --- als er iets in de tracking of logging staat notificeren we zsm OGD CREATE OR REPLACE PROCEDURE pnbr_export_noti_ogd (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS CURSOR td_log IS SELECT l.*, sn.fac_srtnotificatie_key, rap.fac_usrrap_key FROM pnbr_v_noti_ogd l, fac_srtnotificatie sn, fac_usrrap rap WHERE sn.fac_srtnotificatie_code = 'CUST09' AND UPPER (fac_usrrap_view_name) = 'PNBR_V_RAP_TOPDESK_LOG'; BEGIN FOR rec IN td_log LOOP -- de notificatie klaarzetten INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_receiver_email, prs_perslid_key_receiver, fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, fac_notificatie_prioriteit) VALUES ( rec.fac_srtnotificatie_key, 2, 'beheerpnb@ogd.nl;mudo@brabant.nl;wvhout@brabant.nl;nsalhi@brabant.nl', -- email NULL, 'Notificatie Facilitor - Topdesk koppeling', rec.fac_usrrap_key, NULL, 2); COMMIT; END LOOP; END; / CREATE OR REPLACE VIEW PNBR_V_STATUSVERLOOP_WPBEZ ( INS_DEEL_OMSCHRIJVING, INS_DEEL_KEY, ALG_RUIMTE_KEY, ALG_RUIMTE_NR, INS_DEEL_STATE_HISTORY_KEY, RANKING, INS_DEEL_STATE, STATUS, INS_DEEL_STATEDATE, DUUR_STATUS ) AS SELECT d.ins_deel_omschrijving, d.ins_deel_key, r.alg_ruimte_key, r.alg_ruimte_nr, stat_his.ins_deel_state_history_key, stat_his.ranking, stat_his.ins_deel_state, DECODE (stat_his.ins_deel_state, 0, 'vrij', 1, 'bezet', 99, 'storing') status, stat_his.ins_deel_statedate, COALESCE (stat_his.duur_status, ROUND ((SYSDATE - stat_his.ins_deel_statedate) * 1440)) duur_status FROM ins_deel d, alg_ruimte r, (SELECT ranking, ins_deel_key, ins_deel_state_history_key, ins_deel_state, ins_deel_statedate, ( ins_deel_statedate - LAG (ins_deel_statedate) OVER (PARTITION BY ins_deel_key ORDER BY ranking)) * -1440 AS duur_status --- duur van de status in minuten FROM (SELECT ins_deel_key, ins_deel_state_history_key, ins_deel_state, ins_deel_statedate, RANK () OVER ( PARTITION BY ins_deel_key ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking FROM ins_deel_state_history) rank_state) stat_his WHERE d.ins_deel_key = stat_his.ins_deel_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key; --- bezet wordt direct bezet --- tussen 15 en 60 minuten vrij zien we als medewerker afwezig --- vrij nemen we pas weer over als deze status langer dan een uur duurt CREATE OR REPLACE VIEW pnbr_v_wpbez AS SELECT DISTINCT d.ins_deel_omschrijving, d.alg_ruimte_key, d.ins_deel_key, d.alg_ruimte_nr, CASE WHEN current_state.ins_deel_state = 0 AND current_state.duur_status > 59 THEN 'vrij' WHEN current_state.ins_deel_state = 0 AND current_state.duur_status < 60 AND current_state.duur_status > 15 THEN 'medewerker afwezig' WHEN current_state.ins_deel_state = 99 THEN 'storing' ELSE 'bezet' END def_status FROM pnbr_v_statusverloop_wpbez d, (SELECT ranking, ins_deel_key, ins_deel_state, ins_deel_statedate, ROUND ((SYSDATE - ins_deel_statedate) * 1440) AS duur_status --- duur van de status in minuten FROM (SELECT ins_deel_key, ins_deel_state, ins_deel_statedate, RANK () OVER ( PARTITION BY ins_deel_key ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking FROM ins_deel_state_history) rank_state WHERE ranking = 1) current_state WHERE d.ins_deel_key = current_state.ins_deel_key; CREATE OR REPLACE VIEW PNBR_V_CAD_LABEL_SENSOREN AS SELECT ins_deel_key, ins_deel_opmerking waarde FROM ins_deel d WHERE d.ins_srtdeel_key = 3521; CREATE OR REPLACE VIEW PNBR_V_CAD_THEMA_ACT_BEZETTING AS SELECT ins_deel_key, def_status waarde FROM pnbr_v_wpbez; CREATE OR REPLACE VIEW PNBR_V_CAD_LABEL_WERKPLEKKEN ( INS_DEEL_KEY, WAARDE ) AS SELECT d.ins_deel_key, COALESCE (d.ins_deel_omschrijving, 'onb') waarde FROM ins_deel d WHERE d.ins_srtdeel_key = 3521; CREATE OR REPLACE VIEW PNBR_V_CAD_RESERVEERBAAR ( INS_DEEL_KEY, WAARDE ) AS SELECT ins_deel_key, DECODE (rd.res_deel_key, NULL, 0, 1) waarde FROM ins_deel d, (SELECT * FROM res_deel WHERE res_deel_verwijder IS NULL) rd WHERE d.ins_deel_key = rd.res_ins_deel_key(+); ------------------------------------------------------- --- Rapportages monitoring bezetting Provinciehuis ---- ------------------------------------------------------- CREATE OR REPLACE VIEW PNBR_WP_BEZETTING_WEEK_VERD AS SELECT TO_NUMBER (TO_CHAR (wp.ins_deel_state_date, 'iw')) weeknr, aantal_sensoren_verdieping.alg_gebouw_naam, aantal_sensoren_verdieping.alg_verdieping_volgnr, aantal_sensoren_verdieping.alg_verdieping_omschrijving, aantal_sensoren_verdieping.aantal_sensoren, aantal_sensoren_verdieping.aantal_sensoren * 40 * 60 max_bezetting, SUM (DECODE (wp.status, 'BEZET', wp.duur_status, 0)) bezet, ROUND ( (SUM (DECODE (wp.status, 'BEZET', wp.duur_status, 0))) / (aantal_sensoren_verdieping.aantal_sensoren * 40 * 60) * 100, 2) perc_bezet, SUM (DECODE (wp.status, 'STORING', wp.duur_status, 0)) storing, ROUND ( (SUM (DECODE (wp.status, 'STORING', wp.duur_status, 0))) / (aantal_sensoren_verdieping.aantal_sensoren * 40 * 60) * 100, 2) perc_storing FROM pnbr_werkplekbezetting wp, ( SELECT v.alg_verdieping_key, r.alg_ruimte_nr, r.alg_ruimte_key, COUNT (d.ins_deel_key) aantal_sensoren FROM ins_deel d, alg_ruimte r, alg_verdieping v WHERE d.ins_srtdeel_key = 3521 AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 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 GROUP BY v.alg_verdieping_key, r.alg_ruimte_nr, r.alg_ruimte_key) aantal_sensoren_ruimte, ( SELECT g.alg_gebouw_naam, v.alg_verdieping_volgnr, v.alg_verdieping_omschrijving, v.alg_verdieping_key, COUNT (d.ins_deel_key) aantal_sensoren FROM ins_deel d, alg_ruimte r, alg_verdieping v, alg_gebouw g WHERE d.ins_srtdeel_key = 3521 AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 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 GROUP BY g.alg_gebouw_naam, v.alg_verdieping_volgnr, v.alg_verdieping_omschrijving, v.alg_verdieping_key ORDER BY g.alg_gebouw_naam, v.alg_verdieping_volgnr) aantal_sensoren_verdieping WHERE wp.alg_ruimte_key = aantal_sensoren_ruimte.alg_ruimte_key AND aantal_sensoren_ruimte.alg_verdieping_key = aantal_sensoren_verdieping.alg_verdieping_key GROUP BY aantal_sensoren_verdieping.alg_gebouw_naam, aantal_sensoren_verdieping.alg_verdieping_volgnr, aantal_sensoren_verdieping.alg_verdieping_omschrijving, aantal_sensoren_verdieping.aantal_sensoren, TO_CHAR (wp.ins_deel_state_date, 'iw') ORDER BY TO_NUMBER (TO_CHAR (wp.ins_deel_state_date, 'iw')), aantal_sensoren_verdieping.alg_verdieping_volgnr; ------------------------------------------------------------- --- Einde rapportages monitoring bezetting Provinciehuis ---- ------------------------------------------------------------- CREATE OR REPLACE PROCEDURE pnbr_daily AS BEGIN -- automatische mandatering obv kostenplaats. pnbr.export_werkplekbezetting (); END; / CREATE OR REPLACE VIEW PNBR_V_THEMA_DEEL_RES_DATUM ( fclt_f_datum, ins_deel_key, min_van, max_tot, waarde1, waarde, waarde3 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 62) SELECT datum fclt_f_datum, ins_deel_key, MIN (res_rsv_deel_van) min_van, MAX (res_rsv_deel_tot) max_tot, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 ELSE 3 -- hele dag END waarde1, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- ochtend WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- middag ELSE 3 -- hele dag END waarde, COUNT (res_rsv_deel_tot) -- aantal reservering deze dag waarde3 FROM (SELECT datums.datum, res_ins_deel_key ins_deel_key, res_rsv_deel_van, res_rsv_deel_tot FROM res_v_aanwezigdeel r, ins_deel d, datums, (SELECT datum, res_deel_key, res_rsv_deel_van, res_rsv_deel_tot FROM datums, res_v_aanwezigrsv_deel rrd WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot) blokkerend -- vandaag en nog niet afgelopen WHERE r.res_deel_key = blokkerend.res_deel_key(+) AND datums.datum = blokkerend.datum(+) AND (r.res_deel_vervaldatum IS NULL or r.res_deel_vervaldatum > datums.datum) AND d.ins_deel_key = r.res_ins_deel_key) GROUP BY datum, ins_deel_key ORDER BY datum, ins_deel_key; CREATE OR REPLACE VIEW PNBR_V_LABEL_DEEL_RES_DATUM ( fclt_f_datum, ins_deel_key, res_deel_omschrijving, waarde1, waarde, waarde3, waarde_html, waarde_html2 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 62) SELECT datums.datum fclt_f_datum, isd.res_ins_deel_key ins_deel_key, res_deel_omschrijving, CHR (10) || LISTAGG ( DECODE ( naam, NULL, '', '[s40]' || naam || ' (' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || '-' || DECODE (TRUNC (res_rsv_deel_tot), TRUNC (res_rsv_deel_van), TO_CHAR (res_rsv_deel_tot, 'HH24:MI'), TO_CHAR (res_rsv_deel_tot, 'DD-MM-YYYY HH24:MI')) || ')'), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van) waarde1, CHR (10) || LISTAGG ( DECODE (naam, NULL, '', '[s40]' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van) waarde2, CHR (10) || LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van) waarde3, LISTAGG ( DECODE ( naam, NULL, '', '' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam || ''), '
') WITHIN GROUP (ORDER BY res_rsv_deel_van) waarde_html, LISTAGG (DECODE (naam, NULL, '', '' || naam || ''), '
') WITHIN GROUP (ORDER BY res_rsv_deel_van) waarde_html2 FROM res_v_aanwezigdeel isd, datums, (SELECT datum, res_ins_deel_key, DECODE (p.prs_perslid_visibility, 1, pf.prs_perslid_naam_friendly, a.prs_afdeling_omschrijving) naam, res_rsv_deel_van, res_rsv_deel_tot FROM res_v_aanwezigdeel r, res_v_aanwezigrsv_deel rrd, res_rsv_ruimte rrr, prs_v_perslid_fullnames pf, prs_perslid p, prs_afdeling a, datums WHERE r.res_deel_key = rrd.res_deel_key AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot ) res -- Bezet WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+) GROUP BY datums.datum, isd.res_ins_deel_key, res_deel_omschrijving; CREATE OR REPLACE VIEW PNBR_V_THEMA_RUIMTE_RES_DATUM ( FCLT_F_DATUM, ALG_RUIMTE_KEY, RES_RUIMTE_KEY, MIN_VAN, MAX_TOT, WAARDE1, WAARDE, WAARDE3 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 62) SELECT datum fclt_f_datum, alg_ruimte_key, res_ruimte_key, MIN (res_rsv_ruimte_van) min_van, MAX (res_rsv_ruimte_tot) max_tot, CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL THEN res_ruimte_nr ELSE 'bezet' END waarde1, CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL THEN res_ruimte_nr ELSE 'bezet' END waarde, COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag waarde3 FROM (SELECT datums.datum, rr.res_ruimte_key, rar.alg_ruimte_key alg_ruimte_key, res_ruimte_nr, res_rsv_ruimte_van, res_rsv_ruimte_tot FROM res_v_aanwezigruimte rr, res_alg_ruimte rar, datums, (SELECT datum, res_ruimte_key, res_rsv_ruimte_van, res_rsv_ruimte_tot FROM datums, res_rsv_ruimte rrr, res_ruimte_opstelling rro WHERE res_rsv_ruimte_van > TRUNC (SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND datum >= TRUNC (res_rsv_ruimte_van) AND datum < TRUNC (res_rsv_ruimte_tot) + 1) blokkerend -- vandaag en nog niet afgelopen WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+) AND rr.res_ruimte_key = rar.res_ruimte_key AND rar.res_alg_ruimte_verwijder IS NULL AND datums.datum = blokkerend.datum(+) AND res_discipline_key = 4681 -- Team areas AND ( rr.res_ruimte_vervaldatum IS NULL OR rr.res_ruimte_vervaldatum > datums.datum)) GROUP BY datum, alg_ruimte_key, res_ruimte_key, res_ruimte_nr; CREATE OR REPLACE VIEW pnbr_v_label_ruimte_res_datum ( fclt_f_datum, alg_ruimte_key, waarde ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 62) SELECT DISTINCT datums.datum fclt_f_datum, alg_ruimte_key, DECODE ( prs_perslid_naam_friendly, NULL, '', prs_perslid_naam_friendly || ' (' || TO_CHAR (res_rsv_ruimte_van, 'HH24:MI') || '-' || DECODE ( TRUNC (res_rsv_ruimte_tot), TRUNC (res_rsv_ruimte_van), TO_CHAR ( res_rsv_ruimte_tot, 'HH24:MI'), TO_CHAR (res_rsv_ruimte_tot, 'DD-MM-YYYY HH24:MI')) || ')') waarde1 FROM datums, (SELECT TRUNC (arr.res_rsv_ruimte_van) datum, r2a.alg_ruimte_key, r2a.res_ruimte_key, rr.res_ruimte_omschrijving, prs_perslid_naam_friendly, arr.res_rsv_ruimte_van, arr.res_rsv_ruimte_tot FROM RES_V_RSV_RUIMTE_2_ALG_RUIMTE r2a, res_ruimte rr, res_v_aanwezigrsv_ruimte arr, prs_v_perslid_fullnames p WHERE r2a.res_rsv_ruimte_key = arr.res_rsv_ruimte_key AND r2a.res_ruimte_key = rr.res_ruimte_key AND arr.res_activiteit_key = 370 -- Teamruimte AND arr.res_rsv_ruimte_host_key = p.prs_perslid_key) res -- Bezet WHERE datums.datum = res.datum(+); CREATE OR REPLACE VIEW pnbr_v_rap_res_teamruimte ( datum, HOST, alg_ruimte_key, ruimte_nr, reserveringen ) AS SELECT datum, HOST, alg_ruimte_key, ruimte_nr, LISTAGG (reservering, ', ') WITHIN GROUP (ORDER BY datum_res, alg_ruimte_key) reserveringen FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE) - ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn, (SELECT TRUNC (res_rsv_ruimte_van) datum_res, p.prs_perslid_naam_friendly HOST, rmt.alg_ruimte_key, rmt.ruimte_nr, CASE WHEN (TO_NUMBER ( TO_CHAR (res_rsv_ruimte_van, 'hh24'))) < 12 AND (TO_NUMBER ( TO_CHAR (res_rsv_ruimte_tot, 'hh24'))) > 12 THEN 'hele dag' WHEN (TO_NUMBER ( TO_CHAR (res_rsv_ruimte_van, 'hh24'))) < 12 AND (TO_NUMBER ( TO_CHAR (res_rsv_ruimte_tot, 'hh24'))) <= 12 THEN 'ochtend' WHEN (TO_NUMBER (TO_CHAR (res_rsv_ruimte_van, 'hh24'))) >= 12 THEN 'middag' ELSE 'onbekend' END AS reservering FROM res_rsv_ruimte res, prs_v_perslid_fullnames_all p, ( SELECT res_rsv_ruimte_key, rr.res_ruimte_nr, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_ruimte_key = ra.res_ruimte_key AND r.res_rsv_ruimte_dirtlevel = 0 GROUP BY res_rsv_ruimte_key, rr.res_ruimte_nr) rmt WHERE res.res_rsv_ruimte_verwijder IS NULL AND res.res_activiteit_key = 370 AND res.res_rsv_ruimte_key = rmt.res_rsv_ruimte_key AND res.res_rsv_ruimte_host_key = p.prs_perslid_key) reservering WHERE tijdlijn.datum = reservering.datum_res(+) GROUP BY datum, datum_res, alg_ruimte_key, ruimte_nr, HOST ORDER BY tijdlijn.datum ASC; CREATE OR REPLACE VIEW PNBR_V_BEZ_SENSOR_DAGDEEL AS SELECT TRUNC (stat_his.ins_deel_statedate) datum, r.alg_ruimte_key, r.alg_ruimte_omschrijving, CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) < 12 THEN 'Ochtend' WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) >= 12 THEN 'Middag' ELSE 'Onbekend' END AS dagdeel, SUM (stat_his.duur_status) bez_minuten, COUNT (DISTINCT stat_his.ins_deel_key) aant_sensoren, ROUND ( SUM (stat_his.duur_status) / COUNT (DISTINCT stat_his.ins_deel_key), 0) gem_bez_sensor FROM ins_deel d, alg_ruimte r, (SELECT ranking, ins_deel_key, ins_deel_state, ins_deel_statedate, ( ins_deel_statedate - LAG (ins_deel_statedate) OVER (PARTITION BY ins_deel_key ORDER BY ranking)) * -1440 AS duur_status --- duur van de status in minuten FROM (SELECT ins_deel_key, ins_deel_state, ins_deel_statedate, RANK () OVER ( PARTITION BY ins_deel_key ORDER BY ins_deel_key, ins_deel_statedate DESC) AS ranking FROM ins_deel_state_history) rank_state) stat_his, alg_ruimte rmt WHERE d.ins_deel_key = stat_his.ins_deel_key AND d.ins_alg_ruimte_key = r.alg_ruimte_key AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies AND stat_his.ins_deel_state = 1 -- voor de management info houden we het simpel: wat bezet is bewaren we AND r.alg_ruimte_key = rmt.alg_ruimte_key GROUP BY TRUNC (stat_his.ins_deel_statedate), r.alg_ruimte_key, r.alg_ruimte_omschrijving, CASE -- na 12 uur bezet tellen we mee voor de middag , voor 12 uur tellen we mee voor de ochtend WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) < 12 THEN 'Ochtend' WHEN TO_NUMBER (TO_CHAR (stat_his.ins_deel_statedate, 'HH24')) >= 12 THEN 'Middag' ELSE 'Onbekend' END; CREATE OR REPLACE VIEW PNBR_V_RAP_BEZ_SENSOR_DAGDEEL ( DATUM, ALG_RUIMTE_KEY, RUIMTE_OMSCHRIJVING, DAGDEEL, BEZ_MINUTEN, AANT_SENSOREN, GEM_BEZ_SENSOR ) AS SELECT tijdlijn.datum, bez.alg_ruimte_key, bez.alg_ruimte_omschrijving, bez.dagdeel, bez.bez_minuten, bez.aant_sensoren, bez.gem_bez_sensor FROM pnbr_v_bez_sensor_dagdeel bez, ( SELECT TRUNC (SYSDATE) - LEVEL datum FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE) - ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) tijdlijn WHERE tijdlijn.datum = bez.datum(+) ORDER BY tijdlijn.datum DESC, bez.alg_ruimte_key, bez.dagdeel desc; CREATE OR REPLACE VIEW PNBR_V_RAP_RES_VS_BEZ ( datum, alg_ruimte_key, HOST, ruimte_nr, reserveringen, ruimte_omschrijving, bez_minuten_ochtend, aant_sensoren_ochtend, gem_bez_sensor_ochtend, bez_minuten_middag, aant_sensoren_middag, gem_bez_sensor_middag ) AS SELECT DISTINCT datum, alg_ruimte_key, HOST, ruimte_nr, reserveringen, ruimte_omschrijving, bez_minuten_ochtend, aant_sensoren_ochtend, gem_bez_sensor_ochtend, bez_minuten_middag, aant_sensoren_middag, gem_bez_sensor_middag FROM (SELECT * FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE) - ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) JOIN pnbr_v_rap_res_teamruimte USING (datum)) FULL JOIN (SELECT * FROM ( SELECT TRUNC (SYSDATE) - LEVEL datum FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE) - ADD_MONTHS (TRUNC (SYSDATE, 'Q'), -3)) JOIN ( SELECT datum, alg_ruimte_key, ruimte_omschrijving, SUM ( CASE WHEN dagdeel = 'Ochtend' THEN bez_minuten ELSE NULL END) bez_minuten_ochtend, SUM ( CASE WHEN dagdeel = 'Ochtend' THEN aant_sensoren ELSE NULL END) aant_sensoren_ochtend, SUM ( CASE WHEN dagdeel = 'Ochtend' THEN gem_bez_sensor ELSE NULL END) gem_bez_sensor_ochtend, SUM ( CASE WHEN dagdeel = 'Middag' THEN bez_minuten ELSE NULL END) bez_minuten_middag, SUM ( CASE WHEN dagdeel = 'Middag' THEN aant_sensoren ELSE NULL END) aant_sensoren_middag, SUM ( CASE WHEN dagdeel = 'Middag' THEN gem_bez_sensor ELSE NULL END) gem_bez_sensor_middag FROM pnbr_v_rap_bez_sensor_dagdeel GROUP BY datum, alg_ruimte_key, ruimte_omschrijving ORDER BY datum DESC) USING (datum)) USING (datum, alg_ruimte_key) ORDER BY datum; CREATE OR REPLACE VIEW PNBR_V_RAP_BEZ_VERDIEPING AS SELECT bezetting.datum, TO_CHAR (bezetting.datum, 'DAY') dag, bezetting.alg_verdieping_volgnr, aant_verd.aant_sensoren, aant_verd.max_bez_minuten_dagdeel, SUM (bezetting.bez_minuten_ochtend) tot_bez_ochtend, ROUND ( ( SUM (bezetting.bez_minuten_ochtend) / aant_verd.max_bez_minuten_dagdeel) * 100) perc_bez_ochtend, SUM (bezetting.bez_minuten_middag) tot_bez_middag, ROUND ( ( SUM (bezetting.bez_minuten_middag) / aant_verd.max_bez_minuten_dagdeel) * 100) perc_bez_middag FROM ( SELECT b.datum, v.alg_verdieping_volgnr, v.alg_verdieping_key, b.alg_ruimte_key, SUM ( CASE WHEN b.dagdeel = 'Ochtend' THEN b.bez_minuten ELSE NULL END) bez_minuten_ochtend, SUM ( CASE WHEN b.dagdeel = 'Middag' THEN b.bez_minuten ELSE NULL END) bez_minuten_middag FROM pnbr_v_rap_bez_sensor_dagdeel b, (SELECT r.alg_ruimte_key, v.alg_verdieping_key, v.alg_verdieping_volgnr FROM alg_ruimte r, alg_verdieping v WHERE v.alg_verdieping_key = r.alg_verdieping_key) v WHERE b.alg_ruimte_key = v.alg_ruimte_key(+) GROUP BY b.datum, v.alg_verdieping_key, v.alg_verdieping_volgnr, b.alg_ruimte_key, b.ruimte_omschrijving ORDER BY datum DESC, v.alg_verdieping_volgnr) bezetting, ( SELECT g.alg_gebouw_omschrijving, v.alg_verdieping_key, COUNT (d.ins_deel_key) aant_sensoren, 240 * COUNT (d.ins_deel_key) max_bez_minuten_dagdeel FROM alg_gebouw g, alg_verdieping v, alg_ruimte r, ins_deel d WHERE g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = d.ins_alg_ruimte_key AND d.ins_alg_ruimte_type = 'R' AND d.ins_srtdeel_key = 3521 --- alleen sensoren van hi-technologies AND d.ins_deel_verwijder IS NULL GROUP BY g.alg_gebouw_omschrijving, v.alg_verdieping_key ORDER BY g.alg_gebouw_omschrijving) aant_verd WHERE bezetting.alg_verdieping_key = aant_verd.alg_verdieping_key(+) GROUP BY bezetting.datum, bezetting.alg_verdieping_volgnr, aant_verd.aant_sensoren, aant_verd.max_bez_minuten_dagdeel ORDER BY bezetting.datum, bezetting.alg_verdieping_volgnr; CREATE OR REPLACE VIEW pnbr_wp_bezetting_dag_verd AS SELECT to_char (wp.ins_deel_state_date , 'IW') weeknr, TO_CHAR (wp.ins_deel_state_date, 'DAY') dag, fac.getweekdaynum(wp.ins_deel_state_date) sortering, aantal_sensoren_verdieping.alg_gebouw_naam, aantal_sensoren_verdieping.alg_verdieping_volgnr, aantal_sensoren_verdieping.alg_verdieping_omschrijving, aantal_sensoren_verdieping.aantal_sensoren, aantal_sensoren_verdieping.aantal_sensoren * 8 * 60 max_bezetting, SUM (DECODE (wp.status, 'BEZET', wp.duur_status, 0)) bezet, ROUND ( (SUM (DECODE (wp.status, 'BEZET', wp.duur_status, 0))) / (aantal_sensoren_verdieping.aantal_sensoren * 8 * 60) * 100, 2) perc_bezet, SUM (DECODE (wp.status, 'STORING', wp.duur_status, 0)) storing, ROUND ( (SUM (DECODE (wp.status, 'STORING', wp.duur_status, 0))) / (aantal_sensoren_verdieping.aantal_sensoren * 8 * 60) * 100, 2) perc_storing FROM pnbr_werkplekbezetting wp, (SELECT --First day of previous month TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month') van, --Last day of previous month LAST_DAY (TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month')) tot FROM DUAL) datum, ( SELECT v.alg_verdieping_key, r.alg_ruimte_nr, r.alg_ruimte_key, COUNT (d.ins_deel_key) aantal_sensoren FROM ins_deel d, alg_ruimte r, alg_verdieping v WHERE d.ins_srtdeel_key = 3521 AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 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 GROUP BY v.alg_verdieping_key, r.alg_ruimte_nr, r.alg_ruimte_key) aantal_sensoren_ruimte, ( SELECT g.alg_gebouw_naam, v.alg_verdieping_volgnr, v.alg_verdieping_omschrijving, v.alg_verdieping_key, COUNT (d.ins_deel_key) aantal_sensoren FROM ins_deel d, alg_ruimte r, alg_verdieping v, alg_gebouw g WHERE d.ins_srtdeel_key = 3521 AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 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 GROUP BY g.alg_gebouw_naam, v.alg_verdieping_volgnr, v.alg_verdieping_omschrijving, v.alg_verdieping_key ORDER BY g.alg_gebouw_naam, v.alg_verdieping_volgnr) aantal_sensoren_verdieping WHERE wp.alg_ruimte_key = aantal_sensoren_ruimte.alg_ruimte_key AND aantal_sensoren_ruimte.alg_verdieping_key = aantal_sensoren_verdieping.alg_verdieping_key AND ins_deel_state_date >= van AND ins_deel_state_date <= tot GROUP BY aantal_sensoren_verdieping.alg_gebouw_naam, aantal_sensoren_verdieping.alg_verdieping_volgnr, aantal_sensoren_verdieping.alg_verdieping_omschrijving, aantal_sensoren_verdieping.aantal_sensoren, wp.ins_deel_state_date ORDER BY wp.ins_deel_state_date, aantal_sensoren_verdieping.alg_verdieping_volgnr; CREATE OR REPLACE VIEW pnbr_wp_gem_bezetting_dag_verd ( dag, gebouw, verdieping, max_bezetting, bezetting, perc_bezetting ) AS SELECT sortering || '-' || dag as dag, alg_gebouw_naam, alg_verdieping_volgnr, SUM (max_bezetting), SUM (bezet), ROUND ((SUM (bezet) / SUM (max_bezetting)) * 100) perc FROM pnbr_wp_bezetting_dag_verd GROUP BY sortering || '-' || dag, alg_gebouw_naam, alg_verdieping_volgnr ORDER BY dag; CREATE OR REPLACE VIEW pnbr_wp_bez_weeknr_dag_verd ( weeknr_dag, gebouw, verdieping, perc_bez ) AS SELECT weeknr || ' ' || sortering || '-' || dag, alg_gebouw_naam, alg_verdieping_volgnr, perc_bezet FROM pnbr_wp_bezetting_dag_verd ORDER BY weeknr || ' ' || sortering || '-' || dag; CREATE OR REPLACE VIEW PNBR_WP_BEZETTING_DAGDEEL ( DATUM, DAG, DAGDEEL, PERC_BEZ ) BEQUEATH DEFINER AS SELECT bez.datum, TO_CHAR (bez.datum, 'DAY') dag, bez.dagdeel, ROUND ( ( SUM (bez.bez_minuten) / ( (SELECT COUNT (d.ins_deel_key) aantal_sensoren FROM ins_deel d WHERE d.ins_srtdeel_key = 3521 AND d.ins_deel_verwijder IS NULL AND d.ins_deel_actief = 1 AND d.ins_alg_ruimte_type = 'R') * 4 * 60)) * 100) perc_bez FROM pnbr_v_bez_sensor_dagdeel bez, (SELECT --First day of previous month TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month') van, --Last day of previous month LAST_DAY (TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month')) tot FROM DUAL) tijdlijn WHERE bez.datum >= van AND bez.datum <= tot GROUP BY bez.datum, bez.dagdeel ORDER BY bez.datum, bez.dagdeel DESC; CREATE OR REPLACE VIEW pnbr_wp_bezetting_dagdeel_perc AS SELECT fac.getweekdaynum (dd.datum) || '-' || dd.dag AS weekdag, dd.dagdeel, ROUND (SUM (dd.perc_bez) / aant.aant_x) AS perc_bez FROM pnbr_wp_bezetting_dagdeel dd, ( SELECT dag, dagdeel, COUNT (dagdeel) aant_x FROM pnbr_wp_bezetting_dagdeel GROUP BY dag, dagdeel) aant WHERE dd.dag = aant.dag AND dd.dagdeel = aant.dagdeel GROUP BY fac.getweekdaynum (dd.datum), dd.dag, dd.dagdeel, aant.aant_x ORDER BY fac.getweekdaynum (dd.datum); ----------------------------------------------------------- ----- Dashboard Management rapportages -------------------- ----------------------------------------------------------- CREATE OR REPLACE VIEW PNBR_V_GEM_AANT_MLD_MAAND AS SELECT l.alg_locatie_omschrijving, l.alg_locatie_key, aant_maand.maand, aant_maand.aantal, gem.gem_maand FROM alg_locatie l, ( SELECT m.mld_alg_locatie_key, TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, TO_CHAR (m.mld_melding_datum, 'yyyy-mm') || ' ' || TO_CHAR (m.mld_melding_datum, 'Month') maand, COUNT (mld_melding_key) aantal FROM mld_melding m, mld_stdmelding sm WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND TRUNC (m.mld_melding_datum) >= TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -24)), 'Month') AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month') GROUP BY m.mld_alg_locatie_key, TO_CHAR (m.mld_melding_datum, 'yyyy'), TO_CHAR (m.mld_melding_datum, 'yyyy-mm') || ' ' || TO_CHAR (m.mld_melding_datum, 'Month')) aant_maand, ( SELECT m.mld_alg_locatie_key, COUNT (mld_melding_key) / 24 gem_maand FROM mld_melding m, mld_stdmelding sm WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND TRUNC (m.mld_melding_datum) >= TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -24)), 'Month') AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month') GROUP BY m.mld_alg_locatie_key) gem WHERE l.alg_locatie_key = aant_maand.mld_alg_locatie_key AND l.alg_locatie_key = gem.mld_alg_locatie_key AND l.alg_locatie_verwijder IS NULL AND ( l.alg_locatie_vervaldatum IS NULL OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE)) ORDER BY l.alg_locatie_omschrijving, aant_maand.jaar, aant_maand.maand; CREATE OR REPLACE VIEW PNBR_V_AANT_MLD_PER_SRT AS SELECT TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, TO_CHAR (m.mld_melding_datum, 'yyyy') || ' ' || TO_CHAR (m.mld_melding_datum, 'mm') periode, ks.prs_kostensoort_oms soort, COUNT (m.mld_melding_key) aantal FROM mld_melding m, mld_stdmelding sm, prs_kostensoort ks WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND ks.prs_kostensoort_key = sm.prs_kostensoort_key GROUP BY TO_CHAR (m.mld_melding_datum, 'yyyy'), TO_CHAR (m.mld_melding_datum, 'yyyy') || ' ' || TO_CHAR (m.mld_melding_datum, 'mm'), ks.prs_kostensoort_oms ORDER BY TO_CHAR (m.mld_melding_datum, 'yyyy') || ' ' || TO_CHAR (m.mld_melding_datum, 'mm'); CREATE OR REPLACE VIEW PNBR_V_GEM_RESPONSE_TIJD AS SELECT jaar, periode, soort, COUNT (mld_melding_key) aant_mld, (SUM (hrs_between) / COUNT (mld_melding_key)) gem_uren FROM (SELECT TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, TO_CHAR (m.mld_melding_datum, 'yyyy') || ' ' || TO_CHAR (m.mld_melding_datum, 'mm') periode, ks.prs_kostensoort_oms soort, m.mld_melding_key, m.mld_melding_datum datum_melden, COALESCE ( (mld.getmeldingstatusdate (m.mld_melding_key, 4)), SYSDATE) in_behandeling, ROUND ( 24 * ( (COALESCE ( (mld.getmeldingstatusdate ( m.mld_melding_key, 4)), SYSDATE)) - (m.mld_melding_datum))) hrs_between FROM mld_melding m, mld_stdmelding sm, prs_kostensoort ks WHERE m.mld_melding_status NOT IN (1, 2) -- afgewezen en nieuwe meldingen tellen niet mee AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND ks.prs_kostensoort_key = sm.prs_kostensoort_key AND mld.getmeldingstatusdate (m.mld_melding_key, 4) IS NOT NULL) tijd_in_beh GROUP BY jaar, periode, soort; CREATE OR REPLACE VIEW PNBR_V_GEM_AFH_TIJD AS SELECT jaar, periode, soort, COUNT (mld_melding_key) aantal_mld, SUM ( DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL)) / COUNT (mld_melding_key) gem_afh_dagen FROM (SELECT TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, TO_CHAR (m.mld_melding_datum, 'yyyy') || ' ' || TO_CHAR (m.mld_melding_datum, 'mm') periode, ks.prs_kostensoort_oms soort, m.mld_melding_key, m.mld_melding_datum, mld.getmeldingstatusdate (m.mld_melding_key, 5) afg, mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd FROM mld_melding m, mld_stdmelding sm, prs_kostensoort ks WHERE m.mld_melding_status = 5 -- alleen afgemeld AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND ks.prs_kostensoort_key = sm.prs_kostensoort_key) x GROUP BY jaar, periode, soort; CREATE OR REPLACE VIEW PNBR_V_GEM_AFH_OPDR AS SELECT TO_CHAR (o.opdracht_datum, 'yyyy') jaar, TO_CHAR (o.opdracht_datum, 'yyyy') || ' ' || TO_CHAR (o.opdracht_datum, 'mm') periode, ks.prs_kostensoort_oms, COUNT (o.opdracht_key) aant_opdr, SUM (opdracht_lev_doorloopdagen) / COUNT (o.opdracht_key) gem_doorloop_dgn FROM mld_v_udr_opdracht o, mld_melding m, mld_stdmelding sm, prs_kostensoort ks WHERE UPPER (o.opdracht_status) = 'AFGEMELD' AND m.mld_melding_key = o.melding_key AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND ks.prs_kostensoort_key = sm.prs_kostensoort_key GROUP BY TO_CHAR (o.opdracht_datum, 'yyyy'), TO_CHAR (o.opdracht_datum, 'yyyy') || ' ' || TO_CHAR (o.opdracht_datum, 'mm'), ks.prs_kostensoort_oms; CREATE OR REPLACE FORCE VIEW pnbr_v_rap_aant_mld_ks_jr ( categorie, ins_discipline_omschrijving, mld_stdmelding_omschrijving, aantal, ranking ) AS SELECT ks.prs_kostensoort_oms, ins_discipline_omschrijving, mld_stdmelding_omschrijving, COUNT (mld_melding_key), RANK () OVER (PARTITION BY ks.prs_kostensoort_oms ORDER BY COUNT (mld_melding_key) DESC) ranking FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, prs_kostensoort ks WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND ks.prs_kostensoort_key = std.prs_kostensoort_key AND m.mld_melding_datum BETWEEN TO_DATE ( TO_CHAR ( ADD_MONTHS (SYSDATE, -12), 'yyyymm') || '01', 'yyyymmdd') AND TO_DATE ( TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd') GROUP BY ks.prs_kostensoort_oms, mld_stdmelding_omschrijving, d.ins_discipline_omschrijving ORDER BY ks.prs_kostensoort_oms, COUNT (mld_melding_key) DESC; CREATE OR REPLACE VIEW PNBR_V_RAP_SLA_OPTIJD ( telling_mld, mld_melding_key, categorie, datum_afm, afspraak_sla_optijd, telling_sla_optijd, telling_sla_niet_optijd ) AS SELECT 1 telling_mld, mld_melding_key, kostensoort, afgemeld, CASE WHEN DECODE ( x.t_doorlooptijd.eenheid, 'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0), 0) >= 0 THEN lcl.l ('lcl_yes') ELSE lcl.l ('lcl_no') END afspraak_sla_optijd, CASE WHEN DECODE ( x.t_doorlooptijd.eenheid, 'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0), 0) >= 0 THEN 1 ELSE 0 END telling_sla_optijd, CASE WHEN DECODE ( x.t_doorlooptijd.eenheid, 'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0), 0) + DECODE ( x.t_doorlooptijd.eenheid, 'U', ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0), 0) >= 0 THEN 0 ELSE 1 END telling_sla_niet_optijd FROM (SELECT m.mld_melding_key, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key) FROM mld_stdmelding sm, mld_discipline disc WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key AND sm.mld_stdmelding_key = s.mld_stdmelding_key)) kostensoort, (SELECT mld_statuses_omschrijving FROM mld_statuses sta WHERE sta.mld_statuses_key = m.mld_melding_status) status, CASE WHEN m.mld_melding_einddatum > COALESCE ( fac.gettrackingdate ('MLDAFM', m.mld_melding_key), fac.gettrackingdate ('MLDREJ', m.mld_melding_key), SYSDATE) THEN 1 ELSE 0 END plan_uitvoertijd_sla, CASE WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1 ELSE 0 END sla_nvt, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'D', m.mld_melding_t_uitvoertijd.tijdsduur, NULL) sla_werkdgn, DECODE (m.mld_melding_t_uitvoertijd.eenheid, 'U', m.mld_melding_t_uitvoertijd.tijdsduur, NULL) sla_werkuren, DECODE (m.mld_melding_t_respijt.eenheid, 'D', m.mld_melding_t_respijt.tijdsduur, NULL) sla_respijtdgn, DECODE (m.mld_melding_t_respijt.eenheid, 'U', m.mld_melding_t_respijt.tijdsduur, NULL) sla_respijturen, DECODE (m.mld_melding_t_accepttijd.eenheid, 'D', m.mld_melding_t_accepttijd.tijdsduur, NULL) sla_accptdgn, DECODE (m.mld_melding_t_accepttijd.eenheid, 'U', m.mld_melding_t_accepttijd.tijdsduur, NULL) sla_accpturen, m.mld_melding_datum datum, CASE WHEN s.mld_stdmelding_planbaar = 2 THEN TO_DATE (NULL) ELSE m.mld_melding_einddatum END einddatum, mld_melding_einddatum_std einddatum_std, mld_melding_acceptdatum_std acceptdatum, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), mld.getmeldingstatusdate (m.mld_melding_key, 1)) afgemeld, COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4), mld.getmeldingstatusdate (m.mld_melding_key, 1)) accepted, mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd FROM mld_melding m, mld_stdmelding s, mld_discipline md, mld_disc_params mdp, ins_srtdiscipline sd, mld_stdmeldinggroep smg WHERE s.mld_stdmelding_key = m.mld_stdmelding_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND md.ins_discipline_key = s.mld_ins_discipline_key AND md.ins_discipline_key = mdp.mld_ins_discipline_key AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+) AND m.fac_activiteit_key IS NULL AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x; -- PNBR#69729 notificaties naar email bij eindtijd div. vergaderingen CREATE OR REPLACE VIEW pnbr_v_noti_res_tot_20uur ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT fac_srtnotificatie_code code, 4 sender, --- 4 Facilitor NULL receiver, 'Aangevraagde reserveringen met een eindtijd tot 20:00 uur' text, 3181 key, ---- rapport RES: Reserveringen met een eindtijd tot 20:00 uur NULL xkey, 'beveiliging@brabant.nl' xemail, NULL xmobile FROM fac_srtnotificatie sn, fac_notificatie_job nj WHERE sn.fac_srtnotificatie_code = 'CUST11' AND UPPER (nj.fac_notificatie_job_view) = 'PNBR_V_NOTI_RES_TOT_20UUR' AND EXISTS (SELECT 1 FROM res_v_udr_reservering r WHERE TRUNC (r.invoerdatum) = TRUNC (SYSDATE) - 1 AND TO_NUMBER (TO_CHAR (tot, 'HH24')) <= 20); CREATE OR REPLACE VIEW pnbr_v_noti_res_na_20uur ( code, sender, receiver, text, key, xkey, xemail, xmobile ) AS SELECT fac_srtnotificatie_code code, 4 sender, --- 4 Facilitor NULL receiver, 'Aangevraagde reserveringen met een eindtijd na 20:00 uur' text, 3201 key, ---- rapport RES: Reserveringen met een eindtijd tot 20:00 uur NULL xkey, 'rvdplas@brabant.nl;tbovens@brabant.nl' xemail, NULL xmobile FROM fac_srtnotificatie sn, fac_notificatie_job nj WHERE sn.fac_srtnotificatie_code = 'CUST12' AND UPPER (nj.fac_notificatie_job_view) = 'PNBR_V_NOTI_RES_NA_20UUR' AND EXISTS (SELECT 1 FROM res_v_udr_reservering r WHERE TRUNC (r.invoerdatum) = TRUNC (SYSDATE) - 1 AND TO_NUMBER (TO_CHAR (tot, 'HH24')) > 20); CREATE OR REPLACE VIEW PNBR_V_LABEL_RUIMTE_AAND ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT ok.alg_onrgoed_key, ok.alg_onrgoedkenmerk_waarde FROM alg_onrgoedkenmerk ok, alg_kenmerk k WHERE ok.alg_kenmerk_key = k.alg_kenmerk_key AND k.alg_kenmerk_niveau = 'R' AND k.alg_kenmerk_key = 1000; --- Combineer de labels 61 en 13 voor de flexreserveringen --- PNBR#75082 Nummering werkplekken aanpassen in Flexreserveringen CREATE OR REPLACE VIEW PNBR_V_LABEL_DEEL_RES_DATUM ( fclt_f_datum, ins_deel_key, ins_deel_omschrijving, waarde1, waarde, waarde3, waarde_html, waarde_html2 ) AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 62) SELECT datums.datum fclt_f_datum, isd.res_ins_deel_key ins_deel_key, d.ins_deel_omschrijving, COALESCE ( CHR (10) || LISTAGG ( DECODE ( naam, NULL, '', '[s40]' || naam || ' (' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || '-' || DECODE ( TRUNC (res_rsv_deel_tot), TRUNC (res_rsv_deel_van), TO_CHAR ( res_rsv_deel_tot, 'HH24:MI'), TO_CHAR (res_rsv_deel_tot, 'DD-MM-YYYY HH24:MI')) || ')'), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van), d.ins_deel_omschrijving) waarde1, COALESCE ( CHR (10) || LISTAGG ( DECODE ( naam, NULL, '', '[s40]' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van), d.ins_deel_omschrijving) waarde2, COALESCE ( CHR (10) || LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10)) WITHIN GROUP (ORDER BY res_rsv_deel_van), d.ins_deel_omschrijving) waarde3, COALESCE ( LISTAGG ( DECODE ( naam, NULL, '', '' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam || ''), '
') WITHIN GROUP (ORDER BY res_rsv_deel_van), d.ins_deel_omschrijving) waarde_html, COALESCE ( LISTAGG ( DECODE (naam, NULL, '', '' || naam || ''), '
') WITHIN GROUP (ORDER BY res_rsv_deel_van), d.ins_deel_omschrijving) waarde_html2 FROM res_v_aanwezigdeel isd, datums, ins_deel d, (SELECT datum, res_ins_deel_key, DECODE (p.prs_perslid_visibility, 1, pf.prs_perslid_naam_friendly, a.prs_afdeling_omschrijving) naam, res_rsv_deel_van, res_rsv_deel_tot FROM res_v_aanwezigdeel r, res_v_aanwezigrsv_deel rrd, res_rsv_ruimte rrr, prs_v_perslid_fullnames pf, prs_perslid p, prs_afdeling a, datums WHERE r.res_deel_key = rrd.res_deel_key AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot) res -- Bezet WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+) AND isd.res_ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = 3521 GROUP BY datums.datum, isd.res_ins_deel_key, d.ins_deel_omschrijving; CREATE OR REPLACE VIEW PNBR_V_RAP_RES_NA_20UUR AS SELECT r.invoerdatum, r.nummer, r.res_omschrijving, r.gastheer, r.contact, r.afdeling_omschrijving, r.verdieping, r.ruimte, r.van, r.tot, TO_NUMBER (TO_CHAR (r.van, 'HH24')) tijd_van, TO_NUMBER (TO_CHAR (r.tot, 'HH24')) tijd_tot, r.duur FROM res_v_udr_reservering r WHERE TRUNC (r.invoerdatum) = TRUNC (SYSDATE) - 1 AND TO_NUMBER (TO_CHAR (r.tot, 'HH24')) > 20; CREATE OR REPLACE VIEW PNBR_V_RAP_RES_TOT_20UUR AS SELECT r.invoerdatum, r.nummer, r.res_omschrijving, r.gastheer, r.contact, r.afdeling_omschrijving, r.verdieping, r.ruimte, r.van, r.tot, TO_NUMBER (TO_CHAR (r.van, 'HH24')) tijd_van, TO_NUMBER (TO_CHAR (r.tot, 'HH24')) tijd_tot, r.duur FROM res_v_udr_reservering r WHERE TRUNC (r.invoerdatum) = TRUNC (SYSDATE) - 1 AND TO_NUMBER (TO_CHAR (r.tot, 'HH24')) <= 20; CREATE OR REPLACE VIEW PNBR_V_RAP_API_PERSLID ( perslid_key, perslid_nr ) AS SELECT p.prs_perslid_key, p.prs_perslid_nr FROM prs_perslid p WHERE p.prs_perslid_nr IS NOT NULL AND p.prs_perslid_verwijder IS NULL AND ( p.prs_perslid_einddatum IS NULL OR TRUNC (p.prs_perslid_einddatum) > SYSDATE) AND p.prs_perslid_upper NOT LIKE '%INACTIEF%'; ------ 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