ALLR#82984 -- Cateraar en notificatie bij mutatie en/of annulering van haar reserveringen

svn path=/Customer/trunk/; revision=65301
This commit is contained in:
Jos Migo
2024-06-26 20:09:08 +00:00
parent ed5abcb51e
commit cd979e4aa8

View File

@@ -634,6 +634,390 @@ SELECT prs_kenmerk6, prs_kenmerk7,
GROUP BY prs_kenmerk6, prs_kenmerk7) i;
------------------------------------------------------
-- Notificatiejobs rondom Reserveringen en Catering --
------------------------------------------------------
-- 1. ALLR_V_RAP_CATERING
----- reserveringen met catering (incl. laatste mutatiedatum)
-- 2. ALLR_V_RAP_CATERING_RGL
----- catering artikelen die besteld mogen worden conform de gestelde catalogus instellingen
-- 3. ALLR_V_RAP_CATERING_ALL
----- combinatie van reservering en bestelregels
-- 4. ALLR_V_RAP_CATERING_MUT
----- gestyld rapport voor meesturen bij notijob allr_v_noti_resupd - NOG NETJES UITWERKEN
-- 5. ALLR_V_NOTI_RESUPD
----- notificatiejob mutaties op reserveringen (resupd) per cateraar
-------- Cateraars zijn: leverancier op de catalogi verbruiksartikelen met emailadressen op kanaal 'Catering'
-------- flag 1, op CUST02 (node rapport) om in beeld te krijgen welke UPD's er zijn geweest dat afgelopen uur..
-- reserveringen met catering
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING
AS
SELECT DISTINCT
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
(SELECT st.res_status_fo_omschrijving
FROM res_status_fo st
WHERE st.res_status_fo_key = rrr.res_status_fo_key)
status_fo,
(SELECT st.res_status_bo_omschrijving
FROM res_status_bo st
WHERE st.res_status_bo_key = rrr.res_status_bo_key)
status_bo,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 60 --- resupd
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE
'%ERROR%')
laatste_upd,
rrr.res_rsv_ruimte_externsyncdate
datum_export,
rrr.res_rsv_ruimte_verwijder
datum_verwijderd,
cat.ins_discipline_key
ruimte_catalogus_key,
cat.ins_discipline_omschrijving
ruimte_catalogus,
rer.res_ruimte_key,
rer.res_ruimte_nr
ruimte,
alg.alg_gebouw_upper
gebouw,
alg.alg_locatie_upper
locatie,
alg.alg_locatie_key,
rrr.res_rsv_ruimte_van
datum_van,
rrr.res_rsv_ruimte_tot
datum_tot,
rrr.res_rsv_ruimte_omschrijving
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = rrr.res_rsv_ruimte_host_key)
gastheer,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
contact,
kstp.prs_kostenplaats_nr
kostenplaats_nr,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde kw, res_kenmerk k, res_srtkenmerk sk
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND k.res_kenmerk_key = kw.res_kenmerk_key
AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key
AND sk.res_srtkenmerk_key = 1) --- interne notitie
interne_notitie
FROM res_rsv_ruimte rrr,
res_rsv_artikel rar,
res_ruimte_opstelling rop,
res_ruimte rer,
ins_tab_discipline cat,
res_alg_ruimte rarm,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE cat.ins_discipline_key = rer.res_discipline_key
AND rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
AND rer.res_ruimte_key = rop.res_ruimte_key
AND rarm.res_ruimte_key = rer.res_ruimte_key
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
AND rrr.prs_kostenplaats_key = kstp.prs_kostenplaats_key (+)
UNION ALL
SELECT DISTINCT
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
reservering,
(SELECT st.res_status_fo_omschrijving
FROM res_status_fo st
WHERE st.res_status_fo_key = rrr.res_status_fo_key)
status_fo,
NULL
status_bo,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_key = 60 --- resupd
AND UPPER (COALESCE (fac_tracking_oms, ' ')) NOT LIKE
'%ERROR%')
laatste_upd,
rrr.res_rsv_ruimte_externsyncdate
last_export,
rrr.res_rsv_ruimte_verwijder
datum_verwijderd,
0
ruimte_catalogus_key,
'Losse catering'
ruimte_catalogus,
alg.alg_ruimte_key,
alg.alg_ruimte_nr || ' ' || alg.alg_ruimte_omschrijving
ruimte,
alg.alg_gebouw_upper
gebouw,
alg.alg_locatie_upper
locatie,
alg.alg_locatie_key,
rrr.res_rsv_ruimte_van
datum_van,
rrr.res_rsv_ruimte_tot
datum_tot,
COALESCE (rrr.res_rsv_ruimte_omschrijving, 'Catering ')
oms,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = rrr.res_rsv_ruimte_host_key)
gastheer,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
contact,
kstp.prs_kostenplaats_nr
kostenplaats_nr,
(SELECT res_kenmerkreservering_waarde
FROM res_kenmerkwaarde kw, res_kenmerk k, res_srtkenmerk sk
WHERE kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND k.res_kenmerk_key = kw.res_kenmerk_key
AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key
AND sk.res_srtkenmerk_key = 1) --- interne notitie op reservering
interne_notitie
FROM res_rsv_ruimte rrr,
res_rsv_artikel rar,
alg_v_ruimte_gegevens_all alg,
prs_kostenplaats kstp
WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND alg.alg_ruimte_key = rrr.alg_ruimte_key
AND rrr.prs_kostenplaats_key = kstp.prs_kostenplaats_key (+)
ORDER BY res_rsv_ruimte_key;
-- catering artikelen die besteld mogen worden conform de gestelde catalogus instellingen
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_RGL
AS
SELECT b.prs_bedrijf_key || rar.res_rsv_ruimte_key extra_key,
rar.res_rsv_ruimte_key,
b.prs_bedrijf_key bedrijfs_key,
b.prs_bedrijf_naam leverancier,
rar.res_artikel_key,
rar.res_rsv_artikel_key,
CASE WHEN rar.res_rsv_artikel_omschrijving IS NULL THEN art.res_artikel_omschrijving ELSE 'Vrij artikel: ' || rar.res_rsv_artikel_omschrijving END
res_artikel_omschrijving,
rar.res_rsv_artikel_aantal,
rar.res_rsv_artikel_levering,
art.res_discipline_key,
rar.res_rsv_artikel_externsyncdate,
cat.ins_discipline_omschrijving,
cat_s.res_disc_params_expire_dagen,
cat_s.res_disc_params_expire_tijd,
t1.t1,
TRUNC (fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_expire_dagen - 1,
'DAGEN',
t1,
res_disc_params_expire_tijd,
1)) bestelling_voor, --- we bestellen na de wijzigingshorizon! Dus trekken we er weer een dag vanaf
rar.res_rsv_artikel_verwijder
FROM res_rsv_artikel rar,
res_artikel art,
ins_tab_discipline cat,
res_disc_params cat_s,
prs_bedrijf b,
(SELECT COALESCE (cat_t1, res_t1) t1
FROM (SELECT (SELECT fac_setting_pvalue
FROM fac_setting
WHERE fac_setting_name = 'res_cat_t1')
cat_t1,
(SELECT fac_setting_pvalue
FROM fac_setting
WHERE fac_setting_name = 'res_t1')
res_t1
FROM DUAL)) t1
WHERE art.res_artikel_key = rar.res_artikel_key
AND cat.ins_discipline_key = art.res_discipline_key
-- AND rar.res_rsv_artikel_verwijder IS NULL
AND cat_s.res_ins_discipline_key = cat.ins_discipline_key
AND cat_s.prs_bedrijf_key = b.prs_bedrijf_key (+);
-- combinatie van reservering en bestelregels
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_ALL
AS
SELECT cr.bedrijfs_key,
cr.leverancier,
(SELECT SUBSTR (ba.prs_bedrijfadres_url,
INSTR (ba.prs_bedrijfadres_url, ':') + 1)
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = cr.bedrijfs_key
-- AND ba.alg_locatie_key = c.alg_locatie_key
AND ba.prs_bedrijfadres_type = 'O'
AND ba.mld_typeopdr_key IS NULL) mailadres, -- halen we op vanuit opdrachtkanaal locatie
c.res_rsv_ruimte_key,
cr.bedrijfs_key extra_key, -- filterveld vanuit noti-job
c.reservering,
c.oms omschrijving,
c.status_fo,
ruimte_catalogus,
cr.res_disc_params_expire_dagen,
cr.res_disc_params_expire_tijd,
NULL afleverlocatie, -- voor alliander wat mee doen?
c.locatie,
c.gebouw,
c.ruimte,
c.kostenplaats_nr kostenplaats_nr,
c.interne_notitie interne_notitie,
cr.ins_discipline_omschrijving catalogus,
cr.res_artikel_omschrijving artikel,
cr.res_rsv_artikel_aantal aantal,
CASE
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 1
THEN
'Zondag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 2
THEN
'Maandag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 3
THEN
'Dinsdag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 4
THEN
'Woensdag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 5
THEN
'Donderdag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 6
THEN
'Vrijdag'
WHEN TO_CHAR (cr.res_rsv_artikel_levering, 'd') = 7
THEN
'Zaterdag'
END leverdag, --- zondag is dag 1 van de week
cr.res_rsv_artikel_levering artikel_levering,
TO_CHAR (cr.res_rsv_artikel_levering, 'dd-mm-yyyy') leverdatum,
TO_CHAR (cr.res_rsv_artikel_levering, 'hh24:mi') levertijd,
c.datum_verwijderd
FROM allr_v_rap_catering c, allr_v_rap_catering_rgl cr
WHERE c.res_rsv_ruimte_key = cr.res_rsv_ruimte_key;
-- Gestyld rapport voor meesturen bij notijob allr_v_noti_resupd
CREATE OR REPLACE VIEW ALLR_V_RAP_CATERING_MUT
AS
SELECT v.*,
tr.mutaties,
TO_CHAR (tr.datum_vanaf, 'dd-mm-yyyy hh24:mi:ss')
datum_vanaf,
TO_CHAR (tr.datum_tm, 'dd-mm-yyyy hh24:mi:ss')
datum_tm,
tr.datum_vanaf
datum_vanaf_date,
tr.datum_tm
datum_tm_date,
CASE WHEN tr.fac_srtnotificatie_code = 'RESDEL' AND v.datum_verwijderd IS NOT NULL THEN 'RESDEL' ELSE 'RESUPD' END
fac_srtnotificatie_code
FROM allr_v_rap_catering_all v,
(SELECT f.fac_tracking_refkey,
LISTAGG (
TO_CHAR(f.fac_tracking_datum, 'dd-mm-yyyy hh24:mi:ss') || ': ' || f.fac_tracking_oms,
CHR(10) || CHR(13)
)
WITHIN GROUP (ORDER BY f.fac_tracking_datum)
AS mutaties,
(SELECT fac_notificatie_job_lastrun - fac_notificatie_job_interval/24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD')
datum_vanaf,
(SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD')
datum_tm,
sn.fac_srtnotificatie_code
FROM fac_tracking f, fac_srtnotificatie sn
WHERE f.fac_srtnotificatie_key IN (60, 63) -- resupd en resdel
AND f.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND f.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_lastrun - fac_notificatie_job_interval/24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD')
AND (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'ALLR_V_NOTI_RESUPD')
GROUP BY f.fac_tracking_refkey, sn.fac_srtnotificatie_code
)tr
WHERE v.res_rsv_ruimte_key = tr.fac_tracking_refkey
AND v.bedrijfs_key IS NOT NULL
;
----- notificatiejob mutaties op reserveringen (resupd) per cateraar
-------- Cateraars zijn: leverancier op de catalogi verbruiksartikelen met emailadressen op kanaal 'Catering'
-------- flag 1, op CUST02 (node rapport) om in beeld te krijgen welke UPD's er zijn geweest dat afgelopen uur..
CREATE OR REPLACE VIEW ALLR_V_NOTI_RESUPD
(
SENDER,
RECEIVER,
TEXT,
CODE,
KEY,
XKEY,
XSENDER,
XEMAIL,
XMOBILE
)
AS
SELECT 4
sender,
NULL
receiver,
'Cateraar ' || v.leverancier || ' - mutatie/annulerings-lijst'
tekst,
v.fac_srtnotificatie_code
code,
1402
key, -- Rapport met daarin de specificatie van de mutaties opgenomen
v.bedrijfs_key
xkey, -- extra filter-key voor rapport opnemen in rapport-kolom extra_key - alle reserveringen van die leverancier tonen..
NULL
xsender,
v.mailadres
xemail,
NULL
xmobile
FROM (SELECT lev.leverancier,
lev.bedrijfs_key,
lev.mailadres,
r.res_rsv_ruimte_key,
r.reservering,
r.datum_van,
COALESCE (r.datum_verwijderd, r.laatste_upd)
laatste_upd,
sn.fac_srtnotificatie_code
FROM allr_v_rap_catering r, -- basisview van alle catering-reserveringen met laatste_upd
( SELECT res_rsv_ruimte_key,
bedrijfs_key,
leverancier,
mailadres
FROM allr_v_rap_catering_all
GROUP BY res_rsv_ruimte_key,
bedrijfs_key,
leverancier,
mailadres) lev,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'CUST02' -- node rapport
AND r.res_rsv_ruimte_key = lev.res_rsv_ruimte_key
AND lev.bedrijfs_key IS NOT NULL
AND lev.mailadres IS NOT NULL
AND r.datum_van >= SYSDATE -- actuele reserveringen
AND (
(r.status_fo = 'Definitief' AND r.datum_verwijderd IS NULL)
OR
(r.status_fo = 'Optie' AND r.datum_verwijderd IS NOT NULL)
OR
(r.status_fo = 'Vervallen' AND r.datum_verwijderd IS NOT NULL)
)
AND COALESCE (r.datum_verwijderd, r.laatste_upd) >=
(SELECT COALESCE (fac_notificatie_job_lastrun,
TRUNC (SYSDATE))
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'ALLR_V_NOTI_RESUPD')) v
GROUP BY v.leverancier,
v.bedrijfs_key,
v.mailadres,
v.fac_srtnotificatie_code;
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE allr_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS