ALLR#87273 -- Rapport - reserveringen die geannuleerd zijn tijdens de lopende vergadering

svn path=/Customer/trunk/; revision=68409
This commit is contained in:
Jos Migo
2025-03-14 14:19:58 +00:00
parent ea4ec80778
commit cde0b6b304

View File

@@ -621,6 +621,10 @@ BEGIN
END;
/
-------------------
-- Rapportages --
-------------------
-- View om te laten zien welke standplaatsen uit de personenimport te mappen zijn aan het kenmerk met key 1200.
-- Dit kenmerk bevat de standplaatscode uit Workday
CREATE OR REPLACE VIEW allr_v_rap_standplaats
@@ -635,6 +639,194 @@ SELECT prs_kenmerk6, prs_kenmerk7,
FROM fac_imp_perslid
GROUP BY prs_kenmerk6, prs_kenmerk7) i;
-- View - zie ticket ALLR#87273
CREATE OR REPLACE VIEW allr_v_rap_res_annuleringen
AS
SELECT v.res_rsv_ruimte_key,
v.reserveringsnummer,
v.res_rsv_ruimte_aanmaak,
v.reeks,
v.res_rsv_ruimte_omschrijving,
v.alg_locatie_omschrijving,
v.res_ruimte_nr,
v.res_ruimte_key,
v.ruimte_gekoppeld_outlook,
v.ruimte_gekoppeld,
v.bron_aanmaak,
v.prs_perslid_naam_friendly
aanvrager,
v.res_rsv_ruimte_van,
v.res_rsv_ruimte_tot,
v.duur_afspraak_minuten,
CASE WHEN UPPER(v.res_status_fo_omschrijving) IN ('VERVALLEN', 'OPTIE') AND v.res_rsv_ruimte_verwijder IS NOT NULL
THEN 'Vervallen (geannuleerd)'
ELSE v.res_status_fo_omschrijving
END
res_status_fo,
CASE WHEN UPPER(v.res_status_fo_omschrijving) IN ('VERVALLEN', 'OPTIE') AND v.res_rsv_ruimte_verwijder IS NOT NULL
THEN v.res_rsv_ruimte_verwijder
ELSE NULL
END
geannuleerd_op,
v.geannuleerd_vanuit,
v.geannuleerd_door,
v.no_show,
ROUND(v.no_show_binnen_minuten)
no_show_binnen_minuten
FROM (SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr
reserveringsnummer,
rrr.res_rsv_ruimte_aanmaak,
rrr.res_rsv_ruimte_bezoekers,
rr.res_ruimte_nr,
rar.res_ruimte_key,
CASE
WHEN rr.res_ruimte_extern_id IS NOT NULL AND rr.res_ruimte_graphhooksecret IS NOT NULL
THEN 'is gekoppeld'
WHEN rr.res_ruimte_extern_id IS NOT NULL AND rr.res_ruimte_graphhooksecret IS NULL
THEN 'is gekoppeld (zonder subscription?)'
WHEN rr.res_ruimte_extern_id IS NULL AND rr.res_ruimte_graphhooksecret IS NOT NULL
THEN 'was gekoppeld (nog met subscription?)'
ELSE
'niet gekoppeld'
END
ruimte_gekoppeld_outlook,
CASE
WHEN rr.res_ruimte_extern_id IS NOT NULL THEN rr.res_ruimte_extern_id
ELSE NULL
END
ruimte_gekoppeld,
p.prs_perslid_naam_friendly,
rrr.res_rsv_ruimte_omschrijving,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) *24*60
duur_afspraak_minuten,
rrr.res_rsv_ruimte_externnr,
rrr.res_rsv_ruimte_externnr2,
rrr.res_rsv_ruimte_externsyncdate,
(SELECT CASE
WHEN prs_perslid_key IS NOT NULL THEN 'facilitor'
ELSE 'outlook'
END bron
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key = 59)
bron_aanmaak,
CASE
WHEN rrr.res_rsv_ruimte_externnr2 IS NOT NULL
AND rrr.res_rsv_ruimte_externsyncdate IS NOT NULL
THEN
TO_CHAR (rrr.res_rsv_ruimte_externsyncdate,
'dd-mm-yyyy hh24:mi:ss')
WHEN rrr.res_rsv_ruimte_externnr IS NULL
AND rrr.res_rsv_ruimte_externnr2 IS NULL
THEN
'nvt' -- deze reservering loopt niet mee in outlookkoppeling
ELSE
''
END
export_outlook_lastdate,
CASE
WHEN ( SELECT COUNT (*)
FROM res_rsv_ruimte
WHERE res_reservering_key = rrr.res_reservering_key
GROUP BY res_reservering_key) > 1
THEN
'reeks'
ELSE
'enkelvoudig'
END
reeks,
CASE
WHEN rrr.res_rsv_ruimte_dirtlevel > 0
THEN
'ongeldige reservering in Facilitor'
ELSE
NULL
END
status_dirty,
v.alg_gebouw_code,
l.alg_locatie_omschrijving,
rrr.res_status_bo_key,
(select res_status_bo_omschrijving from res_status_bo where res_status_bo_key = rrr.res_status_bo_key)
res_status_bo_omschrijving,
rrr.res_status_fo_key,
(select res_status_fo_omschrijving from res_status_fo where res_status_fo_key = rrr.res_status_fo_key)
res_status_fo_omschrijving,
rrr.res_rsv_ruimte_verwijder,
ann.max_verwijderdatum,
ann.teller_del,
ann.max_prs_perslid_key,
-- als VANUIT OUTLOOK en de verwijder_datum gezet, maar de Reservering is toch weer lopend, dan is het een ruimte-switch in outlook (van de ene naar de andere spreekkamer..)
------ Waar dus eerst verwijdering op wordt gedaan en daarna op de nieuwe ruimte_resource dezelfde res_rsv_ruimte_key weer opengezet wordt S(res_allow_undelete)..
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND ann.max_prs_perslid_key IS NULL AND rrr.res_rsv_ruimte_verwijder IS NULL THEN 'ja' ELSE '' END
ruimte_switch_outlook,
-- als ann_max_prs_perslid IS NULL dan vanuit outlook via system de delete...
CASE WHEN rrr.res_rsv_ruimte_verwijder IS NOT NULL AND ann.max_prs_perslid_key IS NULL
THEN 'vanuit outlook - gebruiker onbekend'
WHEN ann.max_prs_perslid_key IS NOT NULL
THEN 'vanuit facilitor'
ELSE ''
END
geannuleerd_vanuit,
CASE WHEN ann.max_prs_perslid_key IS NOT NULL
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = ann.max_prs_perslid_key)
END
geannuleerd_door,
-- Is de reservering-delete binnen de afspraak - dan kan dit dus door een automatische no-show vanuit het roompanel na 10/11 minuten zijn gebeurd..
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND ann.max_verwijderdatum BETWEEN rrr.res_rsv_ruimte_van AND rrr.res_rsv_ruimte_tot
THEN 'no_show binnen afspraak'
WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND ann.max_verwijderdatum < rrr.res_rsv_ruimte_van
THEN 'no_show voor afspraak'
WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND ann.max_verwijderdatum >= rrr.res_rsv_ruimte_van
THEN 'no_show na afspraak'
ELSE ''
END
no_show,
CASE WHEN ann.max_verwijderdatum IS NOT NULL AND rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND ann.max_verwijderdatum BETWEEN rrr.res_rsv_ruimte_van AND rrr.res_rsv_ruimte_tot
THEN (ann.max_verwijderdatum - rrr.res_rsv_ruimte_van)*24*60
ELSE NULL
END
no_show_binnen_minuten
FROM res_rsv_ruimte rrr,
prs_v_perslid_fullnames p,
res_ruimte_opstelling ro,
res_ruimte rr,
res_reservering r,
( SELECT res_ruimte_key,
COUNT (*),
MAX (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
alg_v_onroerendgoed_gegevens v,
alg_locatie l,
( SELECT ft.fac_tracking_refkey,
MAX (ft.fac_tracking_datum) max_verwijderdatum,
MAX (ft.prs_perslid_key) max_prs_perslid_key,
COUNT (*) teller_del
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
AND sn.fac_srtnotificatie_code = 'RESDEL'
GROUP BY ft.fac_tracking_refkey
) ann
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rrr.res_reservering_key = r.res_reservering_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimtE_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = v.alg_ruimte_key
AND v.alg_locatie_key = l.alg_locatie_key
AND rrr.res_rsv_ruimte_key = ann.fac_tracking_refkey (+)
) v
;
------------------------------------------------------
-- Notificatiejobs rondom Reserveringen en Catering --