HCAS#56970 Export servicenow

svn path=/Customer/trunk/; revision=42441
This commit is contained in:
Sander Schepers
2019-05-08 10:47:26 +00:00
parent ae036032a1
commit 8c4615d0f0

View File

@@ -176,6 +176,182 @@ EXCEPTION
END hcas_update_perslid;
/
----- Export servicenow -------------------------------------------------------------------------------
-- Deze export draait steeds voorafgaand aan put-orders
-- In deze export doen we 3 dingen:
-- Wanneer er een externnummer bij een opdracht bekend is, maar nog niet bij de melding, dan zetten we deze ook bij de melding (nodig voor aansturing naar Servicenow)
-- Wanneer de aanvragen een notitie bij de melding heeft gezet, moet deze naar Servicenow gestuurd worden. We zetten hem weer in de orderqueue.
-- Ook zetten we de synchronisatietijd bij de melding, zodat eerdere notities niet nogmaals gestuurd worden.
CREATE OR REPLACE PROCEDURE hcas_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);
-- 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 IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
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 = 405; --Kenmerksoort 'Externnr'
--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.mld_melding_key,
sm.mld_ins_discipline_key,
mn.mld_melding_note_aanmaak,
fac.safe_to_number (
TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss'))
AS note,
(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 = 541) -- Kenmerksoort 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 = 541) -- Kenmerksoort tbv synchronisatie van opmerkingen naar Servicenow
AS sync_key
FROM mld_melding mld,
mld_melding_note mn,
mld_stdmelding sm,
mld_kenmerk km
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 = 541
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
-- AND mld.mld_melding_key = 73362
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 = 541) <
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 = 541) IS NULL))
ORDER BY mld_melding_key, mld_melding_note_aanmaak ASC;
BEGIN
v_errorhint := 'init';
-- 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;
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 = 541 -- 541 = Kenmerksoort 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;
END;
/
----- Rapportage-views -----------------------------------------------------------------------------
CREATE OR REPLACE VIEW hcas_v_rap_qrc_ins_mld