FCLT#85890 Orderqueue en notificatiequeue savepoint
svn path=/Database/trunk/; revision=67045
This commit is contained in:
@@ -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;
|
||||
/
|
||||
|
||||
|
||||
@@ -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;
|
||||
/
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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,24 +4904,24 @@ 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,
|
||||
VALUES (l_srtnoti_key,
|
||||
ptracking_oms,
|
||||
prefkey,
|
||||
pxrefkey,
|
||||
|
||||
@@ -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;
|
||||
/
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user