HCAS#56970 Export servicenow
svn path=/Customer/trunk/; revision=42441
This commit is contained in:
176
HCAS/HCAS.sql
176
HCAS/HCAS.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user