FCLT#85890 Orderqueue en notificatiequeue savepoint

svn path=/Database/trunk/; revision=67045
This commit is contained in:
Jos Groot Lipman
2024-11-14 16:05:17 +00:00
parent 86b25c07ec
commit 709892b347
8 changed files with 326 additions and 148 deletions

View File

@@ -64,6 +64,13 @@ AS
RETURN NUMBER;
FUNCTION bes_besteed_budget_agb (p_kp_key IN NUMBER)
RETURN NUMBER;
PROCEDURE notifybestellingbedrijven (pbestelkey NUMBER,
ptrackingkey NUMBER);
PROCEDURE notifybestelopdrbedrijven (pbestelopdrkey NUMBER,
ptrackingkey NUMBER);
END bes;
/
@@ -2216,6 +2223,44 @@ AS
RETURN l_budgetbesteld;
END;
PROCEDURE notifybestellingbedrijven (pbestelkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
NULL; -- TODO?
END;
PROCEDURE notifybestelopdrbedrijven (pbestelopdrkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
FOR bedrijfrec IN (SELECT b.prs_bedrijf_key,
CASE WHEN b.prs_bedrijf_key = o.prs_bedrijf_key THEN 'BO' ELSE 'BOG' END bedrijfadres_type,
l.alg_locatie_key,
o.bes_bestelopdr_id
FROM prs_bedrijf b,
bes_bestelopdr o,
mld_adres ma,
alg_locatie l
WHERE o.bes_bestelopdr_key = pbestelopdrkey
AND b.prs_bedrijf_key = o.prs_bedrijf_key
AND o.mld_adres_key_lev = ma.mld_adres_key
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND ( b.prs_bedrijf_key = o.prs_bedrijf_key -- type 'B'
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'BOG')))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => pbestelopdrkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.bes_bestelopdr_id,
plocatie_key => bedrijfrec.alg_locatie_key);
END LOOP;
END;
END bes;
/

View File

@@ -20,6 +20,9 @@ CREATE OR REPLACE PACKAGE cnt AS
FUNCTION sprintf (ps IN VARCHAR2 , p_contract_key IN NUMBER) RETURN VARCHAR2;
PROCEDURE remove(p_contract_key IN NUMBER);
PROCEDURE notifycontractbedrijven (pcntkey NUMBER,
ptrackingkey NUMBER);
PRAGMA RESTRICT_REFERENCES (cnt_contract_status, WNDS, WNPS);
END cnt;
/
@@ -652,6 +655,78 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
-- In geen enkele omgeving is cnt_contract_key in deze tabel ingevuld.
END;
PROCEDURE notifycontractbedrijven (pcntkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
FOR bedrijfrec
IN (SELECT b.prs_bedrijf_key,
l.alg_locatie_key,
CASE WHEN b.prs_bedrijf_key = c.cnt_prs_bedrijf_key THEN 'C' ELSE 'CG' END bedrijfadres_type,
cnt_contract_nummer_intern,
COALESCE (l.alg_locatie_email, ins_discipline_email)
FROM prs_bedrijf b,
cnt_contract c,
ins_tab_discipline d,
alg_locatie l,
( SELECT cnt_contract_key,
DECODE (MIN (cp1.cnt_alg_plaats_code),
'L', MIN (cp1.cnt_alg_plaats_key),
MIN (alg_boom.alg_locatie_key))
cnt_locatie_key
FROM cnt_contract_plaats cp1,
(SELECT alg_r.alg_ruimte_key,
alg_r.alg_verdieping_key,
alg_v.alg_gebouw_key,
alg_g.alg_locatie_key,
'R' alg_type
FROM alg_ruimte alg_r, alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL),
alg_v.alg_verdieping_key,
alg_v.alg_gebouw_key,
alg_g.alg_locatie_key,
'V' alg_type
FROM alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL),
TO_NUMBER (NULL),
alg_g.alg_gebouw_key,
alg_g.alg_locatie_key,
'G' alg_type
FROM alg_gebouw alg_g) alg_boom
WHERE cp1.cnt_alg_plaats_key =
CASE cp1.cnt_alg_plaats_code
WHEN 'G' THEN alg_boom.alg_gebouw_key(+)
WHEN 'V' THEN alg_boom.alg_verdieping_key(+)
WHEN 'R' THEN alg_boom.alg_ruimte_key(+)
END
AND cp1.cnt_alg_plaats_code = alg_boom.alg_type(+)
AND cp1.cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key
HAVING COUNT (1) = 1) cp
WHERE c.cnt_contract_key = pcntkey
AND d.ins_discipline_key = c.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND cp.cnt_locatie_key = l.alg_locatie_key(+)
AND ( b.prs_bedrijf_key = c.cnt_prs_bedrijf_key -- type 'C'
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'CG')))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => pcntkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.cnt_contract_nummer_intern,
plocatie_key => bedrijfrec.alg_locatie_key);
END LOOP;
END;
END cnt;
/

View File

@@ -147,16 +147,16 @@ CREATE OR REPLACE PACKAGE fac
PROCEDURE trackaction_withkey (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2, psubjectkey NUMBER, new_fac_tracking_key OUT NUMBER);
PROCEDURE backtrackaction (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE);
PROCEDURE notifytracking(psrtnotificatiekey NUMBER, pperslid_key NUMBER, ptracking_oms VARCHAR2, prefkey NUMBER, ptrackingkey NUMBER DEFAULT NULL);
PROCEDURE notifytrackingbedrijven(ptrackingkey NUMBER);
PROCEDURE notifybedrijf(pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2,
psrtnotificatie_key NUMBER,
prefkey NUMBER,
ptrackingkey NUMBER,
ptracking_oms VARCHAR2 DEFAULT NULL,
pperslid_key NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL,
ptrackingkey NUMBER DEFAULT NULL,
plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_key NUMBER DEFAULT NULL,
@@ -4059,8 +4059,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS
bericht := mld.opdrsprintf (loms, prefkey);
END IF;
mld.notifyopdrbedrijven(psrtnotificatiekey, prefkey, pperslid_key, ptracking_oms, ptrackingkey);
-- In 4i notificeerden we alleen toekenning aan de uitvoerder
-- In 5i tracken we veel meer, en is er dus ook de mogelijkheid
-- tot notificeren van tracking
@@ -4772,16 +4770,72 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END;
-- Notificeren via een technisch adres
PROCEDURE notifytrackingbedrijven (ptrackingkey NUMBER)
AS
lxmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE;
lcode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_refkey fac_tracking.fac_tracking_refkey%TYPE;
BEGIN
SELECT fac_srtnotificatie_xmlnode,
fac_srtnotificatie_code,
fac_tracking_refkey
INTO lxmlnode,
lcode,
l_refkey
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE ft.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key;
-- we maken een uitstapje naar een module specifieke mld.notifymeldingbedrijven
-- die bijvoorbeeld locatie_key, opdrachttype en afzender kan bepalen
-- Daarmee worden we vervolgens weer doorgeleid naar PROCEDURE notifybedrijf (iets verderop)
CASE
WHEN lxmlnode = 'melding'
THEN
mld.notifymeldingbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'opdracht'
THEN
mld.notifyopdrbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'reservering' OR lxmlnode = 'xreservering'
THEN
res.notifyreserveringbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'bestelling'
THEN
bes.notifybestellingbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'bestelopdr'
THEN
bes.notifybestelopdrbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'afspraak' OR lxmlnode = 'bezoeker'
THEN
NULL; -- let op dat je bij bezoeker de afspraak_key moet zoeken?
WHEN lxmlnode = 'deel'
THEN
NULL;
WHEN lxmlnode = 'controle'
THEN
NULL;
WHEN lxmlnode = 'contract'
THEN
cnt.notifycontractbedrijven(l_refkey, ptrackingkey);
WHEN lxmlnode = 'perslid'
THEN
NULL;
WHEN lxmlnode = 'message'
THEN
NULL; -- kan nog niet via tracking worden veroorzaakt (later: ontvangstbericht?)
ELSE
NULL; -- force error?
END CASE;
END;
-- Notificeren tracking naar een specifiek bedrijf via een technisch adres
PROCEDURE notifybedrijf (pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2,
psrtnotificatie_key NUMBER,
prefkey NUMBER,
ptrackingkey NUMBER,
ptracking_oms VARCHAR2 DEFAULT NULL,
pperslid_key NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL,
ptrackingkey NUMBER DEFAULT NULL,
plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_key NUMBER DEFAULT NULL,
@@ -4790,6 +4844,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
l_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE;
l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_srtnoti_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
nn_noti NUMBER (10);
BEGIN
-- Merk op: per bedrijf notificeren we hooguit <20><>n enkel technisch adres
@@ -4800,29 +4855,29 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- en eentje voor specifieke locatie en algemene opdracht
-- Dat ondersteunen we niet en geeft ongedefinieerd gedrag.
BEGIN
SELECT ba.prs_bedrijfadres_key,
(SELECT COUNT (*)
FROM prs_bedrijfadres_srtnoti basrt
WHERE basrt.prs_bedrijfadres_key = ba.prs_bedrijfadres_key)
INTO l_bdradr_key, nn_noti
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = pbedrijf_key
AND ba.prs_bedrijfadres_type = pbedrijfadres_type
AND prs_bedrijfadres_startdatum <= SYSDATE
AND (ba.mld_typeopdr_key = ptypeopdr_key OR ba.mld_typeopdr_key IS NULL)
AND (ba.ins_discipline_key = pdiscipline_key OR ba.ins_discipline_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND ( ba.alg_district_key = (SELECT d.alg_district_key
FROM alg_locatie d
WHERE d.alg_locatie_key = plocatie_key)
OR ba.alg_district_key IS NULL)
ORDER BY ba.mld_typeopdr_key NULLS LAST, -- door de NULLS LAST heeft een specifieke altijd voorkeur
ba.ins_discipline_key NULLS LAST,
ba.alg_locatie_key NULLS LAST,
ba.alg_district_key NULLS LAST,
ba.prs_bedrijf_key2 NULLS LAST,
ba.prs_bedrijfadres_startdatum DESC
SELECT ba.prs_bedrijfadres_key,
(SELECT COUNT (*)
FROM prs_bedrijfadres_srtnoti basrt
WHERE basrt.prs_bedrijfadres_key = ba.prs_bedrijfadres_key)
INTO l_bdradr_key, nn_noti
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = pbedrijf_key
AND ba.prs_bedrijfadres_type = pbedrijfadres_type
AND prs_bedrijfadres_startdatum <= SYSDATE
AND (ba.mld_typeopdr_key = ptypeopdr_key OR ba.mld_typeopdr_key IS NULL)
AND (ba.ins_discipline_key = pdiscipline_key OR ba.ins_discipline_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND ( ba.alg_district_key = (SELECT d.alg_district_key
FROM alg_locatie d
WHERE d.alg_locatie_key = plocatie_key)
OR ba.alg_district_key IS NULL)
ORDER BY ba.mld_typeopdr_key NULLS LAST, -- door de NULLS LAST heeft een specifieke altijd voorkeur
ba.ins_discipline_key NULLS LAST,
ba.alg_locatie_key NULLS LAST,
ba.alg_district_key NULLS LAST,
ba.prs_bedrijf_key2 NULLS LAST,
ba.prs_bedrijfadres_startdatum DESC
FETCH FIRST 1 ROW ONLY;
EXCEPTION
WHEN NO_DATA_FOUND
@@ -4834,12 +4889,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DBMS_OUTPUT.Put_line ('Gevonden technisch adres key ' || l_bdradr_key);
-- Nu de srtnotifictie zoeken
SELECT basrt.prs_bedrijfadres_srtnoti_key, srtnoti.fac_srtnotificatie_code
INTO l_basrt_key, l_srtnoti_code
FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti
SELECT basrt.prs_bedrijfadres_srtnoti_key, srtnoti.fac_srtnotificatie_code, srtnoti.fac_srtnotificatie_key
INTO l_basrt_key, l_srtnoti_code, l_srtnoti_key
FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti, fac_tracking ft
WHERE basrt.prs_bedrijfadres_key(+) = l_bdradr_key
AND basrt.fac_srtnotificatie_key(+) = srtnoti.fac_srtnotificatie_key
AND srtnoti.fac_srtnotificatie_key = psrtnotificatie_key;
AND srtnoti.fac_srtnotificatie_key = ft.fac_srtnotificatie_key
AND ft.fac_tracking_key = ptrackingkey;
IF (l_basrt_key IS NULL)
THEN
@@ -4848,31 +4904,31 @@ CREATE OR REPLACE PACKAGE BODY fac AS
OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW')
OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW')
THEN
NULL; -- backwards compatible: als geen enkel technisch adres dan is er default een xxxNEW
NULL; -- backwards compatible: als geen enkel prs_bedrijfadres_srtnoti is dan is er default een xxxNEW
ELSE
DBMS_OUTPUT.Put_line ('Technisch adres luistert niet naar notificatie ' || psrtnotificatie_key);
DBMS_OUTPUT.Put_line ('Technisch adres onder bedrijf ' || pbedrijf_key || ' luistert niet naar notificatie ' || l_srtnoti_code);
RETURN;
END IF;
END IF;
-- Ok, het technisch adres luister naar onze notificatie!
-- Ok, het technisch adres luistert naar onze notificatie!
-- Geen putnotificationsrtprio. Die is veel te agressief met ontdubbelen
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_sender_email,
fac_notificatie_status, -- don't care
fac_notificatie_status, -- don't care by prs_bedrijfadres_key
prs_bedrijfadres_key,
fac_notificatie_notbefore)
VALUES (psrtnotificatie_key,
ptracking_oms,
prefkey,
pxrefkey,
psender,
0,
l_bdradr_key,
teverzenden_datum);
VALUES (l_srtnoti_key,
ptracking_oms,
prefkey,
pxrefkey,
psender,
0,
l_bdradr_key,
teverzenden_datum);
END;
-- Levert de (nieuwste) datum op van een getrackt event op key

View File

@@ -570,6 +570,7 @@ BEGIN
ELSE
fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key);
END IF;
fac.notifytrackingbedrijven(:new.fac_tracking_key); -- deze doen we altijd onvoorwaardelijk
END;
/

View File

@@ -728,94 +728,18 @@ SELECT fac_notificatie_receiver_email, fac_notificatie_receiver_phone, fac_notif
LEFT OUTER JOIN fac_srtnotificatie sn ON n.fac_srtnotificatie_key = sn.fac_srtnotificatie_key;
-- Queue met naar leveranciers te verzenden opdrachten tbv PutOrders: wat-moet-naar-wie-en-hoe
-- Tijdelijke dummy die niets oplevert, droppen met DB51
CREATE_VIEW(fac_v_orderqueue, 0)
(prs_bedrijf_key, alg_locatie_key, xmlnode, key, reference, sender, teverzenden_datum)
AS -- (bestel)opdrachten
SELECT b.prs_bedrijf_key, l.alg_locatie_key, 'bestelopdr', o.bes_bestelopdr_key,
o.bes_bestelopdr_id, alg_locatie_email, NULL teverzenden_datum
FROM prs_bedrijf b, bes_bestelopdr o, mld_adres ma, alg_locatie l
WHERE b.prs_bedrijf_key = o.prs_bedrijf_key
AND o.mld_adres_key_lev = ma.mld_adres_key
AND ma.alg_locatie_key = l.alg_locatie_key(+)
AND EXISTS (SELECT '' FROM prs_bedrijfadres ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'B')
AND o.bes_bestelopdr_status = 3
UNION ALL -- (melding)opdachten
SELECT b.prs_bedrijf_key, COALESCE (l1.alg_locatie_key, l2.alg_locatie_key), 'opdracht', o.mld_opdr_key,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr, COALESCE (l1.alg_locatie_email, l2.alg_locatie_email), o.mld_opdr_teverzenden_datum
FROM prs_bedrijf b, mld_opdr o, mld_melding m, mld_adres ma, alg_locatie l1, alg_locatie l2
WHERE b.prs_bedrijf_key = o.mld_uitvoerende_keys
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_adres_key = ma.mld_adres_key(+)
AND ma.alg_locatie_key = l1.alg_locatie_key(+)
AND m.mld_alg_locatie_key = l2.alg_locatie_key(+)
AND EXISTS (SELECT '' FROM prs_bedrijfadres ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'O')
AND (((o.mld_statusopdr_key = 5 OR o.mld_statusopdr_key = 4) AND o.mld_opdr_teverzenden = 1)
OR (o.mld_opdr_teverzenden = 2))
AND o.mld_opdr_verzonden IS NULL
UNION ALL -- contracten
SELECT b.prs_bedrijf_key, l.alg_locatie_key, 'contract', c.cnt_contract_key,
cnt_contract_nummer_intern, COALESCE (l.alg_locatie_email, ins_discipline_email), NULL teverzenden_datum
FROM prs_bedrijf b, cnt_contract c, ins_tab_discipline d, alg_locatie l,
( SELECT cnt_contract_key,
DECODE (MIN (cp1.cnt_alg_plaats_code),
'L', MIN (cp1.cnt_alg_plaats_key),
MIN (alg_boom.alg_locatie_key)) cnt_locatie_key
FROM cnt_contract_plaats cp1,
(SELECT alg_r.alg_ruimte_key, alg_r.alg_verdieping_key, alg_v.alg_gebouw_key, alg_g.alg_locatie_key, 'R' alg_type
FROM alg_ruimte alg_r, alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL), alg_v.alg_verdieping_key, alg_v.alg_gebouw_key, alg_g.alg_locatie_key, 'V' alg_type
FROM alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL), TO_NUMBER (NULL), alg_g.alg_gebouw_key, alg_g.alg_locatie_key, 'G' alg_type
FROM alg_gebouw alg_g) alg_boom
WHERE cp1.cnt_alg_plaats_key =
CASE cp1.cnt_alg_plaats_code
WHEN 'G' THEN alg_boom.alg_gebouw_key(+)
WHEN 'V' THEN alg_boom.alg_verdieping_key(+)
WHEN 'R' THEN alg_boom.alg_ruimte_key(+)
END
AND cp1.cnt_alg_plaats_code = alg_boom.alg_type(+)
AND cp1.cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key HAVING COUNT (1) = 1) cp
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND d.ins_discipline_key = c.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND cp.cnt_locatie_key = l.alg_locatie_key(+)
AND EXISTS (SELECT '' FROM prs_bedrijfadres ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'C')
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_looptijd_tot > SYSDATE
AND c.cnt_contract_teverzenden = 1
UNION ALL -- reserveringen, res_rsv_ruimte_key komt in extrakey
SELECT b.prs_bedrijf_key, l.alg_locatie_key, 'reservering', rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr, NULL sender, NULL teverzenden_datum
FROM prs_bedrijf b, res_rsv_ruimte rrr, alg_locatie l, alg_v_ruimte_gegevens_all ruimte_geg
, (SELECT res_ruimte_opstel_key, rr.res_ruimte_nr res_ruimte_nr
, rr.res_ruimte_key
, MIN (alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro
, res_alg_ruimte rar
, res_ruimte rr
WHERE rro.res_ruimte_key = rar.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_opstel_key
, rr.res_ruimte_nr
, rr.res_ruimte_key) opstelalg
WHERE rrr.res_rsv_ruimte_teverzenden IN (1, 2) -- nieuw/update
AND rrr.res_rsv_ruimte_verzonden IS NULL
AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
AND ruimte_geg.alg_ruimte_key = COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)
AND b.prs_bedrijf_key = (SELECT MAX(rrd.prs_bedrijf_key) -- artikelen van verschillende leveranciers is unsupported
FROM res_disc_params rrd, res_artikel ra, res_rsv_artikel rra
WHERE rrd.res_ins_discipline_key = ra.res_discipline_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND ruimte_geg.alg_locatie_key = l.alg_locatie_key
AND EXISTS (SELECT '' FROM prs_bedrijfadres ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'R');
AS
SELECT -1 prs_bedrijf_key,
-1 alg_locatie_key,
'dontcare' xmlnode,
-1 key,
-1 reference,
'' sender,
SYSDATE teverzenden_datum
FROM DUAL
WHERE 0 = 1;
// PLANMATIG ONDERHOUDS views (OPROGNOSE)
-- Basisview voor intern gebruik

View File

@@ -20,11 +20,10 @@ CREATE OR REPLACE PACKAGE mld AS
PROCEDURE notifybehandelaar (pto IN NUMBER, pcode IN VARCHAR2, pmeldingkey IN NUMBER);
PROCEDURE notifyprio (pmeldingkey IN NUMBER, prio IN NUMBER, pperslid_key IN NUMBER, pdisc_level IN NUMBER DEFAULT 1);
PROCEDURE notifyopdrgoedkeurders (popdrkey IN NUMBER);
PROCEDURE notifyopdrbedrijven (psrtnotificatiekey NUMBER,
popdrkey NUMBER,
pperslid_key NUMBER,
ptracking_oms VARCHAR2,
ptrackingkey NUMBER DEFAULT NULL);
PROCEDURE notifyopdrbedrijven (popdrkey NUMBER,
ptrackingkey NUMBER);
PROCEDURE notifymeldingbedrijven (pmldkey NUMBER,
ptrackingkey NUMBER);
FUNCTION getinstemmer (pmldkey IN NUMBER) RETURN NUMBER;
PROCEDURE notifyinstemmer (pmldkey IN NUMBER);
FUNCTION mld_besteed_budget_pgb (p_prs_key IN NUMBER, p_disc_key IN NUMBER)
@@ -1393,11 +1392,8 @@ CREATE OR REPLACE PACKAGE BODY mld AS
-- Stuur notificatie psrtnotificatiekey naar diverse bedrijven
-- in het bijzonder de uitvoerende maar het mag ook een
-- ander 'subscribed' bedrijf zijn (bedrijfadres_type 'OG').
PROCEDURE notifyopdrbedrijven (psrtnotificatiekey NUMBER,
popdrkey NUMBER,
pperslid_key NUMBER,
ptracking_oms VARCHAR2,
ptrackingkey NUMBER DEFAULT NULL)
PROCEDURE notifyopdrbedrijven (popdrkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
FOR bedrijfrec
@@ -1430,17 +1426,52 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND d.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = m.prs_perslid_key)
LOOP
-- Roep daarmee (en de eigen parameters) fac.notifybedrijf aan
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
psrtnotificatie_key => psrtnotificatiekey,
pperslid_key => pperslid_key,
ptracking_oms => ptracking_oms,
prefkey => popdrkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
ptypeopdr_key => bedrijfrec.mld_typeopdr_key,
plocatie_key => bedrijfrec.alg_locatie_key,
ptrackingkey => ptrackingkey);
teverzenden_datum => bedrijfrec.mld_opdr_teverzenden_datum);
END LOOP;
END;
PROCEDURE notifymeldingbedrijven (pmldkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
FOR bedrijfrec
IN (SELECT b.prs_bedrijf_key,
'MG' bedrijfadres_type, -- Meldingen generiek
COALESCE (l1.alg_locatie_key, l2.alg_locatie_key) alg_locatie_key,
COALESCE (l1.alg_locatie_email, l2.alg_locatie_email) alg_locatie_email,
m.mld_melding_key reference,
d.prs_bedrijf_key persoon_bedrijf_key -- van de melder, niet de uitvoerende
FROM mld_melding m,
mld_adres ma,
alg_locatie l1,
alg_locatie l2,
prs_perslid p,
prs_v_afdeling d,
prs_bedrijf b
WHERE m.mld_melding_key = pmldkey
AND EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'MG')
AND m.mld_adres_key = ma.mld_adres_key(+)
AND ma.alg_locatie_key = l1.alg_locatie_key(+)
AND m.mld_alg_locatie_key = l2.alg_locatie_key(+)
AND d.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = m.prs_perslid_key)
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => pmldkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
plocatie_key => bedrijfrec.alg_locatie_key);
END LOOP;
END;

View File

@@ -250,7 +250,7 @@ CREATE_TABLE(prs_bedrijfadres, 0) (
NUMBER(10)
CONSTRAINT ins_r_ins_discipline_key REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE,
prs_bedrijfadres_type /* O=Order, B=Bestelling, V=Voorraadinfo, C=Contract, N=Notificatie, I=IOT, R=Catering, E=ERP (Mareon) */
VARCHAR2(2), /* OG=Order generiek enz. */
VARCHAR2(3), /* OG=Order generiek, BOF BestelOrderGeneriek enz. */
-- In MLD_TAB.SRC:
-- mld_typeopdr_key
-- NUMBER(10) CONSTRAINT prs_r_mld_typeopdr_key REFERENCES mld_typeopdr(mld_typeopdr_key) ON DELETE CASCADE,

View File

@@ -42,6 +42,8 @@ CREATE OR REPLACE PACKAGE res AS
FUNCTION notifypool (pbez_bezoeker_key IN NUMBER, pcode IN VARCHAR2) RETURN NUMBER;
PROCEDURE notifybackoffice (prsvkey IN NUMBER, pcode IN VARCHAR2, ptype IN VARCHAR2 DEFAULT NULL, pkey IN NUMBER DEFAULT NULL);
PROCEDURE remove(p_rsv_ruimte_key IN NUMBER);
PROCEDURE notifyreserveringbedrijven (prsvkey NUMBER, ptrackingkey NUMBER);
END res;
/
@@ -2549,6 +2551,50 @@ AS
-- Geen tracking op res_reservering.
END;
PROCEDURE notifyreserveringbedrijven (prsvkey NUMBER,
ptrackingkey NUMBER)
AS
BEGIN
FOR bedrijfrec
IN (SELECT b.prs_bedrijf_key,
l.alg_locatie_key,
CASE WHEN b.prs_bedrijf_key = resbedrijf.prs_bedrijf_key THEN 'R' ELSE 'GR' END bedrijfadres_type,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr reference
FROM prs_bedrijf b,
res_rsv_ruimte rrr,
alg_locatie l,
alg_v_ruimte_gegevens_all ruimte_geg,
( SELECT res_ruimte_opstel_key,
rr.res_ruimte_key,
MIN (alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr
WHERE rro.res_ruimte_key = rar.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_opstel_key, rr.res_ruimte_key) opstelalg,
(SELECT res_rsv_ruimte_key, MAX (rrd.prs_bedrijf_key) prs_bedrijf_key -- artikelen van verschillende leveranciers is unsupported
FROM res_disc_params rrd, res_artikel ra, res_rsv_artikel rra
WHERE rrd.res_ins_discipline_key = ra.res_discipline_key
AND rra.res_artikel_key = ra.res_artikel_key) resbedrijf
WHERE rrr.res_rsv_ruimte_key = prsvkey
AND resbedrijf.res_rsv_ruimte_key = prsvkey
AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
AND ruimte_geg.alg_ruimte_key = COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)
AND ruimte_geg.alg_locatie_key = l.alg_locatie_key
AND ( b.prs_bedrijf_key = resbedrijf.prs_bedrijf_key -- type 'R'
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'RG')))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => prsvkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
plocatie_key => bedrijfrec.alg_locatie_key);
END LOOP;
END;
END res;
/