8397 lines
350 KiB
MySQL
8397 lines
350 KiB
MySQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for DEMO
|
||
DEFINE thisfile = 'DEMO.SQL'
|
||
DEFINE dbuser = '^DEMO'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
|
||
|
||
------ payload begin ------
|
||
|
||
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;
|
||
/
|
||
|
||
-- Thema om airco's op de plattegrond te tonen bij het invoeren van een melding
|
||
|
||
CREATE OR REPLACE VIEW demo_v_thema_equipm
|
||
(
|
||
ins_deel_key,
|
||
alg_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
alg_ruimte_key,
|
||
DECODE ((SELECT COUNT (*)
|
||
FROM mld_melding m, mld_melding_object mo
|
||
WHERE m.mld_melding_key = mo.mld_melding_key
|
||
AND mo.ins_deel_key = d.ins_deel_key
|
||
AND mld_melding_status IN (0, -- Bij frontoffice
|
||
2, -- Nieuw
|
||
3, -- Te accepteren
|
||
4, -- In behandeling
|
||
7, -- Uitgegeven
|
||
99)), -- Niet opgelost
|
||
0, 'Normaal',
|
||
'Defect') ins_status
|
||
FROM ins_v_deel_gegevens d
|
||
WHERE ins_srtdeel_upper = 'AIRCO';
|
||
|
||
|
||
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);
|
||
|
||
-- Maakt afspraak met bezoekers aan, indien nodig
|
||
PROCEDURE setBezoekers(p_import_key IN NUMBER,
|
||
p_appt_id IN VARCHAR2,
|
||
p_recur_id IN VARCHAR2,
|
||
p_rsv_ruimte_key IN NUMBER);
|
||
|
||
-- Haalt bestaande afspraak bij rsv_ruimte op, of maakt een nieuwe
|
||
FUNCTION getAfspraak (p_rsv_ruimte_key IN NUMBER,
|
||
p_createnew IN NUMBER)
|
||
RETURN NUMBER;
|
||
|
||
-- Update of insert bezoeker met de juiste voorwaarden
|
||
PROCEDURE upsertBezoeker (p_import_key IN NUMBER,
|
||
p_afspraak_key IN NUMBER,
|
||
p_bezoekers_key IN NUMBER,
|
||
p_att_mail IN VARCHAR2,
|
||
p_att_name IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_afdeling_naam IN VARCHAR2);
|
||
|
||
PROCEDURE upsertkenmerk_bez (p_kenmerk_key IN NUMBER,
|
||
p_bez_key IN NUMBER,
|
||
p_waarde IN VARCHAR2);
|
||
|
||
PROCEDURE upsertkenmerk_res(p_kenmerk_key IN NUMBER,
|
||
p_rsv_ruimte_key IN NUMBER,
|
||
p_waarde IN VARCHAR2);
|
||
FUNCTION getOpstelling(p_room_id IN VARCHAR2)
|
||
RETURN NUMBER;
|
||
|
||
PROCEDURE checkParking(p_bezoekers_key IN NUMBER);
|
||
|
||
PROCEDURE set_ruimtes_clean(p_import_key IN NUMBER);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY demo
|
||
AS
|
||
-- Zorg dat de bezoekers bij de deelreservering matchen met de genodigden bij de appointment
|
||
-- - host niet toevoegen als bezoeker
|
||
-- - AMB-en SSCA-medewerkers met een badgenummer alleen in een genodigdenlijst
|
||
-- Afspraak aanmaken of verwijderen indien nodig
|
||
-- Bezoekers aanmaken, bijwerken of verwijderen zoals nodig
|
||
-- Als vergaderruimte op kantoorverdieping (OF-ruimte), dan geen bezoekers (alleen genodigdenlijst),
|
||
-- noch voorzieningen
|
||
-- - OF = res_disc 1485 "Vergaderruimtes nw A'dam"
|
||
-- - EXCO = res_disc 1505 "Vergaderzalen 9de PA's"
|
||
-- - MC = res_disc 1445 "Vergaderzalen NW Amsterdam"
|
||
-- TODO: nu worden voor appointments met meerdere zalen waarschijnlijk de attendees bij iedere
|
||
-- deelreservering toegevoegd.
|
||
-- KFSG#57950: Voor Schiphol geldt (voor enige locatie/catalogus/activiteit) alleen externen als
|
||
-- bezoeker (en eigen medewerkers in Genodigden-kenmerk?).
|
||
PROCEDURE setBezoekers(p_import_key IN NUMBER,
|
||
p_appt_id IN VARCHAR2,
|
||
p_recur_id IN VARCHAR2,
|
||
p_rsv_ruimte_key IN NUMBER)
|
||
IS
|
||
v_debug BOOLEAN := TRUE;
|
||
v_count NUMBER (10);
|
||
c_km_key_genodigden NUMBER (10) := 181;
|
||
|
||
v_genodigden VARCHAR2 (4000);
|
||
v_afspraak_key NUMBER (10);
|
||
v_datum_old DATE;
|
||
v_eind_old DATE;
|
||
v_datum_new DATE;
|
||
v_eind_new DATE;
|
||
v_discipline_key NUMBER (10) := NULL;
|
||
|
||
-- Alle bezoekers bij deze rsv_ruimte, die niet meer in het importbestand zitten
|
||
-- AKZA#38972: zorgen dat personen die als bezoeker aangemeld waren, maar nu 'slechts' genodigde zijn, ook verwijderd worden
|
||
-- En als we toch bezig zijn: ruimtes kunnen geen bezoekers meer zijn; ook die weggooien dus.
|
||
CURSOR c_del
|
||
IS
|
||
-- Niet meer in de import
|
||
SELECT a.res_rsv_ruimte_key,
|
||
kw.bez_kenmerkwaarde_waarde bez_email,
|
||
b.*
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kw
|
||
WHERE a.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1120 -- E-mailadres Exchange
|
||
AND kw.bez_kenmerkwaarde_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM demo_imp_exchange
|
||
WHERE UPPER(att_mail) = UPPER(kw.bez_kenmerkwaarde_waarde) )
|
||
UNION ALL
|
||
-- Naam al aanwezig in lijst van genodigden
|
||
SELECT a.res_rsv_ruimte_key,
|
||
kw.bez_kenmerkwaarde_waarde bez_email,
|
||
b.*
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kw,
|
||
res_kenmerkwaarde rkw
|
||
WHERE a.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1120 -- E-mailadres Exchange
|
||
AND kw.bez_kenmerkwaarde_verwijder IS NULL
|
||
AND rkw.res_kenmerk_key = c_km_key_genodigden
|
||
AND rkw.res_kenmerkwaarde_verwijder IS NULL
|
||
AND rkw.res_rsv_ruimte_key = a.res_rsv_ruimte_key
|
||
AND rkw.res_kenmerkreservering_waarde LIKE '%'||b.bez_afspraak_naam||'%'
|
||
UNION ALL
|
||
-- Mailadres bekend als extern ID van ruimte
|
||
SELECT a.res_rsv_ruimte_key,
|
||
kw.bez_kenmerkwaarde_waarde bez_email,
|
||
b.*
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kw
|
||
WHERE a.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1120 -- E-mailadres Exchange
|
||
AND kw.bez_kenmerkwaarde_verwijder IS NULL
|
||
AND EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(kw.bez_kenmerkwaarde_waarde));
|
||
|
||
-- Voor iedere persoon kijken of dit een bekende AN-medewerker is en op welke locatie
|
||
-- Als mailadres deelnemer == mailadres organizer, dan negeren
|
||
-- Group by, zodat we voor mensen op AMB/SSCA (en AHO) alleen die werkplek overhouden (overige locaties leveren NULL)
|
||
-- AKZA#38968: ook badgenummer ophalen
|
||
CURSOR c_attendees
|
||
IS
|
||
SELECT att_mail,
|
||
COALESCE(prs_perslid_naam_full, att_name) att_name,
|
||
prs_perslid_key,
|
||
prs_afdeling_naam,
|
||
MAX(alg_locatie_key) alg_locatie_key,
|
||
MAX(alg_locatie_code) alg_locatie_code,
|
||
--badgenr,
|
||
bez_bezoekers_key
|
||
FROM (
|
||
SELECT DISTINCT att_mail, att_name
|
||
FROM demo_imp_exchange
|
||
WHERE appt_id||'|'||recur_id = p_appt_id||'|'||p_recur_id
|
||
AND att_mail != organizer
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(att_mail) ) ) e
|
||
LEFT OUTER JOIN (
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_email,
|
||
pf.prs_perslid_naam_full,
|
||
--kl.prs_kenmerklink_waarde badgenr
|
||
a.prs_afdeling_naam,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_code
|
||
FROM prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
--(SELECT * FROM prs_kenmerklink
|
||
-- WHERE prs_kenmerk_key = -1 -- Badgenummer (van medewerker)
|
||
-- AND prs_kenmerklink_niveau = 'P'
|
||
-- AND prs_kenmerklink_verwijder IS NULL) kl,
|
||
prs_afdeling a,
|
||
prs_perslidwerkplek pw,
|
||
prs_werkplek w,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
(SELECT * FROM alg_locatie
|
||
WHERE alg_locatie_key = 41) l -- SHG - Schipholgebouw
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
--AND kl.prs_link_key(+) = p.prs_perslid_key
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key
|
||
AND pw.prs_perslid_key = p.prs_perslid_key
|
||
AND w.prs_werkplek_key = pw.prs_werkplek_key
|
||
AND r.alg_ruimte_key = w.prs_alg_ruimte_key
|
||
AND r.alg_ruimte_verwijder IS NULL
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND l.alg_locatie_key(+) = g.alg_locatie_key) p
|
||
ON UPPER(p.prs_perslid_email) = UPPER(att_mail)
|
||
LEFT OUTER JOIN (
|
||
SELECT b.bez_bezoekers_key,
|
||
kw.bez_kenmerkwaarde_waarde email
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
bez_kenmerkwaarde kw
|
||
WHERE a.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND b.bez_afspraak_key = a.bez_afspraak_key
|
||
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
||
AND kw.bez_kenmerk_key = 1120 -- E-mailadres Exchange
|
||
AND kw.bez_kenmerkwaarde_verwijder IS NULL) b
|
||
ON UPPER(b.email) = UPPER(att_mail)
|
||
GROUP BY att_mail,
|
||
att_name,
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_afdeling_naam,
|
||
--badgenr,
|
||
bez_bezoekers_key;
|
||
|
||
BEGIN
|
||
v_genodigden := NULL;
|
||
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM demo_imp_exchange
|
||
WHERE appt_id||'|'||recur_id = p_appt_id||'|'||p_recur_id
|
||
AND att_mail != organizer;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'Geen gasten');
|
||
END IF;
|
||
-- Lijst genodigden wissen
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_kenmerk_key = c_km_key_genodigden
|
||
AND res_rsv_ruimte_key = p_rsv_ruimte_key;
|
||
-- Afspraak wissen
|
||
v_afspraak_key := demo.getAfspraak(p_rsv_ruimte_key, 0);
|
||
IF v_afspraak_key IS NOT NULL
|
||
THEN
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'Afspraak verwijderen');
|
||
END IF;
|
||
DELETE bez_afspraak
|
||
WHERE bez_afspraak_key = v_afspraak_key;
|
||
END IF;
|
||
ELSE
|
||
-- Niet-meer bekende attendees verwijderen
|
||
FOR rec IN c_del
|
||
LOOP
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'Bezoeker '||rec.bez_email||' verwijderen');
|
||
END IF;
|
||
DELETE bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = rec.bez_bezoekers_key;
|
||
|
||
DELETE bez_bezoekers
|
||
WHERE bez_bezoekers_key = rec.bez_bezoekers_key;
|
||
END LOOP;
|
||
|
||
FOR rec IN c_attendees
|
||
LOOP
|
||
-- Bepalen om wat voor soort ruimte het gaat (OF vs MC/EXCO)
|
||
IF (v_discipline_key IS NULL)
|
||
THEN
|
||
SELECT r.res_discipline_key
|
||
INTO v_discipline_key
|
||
FROM res_ruimte r,
|
||
res_ruimte_opstelling ro,
|
||
res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key;
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'Discipline = '||v_discipline_key);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- AMB- of SSCA-medewerker: alleen in tekstveld zetten
|
||
-- (Zowel bij create als update hele string weer opbouwen)
|
||
-- Voor OF-ruimtes (res_disc 1485) behandelen we iedereen als AMB-/SSCA-medewerker
|
||
-- AKZA#38968: badgenummer is voortaan vereist om genodigde te zijn
|
||
-- AKZA#40274: bepaling van bezoekers/deelnemers voor ruimtes uit disc 1485 op dezelfde wijze als andere ruimtes / op verzoek van Andr<64> weer ongedaan gemaakt
|
||
-- KFSG#57950: Bovenstaande nog even laten staan. Voor Schiphol geldt dat medewerkers (@schiphol in e-mail adres) in Genodigden-veld komen.
|
||
-- TODO: Of Genodigden-veld helemaal weg???
|
||
--IF (rec.alg_locatie_key IS NOT NULL AND rec.badgenr IS NOT NULL)
|
||
IF (rec.alg_locatie_key IS NOT NULL AND INSTR (UPPER (rec.att_mail), '@SCHIPHOL.NL') > 0)
|
||
THEN
|
||
v_genodigden := v_genodigden || rec.att_name || CHR(13);
|
||
-- Overige AN-medewerkers en gasten aanmelden als bezoeker (of registratie bijwerken)
|
||
ELSE
|
||
-- Er zijn niet-AMB-/SSCA-medewerker attendees, zorgen dat er een afspraak is
|
||
IF (v_afspraak_key IS NULL)
|
||
THEN
|
||
v_afspraak_key := demo.getAfspraak(p_rsv_ruimte_key, 1);
|
||
|
||
-- Moet de afspraak verplaatst worden in de tijd?
|
||
SELECT bez_afspraak_datum,
|
||
bez_afspraak_eind,
|
||
rr.res_rsv_ruimte_van,
|
||
rr.res_rsv_ruimte_tot
|
||
INTO v_datum_old, v_eind_old, v_datum_new, v_eind_new
|
||
FROM res_rsv_ruimte rr,
|
||
bez_afspraak a
|
||
WHERE rr.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND a.res_rsv_ruimte_key = rr.res_rsv_ruimte_key;
|
||
|
||
IF (v_datum_old != v_datum_new OR v_eind_old != v_eind_new)
|
||
THEN
|
||
UPDATE bez_afspraak
|
||
SET bez_afspraak_datum = v_datum_new,
|
||
bez_afspraak_eind = v_eind_new
|
||
WHERE bez_afspraak_key = v_afspraak_key;
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key||', AFSPRAAK '||v_afspraak_key,
|
||
'Tijden aangepast van '
|
||
||TO_CHAR(v_datum_old,'HH24:MI')||'-'
|
||
||TO_CHAR(v_eind_old, 'HH24:MI')||' --> '
|
||
||TO_CHAR(v_datum_new,'HH24:MI')||'-'
|
||
||TO_CHAR(v_eind_new, 'HH24:MI') );
|
||
END IF;
|
||
END IF;
|
||
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'AFSPRAAK '||v_afspraak_key);
|
||
END IF;
|
||
END IF;
|
||
demo.upsertBezoeker(p_import_key, v_afspraak_key, rec.bez_bezoekers_key, rec.att_mail, rec.att_name, rec.prs_perslid_key, rec.prs_afdeling_naam );
|
||
END IF;
|
||
|
||
-- Opruiming: afspraken zonder bezoekers (kan gebeuren als er alleen nog interne deelnemers zijn,
|
||
-- of de meeting is verplaatst naar een OF-ruimte)
|
||
DELETE bez_afspraak a
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND NOT EXISTS (SELECT 1 FROM bez_bezoekers WHERE bez_afspraak_key = a.bez_afspraak_key);
|
||
END LOOP;
|
||
|
||
IF (v_debug AND v_discipline_key IS NOT NULL) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, 'Ruimte-catalogus = '||v_discipline_key);
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_rsv_ruimte_key, SUBSTR('GENODIGDEN: '||CHR(13) ||v_genodigden, 1, 1000) );
|
||
END IF;
|
||
demo.upsertkenmerk_res(c_km_key_genodigden, p_rsv_ruimte_key, v_genodigden );
|
||
END IF;
|
||
|
||
END;
|
||
|
||
-- Haalt bestaande afspraak bij rsv_ruimte op, of maakt een nieuwe
|
||
FUNCTION getAfspraak (p_rsv_ruimte_key IN NUMBER,
|
||
p_createnew IN NUMBER)
|
||
RETURN NUMBER
|
||
IS
|
||
v_count NUMBER;
|
||
r_afspraak_key NUMBER;
|
||
BEGIN
|
||
r_afspraak_key := NULL;
|
||
|
||
--Bestaat er al een afspraak?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM bez_afspraak
|
||
WHERE res_rsv_ruimte_key IS NOT NULL
|
||
AND res_rsv_ruimte_key = p_rsv_ruimte_key;
|
||
|
||
-- Nee, maak eerst een nieuwe, mits createnew = 1
|
||
IF (v_count = 0 AND p_createnew = 1)
|
||
THEN
|
||
INSERT INTO bez_afspraak (
|
||
prs_perslid_key,
|
||
bez_afspraak_datum,
|
||
bez_actie_key,
|
||
bez_afspraak_ruimte,
|
||
bez_afspraak_opmerking,
|
||
bez_afspraak_eind,
|
||
alg_locatie_key,
|
||
alg_onrgoed_keys,
|
||
bez_afspraak_host_key,
|
||
bez_afspraak_contact_key,
|
||
res_rsv_ruimte_key)
|
||
SELECT rr.res_rsv_ruimte_contact_key,
|
||
rr.res_rsv_ruimte_van,
|
||
NULL,
|
||
SUBSTR (r.res_ruimte_nr, 1, 30),
|
||
SUBSTR ('Overgenomen uit Exchange', 1, 320),
|
||
rr.res_rsv_ruimte_tot,
|
||
g.alg_locatie_key,
|
||
MIN(rar.alg_ruimte_key),
|
||
rr.res_rsv_ruimte_host_key,
|
||
rr.res_rsv_ruimte_contact_key,
|
||
rr.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r,
|
||
res_alg_ruimte rar,
|
||
alg_v_aanwezigruimte ar,
|
||
alg_verdieping v,
|
||
alg_gebouw g
|
||
WHERE rr.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND rar.res_ruimte_key = r.res_ruimte_key
|
||
AND rar.res_alg_ruimte_verwijder IS NULL
|
||
AND ar.alg_ruimte_key = rar.alg_ruimte_key
|
||
AND v.alg_verdieping_key = ar.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
GROUP BY rr.res_rsv_ruimte_contact_key, rr.res_rsv_ruimte_van, r.res_ruimte_nr,
|
||
rr.res_rsv_ruimte_tot, g.alg_locatie_key, rr.res_rsv_ruimte_host_key,
|
||
rr.res_rsv_ruimte_contact_key, rr.res_rsv_ruimte_key;
|
||
|
||
-- TODO:
|
||
-- BEGIN fac.trackaction('BEZMUT', -1, 3, NULL, NULL); END;
|
||
END IF;
|
||
|
||
-- Haal bestaande / nieuwe key op (RETURNING kan niet met een INSERT .. SELECT)
|
||
-- (alleen als we er net een hebben aangemaakt of er al een was
|
||
IF NOT (v_count = 0 AND p_createnew = 0)
|
||
THEN
|
||
SELECT bez_afspraak_key
|
||
INTO r_afspraak_key
|
||
FROM bez_afspraak
|
||
WHERE res_rsv_ruimte_key IS NOT NULL
|
||
AND res_rsv_ruimte_key = p_rsv_ruimte_key;
|
||
END IF;
|
||
|
||
RETURN r_afspraak_key;
|
||
|
||
END;
|
||
|
||
PROCEDURE upsertBezoeker (p_import_key IN NUMBER,
|
||
p_afspraak_key IN NUMBER,
|
||
p_bezoekers_key IN NUMBER,
|
||
p_att_mail IN VARCHAR2,
|
||
p_att_name IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_afdeling_naam IN VARCHAR2)
|
||
IS
|
||
v_debug BOOLEAN := TRUE;
|
||
v_bez_flags NUMBER (10);
|
||
v_bezoekers_key NUMBER (10);
|
||
v_count NUMBER;
|
||
BEGIN
|
||
v_bez_flags := 0;
|
||
|
||
-- AN-medewerkers op overige locaties:
|
||
-- aanmelden als bezoeker (met perslid_key, als bekend), zonder (mogelijkheid tot) parkeerplaats
|
||
-- flags (AKZA#34209)
|
||
-- 2: andere locatie
|
||
-- 16: geen parkeerplaats mogelijk
|
||
IF (UPPER(p_att_mail) LIKE '%@SCHIPHOL.NL')
|
||
THEN
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_afspraak_key, 'SG-mw '||p_att_name|| ' ('||COALESCE(TO_CHAR(p_perslid_key), p_att_mail)||')');
|
||
END IF;
|
||
v_bez_flags := 2 + 16;
|
||
|
||
-- Gasten: aanmelden als gewone bezoeker (zonder perslid_key), met parkeerplaats
|
||
-- flags = 0
|
||
ELSE
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
p_afspraak_key, 'Gast '||p_att_name|| ' ('||p_att_mail||')');
|
||
END IF;
|
||
v_bez_flags := 0;
|
||
END IF;
|
||
|
||
-- Bestaat bezoeker al bij deelreservering? Dan alleen basisgegevens bijwerken
|
||
IF (p_bezoekers_key IS NOT NULL)
|
||
THEN
|
||
-- Bijwerken
|
||
UPDATE bez_bezoekers
|
||
SET prs_perslid_key = p_perslid_key,
|
||
bez_afspraak_naam = SUBSTR(p_att_name, 1, 30),
|
||
bez_afspraak_bedrijf = SUBSTR(p_afdeling_naam, 1, 60),
|
||
bez_bezoekers_flags = v_bez_flags
|
||
WHERE bez_bezoekers_key = p_bezoekers_key;
|
||
|
||
-- Als deze bezoeker een parkeerplaats heeft, probeer dan een nieuwe te claimen
|
||
-- alg_gebouw "SHG" 48
|
||
IF ( bez.hasparking(p_bezoekers_key) = 1)
|
||
THEN
|
||
DELETE FROM res_rsv_deel
|
||
WHERE bez_bezoekers_key = p_bezoekers_key;
|
||
IF ( BITAND(v_bez_flags, 16) = 0)
|
||
THEN
|
||
bez.claim_parking(p_bezoekers_key, 48);
|
||
END IF;
|
||
-- TODO: track?
|
||
END IF;
|
||
|
||
-- Nieuwe bezoeker: toevoegen, plus parkeerplaats en mailadres
|
||
ELSE
|
||
INSERT INTO bez_bezoekers (
|
||
bez_afspraak_key,
|
||
prs_perslid_key,
|
||
bez_afspraak_naam,
|
||
bez_afspraak_bedrijf,
|
||
bez_bezoekers_flags)
|
||
VALUES (
|
||
p_afspraak_key,
|
||
p_perslid_key,
|
||
SUBSTR(p_att_name, 1, 30),
|
||
SUBSTR(p_afdeling_naam, 1, 60),
|
||
v_bez_flags)
|
||
RETURNING bez_bezoekers_key INTO v_bezoekers_key;
|
||
|
||
-- Voor nieuwe gasten een parkeerplek claimen
|
||
-- alg_gebouw "SHG" 48
|
||
IF ( BITAND(v_bez_flags, 16) = 0)
|
||
THEN
|
||
bez.claim_parking(v_bezoekers_key, 48);
|
||
END IF;
|
||
|
||
-- Mailadres opslaan
|
||
-- bez_kenmerk E-mail 1120
|
||
demo.upsertkenmerk_bez(1120, v_bezoekers_key, p_att_mail);
|
||
END IF;
|
||
|
||
-- TODO: tracking; liefst geen aparte regel per bezoeker
|
||
-- fac.trackaction('BEZMUT', p_afspraak_key, NULL, NULL, 'Bezoeker '||p_att_name||' toegevoegd/gewijzigd');
|
||
END;
|
||
|
||
PROCEDURE upsertkenmerk_bez (p_kenmerk_key IN NUMBER,
|
||
p_bez_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
IS
|
||
v_count NUMBER;
|
||
BEGIN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_bez_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_waarde IS NULL
|
||
THEN
|
||
DELETE bez_kenmerkwaarde
|
||
WHERE bez_bezoekers_key = p_bez_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE bez_kenmerkwaarde
|
||
SET bez_kenmerkwaarde_waarde = p_waarde
|
||
WHERE bez_bezoekers_key = p_bez_key
|
||
AND bez_kenmerk_key = p_kenmerk_key
|
||
AND bez_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
|
||
bez_bezoekers_key,
|
||
bez_kenmerkwaarde_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_bez_key,
|
||
p_waarde);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
PROCEDURE upsertkenmerk_res(p_kenmerk_key IN NUMBER,
|
||
p_rsv_ruimte_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
IS
|
||
v_count NUMBER;
|
||
BEGIN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_waarde IS NULL
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_waarde
|
||
WHERE res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_rsv_ruimte_key,
|
||
p_waarde);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
-- Zoek de default (of anders oudste) opstelling bij de ruimte obv room-id
|
||
FUNCTION getOpstelling(p_room_id IN VARCHAR2)
|
||
RETURN NUMBER
|
||
IS
|
||
v_ruimte_opstel_key NUMBER (10);
|
||
BEGIN
|
||
v_ruimte_opstel_key := NULL;
|
||
|
||
SELECT COALESCE(ro1.res_ruimte_opstel_key, ro2.res_ruimte_opstel_key) res_ruimte_opstel_key
|
||
INTO v_ruimte_opstel_key
|
||
FROM res_ruimte r,
|
||
(SELECT * FROM res_ruimte_opstelling
|
||
WHERE res_ruimte_opstel_verwijder IS NULL
|
||
AND res_ruimte_opstel_default = 1) ro1,
|
||
(SELECT * FROM res_ruimte_opstelling
|
||
WHERE res_ruimte_opstel_verwijder IS NULL) ro2
|
||
WHERE r.res_ruimte_extern_id = p_room_id
|
||
AND r.res_ruimte_verwijder IS NULL
|
||
AND COALESCE(r.res_ruimte_vervaldatum, SYSDATE+1) > SYSDATE
|
||
AND ro1.res_ruimte_key(+) = r.res_ruimte_key
|
||
AND ro2.res_ruimte_key = r.res_ruimte_key
|
||
AND ro2.res_ruimte_opstel_key = (SELECT MIN(res_ruimte_opstel_key)
|
||
FROM res_ruimte_opstelling
|
||
WHERE res_ruimte_opstel_verwijder IS NULL
|
||
AND res_ruimte_key = r.res_ruimte_key);
|
||
|
||
RETURN v_ruimte_opstel_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN NULL;
|
||
END;
|
||
|
||
-- Aangeroepen vanuit bez_postsave hook. Controleert of deze bezoeker wel een parkeerplaats
|
||
-- mag hebben (obv bez_bezoekers_flags) en verwijdert zonodig
|
||
PROCEDURE checkParking(p_bezoekers_key IN NUMBER)
|
||
IS
|
||
v_bez_flags bez_bezoekers.bez_bezoekers_flags%TYPE;
|
||
v_rsv_deel_key NUMBER (10);
|
||
BEGIN
|
||
-- Haal bezoeker-flags op, en een eventuele
|
||
SELECT b.bez_bezoekers_flags, rd.res_rsv_deel_key
|
||
INTO v_bez_flags, v_rsv_deel_key
|
||
FROM bez_bezoekers b,
|
||
(SELECT * FROM res_rsv_deel
|
||
WHERE res_rsv_deel_verwijder IS NULL) rd
|
||
WHERE b.bez_bezoekers_key = p_bezoekers_key
|
||
AND rd.bez_bezoekers_key(+) = b.bez_bezoekers_key;
|
||
|
||
-- Bezoeker mag geen parkeerplaats, maar heeft er wel een --> weg ermee!
|
||
-- bits: +1 Medewerker uit eigen locatie, is waarschijnlijk al binnen
|
||
-- +2 Medewerker van andere locatie (heeft doorgaans bedrijfspasje)
|
||
-- +4 Deelnemer die niet fysiek komt (Skype/Video conference)
|
||
-- +8 Bezoekers meldt zich niet aan de balie (waarschijnlijk bij een +1/2/4)
|
||
-- +16 Geen parkeerplaats toe (te) kennen of af te pakken (vaak icm. +1/2/4)
|
||
IF ( BITAND(v_bez_flags, 31) != 0 AND v_rsv_deel_key IS NOT NULL)
|
||
THEN
|
||
DELETE res_rsv_deel
|
||
WHERE res_rsv_deel_key = v_rsv_deel_key;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
END;
|
||
|
||
-- Welbeschouwd kunnen door de Exchange-constraints ruimte reserveringen nooit overlappen
|
||
-- Als er in FACILITOR toch een overlap is ontstaan is dat eigenlijk een gebrek van
|
||
-- de synchronisatie procedure
|
||
-- Daarom veronderstellen wij dat toch degene die dirty was geworden de waarheid is
|
||
-- en de 'andere' dirty had moeten worden of sterker nog: we verwijderen de andere
|
||
PROCEDURE set_ruimtes_clean(p_import_key IN NUMBER)
|
||
IS
|
||
dirtlevel res_rsv_ruimte.res_rsv_ruimte_dirtlevel%TYPE;
|
||
v_errorhint VARCHAR2 (1000);
|
||
|
||
CURSOR c_prsv_ruimte_new
|
||
IS
|
||
SELECT rr.res_rsv_ruimte_key,
|
||
r.res_ruimte_key,
|
||
res_rsv_ruimte_van,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr
|
||
FROM res_ruimte r, res_ruimte_opstelling ro, res_rsv_ruimte rr
|
||
WHERE ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND res_rsv_ruimte_dirtlevel = 512 -- alleen ruimteoverlap corrigeren we
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
AND res_ruimte_extern_id IS NOT NULL
|
||
AND res_rsv_ruimte_van > TRUNC (SYSDATE)
|
||
ORDER BY res_rsv_ruimte_key DESC
|
||
FOR UPDATE OF res_rsv_ruimte_dirtlevel;
|
||
BEGIN
|
||
FOR prsv_ruimte_new IN c_prsv_ruimte_new
|
||
LOOP
|
||
-- Wij in ieder geval niet meer dirty
|
||
v_errorhint := 'Cleanup reservering '
|
||
|| TO_CHAR(prsv_ruimte_new.res_reservering_key) || '/' || prsv_ruimte_new.res_rsv_ruimte_volgnr
|
||
|| ' (' || TO_CHAR(prsv_ruimte_new.res_rsv_ruimte_key) || ')';
|
||
|
||
fac.imp_writelog (p_import_key, 'I', v_errorhint, '');
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_rsv_ruimte_dirtlevel = 0
|
||
WHERE CURRENT OF c_prsv_ruimte_new; -- geen tracking
|
||
|
||
-- Controleer alle andere reserveringen op die dag in die zaal om te weten welke
|
||
-- ons dirty had gemaakt
|
||
FOR prsv_ruimte_old
|
||
IN (SELECT rr.res_rsv_ruimte_key,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_ruimte_tot,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr
|
||
FROM res_ruimte r, res_ruimte_opstelling ro, res_rsv_ruimte rr
|
||
WHERE r.res_ruimte_key = prsv_ruimte_new.res_ruimte_key
|
||
AND rr.res_rsv_ruimte_key <> prsv_ruimte_new.res_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND BITAND(res_rsv_ruimte_dirtlevel, 512) = 0
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
AND res_rsv_ruimte_van BETWEEN TRUNC(prsv_ruimte_new.res_rsv_ruimte_van)
|
||
AND TRUNC(prsv_ruimte_new.res_rsv_ruimte_van) + 1)
|
||
LOOP
|
||
-- Degene die met ons overlapte zal dirty worden nu wij vrij zijn
|
||
v_errorhint := 'Checking reservering '
|
||
|| TO_CHAR(prsv_ruimte_old.res_reservering_key) || '/' || prsv_ruimte_old.res_rsv_ruimte_volgnr
|
||
|| ' (' || TO_CHAR(prsv_ruimte_old.res_rsv_ruimte_key) || ')';
|
||
|
||
fac.imp_writelog (p_import_key, 'D', v_errorhint, '');
|
||
res.set_ruimte_dirty (prsv_ruimte_old.res_rsv_ruimte_key); -- deze houdt rekening met schoonmaaak
|
||
|
||
SELECT res_rsv_ruimte_dirtlevel
|
||
INTO dirtlevel
|
||
FROM res_rsv_ruimte
|
||
WHERE res_rsv_ruimte_key = prsv_ruimte_old.res_rsv_ruimte_key;
|
||
|
||
IF BITAND(dirtlevel, 512) <> 0
|
||
THEN
|
||
v_errorhint := 'Remove dirty reservering '
|
||
|| TO_CHAR(prsv_ruimte_old.res_reservering_key) || '/' || prsv_ruimte_old.res_rsv_ruimte_volgnr
|
||
|| ' (' || TO_CHAR(prsv_ruimte_old.res_rsv_ruimte_key);
|
||
fac.imp_writelog (p_import_key, 'I', v_errorhint, '');
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_fo_key = 1, -- nooit doorbelasten
|
||
res_rsv_ruimte_verwijder = SYSDATE
|
||
WHERE res_rsv_ruimte_key = prsv_ruimte_old.res_rsv_ruimte_key;
|
||
|
||
fac.trackaction ('RESDEL', prsv_ruimte_old.res_rsv_ruimte_key, NULL, SYSDATE, NULL);
|
||
|
||
res.set_ruimtes_clean (prsv_ruimte_old.res_rsv_ruimte_van); -- onwaarschijnlijk
|
||
res.follow_artikel (prsv_ruimte_old.res_rsv_ruimte_key,
|
||
prsv_ruimte_old.res_rsv_ruimte_van,
|
||
prsv_ruimte_old.res_rsv_ruimte_tot);
|
||
res.follow_deel (prsv_ruimte_old.res_rsv_ruimte_key,
|
||
prsv_ruimte_old.res_rsv_ruimte_van,
|
||
prsv_ruimte_old.res_rsv_ruimte_tot);
|
||
|
||
v_errorhint := 'res_reservering verwijderen';
|
||
|
||
UPDATE res_reservering
|
||
SET res_reservering_verwijder = SYSDATE
|
||
WHERE res_reservering_key = prsv_ruimte_old.res_reservering_key
|
||
AND NOT EXISTS
|
||
(SELECT *
|
||
FROM res_v_aanwezigrsv_ruimte
|
||
WHERE res_reservering_key = prsv_ruimte_old.res_reservering_key);
|
||
END IF;
|
||
END LOOP;
|
||
END LOOP;
|
||
END;
|
||
|
||
|
||
|
||
|
||
|
||
-- 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;
|
||
/
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------
|
||
------------------------------- IMPORT -----------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------
|
||
|
||
-- Met behulp van demo_imp_exchange.gelukt kunnen importregels bewaard worden, zodat mutaties
|
||
-- aan appointments die gefaald zijn, alsnog kunnen worden doorgevoerd. Betekenis waarden 'gelukt':
|
||
-- NULL = niet correct verwerkt in vorige import --> nogmaals proberen
|
||
-- 1 = succesvol verwerkt in vorige import --> importregel verwijderen
|
||
-- 2 = er is in een latere import een nieuwere status van dezelfde appointment ingelezen,
|
||
-- dus deze importregel is outdated --> regel verwijderen
|
||
CREATE OR REPLACE PROCEDURE demo_import_exchange (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
c_max_errors NUMBER := 100;
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_import_filenaam fac_import.fac_import_filenaam%TYPE;
|
||
v_ruimte_id res_ruimte.res_ruimte_extern_id%TYPE;
|
||
|
||
-- De importvelden:
|
||
v_room_id VARCHAR2 (200);
|
||
v_subject VARCHAR2 (200);
|
||
v_starttime VARCHAR2 (100);
|
||
v_endtime VARCHAR2 (100);
|
||
v_organizer VARCHAR2 (200);
|
||
v_att_mail VARCHAR2 (200);
|
||
v_att_name VARCHAR2 (200);
|
||
v_modifier VARCHAR2 (100);
|
||
v_appt_id VARCHAR2 (500);
|
||
v_recur_id VARCHAR2 (500);
|
||
v_seq_nr VARCHAR2 (100);
|
||
d_starttime DATE;
|
||
d_endtime DATE;
|
||
n_seq_nr NUMBER(13);
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- AKZA#36457: de ID van de ruimte is niet meer uit de inhoud van de XML te halen.
|
||
-- Dan maar de bestandsnaam gebruiken (refkey is niet handig, want dan moeten we voor
|
||
-- elke room de import draaien).
|
||
SELECT r.res_ruimte_extern_id, i.fac_import_filenaam
|
||
INTO v_ruimte_id, v_import_filenaam
|
||
FROM res_ruimte r, fac_import i
|
||
WHERE i.fac_import_key = p_import_key
|
||
AND r.res_ruimte_verwijder IS NULL
|
||
AND r.res_ruimte_extern_id IS NOT NULL
|
||
AND UPPER(i.fac_import_filenaam) LIKE '%'||UPPER(r.res_ruimte_extern_id)||'%';
|
||
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Start inlezen importbestand in importtabel',
|
||
v_import_filenaam );
|
||
|
||
-- We willen mislukte regels uit eerdere imports bewaren, zodat we die nog eens kunnen proberen.
|
||
-- Alle correct verwerkte importregels krijgen een vlag, dus die gooien we weg.
|
||
DELETE FROM demo_imp_exchange
|
||
WHERE gelukt IS NOT NULL;
|
||
|
||
-- We gaan uit van een geldig bestand, mogelijk verandert dat onderweg
|
||
header_is_valid := 0;
|
||
v_ongeldig := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_aanduiding := '';
|
||
d_starttime := NULL;
|
||
d_endtime := NULL;
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
|
||
-- Lees alle veldwaarden
|
||
-- AKZA#36457: room ID wordt voortaan opgehaald uit de bestandsnaam van de import
|
||
v_room_id := v_ruimte_id;
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_subject);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_starttime);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_endtime);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_organizer);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_att_mail);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_att_name);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_modifier);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_appt_id);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_recur_id);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_seq_nr);
|
||
|
||
v_aanduiding := '[' || v_room_id || '|' || v_starttime || '|' || v_att_mail || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
-- NB: doordat deze import een stylesheet gebruikt, zullen deze kolommen altijd kloppen,
|
||
-- ook al wordt een verkeerd bestand ingelezen (mits de stylesheet klopt)
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER(v_subject) = 'SUBJECT'
|
||
AND UPPER(v_starttime) = 'STARTTIME'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
-- Bij volgende importbestanden headerregels overslaan
|
||
IF UPPER(v_subject) = 'SUBJECT'
|
||
AND UPPER(v_starttime) = 'STARTTIME'
|
||
THEN
|
||
CONTINUE;
|
||
END IF;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer tijden
|
||
v_errorhint := 'Ongeldige starttijd';
|
||
v_starttime := TRIM(v_starttime);
|
||
|
||
IF ( fac.safe_to_date(v_starttime, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') IS NOT NULL)
|
||
THEN
|
||
d_starttime := CAST (
|
||
(FROM_TZ (
|
||
CAST (fac.safe_to_date(v_starttime, 'YYYY-MM-DD"T"HH24:MI:SS"Z"')
|
||
AS TIMESTAMP),
|
||
'+00:00') AT TIME ZONE 'Europe/Amsterdam')
|
||
AS DATE);
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding || 'Starttijd ontbreekt',
|
||
'' );
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige eindtijd';
|
||
v_endtime := TRIM(v_endtime);
|
||
|
||
IF ( fac.safe_to_date(v_endtime, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') IS NOT NULL)
|
||
THEN
|
||
d_endtime := CAST (
|
||
(FROM_TZ (
|
||
CAST (fac.safe_to_date(v_endtime, 'YYYY-MM-DD"T"HH24:MI:SS"Z"')
|
||
AS TIMESTAMP),
|
||
'+00:00') AT TIME ZONE 'Europe/Amsterdam')
|
||
AS DATE);
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding || 'Eindtijd ontbreekt',
|
||
'' );
|
||
END IF;
|
||
|
||
v_errorhint := 'Opschonen naam bezoeker';
|
||
v_att_name := TRIM(BOTH '''' FROM v_att_name);
|
||
|
||
v_errorhint := 'Ongeldig sequence nr';
|
||
v_seq_nr := TRIM(v_seq_nr);
|
||
|
||
IF ( fac.safe_to_number(v_seq_nr) IS NOT NULL)
|
||
THEN
|
||
n_seq_nr := fac.safe_to_number(v_seq_nr);
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
v_count_error := v_count_error + 1;
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding || 'Sequence nr ontbreekt',
|
||
'' );
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record,
|
||
-- mits het een toekomstige appointment betreft
|
||
IF (v_ongeldig = 0 AND d_starttime > SYSDATE)
|
||
THEN
|
||
BEGIN
|
||
v_errorhint := 'Fout bij toevoegen regel aan importtabel';
|
||
|
||
INSERT INTO demo_imp_exchange
|
||
(room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
att_mail,
|
||
att_name,
|
||
modifier,
|
||
appt_id,
|
||
recur_id,
|
||
seq_nr,
|
||
fac_import_key)
|
||
VALUES
|
||
(v_room_id,
|
||
v_subject,
|
||
d_starttime,
|
||
d_endtime,
|
||
v_organizer,
|
||
v_att_mail,
|
||
v_att_name,
|
||
SUBSTR(v_modifier, 1, 1),
|
||
v_appt_id,
|
||
v_recur_id,
|
||
n_seq_nr,
|
||
p_import_key);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ': ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Ingelezen regel kan niet worden weggeschreven!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand! Geen header of header niet volgens specificatie.',
|
||
'Heeft u wel het juiste bestand ingelezen?'
|
||
);
|
||
ELSIF (v_ongeldig = 1)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand! Bestand bevat een of meer ongeldige regels.',
|
||
''
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Importbestand succesvol ingelezen: '
|
||
|| TO_CHAR (v_count_import) || ' regels (deelnemers).',
|
||
''
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
-- demo_import_exchange() wordt voor elk importbestand aangeroepen. Dat gebeurt steeds met dezelfde
|
||
-- fac_import_key, dus er kan achteraf niet bepaald worden welke importregels bij welk bestand (en
|
||
-- dus welke ruimte horen. Daarom fac_imp_file handmatig legen, zodat we bij het volgende bestand
|
||
-- met een schone lei beginnen.
|
||
DELETE FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
-- AKZA#38120: ook als er iets mis gaat bij inlezen (bijvoorbeeld de extern_id bestaat niet, of
|
||
-- komt vaker voor) de importregels weggooien, anders worden ze bij de volgende ruimte ingelezen.
|
||
-- Liever niets inlezen (totdat de situatie verholpen is), dan fout inlezen.
|
||
DELETE FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
COMMIT;
|
||
END demo_import_exchange;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_update_exchange (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_ruimte_extern_id res_ruimte.res_ruimte_extern_id%TYPE;
|
||
v_count_wanted NUMBER (10);
|
||
v_count_all_booked NUMBER (10);
|
||
v_count_all_needed NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_debug BOOLEAN := TRUE;
|
||
|
||
c_activiteit_key NUMBER (10) := 1; -- Vergadering vanuit Exchange
|
||
v_reservering_key NUMBER (10);
|
||
v_rsv_ruimte_volgnr res_rsv_ruimte.res_rsv_ruimte_volgnr%TYPE;
|
||
v_ruimte_opstel_key NUMBER (10);
|
||
v_rsv_ruimte_key NUMBER (10);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_status_fo_key NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
v_code VARCHAR2(7);
|
||
|
||
-- ANNULEREN
|
||
-- Eerst alle toekomstige reserveringen waar geen appointments meer bij zijn annuleren, zodat
|
||
-- ruimte ontstaat voor nieuwe/omgeboekte reserveringen.
|
||
-- Triggers voor het annuleren van een deelreservering:
|
||
-- - DELETE-modifier in synchro; appointment is verwijderd
|
||
-- - UPDATE-modifier in synchro, met bekend appointment-ID, maar zonder resource: de appointment
|
||
-- bestaat nog, maar is niet meer in een bekende zaal (TODO: krijgen we die dan als UPD, of als DEL?)
|
||
-- - UPDATE-modifier in synchro, met bekend appointment-ID, maar voorheen zonder recurrence-ID (= single)
|
||
-- en nu met recurrence-ID (= occurence). Die single verwijderen, daarna de occurences toevoegen.
|
||
-- NB: checken of in deze synchro een appointment niet zowel toegevoegd/bijgewerkt als verwijderd is;
|
||
-- dan hoeven we 'm natuurlijk niet meer toe te voegen / bij te werken.
|
||
-- (TODO: weet niet of dat <20>berhaupt voorkomt met EWS)
|
||
-- TODO: notificeren
|
||
CURSOR c_del
|
||
IS
|
||
SELECT 'Cancelled' reden,
|
||
i.*,
|
||
rr.*
|
||
FROM (SELECT DISTINCT room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
recur_id
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'D'
|
||
AND starttime > SYSDATE
|
||
AND gelukt IS NULL) i,
|
||
res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
|
||
AND rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT 'Unknown room' reden,
|
||
i.*,
|
||
rr.*
|
||
FROM (SELECT DISTINCT room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
recur_id
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'U'
|
||
AND starttime > SYSDATE
|
||
AND gelukt IS NULL) i,
|
||
res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE res_ruimte_extern_id = i.room_id
|
||
AND res_ruimte_verwijder IS NULL)
|
||
UNION ALL
|
||
-- AKZA#35459: appointments die eerst single waren en nu recurring (eerst geen
|
||
-- recur_id, nu wel). Daar kan vanalles mee gebeurd zijn (andere ruimte, ander tijdstip,
|
||
-- meerdere ruimtes). Dan maar verwijderen en opnieuw aanmaken...
|
||
-- (recur_id en tijden niet ophalen, anders wordt de 'oude' single voor elke recurrence verwijderd)
|
||
SELECT 'Made recurring' reden,
|
||
i.*,
|
||
rr.*
|
||
FROM (SELECT DISTINCT room_id,
|
||
subject,
|
||
NULL starttime,
|
||
NULL endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
NULL recur_id
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'U'
|
||
AND starttime > SYSDATE
|
||
AND recur_id IS NOT NULL
|
||
AND gelukt IS NULL) i,
|
||
res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE i.appt_id||'||%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL;
|
||
|
||
-- TODO: Voor later: res_cat_t1 en res_t1 gebruiken ipv TRUNC
|
||
CURSOR c_del_doorbelast (p_rsv_ruimte_key IN NUMBER)
|
||
IS
|
||
SELECT soort, ref_key, oms, van,
|
||
fac.safe_to_number(SYSDATE - TRUNC(SYSDATE)) * 24 uren,
|
||
DECODE( exp_tijd,
|
||
NULL, van - exp_dagen,
|
||
DECODE( SIGN(exp_tijd - fac.safe_to_number(SYSDATE - TRUNC(SYSDATE)) * 24),
|
||
1, TRUNC(van),
|
||
TRUNC(van) + 1
|
||
)
|
||
) t_expire,
|
||
exp_dagen, exp_tijd, cnl_dagen
|
||
FROM (
|
||
SELECT 'ruimte' soort,
|
||
rr.res_rsv_ruimte_key ref_key,
|
||
r.res_ruimte_nr oms,
|
||
rr.res_rsv_ruimte_van van,
|
||
dp.res_disc_params_kosten kosten,
|
||
dp.res_disc_params_expire_dagen exp_dagen,
|
||
dp.res_disc_params_expire_tijd exp_tijd,
|
||
dp.res_disc_params_cancel_dagen cnl_dagen
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r,
|
||
res_discipline d,
|
||
res_disc_params dp
|
||
WHERE rr.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND d.ins_discipline_key = r.res_discipline_key
|
||
AND dp.res_ins_discipline_key = d.ins_discipline_key
|
||
AND dp.res_disc_params_kosten > 0
|
||
UNION ALL
|
||
SELECT 'artikel' soort,
|
||
ra.res_rsv_artikel_key,
|
||
a.res_artikel_omschrijving,
|
||
ra.res_rsv_artikel_levering,
|
||
dp.res_disc_params_kosten,
|
||
dp.res_disc_params_expire_dagen,
|
||
dp.res_disc_params_expire_tijd,
|
||
dp.res_disc_params_cancel_dagen
|
||
FROM res_rsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline d,
|
||
res_disc_params dp
|
||
WHERE ra.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND a.res_artikel_key = ra.res_artikel_key
|
||
AND d.ins_discipline_key = a.res_discipline_key
|
||
AND dp.res_ins_discipline_key = d.ins_discipline_key
|
||
AND dp.res_disc_params_kosten > 0
|
||
UNION ALL
|
||
SELECT 'deel' soort,
|
||
rd.res_rsv_deel_key,
|
||
de.res_deel_omschrijving,
|
||
rd.res_rsv_deel_van,
|
||
dp.res_disc_params_kosten,
|
||
dp.res_disc_params_expire_dagen,
|
||
dp.res_disc_params_expire_tijd,
|
||
dp.res_disc_params_cancel_dagen
|
||
FROM res_rsv_deel rd,
|
||
res_deel de,
|
||
res_discipline d,
|
||
res_disc_params dp
|
||
WHERE rd.res_rsv_ruimte_key = p_rsv_ruimte_key
|
||
AND de.res_deel_key = rd.res_deel_key
|
||
AND d.ins_discipline_key = de.res_discipline_key
|
||
AND dp.res_ins_discipline_key = d.ins_discipline_key
|
||
AND dp.res_disc_params_kosten > 0);
|
||
|
||
-- BIJWERKEN
|
||
-- Triggers voor het bijwerken van een bestaande toekomstige deelreservering:
|
||
-- - UPDATE-modifier in synchro, met bekend appointment-ID en bekende resource(s) (zonder bekende resource
|
||
-- krijgen we 'm niet eens binnen)
|
||
-- TODO: combi van appt_id, recur_id en room_id!
|
||
-- Dan checken of het nog wel om dezelfde resources (ruimtes) gaat, tijden zijn aangepast, deelnemers gewijzigd,
|
||
-- andere omschrijving, ...
|
||
-- - Omschrijving kan zonder notificatie aangepast worden
|
||
-- - Andere ruimte --> Moet er worden doorbelast? Voorwaarden voor catering hetzelfde (van MC naar OF bijv)?
|
||
-- TODO: notificeren
|
||
-- - Deelnemers erbij / eraf --> Bezoekers toevoegen / verwijderen, deelnemerslijst bijwerken.
|
||
-- TODO: notificeren
|
||
-- NB: checken of in deze synchro een appointment niet zowel bijgewerkt als verwijderd is;
|
||
-- dan hoeven we 'm natuurlijk niet meer bij te werken (weet niet of dat <20>berhaupt voorkomt met EWS)
|
||
-- TODO: dit detecteert geen room changes, alleen mutaties aan res op dezelfde ruimte.
|
||
CURSOR c_upd
|
||
IS
|
||
SELECT i.*,
|
||
rr.*,
|
||
rnew.res_ruimte_key,
|
||
rnew.res_ruimte_nr,
|
||
rnew.res_ruimte_extern_id,
|
||
rnew.res_discipline_key
|
||
FROM (SELECT room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
recur_id,
|
||
COUNT(*) num_bez
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'U'
|
||
AND starttime > SYSDATE
|
||
AND gelukt IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(att_mail) )
|
||
GROUP BY recur_id, appt_id, room_id, subject, starttime,
|
||
endtime, organizer, modifier) i,
|
||
res_rsv_ruimte rr,
|
||
res_ruimte rnew
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rnew.res_ruimte_extern_id = i.room_id
|
||
AND rnew.res_ruimte_verwijder IS NULL;
|
||
|
||
-- TOEVOEGEN
|
||
-- Triggers voor het toevoegen van een toekomstige (deel)reservering:
|
||
-- - ADD-modifier in synchro; appointment is nieuw
|
||
-- - UPDATE-modifier in synchro, met onbekend appointment- en recurrence-ID voor deze room: dan (<28>f)
|
||
-- - appointment bestond al, maar er is nu pas een ruimte aan toegevoegd;
|
||
-- - het was een single en nu recurring.
|
||
-- - appointment met meerdere ruimtes, maar nog geen deelreservering voor deze ruimte (zal vooral
|
||
-- voorkomen bij calendarview, als we de boekingen voor alle ruimtes op dit tijdstip binnenkrijgen --
|
||
-- bij de synchro-import is dat niet gegarandeerd)
|
||
-- TODO: verwijderde deelreserveringen 'undeleten'?
|
||
CURSOR c_add
|
||
IS
|
||
SELECT i.*,
|
||
r.*
|
||
FROM (SELECT room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
recur_id,
|
||
seq_nr,
|
||
COUNT(*) num_bez
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'C'
|
||
AND starttime > SYSDATE
|
||
AND gelukt IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(att_mail) )
|
||
GROUP BY recur_id, appt_id, seq_nr, room_id, subject, starttime,
|
||
endtime, organizer, modifier) i,
|
||
res_v_aanwezigruimte r
|
||
WHERE i.room_id = r.res_ruimte_extern_id
|
||
UNION ALL
|
||
SELECT i.*,
|
||
r.*
|
||
FROM (SELECT room_id,
|
||
subject,
|
||
starttime,
|
||
endtime,
|
||
organizer,
|
||
modifier,
|
||
appt_id,
|
||
recur_id,
|
||
seq_nr,
|
||
COUNT(*) num_bez
|
||
FROM demo_imp_exchange
|
||
WHERE modifier = 'U'
|
||
AND starttime > SYSDATE
|
||
AND gelukt IS NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(att_mail) )
|
||
GROUP BY recur_id, appt_id, seq_nr, room_id, subject, starttime,
|
||
endtime, organizer, modifier) i,
|
||
res_v_aanwezigruimte r
|
||
WHERE i.room_id = r.res_ruimte_extern_id
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r
|
||
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
|
||
AND rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND r.res_ruimte_verwijder IS NULL
|
||
AND r.res_ruimte_extern_id = i.room_id);
|
||
|
||
BEGIN
|
||
-- We doen niets met boekingen in het verleden
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 4
|
||
WHERE endtime < SYSDATE;
|
||
|
||
-- En res_ruimtes als deelnemers, dat kan natuurlijk niet
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 5
|
||
WHERE EXISTS (SELECT 1
|
||
FROM res_ruimte
|
||
WHERE UPPER(res_ruimte_extern_id) = UPPER(att_mail) );
|
||
|
||
-- Eerst verwijderen; dat scheelt onterechte "dirties" bij toevoegen
|
||
-- Bij verplaatsen naar een andere ruimte krijg je mogelijk een delete op de oude
|
||
-- ruimte; die voeren we niet uit. Ook deletes van niet-bekende appointments negeren we.
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 3
|
||
WHERE modifier IN ('D')
|
||
AND EXISTS (SELECT 1 FROM demo_imp_exchange
|
||
WHERE modifier != 'D'
|
||
AND appt_id||'|'||recur_id = i.appt_id||'|'||i.recur_id
|
||
AND seq_nr > i.seq_nr);
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 3
|
||
WHERE modifier IN ('D')
|
||
AND NOT EXISTS (SELECT 1 FROM res_rsv_ruimte
|
||
WHERE res_rsv_ruimte_externnr LIKE i.appt_id||'|%');
|
||
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr
|
||
||' ('||rec.res_rsv_ruimte_key||'|'||rec.room_id || '|' || rec.subject||')';
|
||
v_perslid_key := NULL;
|
||
v_kostenplaats_key := NULL;
|
||
v_rsv_ruimte_key := NULL;
|
||
v_status_fo_key := 1;
|
||
v_count := 0;
|
||
|
||
-- Zie ook res_delete_save.asp
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'VERWIJDEREN '||v_aanduiding);
|
||
END IF;
|
||
v_errorhint := 'Doorbelasting kosten';
|
||
-- Moeten kosten worden doorbelast?
|
||
-- (I.e. zitten we binnen de expiretijd van een van de onderdelen?)
|
||
FOR rec_db IN c_del_doorbelast (rec.res_rsv_ruimte_key)
|
||
LOOP
|
||
v_count := v_count + 1;
|
||
END LOOP;
|
||
|
||
-- Minstens <20><>n onderdeel moet worden doorbelast
|
||
-- FO-status van rsv_ruimte wordt "Vervallen" (4)
|
||
IF (v_count > 0)
|
||
THEN
|
||
v_status_fo_key := 4;
|
||
FOR rec_db IN c_del_doorbelast (rec.res_rsv_ruimte_key)
|
||
LOOP
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding,
|
||
rec_db.oms||' kosteloos annuleerbaar tot '||
|
||
TO_CHAR(rec_db.t_expire, 'DD-MM-YYYY HH24:MI'));
|
||
END IF;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
v_errorhint := 'Deelreservering verwijderen';
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_fo_key = v_status_fo_key,
|
||
res_rsv_ruimte_verwijder = SYSDATE
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
fac.trackaction ('RESDEL', rec.res_rsv_ruimte_key, NULL, SYSDATE, NULL);
|
||
|
||
res.set_ruimte_dirty(rec.res_rsv_ruimte_key);
|
||
res.set_ruimtes_clean(rec.res_rsv_ruimte_van);
|
||
res.follow_artikel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
res.follow_deel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
|
||
v_errorhint := 'res_reservering verwijderen';
|
||
UPDATE res_reservering
|
||
SET res_reservering_verwijder = SYSDATE
|
||
WHERE res_reservering_key = rec.res_reservering_key
|
||
AND NOT EXISTS (SELECT *
|
||
FROM res_v_aanwezigrsv_ruimte
|
||
WHERE res_reservering_key = rec.res_reservering_key);
|
||
|
||
-- Succesvol afgerond; zet vlag.
|
||
-- AKZA#35459: vlag niet zetten voor een single die recurring is geworden;
|
||
-- die recurrence moeten we straks in de add-cursor nog toevoegen.
|
||
IF NOT (rec.reden = 'Made recurring')
|
||
THEN
|
||
UPDATE demo_imp_exchange
|
||
SET gelukt = 1
|
||
WHERE appt_id||'|'||recur_id = rec.appt_id||'|'||rec.recur_id
|
||
AND gelukt IS NULL;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Deelreservering verwijderd.'
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'OTHERS (error '
|
||
|| oracle_err_num || '/'
|
||
|| oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
v_errorhint||': '||v_errormsg
|
||
);
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- Omdat we entries die gefaald zijn 'bewaren', kan het zijn dat we voor <20><>n appointment
|
||
-- meerdere updates - of zelfs een delete - hebben. Dan zijn we alleen ge<67>nteresseerd in de
|
||
-- nieuwste, de rest kan genegeerd/weg. (Als we een nieuwere UPDate hebben, kan de originele
|
||
-- ADD/create ook weg; een update van een nog-niet-bestaande reservering zorgt voor aanmaken.)
|
||
-- Hoger seq_nr = latere mutatie in Exchange
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 2
|
||
WHERE modifier IN ('C', 'U')
|
||
AND EXISTS (SELECT 1 FROM demo_imp_exchange
|
||
WHERE appt_id||'|'||recur_id = i.appt_id||'|'||i.recur_id
|
||
AND fac_import_key != i.fac_import_key
|
||
AND seq_nr > i.seq_nr);
|
||
|
||
-- Hetzelfde voor deletes van niet-bestaande reserveringen
|
||
UPDATE demo_imp_exchange i
|
||
SET gelukt = 2
|
||
WHERE modifier = 'D'
|
||
AND NOT EXISTS (SELECT 1 FROM res_rsv_ruimte
|
||
WHERE res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%');
|
||
|
||
-- Dan bestaande bijwerken, anders kan het gebeuren dat we op basis van een UPDATE
|
||
-- eerst een rsv_ruimte aanmaken en 'm daarna meteen proberen bij te werken.
|
||
-- TODO: is dat nog steeds zo met "gelukt = 1"?
|
||
FOR rec IN c_upd
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec.room_id || '|' || rec.subject || '|' || TO_CHAR(rec.starttime, 'DD-MM-YYYY HH24:MI')
|
||
|| '-->'||rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr;
|
||
v_perslid_key := NULL;
|
||
v_kostenplaats_key := NULL;
|
||
v_rsv_ruimte_volgnr := 1;
|
||
v_rsv_ruimte_key := NULL;
|
||
v_count := NULL;
|
||
v_count_all_booked := NULL;
|
||
v_count_all_needed := NULL;
|
||
v_count_wanted := NULL;
|
||
v_ruimte_extern_id := NULL;
|
||
|
||
-- Bepalen of dit een single-room of multi-room boeking is, door te achterhalen hoeveel ruimtes er in
|
||
-- FACILITOR geboekt (count_all_booked) zijn en hoeveel we er uit EWS hebben binnengekregen (count_all_needed).
|
||
-- Als count_all_booked > 1 en/of count_all_needed > 1, dan betreft het een appointment met meerdere
|
||
-- rooms en dus meerdere rsv_ruimtes. Dan moeten we nog meer weten.
|
||
-- Als count_all_booked = 1 <20>n count_all_needed = 1, dan betreft het een single-room boeking en kunnen we
|
||
-- r<>cksichtslos bijwerken.
|
||
-- (Dat is niet correct als er een room aan een bestaande appointment is toegevoegd, waar we nu nog
|
||
-- maar <20><>n room van hebben. Maar de sync-functionaliteit van EWS biedt geen manier om die situatie te
|
||
-- achterhalen... Met de calendar view kan dit wel, omdat we dan alle gelijktijdige boekingen op de
|
||
-- verschillende ruimtes binnenkrijgen, daarom:)
|
||
-- Als we een full import doen (calendar view), kan het maar zo zijn dat we in de import meerdere
|
||
-- ruimtes in dezelfde appointment tegenkomen (count_all_needed > 1), terwijl we daar nu nog maar <20><>n
|
||
-- ruimte van kennen (count_all_booked = 1). Dan is het dus een multi-room boeking, die nog niets alszodanig
|
||
-- bekend stond.
|
||
v_errorhint := 'Totaal aantal geboekte zalen bepalen';
|
||
SELECT COUNT(*)
|
||
INTO v_count_all_booked
|
||
FROM res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE rec.appt_id||'|'||rec.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Totaal aantal benodigde zalen bepalen';
|
||
SELECT COUNT(DISTINCT room_id)
|
||
INTO v_count_all_needed
|
||
FROM demo_imp_exchange i
|
||
WHERE i.modifier IN ('U', 'C')
|
||
AND i.starttime > SYSDATE
|
||
AND i.appt_id||'|'||i.recur_id||'|' LIKE rec.appt_id||'|'||rec.recur_id||'|';
|
||
|
||
-- De cursor bevat voor iedere appointment alle rsv_ruimtes met dezelfde appt_id en recur_id.
|
||
-- Er zal hoogstens <20><>n rsv_ruimte op de betreffende room zijn.
|
||
-- Bestaat er al een rsv_ruimte voor deze room (count = 1)?
|
||
v_errorhint := 'Bepalen of zaal al geboekt is';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling rops,
|
||
res_ruimte r
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE rec.appt_id||'|'||rec.recur_id||'|%'
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rops.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = rops.res_ruimte_key
|
||
AND r.res_ruimte_extern_id = rec.room_id;
|
||
|
||
-- Als er al een rsv_ruimte voor deze room is, is dat dan degene die we nu in de cursor hebben?
|
||
-- Zo ja, dan willen we die bijwerken.
|
||
-- Zo nee, dan doen we niets
|
||
v_errorhint := 'Bepalen zaal huidige deelreservering';
|
||
SELECT r.res_ruimte_extern_id
|
||
INTO v_ruimte_extern_id
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r
|
||
WHERE rr.res_rsv_ruimte_key = rec.res_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND r.res_ruimte_verwijder IS NULL;
|
||
|
||
-- De room is nog niet geboekt. Dan kunnen we <20>f een bestaande boeking omhangen naar deze ruimte,
|
||
-- <20>f een nieuwe boeking maken (in de ADD-cursor)
|
||
-- Daarom: kunnen we de huidige rsv_ruimte aanpassen, of is die ruimte nog gewoon geboekt in Exchange?
|
||
v_errorhint := 'Bepalen of voor room/zaal nog een boeking gewenst is';
|
||
SELECT COUNT(DISTINCT room_id)
|
||
INTO v_count_wanted
|
||
FROM demo_imp_exchange i
|
||
WHERE appt_id||'|'||recur_id||'|' = rec.appt_id||'|'||rec.recur_id||'|'
|
||
AND room_id = v_ruimte_extern_id;
|
||
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding,
|
||
v_count_all_booked||' deelreservering(en) bij deze appointment ('||
|
||
v_count_all_needed||' nodig), waarvan '||v_count||' voor deze room'
|
||
);
|
||
END IF;
|
||
|
||
-- NB: Deze oplossing is niet waterdicht. Daarvoor moet je eigenlijk weten in welke room een appointment
|
||
-- eerst was. Het lijkt handig om daarvoor uit de EWS-XML de Location en OldLocation nodes
|
||
-- te gebruiken, omdat daarin alle uitgenodigde ruimtes uitgelijst staan, maar helaas is Location
|
||
-- aanpasbaar in Outlook...
|
||
|
||
-- Multi-room? Dan nog wat checks, anders 'gewoon' bijwerken.
|
||
IF (v_count_all_booked > 1 OR v_count_all_needed > 1)
|
||
THEN
|
||
IF (v_debug)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding,
|
||
'Deze deelres. is op '||v_ruimte_extern_id||
|
||
'. Benodigde deelres.: '||v_count_all_needed||
|
||
', waarvan op deze ruimte: '||v_count_wanted
|
||
);
|
||
END IF;
|
||
-- Hebben we al een boeking voor deze zaal?
|
||
IF (v_count = 1)
|
||
THEN
|
||
-- Met deze rsv_ruimte?
|
||
-- Zo niet, dan skippen.
|
||
-- Zo ja, dan bijwerken (hier niets doen)
|
||
IF (v_ruimte_extern_id != rec.res_ruimte_extern_id)
|
||
THEN
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding,
|
||
'Skip (boeking op deze ruimte met andere rsv_ruimte)'
|
||
);
|
||
END IF;
|
||
CONTINUE;
|
||
END IF;
|
||
ELSIF (v_count = 0)
|
||
THEN
|
||
-- Willen we de ruimte van deze rsv_ruimte nog?
|
||
-- Zo ja, dan skippen.
|
||
-- Zo niet, dan kunnen we deze rsv_ruimte bijwerken (hier niets doen)
|
||
IF (v_count_wanted > 0)
|
||
THEN
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding,
|
||
'Skip (deze boeking ''bewaren'')'
|
||
);
|
||
END IF;
|
||
CONTINUE;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- We hebben niet geskipt, dus willen we deze rsv_ruimte bijwerken
|
||
-- Basisgegevens reservering gewijzigd?
|
||
IF ( v_ruimte_extern_id != rec.res_ruimte_extern_id
|
||
OR rec.res_rsv_ruimte_omschrijving != SUBSTR(rec.subject, 1, 60)
|
||
OR rec.res_rsv_ruimte_bezoekers != rec.num_bez
|
||
OR rec.res_rsv_ruimte_van != rec.starttime
|
||
OR rec.res_rsv_ruimte_tot != rec.endtime)
|
||
THEN
|
||
v_errorhint := 'Opstelling ophalen';
|
||
v_ruimte_opstel_key := demo.getOpstelling(rec.room_id);
|
||
IF (v_ruimte_opstel_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Geen ruimte-opstelling gedefinieerd'
|
||
);
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
v_errorhint := 'Basisgegevens bijwerken';
|
||
UPDATE res_rsv_ruimte
|
||
SET res_ruimte_opstel_key = v_ruimte_opstel_key,
|
||
res_rsv_ruimte_omschrijving = SUBSTR(rec.subject, 1, 60),
|
||
res_rsv_ruimte_van = rec.starttime,
|
||
res_rsv_ruimte_tot = rec.endtime,
|
||
res_rsv_ruimte_bezoekers = rec.num_bez
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
-- Opruimen en voorzieningen en bezoekers laten volgen
|
||
v_errorhint := 'Dirty, clean, voorzieningen';
|
||
res.set_ruimte_dirty(rec.res_rsv_ruimte_key);
|
||
res.set_ruimtes_clean(rec.starttime);
|
||
res.follow_artikel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
res.follow_deel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
res.follow_afspraak(rec.res_rsv_ruimte_key, 0);
|
||
|
||
--TODO: tracking + notificatie
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'RES: '||rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr);
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Room: '||v_ruimte_extern_id||'-->'||rec.res_ruimte_extern_id);
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Desc: "'||rec.res_rsv_ruimte_omschrijving||'"-->"'||SUBSTR(rec.subject, 1, 60)||'"');
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Start: '||TO_CHAR(rec.res_rsv_ruimte_van,'DD-MM-YYYY HH24:MI')||'-->'||TO_CHAR(rec.starttime,'DD-MM-YYYY HH24:MI'));
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Einde: '||TO_CHAR(rec.res_rsv_ruimte_tot,'DD-MM-YYYY HH24:MI')||'-->'||TO_CHAR(rec.endtime,'DD-MM-YYYY HH24:MI'));
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Bezoekers: '||rec.res_rsv_ruimte_bezoekers||'-->'||rec.num_bez);
|
||
END IF;
|
||
|
||
fac.trackaction ('RESUPD', rec.res_rsv_ruimte_key, NULL, SYSDATE, NULL);
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Reservering bijgewerkt'
|
||
);
|
||
ELSE
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'Geen verschil in basisgegevens');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Bezoekers bijwerken
|
||
v_errorhint := 'Bezoekers bijwerken';
|
||
demo.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, rec.res_rsv_ruimte_key);
|
||
|
||
-- Succesvol afgerond; zet vlag.
|
||
-- All<6C><6C>n voor nu beschouwde ruimte! (appointments kunnen op meerdere ruimtes zijn)
|
||
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
|
||
UPDATE demo_imp_exchange
|
||
SET gelukt = 1
|
||
WHERE appt_id||'|'||recur_id = rec.appt_id||'|'||rec.recur_id
|
||
AND room_id = rec.room_id
|
||
AND gelukt IS NULL;
|
||
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'gelukt=1');
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'OTHERS (error '
|
||
|| oracle_err_num || '/'
|
||
|| oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
v_errorhint||': '||v_errormsg
|
||
);
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
-- Ten slotte nieuwe reserveringen toevoegen
|
||
FOR rec IN c_add
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec.room_id || '|' || rec.subject;
|
||
v_perslid_key := NULL;
|
||
v_kostenplaats_key := NULL;
|
||
v_reservering_key := NULL;
|
||
v_rsv_ruimte_volgnr := 1;
|
||
v_rsv_ruimte_key := NULL;
|
||
|
||
v_errorhint := 'Host ' || rec.organizer || ' onbekend, of meer personen met dit e-mailadres! Geen boeking.';
|
||
-- Kennen we deze persoon eigenlijk wel?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE UPPER(p.prs_perslid_email) = UPPER(rec.organizer);
|
||
|
||
-- Niet bekend, of niet eenduidig --> jammer dan.
|
||
IF (v_count != 1)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errorhint,
|
||
v_aanduiding
|
||
);
|
||
-- Eenduidig bekend --> reservering maken
|
||
ELSE
|
||
v_errorhint := 'Persoonsgegevens ophalen';
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
|
||
INTO v_perslid_key, v_kostenplaats_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_aanwezigafdeling a
|
||
WHERE UPPER(p.prs_perslid_email) = UPPER(rec.organizer)
|
||
AND a.prs_afdeling_key = p.prs_afdeling_key;
|
||
|
||
v_errorhint := 'Opstelling ophalen';
|
||
v_ruimte_opstel_key := demo.getOpstelling(rec.room_id);
|
||
IF (v_ruimte_opstel_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Geen ruimte-opstelling gedefinieerd'
|
||
);
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
-- Is dit een op zichzelf staande appointment, of onderdeel van een reeks (recurrence)?
|
||
-- (obv recur_id, die samen met appt_id in res_rsv_ruimte_externnr staat)
|
||
v_errorhint := 'Check recurrence';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM res_rsv_ruimte
|
||
WHERE res_rsv_ruimte_externnr IS NOT NULL
|
||
AND res_rsv_ruimte_externnr LIKE rec.appt_id||'|%'
|
||
-- AND res_rsv_ruimte_externnr NOT LIKE '%|'||rec.recur_id||'|%'
|
||
AND res_rsv_ruimte_verwijder IS NULL;
|
||
|
||
-- Er bestaan al deelreserveringen voor andere occurences van deze recurring appointment
|
||
-- Deelreservering binnen de bijbehorende res_reservering aanmaken
|
||
IF (v_count > 0)
|
||
THEN
|
||
v_errorhint := 'Reservering + volgnr ophalen';
|
||
SELECT res_reservering_key, MAX(res_rsv_ruimte_volgnr)+1
|
||
INTO v_reservering_key, v_rsv_ruimte_volgnr
|
||
FROM res_rsv_ruimte
|
||
WHERE res_rsv_ruimte_externnr IS NOT NULL
|
||
AND res_rsv_ruimte_externnr LIKE rec.appt_id||'|%'
|
||
-- AND res_rsv_ruimte_externnr NOT LIKE '%|'||rec.recur_id||'|%'
|
||
AND res_rsv_ruimte_verwijder IS NULL
|
||
GROUP BY res_reservering_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Is occurence van '||v_reservering_key
|
||
);
|
||
-- Nog geen andere occurences --> nieuwe res_reservering
|
||
ELSE
|
||
v_errorhint := 'Reservering aanmaken';
|
||
-- res_reservering aanmaken
|
||
INSERT INTO res_reservering
|
||
(res_reservering_ispool)
|
||
VALUES (0)
|
||
RETURNING res_reservering_key
|
||
INTO v_reservering_key;
|
||
END IF;
|
||
|
||
v_errorhint := 'Deelreservering aanmaken';
|
||
-- res_rsv_ruimte aanmaken voor deze appointment+resource
|
||
INSERT INTO res_rsv_ruimte (
|
||
res_rsv_ruimte_omschrijving,
|
||
res_rsv_ruimte_opmerking,
|
||
res_rsv_ruimte_externnr,
|
||
res_ruimte_opstel_key,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_ruimte_tot,
|
||
prs_kostenplaats_key,
|
||
res_rsv_ruimte_host_key,
|
||
res_activiteit_key,
|
||
res_status_fo_key,
|
||
res_rsv_ruimte_ordernr,
|
||
res_rsv_ruimte_kosten_klant,
|
||
res_rsv_ruimte_contact_key,
|
||
res_rsv_ruimte_bezoekers,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr,
|
||
res_status_bo_key)
|
||
VALUES (
|
||
SUBSTR(rec.subject, 1, 60),
|
||
NULL,
|
||
rec.appt_id||'|'||rec.recur_id||'|'||rec.seq_nr,
|
||
v_ruimte_opstel_key,
|
||
rec.starttime,
|
||
rec.endtime,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
c_activiteit_key,
|
||
2,
|
||
NULL,
|
||
1,
|
||
v_perslid_key,
|
||
rec.num_bez,
|
||
v_reservering_key,
|
||
v_rsv_ruimte_volgnr,
|
||
2)
|
||
RETURNING res_rsv_ruimte_key
|
||
INTO v_rsv_ruimte_key;
|
||
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'RESERVERING '||v_reservering_key||'/'||v_rsv_ruimte_volgnr||' ('||v_rsv_ruimte_key||')');
|
||
END IF;
|
||
|
||
v_errorhint := 'Toevoegen bezoekers';
|
||
demo.setBezoekers(p_import_key, rec.appt_id, rec.recur_id, v_rsv_ruimte_key);
|
||
|
||
-- Succesvol afgerond; zet vlag.
|
||
-- TODO: komen we hier ook als er iets mis ging met de bezoekers?
|
||
UPDATE demo_imp_exchange
|
||
SET gelukt = 1
|
||
WHERE appt_id||'|'||recur_id = rec.appt_id||'|'||rec.recur_id
|
||
AND gelukt IS NULL;
|
||
|
||
IF (v_debug) THEN
|
||
fac.imp_writelog (p_import_key, 'D',
|
||
v_aanduiding, 'gelukt=1');
|
||
END IF;
|
||
|
||
-- res_discipline achterhalen; alleen tracken voor EXCO en MC zalen
|
||
v_errorhint := 'res_discipline bepalen';
|
||
SELECT r.res_discipline_key
|
||
INTO v_discipline_key
|
||
FROM res_ruimte r,
|
||
res_ruimte_opstelling ro,
|
||
res_rsv_ruimte rr
|
||
WHERE rr.res_rsv_ruimte_key = v_rsv_ruimte_key
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key;
|
||
|
||
|
||
-- Altijd tracken <20>n notificeren!
|
||
v_errorhint := 'Tracking NEW';
|
||
v_code := 'RESNEW';
|
||
fac.trackaction (v_code, v_rsv_ruimte_key, NULL, SYSDATE, 'Booking confirmation meeting room, booking ref.: '||v_reservering_key||'/'||v_rsv_ruimte_volgnr);
|
||
|
||
-- Is er iets dirty?
|
||
res.set_ruimte_dirty(v_rsv_ruimte_key);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_reservering_key||'/'||v_rsv_ruimte_volgnr
|
||
||'('||TO_CHAR(rec.starttime, 'DD-MM-YYYY HH24:MI')
|
||
||' - '||TO_CHAR(rec.endtime, 'HH24:MI')
|
||
||') aangemaakt',
|
||
rec.subject
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'OTHERS (error '
|
||
|| oracle_err_num || '/'
|
||
|| oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
v_errorhint||': '||v_errormsg
|
||
);
|
||
END;
|
||
|
||
END LOOP;
|
||
-- Bij dirty ruimtes de *oudere* opruimen
|
||
v_aanduiding := 'Calling set_ruimtes_clean';
|
||
v_errorhint := '';
|
||
demo.set_ruimtes_clean(p_import_key);
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'OTHERS (error '
|
||
|| oracle_err_num || '/'
|
||
|| oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
v_errorhint||': '||v_errormsg
|
||
);
|
||
COMMIT;
|
||
END demo_update_exchange;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_import_exchsync (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
demo_import_exchange(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_update_exchsync (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
demo_update_exchange(p_import_key);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_import_exchfull (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
demo_import_exchange(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_update_exchfull (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
v_errorhint VARCHAR2 (1000);
|
||
BEGIN
|
||
demo_update_exchange(p_import_key); -- Eerst de gewone import
|
||
|
||
-- Nu alle reserveringen die niet zijn aangetroffen verwijderen
|
||
-- (Alleen voor ruimtes die in de importtabel voorkomen. Normaliter zijn dat alle ruimtes,
|
||
-- maar zo voorkom je dat je alle reserveringen weggooit als een ruimte 'per ongeluk' een
|
||
-- keer niet in de import zit. Handmatig verwijderen kan altijd.)
|
||
FOR rec IN (WITH this_import AS (SELECT *
|
||
FROM demo_imp_exchange
|
||
WHERE fac_import_key = p_import_key)
|
||
SELECT res_rsv_ruimte_key,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_ruimte_tot,
|
||
res_reservering_key,
|
||
res_rsv_ruimte_volgnr
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte r
|
||
WHERE rr.res_rsv_ruimte_externnr IS NOT NULL
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_rsv_ruimte_van >= (SELECT MIN(starttime) FROM this_import)
|
||
AND rr.res_rsv_ruimte_van <= (SELECT MAX(starttime) FROM this_import)
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND r.res_ruimte_extern_id IN (SELECT DISTINCT room_id FROM this_import)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM this_import i
|
||
WHERE rr.res_rsv_ruimte_externnr LIKE i.appt_id||'|'||i.recur_id||'|%'
|
||
AND r.res_ruimte_extern_id = i.room_id)
|
||
)
|
||
LOOP
|
||
v_errorhint := 'Verwijderen reservering '
|
||
|| TO_CHAR(rec.res_reservering_key) || '/' || rec.res_rsv_ruimte_volgnr
|
||
|| ' (' || TO_CHAR(rec.res_rsv_ruimte_key) || ')';
|
||
fac.imp_writelog (p_import_key, 'I', v_errorhint, '');
|
||
|
||
UPDATE res_rsv_ruimte
|
||
SET res_status_fo_key = 1, -- nooit doorbelasten of v_status_fo_key?
|
||
res_rsv_ruimte_verwijder = SYSDATE
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
fac.trackaction ('RESDEL', rec.res_rsv_ruimte_key, NULL, SYSDATE, NULL);
|
||
|
||
res.set_ruimte_dirty(rec.res_rsv_ruimte_key);
|
||
res.set_ruimtes_clean(rec.res_rsv_ruimte_van);
|
||
res.follow_artikel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
res.follow_deel(rec.res_rsv_ruimte_key, rec.res_rsv_ruimte_van, rec.res_rsv_ruimte_tot);
|
||
|
||
v_errorhint := 'res_reservering verwijderen';
|
||
UPDATE res_reservering
|
||
SET res_reservering_verwijder = SYSDATE
|
||
WHERE res_reservering_key = rec.res_reservering_key
|
||
AND NOT EXISTS (SELECT *
|
||
FROM res_v_aanwezigrsv_ruimte
|
||
WHERE res_reservering_key = rec.res_reservering_key);
|
||
END LOOP;
|
||
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,
|
||
pemailkey IN NUMBER)
|
||
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.getsetting('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
|
||
WHERE mld_melding_key = mldkey;
|
||
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;
|
||
|
||
CREATE OR REPLACE VIEW demo_v_rap_searchresult
|
||
(
|
||
fclt_f_datum,
|
||
fclt_f_persoon,
|
||
fclt_f_zoekterm,
|
||
resultaat,
|
||
fclt_f_keuze_type,
|
||
keuze_url,
|
||
keuze_omschrijving
|
||
)
|
||
AS
|
||
SELECT fac_gui_counter_date datum,
|
||
prs_perslid_naam_full persoon,
|
||
fgc.fac_gui_counter_info zoekterm,
|
||
COALESCE (result.result, 'Geen') resultaat,
|
||
COALESCE (choice.TYPE, 'Geen') keuze_type,
|
||
choice.url keuze_url,
|
||
choice.oms keuze_omschrijving
|
||
FROM fac_gui_counter fgc,
|
||
prs_v_perslid_fullnames pf,
|
||
(SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info url,
|
||
'Reserveerbaar artikel' TYPE,
|
||
res_artikel_omschrijving oms
|
||
FROM fac_gui_counter fgc, res_artikel ra
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%res_artikel%'
|
||
AND ra.res_artikel_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'key=')
|
||
+ 4)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Reserveerbaar object',
|
||
res_deel_omschrijving
|
||
FROM fac_gui_counter fgc, res_deel rd
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%res_deel%'
|
||
AND rd.res_deel_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'key=')
|
||
+ 4)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Melding',
|
||
std.mld_stdmelding_omschrijving oms
|
||
FROM fac_gui_counter fgc, mld_stdmelding std
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%stdm%'
|
||
AND std.mld_stdmelding_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'=')
|
||
+ 1)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Kennisbank',
|
||
fac_faq_question oms
|
||
FROM fac_gui_counter fgc, fac_faq faq
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%faq%'
|
||
AND fac_faq_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'=')
|
||
+ 1)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Reserveerbare ruimte',
|
||
res_ruimte_nr oms
|
||
FROM fac_gui_counter fgc, res_ruimte
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%res_ruimte%'
|
||
AND res_ruimte_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'=')
|
||
+ 1)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Bestelling',
|
||
ins_discipline_omschrijving
|
||
FROM fac_gui_counter fgc, bes_discipline
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%bes%'
|
||
AND ins_discipline_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'dis_key=')
|
||
+ 8)))
|
||
UNION
|
||
SELECT fac_gui_counter_refkey,
|
||
fac_gui_counter_info,
|
||
'Telefoonboek',
|
||
prs_perslid_naam_full
|
||
FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchchoice'
|
||
AND fac_gui_counter_info LIKE '%phone%'
|
||
AND pf.prs_perslid_key(+) =
|
||
fac.safe_to_number(SUBSTR (
|
||
fac_gui_counter_info,
|
||
(INSTR (fac_gui_counter_info,
|
||
'=')
|
||
+ 1)))) choice,
|
||
(SELECT fac_gui_counter_refkey,
|
||
REPLACE (REPLACE (fac_gui_counter_info, '{', ''), '}', '')
|
||
result
|
||
FROM fac_gui_counter fgc
|
||
WHERE fac_gui_counter_info IS NOT NULL
|
||
AND fac_gui_counter_group = 'searchresult') result
|
||
WHERE fac_gui_counter_group = 'search'
|
||
AND fgc.fac_gui_counter_info IS NOT NULL
|
||
AND fgc.prs_perslid_key = pf.prs_perslid_key
|
||
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
|
||
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key;
|
||
|
||
-- Beurs 2020, sensoren bij flexplekken (ins_deel - ins_deel koppeling)
|
||
CREATE OR REPLACE VIEW DEMO_V_THEMA_DEEL_RES_SENSOR
|
||
(
|
||
INS_DEEL_KEY,
|
||
INS_ALG_RUIMTE_KEY,
|
||
WAARDE
|
||
)
|
||
BEQUEATH DEFINER
|
||
AS
|
||
SELECT r.ins_deel_key,
|
||
r.ins_alg_ruimte_key,
|
||
-- k.vaste_bezetting,
|
||
-- s.sensor,
|
||
-- s.sensor_status,
|
||
-- r.tijdvrij,
|
||
DECODE (
|
||
k.vaste_bezetting, -- vaste bezetter gaat voor alles, FLEX030 heeft een vaste gebruiker
|
||
NULL, (DECODE (
|
||
s.sensor_status, --- dan kijken of er een sensor op 1 staat
|
||
1, 1,
|
||
COALESCE (MIN (TRUNC (r.tijdvrij * 24 * 60) - 1),
|
||
999999))),
|
||
1) WAARDE
|
||
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 d.ins_srtdeel_key = 48701 --- alleen flexplekken
|
||
AND r.res_deel_key = blokkerend.res_deel_key(+)) r,
|
||
(SELECT ins_deel_key, ins_kenmerkdeel_waarde vaste_bezetting
|
||
FROM ins_v_aanwezigkenmerkdeel
|
||
WHERE ins_kenmerk_key = 1141) k, -- Bezet door
|
||
(SELECT dk.ins_deelkoppeling_van_key flexplek_deel_key,
|
||
d.ins_deel_omschrijving sensor,
|
||
d.ins_deel_state sensor_status
|
||
FROM ins_deelkoppeling dk, ins_deel d
|
||
WHERE d.ins_deel_key = dk.ins_deelkoppeling_naar_key
|
||
AND d.ins_srtdeel_key IN (48802, 48803)) s ---- Sensoren
|
||
WHERE r.ins_deel_key = k.ins_deel_key(+)
|
||
AND r.ins_deel_key = s.flexplek_deel_key(+)
|
||
GROUP BY r.ins_deel_key,
|
||
r.ins_alg_ruimte_key,
|
||
k.vaste_bezetting,
|
||
s.sensor,
|
||
sensor_status,
|
||
r.tijdvrij;
|
||
|
||
CREATE OR REPLACE VIEW demo_v_rap_res_looplijst
|
||
AS
|
||
SELECT DISTINCT
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| rg.alg_gebouw_upper
|
||
|| TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
|
||
hide_f_srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
|
||
rg.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
rr.res_rsv_ruimte_van datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
|
||
r.res_ruimte_nr fclt_f_ruimte,
|
||
o.res_opstelling_omschrijving opstelling,
|
||
rr.res_rsv_ruimte_bezoekers aantal,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
mld.aant Meldingen,
|
||
voorzieningen,
|
||
CASE
|
||
WHEN LENGTH (catering) > 75
|
||
THEN
|
||
SUBSTR (catering, 1, 75) || ' ...'
|
||
ELSE
|
||
catering
|
||
END
|
||
catering,
|
||
rr.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling o,
|
||
res_ruimte r,
|
||
res_alg_ruimte ar,
|
||
alg_v_ruimte_gegevens rg,
|
||
( SELECT res_rsv_ruimte_key,
|
||
'Ja (' || COUNT (res_rsv_ruimte_key) || ')' aant
|
||
FROM mld_melding
|
||
WHERE res_rsv_ruimte_key IS NOT NULL
|
||
GROUP BY res_rsv_ruimte_key) mld,
|
||
( SELECT res_rsv_ruimte_key,
|
||
LISTAGG (voorziening, CHR (13) || CHR (10))
|
||
WITHIN GROUP (ORDER BY voorziening)
|
||
AS Voorzieningen
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_deel_omschrijving voorziening
|
||
FROM res_deel rd, res_rsv_deel rrd
|
||
WHERE RES_RSV_DEEL_verwijder IS NULL
|
||
AND rd.res_deel_key = rrd.res_deel_key
|
||
AND res_rsv_ruimte_key IS NOT NULL)
|
||
GROUP BY res_rsv_ruimte_key) voorz,
|
||
( SELECT res_rsv_ruimte_key,
|
||
LISTAGG (artikel, ', ') WITHIN GROUP (ORDER BY artikel)
|
||
AS catering
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_rsv_artikel_aantal
|
||
|| ' x '
|
||
|| res_artikel_omschrijving
|
||
artikel
|
||
FROM res_artikel ra, res_rsv_artikel rra
|
||
WHERE RES_RSV_artikel_verwijder IS NULL
|
||
AND ra.res_artikel_key = rra.res_artikel_key
|
||
AND res_rsv_ruimte_key IS NOT NULL)
|
||
GROUP BY res_rsv_ruimte_key) cat
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND o.res_opstelling_key = ro.res_opstelling_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND ar.res_ruimte_key = r.res_ruimte_key
|
||
AND ar.res_alg_ruimte_verwijder IS NULL
|
||
AND rg.alg_ruimte_key = ar.alg_ruimte_key
|
||
AND mld.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
|
||
AND voorz.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
|
||
AND cat.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW demo_v_rap_mob_looplijst
|
||
AS
|
||
SELECT *
|
||
FROM demo_v_rap_res_looplijst dvr
|
||
WHERE TRUNC (datum) = TRUNC (SYSDATE)
|
||
AND NOT EXISTS
|
||
(SELECT '1'
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND res_srtkenmerk_key = 101
|
||
AND rk.res_rsv_ruimte_key = dvr.res_rsv_ruimte_key
|
||
AND fac.safe_to_number (
|
||
res_kenmerkreservering_waarde) = 1);
|
||
|
||
-- alleen catering, alleen vandaag
|
||
CREATE OR REPLACE VIEW demo_v_rap_cateringtoday
|
||
AS
|
||
SELECT dvr.*,
|
||
DECODE (st.res_kenmerkreservering_waarde, 1, lcl.l('lcl_Yes'), lcl.l('lcl_No'))
|
||
afgeleverd
|
||
FROM demo_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = 101
|
||
AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key) st
|
||
WHERE st.res_rsv_ruimte_key(+) = dvr.res_rsv_ruimte_key
|
||
AND dvr.catering is not null
|
||
AND TRUNC (datum) = TRUNC (SYSDATE);
|
||
|
||
|
||
--=============================================================================
|
||
-- EXPORTFUNCTIES EXACT - Inkoopinterface
|
||
-------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_add_xml_row_p (
|
||
p_bestand IN VARCHAR2,
|
||
p_prefix IN VARCHAR2,
|
||
p_regel IN VARCHAR2)
|
||
AS
|
||
v_index NUMBER;
|
||
BEGIN
|
||
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
|
||
INTO v_index
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_bestand;
|
||
|
||
INSERT INTO fac_rapport (
|
||
fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (p_bestand,
|
||
v_index,
|
||
p_prefix || p_regel);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_add_xml_element_p (
|
||
p_bestand IN VARCHAR2,
|
||
p_prefix IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
demo_add_xml_row_p(p_bestand,
|
||
p_prefix,
|
||
'<' || p_tag || '>'
|
||
|| xml.char_to_html(p_value)
|
||
|| '</' || p_tag || '>');
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_add_xml_row (
|
||
p_bestand IN VARCHAR2,
|
||
p_regel IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
demo_add_xml_row_p (p_bestand, NULL, p_regel);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_add_xml_element (
|
||
p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
demo_add_xml_element_p (p_bestand, NULL, p_tag, p_value);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_set_kenmerk(p_module IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2,
|
||
p_history IN NUMBER)
|
||
AS
|
||
v_count NUMBER;
|
||
v_niveau VARCHAR2 (1);
|
||
BEGIN
|
||
CASE p_module
|
||
WHEN 'PRS'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT prs_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM prs_kenmerk
|
||
WHERE prs_kenmerk_key = p_kenmerk_key;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
|
||
prs_link_key,
|
||
prs_kenmerklink_niveau,
|
||
prs_kenmerklink_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'ALG'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT alg_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_key = p_kenmerk_key;
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE alg_onrgoedkenmerk
|
||
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
|
||
WHERE alg_onrgoed_key = p_link_key
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_onrgoedkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
|
||
alg_onrgoed_key,
|
||
alg_onrgoed_niveau,
|
||
alg_onrgoedkenmerk_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
v_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
WHEN 'MLD'
|
||
THEN
|
||
-- melding- of opdrachtkenmerk?
|
||
SELECT mld_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM mld_kenmerk
|
||
WHERE mld_kenmerk_key = p_kenmerk_key;
|
||
|
||
CASE v_niveau
|
||
WHEN 'O'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE mld_kenmerkopdr
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkopdr
|
||
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
|
||
WHERE mld_opdr_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||
mld_opdr_key,
|
||
mld_kenmerkopdr_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
WHEN 'S'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE mld_kenmerkmelding
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE mld_kenmerkmelding
|
||
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
|
||
WHERE mld_melding_key = p_link_key
|
||
AND mld_kenmerk_key = p_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
|
||
mld_melding_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
END CASE;
|
||
WHEN 'RES'
|
||
THEN
|
||
-- melding- of opdrachtkenmerk?
|
||
SELECT res_kenmerk_niveau
|
||
INTO v_niveau
|
||
FROM res_kenmerk
|
||
WHERE res_kenmerk_key = p_kenmerk_key;
|
||
|
||
CASE v_niveau
|
||
WHEN 'A'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE res_kenmerkwaarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE res_kenmerkwaarde
|
||
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
|
||
WHERE res_rsv_ruimte_key = p_link_key
|
||
AND res_kenmerk_key = p_kenmerk_key
|
||
AND res_kenmerkwaarde_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
|
||
res_rsv_ruimte_key,
|
||
res_kenmerkreservering_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
-- Voorlopig alleen op ruimte niveau.
|
||
END CASE;
|
||
WHEN 'FIN'
|
||
THEN
|
||
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
|
||
-- opgeslagen (da's dus redundant..?)
|
||
SELECT fin_kenmerk_type
|
||
INTO v_niveau
|
||
FROM fin_kenmerk
|
||
WHERE fin_kenmerk_key = p_kenmerk_key;
|
||
|
||
|
||
IF v_niveau = 'F'
|
||
THEN
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactuur
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactuur
|
||
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuur_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactuur_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
|
||
fin_factuur_key,
|
||
fin_kenmerkfactuur_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- Kenmerk bij factuurregel
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
DELETE fin_kenmerkfactregel
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
ELSE
|
||
UPDATE fin_kenmerkfactregel
|
||
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
|
||
WHERE fin_factuurregel_key = p_link_key
|
||
AND fin_kenmerk_key = p_kenmerk_key
|
||
AND fin_kenmerkfactregel_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
|
||
fin_factuurregel_key,
|
||
fin_kenmerkfactregel_waarde)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
|
||
END IF;
|
||
END CASE;
|
||
END;
|
||
/
|
||
|
||
-------------------------------------------------------------------------------
|
||
-- EXPORTFUNCTIE - Export exact
|
||
-------------------------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW demo_v_aanwezigfactuur
|
||
(
|
||
FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
)
|
||
AS
|
||
SELECT FIN_FACTUUR_KEY,
|
||
FIN_FACTUUR_NR,
|
||
FIN_FACTUUR_TOTAAL,
|
||
FIN_FACTUUR_TOTAAL_BTW,
|
||
MLD_OPDR_KEY,
|
||
CNT_CONTRACT_KEY,
|
||
BES_BESTELOPDR_KEY,
|
||
PRS_PERSLID_KEY_USER,
|
||
FIN_FACTUUR_DATUM,
|
||
FIN_FACTUUR_BOEKMAAND,
|
||
FIN_FACTUUR_DEBITEUR_NR,
|
||
PRS_KOSTENSOORT_KEY,
|
||
FIN_FACTUUR_OPMERKING,
|
||
FIN_FACTUUR_STATUSES_KEY,
|
||
FIN_FACTUUR_VERWIJDER
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
|
||
|
||
|
||
-- fin_kenmerk_key 2 is de keuze of dit de laatste factuur van de opdracht is.
|
||
CREATE OR REPLACE VIEW demo_v_factuur_gegevens (
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_btwtabelwaarde_code,
|
||
fin_btwtabelwaarde_key,
|
||
fin_factuurregel_nr,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_factuur_boekmaand,
|
||
opdr_datum,
|
||
laatste_factuur,
|
||
project_nummer,
|
||
project_naam,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_key,
|
||
prs_kostenplaats_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
fin_factuur_statuses_key,
|
||
lev_kpn
|
||
)
|
||
AS
|
||
SELECT f.fin_factuur_key,
|
||
DECODE (c.cnt_contract_key, null,
|
||
DECODE (bo.bes_bestelopdr_key, null,
|
||
(SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
|
||
, bo.bes_bestelopdr_id)
|
||
, 'C' || TO_CHAR (cnt_contract_nummer_intern)
|
||
|| DECODE (cnt_contract_versie, NULL, NULL, '.' || cnt_contract_versie)
|
||
)
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_nr,
|
||
COALESCE (b_c.prs_bedrijf_key, COALESCE(b_o.prs_bedrijf_key, b_b.prs_bedrijf_key)) prs_bedrijf_key,
|
||
fr.fin_factuurregel_totaal,
|
||
round(fr.fin_factuurregel_totaal* DECODE(btw.fin_btwtabelwaarde_verlegd, 1, 0, btw.fin_btwtabelwaarde_perc/100),2) fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_code,
|
||
btw.fin_btwtabelwaarde_key,
|
||
fr.fin_factuurregel_nr,
|
||
f.fin_factuur_debiteur_nr,
|
||
f.fin_factuur_opmerking,
|
||
f.fin_factuur_boekmaand,
|
||
o.mld_opdr_datumbegin opdr_datum,
|
||
-- COALESCE ( (SELECT fac.safe_to_number (fac_usrdata_code)
|
||
-- FROM fin_kenmerkfactuur fk, fac_usrdata ud
|
||
-- WHERE fk.fin_factuur_key = f.fin_factuur_key
|
||
-- AND fk.fin_kenmerk_key = 2
|
||
-- AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
|
||
-- fac_usrdata_key),
|
||
-- 1
|
||
-- ),
|
||
1 laatste_factuur,
|
||
NULL projectnummer,
|
||
NULL projectnaam,
|
||
prs_kostensoort_oms,
|
||
k.prs_kostensoort_refcode,
|
||
k.prs_kostensoort_key,
|
||
COALESCE(o.prs_kostenplaats_key,
|
||
COALESCE(c.prs_kostenplaats_key,
|
||
(SELECT DISTINCT b.prs_kostenplaats_key
|
||
FROM bes_bestelling b,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi
|
||
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key)
|
||
)
|
||
),
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
bo.bes_bestelopdr_key,
|
||
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
|
||
-- met status ingevoerd, afgewezen of incompleet
|
||
SELECT DECODE(count(*), 0, f.fin_factuur_statuses_key, 2)
|
||
FROM fin_factuur f_t, cnt_contract c_t, bes_bestelopdr b_t, mld_opdr o_t
|
||
WHERE f_t.fin_factuur_verwijder is null
|
||
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
|
||
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
|
||
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
|
||
AND COALESCE(o_t.mld_uitvoerende_keys, COALESCE(b_t.prs_bedrijf_key, c_t.cnt_prs_bedrijf_key))
|
||
= COALESCE(o.mld_uitvoerende_keys, COALESCE(bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key))
|
||
AND f.fin_factuur_nr = f_t.fin_factuur_nr
|
||
AND f_t.fin_factuur_statuses_key in (1,2,3)
|
||
AND f.fin_factuur_statuses_key = 6) fin_factuur_statuses_key,
|
||
lk.prs_kostenplaats_nr lev_kpn
|
||
FROM fin_factuur f,
|
||
fin_factuurregel fr,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
bes_bestelopdr bo,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_bedrijf b_b,
|
||
prs_kostensoort k,
|
||
prs_kostensoortgrp kg,
|
||
prs_kostenplaats lk
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
|
||
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
|
||
AND f.fin_factuur_verwijder IS NULL;
|
||
|
||
-- De exact export kan meerdere administraties bevatten. In dat geval wordt de
|
||
-- regel opgeslagen met een prefix van het administratienummer met een ##
|
||
-- Hier splitsen we deze weer naar losse velden in de view. De kolom adm_exact is de bestandsnaam
|
||
-- zoals deze in de importdefinitie bepaald is.
|
||
CREATE OR REPLACE VIEW demo_v_export_exact_xml (
|
||
result,
|
||
result_order,
|
||
adm_exact
|
||
)
|
||
AS
|
||
SELECT SUBSTR (fac_rapport_regel, INSTR (fac_rapport_regel, '##') + 2),
|
||
fac_rapport_volgnr,
|
||
SUBSTR (fac_rapport_regel, 1, INSTR (fac_rapport_regel, '##') - 1)
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') <> 0
|
||
UNION ALL
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr, NULL
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'EXACT' AND INSTR (fac_rapport_regel, '##') = 0;
|
||
|
||
/* nieuwe view om oude demo_v_export_exact_xml view op termijn te vervangen. Door gebruik te maken
|
||
van de nieuwe view hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
|
||
export tabel staat dan op DEMO */
|
||
CREATE OR REPLACE VIEW demo_v_export_exact (
|
||
result,
|
||
result_order,
|
||
adm_exact
|
||
)
|
||
AS
|
||
SELECT result, result_order, adm_exact
|
||
FROM demo_v_export_exact_xml;
|
||
|
||
CREATE OR REPLACE VIEW demo_v_bron_export_exact_xml
|
||
(
|
||
fin_factuur_key,
|
||
oms25,
|
||
opdracht_id,
|
||
factuur_nr,
|
||
datum,
|
||
crdnr,
|
||
projectnr,
|
||
projectnaam,
|
||
bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
betaalref,
|
||
itemcode,
|
||
reknr,
|
||
kstplcode,
|
||
kstdrcode,
|
||
btw_code,
|
||
lev_kpn,
|
||
administratie
|
||
)
|
||
AS
|
||
SELECT fin_factuur_key,
|
||
fin_factuur_nr
|
||
|| ' - '
|
||
|| REPLACE (SUBSTR (fin_factuur_opmerking, 1, 30), ',', '')
|
||
oms25,
|
||
opdracht_id,
|
||
fin_factuur_nr,
|
||
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
|
||
crdnr,
|
||
project_nummer,
|
||
project_naam,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
|
||
bedrag,
|
||
bedrag_incl,
|
||
fin_factuur_nr || '/' || fin_factuur_debiteur_nr betaalref,
|
||
prs_kostensoort_oms itemcode,
|
||
prs_kostensoort_refcode reknr,
|
||
(SELECT prs_kostenplaats_nr
|
||
FROM prs_kostenplaats kp
|
||
WHERE kp.prs_kostenplaats_key = fg.prs_kostenplaats_key) kstplcode,
|
||
'KD999999' kstdrcode,
|
||
fin_btwtabelwaarde_code btw_code,
|
||
lev_kpn,
|
||
administratie
|
||
FROM ( SELECT g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
project_naam,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
SUM (fin_factuurregel_totaal) bedrag,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
prs_kostenplaats_key,
|
||
lev_kpn,
|
||
administratie
|
||
FROM demo_v_factuur_gegevens g, demo_exp_factuur e
|
||
WHERE fin_factuur_statuses_key = 6
|
||
AND g.fin_factuur_key = e.fin_factuur_key
|
||
GROUP BY g.fin_factuur_key,
|
||
opdracht_id,
|
||
project_nummer,
|
||
project_naam,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_opmerking,
|
||
fin_btwtabelwaarde_code,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_refcode,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
prs_kostenplaats_key,
|
||
lev_kpn,
|
||
administratie) fg;
|
||
|
||
-- Procedure om alle facturen te exporteren naar exact.
|
||
CREATE OR REPLACE PROCEDURE demo_select_exact_xml (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c (c_administratie VARCHAR2)
|
||
IS
|
||
SELECT crdnr, factuur_nr, MAX(datum) datum
|
||
FROM demo_v_bron_export_exact_xml
|
||
WHERE COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG')
|
||
GROUP BY crdnr, factuur_nr;
|
||
|
||
CURSOR c_sub (c_administratie VARCHAR2, c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
|
||
IS
|
||
SELECT *
|
||
FROM demo_v_bron_export_exact_xml
|
||
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
|
||
AND factuur_nr = c_factuur_nr
|
||
AND COALESCE(administratie, 'LEEG') = COALESCE(c_administratie, 'LEEG');
|
||
|
||
CURSOR c_adm
|
||
IS
|
||
SELECT NULL administratie FROM DUAL;
|
||
|
||
v_order_count NUMBER;
|
||
v_amount_sum NUMBER(10,2);
|
||
v_amount_sum_incl NUMBER(10,2);
|
||
v_count NUMBER;
|
||
v_sub_count NUMBER;
|
||
v_bestand VARCHAR2(12);
|
||
v_boekstuknummer NUMBER;
|
||
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
|
||
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
|
||
v_prefix VARCHAR2(10);
|
||
|
||
BEGIN
|
||
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
v_bestand := SUBSTR(p_applname, 1, 12);
|
||
v_crdnr := 'Q';
|
||
v_factuur_nr := 'Q';
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
DELETE fac_rapport
|
||
WHERE fac_rapport_node = v_bestand;
|
||
|
||
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
|
||
-- ## AAIT#36589
|
||
DELETE fin_kenmerkfactuur kf
|
||
WHERE fin_kenmerk_key = 43
|
||
AND fin_factuur_key IN (SELECT fin_factuur_key
|
||
FROM fin_factuur
|
||
WHERE fin_factuur_statuses_key <> 7);
|
||
|
||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||
-- deze keys gebruikt kunnen worden.
|
||
DELETE demo_exp_factuur;
|
||
|
||
INSERT INTO demo_exp_factuur (fin_factuur_key, administratie)
|
||
( SELECT DISTINCT fin_factuur_key, NULL
|
||
FROM demo_v_factuur_gegevens fg, prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
||
WHERE fg.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
||
AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND fg.fin_factuur_statuses_key = 6
|
||
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
|
||
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
|
||
);
|
||
|
||
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar
|
||
-- ## AAIT#36589
|
||
|
||
SELECT MAX(fin_kenmerkfactuur_waarde)
|
||
INTO v_boekstuknummer
|
||
FROM fin_kenmerkfactuur
|
||
WHERE fin_kenmerk_key = 43
|
||
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY');
|
||
|
||
IF v_boekstuknummer IS NULL
|
||
THEN
|
||
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '000000');
|
||
END IF;
|
||
|
||
FOR rec_adm IN c_adm
|
||
LOOP
|
||
BEGIN
|
||
v_order_count := 0;
|
||
v_amount_sum := 0;
|
||
v_amount_sum_incl := 0;
|
||
IF rec_adm.administratie IS NULL
|
||
THEN
|
||
v_prefix := NULL;
|
||
ELSE
|
||
v_prefix := rec_adm.administratie || '##';
|
||
END IF;
|
||
-- header
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<eExact>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<GLEntries>');
|
||
|
||
FOR rec IN c(rec_adm.administratie)
|
||
LOOP
|
||
BEGIN
|
||
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
|
||
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
|
||
THEN
|
||
v_boekstuknummer := v_boekstuknummer + 1;
|
||
v_crdnr := rec.crdnr;
|
||
v_factuur_nr := rec.factuur_nr;
|
||
END IF;
|
||
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Description', rec.factuur_nr);
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Date', rec.datum);
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Journal type="I" code="42"/>');
|
||
v_sub_count := 1;
|
||
FOR rec1 IN c_sub (rec_adm.administratie, v_crdnr, v_factuur_nr)
|
||
LOOP
|
||
BEGIN
|
||
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
|
||
demo_set_kenmerk('FIN', 43, rec1.fin_factuur_key, v_boekstuknummer, 0);
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Date', rec1.datum);
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
|
||
-- Meldingnummer alleen vermelden voor opdrachten met type 'Projectorder'
|
||
IF (rec1.projectnr IS NOT NULL)
|
||
THEN
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Project code="' || rec1.projectnr || '" type="I" status="A">');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.projectnaam);
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</Project>');
|
||
ELSE
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Description', rec1.oms25);
|
||
END IF;
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Item code="' || xml.char_to_html(rec1.itemcode) || '"/>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Amount>');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Debit', rec1.bedrag_txt);
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</Amount>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<Payment>');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'Reference', rec1.betaalref);
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</Payment>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<FinReferences>');
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'YourRef', rec1.betaalref);
|
||
demo_add_xml_element_p (v_bestand, v_prefix, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</FinReferences>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<FreeFields>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<FreeTexts>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '<FreeText number="3">' || rec1.opdracht_id || '</FreeText>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</FreeTexts>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</FreeFields>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</FinEntryLine>');
|
||
v_sub_count := v_sub_count + 1;
|
||
v_amount_sum := v_amount_sum + rec1.bedrag;
|
||
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
|
||
END;
|
||
END LOOP;
|
||
IF v_sub_count = 1
|
||
THEN
|
||
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
|
||
END IF;
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</GLEntry>');
|
||
v_order_count := v_order_count + 1;
|
||
END;
|
||
END LOOP;
|
||
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</GLEntries>');
|
||
demo_add_xml_row_p (v_bestand, v_prefix, '</eExact>');
|
||
|
||
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd (' || rec_adm.administratie || '). Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
/* nieuwe procedure om oude demo_select_exact_xml procedure op termijn te vervangen. Door gebruik te maken
|
||
van de nieuwe procedure hoeft er per klant geen specifieke export in de cust.sql. De prefix in de
|
||
export tabel staat dan op DEMO */
|
||
CREATE OR REPLACE PROCEDURE demo_select_exact (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
demo_select_exact_xml (p_applname, p_applrun);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE demo_export_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR c_fact
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM demo_exp_factuur f
|
||
, demo_v_factuur_gegevens fg
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.fin_factuur_statuses_key = 6;
|
||
|
||
CURSOR c_opdr
|
||
IS
|
||
SELECT distinct fg.mld_opdr_key, mld_statusopdr_key, m.mld_melding_status, m.mld_melding_key
|
||
FROM demo_exp_factuur f
|
||
, demo_v_factuur_gegevens fg
|
||
, mld_opdr o
|
||
, mld_melding m
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.mld_opdr_key = o.mld_opdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6;
|
||
|
||
CURSOR c_bes
|
||
IS
|
||
SELECT bo.*
|
||
FROM demo_exp_factuur f
|
||
, demo_v_factuur_gegevens fg
|
||
, bes_bestelopdr bo
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6;
|
||
|
||
-- pas de bedragen in het factuurschema aan als de laatste factuur ontvangen is.
|
||
CURSOR c_cnt
|
||
IS
|
||
SELECT DISTINCT fg.cnt_contract_key, fs.cnt_factuurschema_key
|
||
FROM demo_exp_factuur f,
|
||
demo_v_factuur_gegevens fg,
|
||
cnt_contract c,
|
||
cnt_factuurschema fs
|
||
WHERE f.fin_factuur_key = fg.fin_factuur_key
|
||
AND fg.cnt_contract_key = c.cnt_contract_key
|
||
AND c.cnt_contract_key = fs.cnt_contract_key
|
||
AND fg.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND laatste_factuur = 1
|
||
AND fg.fin_factuur_statuses_key = 6;
|
||
|
||
CURSOR c_sync_kostensoort
|
||
IS
|
||
SELECT COALESCE (kstd.prs_kostensoort_key, kvg.prs_kostensoort_key)
|
||
std_kostensoort_key,
|
||
f.prs_kostensoort_key fac_kostensoort_key,
|
||
f.fin_factuur_key
|
||
FROM fin_factuur f,
|
||
demo_exp_factuur ef,
|
||
mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline md,
|
||
prs_kostensoort kstd,
|
||
prs_kostensoort kvg
|
||
WHERE f.fin_factuur_key = ef.fin_factuur_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND std.prs_kostensoort_key = kstd.prs_kostensoort_key(+)
|
||
AND md.prs_kostensoort_key = kvg.prs_kostensoort_key(+);
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanvrager NUMBER;
|
||
v_bestelling_key NUMBER;
|
||
v_logdate DATE;
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
-- Facilitor user
|
||
v_aanvrager := 28142;
|
||
|
||
FOR rec1 IN c_bes
|
||
LOOP
|
||
BEGIN
|
||
-- indien nog niet afgemeld, dan maar even afmelden.
|
||
IF rec1.bes_bestelopdr_status = 3 THEN -- in behandeling
|
||
UPDATE bes_bestelopdr
|
||
SET bes_bestelopdr_status = 4
|
||
WHERE bes_bestelopdr_key= rec1.bes_bestelopdr_key
|
||
AND bes_bestelopdr_status = 3;
|
||
END IF;
|
||
|
||
IF rec1.bes_bestelopdr_status = 5 -- bevestigd
|
||
OR rec1.bes_bestelopdr_status = 4 -- in bestelling
|
||
OR rec1.bes_bestelopdr_status = 3 THEN
|
||
|
||
UPDATE bes_bestelopdr_item B
|
||
SET bes_bestelopdr_item_aantalontv = COALESCE(bes_bestelopdr_item_aantal, 0),
|
||
bes_bestelopdr_item_ontvangen = SYSDATE
|
||
WHERE b.bes_bestelopdr_key = rec1.bes_bestelopdr_key;
|
||
|
||
UPDATE bes_bestelling_item bi
|
||
SET bes_bestelling_item_aantalontv = COALESCE(bes_bestelling_item_aantal, 0)
|
||
WHERE EXISTS (SELECT bes_bestelopdr_key
|
||
FROM bes_bestelopdr_item boi
|
||
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key);
|
||
|
||
SELECT distinct bes_bestelling_key
|
||
INTO v_bestelling_key
|
||
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
|
||
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes_bestelopdr_key = rec1.bes_bestelopdr_key;
|
||
|
||
bes.updatebestelopdrstatus(rec1.bes_bestelopdr_key, v_aanvrager);
|
||
bes.updatebestellingstatus(v_bestelling_key, v_aanvrager);
|
||
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- set de status van de opdracht en neem de kosten over van de factuur.
|
||
FOR rec1 IN c_opdr
|
||
LOOP
|
||
BEGIN
|
||
-- indien nog niet afgemeld, dan maar even afmelden.
|
||
IF rec1.mld_statusopdr_key <> 6 AND rec1.mld_statusopdr_key <> 7 AND rec1.mld_statusopdr_key <> 9 THEN
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 6, v_aanvrager);
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 9, v_aanvrager);
|
||
END IF;
|
||
|
||
UPDATE mld_opdr o
|
||
SET mld_opdr_kosten =
|
||
(SELECT SUM (fin_factuurregel_totaal)
|
||
FROM demo_v_aanwezigfactuur f
|
||
, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.mld_opdr_key = o.mld_opdr_key
|
||
AND f.fin_factuur_statuses_key >= 6)
|
||
WHERE o.mld_opdr_key = rec1.mld_opdr_key
|
||
AND rec1.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso
|
||
|
||
-- update meldingstatus
|
||
mld.updatemeldingstatusAV (rec1.mld_melding_key, 0, v_aanvrager, 0);
|
||
-- zet de status naar verwerkt (user is facilitor)
|
||
mld.setopdrachtstatus (rec1.mld_opdr_key, 7, v_aanvrager);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Neem de kosten van de factuur over in het termijnbedrag
|
||
FOR rec1 IN c_cnt
|
||
LOOP
|
||
BEGIN
|
||
|
||
UPDATE cnt_factuurschema fs
|
||
SET (cnt_factuurschema_opmerking,
|
||
cnt_factuurschema_bedrag) =
|
||
(SELECT SUBSTR(DECODE(cnt_factuurschema_opmerking, NULL, '', cnt_factuurschema_opmerking || CHR(10)) || 'Bedrag na verwerken facturen ' || TO_CHAR(SYSDATE, 'DD-MM-YYYY') || ' aangepast van ' || cnt_factuurschema_bedrag || ' naar ' || SUM (fin_factuurregel_totaal),1,320) opmerking,
|
||
SUM (fin_factuurregel_totaal) totaal
|
||
FROM demo_v_aanwezigfactuur f
|
||
, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND f.cnt_contract_key = fs.cnt_contract_key
|
||
AND f.fin_factuur_boekmaand = fs.cnt_factuurschema_boekmaand
|
||
AND f.fin_factuur_statuses_key >= 6)
|
||
WHERE fs.cnt_factuurschema_key = rec1.cnt_factuurschema_key;
|
||
|
||
UPDATE cnt_contract c
|
||
SET c. cnt_contract_kosten = (SELECT SUM(cnt_factuurschema_bedrag)
|
||
FROM cnt_factuurschema fs
|
||
WHERE fs.cnt_contract_key = rec1.cnt_contract_key)
|
||
WHERE c.cnt_contract_key = rec1.cnt_contract_key;
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
FOR rec1 IN c_fact
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fin_factuur f
|
||
SET fin_factuur_statuses_key = 7
|
||
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
|
||
|
||
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
|
||
END;
|
||
END LOOP;
|
||
-- verwijder de enties uit de tijdelijke tabel. (AAEY#29465)
|
||
DELETE demo_exp_factuur;
|
||
END;
|
||
/
|
||
|
||
|
||
-- rapport voor calender weergave
|
||
CREATE OR REPLACE VIEW demo_v_rap_opdrcal
|
||
AS
|
||
SELECT ot.MLD_TYPEOPDR_OMSCHRIJVING
|
||
|| ': '
|
||
|| o.mld_melding_key
|
||
|| '/'
|
||
|| mld_opdr_bedrijfopdr_volgnr
|
||
|| ' '
|
||
|| mo.NAAM title,
|
||
o.MLD_OPDR_DATUMBEGIN van,
|
||
o.mld_opdr_einddatum tot,
|
||
o.MLD_OPDR_KEY,
|
||
CASE WHEN mo.TYPE = 'B' THEN '#343F4D ' ELSE '#00B0F0' END color
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_typeopdr ot,
|
||
MLD_V_UITVOERENDE mo
|
||
WHERE m.mld_melding_key = o.mld_opdr_key
|
||
AND o.MLD_TYPEOPDR_KEY = ot.MLD_TYPEOPDR_KEY
|
||
AND o.MLD_UITVOERENDE_KEYS = mo.MLD_UITVOERENDE_KEY
|
||
AND o.MLD_STATUSOPDR_KEY IN (3,
|
||
4,
|
||
5,
|
||
8,
|
||
10);
|
||
|
||
CREATE OR REPLACE VIEW DEMO_V_RAP_PRS_LOOKUP
|
||
AS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_email
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_inactief IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND (p.prs_perslid_einddatum IS NULL OR p.prs_perslid_einddatum > TRUNC (SYSDATE))
|
||
AND p.prs_perslid_apikey IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW demo_v_thema_vloerafwerking
|
||
(
|
||
alg_ruimte_key,
|
||
waarde
|
||
)
|
||
AS
|
||
SELECT r.alg_ruimte_key, va.fac_usrdata_omschr
|
||
FROM alg_ruimte r,
|
||
(SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr
|
||
FROM alg_onrgoedkenmerk ok,
|
||
fac_usrdata ud,
|
||
fac_kenmerkdomein rk,
|
||
alg_kenmerk k,
|
||
alg_v_aanwezigruimte rr
|
||
WHERE rk.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
|
||
AND TO_CHAR (ud.fac_usrdata_key) =
|
||
ok.alg_onrgoedkenmerk_waarde
|
||
AND k.alg_kenmerk_key = 2
|
||
AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va
|
||
WHERE va.alg_ruimte_key = r.alg_ruimte_key;
|
||
|
||
CREATE OR REPLACE VIEW DEMO_V_THEMA_ALG_TEMP
|
||
(
|
||
ALG_RUIMTE_KEY,
|
||
WAARDE
|
||
)
|
||
AS
|
||
SELECT ins_alg_ruimte_key alg_ruimte_key,
|
||
AVG (fac.safe_to_number (REPLACE (ins_deel_state, ',', '.'))) waarde
|
||
FROM ins_deel d, ins_srtdeel sd
|
||
WHERE ins_deel_verwijder IS NULL
|
||
AND COALESCE (ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtdeel_code = 'TEMP'
|
||
GROUP BY ins_alg_ruimte_key
|
||
UNION
|
||
SELECT alg_ruimte_key, -1 waarde
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_verwijder IS NULL
|
||
AND alg_ruimte_key NOT IN
|
||
(SELECT ii.ins_alg_ruimte_key
|
||
FROM ins_deel ii, ins_srtdeel jj
|
||
WHERE ii.ins_deel_verwijder IS NULL
|
||
AND COALESCE (ii.ins_deel_vervaldatum,
|
||
SYSDATE + 1) >
|
||
SYSDATE
|
||
AND ii.ins_srtdeel_key = jj.ins_srtdeel_key
|
||
AND jj.ins_srtdeel_code = 'TEMP');
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|