BAUS#79594 Implementatie Bausch & Lomb, notificatie periodieke taken

svn path=/Customer/trunk/; revision=61852
This commit is contained in:
Suzan Wiegerinck
2023-09-20 10:00:31 +00:00
parent 50da32130a
commit 5351907225

View File

@@ -16,10 +16,14 @@ SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
SELECT adm.checkscriptcust ('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
@@ -52,9 +56,9 @@ BEGIN
-- 1) Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp het meldingnummer '1234' kan worden opgevist, met ervoor en erna een spatie
-- 2) Het 1e nummer dat in het onderwerp staat wordt gezien als meldingnummer, eventuele andere nummers later in het onderwerp worden genegeerd.
subject_regexp := '[[:digit:]]{1,}';
v_pbody := pbody;
v_mldnum :=
REGEXP_SUBSTR (psubject,
subject_regexp,
@@ -92,7 +96,7 @@ BEGIN
|| CHR (10)
|| CHR (13)
|| CHR (10),
CHR (13) || CHR (10)),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
1,
@@ -255,14 +259,208 @@ EXCEPTION
END baus_processemail;
/
CREATE OR REPLACE VIEW BAUS_V_NOTI_TAKEN
(
TO_KEY,
TO_EMAIL,
TO_OMSCHR,
TAAK_OMSCHR,
INS_DEEL_KEY,
BETREFT
)
AS
WITH
taken
AS
(SELECT fac.nextcyclusdatedeel (d.ins_deel_key,
d.ins_srtcontrole_key,
1) volgende_cyclus,
p.ins_deelsrtcontrole_plandatum datum_gepland,
COALESCE (
p.ins_deelsrtcontrole_plandatum,
fac.nextcyclusdatedeel (d.ins_deel_key,
d.ins_srtcontrole_key,
1)) volgende_ctr,
d.*,
xcp.ins_srtcontroledl_xcp_periode
FROM (SELECT sc.ins_srtcontrole_key,
sc.ins_srtcontrole_omschrijving,
d.ins_deel_key,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_periode,
sd.ins_srtdeel_omschrijving,
a.prs_kostenplaats_key,
p.prs_perslid_key,
p.prs_perslid_email,
pfa.prs_perslid_naam_full
FROM ins_srtcontrole sc,
ins_discipline di,
ins_v_aanwezigsrtgroep sg,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigdeel d,
prs_perslid p,
prs_afdeling a,
prs_v_perslid_fullnames_all pfa
WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sc.ins_srtinstallatie_key =
sd.ins_srtdeel_key
AND di.ins_discipline_key = sg.ins_discipline_key
AND COALESCE (d.ins_deel_vervaldatum,
SYSDATE + 1) >
SYSDATE
AND p.prs_perslid_key = 101 -- Notificatie gaat altijd naar Iwan
AND a.prs_afdeling_key(+) = p.prs_afdeling_key
AND pfa.prs_perslid_key = 101
AND ( sc.ins_srtcontrole_eind IS NULL
OR sc.ins_srtcontrole_eind > SYSDATE)) d,
ins_srtcontroledl_xcp xcp,
(SELECT *
FROM ins_v_udr_deelinspect ins
WHERE deelsrtcontrole_status = 'Gepland'
AND ins_deelsrtcontrole_plandatum IS NOT NULL) p
WHERE xcp.ins_deel_key(+) = d.ins_deel_key
AND xcp.ins_srtcontrole_key(+) = d.ins_srtcontrole_key
AND p.deel_key(+) = d.ins_deel_key
AND p.ins_srtcontrole_key(+) = d.ins_srtcontrole_key
AND COALESCE (xcp.ins_srtcontroledl_xcp_periode,
d.ins_srtcontrole_periode) >
0
AND COALESCE (
p.ins_deelsrtcontrole_plandatum,
fac.nextcyclusdatedeel (d.ins_deel_key,
d.ins_srtcontrole_key,
1)) <
ADD_MONTHS (SYSDATE, 2))
SELECT prs_perslid_key to_key,
prs_perslid_email to_email,
prs_perslid_naam_full to_omschr,
ins_srtcontrole_omschrijving,
ins_deel_key,
ins_srtdeel_omschrijving || ' - ' || ins_deel_omschrijving betreft
FROM taken;
CREATE OR REPLACE PACKAGE BAUS
AS
PROCEDURE baus_noti_per_controle;
END;
/
CREATE OR REPLACE PACKAGE BODY BAUS
AS
PROCEDURE baus_noti_per_controle
AS
p_applname VARCHAR2 (50) := 'NOTIFICATIE_PLANNEN_TAAK';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errorhint VARCHAR2 (100);
v_aanduiding VARCHAR2 (100);
CURSOR c IS SELECT * FROM BAUS_V_NOTI_TAKEN;
BEGIN
v_errorhint := 'init';
FOR rec IN c
LOOP
BEGIN
v_aanduiding :=
rec.taak_omschr || ' betreffende; ' || rec.betreft;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
prs_perslid_key_receiver,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
prs_perslid_key_sender,
fac_notificatie_prioriteit,
fac_notificatie_lang)
SELECT fac_srtnotificatie_key,
2,
rec.to_key,
rec.to_email,
rec.taak_omschr
|| ' betreffende; '
|| rec.betreft
|| ' in te plannen',
rec.ins_deel_key,
4,
2,
'NL'
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST01';
fac.writelog (p_applname,
'I',
'Mail naar ' || rec.to_omschr,
rec.betreft);
EXCEPTION
WHEN OTHERS
THEN
v_errorhint :=
'Toevoegen notificatie periodieke controle '
|| rec.betreft;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
p_applname,
'E',
'Error '
|| v_aanduiding
|| oracle_err_num
|| '/'
|| oracle_err_mes,
v_errorhint);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := 'Notificaties in te plannen periodieke taken';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
p_applname,
'E',
'Error ' || oracle_err_num || '/' || oracle_err_mes,
v_errorhint);
END baus_noti_per_controle;
END;
/
CREATE OR REPLACE PROCEDURE baus_monthly
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
baus.baus_noti_per_controle;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('Monthly', 'E', 'Proces afgebroken!', v_errormsg);
END baus_monthly;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
BEGIN
adm.systrackscriptId (
'$Id$',
0);
END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile
PROMPT Logfile of this upgrade is: &fcltlogfile