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

@@ -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;
/