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; RETURN NUMBER;
FUNCTION bes_besteed_budget_agb (p_kp_key IN NUMBER) FUNCTION bes_besteed_budget_agb (p_kp_key IN NUMBER)
RETURN NUMBER; RETURN NUMBER;
PROCEDURE notifybestellingbedrijven (pbestelkey NUMBER,
ptrackingkey NUMBER);
PROCEDURE notifybestelopdrbedrijven (pbestelopdrkey NUMBER,
ptrackingkey NUMBER);
END bes; END bes;
/ /
@@ -2216,6 +2223,44 @@ AS
RETURN l_budgetbesteld; RETURN l_budgetbesteld;
END; 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; 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; FUNCTION sprintf (ps IN VARCHAR2 , p_contract_key IN NUMBER) RETURN VARCHAR2;
PROCEDURE remove(p_contract_key IN NUMBER); PROCEDURE remove(p_contract_key IN NUMBER);
PROCEDURE notifycontractbedrijven (pcntkey NUMBER,
ptrackingkey NUMBER);
PRAGMA RESTRICT_REFERENCES (cnt_contract_status, WNDS, WNPS); PRAGMA RESTRICT_REFERENCES (cnt_contract_status, WNDS, WNPS);
END cnt; 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. -- In geen enkele omgeving is cnt_contract_key in deze tabel ingevuld.
END; 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; 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 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 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 notifytracking(psrtnotificatiekey NUMBER, pperslid_key NUMBER, ptracking_oms VARCHAR2, prefkey NUMBER, ptrackingkey NUMBER DEFAULT NULL);
PROCEDURE notifytrackingbedrijven(ptrackingkey NUMBER);
PROCEDURE notifybedrijf(pbedrijf_key NUMBER, PROCEDURE notifybedrijf(pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2, pbedrijfadres_type VARCHAR2,
psrtnotificatie_key NUMBER,
prefkey NUMBER, prefkey NUMBER,
ptrackingkey NUMBER,
ptracking_oms VARCHAR2 DEFAULT NULL, ptracking_oms VARCHAR2 DEFAULT NULL,
pperslid_key NUMBER DEFAULT NULL, pperslid_key NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL, pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL, preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL, psender VARCHAR2 DEFAULT NULL,
ptrackingkey NUMBER DEFAULT NULL,
plocatie_key NUMBER DEFAULT NULL, plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL, pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_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); bericht := mld.opdrsprintf (loms, prefkey);
END IF; END IF;
mld.notifyopdrbedrijven(psrtnotificatiekey, prefkey, pperslid_key, ptracking_oms, ptrackingkey);
-- In 4i notificeerden we alleen toekenning aan de uitvoerder -- In 4i notificeerden we alleen toekenning aan de uitvoerder
-- In 5i tracken we veel meer, en is er dus ook de mogelijkheid -- In 5i tracken we veel meer, en is er dus ook de mogelijkheid
-- tot notificeren van tracking -- tot notificeren van tracking
@@ -4772,16 +4770,72 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END; END;
-- Notificeren via een technisch adres -- 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, PROCEDURE notifybedrijf (pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2, pbedrijfadres_type VARCHAR2,
psrtnotificatie_key NUMBER,
prefkey NUMBER, prefkey NUMBER,
ptrackingkey NUMBER,
ptracking_oms VARCHAR2 DEFAULT NULL, ptracking_oms VARCHAR2 DEFAULT NULL,
pperslid_key NUMBER DEFAULT NULL, pperslid_key NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL, pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL, preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL, psender VARCHAR2 DEFAULT NULL,
ptrackingkey NUMBER DEFAULT NULL,
plocatie_key NUMBER DEFAULT NULL, plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL, pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_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_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE; l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE;
l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE; l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_srtnoti_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
nn_noti NUMBER (10); nn_noti NUMBER (10);
BEGIN BEGIN
-- Merk op: per bedrijf notificeren we hooguit <20><>n enkel technisch adres -- Merk op: per bedrijf notificeren we hooguit <20><>n enkel technisch adres
@@ -4834,12 +4889,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DBMS_OUTPUT.Put_line ('Gevonden technisch adres key ' || l_bdradr_key); DBMS_OUTPUT.Put_line ('Gevonden technisch adres key ' || l_bdradr_key);
-- Nu de srtnotifictie zoeken -- Nu de srtnotifictie zoeken
SELECT basrt.prs_bedrijfadres_srtnoti_key, srtnoti.fac_srtnotificatie_code SELECT basrt.prs_bedrijfadres_srtnoti_key, srtnoti.fac_srtnotificatie_code, srtnoti.fac_srtnotificatie_key
INTO l_basrt_key, l_srtnoti_code INTO l_basrt_key, l_srtnoti_code, l_srtnoti_key
FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti, fac_tracking ft
WHERE basrt.prs_bedrijfadres_key(+) = l_bdradr_key WHERE basrt.prs_bedrijfadres_key(+) = l_bdradr_key
AND basrt.fac_srtnotificatie_key(+) = srtnoti.fac_srtnotificatie_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) IF (l_basrt_key IS NULL)
THEN THEN
@@ -4848,24 +4904,24 @@ CREATE OR REPLACE PACKAGE BODY fac AS
OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW') OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW')
OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW') OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW')
THEN 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 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; RETURN;
END IF; END IF;
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 -- Geen putnotificationsrtprio. Die is veel te agressief met ontdubbelen
INSERT INTO fac_notificatie (fac_srtnotificatie_key, INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_oms, fac_notificatie_oms,
fac_notificatie_refkey, fac_notificatie_refkey,
fac_notificatie_extrakey, fac_notificatie_extrakey,
fac_notificatie_sender_email, fac_notificatie_sender_email,
fac_notificatie_status, -- don't care fac_notificatie_status, -- don't care by prs_bedrijfadres_key
prs_bedrijfadres_key, prs_bedrijfadres_key,
fac_notificatie_notbefore) fac_notificatie_notbefore)
VALUES (psrtnotificatie_key, VALUES (l_srtnoti_key,
ptracking_oms, ptracking_oms,
prefkey, prefkey,
pxrefkey, pxrefkey,

View File

@@ -570,6 +570,7 @@ BEGIN
ELSE ELSE
fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key); fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key);
END IF; END IF;
fac.notifytrackingbedrijven(:new.fac_tracking_key); -- deze doen we altijd onvoorwaardelijk
END; 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; 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 -- 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) CREATE_VIEW(fac_v_orderqueue, 0)
(prs_bedrijf_key, alg_locatie_key, xmlnode, key, reference, sender, teverzenden_datum) AS
AS -- (bestel)opdrachten SELECT -1 prs_bedrijf_key,
SELECT b.prs_bedrijf_key, l.alg_locatie_key, 'bestelopdr', o.bes_bestelopdr_key, -1 alg_locatie_key,
o.bes_bestelopdr_id, alg_locatie_email, NULL teverzenden_datum 'dontcare' xmlnode,
FROM prs_bedrijf b, bes_bestelopdr o, mld_adres ma, alg_locatie l -1 key,
WHERE b.prs_bedrijf_key = o.prs_bedrijf_key -1 reference,
AND o.mld_adres_key_lev = ma.mld_adres_key '' sender,
AND ma.alg_locatie_key = l.alg_locatie_key(+) SYSDATE teverzenden_datum
AND EXISTS (SELECT '' FROM prs_bedrijfadres ba WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'B') FROM DUAL
AND o.bes_bestelopdr_status = 3 WHERE 0 = 1;
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');
// PLANMATIG ONDERHOUDS views (OPROGNOSE) // PLANMATIG ONDERHOUDS views (OPROGNOSE)
-- Basisview voor intern gebruik -- 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 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 notifyprio (pmeldingkey IN NUMBER, prio IN NUMBER, pperslid_key IN NUMBER, pdisc_level IN NUMBER DEFAULT 1);
PROCEDURE notifyopdrgoedkeurders (popdrkey IN NUMBER); PROCEDURE notifyopdrgoedkeurders (popdrkey IN NUMBER);
PROCEDURE notifyopdrbedrijven (psrtnotificatiekey NUMBER, PROCEDURE notifyopdrbedrijven (popdrkey NUMBER,
popdrkey NUMBER, ptrackingkey NUMBER);
pperslid_key NUMBER, PROCEDURE notifymeldingbedrijven (pmldkey NUMBER,
ptracking_oms VARCHAR2, ptrackingkey NUMBER);
ptrackingkey NUMBER DEFAULT NULL);
FUNCTION getinstemmer (pmldkey IN NUMBER) RETURN NUMBER; FUNCTION getinstemmer (pmldkey IN NUMBER) RETURN NUMBER;
PROCEDURE notifyinstemmer (pmldkey IN NUMBER); PROCEDURE notifyinstemmer (pmldkey IN NUMBER);
FUNCTION mld_besteed_budget_pgb (p_prs_key IN NUMBER, p_disc_key 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 -- Stuur notificatie psrtnotificatiekey naar diverse bedrijven
-- in het bijzonder de uitvoerende maar het mag ook een -- in het bijzonder de uitvoerende maar het mag ook een
-- ander 'subscribed' bedrijf zijn (bedrijfadres_type 'OG'). -- ander 'subscribed' bedrijf zijn (bedrijfadres_type 'OG').
PROCEDURE notifyopdrbedrijven (psrtnotificatiekey NUMBER, PROCEDURE notifyopdrbedrijven (popdrkey NUMBER,
popdrkey NUMBER, ptrackingkey NUMBER)
pperslid_key NUMBER,
ptracking_oms VARCHAR2,
ptrackingkey NUMBER DEFAULT NULL)
AS AS
BEGIN BEGIN
FOR bedrijfrec FOR bedrijfrec
@@ -1430,17 +1426,52 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND d.prs_afdeling_key = p.prs_afdeling_key AND d.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = m.prs_perslid_key) AND p.prs_perslid_key = m.prs_perslid_key)
LOOP LOOP
-- Roep daarmee (en de eigen parameters) fac.notifybedrijf aan
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key, fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type, pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
psrtnotificatie_key => psrtnotificatiekey,
pperslid_key => pperslid_key,
ptracking_oms => ptracking_oms,
prefkey => popdrkey, prefkey => popdrkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference, preference => bedrijfrec.reference,
ptypeopdr_key => bedrijfrec.mld_typeopdr_key, ptypeopdr_key => bedrijfrec.mld_typeopdr_key,
plocatie_key => bedrijfrec.alg_locatie_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 LOOP;
END; END;

View File

@@ -250,7 +250,7 @@ CREATE_TABLE(prs_bedrijfadres, 0) (
NUMBER(10) NUMBER(10)
CONSTRAINT ins_r_ins_discipline_key REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE, 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) */ 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: -- In MLD_TAB.SRC:
-- mld_typeopdr_key -- mld_typeopdr_key
-- NUMBER(10) CONSTRAINT prs_r_mld_typeopdr_key REFERENCES mld_typeopdr(mld_typeopdr_key) ON DELETE CASCADE, -- 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; 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 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 remove(p_rsv_ruimte_key IN NUMBER);
PROCEDURE notifyreserveringbedrijven (prsvkey NUMBER, ptrackingkey NUMBER);
END res; END res;
/ /
@@ -2549,6 +2551,50 @@ AS
-- Geen tracking op res_reservering. -- Geen tracking op res_reservering.
END; 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; END res;
/ /