-- Script containing customer specific configuration sql statements for MAASDELTA -- $Revision$ -- $Id$ DEFINE thisfile = 'MAAS.SQL' DEFINE dbuser = '^MAAS' DEFINE custid = 'MAAS' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE VIEW maas_v_noti_lgstartdvb ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST01' AS code, NULL, leidinggevende, -- Persoon "_Schoonmaak_Van_Vliet", voor de emailadressen 'Notificatie start indiensttreding ' || naam, mld_melding_key, NULL FROM (SELECT m.mld_melding_key, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 22) AS naam, --kenmerk_key voor kenmerk 'Volledige naam' (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 343) AS leidinggevende --kenmerk_key voor kenmerk 'leidinggevende' FROM mld_melding m WHERE TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)-1 AND m.mld_stdmelding_key = 262); CREATE OR REPLACE VIEW maas_v_rap_inlog_als ( trackingdatum, datum, tijdstip, trackingomschrijving, key_als, inloggen_als, key_door, inloggen_door ) AS SELECT t.fac_tracking_datum, TRUNC (t.fac_tracking_datum), TO_CHAR (t.fac_tracking_datum, 'hh24:mm:ss'), t.fac_tracking_oms, t.fac_tracking_refkey, als.prs_perslid_naam_friendly AS als, t.prs_perslid_key, door.prs_perslid_naam_friendly AS door FROM fac_tracking t, fac_srtnotificatie sn, prs_v_perslid_fullnames als, prs_v_perslid_fullnames door WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND t.fac_srtnotificatie_key = 101 -- PRSLOG AND als.prs_perslid_key = t.fac_tracking_refkey AND door.prs_perslid_key = t.prs_perslid_key AND (t.fac_tracking_oms LIKE '%INLOGGEN ALS%' OR t.fac_tracking_oms LIKE '%Inloggen door%') ORDER BY t.fac_tracking_key DESC; CREATE OR REPLACE FORCE VIEW maas_v_noti_inlogals ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST02' AS code, NULL, key_als, inloggen_door || ' heeft op uw account in Facilitor ingelogd', key_door, NULL FROM maas_v_rap_inlog_als WHERE key_als <> key_door AND key_door <> 3 -- Facilitor, inlogpogingen vanuit Facilitor hoeven niet genotificeerd te worden AND (SYSDATE - trackingdatum) * 24 BETWEEN 0 AND 1; / CREATE OR REPLACE PROCEDURE maas_processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER) AS sender prs_perslid.prs_perslid_key%TYPE; mldkey mld_melding.mld_melding_key%TYPE; mldstat mld_melding.mld_melding_status%TYPE; stdmelding mld_stdmelding.mld_stdmelding_key%TYPE; v_errormsg fac_result.fac_result_waarde%TYPE; v_from VARCHAR2 (4000); v_body VARCHAR2 (4000); m_body VARCHAR2 (4000); v_actie VARCHAR2 (4000); v_vmnr mld_melding.mld_melding_externnr%TYPE; --Ticketnr Valuemation v_opdrextnr mld_melding.mld_melding_externnr%TYPE; --Huidig externnr v_mldkey mld_melding.mld_melding_key%TYPE; --bestaande mld_melding_key v_opdrkey mld_opdr.mld_opdr_key%TYPE; --bestaande mld_opdr_key v_opdrvolgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE; --bestaande volgnr v_status mld_opdr.mld_statusopdr_key%TYPE; -- status opdracht v_kenmerk_key NUMBER (10); v_kenmstatusoms VARCHAR2 (4000); v_kenmstatusper VARCHAR2 (4000); v_kenmstatusoms_cur VARCHAR2 (4000); v_kenmstatusper_cur VARCHAR2 (4000); v_vm_oplossing VARCHAR2 (4000); v_vm_oplossing_cur VARCHAR2 (4000); v_manager_email VARCHAR2 (4000); v_manager_key prs_perslid.prs_perslid_key%TYPE; v_lgkenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE; v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE; BEGIN v_errormsg := '(0x143)' || v_mldkey || psubject || v_actie; sender := 3; --Standaard de persoon Facilitor v_mailorigin := 1342; --Opdrachtkenmerk_key originele mail-bijlage -- Verwijder de Bounce Address Tag Validation IF pfrom LIKE 'prvs=%' THEN v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1); ELSE v_from := pfrom; END IF; v_body := pbody; m_body := pbody; CASE WHEN UPPER (pto) LIKE 'HRM@%' THEN v_errormsg := '(0x145)' || v_mldkey || psubject || v_actie; stdmelding := fac.safe_to_number (fac.getsetting ('defaultstdmelding')); mldstat := 4; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden gecorrigeerd naar een workflowstartmelding. v_manager_key := NULL; --Standaard nog geen manager bepaald, dat doen we later en dit halen we dan uit m_body v_lgkenmerk_key := NULL; --Standaard nog geen kenmerk bepaald, dat doen we later -- Obv onderwerpveld bepalen welke stdmelding aangemaakt moet worden. CASE WHEN UPPER (psubject) LIKE '%NIEUWE MEDEWERKER%' THEN stdmelding := 501; WHEN UPPER (psubject) LIKE '%NIEUWE STAGIAIR%' THEN stdmelding := 501; WHEN UPPER (psubject) LIKE '%NIEUWE INLEENKRACHT%' THEN stdmelding := 501; WHEN UPPER (psubject) LIKE '%UIT DIENST%' THEN stdmelding := 522; WHEN UPPER (psubject) LIKE '%ANDERE FUNCTIE%' THEN stdmelding := 564; ELSE stdmelding := 581; -- Dit is de verzamelbak van binnenkomende meldingen/mails waarvan niet de juiste stdmelding kan worden bepaald. mldstat := 2; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden gecorrigeerd naar een workflowstartmelding. END CASE; --We halen het emailadres en dan de key van de manager op uit de body (altijd eindigend op @maasdelta.nl). En in body staat 'Email manager: ' v_errormsg := '(0x146)' || v_mldkey || psubject || v_actie || 'Bepalen manager'; v_manager_email := SUBSTR ( m_body, INSTR (m_body, 'Email manager:') + 15, INSTR (SUBSTR (m_body, INSTR (m_body, 'Email manager:')), '@') - 3); BEGIN SELECT MAX (prs_perslid_key) INTO v_manager_key FROM prs_perslid WHERE UPPER (prs_perslid_email) = UPPER (v_manager_email) AND prs_perslid_verwijder IS NULL; END; -- Hier maken we de melding aan. BEGIN v_errormsg := 'Melding kan niet worden aangemaakt (' || 'To: ' || pto || 'Subject: ' || psubject || 'From: ' || pfrom || 'Body: ' || SUBSTR (pbody, 1, 100) || ')'; INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_onderwerp, mld_melding_omschrijving, mld_melding_status, mld_melding_t_uitvoertijd, mld_stdmelding_key, mld_melding_kto, mld_melding_externnr, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', 4, -- email SYSDATE, psubject, SUBSTR ( REPLACE ( SUBSTR (m_body, 1, 4000), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels mldstat, mld_t_uitvoertijd (2, 'D'), stdmelding, 0, NULL, 3, --Persoon Facilitor 3, --Persoon Facilitor NULL, 3) RETURNING mld_melding_key INTO mldkey; -- Bepalen kenmerk_key obv stdmelding BEGIN SELECT km.mld_kenmerk_key INTO v_lgkenmerk_key FROM mld_kenmerk km WHERE km.mld_srtkenmerk_key = 341 -- Kenmerksoort Leidinggevenden AND stdmelding = km.mld_stdmelding_key; END; v_errormsg := '(0x147)' || v_mldkey || psubject || v_actie || 'Invoeren kenmerk Leidinggevende/manager'; --Hier proberen we bij de zojuist aangemaakte melding het kenmerk 'Leidinggevende' te vullen met de prs_perslid_key die hoort bij het manager-emailadres uit de body CASE WHEN v_lgkenmerk_key IS NOT NULL THEN INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde) VALUES (mldkey, v_lgkenmerk_key, v_manager_key); END CASE; v_errormsg := '(0x148)' || v_mldkey || psubject || v_actie; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || mldkey); -- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden. v_errormsg := '(0x149)' || v_mldkey || psubject || v_actie; mld.mld_nextworkflowstep (mldkey, -1); END; -- Eerst hanteerde ik een End case en End om de twee kanalen te scheiden. Daarop liep het tweede kanaal (pto: helpdesk_maasdelta@) niet, vreemd genoeg. Door de End case en End uit te commentarieren liep de procedure wel. -- Wellicht wat vreemd en onverwacht gedrag, maar met die wetenschap, dit maar zo laten. -- END CASE; -- CASE WHEN UPPER (pto) LIKE 'HELPDESK_MAASDELTA@%' THEN v_errormsg := '(0x245)' || v_mldkey || psubject || v_actie; stdmelding := fac.safe_to_number (fac.getsetting ('defaultstdmelding')); mldstat := 2; -- Standaard de status in Nieuw (2). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden doorgezet en er een workflow gaat starten na het doorzetten. -- Bepalen van het ticknr. uit Valuemation, deze is vooral van belang bij het confirmation bericht v_errormsg := '(0x246)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 0, 12); -- Bepalen van mld_melding_key v_errormsg := '(0x247)' || v_mldkey || psubject || v_actie; v_mldkey := SUBSTR ( SUBSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), 0, INSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), '"') - 1), 0, INSTR ( SUBSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), 0, INSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), '"') - 1), '/') - 1); -- Bepalen van opdrachtvolgnr v_errormsg := '(0x248)' || v_mldkey || psubject || v_actie; v_opdrvolgnr := SUBSTR ( SUBSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), 0), INSTR ( SUBSTR ( SUBSTR (psubject, INSTR (psubject, 'Facilitor opdracht:') + 19), 0), '/') + 1, 1); -- Bepalen van de mld_opdr_key -- Uitgangspunt is 1 opdracht per melding v_errormsg := '(0x249)' || v_mldkey || psubject || v_actie; SELECT MIN (mld_opdr_key) INTO v_opdrkey FROM mld_opdr WHERE mld_melding_key = v_mldkey AND mld_opdr_bedrijfopdr_volgnr = v_opdrvolgnr; --Hier gaan we obv het onderwerpveld bepalen wat de actie in Facilitor moet zijn v_errormsg := 'Kan actie niet bepalen: ' || psubject || v_mldkey; CASE WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 13, 14)) LIKE '%IS AANGEMAAKT%' THEN v_actie := 'ORDVAL'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 22, 23)) LIKE '%IS DOOR ONS GEVALIDEERD%' THEN v_actie := 'ORDACP'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 22, 23)) LIKE '%WACHT OP UW REACTIE%' THEN v_actie := 'ORDUPD'; v_kenmstatusoms := 'Aanvullende info gevraagd, wacht op uw reactie'; WHEN UPPER (SUBSTR (psubject, 0, 14)) LIKE '%AFSTEMMING NAV%' THEN v_actie := 'ORDUPD'; v_kenmstatusoms := 'Telefonisch contact leggen mislukt, wacht op uw reactie'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 11, 12)) LIKE '%IS OPGELOST%' THEN v_actie := 'ORDGOE'; v_kenmstatusoms := 'Oplossing is aangereikt, bij akkoord kan de opdracht door u afgemeld worden via de link in Facilitor. Bij geen akkoord, dit graag aangeven via de portal van Valuemation.'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 50, 51)) LIKE '%WACHT INMIDDELS EEN WEEK OP AANVULLENDE INFORMATIE%' THEN v_actie := 'ORDUPD'; v_kenmstatusoms := 'Wacht inmiddels een week op uw reactie'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 12, 13)) LIKE '%ACCORDERING%' THEN v_actie := 'ORDOPL'; v_kenmstatusoms := 'Oplossing is aangereikt, bij akkoord kan de opdracht door u afgemeld worden via de link in Facilitor.'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 45, 46)) LIKE '%IN VERBAND MET HET UITBLIJVEN VAN EEN REACTIE%' THEN v_actie := 'ORDAFM'; WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 13, 14)) LIKE '%IS BIJGEWERKT%' THEN v_actie := 'ORDUPD'; v_kenmstatusoms := 'De melding is bijgewerkt.'; ELSE v_actie := NULL; END CASE; BEGIN --Hieronder de acties die gedaan moeten worden. --Bevestigingsmail vanuit Valuemation, vult externnr bij de melding v_errormsg := '(0x350)' || v_mldkey || psubject || v_actie; --Als de actie niet bepaald kan worden obv het onderwerp van de mail uit Valuemation, dan doen we niets met de mail. IF v_actie = NULL THEN v_errormsg := '(0x361)' || v_mldkey || psubject; fac.writelog ( 'PROCESSEMAIL', 'E', 'Onbekende actie, mail van: ' || pfrom || '[' || v_errormsg || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); ELSE --Bij een confirmationbericht uit Valuemation, wordt het ticketnr vanuit Valuemation doorgegeven. IF v_actie = 'ORDVAL' THEN v_errormsg := '(0x410)' || v_mldkey || psubject || v_actie || 'vmnr: ' || v_vmnr || 'opdrkey: ' || v_opdrkey; IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL THEN SELECT mld_opdr_externnr INTO v_opdrextnr FROM mld_opdr WHERE mld_opdr_key = v_opdrkey; UPDATE mld_opdr SET mld_opdr_externnr = v_vmnr WHERE mld_opdr_key = v_opdrkey; --Tracking toevoegen (externnr) fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Valuemation nr vanuit confirmationbericht: ' || v_opdrextnr || ' --> ' || v_vmnr); ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Valuemation nr kon niet worden gevuld:' || pfrom || '[' || v_errormsg || v_vmnr || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; END IF; --Hieronder de afhandeling van het bericht wanneer de melding wordt gevalideerd in Valuemation. IF v_actie = 'ORDACP' THEN v_errormsg := '(0x420)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12); IF v_opdrkey IS NOT NULL THEN --Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL THEN UPDATE mld_opdr SET mld_opdr_externnr = v_vmnr WHERE mld_opdr_key = v_opdrkey AND mld_opdr_externnr IS NULL; --Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt. IF v_opdrextnr <> v_vmnr THEN fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, '#Valuemation nr vanuit confirmationbericht: ' || v_opdrextnr || ' --> ' || v_vmnr); -- # voorkomt notificatie END IF; -- # voorkomt notificatie ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Valuemation nr kon niet worden gevuld:' || pfrom || '[' || v_errormsg || v_vmnr || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; UPDATE mld_opdr SET mld_statusopdr_key = 8 --Status geaccepteerd WHERE mld_opdr_key = v_opdrkey; fac.trackaction ('ORDACP', v_opdrkey, sender, NULL, '#Melding gevalideerd in Valuemation'); -- # voorkomt notificatie INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key) VALUES (v_opdrkey, SUBSTR ( psubject || CHR (13) || CHR (10) || REPLACE ( SUBSTR ( pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- Verwijder onnodige witregels sender); fac.trackaction ('ORDUPD', v_opdrkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Melding kan niet geaccepteerd worden, onbekende opdrachtkey' || pfrom || '[' || v_errormsg || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; END IF; --Hieronder de afhandeling van het bericht wanneer de melding moet worden bijgewerkt en een reactie wordt verwacht IF v_actie = 'ORDUPD' THEN v_errormsg := '(0x430)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12); IF v_opdrkey IS NOT NULL THEN v_errormsg := '(0x431)' || v_mldkey || psubject || v_actie; SELECT mld_statusopdr_key INTO v_status FROM mld_opdr WHERE mld_opdr_key = v_opdrkey; --Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL THEN v_errormsg := '(0x432)' || v_mldkey || psubject || v_actie; UPDATE mld_opdr SET mld_opdr_externnr = v_vmnr WHERE mld_opdr_key = v_opdrkey AND mld_opdr_externnr IS NULL; --Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt. IF v_opdrextnr <> v_vmnr THEN fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, '#Valuemation nr vanuit confirmationbericht: ' || v_opdrextnr || ' --> ' || v_vmnr); -- # voorkomt notificatie END IF; ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Valuemation nr kon niet worden gevuld:' || pfrom || '[' || v_errormsg || v_vmnr || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; --Wanneer confirmationbericht niet binnen is gekomen, dan is de status nog Toegekend (5) en niet Geaccepteerd (8). Dat kunnen we nu ook omzetten. IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL AND v_status = 5 --Toegekend (en dus nog niet geaccepteerd) THEN v_errormsg := '(0x433)' || v_mldkey || psubject || v_actie; UPDATE mld_opdr SET mld_statusopdr_key = 8 -- Geaccepteerd WHERE mld_opdr_key = v_opdrkey AND v_status = 5; fac.trackaction ( 'ORDACP', v_opdrkey, sender, NULL, '#Melding gevalideerd in Valuemation'); -- # voorkomt notificatie END IF; -- Hieronder bepalen of de opdracht al de kenmerken mbt status Valuemation gevuld heeft. SELECT COALESCE ( (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 602 -- Kenmerk 'Status valuemation' AND mld_opdr_key = v_opdrkey AND mld_kenmerkopdr_verwijder IS NULL), 'leeg') INTO v_kenmstatusoms_cur FROM DUAL; SELECT COALESCE ( (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 603 -- Kenmerk 'Status per' AND mld_opdr_key = v_opdrkey AND mld_kenmerkopdr_verwijder IS NULL), 'leeg') INTO v_kenmstatusper_cur FROM DUAL; -- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd. IF v_kenmstatusoms_cur = 'leeg' THEN v_errormsg := '(0x434)' || v_mldkey || psubject || v_actie; INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde) VALUES (v_opdrkey, 602, 'Wacht op uw reactie'); -- Kenmerk 'Status valuemation' fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status Valuemation: leeg --> ' || v_kenmstatusoms); -- # voorkomt notificatie ELSE v_errormsg := '(0x435)' || v_mldkey || psubject || v_actie; UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = v_kenmstatusoms WHERE mld_opdr_key = v_opdrkey AND mld_kenmerk_key = 602 -- Kenmerk 'Status valuemation' AND mld_kenmerkopdr_verwijder IS NULL; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status Valuemation: ' || v_kenmstatusoms_cur || ' --> ' || v_kenmstatusoms); -- # voorkomt notificatie v_errormsg := '(0x436)' || v_mldkey || psubject || v_actie; END IF; IF v_kenmstatusper_cur = 'leeg' THEN v_errormsg := '(0x437)' || v_mldkey || psubject || v_actie; INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde) VALUES (v_opdrkey, 603, -- -- Kenmerk 'Status per' TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS')) RETURNING mld_kenmerkopdr_waarde INTO v_kenmstatusper; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie ELSE v_errormsg := '(0x438)' || v_mldkey || psubject || v_actie; UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS') WHERE mld_opdr_key = v_opdrkey AND mld_kenmerk_key = 603 -- Kenmerk 'Status per' AND mld_kenmerkopdr_verwijder IS NULL RETURNING mld_kenmerkopdr_waarde INTO v_kenmstatusper; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status per:' || v_kenmstatusper_cur || ' --> ' || v_kenmstatusper); -- # voorkomt notificatie END IF; -- Als er een opdracht_key gevonden kan worden, dan ook de body als notitie meenemen v_errormsg := '(0x439)' || v_mldkey || psubject || v_actie; INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key) VALUES (v_opdrkey, SUBSTR ( psubject || CHR (13) || CHR (10) || REPLACE ( SUBSTR ( pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- Verwijder onnodige witregels sender); fac.trackaction ('ORDUPD', v_opdrkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie END IF; -- ELSE -- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDUPD. DIT CREEERT TEVEEL ONNODIGE LOGGING. -- fac.writelog ( -- 'PROCESSEMAIL', -- 'E', -- 'Melding kan niet bijgewerkt worden, onbekende opdrachtkey' -- || pfrom -- || '[' -- || v_errormsg -- || ']', -- 'OTHERS (error ' -- || SQLCODE -- || '/' -- || SUBSTR (SQLERRM, 1, 100) -- || ')'); END IF; --Hieronder de afhandeling van het bericht wanneer de melding vanuit Valuemation ter goedkeuring in Facilitor wordt aangeboden. --Op termijn ontvangen we hopelijk nog 2 url's in fac_result in de html-body om de oplossing te accepteren of af te wijzen. 1 url wordt al geboden (zie actie ORDOPL hieronder) IF v_actie = 'ORDGOE' THEN v_errormsg := '(0x440)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12); IF v_opdrkey IS NOT NULL THEN v_errormsg := '(0x441)' || v_mldkey || psubject || v_actie; SELECT mld_statusopdr_key INTO v_status FROM mld_opdr WHERE mld_opdr_key = v_opdrkey; --Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL THEN v_errormsg := '(0x442)' || v_mldkey || psubject || v_actie; UPDATE mld_opdr SET mld_opdr_externnr = v_vmnr WHERE mld_opdr_key = v_opdrkey AND mld_opdr_externnr IS NULL; --Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt. IF v_opdrextnr <> v_vmnr THEN fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, '#Valuemation nr vanuit confirmationbericht: ' || v_opdrextnr || ' --> ' || v_vmnr); -- # voorkomt notificatie END IF; ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Valuemation nr kon niet worden gevuld:' || pfrom || '[' || v_errormsg || v_vmnr || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; --Wanneer confirmationbericht niet binnen is gekomen, dan is de status nog Toegekend (5) en niet Geaccepteerd (8). Dat kunnen we nu ook omzetten. IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL AND v_status = 5 --Toegekend (en dus nog niet geaccepteerd) THEN v_errormsg := '(0x443)' || v_mldkey || psubject || v_actie; UPDATE mld_opdr SET mld_statusopdr_key = 8 -- Geaccepteerd WHERE mld_opdr_key = v_opdrkey AND v_status = 5; fac.trackaction ( 'ORDACP', v_opdrkey, sender, NULL, '#Melding gevalideerd in Valuemation'); -- # voorkomt notificatie END IF; -- Hieronder bepalen of de opdracht al de kenmerken gevuld heeft. SELECT COALESCE ( (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 602 -- Kenmerk 'Status valuemation' AND mld_opdr_key = v_opdrkey AND mld_kenmerkopdr_verwijder IS NULL), 'leeg') INTO v_kenmstatusoms_cur FROM DUAL; SELECT COALESCE ( (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 603 -- Kenmerk 'Status per' AND mld_opdr_key = v_opdrkey AND mld_kenmerkopdr_verwijder IS NULL), 'leeg') INTO v_kenmstatusper_cur FROM DUAL; -- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd. IF v_kenmstatusoms_cur = 'leeg' THEN v_errormsg := '(0x444)' || v_mldkey || psubject || v_actie; INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde) VALUES (v_opdrkey, 602, 'Oplossing is aangereikt'); -- Kenmerk 'Status valuemation' fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status Valuemation: leeg --> ' || v_kenmstatusoms); -- # voorkomt notificatie ELSE v_errormsg := '(0x445)' || v_mldkey || psubject || v_actie; IF v_kenmstatusoms_cur <> v_kenmstatusoms_cur THEN UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = v_kenmstatusoms WHERE mld_opdr_key = v_opdrkey AND mld_kenmerk_key = 602 -- Kenmerk 'Status valuemation' AND mld_kenmerkopdr_verwijder IS NULL; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status Valuemation: ' || v_kenmstatusoms_cur || ' --> ' || v_kenmstatusoms); -- # voorkomt notificatie ELSE v_errormsg := '(0x446)' || v_mldkey || psubject || v_actie; END IF; END IF; IF v_kenmstatusper_cur = 'leeg' THEN v_errormsg := '(0x447)' || v_mldkey || psubject || v_actie; INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde) VALUES (v_opdrkey, 603, -- -- Kenmerk 'Status per' TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS')) RETURNING mld_kenmerkopdr_waarde INTO v_kenmstatusper; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie ELSE v_errormsg := '(0x448)' || v_mldkey || psubject || v_actie; UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS') WHERE mld_opdr_key = v_opdrkey AND mld_kenmerk_key = 603 -- Kenmerk 'Status per' AND mld_kenmerkopdr_verwijder IS NULL RETURNING mld_kenmerkopdr_waarde INTO v_kenmstatusper; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Status per:' || v_kenmstatusper_cur || ' --> ' || v_kenmstatusper); -- # voorkomt notificatie END IF; -- Als er een opdracht_key gevonden kan worden, dan ook de body als afhandeling meenemen v_errormsg := '(0x449)' || v_mldkey || psubject || v_actie; UPDATE mld_opdr SET mld_opdr_opmerking = SUBSTR ( REPLACE ( SUBSTR (pbody, 1, 4000), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000) WHERE mld_opdr_key = v_opdrkey; fac.trackaction ('ORDUPD', v_opdrkey, sender, NULL, 'Oplossing is aangereikt'); END IF; -- ELSE -- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDGOE. DIT CREEERT TEVEEL ONNODIGE LOGGING. -- fac.writelog ( -- 'PROCESSEMAIL', -- 'E', -- 'Melding kan niet bijgewerkt worden, onbekende opdrachtkey' -- || pfrom -- || '[' -- || v_errormsg -- || ']', -- 'OTHERS (error ' -- || SQLCODE -- || '/' -- || SUBSTR (SQLERRM, 1, 100) -- || ')'); END IF; --Hieronder de afhandeling van het bericht wanneer de melding vanuit Valuemation ter goedkeuring in Facilitor wordt aangeboden. Er wordt een kenmerk gevuld met een url naar VM om de oplossing te accorderen --Deze actie ORDOPL komt als 2e email met de email die hoort bij actie ORDGOE. Een aantal handelingen worden hier dus niet (dubbel) gedaan (dat gebeurt al bij ORDGOE) IF v_actie = 'ORDOPL' THEN v_errormsg := '(0x450)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12); SELECT SUBSTR ( SUBSTR ( fac_result_waarde, (INSTR ( fac_result_waarde, 'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))), 0, INSTR ( SUBSTR ( fac_result_waarde, (INSTR ( fac_result_waarde, 'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))), '"') - 1) INTO v_vm_oplossing FROM fac_result WHERE fac_result_naam = 'htmlbody' AND fac_result_sessionid = psessionid; IF v_opdrkey IS NOT NULL THEN v_errormsg := '(0x451)' || v_mldkey || psubject || v_actie; -- Hieronder bepalen of de opdracht al het kenmerk gevuld heeft. SELECT COALESCE ( (SELECT mld_kenmerkopdr_waarde FROM mld_kenmerkopdr WHERE mld_kenmerk_key = 801 -- Kenmerk 'Klik hier als de oplossing akkoord is' AND mld_opdr_key = v_opdrkey AND mld_kenmerkopdr_verwijder IS NULL), 'leeg') INTO v_vm_oplossing_cur FROM DUAL; -- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd. IF v_vm_oplossing_cur = 'leeg' THEN v_errormsg := '(0x454)' || v_mldkey || psubject || v_actie; INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde) VALUES (v_opdrkey, 801, v_vm_oplossing); -- Kenmerk 'Klik hier als de oplossing akkoord is' fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Oplossing: leeg --> ' || v_vm_oplossing); -- # voorkomt notificatie ELSE v_errormsg := '(0x455)' || v_mldkey || psubject || v_actie; IF v_vm_oplossing <> v_vm_oplossing_cur THEN UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_waarde = v_vm_oplossing WHERE mld_opdr_key = v_opdrkey AND mld_kenmerk_key = 801 -- Kenmerk 'Klik hier als de oplossing akkoord is' AND mld_kenmerkopdr_verwijder IS NULL; fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, 'Oplossing: ' || v_vm_oplossing_cur || ' --> ' || v_vm_oplossing); -- # voorkomt notificatie ELSE v_errormsg := '(0x456)' || v_mldkey || psubject || v_actie; END IF; END IF; END IF; -- ELSE -- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDOPL. DIT CREEERT TEVEEL ONNODIGE LOGGING. -- fac.writelog ( -- 'PROCESSEMAIL', -- 'E', -- 'Melding kan niet bijgewerkt worden met de aangeboden oplossing' -- || pfrom -- || '[' -- || v_errormsg -- || ']', -- 'OTHERS (error ' -- || SQLCODE -- || '/' -- || SUBSTR (SQLERRM, 1, 100) -- || ')'); END IF; --Hieronder de afhandeling van het bericht wanneer de melding is opgelost in . IF v_actie = 'ORDAFM' THEN v_errormsg := '(0x460)' || v_mldkey || psubject || v_actie; v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12); IF v_opdrkey IS NOT NULL THEN --Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL THEN UPDATE mld_opdr SET mld_opdr_externnr = v_vmnr WHERE mld_opdr_key = v_opdrkey AND mld_opdr_externnr IS NULL; --Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt. IF v_opdrextnr <> v_vmnr THEN fac.trackaction ( 'ORDUPD', v_opdrkey, sender, NULL, '#Valuemation nr vanuit confirmationbericht: ' || v_opdrextnr || ' --> ' || v_vmnr); -- # voorkomt notificatie END IF; ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Valuemation nr kon niet worden gevuld:' || pfrom || '[' || v_errormsg || v_vmnr || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; UPDATE mld_opdr SET mld_statusopdr_key = 6, -- Afgemeld mld_opdr_opmerking = SUBSTR ( psubject || CHR (13) || CHR (10) || REPLACE ( SUBSTR ( pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000) -- Verwijder onnodige witregels WHERE mld_opdr_key = v_opdrkey; fac.trackaction ('ORDUPD', v_opdrkey, sender, NULL, 'Melding gereed gemeld in Valuemation'); -- # voorkomt notificatie INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key) VALUES (v_opdrkey, SUBSTR ( psubject || CHR (13) || CHR (10) || REPLACE ( SUBSTR ( pbody, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- Verwijder onnodige witregels sender); fac.trackaction ('ORDUPD', v_opdrkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie ELSE fac.writelog ( 'PROCESSEMAIL', 'E', 'Melding kan niet geaccepteerd worden, onbekende opdrachtkey' || pfrom || '[' || v_errormsg || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END IF; END IF; -- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen v_errormsg := 'Fout bij zoeken naar kenmerkbijlage'; SELECT MIN (mld_kenmerk_key) INTO v_kenmerk_key FROM mld_kenmerk k, mld_srtkenmerk sk, mld_stdmelding std, ins_tab_discipline d WHERE mld_srtkenmerk_kenmerktype = 'M' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND std.mld_stdmelding_key = stdmelding AND std.mld_ins_discipline_key = d.ins_discipline_key AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S') OR (k.mld_stdmelding_key = d.ins_discipline_key AND k.mld_kenmerk_niveau = 'D') OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T')) AND k.mld_kenmerk_verwijder IS NULL AND NOT EXISTS (SELECT mld_kenmerk_volgnummer FROM mld_kenmerk k1, mld_srtkenmerk sk1, mld_stdmelding std1, ins_tab_discipline d1 WHERE sk1.mld_srtkenmerk_kenmerktype = 'M' AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key AND std1.mld_stdmelding_key = stdmelding AND std1.mld_ins_discipline_key = d1.ins_discipline_key AND ( (k1.mld_stdmelding_key = std1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S') OR (k1.mld_stdmelding_key = d1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D') OR (k1.mld_stdmelding_key = d1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T')) AND k1.mld_kenmerk_verwijder IS NULL AND k1.mld_kenmerk_volgnummer > k.mld_kenmerk_volgnummer); IF mldkey IS NOT NULL AND v_kenmerk_key IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (mldkey / 1000), 'FM0000') || '___\M' || mldkey || '\' || v_kenmerk_key || '\'); END IF; IF v_opdrkey IS NOT NULL THEN -- Originele email wordt opgeslagen bij de opdracht v_errormsg := '(0x602`)' || v_mldkey || psubject || v_actie; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdrkey / 1000), 'FM0000') || '___\O' || v_opdrkey || '\' || v_mailorigin || '\'); END IF; END IF; END; ELSE v_errormsg := '(0x900)' || v_mldkey || psubject || v_actie || ' - geen pto herkend'; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', v_errormsg); END CASE; EXCEPTION WHEN OTHERS THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'maillog', v_errormsg); fac.writelog ( 'PROCESSEMAIL', 'E', 'Mail kon niet ingelezen worden afzender:' || pfrom || '[' || v_errormsg || v_mldkey || psubject || v_actie || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; / CREATE OR REPLACE PROCEDURE maas_export_valuemation 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 sendagain IS SELECT DISTINCT (mld_opdr_key) --Zelfde opdracht niet 2 maal FROM (SELECT DISTINCT (opdr.mld_opdr_key) --, opdr.mld_melding_key, opdr.mld_opdr_externsyncdate FROM mld_opdr opdr, mld_opdr_note note WHERE note.mld_opdr_key = opdr.mld_opdr_key AND opdr.mld_typeopdr_key = 481 AND note.prs_perslid_key <> 3 AND opdr.mld_opdr_verzonden IS NOT NULL AND mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd AND (opdr.mld_opdr_externsyncdate IS NULL OR opdr.mld_opdr_externsyncdate < note.mld_opdr_note_aanmaak) UNION ALL SELECT DISTINCT (opdr.mld_opdr_key) FROM mld_opdr opdr, fac_bijlagen att WHERE opdr.mld_opdr_key = att.fac_bijlagen_refkey AND att.fac_bijlagen_module = 'MLD' AND opdr.mld_typeopdr_key = 481 AND opdr.mld_opdr_verzonden IS NOT NULL AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd AND fac_bijlagen_kenmerk_key = 601 -- Opdrachtkenmerk Bijlagen bij opdrachttype Aareon AND (opdr.mld_opdr_externsyncdate IS NULL OR opdr.mld_opdr_externsyncdate < att.fac_bijlagen_aanmaak) UNION ALL SELECT opdr.mld_opdr_key FROM mld_opdr opdr, fac_tracking t WHERE opdr.mld_opdr_key = t.fac_tracking_refkey AND t.fac_srtnotificatie_key = 75 AND (t.fac_tracking_oms LIKE '%Impact: %' OR t.fac_tracking_oms LIKE '%Urgentie: %') AND t.prs_perslid_key IS NOT NULL AND t.prs_perslid_key <> 3 --Facilitor, dus enkel tracking door wijzigingen van gebruikers AND opdr.mld_typeopdr_key = 481 AND opdr.mld_opdr_verzonden IS NOT NULL AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd AND (opdr.mld_opdr_externsyncdate IS NULL OR opdr.mld_opdr_externsyncdate < t.fac_tracking_datum)); CURSOR kenmerken ( c_opdr_key NUMBER) IS SELECT ko.mld_kenmerkopdr_key AS kmkey FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk skm WHERE ko.mld_opdr_key = c_opdr_key AND k.mld_kenmerk_key = ko.mld_kenmerk_key AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND ko.mld_kenmerkopdr_verwijder IS NULL AND skm.mld_srtkenmerk_key IN (381, 382, 383); --Kenmerksoorten Status Valuemation, Status per en Opnieuw versturen' BEGIN v_errorhint := 'init'; -- We zetten de opdracht opnieuw in de wachtrij voor putorder. -- Ook halen we de kenmerken leeg mbt de status in Valuemation (3 stuks). FOR rec IN sendagain LOOP BEGIN v_errorhint := 'Opdracht opnieuw klaar zetten voor verzenden ' || rec.mld_opdr_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_opdr_key = rec.mld_opdr_key; v_errorhint := 'Kenmerken opdracht legen bij opnieuw verzenden ' || rec.mld_opdr_key; --Daarna legen we de kenmerken bij de opdracht die we opnieuw klaar zetten om te verzenden FOR rec1 IN kenmerken (rec.mld_opdr_key) LOOP BEGIN v_errorhint := 'Kenmerken legen ' || rec.mld_opdr_key; UPDATE mld_kenmerkopdr SET mld_kenmerkopdr_verwijder = SYSDATE WHERE mld_kenmerkopdr_key = rec1.kmkey; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'EXP_VALUEMATION', 'E', 'Export tbv opnieuw klaarzetten opdrachten' || '[' || v_errorhint || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; END LOOP; v_errorhint := 'Syncdatum instellen na opnieuw klaar zetten voor verzenden ' || rec.mld_opdr_key; --We updaten de syncdatum zodat de wijziging eenmalig wordt verstuurd. UPDATE mld_opdr SET mld_opdr_externsyncdate = SYSDATE WHERE mld_opdr_key = rec.mld_opdr_key; fac.trackaction ( 'ORDUPD', rec.mld_opdr_key, NULL, NULL, 'Opdracht opnieuw klaarzetten voor verzending ' || rec.mld_opdr_key); END; END LOOP; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'EXP_VALUEMATION', 'E', 'Export tbv opnieuw klaarzetten opdrachten' || '[' || v_errorhint || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; / CREATE OR REPLACE PROCEDURE maas_update_zendesk AS v_errorhint VARCHAR2 (100); --Bij een recente wijziging (toevoegen notitie / bijlage) moet Aareon een update krijgen via notificatie (ORDNOL) CURSOR sendagain IS SELECT DISTINCT (mld_opdr_key), prs_perslid_email, prs_perslid_key, prs_bedrijfadres_url, prs_bedrijfadres_key, --Zelfde opdracht niet 2 maal mld_opdr_note_key, fac_bijlagen_key FROM (SELECT DISTINCT(o.mld_opdr_key) , p.prs_perslid_email , p.prs_perslid_key , a.prs_bedrijfadres_url , a.prs_bedrijfadres_key , n.mld_opdr_note_key , NULL fac_bijlagen_key FROM mld_opdr o , mld_opdr_note n , fac_notificatie t , fac_srtnotificatie s , prs_bedrijf b , prs_bedrijfadres a , prs_perslid p WHERE o.mld_opdr_key = n.mld_opdr_key AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND o.prs_perslid_key = p.prs_perslid_key(+) AND b.prs_bedrijf_key = a.prs_bedrijf_key AND n.mld_opdr_key = t.fac_notificatie_refkey AND t.fac_srtnotificatie_key = s.fac_srtnotificatie_key AND s.fac_srtnotificatie_code = 'ORDNOL' AND o.prs_perslid_key <> 3 -- Facilitor AND o.mld_typeopdr_key = 481 -- Aareon AND o.mld_statusopdr_key IN (5,8) -- Toegekend, geaccepteerd AND a.prs_bedrijfadres_type = 'N' and t.fac_notificatie_datum = n.mld_opdr_note_aanmaak UNION ALL SELECT DISTINCT (opdr.mld_opdr_key), p.prs_perslid_email, p.prs_perslid_key, ba.prs_bedrijfadres_url, ba.prs_bedrijfadres_key, NULL mld_opdr_note_key, TO_CHAR(att.fac_bijlagen_key) FROM mld_opdr opdr, fac_bijlagen att, prs_perslid p, prs_bedrijf b, prs_bedrijfadres ba WHERE opdr.mld_opdr_key = att.fac_bijlagen_refkey AND opdr.prs_perslid_key = p.prs_perslid_key(+) AND att.fac_bijlagen_module = 'MLD' AND opdr.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND ba.prs_bedrijf_key = b.prs_bedrijf_key AND opdr.mld_typeopdr_key = 481 --Aareon AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd AND ba.prs_bedrijfadres_type = 'N' AND fac_bijlagen_kenmerk_key = 601 -- Opdrachtkenmerk Bijlagen bij opdrachttype Aareon AND att.fac_bijlagen_aanmaak > (SELECT MAX (t.fac_tracking_datum) FROM fac_tracking t, fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'ORDSNT' ) AND att.fac_bijlagen_aanmaak > opdr.mld_opdr_externsyncdate ); BEGIN v_errorhint := 'init'; FOR rec IN sendagain LOOP BEGIN v_errorhint := 'Opdracht opnieuw klaar zetten voor verzenden ' || rec.mld_opdr_key; -- Eerst zetten we de opdracht opnieuw klaar om te verzenden INSERT INTO fac_notificatie (fac_srtnotificatie_key, fac_notificatie_status, fac_notificatie_refkey, fac_notificatie_prioriteit, fac_notificatie_datum, fac_notificatie_lang, fac_notificatie_sender_email, prs_perslid_key_sender, fac_notificatie_systeemadres, prs_bedrijfadres_key, fac_notificatie_extrakey, fac_notificatie_attachments ) VALUES ( (SELECT sn.fac_srtnotificatie_key FROM fac_srtnotificatie sn WHERE sn.fac_srtnotificatie_code = 'ORDNOL'), 0, rec.mld_opdr_key, 2, SYSDATE, 'NL', rec.prs_perslid_email, rec.prs_perslid_key, NULL, --rec.prs_bedrijfadres_url, rec.prs_bedrijfadres_key, rec.mld_opdr_note_key, rec.fac_bijlagen_key ); --We updaten de syncdatum zodat de wijziging eenmalig wordt verstuurd. UPDATE mld_opdr SET mld_opdr_externsyncdate = SYSDATE WHERE mld_opdr_key = rec.mld_opdr_key; END; END LOOP; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'MAAS', 'E', 'Update sturen naar Zendesk' || '[' || v_errorhint || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); END; / /* CREATE OR REPLACE PROCEDURE maas_pre_putorders AS BEGIN --maas_export_valuemation --maas_update_zendesk; END; / */ CREATE OR REPLACE FORCE VIEW maas_v_mldopdr ( melding_key, meldingnummer, melding_start_key, externnummer, melding_regio, melding_district, melding_locatiecode, melding_locatie, melding_locatieplaats, fclt_3d_locatie_key, melding_gebouwcode, melding_gebouw, melding_verdieping, melding_ruimtenr, melding_ruimte, melding_ordernr, kostensoortgroep, kostensoort, kostenplaats, kostenplaats_oms, melder, melder_key, afdeling, afdeling_omschrijving, fclt_3d_afdeling_key, bedrijf_key, invoerder, meldbron, soortmelding, fclt_3d_discipline_key, productgroep, subproductgroep, behandelgroep, behandelaar, behandelaar_key, subproductgroepgroep, fclt_3d_discipline2_key, actieve_behandelgroep, actieve_behandelaar_key, actieve_behandelaar, melding_status, sla_nvt, sla_werkdgn, sla_werkuren, sla_respijtdgn, sla_respijturen, sla_accptdgn, sla_accpturen, plan_uitvoertijd_sla, melding_datum, melding_einddatum, melding_einddatum_std, melding_acceptdatum, melding_afgemeld, melding_accepted, doorlooptijd_werkdgn, doorlooptijd_werkuren, onderwerp, vomschrijving, melding_opmerking, prioriteit, prioriteittxt, rating, rating_opmerking, bolletje, actiecode, accept_sla_dagen, accept_sla_uren, uitvoering_sla_dagen, uitvoering_sla_uren, afspraak_sla_dagen, afspraak_sla_uren, accept_sla_optijd, uitvoering_sla_optijd, afspraak_sla_optijd, selfservice, opdracht_key, opdracht_nummer, opdracht_regio, opdracht_district, opdracht_locatie_code, opdracht_locatie, opdracht_locatieplaats, opdracht_gebouwcode, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_ruimte, opdracht_kostenplaats, opdracht_kostenplaats_oms, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_acceptdatum, opdracht_afgemeld, opdracht_doorlooptijd, opdracht_accepttijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, opdracht_contract, opdracht_contract_versie, opdracht_contactpersoon, opdracht_uren, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, opdracht_verstrektdatum, opdracht_lev_doorloopuren, opdracht_lev_doorloopdagen, status_valuemation, status_per ) AS SELECT melding_key, meldingnummer, melding_start_key, mo.mld_opdr_externnr, melding_regio, melding_district, melding_locatiecode, melding_locatie, melding_locatieplaats, fclt_3d_locatie_key, melding_gebouwcode, melding_gebouw, melding_verdieping, melding_ruimtenr, melding_ruimte, melding_ordernr, kostensoortgroep, kostensoort, kostenplaats, kostenplaats_oms, melder, melder_key, afdeling, afdeling_omschrijving, fclt_3d_afdeling_key, bedrijf_key, invoerder, meldbron, soortmelding, fclt_3d_discipline_key, productgroep, subproductgroep, behandelgroep, behandelaar, behandelaar_key, subproductgroepgroep, fclt_3d_discipline2_key, actieve_behandelgroep, actieve_behandelaar_key, actieve_behandelaar, melding_status, sla_nvt, sla_werkdgn, sla_werkuren, sla_respijtdgn, sla_respijturen, sla_accptdgn, sla_accpturen, plan_uitvoertijd_sla, melding_datum, melding_einddatum, melding_einddatum_std, melding_acceptdatum, melding_afgemeld, melding_accepted, doorlooptijd_werkdgn, doorlooptijd_werkuren, onderwerp, vomschrijving, melding_opmerking, prioriteit, prioriteittxt, rating, rating_opmerking, bolletje, actiecode, accept_sla_dagen, accept_sla_uren, uitvoering_sla_dagen, uitvoering_sla_uren, afspraak_sla_dagen, afspraak_sla_uren, accept_sla_optijd, uitvoering_sla_optijd, afspraak_sla_optijd, selfservice, opdracht_key, opdracht_nummer, opdracht_regio, opdracht_district, opdracht_locatie_code, opdracht_locatie, opdracht_locatieplaats, opdracht_gebouwcode, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_ruimte, opdracht_kostenplaats, opdracht_kostenplaats_oms, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_acceptdatum, opdracht_afgemeld, opdracht_doorlooptijd, opdracht_accepttijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, opdracht_contract, opdracht_contract_versie, opdracht_contactpersoon, opdracht_uren, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, opdracht_verstrektdatum, opdracht_lev_doorloopuren, opdracht_lev_doorloopdagen, (SELECT DISTINCT mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr km1, mld_srtkenmerk sk, mld_kenmerk km WHERE km1.mld_opdr_key = opdracht_key AND sk.mld_srtkenmerk_key = 381 --Status Valuemation AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = km1.mld_kenmerk_key AND km1.mld_kenmerkopdr_verwijder IS NULL) AS status_valuemation, (SELECT DISTINCT mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr km1, mld_srtkenmerk sk, mld_kenmerk km WHERE km1.mld_opdr_key = opdracht_key AND sk.mld_srtkenmerk_key = 382 --Status per AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND km.mld_kenmerk_key = km1.mld_kenmerk_key AND km1.mld_kenmerkopdr_verwijder IS NULL) AS status_per FROM mld_v_udr_meldingopdracht, mld_opdr mo WHERE mo.mld_opdr_key = opdracht_key AND opdracht_key IS NOT NULL; CREATE OR REPLACE FORCE VIEW maas_v_noti_hrwf_man_id ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST04' AS code, NULL, fac.safe_to_number (kmm.mld_kenmerkmelding_waarde), --prs_perslid_key manager. Manager is als email in processmail aangereikt 'Notificatie ivm medewerker in dienst', m.mld_melding_key, NULL FROM mld_melding m, mld_kenmerkmelding kmm WHERE kmm.mld_melding_key = m.mld_melding_key AND kmm.mld_kenmerk_key = 821 --Kenmerk Leidinggevende bij de startmelding workflow In Dienst AND m.mld_melding_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = m.mld_melding_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST04 VERSTUURD%') UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee SELECT DISTINCT 'CUST04' AS code, NULL, 238, --prs_perslid_key van Igor Zandee 'Notificatie ivm medewerker in dienst', m.mld_melding_key, NULL FROM mld_melding m, mld_kenmerkmelding kmm WHERE kmm.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = 501 --stdmelding Start in dienst (vanuit Visma) AND m.mld_melding_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = m.mld_melding_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST04 VERSTUURD%') UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee SELECT DISTINCT 'CUST04' AS code, NULL, 238, --prs_perslid_key van Igor Zandee 'Notificatie ivm medewerker uit dienst', m.mld_melding_key, NULL FROM mld_melding m, mld_kenmerkmelding kmm WHERE kmm.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = 522 --stdmelding Start uit dienst (vanuit Visma) AND m.mld_melding_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = m.mld_melding_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST04 VERSTUURD%') UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee SELECT DISTINCT 'CUST04' AS code, NULL, 238, --prs_perslid_key van Igor Zandee 'Notificatie ivm functiewijziging medewerker', m.mld_melding_key, NULL FROM mld_melding m, mld_kenmerkmelding kmm WHERE kmm.mld_melding_key = m.mld_melding_key AND m.mld_stdmelding_key = 564 --stdmelding functiewijziging (vanuit Visma) AND m.mld_melding_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = m.mld_melding_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST04 VERSTUURD%'); CREATE OR REPLACE VIEW maas_v_noti_hrwf_man_bm ( code, sender, receiver, text, key, xkey ) AS SELECT DISTINCT 'CUST05' AS code, NULL, kmm.mld_kenmerkmelding_waarde, --prs_perslid_key manager. Manager is als email in processmail aangereikt 'Notificatie bruikleenmiddelen voor nieuwe medewerker', m.mld_melding_key, NULL FROM mld_melding m, mld_kenmerkmelding kmm WHERE kmm.mld_melding_key = m.mld_melding_key AND kmm.mld_kenmerk_key = 922 --Kenmerk Leidinggevende bij de melding Bruikleenmiddelen in orde maken (Servicedesk) AND m.mld_melding_status IN (1, 5, 6, 99) -- Afgewezen, afgemeld, historie, niet opgelost. AND m.mld_melding_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = m.mld_melding_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST05 VERSTUURD%'); CREATE OR REPLACE VIEW maas_v_noti_noresponsevm ( code, sender, receiver, text, key, xkey, xsender, xemail, xmobile ) AS SELECT DISTINCT 'CUST06' AS code, NULL, NULL, 'Opdracht ' || mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr || ' heeft nog geen ticketnummer van Valuemation ontvangen', mld_opdr_key, NULL, 'gerard.mensink@aareon.nl;c.stok@maasdelta.nl;s.schepers@facilitor.nl', NULL, NULL FROM mld_opdr WHERE mld_opdr_externnr IS NULL AND mld_opdr_verzonden < SYSDATE - (30 / 1440) -- Enkel opdrachten van meer dan 30 minuten geleden AND mld_opdr_key NOT IN (SELECT t.fac_tracking_refkey FROM fac_tracking t WHERE t.fac_tracking_refkey = mld_opdr_key AND UPPER (t.fac_tracking_oms) LIKE '%NOTIFICATIE CUST06 VERSTUURD%'); CREATE OR REPLACE VIEW maas_v_maillog ( key, datum, status, omschrijving, hinthint ) AS SELECT imp_log_key, imp_log_datum, imp_log_status, imp_log_omschrijving, imp_log_hint FROM imp_log WHERE imp_log_applicatie = 'PROCESSEMAIL' ORDER BY imp_log_datum DESC; CREATE OR REPLACE VIEW MAAS_V_NOTI_UITLEEN ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE ) AS SELECT DISTINCT 'CUST07' AS code, NULL, NULL, 'Aan u is uitgegeven ' || sd.ins_srtdeel_omschrijving || ' met kenmerk ' || d.ins_deel_omschrijving, d.ins_deel_key, NULL, NULL, p.prs_perslid_email || '; servicedesk-ict@maasdelta.nl', NULL FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, fac_tracking t, prs_perslid p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND t.fac_tracking_refkey = d.ins_deel_key AND t.fac_srtnotificatie_key = 126 --INSOUT AND p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_alg_ruimte_type = 'P' AND d.ins_deel_key NOT IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 81 -- Kenmerksoort Indienstredingsproces AND kmd.ins_kenmerkdeel_waarde = '1' -- Ja (uit eigen tabel 'Ja/Nee') AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND (t.fac_tracking_datum > (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE UPPER ( fac_notificatie_job_view) = 'MAAS_V_NOTI_UITLEEN')) UNION ALL SELECT DISTINCT 'CUST09' AS code, NULL, NULL, 'Van u is ingenomen ' || sd.ins_srtdeel_omschrijving || ' met kenmerk ' || d.ins_deel_omschrijving, d.ins_deel_key, NULL, NULL, (CASE WHEN (SELECT kmd1.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kmd1, ins_kenmerk km1 WHERE km1.ins_kenmerk_key = kmd1.ins_kenmerk_key AND kmd1.ins_deel_key = d.ins_deel_key AND km1.ins_srtkenmerk_key = 103 -- Kenmerksoort Emailadres (***@maasdelta.nl) AND kmd1.ins_kenmerkdeel_verwijder IS NULL) IS NULL THEN 'servicedesk-ict@maasdelta.nl' ELSE (SELECT kmd1.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kmd1, ins_kenmerk km1 WHERE km1.ins_kenmerk_key = kmd1.ins_kenmerk_key AND kmd1.ins_deel_key = d.ins_deel_key AND km1.ins_srtkenmerk_key = 103 -- Kenmerksoort Emailadres (***@maasdelta.nl) AND kmd1.ins_kenmerkdeel_verwijder IS NULL) || '; servicedesk-ict@maasdelta.nl' END), NULL FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, fac_tracking t, prs_perslid p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND t.fac_tracking_refkey = d.ins_deel_key AND t.fac_srtnotificatie_key IN (127, 128) --INSINN/INSIN2 AND p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 201 -- Kenmerksoort Inname/Uitgifte AND kmd.ins_kenmerkdeel_waarde = '561' -- Inname AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND d.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 102 -- Kenmerksoort Uitdienstredingsproces AND kmd.ins_kenmerkdeel_waarde = '2' -- Ja (uit eigen tabel 'Ja/Nee') AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND (t.fac_tracking_datum > (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE UPPER (fac_notificatie_job_view) = 'MAAS_V_NOTI_UITLEEN')) UNION ALL SELECT DISTINCT 'CUST09' AS code, NULL, NULL, 'Van u is ingenomen ' || sd.ins_srtdeel_omschrijving || ' met kenmerk ' || d.ins_deel_omschrijving, d.ins_deel_key, NULL, NULL, (CASE WHEN (SELECT kmd1.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kmd1, ins_kenmerk km1 WHERE km1.ins_kenmerk_key = kmd1.ins_kenmerk_key AND kmd1.ins_deel_key = d.ins_deel_key AND km1.ins_srtkenmerk_key = 103 -- Kenmerksoort Emailadres (***@maasdelta.nl) AND kmd1.ins_kenmerkdeel_verwijder IS NULL) IS NULL THEN 'servicedesk-ict@maasdelta.nl' ELSE (SELECT kmd1.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kmd1, ins_kenmerk km1 WHERE km1.ins_kenmerk_key = kmd1.ins_kenmerk_key AND kmd1.ins_deel_key = d.ins_deel_key AND km1.ins_srtkenmerk_key = 103 -- Kenmerksoort Emailadres (***@maasdelta.nl) AND kmd1.ins_kenmerkdeel_verwijder IS NULL) || '; servicedesk-ict@maasdelta.nl' END), NULL FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, fac_tracking t, prs_perslid p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND t.fac_tracking_refkey = d.ins_deel_key AND t.fac_srtnotificatie_key IN (127, 128) --INSINN/INSIN2 AND p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 201 -- Kenmerksoort Inname/Uitgifte AND kmd.ins_kenmerkdeel_waarde = '561' -- Inname AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND d.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 102 -- Kenmerksoort Uitdienstredingsproces AND kmd.ins_kenmerkdeel_waarde = '1' -- Ja (uit eigen tabel 'Ja/Nee') AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND (t.fac_tracking_datum > (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE UPPER (fac_notificatie_job_view) = 'MAAS_V_NOTI_UITLEEN')); CREATE OR REPLACE VIEW maas_v_object_bezit AS SELECT p.prs_perslid_key, p.prs_perslid_naam_full, ( SELECT LISTAGG (d.ins_deel_omschrijving, '; ') WITHIN GROUP (ORDER BY d.ins_deel_key DESC) AS mobiel FROM ins_v_deel_gegevens d, ins_deel dd, ins_srtdeel sd WHERE d.ins_deel_key = dd.ins_deel_key AND dd.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = 28 -- Groep Mobiel onder Telefonie AND dd.ins_deel_verwijder IS NULL AND p.prs_perslid_key = d.prs_perslid_key GROUP BY d.prs_perslid_key) AS mobiel, ( SELECT LISTAGG (d.ins_deel_omschrijving, '; ') WITHIN GROUP (ORDER BY d.ins_deel_key DESC) AS Simkaart FROM ins_v_deel_gegevens d, ins_deel dd, ins_srtdeel sd WHERE d.ins_deel_key = dd.ins_deel_key AND dd.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = 141 -- Groep Simkaart onder Telefonie AND dd.ins_deel_verwijder IS NULL AND p.prs_perslid_key = d.prs_perslid_key GROUP BY d.prs_perslid_key) AS Simkaart, ( SELECT LISTAGG (d.ins_deel_omschrijving, '; ') WITHIN GROUP (ORDER BY d.ins_deel_key DESC) AS Vervoer FROM ins_v_deel_gegevens d, ins_deel dd, ins_srtdeel sd WHERE d.ins_deel_key = dd.ins_deel_key AND dd.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = 1 -- Groep Vervoersmiddelen onder Vervoer AND dd.ins_deel_verwijder IS NULL AND p.prs_perslid_key = d.prs_perslid_key GROUP BY d.prs_perslid_key) AS Vervoer, ( SELECT LISTAGG (d.ins_deel_omschrijving, '; ') WITHIN GROUP (ORDER BY d.ins_deel_key DESC) AS Tablet FROM ins_v_deel_gegevens d, ins_deel dd, ins_srtdeel sd WHERE d.ins_deel_key = dd.ins_deel_key AND dd.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = 33 -- Groep Tablet onder Hardware AND dd.ins_deel_verwijder IS NULL AND p.prs_perslid_key = d.prs_perslid_key GROUP BY d.prs_perslid_key) AS Tablet FROM prs_v_perslid_fullnames p; CREATE OR REPLACE VIEW MAAS_V_RAP_INSUIT_HR_IN ( PERSLID_KEY, DEEL_KEY, MEDEWERKER, EMAIL, MANAGER, IMEI, SERIE, OBJECTID, OBJECTSOORT, GROEPSOORT, DISCIPLINE_KEY, DISCIPLINE, TRACKING_DATE, MAX_DEEL_KEY, KENMERK_HANDTEKENING, EXTRA_KEY ) AS SELECT d.ins_alg_ruimte_key, d.ins_deel_key, p.prs_perslid_naam_friendly, pp.prs_perslid_email, (SELECT pm.prs_perslid_naam_friendly FROM ins_deel dm, prs_v_perslid_fullnames pm WHERE dm.ins_deel_key = 2901 AND pm.PRS_PERSLID_KEY = dm.ins_alg_ruimte_key AND dm.ins_alg_ruimte_type = 'P') AS manager, (SELECT kd1.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd1, ins_kenmerk k1 WHERE d.ins_deel_key = kd1.ins_deel_key AND k1.ins_kenmerk_key = kd1.ins_kenmerk_key AND k1.ins_srtkenmerk_key = 1 -- Imei nummer AND kd1.ins_kenmerkdeel_verwijder IS NULL) imei, (SELECT kd2.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel kd2, ins_kenmerk k2 WHERE d.ins_deel_key = kd2.ins_deel_key AND k2.ins_kenmerk_key = kd2.ins_kenmerk_key AND k2.ins_srtkenmerk_key = 6 -- Serienummer AND kd2.ins_kenmerkdeel_verwijder IS NULL) serie, d.ins_deel_omschrijving, sd.ins_srtdeel_omschrijving, sg.ins_srtgroep_omschrijving, disc.ins_discipline_key, disc.ins_discipline_omschrijving, t.fac_tracking_datum, (SELECT MAX (kmd.ins_deel_key) FROM ins_kenmerkdeel kmd, ins_kenmerk km, ins_deel hd WHERE kmd.ins_deel_key = hd.ins_deel_key AND p.prs_perslid_key = hd.ins_alg_ruimte_key AND kmd.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 42 -- Kenmerksoort Handtekening AND kmd.ins_kenmerkdeel_verwijder IS NULL) max_deel_key, --Dit is de max deel_key die is uitgeleend aan de betreffende persoon. (SELECT MAX (kmd.ins_kenmerk_key) FROM ins_kenmerkdeel kmd, ins_kenmerk km, ins_deel hd WHERE kmd.ins_deel_key = (SELECT MAX (kmd.ins_deel_key) FROM ins_kenmerkdeel kmd, ins_kenmerk km, ins_deel hd WHERE kmd.ins_deel_key = hd.ins_deel_key AND p.prs_perslid_key = hd.ins_alg_ruimte_key AND kmd.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 42 -- Kenmerksoort Handtekening AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND p.prs_perslid_key = hd.ins_alg_ruimte_key AND kmd.ins_kenmerk_key = km.ins_kenmerk_key AND km.ins_srtkenmerk_key = 42 -- Kenmerksoort Handtekening AND kmd.ins_kenmerkdeel_verwijder IS NULL) kenmerk_handtekening, --Dit is de kenmerk key behorend bij de max deel_key (vorige veld) d.ins_alg_ruimte_key FROM ins_deel d, fac_tracking t, prs_v_perslid_fullnames p, prs_perslid pp, ins_srtdeel sd, ins_srtgroep sg, ins_tab_discipline disc WHERE t.fac_tracking_refkey = d.ins_deel_key AND t.fac_srtnotificatie_key = 126 --INSOUT AND p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND d.ins_alg_ruimte_type = 'P' AND p.prs_perslid_key = pp.prs_perslid_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = disc.ins_discipline_key AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE); --AND (t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_lastrun -- FROM fac_notificatie_job -- WHERE UPPER ( -- fac_notificatie_job_view) = -- 'MAAS_V_NOTI_UITLEEN_HR_IN') -- AND (SELECT fac_notificatie_job_nextrun -- FROM fac_notificatie_job -- WHERE UPPER ( -- fac_notificatie_job_view) = -- 'MAAS_V_NOTI_UITLEEN_HR_IN')); CREATE OR REPLACE VIEW MAAS_V_NOTI_UITLEEN_HR_IN ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE ) AS SELECT DISTINCT 'CUST08' AS code, NULL, NULL, 'Aan u zijn objecten uitgegeven', (SELECT fac_usrrap_key FROM fac_usrrap WHERE UPPER (fac_usrrap_code) = 'MAAS_V_RAP_INSUIT_HR_IN') rapportnr, d.ins_alg_ruimte_key, NULL, p.prs_perslid_email || '; servicedesk-ict@maasdelta.nl', NULL FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg, fac_tracking t, prs_perslid p WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND t.fac_tracking_refkey = d.ins_deel_key AND t.fac_srtnotificatie_key = 126 --INSOUT AND p.prs_perslid_key = d.ins_alg_ruimte_key AND d.ins_alg_ruimte_type = 'P' AND d.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel kmd, ins_kenmerk km WHERE km.ins_kenmerk_key = kmd.ins_kenmerk_key AND km.ins_srtkenmerk_key = 81 -- Kenmerksoort Indienstredingsproces AND kmd.ins_kenmerkdeel_waarde = '1' -- Ja (uit eigen tabel 'Ja/Nee') AND kmd.ins_kenmerkdeel_verwijder IS NULL) AND (t.fac_tracking_datum > (SELECT fac_notificatie_job_lastrun FROM fac_notificatie_job WHERE UPPER ( fac_notificatie_job_view) = 'MAAS_V_NOTI_UITLEEN_HR_IN')); CREATE OR REPLACE PACKAGE MAAS AS PROCEDURE create_fac_usrdata_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2); END; / CREATE OR REPLACE PACKAGE BODY MAAS AS PROCEDURE create_fac_usrdata_node (p_key IN NUMBER, p_custid IN VARCHAR2, p_sessionid IN VARCHAR2, p_extra IN VARCHAR2, p_where IN VARCHAR2) AS v_fac_usrtab_key fac_usrdata.fac_usrtab_key%TYPE; v_fac_usrdata_code fac_usrdata.fac_usrdata_code%TYPE; v_fac_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE; v_fac_usrdata_omschr2 fac_usrdata.fac_usrdata_omschr2%TYPE; v_fac_usrdata_prijs fac_usrdata.fac_usrdata_prijs%TYPE; BEGIN IF p_key IS NOT NULL THEN XML.createconciseopentag ('fac_usrdata'); SELECT fac_usrdata.fac_usrtab_key, fac_usrdata.fac_usrdata_code, fac_usrdata.fac_usrdata_omschr, fac_usrdata.fac_usrdata_omschr2, fac_usrdata.fac_usrdata_prijs INTO v_fac_usrtab_key, v_fac_usrdata_code, v_fac_usrdata_omschr, v_fac_usrdata_omschr2, v_fac_usrdata_prijs FROM fac_usrdata WHERE fac_usrdata_key = p_key; XML.createxmltagvalue ('tabel_key', v_fac_usrtab_key); XML.createxmltagvalue ('code', v_fac_usrdata_code); XML.createxmltagvalue ('omschrijving', v_fac_usrdata_omschr); XML.createxmltagvalue ('omschrijving2', v_fac_usrdata_omschr2); XML.createxmltagvalue ('prijs', XML.mynumbertochar(v_fac_usrdata_prijs)); XML.createclosetag ('fac_usrdata'); END IF; END; END; / ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile