Files
Customer/PNBR/pnbr.sql
Ruud Lipper ebfe4baac0 PNBR#87527 Toevoegen Kistjeplanten catalogus aan relatiegeschenkenrapportage
svn path=/Customer/trunk/; revision=67858
2025-02-05 11:32:51 +00:00

11251 lines
472 KiB
MySQL

--
-- $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,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/ins/ins_deel.asp?urole=bo&'
|| 'ins_key= '
|| ins_deel_key
|| '")''>'
|| HTF.escape_sc (ins_deel_omschrijving)
|| '</a>',
(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',
'<img src="https://pnbr.facilitor.nl/api2/objects/'
|| ins_deel_key
|| '/attachments/4321/'
|| (SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 4321
AND d.ins_deel_key = ikd.ins_deel_key)
|| '" height="128">')
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,
'<a class="details" onclick=''FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&'
|| 'ins_key='
|| d.ins_deel_key
|| '")''>'
|| d.ins_deel_omschrijving
|| '</a>'
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'),
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| w.start_key
|| '")''>'
|| w.start_key
|| '</a>',
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| m.mld_melding_key
|| '")''>'
|| m.mld_melding_key
|| '</a>',
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'),
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| w.start_key
|| '")''>'
|| w.start_key
|| '</a>',
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| m.mld_melding_key
|| '")''>'
|| m.mld_melding_key
|| '</a>',
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,
'<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
|| 'rsv_ruimte_key='
|| rr.res_rsv_ruimte_key
|| '")''>'
|| rr.res_reservering_key
|| '/'
|| res_rsv_ruimte_volgnr
|| '</a>'
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',
'<img src="https://pnbr.facilitor.nl/api2/objects/'
|| ins_deel_key
|| '/attachments/109/'
|| (SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 109
AND o.ins_deel_key = ikd.ins_deel_key)
|| '" height="128">')
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',
'<img src="https://pnbr.facilitor.nl/api2/objects/'
|| ins_deel_key
|| '/attachments/109/'
|| (SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 109
AND o.ins_deel_key = ikd.ins_deel_key)
|| '" height="128">')
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, '',
'<span class="body">'
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| ' '
|| naam
|| '</span>'),
'<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde_html,
LISTAGG (DECODE (naam, NULL, '', '<span class="body">' || naam || '</span>'), '<br>')
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, '',
'<span class="body">'
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| ' '
|| naam
|| '</span>'),
'<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van),
d.ins_deel_omschrijving) waarde_html,
COALESCE (
LISTAGG (
DECODE (naam,
NULL, '',
'<span class="body">' || naam || '</span>'),
'<br>')
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