FMHN#89949 Rapport uitbreiden met gegevens uit meldingen en reserveringen

svn path=/Customer/trunk/; revision=71151
This commit is contained in:
Sander Schepers
2025-12-04 15:32:47 +00:00
parent df825c71c7
commit 5fe12c58d1

View File

@@ -23998,14 +23998,10 @@ AS
CREATE OR REPLACE VIEW FMHN_V_AANVRAAG_RES
(
KEY,
RES_RSV_RUIMTE_KEY,
LOCATIE_AANVRAAG,
LOCATIE,
GEBOUW,
GEBOUW_CODE,
VERDIEPING,
RUIMTE_NR,
RESNR,
AANVRAAG_DATUM,
DATUM,
VAN,
DATUM_TOT,
@@ -24016,250 +24012,178 @@ CREATE OR REPLACE VIEW FMHN_V_AANVRAAG_RES
VOORZIENINGEN,
BESTEMD_VOOR,
AANVRAGER,
AANVRAGER_TELEFOONNR,
AANVRAGER_MOBIEL,
PRS_KOSTENPLAATS_NR,
PRS_KOSTENPLAATS_OMSCHRIJVING,
ACTIVITEIT,
REFERENTIE,
TELEFOONNR_CONTACTPERSOON,
TOELICHTING,
TOTALE_KOSTEN,
BEHANDELAAR,
SOORT_EVENEMENT,
RES_GEANNULEERD,
START_MELDING,
AANVRAAG_AANVRAGER,
AANVRAAG_OPDRACHTGEVER,
AANVRAAG_STATUS,
AANVRAAG_TOELICHTING,
PC_NR_ZAAL,
PC_NR_VOORZIENINGEN,
AANVRAAG_AFGEWEZEN_DOOR
)
AS
SELECT m.mld_melding_key
AS key,
rrr.res_rsv_ruimte_key
AS res_rsv_ruimte_key,
(SELECT alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = m.mld_alg_locatie_key)
AS locatie_aanvraag,
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key)
AS locatie,
(SELECT alg_locatie_plaats
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key)
AS gebouw,
(SELECT alg_gebouw_code
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key)
AS gebouw_code,
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key)
AS verdieping,
r2a.ruimte_nr,
NVL2 (res.res_reservering_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
NULL)
AS resnr,
TRUNC (rrr.res_rsv_ruimte_van)
AS datum,
TO_CHAR (rrr.res_rsv_ruimte_van, 'HH24:MI')
AS van,
TRUNC (rrr.res_rsv_ruimte_tot)
AS datum_tot,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'HH24:MI')
AS tot,
rrr.res_rsv_ruimte_omschrijving
AS omschrijving,
rrr.res_rsv_ruimte_bezoekers
AS aantal,
r2a.opstelling,
-- Artikelen
( SELECT LISTAGG (
rra.res_rsv_artikel_aantal
|| ' '
|| ra.res_artikel_omschrijving
|| ', '
|| CHR (10))
WITHIN GROUP (ORDER BY rra.res_rsv_artikel_aantal)
FROM res_rsv_artikel rra
JOIN res_artikel ra
ON ra.res_artikel_key = rra.res_artikel_key
WHERE rra.res_rsv_artikel_verwijder IS NULL
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
GROUP BY rra.res_rsv_ruimte_key)
AS voorzieningen,
-- Persoonsgegevens
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
AS bestemd_voor,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
AS aanvrager,
(SELECT pc.prs_perslid_telefoonnr
FROM prs_perslid pc
WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
AS aanvrager_telefoonnr,
(SELECT pc.prs_perslid_mobiel
FROM prs_perslid pc
WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
AS aanvrager_mobiel,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
ra.res_activiteit_omschrijving
AS activiteit,
-- Kenmerken
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.RES_SRTKENMERK_KEY = 21
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS referentie,
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.RES_SRTKENMERK_KEY = 41
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS telefoonnr_contactpersoon,
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.RES_SRTKENMERK_KEY = 1
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS toelichting,
(SELECT MAX (p.PRS_DEP_AFD)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
JOIN FMHN_V_IDM_MEDEWERKER p
ON fac.safe_to_number (
kmw.res_kenmerkreservering_waarde) =
p.PRS_PERSLID_KEY
WHERE km.RES_SRTKENMERK_KEY = 162
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS behandelaar,
(SELECT MAX (ud.fac_usrdata_omschr)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
JOIN fac_usrdata ud
ON fac.safe_to_number (
kmw.res_kenmerkreservering_waarde) =
ud.fac_usrdata_key
WHERE km.RES_SRTKENMERK_KEY = 181
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS soort_evenement,
rrr.res_rsv_ruimte_verwijder
AS res_geannuleerd,
-- Meldingsinfo (altijd beschikbaar)
m.mld_melding_datum,
aanvr.prs_dep_afd
AS aanvraag_aanvrager,
opd.prs_dep_afd
AS aanvraag_opdrachtgever,
ms.mld_statuses_omschrijving
AS aanvraag_status,
m.mld_melding_opmerking
AS aanvraag_toelichting,
-- PC_nr_zaal
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.RES_SRTKENMERK_KEY = 61
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS pc_nr_zaal,
-- PC_nr_voorzieningen
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
FROM RES_V_AANWEZIGKENMERKWAARDE kmw
JOIN res_kenmerk km
ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.RES_SRTKENMERK_KEY = 62
AND kmw.RES_RSV_RUIMTE_KEY = rrr.res_rsv_ruimte_key)
AS pc_nr_voorzieningen,
(SELECT MAX (p.prs_dep_afd)
FROM fac_tracking t
JOIN FMHN_V_IDM_MEDEWERKER p
ON t.prs_perslid_key = p.prs_perslid_key
WHERE t.fac_srtnotificatie_key = 52
AND t.fac_tracking_refkey = m.mld_melding_key)
AS aanvraag_afgewezen_door
FROM mld_melding m
LEFT JOIN res_reservering res
ON res.mld_melding_key = m.mld_melding_key
LEFT JOIN res_rsv_ruimte rrr
ON rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
LEFT JOIN res_activiteit ra
ON rrr.res_activiteit_key = ra.res_activiteit_key
LEFT JOIN res_srtactiviteit rsa
ON ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
LEFT JOIN prs_kostenplaats k
ON rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
LEFT JOIN prs_perslid p
ON rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
LEFT JOIN mld_statuses ms
ON m.mld_melding_status = ms.mld_statuses_key
LEFT JOIN FMHN_V_IDM_MEDEWERKER aanvr
ON aanvr.prs_perslid_key = m.prs_perslid_key
LEFT JOIN FMHN_V_IDM_MEDEWERKER opd
ON opd.prs_perslid_key = m.prs_perslid_key_voor
LEFT JOIN
( SELECT r.res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) AS opstelling,
MAX (ro.res_ruimte_opstel_bezoekers) AS capaciteit,
MAX (ra.alg_ruimte_key) AS alg_ruimte_key,
MAX (rr.res_ruimte_nr) AS ruimte_nr
FROM res_rsv_ruimte r
JOIN res_ruimte_opstelling ro
ON r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
JOIN res_opstelling o
ON ro.res_opstelling_key = o.res_opstelling_key
JOIN res_ruimte rr
ON ro.res_ruimte_key = rr.res_ruimte_key
JOIN res_alg_ruimte ra
ON rr.res_ruimte_key = ra.res_ruimte_key
WHERE r.res_rsv_ruimte_verwijder IS NULL
GROUP BY r.res_rsv_ruimte_key
UNION ALL
SELECT rrr.res_rsv_ruimte_key,
'' AS opstelling,
NULL AS capaciteit,
rrr.alg_ruimte_key,
r.alg_ruimte_nr
FROM res_rsv_ruimte rrr
JOIN alg_ruimte r ON r.alg_ruimte_key = rrr.alg_ruimte_key
WHERE rrr.alg_ruimte_key IS NOT NULL) r2a
ON r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
-- Alleen meldingen van na 2010
WHERE m.mld_stdmelding_key = 25 -- Standaardmelding Aanvraag Evenement
AND m.mld_alg_locatie_key = 18 -- Alleen Rijnstraat 8
AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY');
WITH
-- r2a: ruimte_nr + opstelling + alg_ruimte_key (1 rij per res_rsv_ruimte_key)
r2a AS (
SELECT res_rsv_ruimte_key,
MAX(o.res_opstelling_omschrijving) AS opstelling,
MAX(ra.alg_ruimte_key) AS alg_ruimte_key,
MAX(rr.res_ruimte_nr) AS ruimte_nr
FROM res_rsv_ruimte r
JOIN res_ruimte_opstelling ro ON r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
JOIN res_opstelling o ON ro.res_opstelling_key = o.res_opstelling_key
JOIN res_ruimte rr ON ro.res_ruimte_key = rr.res_ruimte_key
JOIN res_alg_ruimte ra ON rr.res_ruimte_key = ra.res_ruimte_key
WHERE r.res_rsv_ruimte_verwijder IS NULL
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT rrr.res_rsv_ruimte_key,
'' AS opstelling,
rrr.alg_ruimte_key AS alg_ruimte_key,
r.alg_ruimte_nr AS ruimte_nr
FROM res_rsv_ruimte rrr
JOIN alg_ruimte r ON r.alg_ruimte_key = rrr.alg_ruimte_key
WHERE rrr.alg_ruimte_key IS NOT NULL
),
-- locatie_aanvraag: alg_locatie_omschrijving op basis van alg_ruimte_key (1 rij per alg_ruimte_key)
loc AS (
SELECT r.alg_ruimte_key,
MAX(l.alg_locatie_omschrijving) AS locatie_aanvraag
FROM alg_ruimte r
JOIN alg_verdieping v ON v.alg_verdieping_key = r.alg_verdieping_key
JOIN alg_gebouw g ON g.alg_gebouw_key = v.alg_gebouw_key
JOIN alg_locatie l ON l.alg_locatie_key = g.alg_locatie_key
GROUP BY r.alg_ruimte_key
),
-- voorzieningen: geaggregeerde tekst (1 rij per res_rsv_ruimte_key)
voorzieningen AS (
SELECT rra.res_rsv_ruimte_key,
LISTAGG(
rra.res_rsv_artikel_aantal || ' ' || ra.res_artikel_omschrijving || ', ' || CHR(10)
) WITHIN GROUP (ORDER BY rra.res_rsv_artikel_aantal) AS voorzieningen
FROM res_rsv_artikel rra
JOIN res_artikel ra
ON ra.res_artikel_key = rra.res_artikel_key
WHERE rra.res_rsv_artikel_verwijder IS NULL
GROUP BY rra.res_rsv_ruimte_key
),
-- totale kosten: som(aantal * stuksprijs) (1 rij per res_rsv_ruimte_key)
kosten AS (
SELECT rra.res_rsv_ruimte_key,
SUM(NVL(rra.res_rsv_artikel_aantal, 0) * NVL(ra.res_artikel_prijs, 0)) AS totale_kosten
FROM res_rsv_artikel rra
JOIN res_artikel ra
ON ra.res_artikel_key = rra.res_artikel_key
WHERE rra.res_rsv_artikel_verwijder IS NULL
GROUP BY rra.res_rsv_ruimte_key
)
SELECT
m.mld_melding_key AS key,
l2.locatie_aanvraag AS locatie_aanvraag,
r2a.ruimte_nr,
NVL2(res.res_reservering_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
NULL) AS resnr,
TRUNC(m.mld_melding_datum) AS aanvraag_datum,
TRUNC(rrr.res_rsv_ruimte_van) AS datum,
TO_CHAR(rrr.res_rsv_ruimte_van, 'HH24:MI') AS van,
TRUNC(rrr.res_rsv_ruimte_tot) AS datum_tot,
TO_CHAR(rrr.res_rsv_ruimte_tot, 'HH24:MI') AS tot,
rrr.res_rsv_ruimte_omschrijving AS omschrijving,
rrr.res_rsv_ruimte_bezoekers AS aantal,
r2a.opstelling,
vz.voorzieningen,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
) AS bestemd_voor,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key
) AS aanvrager,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
act.res_activiteit_omschrijving AS activiteit,
(SELECT MAX(kmw.res_kenmerkreservering_waarde)
FROM res_v_aanwezigkenmerkwaarde kmw
JOIN res_kenmerk km ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.res_srtkenmerk_key = 21
AND kmw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
) AS referentie,
(SELECT MAX(kmw.res_kenmerkreservering_waarde)
FROM res_v_aanwezigkenmerkwaarde kmw
JOIN res_kenmerk km ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.res_srtkenmerk_key = 41
AND kmw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
) AS telefoonnr_contactpersoon,
(SELECT MAX(kmw.res_kenmerkreservering_waarde)
FROM res_v_aanwezigkenmerkwaarde kmw
JOIN res_kenmerk km ON km.res_kenmerk_key = kmw.res_kenmerk_key
WHERE km.res_srtkenmerk_key = 1
AND kmw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
) AS toelichting,
NVL(ko.totale_kosten, 0) AS totale_kosten,
(SELECT MAX(p.prs_dep_afd)
FROM res_v_aanwezigkenmerkwaarde kmw
JOIN res_kenmerk km ON km.res_kenmerk_key = kmw.res_kenmerk_key
JOIN fmhn_v_idm_medewerker p
ON fac.safe_to_number(kmw.res_kenmerkreservering_waarde) = p.prs_perslid_key
WHERE km.res_srtkenmerk_key = 162
AND kmw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
) AS behandelaar,
(SELECT MAX(ud.fac_usrdata_omschr)
FROM res_v_aanwezigkenmerkwaarde kmw
JOIN res_kenmerk km ON km.res_kenmerk_key = kmw.res_kenmerk_key
JOIN fac_usrdata ud
ON fac.safe_to_number(kmw.res_kenmerkreservering_waarde) = ud.fac_usrdata_key
WHERE km.res_srtkenmerk_key = 181
AND kmw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
) AS soort_evenement,
rrr.res_rsv_ruimte_verwijder AS res_geannuleerd,
aanvr.prs_dep_afd AS aanvraag_aanvrager,
opd.prs_dep_afd AS aanvraag_opdrachtgever,
ms.mld_statuses_omschrijving AS aanvraag_status,
m.mld_melding_opmerking AS aanvraag_toelichting,
(SELECT MAX(p.prs_dep_afd)
FROM fac_tracking t
JOIN fmhn_v_idm_medewerker p
ON t.prs_perslid_key = p.prs_perslid_key
WHERE t.fac_srtnotificatie_key = 52
AND t.fac_tracking_refkey = m.mld_melding_key
) AS aanvraag_afgewezen_door
FROM mld_melding m
LEFT JOIN res_rsv_ruimte rrr
ON m.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
LEFT JOIN res_reservering res
ON rrr.res_reservering_key = res.res_reservering_key
LEFT JOIN res_activiteit act
ON rrr.res_activiteit_key = act.res_activiteit_key
LEFT JOIN prs_kostenplaats k
ON rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
LEFT JOIN mld_statuses ms
ON m.mld_melding_status = ms.mld_statuses_key
LEFT JOIN fmhn_v_idm_medewerker aanvr
ON aanvr.prs_perslid_key = m.prs_perslid_key
LEFT JOIN fmhn_v_idm_medewerker opd
ON opd.prs_perslid_key = m.prs_perslid_key_voor
LEFT JOIN r2a
ON r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
LEFT JOIN loc l2
ON l2.alg_ruimte_key = r2a.alg_ruimte_key
LEFT JOIN voorzieningen vz
ON vz.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
LEFT JOIN kosten ko
ON ko.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
WHERE m.mld_stdmelding_key = 25
AND m.mld_melding_datum >= DATE '2010-01-01';
CREATE OR REPLACE VIEW FMHN_V_NOTI_KLANTVERZOEK
(