BAUS#79594 Implementatie Bausch & Lomb, notificatie periodieke taken over 6 weken ipv 1 maand

svn path=/Customer/trunk/; revision=62015
This commit is contained in:
Suzan Wiegerinck
2023-10-03 14:26:39 +00:00
parent 026a00d1e9
commit a50e9d4149

View File

@@ -259,86 +259,102 @@ EXCEPTION
END baus_processemail;
/
CREATE OR REPLACE VIEW BAUS_V_NOTI_TAKEN
CREATE OR REPLACE VIEW BAUS_V_RAP_TAKEN
(
TO_KEY,
TO_EMAIL,
TO_OMSCHR,
TAAK_OMSCHR,
INS_DEEL_KEY,
BETREFT
ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
laatste_controle,
volgende_controle,
status
)
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;
SELECT ctr.ins_deel_key,
ctr.ins_deel_omschrijving,
ctr.ins_deel_opmerking,
TRUNC (last_insp.ins_deelsrtcontrole_datum) laatste_insp,
TRUNC (ctr.ins_deelsrtcontrole_datum) volgende_insp,
ctr.status
FROM (SELECT d.ins_deel_key,
d.ins_srtdeel_omschrijving
|| ' '
|| d.ins_deel_omschrijving ins_deel_omschrijving,
d.ins_deel_opmerking,
fac.nextcyclusdatedeel (d.ins_deel_key,
d.ins_srtcontrole_key,
1) ins_deelsrtcontrole_datum,
'' AS ctrmode,
prs_perslid_naam_full perslid,
'' AS status
FROM (SELECT sc.ins_srtcontrole_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
d.ins_deel_opmerking,
sc.ins_srtcontrole_periode,
sd.ins_srtdeel_omschrijving,
pfa.prs_perslid_key,
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_v_perslid_fullnames_all pfa
WHERE sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_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
AND pfa.prs_perslid_key = 101) d
LEFT OUTER JOIN ins_srtcontroledl_xcp xcp
ON xcp.ins_deel_key = d.ins_deel_key
AND xcp.ins_srtcontrole_key = d.ins_srtcontrole_key
WHERE COALESCE (xcp.ins_srtcontroledl_xcp_periode,
d.ins_srtcontrole_periode) >
0
AND fac.nextcyclusdatedeel (d.ins_deel_key,
d.ins_srtcontrole_key,
1) <=
(SYSDATE + 42)
AND d.ins_deel_key NOT IN --- als een inspectie al is ingepland weegt dat zwaarder dan de oorspronkelijke datum, object komt op de lijst als plandatum komende maand is
(SELECT ins_deel_key
FROM ins_v_udr_deelinspect ins, ins_deel d
WHERE ins_deelsrtcontrole_plandatum
IS NOT NULL
AND ins_deelsrtcontrole_datum IS NULL
AND d.ins_deel_key = ins.deel_key
AND d.ins_deel_verwijder IS NULL)
UNION ALL
SELECT d.ins_deel_key,
sd.ins_srtdeel_omschrijving
|| ' '
|| d.ins_deel_omschrijving ins_deel_omschrijving,
d.ins_deel_opmerking,
ins_deelsrtcontrole_plandatum,
'' ctrmode,
perslid,
deelsrtcontrole_status
FROM ins_v_udr_deelinspect ins, ins_deel d, ins_srtdeel sd
WHERE ins_deelsrtcontrole_plandatum IS NOT NULL
AND ins_deelsrtcontrole_datum IS NULL
AND d.ins_deel_key = ins.deel_key
AND d.ins_deel_verwijder IS NULL
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND actief = 'ja'
AND ins_deelsrtcontrole_plandatum <= (SYSDATE + 42) -- AND ins_deelsrtcontrole_plandatum >= SYSDATE
) ctr,
( SELECT MAX (sc.ins_deelsrtcontrole_datum)
ins_deelsrtcontrole_datum,
sc.ins_deel_key,
MAX (sc.ins_deelsrtcontrole_key)
ins_deelsrtcontrole_key
FROM ins_deelsrtcontrole sc
WHERE sc.ins_deelsrtcontrole_status = 6
GROUP BY sc.ins_deel_key) last_insp
WHERE ctr.ins_deel_key = last_insp.ins_deel_key(+)
AND TRUNC (ctr.ins_deelsrtcontrole_datum) < TRUNC (SYSDATE + 42);
CREATE OR REPLACE PACKAGE BAUS
AS
@@ -350,73 +366,47 @@ CREATE OR REPLACE PACKAGE BODY BAUS
AS
PROCEDURE baus_noti_per_controle
AS
p_applname VARCHAR2 (50) := 'NOTIFICATIE_PLANNEN_TAAK';
p_applname VARCHAR2 (50) := 'NOTIFICATIE_PERIODIEKE_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';
v_aanduiding := 'Maandelijkse notificatie periodieke taken';
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,
101,
'Iwan.Broekhuis@bausch.com',
'Taken voor de maand '
|| LOWER (TO_CHAR (SYSDATE, 'Month')),
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE UPPER (fac_usrrap_view_name) = 'BAUS_V_RAP_TAKEN'), ---- refkey: is het rapport
4,
2,
'NL'
FROM fac_srtnotificatie sn
WHERE fac_srtnotificatie_code = 'CUST01';
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;
fac.writelog (p_applname,
'I',
'Mail naar Iwan Broekhuis',
'Maandelijkse notificatie periodieke taken');
EXCEPTION
WHEN OTHERS
THEN
v_errorhint := 'Notificaties in te plannen periodieke taken';
v_errorhint := 'Maandelijkse notificatie periodieke taken';
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (
@@ -430,21 +420,26 @@ END;
CREATE OR REPLACE PROCEDURE baus_monthly
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
baus.baus_noti_per_controle;
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);
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;
/