From 3a6e9ae88c1efa8a579dd1e1c6ecafdab0f36502 Mon Sep 17 00:00:00 2001 From: Sander Schepers Date: Tue, 18 Nov 2025 22:56:20 +0000 Subject: [PATCH] HCAS#88613 Dubbele verzending opdrachten naar Servicenow via email koppeling Nu betere controle in de update dat een opdracht niet direct opnieuw verzonden wordt als deze nog in de wachtrij staat. Bovendien een betere bepaling op unieke opdracht (mocht er eens een melding zijn met meerdere opdrachten). svn path=/Customer/trunk/; revision=70993 --- HCAS/HCAS.sql | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/HCAS/HCAS.sql b/HCAS/HCAS.sql index f93a00aac..36319506f 100644 --- a/HCAS/HCAS.sql +++ b/HCAS/HCAS.sql @@ -298,20 +298,23 @@ AS --Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen hebben en die verzonden kunnen worden naar Servicenow CURSOR sync IS - SELECT mld_melding_key, + SELECT mld_melding_key, + mld_opdr_key, mld_ins_discipline_key, mld_melding_note_aanmaak, fac.safe_to_number ( - TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) + TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) AS note, sync, sync_key FROM ( SELECT mld_melding_key, + mld_opdr_key, mld_ins_discipline_key, MAX (mld_melding_note_aanmaak) AS mld_melding_note_aanmaak, sync, sync_key FROM (SELECT mld.mld_melding_key, + o.mld_opdr_key, sm.mld_ins_discipline_key, fac_bijlagen_aanmaak AS mld_melding_note_aanmaak, (SELECT fac.safe_to_number ( @@ -333,17 +336,20 @@ AS AND km.mld_kenmerk_key = sync.mld_kenmerk_key AND km.mld_srtkenmerk_key = 541) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow) AS sync_key - FROM mld_melding mld, mld_stdmelding sm, fac_bijlagen att + FROM mld_melding mld, mld_stdmelding sm, fac_bijlagen att, mld_opdr o WHERE sm.mld_stdmelding_key = mld.mld_stdmelding_key AND sm.mld_ins_discipline_key IN (321, 341, 401) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden. AND mld.mld_melding_status IN (2, 3, 4, 7) AND att.fac_bijlagen_refkey = mld.mld_melding_key AND att.fac_bijlagen_module = 'MLD' --Enkel bijlage-kenmerken van meldingen (niet opdrachten) - AND att.fac_bijlagen_kenmerk_key NOT IN + AND att.fac_bijlagen_kenmerk_key NOT IN (SELECT mld_kenmerk_key FROM mld_kenmerk WHERE mld_kenmerk_niveau IN ('O', 'P')) --Kenmerk gekoppeld aan Opdrachtype (O) of alle Opdrachttypen (P) AND att.fac_bijlagen_verwijder IS NULL + AND o.mld_melding_key = mld.mld_melding_key + AND o.mld_uitvoerende_keys = 4623 + AND o.mld_opdr_verzonden IS NOT NULL AND ( (SELECT fac.safe_to_date ( sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss') FROM mld_kenmerkmelding sync, @@ -358,6 +364,7 @@ AS fac_bijlagen_aanmaak) UNION ALL SELECT mld.mld_melding_key, + o.mld_opdr_key, sm.mld_ins_discipline_key, mn.mld_melding_note_aanmaak, (SELECT fac.safe_to_number ( @@ -391,6 +398,7 @@ AS AND mld.mld_melding_key = o.mld_melding_key -- Enkel SyncServicenow bijwerken indien er ook een opdracht is. AND sm.mld_ins_discipline_key IN (321, 341, 401) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden. AND mld.mld_melding_status IN (2, 3, 4, 7) + AND o.mld_uitvoerende_keys = 4623 AND o.mld_opdr_verzonden IS NOT NULL AND ( (SELECT fac.safe_to_date ( sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss') @@ -415,9 +423,9 @@ AS mld.mld_melding_key AND km.mld_kenmerk_key = sync.mld_kenmerk_key - AND km.mld_srtkenmerk_key = 541) IS NULL)) - ORDER BY mld_melding_key, mld_melding_note_aanmaak ASC) + AND km.mld_srtkenmerk_key = 541) IS NULL))) GROUP BY mld_melding_key, + mld_opdr_key, mld_ins_discipline_key, sync, sync_key); @@ -527,8 +535,9 @@ BEGIN -- 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 - AND mld_opdr.mld_uitvoerende_keys = 4623; -- Alle opdrachten aan KPN die gekoppeld zijn aan deze melding (doorgaans maar 1 per melding) + WHERE mld_opdr.mld_opdr_key = rec.mld_opdr_key + AND mld_opdr.mld_uitvoerende_keys = 4623 -- Alle opdrachten aan KPN die gekoppeld zijn aan deze melding (doorgaans maar 1 per melding) + AND mld_opdr.mld_opdr_verzonden IS NOT NULL; v_errorhint := 'Syncdatum bijwerken voor melding ' || rec.mld_melding_key;