diff --git a/PNBR/pnbr.sql b/PNBR/pnbr.sql index 4b94fa9e6..e103029ff 100644 --- a/PNBR/pnbr.sql +++ b/PNBR/pnbr.sql @@ -194,6 +194,7 @@ AS p_datum_van IN VARCHAR2, -- Let wel: formaat '16-01-2006' p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor); + END; / @@ -1408,11 +1409,764 @@ AS - TRUNC (m.mld_melding_datum) > 0) m; END; + + + END; / --- script om dagelijks terugkerende scripts aan te roepen. +CREATE OR REPLACE PROCEDURE pnbr_topdesk +AS + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_errorhint VARCHAR2 (100); + v_aanduiding VARCHAR2 (100); + v_locatie_key NUMBER; + v_lengte NUMBER; + v_status_ogd VARCHAR2 (200); + v_status_ogd_new VARCHAR2 (200); + v_status_ogd_key NUMBER; + v_new_note VARCHAR2 (4000); + -- Dit haalt het externnummer op uit de opdrachtomschrijving indien externnr bij de melding nog leeg is + -- De syncstate moet gezet worden om te bepalen wat wanneer gesynchroniseerd is + -- Na het aanmaken van de opdracht zetten we de sync state gelijk aan de order date + CURSOR externnr IS + SELECT DISTINCT + m.mld_melding_key, + o.mld_opdr_key, + o.mld_statusopdr_key, + MAX (o.mld_opdr_datumbegin), + o.mld_opdr_externnr + AS externnr, + SUBSTR (o.mld_opdr_omschrijving, + INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) + topdesknr, + km.mld_kenmerk_key, + fac.safe_to_number ( + TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) + AS sync_date_new + FROM mld_melding m, + mld_opdr o, + mld_stdmelding sm, + mld_kenmerk km, + mld_srtkenmerk sk + WHERE m.mld_melding_key = o.mld_melding_key + AND sm.mld_stdmelding_key = m.mld_stdmelding_key + AND o.mld_opdr_externnr IS NOT NULL + AND km.mld_stdmelding_key = sm.mld_ins_discipline_key + AND sk.mld_srtkenmerk_key = km.mld_srtkenmerk_key + AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'SYNC_OGD' + AND sm.mld_ins_discipline_key IN (1582, 4162, 5341) -- Enkel voor de vakgroepen die met Topdesk gekoppeld worden. + AND o.mld_statusopdr_key NOT IN (1, + 2, + 6, + 7, + 9) + AND ( m.mld_melding_externnr IS NULL + OR m.mld_melding_externnr <> + SUBSTR ( + o.mld_opdr_omschrijving, + INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + + 12)) + GROUP BY m.mld_melding_key, + o.mld_opdr_key, + o.mld_statusopdr_key, + o.mld_opdr_externnr, + SUBSTR (o.mld_opdr_omschrijving, + INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12), + km.mld_kenmerk_key, + fac.safe_to_number ( + TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')); + + -- Onderstaande cursor verzamelt de meldingen die status 'Actie aanvrager' (actie code = 2) moeten krijgen + -- Dit is wanneer OGD 60449 een notitie heeft aangemaakt + -- Wacht op klant (voorheen: Pending customer) is gezet na de laatste sync state of de sync state was nog leeg + CURSOR actie_cust IS + SELECT m.mld_melding_key, + o.mld_opdr_key, + o.mld_statusopdr_key + opdr_status, + sm.mld_ins_discipline_key, + m.prs_perslid_key_voor, + pm.prs_perslid_email + email_melder, + pr.prs_perslid_email + email_registreerder, + DECODE (sm.mld_ins_discipline_key, + 4162, 'onsloket@brabant.nl', + 1582, pr.prs_perslid_email) + email_opdrrej, + n.mld_melding_note_aanmaak, + fac.safe_to_number (TO_CHAR (SYSDATE, 'yyyymmddhh24miss')) + AS sync_date_new, + n.prs_perslid_key, + syncdate.syncdate, + syncdate.mld_kenmerkmelding_key, + km.mld_kenmerk_key + FROM mld_melding m, + mld_opdr o, + prs_perslid pm, -- melder + prs_perslid pr, -- registreerder + mld_stdmelding sm, + mld_melding_note n, + mld_kenmerk km, + (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde) + syncdate, + mld.mld_melding_key, + sync.mld_kenmerkmelding_key + FROM mld_kenmerkmelding sync, + mld_kenmerk km, + mld_srtkenmerk skm, + mld_melding mld + WHERE mld.mld_melding_key = sync.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 = 9083) syncdate + WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key + AND sm.mld_ins_discipline_key IN (4162, 1582, 5341) --- alleen vakgroepen OGD en ICT wijziging + AND sm.mld_stdmelding_key <> 11121 + AND n.mld_melding_key = m.mld_melding_key + AND o.mld_melding_key = m.mld_melding_key + AND n.prs_perslid_key = 60449 + AND m.prs_perslid_key_voor = pm.prs_perslid_key + AND m.prs_perslid_key = pr.prs_perslid_key + AND syncdate.mld_melding_key(+) = m.mld_melding_key + AND km.mld_stdmelding_key = sm.mld_ins_discipline_key --- let op: kenmerk zit gekoppeld op discipline niveau + --- AND m.mld_melding_status NOT IN (1, 2, 6, 7, 9) na overleg met Menno: status doet er niet toe + AND km.mld_srtkenmerk_key = 9083 + AND ( fac.safe_to_number ( + TO_CHAR (mld_melding_note_aanmaak, + 'yyyymmddhh24miss')) > + syncdate.syncdate + OR syncdate.syncdate IS NULL); + + -- Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen heeft en die verzonden kunnen worden naar Topdesk + -- Alle notities bij een melding die niet al eerder zijn verstuurd en niet door OGD zijn gemaakt mogen verstuurd worden + CURSOR sync IS + SELECT n.mld_melding_key, + n.mld_opdr_key, + n.mld_ins_discipline_key, + n.notitie, + n.mld_melding_note_aanmaak, + fac.safe_to_number ( + TO_CHAR (n.mld_melding_note_aanmaak, 'yyyymmddhh24miss')) + AS note, + n.sync, + n.sync_key + FROM ( SELECT mld.mld_melding_key, + o.mld_opdr_key, + sm.mld_ins_discipline_key, + LISTAGG ( + prs.prs_perslid_naam_friendly + || '/' + || mn.mld_melding_note_aanmaak + || ' ' + || mn.mld_melding_note_omschrijving, + '; ') + WITHIN GROUP (ORDER BY mld.mld_melding_key) + notitie, + MAX (mn.mld_melding_note_aanmaak) + 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 = 9083) + 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 = 9083) + AS sync_key + FROM mld_melding mld, + mld_melding_note mn, + mld_stdmelding sm, + mld_opdr o, + prs_v_perslid_fullnames_all prs + WHERE mn.mld_melding_key = mld.mld_melding_key + AND sm.mld_stdmelding_key = mld.mld_stdmelding_key + AND mn.prs_perslid_key = prs.prs_perslid_key + AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen + AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. + AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen + AND o.mld_statusopdr_key IN (5, 8) + AND fac.safe_to_number ( + TO_CHAR (mld_melding_note_aanmaak, + 'yyyymmddhh24miss')) > + fac.safe_to_number ( + TO_CHAR (o.mld_opdr_datumbegin, + 'yyyymmddhh24miss')) + 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 = 9083) < + 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 = 9083) + IS NULL)) + GROUP BY mld.mld_melding_key, + o.mld_opdr_key, + sm.mld_ins_discipline_key + ORDER BY mld_melding_key, mld_melding_note_aanmaak DESC) n, + (SELECT mld_melding_key, aant_char FROM (SELECT mld.mld_melding_key, + SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char + FROM mld_melding mld, + mld_melding_note mn, + mld_stdmelding sm, + mld_opdr o, + prs_v_perslid_fullnames_all prs + WHERE mn.mld_melding_key = mld.mld_melding_key + AND sm.mld_stdmelding_key = mld.mld_stdmelding_key + AND mn.prs_perslid_key = prs.prs_perslid_key + AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen + AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. + AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen + AND o.mld_statusopdr_key IN (5, 8) + AND fac.safe_to_number ( + TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > + fac.safe_to_number ( + TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) + 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 = 9083) < + 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 = 9083) + IS NULL)) + GROUP BY mld.mld_melding_key) + WHERE aant_char < 4000) t + where t.mld_melding_key = n.mld_melding_key; + + --- meldingen waarbij het totaal te versturen notities de 4000 karakters overschrijdt + --- deze zetten we in de tracking zodat functioneel beheer genotificeerd wordt + --- en zo waarschuwen dat de notitie velden opgeschoond moeten worden + CURSOR large IS + SELECT mld_melding_key, mld_opdr_key, aant_char + FROM ( SELECT mld.mld_melding_key, + o.mld_opdr_key, + SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char + FROM mld_melding mld, + mld_melding_note mn, + mld_stdmelding sm, + mld_opdr o, + prs_v_perslid_fullnames_all prs + WHERE mn.mld_melding_key = mld.mld_melding_key + AND sm.mld_stdmelding_key = mld.mld_stdmelding_key + AND mn.prs_perslid_key = prs.prs_perslid_key + AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen + AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. + AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen + AND o.mld_statusopdr_key IN (5, 8) + AND fac.safe_to_number ( + TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > + fac.safe_to_number ( + TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) + 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 = 9083) < + 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 = 9083) + IS NULL)) + GROUP BY mld.mld_melding_key, o.mld_opdr_key) + WHERE aant_char > 4000; + + -- PNBR#76614 Extern nr als kenmerk toevoegen + -- Hier vullen we het externnr van changes in bij de melding, zodra deze bij de opdracht binnenkomt vanuit Topdesk + CURSOR externnr_opdr IS + SELECT m.mld_melding_key, + SUBSTR (o.mld_opdr_omschrijving, + INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) topdesknr + FROM mld_melding m, + mld_stdmelding sm, + ins_tab_discipline vg, + ins_srtdiscipline vgt, + mld_opdr o, + prs_bedrijf b + WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key + AND vg.ins_discipline_key = sm.mld_ins_discipline_key + AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key + AND vgt.ins_srtdiscipline_key = 21 --- wijzigingen + AND o.mld_melding_key = m.mld_melding_key + AND o.mld_uitvoerende_keys = b.prs_bedrijf_key + AND b.prs_bedrijf_key = 59728 --- OGD + AND INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') > 0 + AND m.mld_melding_externnr IS NULL; + +BEGIN + v_errorhint := 'init'; + v_lengte := 0; + + -- Hier vullen we het externnr bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Topdesk + FOR rec IN externnr + LOOP + BEGIN + v_aanduiding := + 'Topdesknr zetten bij melding: ' || rec.mld_melding_key; + v_errorhint := + 'Melding vullen met externnr voor melding ' + || rec.mld_melding_key; + + UPDATE mld_melding + SET mld_melding_externnr = rec.topdesknr + WHERE mld_melding_key = rec.mld_melding_key; + + -- Vervolgens zetten we de sync state zodat we weten vanaf wanneer de sync van notities en bijlagen mag gaan lopen + mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, + rec.mld_melding_key, + rec.sync_date_new); + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + + -- aanmaken mldtrk in fac_tracking + INSERT INTO fac_tracking (fac_srtnotificatie_key, + fac_tracking_refkey, + fac_tracking_oms) + VALUES ( + 655, + rec.mld_melding_key, + v_aanduiding + || '/' + || oracle_err_num + || ': ' + || oracle_err_mes); + END; + END LOOP; + + -- We zetten de status van de melding nog op respectievelijk 'Actie aanvrager', 'Attentie' indien Topdesk na laatste bericht vanuit Facilitor hierom vraagt. + FOR rec IN actie_cust + LOOP + BEGIN + v_aanduiding := + 'Topdesk actie naar aanvr mld: ' || rec.mld_melding_key; + + SELECT COALESCE (mld_kenmerkopdr_waarde, 'Wacht op klant') + INTO v_status_ogd + FROM (SELECT o.mld_melding_key, + o.mld_opdr_key, + ko.mld_kenmerkopdr_waarde + FROM mld_kenmerkopdr ko, + mld_kenmerk k, + mld_srtkenmerk sk, + mld_opdr o + WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key + AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key + AND o.mld_opdr_key = ko.mld_opdr_key + AND sk.mld_srtkenmerk_key = 9081 + AND o.mld_statusopdr_key IN (5, 8) + AND ko.mld_kenmerkopdr_verwijder IS NULL) status, + mld_melding m + WHERE m.mld_melding_key = status.mld_melding_key(+) + AND m.mld_melding_key = rec.mld_melding_key; + + IF rec.opdr_status = 1 + THEN + -- de opdracht is door OGD afgewezen, de melding krijgt een attentie belletje + UPDATE mld_melding + SET mld_melding_actiecode = 129 + WHERE mld_melding_key = rec.mld_melding_key; + + -- we sturen ook een notificatie naar DPL of de melder + INSERT INTO fac_notificatie (fac_srtnotificatie_key, + fac_notificatie_status, + prs_perslid_key_receiver, + fac_notificatie_receiver_email, + fac_notificatie_oms, + fac_notificatie_refkey, + fac_notificatie_prioriteit) + VALUES ( + 57, --- ordrej + 2, + NULL, + rec.email_opdrrej, + 'Opdracht bij melding ' + || rec.mld_melding_key + || ' is afgewezen door OGD', + rec.mld_opdr_key, + 2); + -- Als vanuit Topdesk een status wordt meegestuurd dan moet er genotificeerd worden + ELSE + IF UPPER (v_status_ogd) = 'WACHT OP KLANT' --- voorheen: PENDING CUSTOMER + THEN + v_aanduiding := 'Melding: ' || rec.mld_melding_key; + 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; + + INSERT INTO fac_notificatie ( + fac_srtnotificatie_key, + fac_notificatie_status, + prs_perslid_key_receiver, + fac_notificatie_receiver_email, + fac_notificatie_oms, + fac_notificatie_refkey, + fac_notificatie_prioriteit) + VALUES ( + 161, --- mldnot + 2, + rec.prs_perslid_key_voor, + rec.email_melder, + 'Notitie toegevoegd door OGD bij melding ' + || rec.mld_melding_key, + rec.mld_melding_key, + 2); + ELSE + IF UPPER (v_status_ogd) = + 'MELDING KWALITATIEF ONVOLDOENDE' + THEN + v_aanduiding := 'Melding: ' || rec.mld_melding_key; + v_errorhint := + 'Status melding naar Attentie voor melding ' + || rec.mld_melding_key; + + UPDATE mld_melding + SET mld_melding_actiecode = 129 + WHERE mld_melding_key = rec.mld_melding_key; + + UPDATE mld_melding + SET mld_melding_flag = 5 + WHERE mld_melding_key = rec.mld_melding_key; + + INSERT INTO fac_notificatie ( + fac_srtnotificatie_key, + fac_notificatie_status, + prs_perslid_key_receiver, + fac_notificatie_receiver_email, + fac_notificatie_oms, + fac_notificatie_refkey, + fac_notificatie_prioriteit) + VALUES ( + 282, --- mldnob gaat altijd naar DPL + 2, + NULL, + 'onsloket@brabant.nl', + 'Melding ' + || rec.mld_melding_key + || ' is incompleet bevonden door OGD', + rec.mld_melding_key, + 2); + END IF; + END IF; + END IF; + + -- Vervolgens zetten we de sync date zodat we weten dat we weten tot hoever de notities al verwerkt zijn + mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, + rec.mld_melding_key, + rec.sync_date_new); + COMMIT; + + END; + END LOOP; + + FOR rec IN sync + LOOP + BEGIN + -- Eerst verzamelen we alle nieuwe notities en zetten deze klaar in een kenmerk voor verzending + v_aanduiding := + 'Note naar Topdesk voor melding: ' || rec.mld_melding_key; + v_errorhint := + 'Notities verzamelen voor verzending ' || rec.mld_melding_key; + + -- Daarvoor moeten we de juiste kenmerkkey bepalen + SELECT k.mld_kenmerk_key + INTO v_new_note + FROM mld_opdr o, mld_kenmerk k, mld_srtkenmerk sk + WHERE o.mld_typeopdr_key = k.mld_typeopdr_key + AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key + AND UPPER (sk.mld_srtkenmerk_omschrijving) = + 'UPDATE_NOTITIES' + AND o.mld_opdr_key = rec.mld_opdr_key; + + -- De oude notitie gooien we weg + DELETE MLD_KENMERKOPDR ko + WHERE ko.mld_opdr_key = rec.mld_opdr_key + AND ko.mld_kenmerk_key = v_new_note; + + -- Dan vullen we de nieuwe notitie + mld.upsertopdrachtkenmerk (v_new_note, + rec.mld_opdr_key, + rec.notitie); + + v_errorhint := + 'Opdracht opnieuw te verzenden naar Topdesk voor melding: ' + || rec.mld_melding_key; + + -- Eerst zetten we de opdracht opnieuw klaar om te verzenden + UPDATE mld_opdr o + SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL + WHERE o.mld_opdr_key = rec.mld_opdr_key; + + v_errorhint := + 'Syncdatum Topdesk bijwerken voor melding ' + || rec.mld_melding_key; + + -- Als er nog niet eerder gesynchroniseerd is maken we een kenmerk aan met de syncdatum + -- Als al eerder gesynchroniseerd is werken we de syncdatum bij + -- 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 = 9083 -- Kenmerksoort tbv synchronisatie van opmerkingen naar Topdesk + AND mld_stdmelding_key = + rec.mld_ins_discipline_key), + rec.note); + + --- deze notitie moet resulteren in een patch naar Topdesk + --- dat wordt getriggerd door een ordupd + fac.trackaction ('ORDUPD', + rec.mld_opdr_key, + NULL, + NULL, + 'Sync_OGD: (leeg) --> ' || rec.note); + ELSE + UPDATE mld_kenmerkmelding + SET mld_kenmerkmelding_waarde = rec.note + WHERE rec.sync_key = mld_kenmerkmelding_key; + + --- deze notitie moet resulteren in een patch naar Topdesk + --- dat wordt getriggerd door een ordupd + fac.trackaction ( + 'ORDUPD', + rec.mld_opdr_key, + NULL, + NULL, + 'Sync_OGD: ' || rec.sync || ' --> ' || rec.note); + END CASE; + + -- De status OGD werken we dan ook nog even netjes bij + SELECT k.mld_kenmerk_key, + CASE + WHEN (UPPER (status_ogd.mld_kenmerkopdr_waarde) = + 'WACHT OP KLANT') --> PENDING CUSTOMER is geworden Wacht op klant + THEN + 'Reactie ontvangen' + WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = + 'MELDING KWALITATIEF ONVOLDOENDE' --> PENDING DPL is geworden Melding kwalitatief onvoldoende + AND m.mld_melding_flag = 3 + THEN + 'Melding kwalitatief onvoldoende' + WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = + 'MELDING KWALITATIEF ONVOLDOENDE' + AND ( m.mld_melding_flag <> 3 + OR m.mld_melding_flag IS NULL) + THEN + 'Reactie ontvangen' + ELSE + 'Reactie ontvangen' + END CASE + INTO v_status_ogd_key, v_status_ogd_new + FROM mld_kenmerk k, + mld_opdr o, + mld_srtkenmerk sk, + mld_melding m, + (SELECT ko.mld_opdr_key, + ko.mld_kenmerkopdr_waarde, + k.mld_kenmerk_key + FROM mld_kenmerkopdr ko, + mld_kenmerk k, + mld_srtkenmerk sk + WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key + AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key + AND sk.mld_srtkenmerk_key = 9081 + AND ko.mld_kenmerkopdr_verwijder IS NULL) + status_ogd + WHERE o.mld_typeopdr_key = k.mld_typeopdr_key + AND sk.mld_srtkenmerk_key = 9081 + AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key + AND o.mld_melding_key = m.mld_melding_key + AND status_ogd.mld_opdr_key(+) = o.mld_opdr_key + AND o.mld_statusopdr_key IN (5, 8) + AND o.mld_opdr_key = rec.mld_opdr_key; + + mld.upsertopdrachtkenmerk (v_status_ogd_key, + rec.mld_opdr_key, + v_status_ogd_new); + + COMMIT; + + END; + END LOOP; + + FOR rec IN large + LOOP + BEGIN + -- + v_aanduiding := + 'Notities bij melding ' || rec.mld_melding_key || ' te groot voor export naar Topdesk.'; + + -- aanmaken mldtrk in fac_tracking + INSERT INTO fac_tracking (fac_srtnotificatie_key, + fac_tracking_refkey, + fac_tracking_oms) + VALUES ( + 658, + rec.mld_opdr_key, + v_aanduiding); + END; + END LOOP; + + FOR rec IN externnr_opdr + LOOP + BEGIN + v_aanduiding := + 'Topdesknr zetten bij change: ' || rec.mld_melding_key; + v_errorhint := + 'Melding vullen met externnr voor change ' + || rec.mld_melding_key; + + UPDATE mld_melding + SET mld_melding_externnr = rec.topdesknr + WHERE mld_melding_key = rec.mld_melding_key; + + COMMIT; + + END; + END LOOP; + + COMMIT; + +END pnbr_topdesk; +/ + +CREATE OR REPLACE PROCEDURE pnbr_noti_ogd + AS + CURSOR td_log IS + SELECT l.*, sn.fac_srtnotificatie_key, rap.fac_usrrap_key + FROM pnbr_v_noti_ogd l, fac_srtnotificatie sn, fac_usrrap rap + WHERE sn.fac_srtnotificatie_code = 'CUST09' + AND UPPER (fac_usrrap_view_name) = 'PNBR_V_RAP_TOPDESK_LOG'; + BEGIN + FOR rec IN td_log + LOOP + -- de notificatie klaarzetten + INSERT INTO fac_notificatie (fac_srtnotificatie_key, + fac_notificatie_status, + fac_notificatie_receiver_email, + prs_perslid_key_receiver, + fac_notificatie_oms, + fac_notificatie_refkey, + fac_notificatie_extrakey, + fac_notificatie_prioriteit) + VALUES ( + rec.fac_srtnotificatie_key, + 2, + 'beheerpnb@ogd.nl;mudo@brabant.nl;wvhout@brabant.nl;nsalhi@brabant.nl', -- email + NULL, + 'Notificatie Facilitor - Topdesk koppeling', + rec.fac_usrrap_key, + NULL, + 2); + + COMMIT; + END LOOP; +END pnbr_noti_ogd; +/ + +CREATE OR REPLACE PROCEDURE PNBR_PRE_PUTORDERS +AS +BEGIN + + pnbr_topdesk; + pnbr_noti_ogd; + +END PNBR_PRE_PUTORDERS; +/ + +-- script om dagelijks terugkerende scripts aan te roepen. CREATE OR REPLACE PROCEDURE pnbr_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) AS @@ -8494,856 +9248,6 @@ AS AND locatie.alg_ruimte_key = r2a.alg_ruimte_key AND r.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+); -CREATE OR REPLACE PROCEDURE pnbr_export_topdesk (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_aanduiding VARCHAR2 (100); - v_locatie_key NUMBER; - v_lengte NUMBER; - v_status_ogd VARCHAR2 (200); - v_status_ogd_new VARCHAR2 (200); - v_status_ogd_key NUMBER; - v_new_note VARCHAR2 (4000); - - -- Dit haalt het externnummer op uit de opdrachtomschrijving indien externnr bij de melding nog leeg is - -- De syncstate moet gezet worden om te bepalen wat wanneer gesynchroniseerd is - -- Na het aanmaken van de opdracht zetten we de sync state gelijk aan de order date - CURSOR externnr IS - SELECT DISTINCT - m.mld_melding_key, - o.mld_opdr_key, - o.mld_statusopdr_key, - MAX (o.mld_opdr_datumbegin), - o.mld_opdr_externnr - AS externnr, - SUBSTR (o.mld_opdr_omschrijving, - INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) - topdesknr, - km.mld_kenmerk_key, - fac.safe_to_number ( - TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) - AS sync_date_new - FROM mld_melding m, - mld_opdr o, - mld_stdmelding sm, - mld_kenmerk km, - mld_srtkenmerk sk - WHERE m.mld_melding_key = o.mld_melding_key - AND sm.mld_stdmelding_key = m.mld_stdmelding_key - AND o.mld_opdr_externnr IS NOT NULL - AND km.mld_stdmelding_key = sm.mld_ins_discipline_key - AND sk.mld_srtkenmerk_key = km.mld_srtkenmerk_key - AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'SYNC_OGD' - AND sm.mld_ins_discipline_key IN (1582, 4162, 5341) -- Enkel voor de vakgroepen die met Topdesk gekoppeld worden. - AND o.mld_statusopdr_key NOT IN (1, - 2, - 6, - 7, - 9) - AND ( m.mld_melding_externnr IS NULL - OR m.mld_melding_externnr <> - SUBSTR ( - o.mld_opdr_omschrijving, - INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') - + 12)) - GROUP BY m.mld_melding_key, - o.mld_opdr_key, - o.mld_statusopdr_key, - o.mld_opdr_externnr, - SUBSTR (o.mld_opdr_omschrijving, - INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12), - km.mld_kenmerk_key, - fac.safe_to_number ( - TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')); - - -- Onderstaande cursor verzamelt de meldingen die status 'Actie aanvrager' (actie code = 2) moeten krijgen - -- Dit is wanneer OGD 60449 een notitie heeft aangemaakt - -- Wacht op klant (voorheen: Pending customer) is gezet na de laatste sync state of de sync state was nog leeg - CURSOR actie_cust IS - SELECT m.mld_melding_key, - o.mld_opdr_key, - o.mld_statusopdr_key - opdr_status, - sm.mld_ins_discipline_key, - m.prs_perslid_key_voor, - pm.prs_perslid_email - email_melder, - pr.prs_perslid_email - email_registreerder, - DECODE (sm.mld_ins_discipline_key, - 4162, 'onsloket@brabant.nl', - 1582, pr.prs_perslid_email) - email_opdrrej, - n.mld_melding_note_aanmaak, - fac.safe_to_number (TO_CHAR (SYSDATE, 'yyyymmddhh24miss')) - AS sync_date_new, - n.prs_perslid_key, - syncdate.syncdate, - syncdate.mld_kenmerkmelding_key, - km.mld_kenmerk_key - FROM mld_melding m, - mld_opdr o, - prs_perslid pm, -- melder - prs_perslid pr, -- registreerder - mld_stdmelding sm, - mld_melding_note n, - mld_kenmerk km, - (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde) - syncdate, - mld.mld_melding_key, - sync.mld_kenmerkmelding_key - FROM mld_kenmerkmelding sync, - mld_kenmerk km, - mld_srtkenmerk skm, - mld_melding mld - WHERE mld.mld_melding_key = sync.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 = 9083) syncdate - WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key - AND sm.mld_ins_discipline_key IN (4162, 1582, 5341) --- alleen vakgroepen OGD en ICT wijziging - AND sm.mld_stdmelding_key <> 11121 - AND n.mld_melding_key = m.mld_melding_key - AND o.mld_melding_key = m.mld_melding_key - AND n.prs_perslid_key = 60449 - AND m.prs_perslid_key_voor = pm.prs_perslid_key - AND m.prs_perslid_key = pr.prs_perslid_key - AND syncdate.mld_melding_key(+) = m.mld_melding_key - AND km.mld_stdmelding_key = sm.mld_ins_discipline_key --- let op: kenmerk zit gekoppeld op discipline niveau - --- AND m.mld_melding_status NOT IN (1, 2, 6, 7, 9) na overleg met Menno: status doet er niet toe - AND km.mld_srtkenmerk_key = 9083 - AND ( fac.safe_to_number ( - TO_CHAR (mld_melding_note_aanmaak, - 'yyyymmddhh24miss')) > - syncdate.syncdate - OR syncdate.syncdate IS NULL); - - -- Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen heeft en die verzonden kunnen worden naar Topdesk - -- Alle notities bij een melding die niet al eerder zijn verstuurd en niet door OGD zijn gemaakt mogen verstuurd worden - CURSOR sync IS - SELECT n.mld_melding_key, - n.mld_opdr_key, - n.mld_ins_discipline_key, - n.notitie, - n.mld_melding_note_aanmaak, - fac.safe_to_number ( - TO_CHAR (n.mld_melding_note_aanmaak, 'yyyymmddhh24miss')) - AS note, - n.sync, - n.sync_key - FROM ( SELECT mld.mld_melding_key, - o.mld_opdr_key, - sm.mld_ins_discipline_key, - LISTAGG ( - prs.prs_perslid_naam_friendly - || '/' - || mn.mld_melding_note_aanmaak - || ' ' - || mn.mld_melding_note_omschrijving, - '; ') - WITHIN GROUP (ORDER BY mld.mld_melding_key) - notitie, - MAX (mn.mld_melding_note_aanmaak) - 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 = 9083) - 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 = 9083) - AS sync_key - FROM mld_melding mld, - mld_melding_note mn, - mld_stdmelding sm, - mld_opdr o, - prs_v_perslid_fullnames_all prs - WHERE mn.mld_melding_key = mld.mld_melding_key - AND sm.mld_stdmelding_key = mld.mld_stdmelding_key - AND mn.prs_perslid_key = prs.prs_perslid_key - AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen - AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. - AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen - AND o.mld_statusopdr_key IN (5, 8) - AND fac.safe_to_number ( - TO_CHAR (mld_melding_note_aanmaak, - 'yyyymmddhh24miss')) > - fac.safe_to_number ( - TO_CHAR (o.mld_opdr_datumbegin, - 'yyyymmddhh24miss')) - 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 = 9083) < - 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 = 9083) - IS NULL)) - GROUP BY mld.mld_melding_key, - o.mld_opdr_key, - sm.mld_ins_discipline_key - ORDER BY mld_melding_key, mld_melding_note_aanmaak DESC) n, - (SELECT mld_melding_key, aant_char FROM (SELECT mld.mld_melding_key, - SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char - FROM mld_melding mld, - mld_melding_note mn, - mld_stdmelding sm, - mld_opdr o, - prs_v_perslid_fullnames_all prs - WHERE mn.mld_melding_key = mld.mld_melding_key - AND sm.mld_stdmelding_key = mld.mld_stdmelding_key - AND mn.prs_perslid_key = prs.prs_perslid_key - AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen - AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. - AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen - AND o.mld_statusopdr_key IN (5, 8) - AND fac.safe_to_number ( - TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > - fac.safe_to_number ( - TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) - 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 = 9083) < - 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 = 9083) - IS NULL)) - GROUP BY mld.mld_melding_key) - WHERE aant_char < 4000) t - where t.mld_melding_key = n.mld_melding_key; - - --- meldingen waarbij het totaal te versturen notities de 4000 karakters overschrijdt - --- deze zetten we in de tracking zodat functioneel beheer genotificeerd wordt - --- en zo waarschuwen dat de notitie velden opgeschoond moeten worden - CURSOR large IS - SELECT mld_melding_key, mld_opdr_key, aant_char - FROM ( SELECT mld.mld_melding_key, - o.mld_opdr_key, - SUM (LENGTH (mn.mld_melding_note_omschrijving)) aant_char - FROM mld_melding mld, - mld_melding_note mn, - mld_stdmelding sm, - mld_opdr o, - prs_v_perslid_fullnames_all prs - WHERE mn.mld_melding_key = mld.mld_melding_key - AND sm.mld_stdmelding_key = mld.mld_stdmelding_key - AND mn.prs_perslid_key = prs.prs_perslid_key - AND mn.prs_perslid_key <> 60449 --- we gaan de notities van API user OGD niet naar hen terug sturen - AND mld.mld_melding_key = o.mld_melding_key -- Enkel Sync_OGD bijwerken indien er ook een opdracht is. - AND o.mld_uitvoerende_keys = 59728 -- We doen dit alleen voor opdrachten die bij OGD liggen - AND o.mld_statusopdr_key IN (5, 8) - AND fac.safe_to_number ( - TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss')) > - fac.safe_to_number ( - TO_CHAR (o.mld_opdr_datumbegin, 'yyyymmddhh24miss')) - 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 = 9083) < - 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 = 9083) - IS NULL)) - GROUP BY mld.mld_melding_key, o.mld_opdr_key) - WHERE aant_char > 4000; - - -- PNBR#76614 Extern nr als kenmerk toevoegen - -- Hier vullen we het externnr van changes in bij de melding, zodra deze bij de opdracht binnenkomt vanuit Topdesk - CURSOR externnr_opdr IS - SELECT m.mld_melding_key, - SUBSTR (o.mld_opdr_omschrijving, - INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') + 12) topdesknr - FROM mld_melding m, - mld_stdmelding sm, - ins_tab_discipline vg, - ins_srtdiscipline vgt, - mld_opdr o, - prs_bedrijf b - WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key - AND vg.ins_discipline_key = sm.mld_ins_discipline_key - AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key - AND vgt.ins_srtdiscipline_key = 21 --- wijzigingen - AND o.mld_melding_key = m.mld_melding_key - AND o.mld_uitvoerende_keys = b.prs_bedrijf_key - AND b.prs_bedrijf_key = 59728 --- OGD - AND INSTR (o.mld_opdr_omschrijving, 'TOPdesk nr:') > 0 - AND m.mld_melding_externnr IS NULL; - -BEGIN - v_errorhint := 'init'; - v_lengte := 0; - - -- Hier vullen we het externnr bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Topdesk - FOR rec IN externnr - LOOP - BEGIN - v_aanduiding := - 'Topdesknr zetten bij melding: ' || rec.mld_melding_key; - v_errorhint := - 'Melding vullen met externnr voor melding ' - || rec.mld_melding_key; - - UPDATE mld_melding - SET mld_melding_externnr = rec.topdesknr - WHERE mld_melding_key = rec.mld_melding_key; - - -- Vervolgens zetten we de sync state zodat we weten vanaf wanneer de sync van notities en bijlagen mag gaan lopen - mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, - rec.mld_melding_key, - rec.sync_date_new); - COMMIT; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - - -- aanmaken mldtrk in fac_tracking - INSERT INTO fac_tracking (fac_srtnotificatie_key, - fac_tracking_refkey, - fac_tracking_oms) - VALUES ( - 655, - rec.mld_melding_key, - v_aanduiding - || '/' - || oracle_err_num - || ': ' - || oracle_err_mes); - END; - END LOOP; - - -- We zetten de status van de melding nog op respectievelijk 'Actie aanvrager', 'Attentie' indien Topdesk na laatste bericht vanuit Facilitor hierom vraagt. - FOR rec IN actie_cust - LOOP - BEGIN - v_aanduiding := - 'Topdesk actie naar aanvr mld: ' || rec.mld_melding_key; - - SELECT COALESCE (mld_kenmerkopdr_waarde, 'Wacht op klant') - INTO v_status_ogd - FROM (SELECT o.mld_melding_key, - o.mld_opdr_key, - ko.mld_kenmerkopdr_waarde - FROM mld_kenmerkopdr ko, - mld_kenmerk k, - mld_srtkenmerk sk, - mld_opdr o - WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key - AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key - AND o.mld_opdr_key = ko.mld_opdr_key - AND sk.mld_srtkenmerk_key = 9081 - AND o.mld_statusopdr_key IN (5, 8) - AND ko.mld_kenmerkopdr_verwijder IS NULL) status, - mld_melding m - WHERE m.mld_melding_key = status.mld_melding_key(+) - AND m.mld_melding_key = rec.mld_melding_key; - - IF rec.opdr_status = 1 - THEN - -- de opdracht is door OGD afgewezen, de melding krijgt een attentie belletje - UPDATE mld_melding - SET mld_melding_actiecode = 129 - WHERE mld_melding_key = rec.mld_melding_key; - - -- we sturen ook een notificatie naar DPL of de melder - INSERT INTO fac_notificatie (fac_srtnotificatie_key, - fac_notificatie_status, - prs_perslid_key_receiver, - fac_notificatie_receiver_email, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_prioriteit) - VALUES ( - 57, --- ordrej - 2, - NULL, - rec.email_opdrrej, - 'Opdracht bij melding ' - || rec.mld_melding_key - || ' is afgewezen door OGD', - rec.mld_opdr_key, - 2); - -- Als vanuit Topdesk een status wordt meegestuurd dan moet er genotificeerd worden - ELSE - IF UPPER (v_status_ogd) = 'WACHT OP KLANT' --- voorheen: PENDING CUSTOMER - THEN - v_aanduiding := 'Melding: ' || rec.mld_melding_key; - 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; - - INSERT INTO fac_notificatie ( - fac_srtnotificatie_key, - fac_notificatie_status, - prs_perslid_key_receiver, - fac_notificatie_receiver_email, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_prioriteit) - VALUES ( - 161, --- mldnot - 2, - rec.prs_perslid_key_voor, - rec.email_melder, - 'Notitie toegevoegd door OGD bij melding ' - || rec.mld_melding_key, - rec.mld_melding_key, - 2); - ELSE - IF UPPER (v_status_ogd) = - 'MELDING KWALITATIEF ONVOLDOENDE' - THEN - v_aanduiding := 'Melding: ' || rec.mld_melding_key; - v_errorhint := - 'Status melding naar Attentie voor melding ' - || rec.mld_melding_key; - - UPDATE mld_melding - SET mld_melding_actiecode = 129 - WHERE mld_melding_key = rec.mld_melding_key; - - UPDATE mld_melding - SET mld_melding_flag = 5 - WHERE mld_melding_key = rec.mld_melding_key; - - INSERT INTO fac_notificatie ( - fac_srtnotificatie_key, - fac_notificatie_status, - prs_perslid_key_receiver, - fac_notificatie_receiver_email, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_prioriteit) - VALUES ( - 282, --- mldnob gaat altijd naar DPL - 2, - NULL, - 'onsloket@brabant.nl', - 'Melding ' - || rec.mld_melding_key - || ' is incompleet bevonden door OGD', - rec.mld_melding_key, - 2); - END IF; - END IF; - END IF; - - -- Vervolgens zetten we de sync date zodat we weten dat we weten tot hoever de notities al verwerkt zijn - mld.upsertmeldingkenmerk (rec.mld_kenmerk_key, - rec.mld_melding_key, - rec.sync_date_new); - COMMIT; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - - -- aanmaken mldtrk in fac_tracking - INSERT INTO fac_tracking (fac_srtnotificatie_key, - fac_tracking_refkey, - fac_tracking_oms) - VALUES ( - 655, - rec.mld_melding_key, - v_aanduiding - || '/' - || oracle_err_num - || ': ' - || oracle_err_mes); - END; - END LOOP; - - FOR rec IN sync - LOOP - BEGIN - -- Eerst verzamelen we alle nieuwe notities en zetten deze klaar in een kenmerk voor verzending - v_aanduiding := - 'Note naar Topdesk voor melding: ' || rec.mld_melding_key; - v_errorhint := - 'Notities verzamelen voor verzending ' || rec.mld_melding_key; - - -- Daarvoor moeten we de juiste kenmerkkey bepalen - SELECT k.mld_kenmerk_key - INTO v_new_note - FROM mld_opdr o, mld_kenmerk k, mld_srtkenmerk sk - WHERE o.mld_typeopdr_key = k.mld_typeopdr_key - AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key - AND UPPER (sk.mld_srtkenmerk_omschrijving) = - 'UPDATE_NOTITIES' - AND o.mld_opdr_key = rec.mld_opdr_key; - - -- De oude notitie gooien we weg - DELETE MLD_KENMERKOPDR ko - WHERE ko.mld_opdr_key = rec.mld_opdr_key - AND ko.mld_kenmerk_key = v_new_note; - - -- Dan vullen we de nieuwe notitie - mld.upsertopdrachtkenmerk (v_new_note, - rec.mld_opdr_key, - rec.notitie); - - v_errorhint := - 'Opdracht opnieuw te verzenden naar Topdesk voor melding: ' - || rec.mld_melding_key; - - -- Eerst zetten we de opdracht opnieuw klaar om te verzenden - UPDATE mld_opdr o - SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL - WHERE o.mld_opdr_key = rec.mld_opdr_key; - - v_errorhint := - 'Syncdatum Topdesk bijwerken voor melding ' - || rec.mld_melding_key; - - -- Als er nog niet eerder gesynchroniseerd is maken we een kenmerk aan met de syncdatum - -- Als al eerder gesynchroniseerd is werken we de syncdatum bij - -- 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 = 9083 -- Kenmerksoort tbv synchronisatie van opmerkingen naar Topdesk - AND mld_stdmelding_key = - rec.mld_ins_discipline_key), - rec.note); - - --- deze notitie moet resulteren in een patch naar Topdesk - --- dat wordt getriggerd door een ordupd - fac.trackaction ('ORDUPD', - rec.mld_opdr_key, - NULL, - NULL, - 'Sync_OGD: (leeg) --> ' || rec.note); - ELSE - UPDATE mld_kenmerkmelding - SET mld_kenmerkmelding_waarde = rec.note - WHERE rec.sync_key = mld_kenmerkmelding_key; - - --- deze notitie moet resulteren in een patch naar Topdesk - --- dat wordt getriggerd door een ordupd - fac.trackaction ( - 'ORDUPD', - rec.mld_opdr_key, - NULL, - NULL, - 'Sync_OGD: ' || rec.sync || ' --> ' || rec.note); - END CASE; - - -- De status OGD werken we dan ook nog even netjes bij - SELECT k.mld_kenmerk_key, - CASE - WHEN (UPPER (status_ogd.mld_kenmerkopdr_waarde) = - 'WACHT OP KLANT') --> PENDING CUSTOMER is geworden Wacht op klant - THEN - 'Reactie ontvangen' - WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = - 'MELDING KWALITATIEF ONVOLDOENDE' --> PENDING DPL is geworden Melding kwalitatief onvoldoende - AND m.mld_melding_flag = 3 - THEN - 'Melding kwalitatief onvoldoende' - WHEN UPPER (status_ogd.mld_kenmerkopdr_waarde) = - 'MELDING KWALITATIEF ONVOLDOENDE' - AND ( m.mld_melding_flag <> 3 - OR m.mld_melding_flag IS NULL) - THEN - 'Reactie ontvangen' - ELSE - 'Reactie ontvangen' - END CASE - INTO v_status_ogd_key, v_status_ogd_new - FROM mld_kenmerk k, - mld_opdr o, - mld_srtkenmerk sk, - mld_melding m, - (SELECT ko.mld_opdr_key, - ko.mld_kenmerkopdr_waarde, - k.mld_kenmerk_key - FROM mld_kenmerkopdr ko, - mld_kenmerk k, - mld_srtkenmerk sk - WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key - AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key - AND sk.mld_srtkenmerk_key = 9081 - AND ko.mld_kenmerkopdr_verwijder IS NULL) - status_ogd - WHERE o.mld_typeopdr_key = k.mld_typeopdr_key - AND sk.mld_srtkenmerk_key = 9081 - AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key - AND o.mld_melding_key = m.mld_melding_key - AND status_ogd.mld_opdr_key(+) = o.mld_opdr_key - AND o.mld_statusopdr_key IN (5, 8) - AND o.mld_opdr_key = rec.mld_opdr_key; - - mld.upsertopdrachtkenmerk (v_status_ogd_key, - rec.mld_opdr_key, - v_status_ogd_new); - - COMMIT; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - - -- aanmaken ordtrk in fac_tracking - INSERT INTO fac_tracking (fac_srtnotificatie_key, - fac_tracking_refkey, - fac_tracking_oms) - VALUES ( - 658, - rec.mld_opdr_key, - v_aanduiding - || '/' - || oracle_err_num - || ': ' - || oracle_err_mes); - END; - END LOOP; - - FOR rec IN large - LOOP - BEGIN - -- - v_aanduiding := - 'Notities bij melding ' || rec.mld_melding_key || ' te groot voor export naar Topdesk.'; - - -- aanmaken mldtrk in fac_tracking - INSERT INTO fac_tracking (fac_srtnotificatie_key, - fac_tracking_refkey, - fac_tracking_oms) - VALUES ( - 658, - rec.mld_opdr_key, - v_aanduiding); - END; - END LOOP; - - FOR rec IN externnr_opdr - LOOP - BEGIN - v_aanduiding := - 'Topdesknr zetten bij change: ' || rec.mld_melding_key; - v_errorhint := - 'Melding vullen met externnr voor change ' - || rec.mld_melding_key; - - UPDATE mld_melding - SET mld_melding_externnr = rec.topdesknr - WHERE mld_melding_key = rec.mld_melding_key; - - COMMIT; - EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - - -- aanmaken mldtrk in fac_tracking - INSERT INTO fac_tracking (fac_srtnotificatie_key, - fac_tracking_refkey, - fac_tracking_oms) - VALUES ( - 655, - rec.mld_melding_key, - v_aanduiding - || '/' - || oracle_err_num - || ': ' - || oracle_err_mes); - - END; - END LOOP; - - COMMIT; -EXCEPTION - WHEN OTHERS - THEN - oracle_err_num := SQLCODE; - oracle_err_mes := SUBSTR (SQLERRM, 1, 100); - - fac.writelog (p_applname, - 'E', - oracle_err_num || '/' || oracle_err_mes, - v_errorhint); -END pnbr_export_topdesk; -/ - -CREATE OR REPLACE PROCEDURE pnbr_export_sms_bezoeker ( - p_applname IN VARCHAR2, - p_applrun IN VARCHAR2, - p_filedir IN VARCHAR2, - p_filename IN VARCHAR2) -AS - CURSOR bez IS - SELECT sn.fac_srtnotificatie_key, - 4 - status, - COALESCE (pl.prs_perslid_mobiel, telnr.telefoonnr, '31652794464') - mobiel, ---- indien geen nummer bekend nummer van de gastvrouwen/heren PNBR - 'Bezoek voor ' || p.prs_perslid_naam_friendly || ' is gearriveerd' - text, - b.bez_afspraak_key, - b.bez_bezoekers_key, - t.fac_tracking_datum - FROM fac_tracking t, - bez_bezoekers b, - fac_srtnotificatie sn, - bez_afspraak a, - prs_perslid pl, - prs_v_perslid_fullnames_all p, - (SELECT kl.prs_link_key prs_key, kl.prs_kenmerklink_waarde telefoonnr - FROM prs_kenmerklink kl, prs_kenmerk k - WHERE k.prs_kenmerk_key = kl.prs_kenmerk_key - AND k.prs_kenmerk_niveau = 'P' - AND k.prs_kenmerk_key = 1100) telnr - WHERE t.fac_srtnotificatie_key = 26 --- bezdon, aankomst bezoek - AND t.fac_tracking_refkey = b.bez_bezoekers_key - AND a.bez_afspraak_key = b.bez_afspraak_key - AND a.bez_afspraak_host_key = p.prs_perslid_key - AND a.bez_afspraak_host_key = pl.prs_perslid_key - AND telnr.prs_key(+) = p.prs_perslid_key - AND sn.fac_srtnotificatie_code = 'CUST07' - AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE) - AND b.bez_bezoekers_key NOT IN - (SELECT kw.bez_bezoekers_key - FROM bez_kenmerkwaarde kw, bez_kenmerk k - WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key - AND k.bez_kenmerk_upper = 'VERTROUWELIJK') -- wanneer bezoek vertrouwelijk is geen sms - AND NOT EXISTS - (SELECT bez_kenmerkwaarde_waarde - FROM bez_kenmerkwaarde kw, bez_kenmerk k - WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key - AND k.bez_kenmerk_upper = 'SMS' -- sms verzonden - AND kw.bez_bezoekers_key = b.bez_bezoekers_key); - -BEGIN - FOR rec IN bez - LOOP - -- de SMS berichten versturen - INSERT INTO fac_notificatie (fac_srtnotificatie_key, - fac_notificatie_status, - fac_notificatie_receiver_phone, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_extrakey, - fac_notificatie_prioriteit) - VALUES (rec.fac_srtnotificatie_key, - rec.status, - rec.mobiel, - rec.text, - rec.bez_afspraak_key, - rec.bez_bezoekers_key, - 2); - - -- een timestamp zetten dat de sms verstuurd is - pnbr.set_kenmerk ('BEZ', - 1060, - rec.bez_bezoekers_key, - TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'), - 0); - - COMMIT; - END LOOP; -END; -/ - CREATE OR REPLACE VIEW PNBR_V_RAP_REL_GESCHENKEN AS SELECT bes_bestelling_key, @@ -9592,45 +9496,6 @@ AS FROM pnbr_v_rap_topdesk_log WHERE ROUND ((SYSDATE - tracking_datum) * 1440) <= 5 AND aantal_x < 2; ---- als er iets in de tracking of logging staat notificeren we zsm OGD - -CREATE OR REPLACE PROCEDURE pnbr_export_noti_ogd (p_applname IN VARCHAR2, - p_applrun IN VARCHAR2, - p_filedir IN VARCHAR2, - p_filename IN VARCHAR2) -AS - CURSOR td_log IS - SELECT l.*, sn.fac_srtnotificatie_key, rap.fac_usrrap_key - FROM pnbr_v_noti_ogd l, fac_srtnotificatie sn, fac_usrrap rap - WHERE sn.fac_srtnotificatie_code = 'CUST09' - AND UPPER (fac_usrrap_view_name) = 'PNBR_V_RAP_TOPDESK_LOG'; -BEGIN - FOR rec IN td_log - LOOP - -- de notificatie klaarzetten - INSERT INTO fac_notificatie (fac_srtnotificatie_key, - fac_notificatie_status, - fac_notificatie_receiver_email, - prs_perslid_key_receiver, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_extrakey, - fac_notificatie_prioriteit) - VALUES ( - rec.fac_srtnotificatie_key, - 2, - 'beheerpnb@ogd.nl;mudo@brabant.nl;wvhout@brabant.nl;nsalhi@brabant.nl', -- email - NULL, - 'Notificatie Facilitor - Topdesk koppeling', - rec.fac_usrrap_key, - NULL, - 2); - - COMMIT; - END LOOP; -END; -/ - CREATE OR REPLACE VIEW PNBR_V_STATUSVERLOOP_WPBEZ ( INS_DEEL_OMSCHRIJVING,