ALLR#82984 -- Cateraar en notificatie bij mutatie en/of annulering van haar reserveringen
svn path=/Customer/trunk/; revision=65301
This commit is contained in:
384
AA/ALLR/allr.sql
384
AA/ALLR/allr.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user