YKPN#79429 -- Aanpassing notifictaie procuratie_afm_po

svn path=/Customer/trunk/; revision=61962
This commit is contained in:
Norbert Wassink
2023-09-28 10:15:01 +00:00
parent 144e023cf5
commit 587e67e9f0

View File

@@ -1380,7 +1380,7 @@ AS
-- Dan Annemiek als goedkeurder
SELECT COUNT(*)
INTO v_count_cnt
FROM cnt_contract c, mld_opdr o
FROM cnt_contract c, mld_opdr o, mld_kenmerkopdr mo,mld_kenmerk mk
WHERE o.mld_opdr_key=v_opdr_key
AND c.cnt_contract_key=o.cnt_contract_key
AND c.ins_discipline_key IN (421,461,2221)
@@ -1388,7 +1388,11 @@ AS
FROM cnt_kenmerkcontract ckw, cnt_kenmerk ck
WHERE ckw.cnt_contract_key = c.cnt_contract_key
AND ckw.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND ck.cnt_kenmerk_omschrijving='Uitsluiten voor reverse billing');
AND ck.cnt_kenmerk_omschrijving='Uitsluiten voor reverse billing')
AND mo.mld_opdr_key = o.mld_opdr_key
AND mk.mld_kenmerk_key = mo.mld_kenmerk_key
AND mk.mld_kenmerk_omschrijving='Gereed voor facturatie'
AND mo.mld_kenmerkopdr_waarde=1;
-- Betreft het een opdarcht van Uitvoeren Uren intern (381) dan ook aan Annemiek toewijzen
SELECT COUNT(*)
@@ -10474,7 +10478,7 @@ AS
AND NOT EXISTS
(SELECT koBD.mld_kenmerkopdr_key
FROM mld_kenmerkopdr koBD
WHERE koBD.mld_kenmerk_key = 3701 -- PO BEDRAG DOORBELASTEN?
WHERE koBD.mld_kenmerk_key IN (3701, 5408, 5448) -- PO BEDRAG DOORBELASTEN?
AND koBD.mld_opdr_key = o.mld_opdr_key
AND koBD.mld_kenmerkopdr_waarde = '1')
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
@@ -16665,444 +16669,6 @@ AS
WHERE o.mld_opdr_key = mo.opdracht_key) mo;
CREATE OR REPLACE PROCEDURE ykpn_export_servicenow (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errorhint VARCHAR2 (100);
-- v_locatie_key NUMBER;
v_lengte NUMBER;
--Onderstaande cursor verzamelt de meldingen die status 'Actie aanvrager' moeten krijgen. Dat is obv het binnenkomende opdrachtkenmerk 'Statusservicenow'.
CURSOR actie
IS
SELECT mld.mld_melding_key
FROM fac_tracking t,
mld_opdr o,
mld_melding mld,
mld_stdmelding sm
WHERE sm.mld_stdmelding_key = mld.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND mld.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 62 -- ORDUPD
AND INSTR (t.fac_tracking_oms,
'Statusservicenow: (leeg) --> Pending Customer') > 0
AND ( (SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key = mld.mld_melding_key
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) < -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
fac.safe_to_number (
TO_CHAR (t.fac_tracking_datum, 'yyyymmddhh24miss'))
OR ( (SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key = mld.mld_melding_key
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) IS NULL)) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
GROUP BY mld.mld_melding_key;
-- Dit haalt het externnummer op van een opdrachtkenmerk indien externnr bij de melding nog leeg is
CURSOR externnr
IS
SELECT DISTINCT
m.mld_melding_key,
o.mld_opdr_key,
ko.mld_kenmerkopdr_waarde AS externnr
FROM mld_melding m,
mld_opdr o,
mld_stdmelding sm,
mld_kenmerkopdr ko,
mld_kenmerk km,
mld_srtkenmerk skm
WHERE m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND m.mld_melding_externnr IS NULL
AND o.mld_opdr_key = ko.mld_opdr_key
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4021; --Kenmerksoort 'Externnr'
-- Dit haalt de link naar Servicenow op van een opdrachtkenmerk indien dit kenmerk bij de melding nog leeg is
CURSOR lnk_sn
IS
SELECT DISTINCT
m.mld_melding_key,
o.mld_opdr_key,
ko.mld_kenmerkopdr_waarde AS lnk_sn
FROM mld_melding m,
mld_opdr o,
mld_stdmelding sm,
mld_kenmerkopdr ko,
mld_kenmerk km,
mld_srtkenmerk skm
WHERE m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND o.mld_opdr_key = ko.mld_opdr_key
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4101 --Kenmerksoort 'Servicenow'
AND NOT EXISTS
(SELECT kmm.mld_melding_key
FROM mld_kenmerkmelding kmm,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND kmm.mld_kenmerk_key = k.mld_kenmerk_key
AND sk.mld_srtkenmerk_key = 4101
AND kmm.mld_kenmerkmelding_verwijder IS NULL); --Kenmerksoort 'Servicenow'
--Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen heeft en die verzonden kunnen worden naar Servicenow
CURSOR sync
IS
SELECT mld_melding_key,
mld_ins_discipline_key,
mld_melding_note_aanmaak,
fac.safe_to_number (
TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss'))
AS note,
sync,
sync_key
FROM ( SELECT mld_melding_key,
mld_ins_discipline_key,
MAX (mld_melding_note_aanmaak)
AS mld_melding_note_aanmaak,
sync,
sync_key
FROM (SELECT mld.mld_melding_key,
sm.mld_ins_discipline_key,
fac_bijlagen_aanmaak AS mld_melding_note_aanmaak,
(SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AS sync,
(SELECT sync.mld_kenmerkmelding_key
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AS sync_key
FROM mld_melding mld,
mld_stdmelding sm,
fac_bijlagen att
WHERE sm.mld_stdmelding_key = mld.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND att.fac_bijlagen_refkey =
mld.mld_melding_key
AND att.fac_bijlagen_module = 'MLD'
AND att.fac_bijlagen_verwijder IS NULL
AND (SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key =
sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) < -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
fac.safe_to_number(TO_CHAR (
fac_bijlagen_aanmaak,
'yyyymmddhh24miss'))
UNION ALL
SELECT mld.mld_melding_key,
sm.mld_ins_discipline_key,
mn.mld_melding_note_aanmaak,
(SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AS sync,
(SELECT sync.mld_kenmerkmelding_key
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key = sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AS sync_key
FROM mld_melding mld,
mld_melding_note mn,
mld_stdmelding sm,
mld_kenmerk km,
mld_opdr o
WHERE mn.mld_melding_key = mld.mld_melding_key
AND sm.mld_stdmelding_key =
mld.mld_stdmelding_key
AND km.mld_stdmelding_key =
sm.mld_ins_discipline_key
AND km.mld_srtkenmerk_key = 4001 -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AND mld.mld_melding_key = o.mld_melding_key -- Enkel SyncServicenow bijwerken indien er ook een opdracht is.
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND ( (SELECT fac.safe_to_number (
sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key =
sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4001) < -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
fac.safe_to_number(TO_CHAR (
mld_melding_note_aanmaak,
'yyyymmddhh24miss'))
OR ( (SELECT fac.safe_to_number(sync.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding sync,
mld_kenmerk km,
mld_srtkenmerk skm,
mld_melding m
WHERE m.mld_melding_key =
sync.mld_melding_key
AND m.mld_melding_key =
mld.mld_melding_key
AND km.mld_kenmerk_key =
sync.mld_kenmerk_key
AND skm.mld_srtkenmerk_key =
km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key =
4001) IS NULL)) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
ORDER BY mld_melding_key, mld_melding_note_aanmaak ASC)
GROUP BY mld_melding_key,
mld_ins_discipline_key,
sync,
sync_key);
--Onderstaande cursor haalt de meldingen op waar er een short description is bij de opdracht, maar nog niet in de meldingsomschrijving.
CURSOR descr
IS
SELECT DISTINCT
m.mld_melding_key,
o.mld_opdr_key,
ko.mld_kenmerkopdr_waarde AS short_description,
fac.safe_to_number (LENGTH (ko.mld_kenmerkopdr_waarde))
AS lengte,
m.mld_melding_omschrijving
FROM mld_melding m,
mld_opdr o,
mld_stdmelding sm,
mld_kenmerkopdr ko,
mld_kenmerk km,
mld_srtkenmerk skm
WHERE m.mld_melding_key = o.mld_melding_key
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 2881 -- Storing Systemen (was eerst: --1801 -- IT hardware, applicaties en systemen (vakgroeptype Servicenow))
AND m.mld_melding_onderwerp IS NULL
AND o.mld_opdr_bedrijfopdr_volgnr = 1 -- Enkel voor de eerste opdracht, normaal ook altijd maar <20><>n opdracht per melding.
AND o.mld_opdr_key = ko.mld_opdr_key
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
AND skm.mld_srtkenmerk_key = 4025; --Kenmerksoort 'Short_description'
BEGIN
v_errorhint := 'init';
v_lengte := 0;
-- We zetten de status van de melding nog op 'Actie aanvrager' indien Servicenow na laatste bericht vanuit Facilitor hierom vraag.
FOR rec IN actie
LOOP
BEGIN
v_errorhint :=
'Status melding naar Actie aanvrager voor melding '
|| rec.mld_melding_key;
UPDATE mld_melding
SET mld_melding_actiecode = 2
WHERE mld_melding_key = rec.mld_melding_key;
END;
END LOOP;
-- Hier vullen we het externnr bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Servicenow
FOR rec IN externnr
LOOP
BEGIN
v_errorhint :=
'Melding vullen met externnr voor melding '
|| rec.mld_melding_key;
UPDATE mld_melding
SET mld_melding_externnr = rec.externnr
WHERE mld_melding_key = rec.mld_melding_key;
END;
END LOOP;
-- Hier vullen we het kenmerk Servicenow bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Servicenow
FOR rec IN lnk_sn
LOOP
BEGIN
v_errorhint :=
'Meldingkenmerk Servicenow vullen met link naar Servicenow'
|| rec.mld_melding_key;
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key, 7262, -- Kenmerk Servicenow (key 7162 in ACCP)
rec.lnk_sn);
fac.trackaction ('MLDUPD',
rec.mld_melding_key,
NULL,
NULL,
'ServiceNow: (leeg) --> ' || rec.lnk_sn);
END;
END LOOP;
FOR rec IN sync
LOOP
BEGIN
v_errorhint :=
'Opdracht opnieuw te verzenden voor melding '
|| rec.mld_melding_key;
-- Eerst zetten we de opdracht opnieuw klaar om te verzenden
UPDATE mld_opdr
SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL
WHERE mld_melding_key = rec.mld_melding_key;
v_errorhint :=
'Syncdatum bijwerken voor melding ' || rec.mld_melding_key;
-- Daarna hogen we de syncdatum bij de meldingen op met de datum van de laatst ingevoerde notitie
-- Hiermee komt deze notitie de volgende keer niet meer voor in de cursor.
CASE
WHEN rec.sync IS NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (rec.mld_melding_key,
(SELECT DISTINCT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 4001 -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
AND mld_stdmelding_key =
rec.mld_ins_discipline_key),
rec.note);
fac.trackaction ('MLDUPD',
rec.mld_melding_key,
NULL,
NULL,
'Sync_ServiceNow: (leeg) --> ' || rec.note);
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = rec.note
WHERE rec.sync_key = mld_kenmerkmelding_key;
fac.trackaction (
'MLDUPD',
rec.mld_melding_key,
NULL,
NULL,
'Sync_ServiceNow: ' || rec.sync || ' --> ' || rec.note);
END CASE;
END;
END LOOP;
-- We zetten de short description vanuit mld_opdr_kenmerk bij de melding in onderwerp/omschrijving (afhankelijk van lengte).
FOR rec IN descr
LOOP
BEGIN
v_errorhint :=
'Short description Servicenow bij melding '
|| rec.mld_melding_key
|| ' overnemen ';
v_lengte := rec.lengte;
UPDATE mld_melding
SET mld_melding_onderwerp = SUBSTR (rec.short_description, 1, 80)
WHERE mld_melding_key = rec.mld_melding_key;
--Indien short_description te lang voor mld_onderwerp (80), dan ook aanvullen bij omschrijving
IF v_lengte > 80
THEN
UPDATE mld_melding
SET mld_melding_omschrijving =
rec.mld_melding_omschrijving
|| CHR (10)
|| 'Short description Servicenow: '
|| rec.short_description
WHERE mld_melding_key = rec.mld_melding_key;
END IF;
fac.trackaction (
'MLDUPD',
rec.mld_melding_key,
NULL,
NULL,
'Onderwerp: (leeg) --> ' || SUBSTR (rec.short_description, 1, 80));
END;
END LOOP;
END;
/
CREATE OR REPLACE VIEW ykpn_v_rap_log
AS
SELECT COALESCE (imp_log_applicatie, a.fac_import_app_code)