Files
Customer/DEMO/demo.sql
Erik Groener 2a1baaa192 FCLT#56803 Klantspecifieke code voor de 'bolletjes communicatie' aanpassing
svn path=/Customer/trunk/; revision=41350
2019-03-06 14:10:55 +00:00

4838 lines
200 KiB
MySQL
Raw Blame History

-- Script containing customer specific configuration sql statements for DEMO
-- ***** SINCE 01-01-2009 *****
-- (c) 2012 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xdemo.lst
CREATE OR REPLACE VIEW curs_v_rap_infobord (
item_type,
item_key,
aktief,
bezoek_status,
offset,
dag,
tijd_van,
tijd_tot,
ruimte,
catalogus,
aanvrager,
gastheer,
omschrijving,
status,
bezoeker,
bedrijf,
locatie_code,
gebouw_code,
verdieping_code,
locatie_omschrijving,
gebouw_omschrijving,
verdieping_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key
)
AS
SELECT 'RES',
rrr.res_rsv_ruimte_key,
( CASE
WHEN res_rsv_ruimte_van > SYSDATE THEN 'expected'
WHEN res_rsv_ruimte_tot < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
( CASE
WHEN B.BEZ_BEZOEKERS_OUT IS not null THEN 'out'
WHEN b.bez_bezoekers_done is not null THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
res_ruimte_nr ruimte,
ins_discipline_omschrijving catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
alg_verdieping_code verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_omschrijving gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
res_v_res_ruimte_gegevens rrg,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf,
res_discipline rd,
bez_afspraak a,
bez_bezoekers b
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key
AND rrg.res_discipline_key = rd.ins_discipline_key
AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key(+)
AND a.bez_afspraak_key = b.bez_afspraak_key(+)
union all
select 'BEZ', b.bez_afspraak_key,
( CASE
WHEN A.BEZ_AFSPRAAK_DATUM > SYSDATE THEN 'expected'
WHEN a.bez_afspraak_eind < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
( CASE
WHEN B.BEZ_BEZOEKERS_OUT IS not null THEN 'out'
WHEN b.bez_bezoekers_done is not null THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - BEZ_AFSPRAAK_DATUM) * 24 * 60) offset,
TO_CHAR (BEZ_AFSPRAAK_DATUM, 'dd-mm-yyyy') dag,
TO_CHAR (BEZ_AFSPRAAK_DATUM, 'hh24:mi') tijd_van,
TO_CHAR (BEZ_AFSPRAAK_eind, 'hh24:mi') tijd_tot,
null ruimte,
null catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
null omschrijving,
null status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
null verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_naam gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
ogg.alg_gebouw_key,
ogg.alg_verdieping_key
from bez_afspraak a, bez_bezoekers b,
prs_v_perslid_fullnames aanvrager, alg_locatie l, alg_v_allonrgoed_gegevens ogg,
prs_v_perslid_fullnames gastheer
where a.bez_afspraak_key = b.bez_afspraak_key
and A.BEZ_AFSPRAAK_HOST_KEY = gastheer.prs_perslid_key
and a.bez_afspraak_contact_key = aanvrager.prs_perslid_key
and A.ALG_LOCATIE_KEY = l.alg_locatie_key
and A.ALG_ONRGOED_KEYS = ogg.alg_onroerendgoed_keys(+)
and A.RES_RSV_RUIMTE_KEY is null;
CREATE OR REPLACE VIEW curs_v_info_loc_overzicht (
aktief,
boarding,
offset,
dag,
tijd_van,
tijd_tot,
ruimte,
aanvrager,
gastheer,
omschrijving,
status,
locatie_code,
gebouw_code,
verdieping_code,
alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key
)
AS
SELECT (SELECT 'active'
FROM DUAL
WHERE res_rsv_ruimte_van < SYSDATE
AND res_rsv_ruimte_tot > SYSDATE
UNION
SELECT 'expected'
FROM DUAL
WHERE res_rsv_ruimte_van > SYSDATE
UNION
SELECT 'passed'
FROM DUAL
WHERE res_rsv_ruimte_tot < SYSDATE)
aktief,
(SELECT DECODE (COUNT ( * ), 0, 1, 0)
FROM res_rsv_ruimte rrr2
WHERE rrr2.res_rsv_ruimte_tot BETWEEN SYSDATE
AND rrr.res_rsv_ruimte_van
AND rrr2.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)
boarding,
TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
res_ruimte_nr ruimte,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
alg_verdieping_code verdieping_code,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
res_v_res_ruimte_gegevens rrg,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key;
CREATE OR REPLACE FORCE VIEW curs_v_prs_indienst (
fclt_f_maand,
fclt_f_naam,
nummer,
indienst,
fclt_f_afdeling
)
AS
SELECT TO_CHAR (p.prs_perslid_ingangsdatum, 'YYMM'),
pf.prs_perslid_naam_full,
p.prs_perslid_nr,
TO_CHAR (p.prs_perslid_ingangsdatum, 'DD-MM-YYYY'),
a.prs_afdeling_naam1
FROM prs_v_afdeling a, prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_ingangsdatum IS NOT NULL;
CREATE OR REPLACE FORCE VIEW curs_v_prs_uitdienst (
fclt_f_maand,
fclt_f_naam,
nummer,
uitdienst,
fclt_f_afdeling
)
AS
SELECT TO_CHAR (p.prs_perslid_einddatum, 'YYMM'),
pf.prs_perslid_naam_full,
p.prs_perslid_nr,
TO_CHAR (p.prs_perslid_einddatum, 'DD-MM-YYYY'),
a.prs_afdeling_naam1
FROM prs_v_afdeling a, prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_einddatum IS NOT NULL;
CREATE OR REPLACE FORCE VIEW curs_v_verbruik1 (
fclt_f_locatie,
objectomschrijving,
waarde,
fclt_f_datum,
datumstr,
hide_f_ins_deel_key
)
AS
SELECT l.alg_locatie_omschrijving,
d.ins_deel_omschrijving objectomschrijving,
fac.safe_to_number (kd.ins_kenmerkdeel_waarde) eindwaarde,
TO_CHAR (kd.ins_kenmerkdeel_aanmaak, 'YYMM') einddatum,
TO_CHAR (kd.ins_kenmerkdeel_aanmaak, 'DD-MM-YY') einddatumstr,
d.ins_deel_key
FROM ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigdeel d,
ins_kenmerkdeel kd,
ins_kenmerk k,
ins_srtkenmerk sk,
alg_v_aanweziglocatie l
WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key
AND d.ins_deel_key = kd.ins_deel_key
AND kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_kenmerk_verwijder IS NULL
AND k.ins_kenmerk_volgnummer >= 100
AND sk.ins_srtkenmerk_kenmerktype = 'N'
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
AND d.ins_alg_locatie_key = l.alg_locatie_key;
CREATE OR REPLACE FORCE VIEW curs_v_verbruik (
fclt_f_locatie,
objectomschrijving,
verbruik,
fclt_f_begindatum,
fclt_f_einddatum
)
AS
SELECT v1.fclt_f_locatie,
v1.objectomschrijving,
(v1.waarde - v2.waarde) verbruik,
v2.fclt_f_datum begindatum,
v1.fclt_f_datum einddatum
FROM curs_v_verbruik1 v1, curs_v_verbruik1 v2
WHERE v1.hide_f_ins_deel_key = v2.hide_f_ins_deel_key
AND v1.fclt_f_datum >= v2.fclt_f_datum
AND v1.waarde >= v2.waarde
AND (v1.waarde - v2.waarde) < 99999999;
/* Formatted on 2009/01/08 11:40 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_hv_actual (dis_oms,
loc_code,
geb_code,
ver_code,
ruimte_nr,
ruimtesoort,
wp_cap,
teken_opp,
sp_nummer,
sp_naam,
bezetting,
m2_wpnorm,
m2_tarief
)
AS
(SELECT a.alg_district_omschrijving, a.alg_locatie_code, a.alg_gebouw_code,
a.alg_verdieping_code, a.alg_ruimte_nr, b.ruimtesoort,
fac.safe_to_number (COALESCE (c.wp_cap, '0')), a.opp, d.afd_naam,
d.afd_oms, d.afd_bez,
(SELECT fac.safe_to_number
(COALESCE (kl.prs_kenmerklink_waarde, '0')
)
FROM prs_kenmerklink kl
WHERE kl.prs_link_key = 28021 -- Atos Origin
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1240) m2_wpnorm, -- m2-wpnorm
(SELECT fac.safe_to_number
(COALESCE (kl.prs_kenmerklink_waarde, '0')
)
FROM prs_kenmerklink kl
WHERE kl.prs_link_key = 28021 -- Atos Origin
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1180) m2_tarief -- m2-tarief
FROM (SELECT r.alg_ruimte_key, r.alg_ruimte_nr, v.alg_verdieping_code,
g.alg_gebouw_code, l.alg_locatie_code,
d.alg_district_omschrijving,
r.alg_ruimte_bruto_vloeropp opp
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_district d
WHERE 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
AND l.alg_district_key = d.alg_district_key) a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (sr.alg_srtruimte_omschrijving, '-') ruimtesoort
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) b
ON a.alg_ruimte_key = b.alg_ruimte_key
LEFT JOIN
(SELECT ok.alg_onrgoed_key, ok.alg_onrgoedkenmerk_waarde wp_cap
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1240 -- wp_cap
AND ok.alg_onrgoed_niveau = 'R') c
ON a.alg_ruimte_key = c.alg_onrgoed_key
LEFT JOIN -- afdeling(en) op ruimte
(SELECT ra.alg_ruimte_key, afd.prs_afdeling_naam afd_naam,
afd.prs_afdeling_omschrijving afd_oms,
ra.prs_ruimteafdeling_bezetting afd_bez
FROM prs_v_aanwezigruimteafdeling ra, prs_afdeling afd
WHERE ra.prs_afdeling_key = afd.prs_afdeling_key
UNION ALL
SELECT x.alg_ruimte_key, NULL afd_naam, NULL afd_oms,
(100 - x.rui_bez) afd_bez
FROM (SELECT ra.alg_ruimte_key,
SUM (ra.prs_ruimteafdeling_bezetting) rui_bez
FROM prs_v_aanwezigruimteafdeling ra
GROUP BY ra.alg_ruimte_key) x
WHERE x.rui_bez < 100) d ON a.alg_ruimte_key = d.alg_ruimte_key
)
/
CREATE OR REPLACE VIEW curs_v_hv_xactual (
loc_code,
geb_code,
ver_code,
ruimte_nr,
ruimtesoort,
wp_cap,
teken_opp,
sp_nummer,
sp_naam,
bezetting,
m2_wpnorm,
m2_tarief
)
AS
(SELECT a.alg_locatie_code,
a.alg_gebouw_code,
a.alg_verdieping_code,
a.alg_ruimte_nr,
b.ruimtesoort,
fac.safe_to_number (COALESCE (c.wp_cap, '0')),
a.opp,
d.afd_naam,
d.afd_oms,
d.afd_bez,
(SELECT fac.safe_to_number(COALESCE (kl.prs_kenmerklink_waarde, '0'
))
FROM prs_kenmerklink kl
WHERE kl.prs_link_key = 28021 -- Atos Origin
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1240)
m2_wpnorm, -- m2-wpnorm
(SELECT fac.safe_to_number(COALESCE (kl.prs_kenmerklink_waarde, '0'
))
FROM prs_kenmerklink kl
WHERE kl.prs_link_key = 28021 -- Atos Origin
AND kl.prs_kenmerklink_niveau = 'B'
AND kl.prs_kenmerk_key = 1180)
m2_tarief -- m2-tarief
FROM (SELECT r.alg_ruimte_key,
r.alg_ruimte_nr,
v.alg_verdieping_code,
g.alg_gebouw_code,
l.alg_locatie_code,
r.alg_ruimte_bruto_vloeropp opp
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE 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) a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (sr.alg_srtruimte_omschrijving, '-')
ruimtesoort
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) b
ON a.alg_ruimte_key = b.alg_ruimte_key
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ok.alg_onrgoedkenmerk_waarde wp_cap
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1240 -- wp_cap
AND ok.alg_onrgoed_niveau = 'R') c
ON a.alg_ruimte_key = c.alg_onrgoed_key
LEFT JOIN -- afdeling(en) op ruimte
(SELECT ra.alg_ruimte_key,
afd.prs_afdeling_naam afd_naam,
afd.prs_afdeling_omschrijving afd_oms,
ra.prs_ruimteafdeling_bezetting afd_bez
FROM prs_v_aanwezigruimteafdeling ra, prs_afdeling afd
WHERE ra.prs_afdeling_key = afd.prs_afdeling_key) d
ON a.alg_ruimte_key = d.alg_ruimte_key)
/
/* Formatted on 2009/01/08 09:15 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_rap_hv_doorbelasting (fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_afdeling_naam,
fclt_f_afdeling_nr,
aantal_m2,
kosten
)
AS
(SELECT x.dis_oms, x.loc_code, x.geb_code,
COALESCE (x.sp_naam, '[Leegstand]'),
COALESCE (x.sp_nummer, '[Leegstand]'),
SUM (DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm,
x.teken_opp
)
) reken_opp,
SUM (DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm * x.m2_tarief,
x.teken_opp * x.m2_tarief
)
) kosten
FROM (SELECT v.dis_oms, v.loc_code, v.geb_code, v.sp_nummer,
v.sp_naam, v.ruimtesoort, v.m2_tarief, v.m2_wpnorm,
SUM (v.wp_cap * COALESCE (v.bezetting, 100) / 100) wp,
SUM (v.teken_opp * COALESCE (v.bezetting, 100) / 100
) teken_opp
FROM curs_v_hv_actual v
GROUP BY v.dis_oms,
v.loc_code,
v.geb_code,
v.sp_nummer,
v.sp_naam,
v.ruimtesoort,
v.m2_tarief,
v.m2_wpnorm) x
GROUP BY x.dis_oms, x.loc_code, x.geb_code, x.sp_naam, x.sp_nummer)
/
CREATE OR REPLACE VIEW curs_v_rap_hv_xdoorbelasting (fclt_f_gebouw,
fclt_f_afdeling_naam,
fclt_f_afdeling_nr,
reken_opp
)
AS
(SELECT v.geb_code, COALESCE (v.sp_naam, '[Leegstand]'),
COALESCE (v.sp_nummer, '[Leegstand]'),
REPLACE (TO_CHAR (SUM (DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap
* v.m2_wpnorm,
v.teken_opp
)
),
'999999990D99'
),
'.',
','
) reken_opp
FROM curs_v_hv_xactual v
GROUP BY v.geb_code, v.sp_naam, v.sp_nummer)
/
/* Formatted on 2009/01/08 09:15 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_rap_hv_doorbelfrozen (fclt_f_datum,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_afdeling_naam,
fclt_f_afdeling_nr,
aantal_m2,
kosten
)
AS
(SELECT TO_CHAR (x.freeze_datum, 'YYYY-MM-DD') datum, x.dis_oms,
x.loc_code, x.geb_code, COALESCE (x.sp_naam, '[Leegstand]'),
COALESCE (x.sp_nummer, '[Leegstand]'),
SUM (DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm,
x.teken_opp
)
) reken_opp,
SUM (DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm * x.m2_tarief,
x.teken_opp * x.m2_tarief
)
) kosten
FROM (SELECT v.freeze_datum, v.dis_oms, v.loc_code, v.geb_code,
v.sp_nummer, v.sp_naam, v.ruimtesoort, v.m2_tarief,
v.m2_wpnorm,
SUM (v.wp_cap * COALESCE (v.bezetting, 100) / 100) wp,
SUM (v.teken_opp * COALESCE (v.bezetting, 100) / 100
) teken_opp
FROM curs_hv_freeze v
GROUP BY v.freeze_datum,
v.dis_oms,
v.loc_code,
v.geb_code,
v.sp_nummer,
v.sp_naam,
v.ruimtesoort,
v.m2_tarief,
v.m2_wpnorm) x
GROUP BY x.freeze_datum,
x.dis_oms,
x.loc_code,
x.geb_code,
x.sp_naam,
x.sp_nummer)
/
/* Formatted on 14-1-2009 17:12:04 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW curs_v_rap_hv_ruimte_details
(
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
ruimte_nr,
aantal_wp,
reken_opp,
fclt_f_afdeling_naam,
fclt_f_afdeling_nr,
fclt_f_ruimtesoort,
m2_tarief,
ruimteprijs
)
AS
SELECT v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.ruimte_nr,
TO_CHAR (v.wp_cap),
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap * v.m2_wpnorm,
v.teken_opp
)
* COALESCE (v.bezetting, 100)
/ 100)
reken_opp,
COALESCE (v.sp_naam, '[Leegstand]'),
COALESCE (v.sp_nummer, '[Leegstand]'),
v.ruimtesoort,
REPLACE (TO_CHAR (v.m2_tarief), '.', ','),
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap * v.m2_wpnorm * v.m2_tarief,
v.teken_opp * v.m2_tarief
)
* COALESCE (v.bezetting, 100)
/ 100)
ruimteprijs
FROM curs_v_hv_actual v
/
/* Formatted on 2009/01/08 09:18 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_rap_hv_ruimteoverzicht (fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
ruimte_nr,
fclt_f_ruimtesoort,
aantal_wp,
reken_opp
)
AS
SELECT DISTINCT v.dis_oms, v.loc_code, v.geb_code, v.ver_code, v.ruimte_nr,
v.ruimtesoort, TO_CHAR (v.wp_cap),
DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap * v.m2_wpnorm,
v.teken_opp
) reken_opp
FROM curs_v_hv_actual v
/
/* Formatted on 2009/01/08 09:18 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_rap_hv_sp_totalen (fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
fclt_f_afdeling_naam,
fclt_f_afdeling_nr,
fclt_f_ruimtesoort,
aantal_ruimten,
aantal_wp,
reken_opp,
m2_tarief,
prijs
)
AS
(SELECT x.dis_oms, x.loc_code, x.geb_code, x.ver_code,
COALESCE (x.sp_naam, '[Leegstand]'),
COALESCE (x.sp_nummer, '[Leegstand]'), x.ruimtesoort,
x.ruimten,
REPLACE (TO_CHAR (x.wp, '999999990D99'), '.', ',') wp,
DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm,
x.teken_opp
) reken_opp,
REPLACE (TO_CHAR (x.m2_tarief), '.', ','),
DECODE (UPPER (x.ruimtesoort),
'OPEN WERKPLEK', x.wp * x.m2_wpnorm * x.m2_tarief,
x.teken_opp * x.m2_tarief
) prijs
FROM (SELECT v.dis_oms, v.loc_code, v.geb_code, v.ver_code,
v.sp_nummer, v.sp_naam, v.ruimtesoort, v.m2_tarief,
v.m2_wpnorm,
SUM (COALESCE (v.bezetting, 100) / 100) ruimten,
SUM (v.wp_cap * COALESCE (v.bezetting, 100) / 100) wp,
SUM (v.teken_opp * COALESCE (v.bezetting, 100) / 100
) teken_opp
FROM curs_v_hv_actual v
GROUP BY v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.sp_nummer,
v.sp_naam,
v.ruimtesoort,
v.m2_tarief,
v.m2_wpnorm) x)
/
/* Formatted on 9-1-2009 13:42:38 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW curs_v_rap_hv_leegstand
(
hide_f_sortering,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
totaal_opp,
leegst_opp,
leegst_ratio
)
AS
(SELECT '-',
tot.dis_oms,
tot.loc_code,
tot.geb_code,
REPLACE (TO_CHAR (COALESCE (tot.reken_opp, 0), '999999990D99'),
'.',
','
)
tot_opp,
REPLACE (TO_CHAR (COALESCE (leeg.reken_opp, 0), '999999990D99'),
'.',
','
)
lg_opp,
DECODE (
leeg.reken_opp,
NULL,
'0,00',
0,
'0,00',
REPLACE (
TO_CHAR (leeg.reken_opp / tot.reken_opp * 100,
'999999990D99'
),
'.',
','
)
)
|| '%'
lg_ratio
FROM ( SELECT v.geb_code,
v.loc_code,
v.dis_oms,
SUM(DECODE (
UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
))
reken_opp
FROM curs_v_hv_actual v
GROUP BY v.geb_code, v.loc_code, v.dis_oms) tot
LEFT JOIN
( SELECT v.geb_code,
SUM(DECODE (
UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
))
reken_opp
FROM curs_v_hv_actual v
WHERE v.sp_nummer IS NULL
GROUP BY v.geb_code) leeg
ON tot.geb_code = leeg.geb_code)
UNION ALL
(SELECT 'z',
'LANDELIJK',
'-',
'-',
REPLACE (
TO_CHAR (SUM (COALESCE (tot.reken_opp, 0)), '999999990D99'),
'.',
','
)
tot_opp,
REPLACE (
TO_CHAR (SUM (COALESCE (leeg.reken_opp, 0)), '999999990D99'),
'.',
','
)
lg_opp,
DECODE (
SUM (COALESCE (leeg.reken_opp, 0)),
NULL,
'0,00',
0,
'0,00',
REPLACE (
TO_CHAR (
SUM (COALESCE (leeg.reken_opp, 0))
/ SUM (COALESCE (tot.reken_opp, 0))
* 100,
'999999990D99'
),
'.',
','
)
)
|| '%'
lg_ratio
FROM ( SELECT v.geb_code,
v.loc_code,
v.dis_oms,
SUM(DECODE (
UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
))
reken_opp
FROM curs_v_hv_actual v
GROUP BY v.geb_code, v.loc_code, v.dis_oms) tot
LEFT JOIN
( SELECT v.geb_code,
SUM(DECODE (
UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
))
reken_opp
FROM curs_v_hv_actual v
WHERE v.sp_nummer IS NULL
GROUP BY v.geb_code) leeg
ON tot.geb_code = leeg.geb_code)
/
/* Formatted on 2009/01/08 13:55 (Formatter Plus v4.8.7) */
/* MAG WEG OF NIET? - NIET AANGEBODEN! */
CREATE OR REPLACE VIEW curs_v_rap_hv_lg_frozen (hide_f_sortering,
fclt_f_datum,
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
totaal_opp,
leegst_opp,
leegst_ratio
)
AS
(SELECT TO_CHAR (tot.freeze_datum, 'YYYY-MM-DD') datum, '-', tot.dis_oms,
tot.loc_code, tot.geb_code,
REPLACE (TO_CHAR (tot.reken_opp, '999999990D99'), '.',
',') tot_opp,
REPLACE (TO_CHAR (leeg.reken_opp, '999999990D99'), '.',
',') lg_opp,
REPLACE (TO_CHAR (leeg.reken_opp / tot.reken_opp * 100,
'999999990D99'
),
'.',
','
)
|| '%' lg_ratio
FROM (SELECT v.geb_code, v.loc_code, v.dis_oms, v.freeze_datum,
SUM (DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
)
) reken_opp
FROM curs_hv_freeze v
GROUP BY v.geb_code, v.loc_code, v.dis_oms, v.freeze_datum) tot
LEFT JOIN
(SELECT v.geb_code, v.freeze_datum,
SUM (DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
)
) reken_opp
FROM curs_hv_freeze v
WHERE v.sp_nummer IS NULL
GROUP BY v.geb_code, v.freeze_datum) leeg
ON tot.geb_code = leeg.geb_code
AND tot.freeze_datum = leeg.freeze_datum
)
UNION ALL
(SELECT TO_CHAR (tot.freeze_datum, 'YYYY-MM-DD') datum, 'z', 'LANDELIJK',
'-', '-',
REPLACE (TO_CHAR (SUM (tot.reken_opp), '999999990D99'),
'.',
','
) tot_opp,
REPLACE (TO_CHAR (SUM (leeg.reken_opp), '999999990D99'),
'.',
','
) lg_opp,
REPLACE (TO_CHAR ( SUM (leeg.reken_opp)
/ SUM (tot.reken_opp)
* 100,
'999999990D99'
),
'.',
','
)
|| '%' lg_ratio
FROM (SELECT v.geb_code, v.loc_code, v.dis_oms, v.freeze_datum,
SUM (DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
)
) reken_opp
FROM curs_hv_freeze v
GROUP BY v.geb_code, v.loc_code, v.dis_oms, v.freeze_datum) tot
LEFT JOIN
(SELECT v.geb_code, v.freeze_datum,
SUM (DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK', v.wp_cap
* v.m2_wpnorm
* COALESCE (v.bezetting, 100)
/ 100,
v.teken_opp
* COALESCE (v.bezetting, 100)
/ 100
)
) reken_opp
FROM curs_hv_freeze v
WHERE v.sp_nummer IS NULL
GROUP BY v.geb_code, v.freeze_datum) leeg
ON tot.geb_code = leeg.geb_code
AND tot.freeze_datum = leeg.freeze_datum
GROUP BY tot.freeze_datum)
/
/* Formatted on 19-1-2009 13:15:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW curs_v_rap_hv_doorbel_delta
(
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_afdeling_nr,
fclt_f_afdeling_naam,
m2_nu,
m2_delta
)
AS
(SELECT DISTINCT
z.dis, z.loc, z.geb, z.nr, z.naam, z.m2_actueel, z.m2_verschil
FROM (SELECT COALESCE (x.dis, y.dis) dis,
COALESCE (x.loc, y.loc) loc,
COALESCE (x.geb, y.geb) geb,
COALESCE (x.nr, y.nr) nr,
DECODE (x.naam,
COALESCE (y.naam, x.naam), x.naam,
'***GEWIJZIGD: ' || COALESCE (x.naam, '')
)
naam,
x.m2 m2_actueel,
y.m2 m2_laatste,
(COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil
FROM (SELECT fclt_f_district dis,
fclt_f_locatie loc,
fclt_f_gebouw geb,
fclt_f_afdeling_nr nr,
fclt_f_afdeling_naam naam,
aantal_m2 m2,
kosten kosten
FROM curs_v_rap_hv_doorbelasting) x
LEFT JOIN
(SELECT fclt_f_district dis,
fclt_f_locatie loc,
fclt_f_gebouw geb,
fclt_f_afdeling_nr nr,
fclt_f_afdeling_naam naam,
aantal_m2 m2,
kosten kosten
FROM curs_v_rap_hv_doorbelfrozen
WHERE fclt_f_datum =
( SELECT TO_CHAR (MAX (freeze_datum),
'yyyy-mm-dd'
)
FROM curs_hv_freeze)) y
ON x.dis = y.dis
AND x.loc = y.loc
AND x.geb = y.geb
AND x.nr = y.nr
UNION
SELECT COALESCE (x.dis, y.dis) dis,
COALESCE (x.loc, y.loc) loc,
COALESCE (x.geb, y.geb) geb,
COALESCE (x.nr, y.nr) nr,
DECODE (y.naam,
COALESCE (x.naam, y.naam), y.naam,
'***GEWIJZIGD: ' || COALESCE (x.naam, '')
)
naam,
x.m2 m2_actueel,
y.m2 m2_laatste,
(COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil
FROM (SELECT fclt_f_district dis,
fclt_f_locatie loc,
fclt_f_gebouw geb,
fclt_f_afdeling_nr nr,
fclt_f_afdeling_naam naam,
aantal_m2 m2,
kosten kosten
FROM curs_v_rap_hv_doorbelasting) x
RIGHT JOIN
(SELECT fclt_f_district dis,
fclt_f_locatie loc,
fclt_f_gebouw geb,
fclt_f_afdeling_nr nr,
fclt_f_afdeling_naam naam,
aantal_m2 m2,
kosten kosten
FROM curs_v_rap_hv_doorbelfrozen
WHERE fclt_f_datum =
( SELECT TO_CHAR (MAX (freeze_datum),
'yyyy-mm-dd'
)
FROM curs_hv_freeze)) y
ON x.dis = y.dis
AND x.loc = y.loc
AND x.geb = y.geb
AND x.nr = y.nr) z);
/* Formatted on 19-1-2009 13:15:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW curs_v_rap_hv_details_delta
(
fclt_f_district,
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
ruimte_nr,
fclt_f_afdeling_nr,
fclt_f_afdeling_naam,
fclt_f_ruimtesoort,
wp_nu,
wp_delta,
m2_nu,
m2_delta
)
AS
(SELECT DISTINCT
z.dis,
z.loc,
z.geb,
z.ver,
z.rui,
z.nr,
z.naam,
z.soort,
z.wp_actueel,
z.wp_verschil,
z.m2_actueel,
z.m2_verschil
FROM (SELECT COALESCE (x.dis_oms, y.dis_oms) dis,
COALESCE (x.loc_code, y.loc_code) loc,
COALESCE (x.geb_code, y.geb_code) geb,
COALESCE (x.ver_code, y.ver_code) ver,
COALESCE (x.ruimte_nr, y.ruimte_nr) rui,
COALESCE (x.sp_nr, y.sp_nr) nr,
DECODE (x.sp_naam,
COALESCE (y.sp_naam, x.sp_naam), x.sp_naam,
'***GEWIJZIGD: ' || COALESCE (x.sp_naam, '')
)
naam,
DECODE (
x.ruimtesoort,
COALESCE (y.ruimtesoort, x.ruimtesoort),
x.ruimtesoort,
'***GEWIJZIGD: ' || COALESCE (x.ruimtesoort, '')
)
soort,
x.wp wp_actueel,
y.wp wp_laatste,
(COALESCE (x.wp, 0) - COALESCE (y.wp, 0)) wp_verschil,
x.m2 m2_actueel,
y.m2 m2_laatste,
(COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil
FROM (SELECT v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.ruimte_nr,
COALESCE (v.sp_nummer, '[Leegstand]')
sp_nr,
v.sp_naam,
v.ruimtesoort,
v.bezetting bez,
v.wp_cap wp,
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap * v.m2_wpnorm,
v.teken_opp
)
* COALESCE (v.bezetting, 100)
/ 100)
m2
FROM curs_v_hv_actual v) x
LEFT JOIN
(SELECT v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.ruimte_nr,
COALESCE (v.sp_nummer, '[Leegstand]')
sp_nr,
v.sp_naam,
v.ruimtesoort,
v.bezetting bez,
v.wp_cap wp,
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap * v.m2_wpnorm,
v.teken_opp
)
* COALESCE (v.bezetting, 100)
/ 100)
m2
FROM curs_hv_freeze v
WHERE TRUNC (v.freeze_datum) =
( SELECT TRUNC (MAX (freeze_datum))
FROM curs_hv_freeze)) y
ON x.dis_oms = y.dis_oms
AND x.loc_code = y.loc_code
AND x.geb_code = y.geb_code
AND x.ver_code = y.ver_code
AND x.ruimte_nr = y.ruimte_nr
AND x.sp_nr = y.sp_nr
UNION
SELECT COALESCE (x.dis_oms, y.dis_oms) dis,
COALESCE (x.loc_code, y.loc_code) loc,
COALESCE (x.geb_code, y.geb_code) geb,
COALESCE (x.ver_code, y.ver_code) ver,
COALESCE (x.ruimte_nr, y.ruimte_nr) rui,
COALESCE (x.sp_nr, y.sp_nr) nr,
DECODE (y.sp_naam,
COALESCE (x.sp_naam, y.sp_naam), y.sp_naam,
'***GEWIJZIGD: ' || COALESCE (x.sp_naam, '')
)
naam,
DECODE (
y.ruimtesoort,
COALESCE (x.ruimtesoort, y.ruimtesoort),
y.ruimtesoort,
'***GEWIJZIGD: ' || COALESCE (x.ruimtesoort, '')
)
soort,
x.wp wp_actueel,
y.wp wp_laatste,
(COALESCE (x.wp, 0) - COALESCE (y.wp, 0)) wp_verschil,
x.m2 m2_actueel,
y.m2 m2_laatste,
(COALESCE (x.m2, 0) - COALESCE (y.m2, 0)) m2_verschil
FROM (SELECT v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.ruimte_nr,
COALESCE (v.sp_nummer, '[Leegstand]')
sp_nr,
v.sp_naam,
v.ruimtesoort,
v.bezetting bez,
v.wp_cap wp,
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap * v.m2_wpnorm,
v.teken_opp
)
* COALESCE (v.bezetting, 100)
/ 100)
m2
FROM curs_v_hv_actual v) x
RIGHT JOIN
(SELECT v.dis_oms,
v.loc_code,
v.geb_code,
v.ver_code,
v.ruimte_nr,
COALESCE (v.sp_nummer, '[Leegstand]')
sp_nr,
v.sp_naam,
v.ruimtesoort,
v.bezetting bez,
v.wp_cap wp,
(DECODE (UPPER (v.ruimtesoort),
'OPEN WERKPLEK',
v.wp_cap * v.m2_wpnorm,
v.teken_opp
)
* COALESCE (v.bezetting, 100)
/ 100)
m2
FROM curs_hv_freeze v
WHERE TRUNC (v.freeze_datum) =
( SELECT TRUNC (MAX (freeze_datum))
FROM curs_hv_freeze)) y
ON x.dis_oms = y.dis_oms
AND x.loc_code = y.loc_code
AND x.geb_code = y.geb_code
AND x.ver_code = y.ver_code
AND x.ruimte_nr = y.ruimte_nr
AND x.sp_nr = y.sp_nr) z);
/* Formatted on 2008/11/27 12:45 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_label_ruimte_sp (
alg_ruimte_key,
waarde
)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_naam1
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen sp binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE VIEW curs_v_prj_label_ruimte_sp (
prj_ruimte_key,
waarde
)
AS
SELECT DISTINCT ra.prj_ruimte_key, a.prs_afdeling_naam1
FROM prj_ruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.prj_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL
AND NOT EXISTS
( -- waar geen sp binnen bestaat
SELECT ra.prj_ruimte_key
FROM prj_ruimteafdeling ra
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prj_ruimte_key = r.prj_ruimte_key)
/
/* Formatted on 2008/09/19 14:14 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_label_ruimte_sp_nr (alg_ruimte_key, waarde)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_naam
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen sp binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE VIEW curs_v_prj_label_ruimte_sp_nr (prj_ruimte_key, waarde)
AS
SELECT DISTINCT ra.prj_ruimte_key, a.prs_afdeling_naam
FROM prj_ruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.prj_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL
AND NOT EXISTS
( -- waar geen sp binnen bestaat
SELECT ra.prj_ruimte_key
FROM prj_ruimteafdeling ra
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prj_ruimte_key = r.prj_ruimte_key)
/
/* Formatted on 2008/09/19 14:14 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_label_ruimte_sp_oms (alg_ruimte_key, waarde)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_omschrijving
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen sp binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE VIEW curs_v_prj_label_ruimte_sp_oms (prj_ruimte_key, waarde)
AS
SELECT DISTINCT ra.prj_ruimte_key, a.prs_afdeling_omschrijving
FROM prj_ruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.prj_ruimte_key, '[Leegstand]' -- ruimten zonder sp
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL
AND NOT EXISTS
( -- waar geen sp binnen bestaat
SELECT ra.prj_ruimte_key
FROM prj_ruimteafdeling ra
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prj_ruimte_key = r.prj_ruimte_key)
/
/* Formatted on 2008/09/19 14:14 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_label_wp_cnt (alg_ruimte_key, waarde)
AS
SELECT a.alg_ruimte_key, COALESCE (b.wp, '0') || ' werkplekken'
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) a
LEFT JOIN
(SELECT ok.alg_onrgoed_key, ok.alg_onrgoedkenmerk_waarde wp
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_onrgoed_niveau = 'R'
AND ok.alg_kenmerk_key = 1240 -- werkplekken
AND ok.alg_onrgoedkenmerk_verwijder IS NULL) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
/
CREATE OR REPLACE VIEW curs_v_prj_label_wp_cnt (prj_ruimte_key, waarde)
AS
SELECT a.prj_ruimte_key, COALESCE (b.wp, '0') || ' werkplekken'
FROM (SELECT r.prj_ruimte_key
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL) a
LEFT JOIN
(SELECT r.prj_ruimte_key, ok.alg_onrgoedkenmerk_waarde wp
FROM prj_ruimte r, alg_onrgoedkenmerk ok
WHERE r.alg_ruimte_key = ok.alg_onrgoed_key
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_kenmerk_key = 1240 -- werkplekken
AND ok.alg_onrgoedkenmerk_verwijder IS NULL) b
ON a.prj_ruimte_key = b.prj_ruimte_key
/
/* Formatted on 2008/11/28 13:40 (Formatter Plus v4.8.7) */
CREATE OR REPLACE FORCE VIEW curs_v_thema_ruimte_sp (
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Leegstand]',
1, SUBSTR (y.sp, 1, 60),
'Meer dan 1 service afdeling!'),
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
(SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam1, a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS
(SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key)
/
CREATE OR REPLACE TRIGGER curs_t_thema_ruimte_sp_i_iu
INSTEAD OF INSERT OR UPDATE
ON curs_v_thema_ruimte_sp
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE FROM prs_ruimteafdeling
WHERE alg_ruimte_key = :new.alg_ruimte_key
AND prs_afdeling_key <> :new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
INSERT INTO prs_ruimteafdeling
(
alg_ruimte_key, prs_afdeling_key
)
VALUES (:new.alg_ruimte_key, :new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
CREATE OR REPLACE VIEW curs_v_prj_thema_ruimte_sp (
prj_ruimte_key,
waarde,
waarde_key
)
AS
SELECT x.prj_ruimte_key,
DECODE (y.aantal,
NULL, '[Leegstand]',
1, SUBSTR (y.sp, 1, 60),
'Meer dan 1 service afdeling!'),
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
FROM (SELECT r.prj_ruimte_key
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL) x
LEFT JOIN
(SELECT ra.prj_ruimte_key,
MIN (a.prs_afdeling_naam1) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prj_ruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.prj_ruimte_key) y
ON x.prj_ruimte_key = y.prj_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam1, a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS
(SELECT ra.prs_afdeling_key
FROM prj_ruimteafdeling ra
WHERE ra.prj_ruimteafdeling_verwijder IS NULL
AND ra.prs_afdeling_key = a.prs_afdeling_key)
/
CREATE OR REPLACE TRIGGER curs_t_prj_t_ruimte_sp_i_iu
INSTEAD OF INSERT OR UPDATE
ON curs_v_prj_thema_ruimte_sp
BEGIN
IF UPDATING -- oude logisch weggooien, dus g<><67>n DELETE!
THEN
UPDATE prj_ruimteafdeling
SET prj_ruimteafdeling_verwijder = SYSDATE
WHERE prj_ruimte_key = :new.prj_ruimte_key
AND prs_afdeling_key <> :new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
UPDATE prj_ruimteafdeling
SET prj_ruimteafdeling_verwijder = NULL
WHERE prj_ruimte_key = :new.prj_ruimte_key
AND prs_afdeling_key = :new.waarde_key;
INSERT INTO prj_ruimteafdeling
(
prj_ruimte_key, prs_afdeling_key
)
VALUES (:new.prj_ruimte_key, :new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
CREATE OR REPLACE VIEW curs_v_thema_ruimteafd
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Leegstand]',
1, SUBSTR (y.sp, 1, 60),
'[Meerdere afdelingen]'),
DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, SUBSTR (a.prs_afdeling_naam1, 1, 60), a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS (SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key);
CREATE OR REPLACE TRIGGER curs_t_thema_ruimteafd_i_iu
INSTEAD OF INSERT OR UPDATE
ON curs_v_thema_ruimteafd
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE FROM prs_ruimteafdeling
WHERE alg_ruimte_key = :new.alg_ruimte_key
AND prs_afdeling_key <> :new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
INSERT INTO prs_ruimteafdeling
(
alg_ruimte_key, prs_afdeling_key
)
VALUES (:new.alg_ruimte_key, :new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
/* Formatted on 2008/09/19 15:30 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW curs_v_thema_wp_cnt (alg_ruimte_key, waarde)
AS
SELECT a.alg_ruimte_key,
DECODE (b.wp,
NULL, '0',
'0', '0',
'1', '1',
'2', '2',
'3', '3',
'4', '4',
'5', '5',
'>5'
)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) a
LEFT JOIN
(SELECT ok.alg_onrgoed_key, ok.alg_onrgoedkenmerk_waarde wp
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_onrgoed_niveau = 'R'
AND ok.alg_kenmerk_key = 1240 -- werkplekken
AND ok.alg_onrgoedkenmerk_verwijder IS NULL) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
/
CREATE OR REPLACE VIEW curs_v_prj_thema_wp_cnt (prj_ruimte_key, waarde)
AS
SELECT a.prj_ruimte_key,
DECODE (b.wp,
NULL, '0',
'0', '0',
'1', '1',
'2', '2',
'3', '3',
'4', '4',
'5', '5',
'>5'
)
FROM (SELECT r.prj_ruimte_key
FROM prj_ruimte r
WHERE r.prj_ruimte_verwijder IS NULL) a
LEFT JOIN
(SELECT r.prj_ruimte_key, ok.alg_onrgoedkenmerk_waarde wp
FROM prj_ruimte r, alg_onrgoedkenmerk ok
WHERE r.alg_ruimte_key = ok.alg_onrgoed_key
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_kenmerk_key = 1240 -- werkplekken
AND ok.alg_onrgoedkenmerk_verwijder IS NULL) b
ON a.prj_ruimte_key = b.prj_ruimte_key
/
-- Real-time monitors
CREATE OR REPLACE VIEW demo_v_graph_meldingpm_fm
(
fclt_xas_,
fclt_yas_,
volgorde
)
AS
SELECT DECODE( lcl.getuserlanguage(),
'NL', DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'January',
'02', 'February',
'03', 'March',
'04', 'April',
'05', 'May',
'06', 'June',
'07', 'July',
'08', 'August',
'09', 'September',
'10', 'October',
'11', 'November',
'December') ),
COUNT (d.ins_discipline_omschrijving),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
TO_DATE (
TO_CHAR (SYSDATE, 'yyyymm') || '01',
'yyyymmdd'),
-11)
AND SYSDATE
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key IN (1, 81, 101, 241)
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm');
CREATE OR REPLACE VIEW demo_v_graph_meldingpm_ict
(
fclt_xas_,
fclt_yas_,
volgorde
)
AS
SELECT DECODE( lcl.getuserlanguage(),
'NL', DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
DECODE (SUBSTR (TO_CHAR (mld_melding_datum, 'yyyymm'), 5),
'01', 'January',
'02', 'February',
'03', 'March',
'04', 'April',
'05', 'May',
'06', 'June',
'07', 'July',
'08', 'August',
'09', 'September',
'10', 'October',
'11', 'November',
'December') ),
COUNT (d.ins_discipline_omschrijving),
TO_CHAR (mld_melding_datum, 'yyyymm')
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE mld_melding_datum BETWEEN ADD_MONTHS (
TO_DATE (
TO_CHAR (SYSDATE, 'yyyymm') || '01',
'yyyymmdd'),
-11)
AND SYSDATE
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key IN (201, 202)
GROUP BY TO_CHAR (mld_melding_datum, 'yyyymm');
CREATE OR REPLACE VIEW demo_v_graph_openst_behand
(
fclt_xas_,
fclt_yas_,
fclt_yas2_
)
AS
SELECT behandelaar,
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
SUM (uitvoeringoptijd) op_tijd
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate (
'MLDREJ',
m.mld_melding_key),
COALESCE (
fac.gettrackingdate (
'MLDAFM',
m.mld_melding_key),
SYSDATE)))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd,
DECODE (
mld_melding_status,
7,
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS = b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
4,
COALESCE (
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND O.MLD_UITVOERENDE_KEYS =
b.prs_bedrijf_key
AND O.MLD_STATUSOPDR_KEY IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY)),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
M.MLD_MELDING_BEHANDELAAR_KEY))
behandelaar
FROM mld_melding m,
mld_discipline md,
prs_perslid p,
mld_stdmelding std
WHERE m.prs_perslid_key = p.prs_perslid_key
-- AND p.prs_perslid_key != 28421
AND md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND md.ins_srtdiscipline_key IN (1, 81, 101, 241, 201, 202))
WHERE behandelaar IS NOT NULL
GROUP BY behandelaar;
CREATE OR REPLACE VIEW demo_v_graph_ppi_acc
(
fclt_xas_,
fclt_yas_
)
AS
SELECT SUM (acceptoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE SIGN(fac.datumtijdplusuitvoertijd (
fac.gettrackingdate ('MLDNEW', m.mld_melding_key),
std.mld_stdmelding_t_accepttijd.tijdsduur,
std.mld_stdmelding_t_accepttijd.eenheid
)
- COALESCE (
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
COALESCE (
fac.gettrackingdate ('MLDACP', m.mld_melding_key),
SYSDATE)))
WHEN -1
THEN
0
ELSE
1
END
acceptoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_srtdiscipline_key IN (1, 81, 101, 241, 201, 202)
AND mld_melding_status IN (2, 3) -- 2-ingevoerd, 3-ingezien
);
CREATE OR REPLACE VIEW demo_v_graph_ppi_uitv
(
fclt_xas_,
fclt_yas_
)
AS
SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_t_uitvoertijd.tijdsduur,
m.mld_melding_t_uitvoertijd.eenheid)
- COALESCE (
fac.gettrackingdate (
'MLDREJ',
m.mld_melding_key),
COALESCE (
fac.gettrackingdate (
'MLDAFM',
m.mld_melding_key),
SYSDATE)))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd
FROM mld_melding m, mld_discipline md, mld_stdmelding std
WHERE md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_srtdiscipline_key IN (1, 81, 101, 241, 201, 202)
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
);
CREATE OR REPLACE VIEW demo_v_graph_vakgroep_afg
(
fclt_xas_,
fclt_yas_,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT d.ins_discipline_omschrijving,
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo'
|| '&'
|| 'autosearch=1'
|| '&'
|| 'disc_key_str=',
d.ins_discipline_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
fac_tracking t
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key IN (1, 81, 101, 241, 201, 202)
AND t.fac_tracking_refkey = mld_melding_key
AND t.fac_srtnotificatie_key = 22 -- MLDAFM
AND t.fac_tracking_datum > SYSDATE - 30
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving;
CREATE OR REPLACE VIEW demo_v_graph_vakgroep_open
(
fclt_xas_,
fclt_yas_,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT lcl.x('ins_discipline_omschrijving', d.ins_discipline_key, d.ins_discipline_omschrijving),
COUNT (d.ins_discipline_omschrijving),
'appl/mld/mld_search.asp?urole=fo'
|| '&'
|| 'autosearch=1'
|| '&'
|| 'disc_key_str='
|| d.ins_discipline_key,
d.ins_discipline_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 mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
AND d.ins_srtdiscipline_key IN (1, 81, 101, 241, 201, 202)
GROUP BY d.ins_discipline_key, d.ins_discipline_omschrijving
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
CREATE OR REPLACE VIEW demo_v_thema_ruimte_afd
(
ALG_RUIMTE_KEY,
WAARDE,
WAARDE_KEY
)
AS
SELECT x.alg_ruimte_key,
DECODE (
y.aantal,
NULL,
DECODE (x.verhuur, 0, '[Niet verhuurbaar]', '[GEEN DIVISIE!]'),
1,
DECODE (y.afd,
0, '[Geen afdeling toegewezen]',
SUBSTR (y.sp, 1, 60)),
'[Meerdere afdelingen!]'),
DECODE (y.aantal,
NULL, DECODE (x.verhuur, 0, -1, NULL),
1, DECODE (y.afd, 0, -1, y.sp_key),
NULL)
FROM (SELECT r.alg_ruimte_key,
COALESCE (sr.prs_verhuurbaar, 0) verhuur,
COALESCE (sr.prs_bevat_werkplek, 0) werkplek
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)) x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) sp,
MIN (a.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal,
MAX (COALESCE (a.prs_afdeling_parentkey, 0)) afd
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam1, a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS (SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT
NULL, a.prs_afdeling_naam1 waarde, a.prs_afdeling_key waarde_key
FROM (SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
MINUS
SELECT DISTINCT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra, alg_v_aanwezigruimte r
WHERE ra.alg_ruimte_key IN (SELECT alg_ruimte_key
FROM ( SELECT alg_ruimte_key,
COUNT ( * ) aantal
FROM prs_v_aanwezigruimteafdeling
GROUP BY alg_ruimte_key)
WHERE aantal = 1)
AND ra.alg_ruimte_key = r.alg_ruimte_key) x,
prs_v_aanwezigafdeling a
WHERE x.prs_afdeling_key = a.prs_afdeling_key;
CREATE OR REPLACE VIEW demo_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 demo_v_rap_dienstrapport
AS
SELECT TO_CHAR(m.mld_melding_datum, 'yyyymmddhh24') hide_f_srt,
TO_CHAR(m.mld_melding_datum, 'dd-mm-yyyy') fclt_d_datum,
sd.ins_srtdiscipline_prefix||m.mld_melding_key dienstrapport,
pf.prs_perslid_naam_full persoon,
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_opdr_xml.asp?mld_key='
|| m.mld_melding_key || '")''>'
|| 'Print dienstrapport '||sd.ins_srtdiscipline_prefix||m.mld_melding_key || '</a>' html_print
FROM ins_srtdiscipline sd,
mld_discipline d,
mld_stdmelding s,
mld_melding m,
prs_v_perslid_fullnames pf
WHERE m.mld_stdmelding_key = 1241
AND s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND pf.prs_perslid_key = m.prs_perslid_key;
-- Overzicht aanschafdata ICT-middelen, gegroepeerd per jaar ('geleend' van HPJI)
CREATE OR REPLACE VIEW demo_v_rap_it_inventaris_jaar
(
hide_f_regel,
fclt_f_organisatie,
fclt_f_categorie,
fclt_f_aanschafjaar,
aantal
)
AS
SELECT grid.onderdeel || '-' || grid.rubriek regel,
grid.onderdeel,
grid.rubriek,
grid.jaar,
COALESCE (x.aantal, 0)
FROM (SELECT a.prs_afdeling_key onderdeel_key,
sd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
a.prs_afdeling_omschrijving onderdeel,
sd.ins_srtdeel_omschrijving rubriek
FROM (SELECT prs_afdeling_key,
prs_afdeling_omschrijving
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_parentkey IS NULL
UNION ALL
SELECT -1 prs_afdeling_key,
'Onbekend' prs_afdeling_omschrijving
FROM DUAL) a,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
(SELECT DISTINCT
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 761) j -- Aanschafdatum
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 896) grid -- Hardware
LEFT JOIN
( SELECT asd.prs_afdeling_key1 onderdeel_key,
asd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
COUNT ( * ) aantal
FROM (SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND aog.alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND (aog.alg_ruimte_key IS NULL
OR NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
aog.alg_ruimte_key))
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key =
ab.prs_afdeling_key
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_perslid p,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key =
p.prs_perslid_key
AND p.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND w.prs_alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d, prs_werkplek w
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
w.prs_alg_ruimte_key))
asd
LEFT JOIN
(SELECT ins_deel_key,
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 761) j -- Aanschafdatum
ON asd.ins_deel_key = j.ins_deel_key
GROUP BY asd.prs_afdeling_key1, asd.ins_srtdeel_key, j.jaar)
x
ON grid.onderdeel_key = x.onderdeel_key
AND grid.rubriek_key = x.rubriek_key
AND grid.jaar = x.jaar;
-- Overzicht aanschafdata ICT-middelen ('geleend' van HPJI)
CREATE OR REPLACE VIEW demo_v_rap_it_inventaris_stuk
(
fclt_f_organisatie,
fclt_f_categorie,
html_obj_id,
fclt_x_obj_id,
fclt_f_merk,
fclt_f_type,
fclt_d_aanschafdatum,
fclt_f_locatie,
ruimte_nr,
ruimte_oms
)
AS
SELECT a.prs_afdeling_omschrijving,
sd.ins_srtdeel_omschrijving,
'<a class="details" onclick=''FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&'||'autosearch=1&'||'ins_key='
|| asd.ins_deel_key || '")''>'
|| htf.escape_sc(asd.ins_deel_omschrijving) || '</a>'
html_obj_id,
asd.ins_deel_omschrijving,
x.merk,
y.model,
TO_CHAR (z.datum, 'dd-mm-yyyy'),
asd.vestiging,
asd.ruimte_nr,
asd.ruimte_oms
FROM (SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
DECODE (rv.aantal, 1, rv.prs_afdeling_key1, -1)
prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key1) prs_afdeling_key1,
COUNT ( * ) aantal
FROM prs_ruimteafdeling ra, prs_v_afdeling_boom ab
WHERE ra.prs_afdeling_key = ab.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) rv
WHERE d.ins_alg_ruimte_type NOT IN ('A', 'P', 'W')
AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
AND aog.alg_ruimte_key = rv.alg_ruimte_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
-1 prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d, alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type NOT IN ('A', 'P', 'W')
AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
AND (aog.alg_ruimte_key IS NULL
OR NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
aog.alg_ruimte_key))
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
ab.prs_afdeling_key1,
'Onbekend',
NULL ruimte_nr,
NULL ruimte_oms
FROM ins_v_aanwezigdeel d, prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key = ab.prs_afdeling_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
ab.prs_afdeling_key1,
'Onbekend',
NULL ruimte_nr,
NULL ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_perslid p,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
DECODE (rv.aantal, 1, rv.prs_afdeling_key1, -1)
prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key1) prs_afdeling_key1,
COUNT ( * ) aantal
FROM prs_ruimteafdeling ra, prs_v_afdeling_boom ab
WHERE ra.prs_afdeling_key = ab.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) rv,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = rv.alg_ruimte_key
AND rv.alg_ruimte_key = aog.alg_ruimte_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
-1 prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key = w.prs_werkplek_key
AND NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
w.prs_alg_ruimte_key)
AND w.prs_alg_ruimte_key = aog.alg_ruimte_key) asd,
ins_srtdeel sd,
ins_srtgroep sg,
(SELECT prs_afdeling_key, prs_afdeling_omschrijving
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_parentkey IS NULL
UNION ALL
SELECT -1 prs_afdeling_key,
'Onbekend' prs_afdeling_omschrijving
FROM DUAL) a,
(SELECT ins_deel_key, ins_kenmerkdeel_waarde merk
FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 42) x, -- Merk
(SELECT ins_deel_key, ins_kenmerkdeel_waarde model
FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 41) y, -- Type
(SELECT ins_deel_key,
fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy')
datum
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 761) z -- Aanschafdatum
WHERE asd.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 896 -- Hardware
AND asd.prs_afdeling_key1 = a.prs_afdeling_key
AND asd.ins_deel_key = x.ins_deel_key(+)
AND asd.ins_deel_key = y.ins_deel_key(+)
AND asd.ins_deel_key = z.ins_deel_key(+);
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('DEMO', 0); END;
/
commit;
--- CAPACITATIEVE PLANNING, 'GELEEND' VAN ARAI ---------------------------------
-- Alle (potentiele) uitvoerders met de disciplines waarvoor ze uitvoerder kunnen zijn.
CREATE OR REPLACE VIEW demo_v_uitvoerders
AS
SELECT DISTINCT p.prs_perslid_key,
pf.prs_perslid_naam_full,
p.prs_perslid_naam,
p.prs_perslid_voornaam,
p.prs_perslid_voorletters,
p.prs_perslid_dienstverband,
sp.prs_srtperslid_omschrijving,
p.prs_afdeling_key,
a.prs_afdeling_omschrijving,
d.ins_discipline_key,
d.ins_discipline_omschrijving
FROM prs_perslid p, prs_srtperslid sp, prs_afdeling a, mld_discipline d, fac_groeprechten gr, fac_gebruikersgroep gg, fac_functie f, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = gg.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND gr.fac_groep_key = gg.fac_groep_key
AND gr.ins_discipline_key = d.ins_discipline_key
AND gr.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_MLDORD';
CREATE OR REPLACE VIEW demo_v_uitvoerders_full
AS SELECT DISTINCT prs_perslid_key, prs_perslid_naam_full FROM demo_v_uitvoerders;
-- Teamlid welke nu (!), op dit moment (!) een (of meer) lopende opdracht(en) heeft.
-- Alle uitvoerders met alle opdrachten in de tijd uitgezet.
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders
AS
SELECT p.prs_perslid_key,
pf.prs_perslid_naam_full,
p.prs_perslid_naam,
p.prs_perslid_voornaam,
p.prs_perslid_voorletters,
p.prs_perslid_dienstverband,
p.prs_afdeling_key,
a.prs_afdeling_omschrijving,
o.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
o.mld_opdr_uren,
o.mld_statusopdr_key,
s.mld_statusopdr_omschrijving
FROM prs_perslid p, mld_opdr o, mld_statusopdr s, prs_afdeling a, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = o.mld_uitvoerende_keys
AND p.prs_perslid_key = pf.prs_perslid_key
AND o.mld_statusopdr_key = s.mld_statusopdr_key
AND p.prs_afdeling_key = a.prs_afdeling_key;
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders_all
AS
SELECT prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
prs_perslid_dienstverband,
prs_afdeling_key,
prs_afdeling_omschrijving,
mld_melding_key,
mld_opdr_key,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_uren,
mld_statusopdr_omschrijving
FROM demo_v_opdr_uitvoerders
WHERE mld_statusopdr_key IN (5,8)
UNION
SELECT DISTINCT prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
prs_perslid_dienstverband,
prs_afdeling_key,
prs_afdeling_omschrijving,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
FROM demo_v_uitvoerders p WHERE NOT EXISTS (SELECT 'x' FROM demo_v_opdr_uitvoerders u WHERE u.prs_perslid_key = p.prs_perslid_key);
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders_grp
( prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
prs_perslid_dienstverband_uren,
prs_afdeling_key,
prs_afdeling_omschrijving,
aantal_opdrachten,
som_mld_opdr_uren,
url)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
COALESCE(40*prs_perslid_dienstverband/100,0),
prs_afdeling_key,
prs_afdeling_omschrijving,
COUNT(mld_opdr_key),
COALESCE(SUM(mld_opdr_uren),0),
'appl/mld/opdr_search.asp?urole=bo' || '&' || 'autosearch=1' || '&' || 'handler_key=' || prs_perslid_key
FROM demo_v_opdr_uitvoerders_all
GROUP BY prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_naam,
prs_perslid_voornaam,
prs_perslid_voorletters,
prs_perslid_dienstverband,
prs_afdeling_key,
prs_afdeling_omschrijving;
CREATE OR REPLACE VIEW demo_v_opdr_afdeling_grp
( prs_afdeling_key,
prs_afdeling_omschrijving,
aantal_opdrachten,
som_mld_opdr_uren,
url)
AS
SELECT prs_afdeling_key,
prs_afdeling_omschrijving,
COUNT(mld_opdr_key),
COALESCE(SUM(mld_opdr_uren),0),
NULL
FROM demo_v_opdr_uitvoerders_all
GROUP BY prs_afdeling_key,
prs_afdeling_omschrijving;
-- Dienstverband uren van medewerkers bij volle week, dus b.v. 40, 32, 30 etc
-- Beschikbare_uren_groen: normaal dienstverband, maar als ergen midden in de week, dan dienstverband - aantal voorbije dagen * # uren bij medewerker - # uren van vandaag gerekend vanaf 9 uur smorgens
-- Opdracht_uren_rood: opdrachturen bij medewerker, maar niet meer dan Beschikbare_uren_groen
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders_wk0
(
prs_perslid_key,
prs_afdeling_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
beschikbare_uren_groen,
opdracht_uren_rood,
url
)
AS
SELECT prs_perslid_key,
prs_afdeling_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
prs_perslid_dienstverband_uren -
( GREATEST( (TO_CHAR(SYSDATE,'D')-2),0)*(prs_perslid_dienstverband_uren/5) + (TO_CHAR(SYSDATE,'HH24') - 9) ) beschikbare_uren_groen,
LEAST(som_mld_opdr_uren, prs_perslid_dienstverband_uren - (GREATEST((TO_CHAR(SYSDATE,'D')-2),0)*(prs_perslid_dienstverband_uren/5) + (TO_CHAR(SYSDATE,'HH24') - 9) ) ) opdracht_uren_rood,
url
FROM demo_v_opdr_uitvoerders_grp;
CREATE OR REPLACE VIEW demo_v_graph_capac_mdw_week_0
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
opdracht_uren_rood,
beschikbare_uren_groen - opdracht_uren_rood,
url
FROM demo_v_opdr_uitvoerders_wk0;
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders_wk1
(
prs_perslid_key,
prs_afdeling_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
beschikbare_uren_groen,
opdracht_uren_rood,
url
)
AS
SELECT g1.prs_perslid_key,
g1.prs_afdeling_key,
g1.prs_perslid_naam,
g1.prs_perslid_dienstverband_uren,
g1.prs_perslid_dienstverband_uren - LEAST(g1.som_mld_opdr_uren - w0.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) beschikbare_uren_groen,
LEAST(g1.som_mld_opdr_uren - w0.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) opdracht_uren_rood,
g1.url
FROM demo_v_opdr_uitvoerders_grp g1, demo_v_opdr_uitvoerders_wk0 w0
WHERE g1.prs_perslid_key = w0.prs_perslid_key;
CREATE OR REPLACE VIEW demo_v_graph_capac_mdw_week_1
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk1;
CREATE OR REPLACE VIEW demo_v_opdr_uitvoerders_wk2
(
prs_perslid_key,
prs_afdeling_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
beschikbare_uren_groen,
opdracht_uren_rood,
url
)
AS
SELECT g1.prs_perslid_key,
g1.prs_afdeling_key,
g1.prs_perslid_naam,
g1.prs_perslid_dienstverband_uren,
g1.prs_perslid_dienstverband_uren - LEAST(g1.som_mld_opdr_uren - w0.opdracht_uren_rood - w1.opdracht_uren_rood, g1.prs_perslid_dienstverband_uren) beschikbare_uren_groen,
LEAST(g1.som_mld_opdr_uren - w0.opdracht_uren_rood - w1.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) opdracht_uren_rood,
g1.url
FROM demo_v_opdr_uitvoerders_grp g1, demo_v_opdr_uitvoerders_wk0 w0, demo_v_opdr_uitvoerders_wk1 w1
WHERE g1.prs_perslid_key = w0.prs_perslid_key
AND g1.prs_perslid_key = w1.prs_perslid_key;
CREATE OR REPLACE VIEW demo_v_graph_capac_mdw_week_2
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk2;
CREATE OR REPLACE VIEW demo_v_graph_capac_TD_week_0
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
opdracht_uren_rood,
beschikbare_uren_groen - opdracht_uren_rood,
url
FROM demo_v_opdr_uitvoerders_wk0
WHERE prs_afdeling_key = 630;
-- Grafiek van de medewerkers Technische Dienst Electra (key = 98)
CREATE OR REPLACE VIEW demo_v_graph_capac_ELE_week_0
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
opdracht_uren_rood,
beschikbare_uren_groen - opdracht_uren_rood,
url
FROM demo_v_opdr_uitvoerders_wk0
WHERE prs_afdeling_key = 31481;
-- Grafiek van de medewerkers Technische Dienst Werktuigbouw (key = 99)
CREATE OR REPLACE VIEW demo_v_graph_capac_WTB_week_0
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
opdracht_uren_rood,
beschikbare_uren_groen - opdracht_uren_rood,
url
FROM demo_v_opdr_uitvoerders_wk0
WHERE prs_afdeling_key = 31482;
-- Grafiek van de medewerkers Technische Dienst (key = 97)
CREATE OR REPLACE VIEW demo_v_graph_capac_TD_week_1
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk1
WHERE prs_afdeling_key = 630;
-- Grafiek van de medewerkers Technische Dienst Electra (key = 98)
CREATE OR REPLACE VIEW demo_v_graph_capac_ELE_week_1
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk1
WHERE prs_afdeling_key = 31481;
-- Grafiek van de medewerkers Technische Dienst Werktuigbouw (key = 99)
CREATE OR REPLACE VIEW demo_v_graph_capac_WTB_week_1
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk1
WHERE prs_afdeling_key = 31482;
CREATE OR REPLACE VIEW demo_v_graph_capac_TD_week_2
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_UREN,
FCLT_YAS2_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk2
WHERE prs_afdeling_key = 630;
CREATE OR REPLACE VIEW demo_v_graph_capac_ELE_week_2
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk2
WHERE prs_afdeling_key = 31481;
CREATE OR REPLACE VIEW demo_v_graph_capac_WTB_week_2
(
prs_perslid_key,
FCLT_XAS_,
FCLT_YAS_,
FCLT_YAS2_,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
beschikbare_uren_groen,
url
FROM demo_v_opdr_uitvoerders_wk2
WHERE prs_afdeling_key = 31482;
CREATE OR REPLACE VIEW demo_v_capac_mdw_max_weeknr
(max_weeknr)
AS
SELECT ROUND(COALESCE(MAX(som_mld_opdr_uren), 0) / 40 ) + 2
FROM demo_v_opdr_uitvoerders_grp;
CREATE OR REPLACE VIEW demo_v_graph_capac_mdw_all
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
beschikbare_uren_groen,
opdracht_uren_rood,
url
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_dienstverband_uren,
40 * max_weeknr,
ROUND(som_mld_opdr_uren * (prs_perslid_dienstverband_uren / 40)),
url
FROM demo_v_opdr_uitvoerders_grp, demo_v_capac_mdw_max_weeknr;
CREATE OR REPLACE VIEW demo_v_graph_capac_mdw_totaal
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_UREN,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full || ' (' || prs_perslid_dienstverband_uren || ')',
opdracht_uren_rood,
url
FROM demo_v_graph_capac_mdw_all;
CREATE OR REPLACE VIEW demo_v_graph_aantopdr_mdw_all
(
prs_perslid_key,
FCLT_XAS_UITVOERDER,
FCLT_YAS_AANTAL,
FCLT_URL
)
AS
SELECT prs_perslid_key,
prs_perslid_naam_full,
aantal_opdrachten,
url
FROM demo_v_opdr_uitvoerders_grp;
CREATE OR REPLACE VIEW demo_v_graph_capac_afd_totaal
(
prs_afdeling_key,
FCLT_XAS_AFDELING,
FCLT_YAS_UREN,
FCLT_URL
)
AS
SELECT prs_afdeling_key,
prs_afdeling_omschrijving,
som_MLD_OPDR_UREN,
url
FROM demo_v_opdr_afdeling_grp;
CREATE OR REPLACE VIEW demo_v_graph_aantopdr_afd_all
(
prs_afdeling_key,
FCLT_XAS_AFDELING,
FCLT_YAS_AANTAL,
FCLT_URL
)
AS
SELECT prs_afdeling_key,
prs_afdeling_omschrijving,
aantal_opdrachten,
url
FROM demo_v_opdr_afdeling_grp;
--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
--------- MeerJarenonderhoudsBegroting (MJB) en InvesteringsBegroting (IB) <20> la LUDE ---------------
--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-
-- Rapportage "Begrotingsoverzicht"
-- Toont alle meldingen in vakgroeptype "Investeringsbegroting", plus alle opdrachten-met-kosten
-- bij reguliere meldingen op een investeringsbegroting-projectkostenplaats
CREATE OR REPLACE VIEW demo_v_rap_invbegr
AS
SELECT hide_f_sort,
fclt_f_jaar,
fclt_f_locatie,
budget fclt_x_budget,
prs_kostenplaats_limiet hide_f_limiet,
DECODE( INSTR(budget, fclt_f_jaar),
0, '<font style="font-weight:bold;color:#f00">'||budget||'</font><br/>(gepland: '||gepland||')',
budget)
html_budget,
html_nummer,
omschrijving,
fac.safe_to_number(
DECODE (fclt_f_substatus,
'Geannuleerd', NULL,
'Afgewezen', NULL,
geraamd) )
fclt_c_geraamd,
fac.safe_to_number(
DECODE (fclt_f_substatus,
'Geannuleerd', NULL,
'Afgewezen', NULL,
toegekend) )
fclt_c_toegekend,
fac.safe_to_number(
DECODE(besteed,
0, NULL,
besteed) )
fclt_c_besteed,
fclt_f_substatus,
fclt_f_status
FROM (
SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
l.alg_locatie_omschrijving fclt_f_locatie,
REPLACE(htf.escape_sc(km.prs_kostenplaats_omschrijving), '&'||'amp;', '&') budget,
km.prs_kostenplaats_limiet,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
|| '")''>'
|| htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
|| '</a>'
html_nummer,
m.mld_melding_omschrijving omschrijving,
fac.safe_to_number(geraamd.mld_kenmerkmelding_waarde) geraamd,
fac.safe_to_number(toegekend.mld_kenmerkmelding_waarde) toegekend,
COALESCE(o_open.mld_opdr_kosten,0) + COALESCE(o_klaar.mld_opdr_kosten,0) besteed,
CASE
WHEN status.mld_melding_key IS NOT NULL
THEN ud_status.fac_usrdata_omschr
WHEN status.mld_melding_key IS NULL
THEN
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN
CASE
WHEN COALESCE(o_open.mld_opdr_kosten,0) > 0
THEN 'Uitgegeven'
WHEN COALESCE(o_klaar.mld_opdr_kosten,0) > 0
THEN 'Niet opgelost'
WHEN toegekend.mld_melding_key IS NOT NULL
THEN 'Toegekend'
WHEN geraamd.mld_melding_key IS NOT NULL
THEN 'Geraamd'
ELSE
'Aangevraagd'
END
ELSE
'Afgerond'
END
END
fclt_f_substatus,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN 'Open'
ELSE 'Gesloten'
END
fclt_f_status
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
alg_locatie l,
prs_kostenplaats km,
-- Opdrachten die al klaar zijn (met kosten)
(SELECT mld_melding_key,
SUM(mld_opdr_kosten) mld_opdr_kosten
FROM mld_opdr
WHERE mld_statusopdr_key NOT IN (1,2,3,4,5,8,10)
AND mld_opdr_kosten > 0
GROUP BY mld_melding_key) o_klaar,
-- Opdrachten die nog lopen (met kosten)
(SELECT mld_melding_key,
SUM(mld_opdr_kosten) mld_opdr_kosten
FROM mld_opdr
WHERE mld_statusopdr_key NOT IN (1,2,6,7,9)
AND mld_opdr_kosten > 0
GROUP BY mld_melding_key) o_open,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2480
AND km.mld_kenmerkmelding_verwijder IS NULL) geraamd,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2481
AND km.mld_kenmerkmelding_verwijder IS NULL) toegekend,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2483
AND km.mld_kenmerkmelding_verwijder IS NULL) status,
(SELECT * FROM fac_usrdata
WHERE fac_usrtab_key = 1) ud_status
WHERE m.mld_melding_status != 1
-- Afgemelde meldingen alleen meenemen als er geldige opdrachten m<>t kosten bij zitten
AND NOT ( m.mld_melding_status IN (5,6)
AND NOT EXISTS (SELECT 1 FROM mld_opdr
WHERE mld_melding_key = m.mld_melding_key
AND mld_opdr_kosten > 0
AND mld_statusopdr_key NOT IN (1,2) ) )
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_key = 521
AND km.prs_kostenplaats_key = m.prs_kostenplaats_key
AND geraamd.mld_melding_key(+) = m.mld_melding_key
AND toegekend.mld_melding_key(+) = m.mld_melding_key
AND status.mld_melding_key(+) = m.mld_melding_key
AND ud_status.fac_usrdata_key(+) = fac.safe_to_number(status.mld_kenmerkmelding_waarde)
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND o_open.mld_melding_key(+) = m.mld_melding_key
AND o_klaar.mld_melding_key(+) = m.mld_melding_key
UNION ALL
SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
l.alg_locatie_omschrijving fclt_f_locatie,
htf.escape_sc(k.prs_kostenplaats_omschrijving) budget,
k.prs_kostenplaats_limiet,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
|| '")''>'
|| htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
|| '</a>'
html_nummer,
m.mld_melding_omschrijving omschrijving,
NULL geraamd,
NULL toegekend,
o.mld_opdr_kosten besteed,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN
CASE
WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (3,4,5,8,10)
THEN 'Uitgegeven'
WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (6,7,9)
THEN 'Niet opgelost'
ELSE 'Aangevraagd'
END
ELSE
'Afgemeld'
END
fclt_f_substatus,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN 'Open'
ELSE 'Gesloten'
END
fclt_f_status
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
alg_locatie l,
prs_kostenplaats k
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_status != 1
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_key != 521
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND k.prs_kostenplaats_module = 'PRJ'
AND o.mld_opdr_kosten > 0);
-- Rapportage "Budget per locatie"
-- Sommeert bovenstaande rapportage per budget en locatie
CREATE OR REPLACE VIEW demo_v_rap_invbegr_budg_loc
AS
SELECT fclt_f_locatie||fclt_f_jaar||fclt_x_budget hide_f_sort,
fclt_f_jaar, fclt_f_locatie,
fclt_x_budget, html_budget,
hide_f_limiet,
SUM(fclt_c_toegekend) fclt_c_toegekend,
SUM(DECODE(fclt_f_status,
'Open', fclt_c_besteed) )
fclt_c_openstaand,
SUM(DECODE(fclt_f_status,
'Gesloten', fclt_c_besteed) )
fclt_c_uitgevoerd,
SUM(fclt_c_besteed) fclt_c_besteed,
SUM( COALESCE(fclt_c_besteed, fclt_c_toegekend) )
fclt_c_prognose
FROM demo_v_rap_invbegr
WHERE fclt_f_substatus NOT IN ('Geannuleerd', 'Afgewezen')
GROUP BY fclt_f_jaar, fclt_f_locatie, hide_f_limiet, fclt_x_budget, html_budget;
-- Rapportage "Budgetuitnuttig"
-- Beschikbaar budget per kostenplaats (categorie), uitgezet uitnutting.
-- Uitnutting = toegekend bedrag voor lopende meldingen, besteed bedrag voor afgesloten meldingen.
CREATE OR REPLACE VIEW demo_v_rap_invbegr_budg_uitnut
AS
SELECT fclt_f_jaar,
fclt_x_budget fclt_x_categorie,
html_budget html_categorie,
hide_f_limiet fclt_c_budget,
SUM(fclt_c_toegekend) fclt_c_toegekend,
SUM(fclt_c_openstaand) fclt_c_openstaand,
SUM(fclt_c_uitgevoerd) fclt_c_uitgevoerd,
SUM(fclt_c_besteed) fclt_c_besteed,
SUM(fclt_c_prognose) fclt_c_prognose
FROM demo_v_rap_invbegr_budg_loc
GROUP BY fclt_f_jaar, hide_f_limiet, fclt_x_budget, html_budget;
---------------------------------------------------------------------------------
-- MJB (MeerJarenonderhoudsBegroting) --
---------------------------------------------------------------------------------
-- Element = inspectie op MJB-object (component).
-- Elementen definieren met welke frequentie gebouwen/inventaris/apparatuur/... moeten
-- worden onderhouden/vervangen/...
-- Deze view levert alle inspecties op objectsoorten/-groepen in discipline "MJB", inclusief
-- periode, eenheidsprijs, eenheid, groep (categorie), verantwoordelijke (huurder/eigenaar)
-- en toelichting.
-- ins_discipline MJB 2689
CREATE OR REPLACE VIEW demo_v_mjb_elementen
AS
SELECT ins_srtcontrole_key,
sd.ins_srtdeel_key,
sc.ins_srtcontrole_groep categorie,
sdg.ins_srtdeel_omschrijving objectsoort,
sc.ins_srtcontrole_omschrijving element,
sc.ins_srtcontrole_kosten eenheidsprijs,
sd.ins_srtdeel_eenheid eenheid,
sc.ins_srtcontrole_periode periode,
sc.ins_srtcontrole_opmerking verantwoordelijke,
sc.ins_srtcontrole_info toelichting
FROM ins_srtcontrole sc,
ins_v_srtdeel_gegevens sdg,
ins_srtdeel sd
WHERE sc.ins_srtinstallatie_key =
DECODE(sc.ins_srtcontrole_niveau,
'S', sdg.ins_srtdeel_key,
'G', sdg.ins_srtgroep_key,
'D', sdg.ins_discipline_key)
AND sdg.ins_discipline_key = 2689
AND sd.ins_srtdeel_key = sdg.ins_srtdeel_key;
-- Rapportage met alle elementen
CREATE OR REPLACE VIEW demo_v_rap_mjb_elementen
AS
SELECT categorie fclt_f_categorie,
objectsoort fclt_f_objectsoort,
element fclt_f_element,
eenheidsprijs fclt_c_eenheidsprijs,
eenheid,
periode,
verantwoordelijke fclt_f_verantwoordelijke,
toelichting
FROM demo_v_mjb_elementen;
-- Component = MJB-object met inspectie(s).
-- Componenten zijn bulkobjecten ("30 TL-armaturen") waarmee vastgelegd wordt wanneer
-- bepaalde zaken op lokaties zijn aangeschaft. M.b.v. de elementen wordt dan bepaald
-- wanneer ze vervangen/onderhouden moeten worden en wat dat naar verwachting gaat kosten.
-- Daarbij kan per inspectieresultaat de prijs overruled worden. Uitstel is mogelijk.
-- ins_discipline MJB 2689
-- ins_kenmerk Aantal 961
-- ins_kenmerk Uplift 962
-- ins_srtkenmerk Werkelijke eenh.prijs 681
CREATE OR REPLACE VIEW demo_v_mjb_componenten
AS
SELECT alg_locatie_key,
locatie,
categorie,
ins_srtdeel_key,
objectsoort,
e.ins_deel_key,
element,
aantal,
COALESCE(werkelijk, eenheidsprijs) eenheidsprijs,
eenheid,
uplift,
aantal * COALESCE(werkelijk, eenheidsprijs) * (1 + COALESCE(uplift, 0) / 100) totaalprijs,
werkelijk,
aanschaf,
laatste,
uitstel,
periode,
COALESCE(uitstel, COALESCE(laatste, aanschaf) + periode ) vervangingsjaar
-- ,verantwoordelijke
FROM (
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving locatie,
el.categorie categorie,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving objectsoort,
el.ins_srtcontrole_key,
el.element element,
d.ins_deel_key,
fac.safe_to_number(aantal.ins_kenmerkdeel_waarde) aantal,
el.eenheidsprijs eenheidsprijs,
sd.ins_srtdeel_eenheid eenheid,
fac.safe_to_number(uplift.ins_kenmerkdeel_waarde) uplift,
fac.safe_to_number(TO_CHAR(d.ins_deel_aanmaak, 'YYYY')) aanschaf,
el.periode periode,
el.verantwoordelijke verantwoordelijke
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
demo_v_mjb_elementen el,
ins_v_alg_onroerendgoed og,
alg_locatie l,
(SELECT * FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = 961
AND ins_kenmerkdeel_verwijder IS NULL) aantal,
(SELECT * FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = 962
AND ins_kenmerkdeel_verwijder IS NULL) uplift
WHERE d.ins_deel_verwijder IS NULL
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sg.ins_discipline_key = 2689
AND og.alg_onrgoed_type = d.ins_alg_ruimte_type
AND og.alg_onrgoed_keys = d.ins_alg_ruimte_key
AND l.alg_locatie_key = og.alg_locatie_key
AND el.ins_srtdeel_key(+) = sd.ins_srtdeel_key
AND aantal.ins_deel_key = d.ins_deel_key
AND uplift.ins_deel_key(+) = d.ins_deel_key ) e
LEFT OUTER JOIN (
SELECT dsc.ins_srtcontrole_key, dsc.ins_deel_key,
fac.safe_to_number(TO_CHAR(dsc.ins_deelsrtcontrole_datum, 'YYYY')) laatste,
NULL uitstel,
fac.safe_to_number(ins_kmdeelsrtcontr_waarde) werkelijk
FROM ins_deelsrtcontrole dsc,
ins_srtcontroledl_xcp xcp,
(SELECT kdsc.* FROM ins_kmdeelsrtcontr kdsc, ins_kenmerk k
WHERE k.ins_kenmerk_key = kdsc.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 681
AND kdsc.ins_kmdeelsrtcontr_verwijder IS NULL) werkelijk
WHERE werkelijk.ins_deelsrtcontrole_key(+) = dsc.ins_deelsrtcontrole_key
AND xcp.ins_srtcontrole_key(+) = dsc.ins_srtcontrole_key
AND xcp.ins_deel_key(+) = dsc.ins_deel_key
AND dsc.ins_deelsrtcontrole_key =
(SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole
WHERE ins_deel_key = dsc.ins_deel_key
AND ins_srtcontrole_key = dsc.ins_srtcontrole_key) ) c
ON e.ins_deel_key = c.ins_deel_key
AND e.ins_srtcontrole_key = c.ins_srtcontrole_key;
-- Rapportage met alle componenten
CREATE OR REPLACE VIEW demo_v_rap_mjb_componenten
AS
SELECT locatie||COALESCE(categorie,'_')||objectsoort||vervangingsjaar hide_f_sort,
locatie fclt_f_locatie,
categorie fclt_f_categorie,
objectsoort fclt_x_objectsoort,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/INS/ins_deel.asp?urole=bo&'||'ins_key='||ins_deel_key
|| '")''>'
|| htf.escape_sc(objectsoort)
|| '</a>'
html_object,
element fclt_f_element,
aantal,
eenheidsprijs,
'p/ '||eenheid eenheid,
uplift,
totaalprijs fclt_c_totaalprijs,
TO_CHAR(aanschaf) aanschaf,
TO_CHAR(laatste) uitgevoerd,
TO_CHAR(periode) periode,
TO_CHAR(uitstel) uitstel,
TO_CHAR(vervangingsjaar) fclt_f_vervangingsjaar
-- ,verantwoordelijke
FROM demo_v_mjb_componenten;
-- Gestylede rapportage die per jaar/locatie/categorie aangeeft hoeveel kiloeuro er
-- begroot moet worden voor MJB
CREATE OR REPLACE VIEW demo_v_rap_mjb_grid
AS
SELECT grid.locatie || '-' || grid.categorie hide_f_regel,
grid.locatie fclt_f_locatie,
grid.categorie fclt_f_categorie,
TO_CHAR(grid.jaar) fclt_f_aanschafjaar,
COALESCE (comp.totaalprijs, 0) bedrag
FROM (
SELECT DISTINCT a.alg_locatie_key,
j.jaar,
a.alg_locatie_omschrijving locatie,
e.categorie
FROM (SELECT alg_locatie_key,
alg_locatie_omschrijving
FROM alg_v_aanweziglocatie
UNION ALL
SELECT -1 alg_gebouw_key,
'Onbekend' alg_locatie_omschrijving
FROM DUAL) a,
ins_v_aanwezigdeel d,
demo_v_mjb_elementen e,
(SELECT n jaar
FROM (SELECT ROWNUM n FROM DUAL
CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))+12)
WHERE n >= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-2) j
WHERE e.ins_srtdeel_key = d.ins_srtdeel_key
ORDER BY locatie, jaar
) grid
LEFT OUTER JOIN (
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar
FROM demo_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, vervangingsjaar, periode
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + periode vervangingsjaar
FROM demo_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + periode)
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + 2*periode vervangingsjaar
FROM demo_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 2*periode)
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + 3*periode vervangingsjaar
FROM demo_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 3*periode)
) comp
ON comp.alg_locatie_key = grid.alg_locatie_key
AND comp.categorie = grid.categorie
AND comp.vervangingsjaar = grid.jaar
;
-- Alle opgeroepen bezoekers, dat is:
-- * bezoeker is binnen en opgeroepen, maar nog niet vertrokken
-- * bezoeker is aangemeld voor vandaag
-- * bij de afspraak hoort een oproep-actie (geen ophaal-actie)
-- * badgenummer is gevuld
-- Filtering via de API kan op gebouw, verdieping en wachtzone (groep), dus die ook ophalen
CREATE OR REPLACE VIEW demo_v_api_bez_oproep
AS
SELECT TO_CHAR(b.bez_bezoekers_oproep, 'YYYY-MM-DD HH24:MI:SS') oproep_tijd,
rr.res_ruimte_nr ruimtenr,
COALESCE(rr.res_ruimte_groep, ' ') groep,
b.bez_bezoekers_pasnr oproep_nummer,
b.bez_bezoekers_key bezoeker_key,
g.alg_gebouw_code gebouw_code,
g.alg_gebouw_key gebouw_key,
v.alg_verdieping_code verdieping_code,
v.alg_verdieping_key verdieping_key
FROM bez_bezoekers b,
bez_afspraak a,
bez_actie ac,
res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_ruimte rr,
res_alg_ruimte rar,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE rrr.res_rsv_ruimte_van BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 1
AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ac.bez_actie_key = a.bez_actie_key
AND BITAND(ac.bez_actie_flags, 1) = 1
AND b.bez_afspraak_key = a.bez_afspraak_key
AND b.bez_bezoekers_done IS NOT NULL
AND b.bez_bezoekers_oproep IS NOT NULL
AND b.bez_bezoekers_out IS NULL
AND b.bez_bezoekers_pasnr IS NOT NULL
AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = ro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND r.alg_ruimte_key = rar.alg_ruimte_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND g.alg_gebouw_key = v.alg_gebouw_key
ORDER BY 1 DESC;
-- Rapportage t.b.v. voorbeeld oproepscherm (= gestylede rapportage)
CREATE OR REPLACE VIEW demo_v_rap_bez_oproep
AS
SELECT oproep_tijd hide_f_oproeptijd,
gebouw_code fclt_f_gebouwcode,
verdieping_code fclt_f_verdiepingcode,
groep fclt_f_wachtzonde,
ruimtenr fclt_f_ruimtenr,
oproep_nummer oproepnr
FROM demo_v_api_bez_oproep
ORDER BY oproep_tijd DESC;
CREATE OR REPLACE VIEW demo_v_leverancier
AS
SELECT *
FROM prs_bedrijf
WHERE prs_bedrijf_leverancier = 1;
CREATE OR REPLACE VIEW demo_v_rap_fin_bijtelling
AS
SELECT p.prs_perslid_nr personeelsnummer,
DECODE (
pfa.prs_perslid_key,
NULL, 'POOL',
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid.asp?key='
|| pfa.prs_perslid_key
|| '")''>'
|| HTF.escape_sc (pfa.prs_perslid_naam_full)
|| '</a>')
html_berijder,
COALESCE (pfa.prs_perslid_naam_full, 'POOL') fclt_x_berijder,
ad.ins_deel_omschrijving fclt_f_voertuig,
c.cnt_contract_nummer_intern fclt_x_contract,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/cnt/cnt_contract.asp?urole=bo&'
|| 'cnt_key='
|| c.cnt_contract_key
|| '")''>'
|| HTF.escape_sc (c.cnt_contract_nummer_intern)
|| '</a>'
html_contract,
b.prs_bedrijf_naam fclt_f_bedrijf,
DECODE (
c.ins_discipline_key,
2789,
'huur',
TO_CHAR (
ROUND (MONTHS_BETWEEN (c.cnt_contract_looptijd_tot, c.cnt_contract_looptijd_van))))
looptijd,
ROUND(demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM'))
* CAST (TO_CHAR (LAST_DAY (SYSDATE), 'DD') AS INT))
aantal_dagen,
ROUND (
c.cnt_contract_termijnkosten
* demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM')),
2)
fclt_c_kosten,
fisc.waarde fclt_c_fiscale_waarde,
DECODE (bij.fac_usrdata_prijs, NULL, NULL, TO_CHAR (bij.fac_usrdata_prijs) || '%')
percentage,
ROUND (
fisc.waarde * bij.fac_usrdata_prijs / 1200
* demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM')),
2)
fclt_c_bruto_bijtelling
FROM cnt_contract c,
cnt_contract_object co,
ins_v_aanwezigdeel ad,
prs_perslid p,
prs_v_perslid_fullnames_all pfa,
prs_bedrijf b,
(SELECT kd.ins_deel_key, ud.fac_usrdata_prijs
FROM ins_kenmerkdeel kd, ins_kenmerk k, fac_usrdata ud
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND kd.ins_kenmerkdeel_verwijder IS NULL
AND k.ins_srtkenmerk_key = 749
AND k.ins_kenmerk_verwijder IS NULL
AND ud.fac_usrtab_key = 884
AND fac.safe_to_number (kd.ins_kenmerkdeel_waarde) = ud.fac_usrdata_key) bij,
(SELECT kd.ins_deel_key, fac.safe_to_number (kd.ins_kenmerkdeel_waarde) waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND kd.ins_kenmerkdeel_verwijder IS NULL
AND k.ins_srtkenmerk_key = 747
AND k.ins_kenmerk_verwijder IS NULL) fisc
WHERE c.ins_discipline_key IN (2788, 2789)
AND c.cnt_contract_looptijd_van <= LAST_DAY (SYSDATE)
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'MM')
AND co.cnt_contract_key = c.cnt_contract_key
AND ad.ins_deel_key = co.cnt_ins_deel_key
AND p.prs_perslid_key(+) = ad.ins_alg_ruimte_key
AND pfa.prs_perslid_key(+) = p.prs_perslid_key
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND bij.ins_deel_key(+) = ad.ins_deel_key
AND fisc.ins_deel_key(+) = ad.ins_deel_key;
----- KPI's --------------------------------------------------------------------
CREATE OR REPLACE VIEW demo_v_rap_kpi_definitie
AS
SELECT * FROM kpi_definitie;
----- Views voor berekenen KPI's -----------------------------------------------
-- Views voor berekening (genormeerde) KPI-scores o.b.v. handmatig/automatisch ingevulde KPI-meldingen.
-- E<>n view per melding. Nummering is gelijk aan die van de de standaardmeldingen.
-- mld_stdmelding Budget en Kosten 1542 A
-- mld_kenmerk Catering^
-- mld_kenmerk Werkelijke kosten 2319 A
-- mld_kenmerk Extra kosten 2295 A
-- mld_kenmerk Receptie^
-- mld_kenmerk Werkelijke kosten 2320 A
-- mld_kenmerk Extra kosten 2296 A
-- mld_kenmerk Schoonmaak^
-- mld_kenmerk Werkelijke kosten 2321 A
-- mld_kenmerk Extra kosten 2297 A
-- mld_kenmerk Documentmanagement^
-- mld_kenmerk Werkelijke kosten 2322 A
-- mld_kenmerk Extra kosten 2298 A
CREATE OR REPLACE VIEW demo_v_kpi1
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code IN ('CK1','RK11','RK12','SK23','SK25','DK33')),
kosten AS
(SELECT mld_melding_key,
alg_locatie_key,
periode,
(cat_kost + cat_extra) / cat_kost cat_score,
(rec_kost + rec_extra) / rec_kost rec_score,
(sch_kost + sch_extra) / sch_kost sch_score,
(doc_kost + doc_extra) / doc_kost doc_score,
rec_extra / (rec_kost + rec_extra) rec_onvoorz_score,
sch_extra / (sch_kost + sch_extra) sch_regie_score
FROM (
SELECT m.mld_melding_key,
dloc.alg_locatie_key alg_locatie_key,
TRUNC(m.mld_melding_datum, 'MM') periode,
fac.safe_to_number(cat_kost.mld_kenmerkmelding_waarde) cat_kost,
fac.safe_to_number(cat_extra.mld_kenmerkmelding_waarde) cat_extra,
fac.safe_to_number(rec_kost.mld_kenmerkmelding_waarde) rec_kost,
fac.safe_to_number(rec_extra.mld_kenmerkmelding_waarde) rec_extra,
fac.safe_to_number(sch_kost.mld_kenmerkmelding_waarde) sch_kost,
fac.safe_to_number(sch_extra.mld_kenmerkmelding_waarde) sch_extra,
fac.safe_to_number(doc_kost.mld_kenmerkmelding_waarde) doc_kost,
fac.safe_to_number(doc_extra.mld_kenmerkmelding_waarde) doc_extra
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2319) cat_kost,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2295) cat_extra,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2320) rec_kost,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2296) rec_extra,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2321) sch_kost,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2297) sch_extra,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2322) doc_kost,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2298) doc_extra,
alg_locatie dloc
WHERE m.mld_stdmelding_key = 1542
-- AND m.mld_melding_status IN (5)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND cat_kost.mld_melding_key = m.mld_melding_key
AND cat_extra.mld_melding_key(+) = m.mld_melding_key
AND rec_kost.mld_melding_key = m.mld_melding_key
AND rec_extra.mld_melding_key(+) = m.mld_melding_key
AND sch_kost.mld_melding_key = m.mld_melding_key
AND sch_extra.mld_melding_key(+) = m.mld_melding_key
AND doc_kost.mld_melding_key = m.mld_melding_key
AND doc_extra.mld_melding_key(+) = m.mld_melding_key) )
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
DECODE(SUBSTR(n.kpi_code, 1, 1),
'R', 'Receptie',
'S', 'Schoonmaak',
'D', 'Documentmanagement',
'C', 'Catering') proces,
'Kosten' onderdeel,
DECODE(n.kpi_code,
'CK1', cat_score,
'RK11', rec_score,
'RK12', rec_onvoorz_score,
'SK23', sch_regie_score,
'SK25', sch_score,
'DK33', doc_score) score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, kosten k) m
;
-- mld_stdmelding Audit Catering 1541
-- mld_kenmerk Wachttijden bij kassa^
-- mld_kenmerk Tijdstip1
-- mld_kenmerk Aantal bezoekers 2281 A
-- mld_kenmerk Aantal op tijd 2285 A
-- mld_kenmerk Tijdstip2
-- mld_kenmerk Aantal bezoekers 2282 A
-- mld_kenmerk Aantal op tijd 2286 A
-- mld_kenmerk Tijdstip3
-- mld_kenmerk Aantal bezoekers 2283 A
-- mld_kenmerk Aantal op tijd 2287 A
-- mld_kenmerk Opmerking
-- mld_kenmerk Assortimentsaanbod^
-- mld_kenmerk Aantal producten assortiment 2289 A
-- mld_kenmerk Aantal producten aanwezig 2288 A
-- mld_kenmerk Opmerking
-- mld_kenmerk HACCP controle^
-- mld_kenmerk Totaal aantal HACCP punten 2317 A
-- mld_kenmerk Aantal goede HACCP punten 2284 A
CREATE OR REPLACE VIEW demo_v_kpi2
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code IN ('CK2', 'CK3', 'CK4')),
audits AS
(SELECT mld_melding_key,
alg_locatie_key,
periode,
(tijdig1 + tijdig2 + tijdig3) / (num_bez1 + num_bez2 + num_bez3) wachttijd_score,
aanw_prod / num_prod assortiment_score,
goed_haccp / num_haccp haccp_score
FROM (
SELECT m.mld_melding_key,
dloc.alg_locatie_key alg_locatie_key,
TRUNC(m.mld_melding_datum, 'MM') periode,
fac.safe_to_number(num_bez1.mld_kenmerkmelding_waarde) num_bez1,
fac.safe_to_number(tijdig1.mld_kenmerkmelding_waarde) tijdig1,
fac.safe_to_number(num_bez2.mld_kenmerkmelding_waarde) num_bez2,
fac.safe_to_number(tijdig2.mld_kenmerkmelding_waarde) tijdig2,
fac.safe_to_number(num_bez3.mld_kenmerkmelding_waarde) num_bez3,
fac.safe_to_number(tijdig3.mld_kenmerkmelding_waarde) tijdig3,
fac.safe_to_number(num_prod.mld_kenmerkmelding_waarde) num_prod,
fac.safe_to_number(aanw_prod.mld_kenmerkmelding_waarde) aanw_prod,
fac.safe_to_number(num_haccp.mld_kenmerkmelding_waarde) num_haccp,
fac.safe_to_number(goed_haccp.mld_kenmerkmelding_waarde) goed_haccp
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2281) num_bez1,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2285) tijdig1,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2282) num_bez2,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2286) tijdig2,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2283) num_bez3,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2287) tijdig3,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2289) num_prod,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2288) aanw_prod,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2317) num_haccp,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2284) goed_haccp,
alg_locatie dloc
WHERE m.mld_stdmelding_key = 1541
-- AND m.mld_melding_status IN (5)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND num_bez1.mld_melding_key(+) = m.mld_melding_key
AND tijdig1.mld_melding_key(+) = m.mld_melding_key
AND num_bez2.mld_melding_key(+) = m.mld_melding_key
AND tijdig2.mld_melding_key(+) = m.mld_melding_key
AND num_bez3.mld_melding_key(+) = m.mld_melding_key
AND tijdig3.mld_melding_key(+) = m.mld_melding_key
AND num_prod.mld_melding_key(+) = m.mld_melding_key
AND aanw_prod.mld_melding_key(+) = m.mld_melding_key
AND num_haccp.mld_melding_key(+) = m.mld_melding_key
AND goed_haccp.mld_melding_key(+) = m.mld_melding_key) )
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
'Catering' proces,
'Kwaliteit' onderdeel,
DECODE(n.kpi_code,
'CK2', wachttijd_score,
'CK3', assortiment_score,
'CK4', haccp_score) score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, audits k) m
;
-- mld_stdmelding KTO Receptie 1544 A
-- mld_srtkenmerk Cijfer 2647 A
-- mld_srtkenmerk Opmerking
-- TODO: divide-by-zero voorkomen
CREATE OR REPLACE VIEW demo_v_kpi3
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code IN ('RT19')), --('CT6','RT19','RT20','ST30','DT40')),
kto AS
(SELECT MIN(mld_melding_key) mld_melding_key,
alg_locatie_key,
periode,
mld_stdmelding_key, SUM(cijfer) / COUNT(*) avg_score
FROM (
SELECT m.mld_melding_key,
dloc.alg_locatie_key alg_locatie_key,
TRUNC(m.mld_melding_datum, 'MM') periode,
m.mld_stdmelding_key,
fac.safe_to_number(cijfer.mld_kenmerkmelding_waarde) cijfer
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key IN (SELECT mld_kenmerk_key FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = 2647) ) cijfer,
alg_locatie dloc,
fac_usrdata dperiode
WHERE m.mld_stdmelding_key IN (1544)
-- AND m.mld_melding_status IN (5)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND cijfer.mld_melding_key = m.mld_melding_key)
GROUP BY alg_locatie_key, periode, mld_stdmelding_key)
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
DECODE(SUBSTR(n.kpi_code, 1, 1),
'R', 'Receptie',
'S', 'Schoonmaak',
'D', 'Documentmanagement',
'C', 'Catering') proces,
'Tevredenheid' onderdeel,
avg_score score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, kto k
WHERE k.mld_stdmelding_key = DECODE(n.kpi_code,
'RT19', 1544)) m
;
-- mld_stdmelding Duurzaamheid en derving Catering 1543
-- mld_kenmerk Gebruik biologische producten^
-- mld_kenmerk Percentage Biologisch 2310 A
-- mld_kenmerk Opmerking
-- mld_kenmerk Derving^
-- mld_kenmerk Percentage derving 2311 A
-- mld_kenmerk Opmerking
CREATE OR REPLACE VIEW demo_v_kpi4
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code IN ('CD7', 'CD8')),
audits AS
(SELECT mld_melding_key,
alg_locatie_key,
periode,
perc_bio / 100 bio_score,
perc_derv / 100 derving_score
FROM (
SELECT m.mld_melding_key,
dloc.alg_locatie_key alg_locatie_key,
TRUNC(m.mld_melding_datum, 'MM') periode,
fac.safe_to_number(perc_bio.mld_kenmerkmelding_waarde) perc_bio,
fac.safe_to_number(perc_derv.mld_kenmerkmelding_waarde) perc_derv
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2310) perc_bio,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2311) perc_derv,
alg_locatie dloc
WHERE m.mld_stdmelding_key = 1543
-- AND m.mld_melding_status IN (5)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND perc_bio.mld_melding_key(+) = m.mld_melding_key
AND perc_derv.mld_melding_key(+) = m.mld_melding_key ) )
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
'Catering' proces,
'Duurzaamheid' onderdeel,
DECODE(n.kpi_code,
'CD7', bio_score,
'CD8', derving_score) score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, audits k) m
;
CREATE OR REPLACE VIEW demo_v_kpi_all
AS
SELECT * FROM demo_v_kpi1
UNION ALL
SELECT * FROM demo_v_kpi2
UNION ALL
SELECT * FROM demo_v_kpi3
UNION ALL
SELECT * FROM demo_v_kpi4;
CREATE OR REPLACE PACKAGE demo
AS
FUNCTION getAantalDagenInPeriode(p_van IN DATE,
p_tot IN DATE,
p_periode_van IN DATE,
p_periode_tot IN DATE := NULL)
RETURN NUMBER;
PROCEDURE refreshscore(pUserKey IN NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY demo
AS
-- Bepaal aantal dagen in begin- of eindperiode waarvoor huur betaald moet worden
-- Periode moet binnen dezelfde kalendermaand liggen.
-- Als p_periode_tot leeg is, gaan we uit van het einde van de maand
-- Als p_van en/of p_tot leeg zijn, dan zetten we die op begin resp. eind van de periode
FUNCTION getAantalDagenInPeriode(p_van IN DATE,
p_tot IN DATE,
p_periode_van IN DATE,
p_periode_tot IN DATE := NULL)
RETURN NUMBER
IS
o_aantal_dagen NUMBER(4);
v_periode_tot DATE;
v_van DATE;
v_tot DATE;
BEGIN
-- Einddatum van de periode die we beschouwen.
-- Als geen einddatum, dan einde van de maand (startdatum zou dan eerste dag van de maand moeten zijn)
v_periode_tot := COALESCE( p_periode_tot, LAST_DAY(p_periode_van) );
-- Valt periode (p_van - p_tot) geheel buiten (p_periode_van - p_periode_tot)? Dan nul dagen overlap!
IF ( p_tot < p_periode_van
OR p_van > p_periode_tot)
THEN
RETURN 0;
END IF;
-- Aantal dagen is maximaal de hele periode
o_aantal_dagen := CAST( TO_CHAR(v_periode_tot, 'DD') AS INT)
- CAST( TO_CHAR(p_periode_van, 'DD') AS INT)
+ 1;
v_van := p_van;
v_tot := p_tot;
-- Als geen van/tot datum opgegeven, of als van/tot datum buiten periode valt,
-- dan zet op begin-/einddatum van de periode (periode)
IF (v_van IS NULL OR v_van < p_periode_van)
THEN
v_van := p_periode_van;
END IF;
IF (v_tot IS NULL OR v_tot > v_periode_tot)
THEN
v_tot := v_periode_tot;
END IF;
-- Beslaat het contract de volledige periode, of beginnen/eindigen we halverwege?
-- DAN:
-- - ingangsmaand is hetzelfde als van huidige periode
-- - ingangsdag is later dan de eerste dag van de periode
-- EN/OF:
-- - eindmaand is hetzelfde als van huidige periode
-- - einddag is eerder dan de laatste dag van de periode
IF ( ( TRUNC(v_van, 'MM') = TRUNC(p_periode_van, 'MM')
AND TRUNC(v_van, 'DD') > p_periode_van )
OR ( TRUNC(v_tot, 'MM') = TRUNC(v_periode_tot, 'MM')
AND TRUNC(v_tot, 'DD') < v_periode_tot ) )
THEN
-- prijsfactor = aantal_dagen_gehuurd / aantal_dagen_in_deze_periode
-- = einddag - begindag + 1 / aantal_dagen_in_deze_periode
o_aantal_dagen := ( CAST( TO_CHAR(v_tot, 'DD') AS INT)
- CAST( TO_CHAR(v_van, 'DD') AS INT)
+ 1 );
END IF;
RETURN o_aantal_dagen;
END;
PROCEDURE refreshscore(pUserKey IN NUMBER)
AS
BEGIN
-- Waarden van de huidige periode(s) verwijderen.
-- TODO: tricky met KPI's op basis van storingsmeldingen, klachten etc; daar kan voor een
-- periode maar zo een extra melding afgemeld worden, waardoor de score opnieuw berekend wordt
DELETE kpi_score
WHERE (kpi_definitie_key, kpi_score_datum, alg_locatie_key) IN (
SELECT DISTINCT kpi_definitie_key, kpi_score_datum, alg_locatie_key
FROM demo_v_kpi_all);
-- Opnieuw genereren van KPI scores
INSERT INTO kpi_score (
kpi_definitie_key,
kpi_score_datum,
alg_locatie_key,
kpi_score_xmlnode,
kpi_score_refkey,
kpi_score_score,
kpi_score_norm_score,
kpi_score_drempels)
SELECT * FROM demo_v_kpi_all;
COMMIT;
END;
END;
/
------------------------------------------
CREATE OR REPLACE VIEW demo_v_mld_inkoopaanvraag
AS
SELECT mld_melding_key,
'A' || mld_melding_key mld_melding_nr,
CASE
WHEN mld_melding_status IN (2, 3, 4, 7)
THEN NULL
ELSE SYSDATE-1
END vervallen
FROM mld_melding
WHERE mld_stdmelding_key = 922;
CREATE OR REPLACE VIEW demo_v_mld_changes
AS
SELECT mld_melding_key,
mld_melding_omschrijving,
t.ins_srtdiscipline_prefix
|| m.mld_melding_key || ' '
|| m.mld_melding_omschrijving
aanduiding,
CASE
WHEN m.mld_melding_status IN (0, 2, 3, 4, 7, 99)
THEN NULL
ELSE SYSDATE -1
END vervallen
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
ins_srtdiscipline t
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND d.ins_discipline_key IN (2468, 2848)
AND t.ins_srtdiscipline_key = d.ins_srtdiscipline_key;
CREATE OR REPLACE VIEW demo_v_mld_problems
AS
SELECT m.mld_melding_key,
m.mld_melding_omschrijving,
t.ins_srtdiscipline_prefix
|| m.mld_melding_key || ' '
|| m.mld_melding_omschrijving
aanduiding,
eig.prs_perslid_key eig_key,
eig.prs_perslid_naam_full eigenaar,
coord.prs_perslid_key coord_key,
coord.prs_perslid_naam_full coordinator,
CASE
WHEN m.mld_melding_status IN (0, 2, 3, 4, 7, 99)
THEN NULL
ELSE SYSDATE -1
END vervallen
FROM mld_melding m,
mld_stdmelding s,
mld_discipline d,
ins_srtdiscipline t,
mld_kenmerkmelding kme,
mld_kenmerkmelding kmc,
prs_v_perslid_fullnames_all eig,
prs_v_perslid_fullnames_all coord
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND d.ins_discipline_key = s.mld_ins_discipline_key
AND d.ins_discipline_key IN (2472)
AND t.ins_srtdiscipline_key = d.ins_srtdiscipline_key
AND kme.mld_melding_key = m.mld_melding_key
AND kmc.mld_melding_key = m.mld_melding_key
AND kme.mld_kenmerk_key = 1923
AND kmc.mld_kenmerk_key = 2181
AND kme.mld_kenmerkmelding_verwijder IS NULL
AND kmc.mld_kenmerkmelding_verwijder IS NULL
AND eig.prs_perslid_key = fac.safe_to_number (kme.mld_kenmerkmelding_waarde)
AND coord.prs_perslid_key = fac.safe_to_number (kmc.mld_kenmerkmelding_waarde);
CREATE OR REPLACE VIEW demo_v_mob_reserveernu
AS
SELECT res_ruimte_nr hide_f_sort,
res_ruimte_nr fclt_f_ruimte,
res_ruimte_key hide_f_ruimte_key,
DECODE( lcl.getuserlanguage(),
'NL', 'Vrij tot ',
'EN', 'Available until ',
'DE', 'Verf<EFBFBD>gbar bis ',
'FR', 'Disponible avant ')
|| DECODE (van,
NULL, TO_CHAR (TRUNC (SYSDATE) + res_ruimte_eindtijd / 24, 'HH24:MI'),
TO_CHAR (van, 'HH24:MI'))
vrij_tot,
'<img src="../../cust/demo/photos/'
|| res_ruimte_image
|| '" width="100" style="float:left; margin-right: 10px;"/>'
html_,
info
FROM (SELECT ruimte.res_ruimte_key,
lcl.xl ('res_ruimte_nr', ruimte.res_ruimte_key,
ruimte.res_ruimte_nr, lcl.getuserlanguage() ) res_ruimte_nr,
ruimte.res_ruimte_eindtijd,
ruimte.res_ruimte_image,
ruimte.omsteltijd,
CASE WHEN omsteltijd < 0.5 THEN van - 1 / 48 ELSE van - (omsteltijd / 24) END
drempel,
van.van - (omsteltijd / 24) van,
tot.tot,
SUBSTR (lcl.xl ('res_ruimte_omschrijving', ruimte.res_ruimte_key,
ruimte.res_ruimte_omschrijving, lcl.getuserlanguage() ),
1, 100) || '...' info
FROM (SELECT rr.*, dp.res_disc_params_preposttime omsteltijd
FROM res_ruimte rr, res_disc_params dp
WHERE res_ruimte_verwijder IS NULL
AND res_discipline_key IN (281, 2268, 784)
AND TRUNC (SYSDATE) + res_ruimte_eindtijd / 24 > SYSDATE + 1 / 24
AND dp.res_ins_discipline_key = rr.res_discipline_key) ruimte
LEFT OUTER JOIN ( SELECT res_ruimte_key, MIN (res_rsv_ruimte_van) van
FROM res_rsv_ruimte rr, res_ruimte_opstelling ro
WHERE res_rsv_ruimte_verwijder IS NULL
AND rr.res_ruimte_opstel_key IS NOT NULL
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND res_rsv_ruimte_van > SYSDATE
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
GROUP BY res_ruimte_key) van
ON van.res_ruimte_key = ruimte.res_ruimte_key
LEFT OUTER JOIN ( SELECT res_ruimte_key, MAX (res_rsv_ruimte_tot) tot
FROM res_rsv_ruimte rr, res_ruimte_opstelling ro
WHERE res_rsv_ruimte_verwijder IS NULL
AND rr.res_ruimte_opstel_key IS NOT NULL
AND TRUNC (res_rsv_ruimte_tot) = TRUNC (SYSDATE)
AND SYSDATE BETWEEN res_rsv_ruimte_van
AND res_rsv_ruimte_tot
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
GROUP BY res_ruimte_key) tot
ON tot.res_ruimte_key = ruimte.res_ruimte_key)
WHERE tot IS NULL OR (SYSDATE BETWEEN tot AND drempel);
-- procedure om ontvangen emails te processen. De klant specifieke eigenschappen, keys e.d. moeten
-- in de aanroep meegegeven worden.
CREATE OR REPLACE PROCEDURE demo_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
puserkey IN NUMBER DEFAULT NULL)
AS
sender_key prs_perslid.prs_perslid_key%TYPE;
melder_key prs_perslid.prs_perslid_key%TYPE;
kostenplaats_key prs_afdeling.prs_kostenplaats_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
opdrkey mld_opdr.mld_opdr_key%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
subject_regexp fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
typeopdrkey mld_typeopdr.mld_typeopdr_key%TYPE;
mldnum VARCHAR2 (4000);
opdrnum VARCHAR2 (4000);
opdrvolgnr NUMBER (10);
srtdisc VARCHAR2 (4000);
cnt NUMBER (10);
v_flag_on_fenote NUMBER (10);
v_flag_on_bonote NUMBER (10);
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
v_subject VARCHAR2 (1000);
v_pos NUMBER;
v_factuur_key fin_factuur.fin_factuur_key%TYPE;
BEGIN
errormsg := '(0x143)';
-- de mailberichten worden doorgestuurd vanuit de AAFM exchange omgeving. Hierbij
-- is het niet mogelijk de afzender te laten staan. Daarom wordt de afzender in het subject
-- van de mail geplaatst. Scheidingsteken in de ';'.
v_from := SUBSTR (psubject, 1, INSTR (psubject, ';') - 1);
v_subject := SUBSTR (psubject, INSTR (psubject, ';') + 1);
-- Verwijder de Bounce Address Tag Validation
IF v_from LIKE 'prvs=%'
THEN
v_from := SUBSTR (v_from, INSTR (v_from, '=', -1) + 1);
END IF;
v_body :=
v_from || ': ' || CHR (13) || CHR (10)
|| SUBSTR (
v_subject || CHR (13) || CHR (10)
|| REPLACE (SUBSTR (pbody, 1, 3900 - (LENGTH (v_subject) + 2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
3900); -- verwijder onnodige witregels
-- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from);
-- Valideer de sender in pfrom: kennen we deze?
SELECT MIN (prs_perslid_key), MIN (d.prs_kostenplaats_key)
INTO sender_key, kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_email) = UPPER (v_from);
IF sender_key IS NULL
THEN
sender_key := 11; -- prs_perslid_key onbekend mail adres.
SELECT d.prs_kostenplaats_key
INTO kostenplaats_key
FROM prs_perslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND prs_perslid_verwijder IS NULL
AND p.prs_perslid_key = sender_key;
END IF;
CASE
WHEN UPPER (pto) LIKE 'INVOICE@%'
THEN
INSERT INTO fin_factuur (fin_factuur_statuses_key,
fin_factuur_datum,
fin_factuur_totaal_btw,
fin_factuur_nr)
VALUES (3,
SYSDATE,
0,
' ')
RETURNING fin_factuur_key
INTO v_factuur_key;
-- vul het kenmerk voor de bijlage
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'FIN\F'
|| TO_CHAR (TRUNC (v_factuur_key / 1000), 'FM0000')
|| '___\F'
|| v_factuur_key
|| '\'
|| 21
|| '\');
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
THEN
errormsg := '(0x145)';
-- append (as a note?) to an existing melding if #key is found in the subject
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
-- hebben we een referentie naar een opdracht of naar een melding?
subject_regexp := '[[:digit:]]{3,}/[[:digit:]]*';
opdrnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
DBMS_OUTPUT.put_line ('opdrnum: ' || opdrnum);
IF opdrnum IS NOT NULL
THEN
opdrvolgnr :=
fac.safe_to_number (
SUBSTR (opdrnum, INSTR (opdrnum, '/') + 1));
DBMS_OUTPUT.put_line ('opdrvolgnr: ' || opdrvolgnr);
mldkey :=
fac.safe_to_number (
SUBSTR (opdrnum, 1, INSTR (opdrnum, '/') - 1));
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
ELSE
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
mldnum :=
REGEXP_SUBSTR (v_subject,
subject_regexp,
1,
1,
'i'); -- MA12345
srtdisc :=
REGEXP_SUBSTR (mldnum,
'[[:alpha:]]*',
1,
1,
'i'); -- MA
mldkey :=
fac.safe_to_number (SUBSTR (mldnum, LENGTH (srtdisc) + 1));
END IF;
DBMS_OUTPUT.put_line ('mldnum: ' || mldnum);
DBMS_OUTPUT.put_line ('srtdisc: ' || srtdisc);
DBMS_OUTPUT.put_line ('mldkey: ' || mldkey);
-- We eisen
-- - Goed meldingnummer
-- - Goede srtdiscipline
-- - Afzender is degene voor wie de melding was
-- suggested extensions: ook collega's toestaan?
SELECT MIN (mm.mld_stdmelding_key), MIN (prs_perslid_key_voor)
INTO stdmelding, melder_key
FROM mld_melding mm,
mld_stdmelding msm,
ins_tab_discipline insd,
ins_srtdiscipline isd
WHERE mm.mld_melding_key = mldkey
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key;
-- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet
-- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de
-- prefix letter
--AND isd.ins_srtdiscipline_prefix = srtdisc
--AND mm.prs_perslid_key_voor = sender; -- Mogen anderen ook reageren?
DBMS_OUTPUT.put_line (
'mld_stdmelding_key: ' || TO_CHAR (stdmelding));
-- kijk of de referentie naar de opdracht wel correct is:
IF opdrvolgnr IS NOT NULL
THEN
BEGIN
SELECT mld_opdr_key, mld_typeopdr_key
INTO opdrkey, typeopdrkey
FROM mld_opdr
WHERE mld_melding_key = mldkey
AND mld_opdr_bedrijfopdr_volgnr = opdrvolgnr;
EXCEPTION
WHEN OTHERS
THEN
opdrkey := NULL;
END;
END IF;
BEGIN
IF opdrkey IS NOT NULL
THEN
SELECT o.prs_perslid_key
INTO behandelaar_key
FROM mld_opdr o, prs_perslid p
WHERE o.mld_opdr_key = opdrkey
AND o.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
ELSE
SELECT mld_melding_behandelaar_key
INTO behandelaar_key
FROM mld_melding m, prs_perslid p
WHERE mld_melding_key = mldkey
AND mld_melding_behandelaar_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
END IF;
EXCEPTION
WHEN OTHERS
THEN
behandelaar_key := NULL;
END;
IF (stdmelding IS NOT NULL)
THEN -- Bestaande opdracht.
IF opdrkey IS NOT NULL
THEN
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_omschrijving,
prs_perslid_key)
VALUES (opdrkey, v_body, sender_key);
fac.trackaction ('ORDUPD',
opdrkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
ELSE
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (mldkey,
v_body,
sender_key,
DECODE (sender_key, melder_key, 1, 0)); -- 1 is zichtbaar FE want zelf ingevoerd.
fac.trackaction ('MLDNOT',
mldkey,
sender_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
DBMS_OUTPUT.put_line ('Notitie toegevoegd.');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Als notitie toegevoegd aan melding ' || mldkey);
IF behandelaar_key IS NOT NULL
THEN
-- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
behandelaar_key,
'MLDNOB',
mldkey,
'Melding ' || mldkey || ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
END IF;
END IF;
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
BEGIN
IF fac.getdbversion() >= 'DB36' -- DB36 forward compatible
THEN
IF fac.getsetting('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
WHERE mld_melding_key = v_mldkey;
END IF;
ELSE
v_flag_on_fenote := fac.getsetting ('mld_flag_on_fenote');
v_flag_on_bonote := fac.getsetting ('mld_flag_on_bonote');
IF v_flag_on_fenote <> 0 AND v_flag_on_fenote IS NOT NULL
THEN
UPDATE mld_melding
SET mld_melding_flag =
DECODE (opdrkey,
NULL, v_flag_on_fenote,
v_flag_on_bonote)
WHERE mld_melding_key = mldkey
AND ( (mld_melding_flag = v_flag_on_bonote)
OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL));
DBMS_OUTPUT.put_line ('Flag gezet.');
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|| v_flag_on_fenote
|| ' te zetten.');
END;
ELSE
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
errormsg := '(0x148)';
BEGIN
stdmelding :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
v_body,
NULL,
mld_t_uitvoertijd (2, 'D'),
stdmelding,
sender_key,
sender_key,
kostenplaats_key,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x165)';
mld.setmeldingstatus (mldkey, 2, sender_key);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || mldkey);
END;
END IF;
IF opdrkey IS NULL
THEN
-- Zoek het laagste bijlagen kenmerk key (AAEN#34590) om de bijlagen onder te stoppen
errormsg := '(0x151)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_stdmelding std,
ins_tab_discipline d
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = stdmelding
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key = stdmelding
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_key < k.mld_kenmerk_key);
errormsg := '(0x153)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M'
|| TO_CHAR (TRUNC (mldkey / 1000), 'FM0000')
|| '___\M'
|| mldkey
|| '\'
|| kkey
|| '\');
END IF;
ELSE
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
errormsg := '(0x152)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_typeopdr_key = typeopdrkey
AND k.mld_kenmerk_niveau = 'O'
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1, mld_srtkenmerk sk1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND k1.mld_typeopdr_key = typeopdrkey
AND k1.mld_kenmerk_niveau = 'O'
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer <
k.mld_kenmerk_volgnummer);
errormsg := '(0x154)';
IF kkey IS NOT NULL
THEN
-- DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
errormsg := '(0x157)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\O'
|| TO_CHAR (TRUNC (opdrkey / 1000), 'FM0000')
|| '___\O'
|| opdrkey
|| '\'
|| kkey
|| '\');
END IF;
END IF;
ELSE
errormsg := '(0x188)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
-- DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
|| errormsg);
fac.writelog (
'PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:'
|| v_from
|| '['
|| errormsg
|| ']'
|| psubject,
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
/
-- Klantoverzicht voor CRM-demo
CREATE OR REPLACE VIEW demo_v_rap_klantoverzicht
AS
SELECT prs_bedrijf_naam fclt_x_klant,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_bedrijf.asp?bedrijf_key='
|| prs_bedrijf_key
|| '&'
|| 'intern=1'
|| '")''>'
|| HTF.escape_sc (prs_bedrijf_naam)
|| '</a>'
html_klant,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid_search.asp?dis_key='
|| d.alg_district_key
|| '&'
|| 'autosearch=1'
|| '","Contactpersonen '
|| prs_bedrijf_naam
|| '")''>'
|| 'Contactpersonen'
|| '</a>'
html_contactpersonen,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/cnt/cnt_search.asp?urole=bo&'
|| 'comp_key='
|| prs_bedrijf_key
|| '&'
|| 'search=1'
|| '","Contracten '
|| prs_bedrijf_naam
|| '")''>'
|| 'Contracten'
|| '</a>'
html_contracten,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/mld/mld_search.asp?urole=fo&'
|| 'comp_key='
|| prs_bedrijf_key
|| '&'
|| 'autosearch=1'
|| '","Meldingen '
|| prs_bedrijf_naam
|| '")''>'
|| 'Meldingen'
|| '</a>'
html_meldingen,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/mld/mld_search.asp?urole=bo&'
|| 'districtkey='
|| d.alg_district_key
|| '&'
|| 'srtdisc=481&'
|| 'autosearch=1'
|| '","Taken '
|| prs_bedrijf_naam
|| '")''>'
|| 'Taken'
|| '</a>'
html_taken,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/mld/mld_melding.asp?urole=fe&'
|| 'loc_key='
|| MIN (l.alg_locatie_key)
|| '&'
|| 'srtdisc=481&'
|| '","Nieuwe taak '
|| prs_bedrijf_naam
|| '")''>'
|| 'Nieuwe taak'
|| '</a>'
html_nieuwe_taak
FROM prs_v_aanwezigbedrijf b, alg_district d, alg_locatie l
WHERE b.prs_bedrijf_huurder = 1
AND b.prs_bedrijf_intern = 1
AND d.alg_district_upper = b.prs_bedrijf_naam_upper
AND l.alg_district_key = d.alg_district_key
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam, d.alg_district_key;
/* Origineel - Pre-beurs 2019
CREATE OR REPLACE FORCE VIEW DEMO.DEMO_V_THEMA_DEEL_RES_PVH
(
INS_DEEL_KEY,
INS_ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT r.ins_deel_key,
ins_alg_ruimte_key,
DECODE (k.ins_kenmerkdeel_waarde,
NULL,
COALESCE (MIN (TRUNC (tijdvrij * 24 * 60) - 1), 999999),
1)
waarde -- MIN want perssimistisch
FROM (SELECT res_ins_deel_key ins_deel_key,
ins_alg_ruimte_key,
res_rsv_deel_van - SYSDATE tijdvrij
FROM res_v_aanwezigdeel r,
ins_deel d,
(SELECT res_deel_key, res_rsv_deel_van, res_rsv_deel_tot
FROM res_v_aanwezigrsv_deel rrd
WHERE SYSDATE BETWEEN TRUNC (res_rsv_deel_van)
AND res_rsv_deel_tot) blokkerend -- vandaag en nog niet afgelopen
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
AND d.ins_deel_key = r.res_ins_deel_key) r
LEFT OUTER JOIN
(SELECT ins_deel_key, ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = 1141
AND ins_kenmerkdeel_verwijder IS NULL) k
ON k.ins_deel_key = r.ins_deel_key
GROUP BY r.ins_deel_key, ins_alg_ruimte_key, k.ins_kenmerkdeel_waarde;
*/
CREATE OR REPLACE VIEW DEMO_V_THEMA_DEEL_RES_PVH
(
INS_DEEL_KEY,
INS_ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT r.ins_deel_key,
r.ins_alg_ruimte_key,
DECODE (r.status,
0,
COALESCE (MIN (TRUNC (r.tijdvrij * 24 * 60) - 1), 999999),
1)
waarde -- MIN want pessimistisch
FROM (SELECT r.res_ins_deel_key ins_deel_key,
d.ins_alg_ruimte_key,
blokkerend.res_rsv_deel_van - SYSDATE tijdvrij,
DECODE (INITCAP (d.ins_deel_state),
'0', -- Als de sensor uit is kijken we naar de reservering
DECODE (blokkerend.res_deel_key,
NULL,
0, -- Als er geen reservering loopt, dan is de status uit
1), -- Anders aan
1)
status
FROM res_v_aanwezigdeel r,
ins_deel d,
(SELECT res_deel_key, res_rsv_deel_van, res_rsv_deel_tot
FROM res_v_aanwezigrsv_deel
WHERE SYSDATE BETWEEN TRUNC (res_rsv_deel_van)
AND res_rsv_deel_tot) blokkerend -- Vandaag en nog niet afgelopen
WHERE r.res_ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_type = 'R'
AND r.res_deel_key = blokkerend.res_deel_key(+)) r
LEFT JOIN -- Waarom dit kenmerk en bezetting niet op basis van reservering?
(SELECT ins_deel_key, ins_kenmerkdeel_waarde
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 1141) k -- Bezet door
ON r.ins_deel_key = k.ins_deel_key
WHERE r.ins_deel_key IN (26486, 26506) -- LeftClick puck+slof!
GROUP BY r.ins_deel_key, ins_alg_ruimte_key, r.status
UNION ALL -- En dan de reserveerbare delen zonder sensor
SELECT r.ins_deel_key,
r.ins_alg_ruimte_key,
DECODE (k.ins_kenmerkdeel_waarde,
NULL,
COALESCE (MIN (TRUNC (r.tijdvrij * 24 * 60) - 1), 999999),
1)
waarde -- MIN want pessimistisch
FROM (SELECT r.res_ins_deel_key ins_deel_key,
d.ins_alg_ruimte_key,
blokkerend.res_rsv_deel_van - SYSDATE tijdvrij
FROM res_v_aanwezigdeel r,
ins_deel d,
(SELECT res_deel_key, res_rsv_deel_van, res_rsv_deel_tot
FROM res_v_aanwezigrsv_deel
WHERE SYSDATE BETWEEN TRUNC (res_rsv_deel_van)
AND res_rsv_deel_tot) blokkerend -- Vandaag en nog niet afgelopen
WHERE r.res_ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_type = 'R'
AND r.res_deel_key = blokkerend.res_deel_key(+)) r
LEFT JOIN -- Waarom dit kenmerk en bezetting niet op basis van reservering?
(SELECT ins_deel_key, ins_kenmerkdeel_waarde
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 1141) k -- Bezet door
ON r.ins_deel_key = k.ins_deel_key
WHERE r.ins_deel_key NOT IN (26486, 26506) -- LeftClick puck+slof!
GROUP BY r.ins_deel_key, r.ins_alg_ruimte_key, k.ins_kenmerkdeel_waarde;
BEGIN adm.systrackscriptId('$Id$'); END;
/
BEGIN fac.registercustversion('DEMO', 7); END;
/
COMMIT;
SPOOL OFF