FCLT#85890 Als vervanging van het psr_perslid_systeemadres bij notificaties naar een persoon de technische adressen bij zijn intern bedrijf ook notificeren

svn path=/Database/trunk/; revision=68054
This commit is contained in:
Jos Groot Lipman
2025-02-18 16:15:11 +00:00
parent 6b3458e6d9
commit 13af49c636
4 changed files with 52 additions and 2 deletions

View File

@@ -149,6 +149,7 @@ CREATE OR REPLACE PACKAGE fac
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 notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER);
PROCEDURE notifygeneriekbedrijven(prefkey NUMBER, ptrackingkey NUMBER);
PROCEDURE notifybedrijf(pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2,
@@ -2402,6 +2403,31 @@ CREATE OR REPLACE PACKAGE BODY fac AS
WHEN NO_DATA_FOUND THEN
RETURN;
END;
IF pbedrijfadreskey IS NULL
THEN -- Mogelijk naar technische adressen van het (interne) bedrijf waar deze persoon onder valt
FOR bedrijfadresrec
IN (SELECT ba.prs_bedrijfadres_key
FROM prs_perslid p,
prs_v_afdeling aa,
prs_bedrijfadres ba,
prs_bedrijfadres_srtnoti basrt
WHERE p.prs_perslid_key = pto
AND aa.prs_afdeling_key = p.prs_afdeling_key
AND ba.prs_bedrijf_key = aa.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
-- AND ba.prs_bedrijfadres_type = 'G' // maakt me dat uit?
AND basrt.prs_bedrijfadres_key = ba.prs_bedrijfadres_key
AND basrt.fac_srtnotificatie_key = skey
)
LOOP
putnotificationsrtprio (NULL, NULL, pcode, pref, poptmessage, 0 /* poptstatus */,
NULL, NULL, pxref, pprio, psender, NULL,
pbedrijfadreskey => bedrijfadresrec.prs_bedrijfadres_key -- enige bijzondere, rest gewoon blind doorgeven
);
END LOOP;
END IF;
END IF;
lmode := smode;
@@ -2593,6 +2619,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND sn.fac_srtnotificatie_code NOT IN (COALESCE(puitz, ' '), COALESCE(puitz2, ' '))
)
AND fac_notificatie_refkey = pref
AND fac_notificatie_systeemadres IS NULL
AND prs_bedrijfadres_key IS NULL
AND BITAND (fac_notificatie_status, 64) = 0 -- Bitje 64 (custom notificatie MARX) ongemoeid laten
AND COALESCE(fac_notificatie_extrakey, -1) = COALESCE(pxref, fac_notificatie_extrakey, -1);
@@ -2616,6 +2644,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
WHERE fac_srtnotificatie_key IN (SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code LIKE pcode)
AND fac_notificatie_systeemadres IS NULL
AND prs_bedrijfadres_key IS NULL
AND fac_notificatie_refkey = pref
AND fac_notificatie_oms = psubject
AND prs_perslid_key_receiver = preceiver
@@ -4799,6 +4829,24 @@ CREATE OR REPLACE PACKAGE BODY fac AS
NULL;
END;
-- Zoek de nieuwste 'peventcode' tracking van prefkey en notificeer daarvan de bedrijven
PROCEDURE notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER)
AS
l_trackingkey fac_tracking.fac_tracking_key%TYPE;
BEGIN
SELECT MAX(t.fac_tracking_key)
INTO l_trackingkey
FROM fac_tracking t,
fac_srtnotificatie fsn
WHERE t.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key
AND t.fac_tracking_refkey = prefkey
AND fsn.fac_srtnotificatie_code = peventcode;
IF l_trackingkey IS NOT NULL
THEN
fac.notifytrackingbedrijven (l_trackingkey);
END IF;
END;
-- Notificeren via een technisch adres
PROCEDURE notifytrackingbedrijven (ptrackingkey NUMBER)
AS

View File

@@ -2459,7 +2459,7 @@ CREATE_TABLE(fac_task, 0)
fac_task_code VARCHAR(32) NOT NULL,
fac_task_nextrun DATE,
fac_task_lastrun DATE,
fac_task_flags NUMBER(3) DEFAULT 0 NOT NULL, -- +1=disable
fac_task_flags NUMBER(3) DEFAULT 1 NOT NULL, -- +1=enabled
fac_task_aanmaak DATE DEFAULT SYSDATE NOT NULL,
CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code)
);

View File

@@ -1493,6 +1493,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
prs_v_afdeling d,
prs_bedrijf b
WHERE m.mld_melding_key = pmldkey
AND b.prs_bedrijf_intern = 2 -- 'G' is alleen voor systeembedrijven
AND EXISTS
(SELECT 1
FROM prs_bedrijfadres ba

View File

@@ -30,7 +30,7 @@ BEGIN
prs_perslid p,
prs_v_afdeling d,
prs_bedrijf b,
fac_v_orderqueue q,
fac_v_orderqueue_OLD q,
mld_opdr o,
fac_srtnotificatie fsn
WHERE q.xmlnode = 'opdracht'
@@ -44,6 +44,7 @@ BEGIN
AND p.prs_perslid_key = m.prs_perslid_key
AND fac_srtnotificatie_code = 'ORDUPD') -- hardcoded ORDUPD, het gaat uiteindelijk vooral om de XMLnode 'opdracht' in putorders
LOOP
DBMS_OUTPUT.PUT_LINE('Notificeer opdracht ' || bedrijfrec.mld_opdr_key);
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => 'O',
prefkey => bedrijfrec.mld_opdr_key,