From 8c4615d0f08f00146852a769215a12b0aa2112db Mon Sep 17 00:00:00 2001 From: Sander Schepers Date: Wed, 8 May 2019 10:47:26 +0000 Subject: [PATCH] HCAS#56970 Export servicenow svn path=/Customer/trunk/; revision=42441 --- HCAS/HCAS.sql | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) diff --git a/HCAS/HCAS.sql b/HCAS/HCAS.sql index cd9fc03f3..7968dd15f 100644 --- a/HCAS/HCAS.sql +++ b/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