1002 lines
51 KiB
SQL
1002 lines
51 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for VVGR.
|
||
DEFINE thisfile = 'VVGR.SQL'
|
||
DEFINE dbuser = '^VVGR'
|
||
|
||
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 vvgr_v_rap_import_log
|
||
(
|
||
fclt_f_applicatie,
|
||
datum,
|
||
fclt_f_status,
|
||
omschrijving,
|
||
hint
|
||
)
|
||
AS
|
||
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
|
||
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
|
||
imp_log_status,
|
||
imp_log_omschrijving,
|
||
imp_log_hint
|
||
FROM imp_log il1, fac_import fi1, fac_import_app fia1
|
||
WHERE il1.fac_import_key = fi1.fac_import_key(+)
|
||
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM imp_log il2, fac_import fi2
|
||
WHERE il2.fac_import_key = fi2.fac_import_key
|
||
AND fi2.fac_import_app_key = fi1.fac_import_app_key
|
||
AND il2.fac_import_key > il1.fac_import_key);
|
||
|
||
CREATE OR REPLACE PROCEDURE vvgr_import_prs (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Funtie-kolom kopieren naar extra kolom 18 (= kenmerk6)!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
i.fac_imp_file_line
|
||
|| ';'
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 9)
|
||
+ 1, INSTR (fac_imp_file_line, ';', 1, 10)
|
||
- INSTR (fac_imp_file_line, ';', 1, 9)
|
||
- 1)
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||
|
||
-- Functie-kolom=10 resetten (op 'XXX' want verplicht)!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 9))
|
||
|| '"XXX"'
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 10))
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||
COMMIT;
|
||
/*
|
||
-- Afdelingscode-kolom kopieren naar extra kolom 19 (= kenmerk7)!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
i.fac_imp_file_line
|
||
|| ';'
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 14)
|
||
+ 1, INSTR (fac_imp_file_line, ';', 1, 15)
|
||
- INSTR (fac_imp_file_line, ';', 1, 14)
|
||
- 1)
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||
|
||
-- Afdelingscode-kolom=15 resetten (op 'XXX' want verplicht)!
|
||
UPDATE fac_imp_file i
|
||
SET i.fac_imp_file_line =
|
||
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 14))
|
||
|| '"XXX"'
|
||
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 15))
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
||
COMMIT;
|
||
*/
|
||
-- Generieke import.
|
||
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
||
-- Met Stamplaats wordt nog niets gedaan!
|
||
--'%ID;Kantoornummer;Achternaam;AchternaamVoorvoegsel;Voorletters;Voornaam;Emailadres;MobielZakelijk;Geboortedatum;Functie;InternTelefoonnummer;;Geslacht;Naam;Afdeling;Functie;Uren%');
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;0;2;3;4;6;'
|
||
|| '5;0;0;0;13;11;8;7;0;1;'
|
||
|| '10;0;0;0;0;0;9;14;15;16;'
|
||
|| '17;18;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'%ID;Kantoornummer;Achternaam;AchternaamVoorvoegsel;Voorletters;Voornaam;Emailadres;MobielZakelijk;Geboortedatum;Functie;InternTelefoonnummer;;Geslacht;Naam;Afdeling;Functie;Uren%');
|
||
|
||
-- Klantspecifieke aanpassingen.
|
||
/*
|
||
-- Afdeling-kolom altijd op 'VVGR' (en kenmerk7 negeren)!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_afdeling_naam = 'VVGR';
|
||
*/
|
||
-- Functie-kolom volgens kenmerk6 of anders op Onbekend!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_srtperslid_omschrijving = COALESCE (SUBSTR (i.prs_kenmerk6, 1, 60), 'Onbekend')
|
||
WHERE i.prs_perslid_naam IS NOT NULL;
|
||
/*
|
||
-- Login-kolom volgens e-mail (en eventueel niet gevuld)!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_oslogin = SUBSTR (i.prs_perslid_email, 1, 30)
|
||
WHERE i.prs_perslid_naam IS NOT NULL;
|
||
|
||
-- Als geen Voornaam aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_voornaam =
|
||
(SELECT MAX (prs_perslid_voornaam)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_voornaam IS NULL -- Aangeleverde Voornaam wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_voornaam IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
|
||
-- Als geen Email aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_email =
|
||
(SELECT MAX (prs_perslid_email)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_email IS NULL -- Aangeleverde Email wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_email IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
|
||
-- Als geen Telefoonnr aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_telefoonnr =
|
||
(SELECT MAX (prs_perslid_telefoonnr)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_telefoonnr IS NULL -- Aangeleverde Telefoonnr wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_telefoonnr IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
|
||
-- Als geen Mobiel aangeleverd, dan handmatig toegekende niet wissen.
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_mobiel =
|
||
(SELECT MAX (prs_perslid_mobiel)
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_nr = i.prs_perslid_nr)
|
||
WHERE i.prs_perslid_mobiel IS NULL -- Aangeleverde Mobiel wint!
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_mobiel IS NOT NULL
|
||
AND prs_perslid_nr = i.prs_perslid_nr);
|
||
|
||
-- Klantspecifieke aanpassingen.
|
||
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Kenmerk1-kolom -> Eigen tabel (key = 1) ->
|
||
-- Gebouw en daaronder Ruimte '_' op de verdieping met het laagste volgnummer!
|
||
-- Als persoon al een WP heeft op import-locatie, dan is dat de juiste en blijft deze
|
||
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
|
||
-- '_' op de meegegeven locatie.
|
||
-- Eventuele WPs onder andere locaties dan import-locatie blijven ook ongewijzigd!
|
||
UPDATE fac_imp_perslid i
|
||
SET i.alg_locatie_code =
|
||
(SELECT il.alg_locatie_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il
|
||
WHERE ud.fac_usrtab_key = -1
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||
AND alg_locatie_key < il.alg_locatie_key)),
|
||
i.alg_gebouw_code =
|
||
(SELECT ig.alg_gebouw_code
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il
|
||
WHERE ud.fac_usrtab_key = -1
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||
AND alg_locatie_key < il.alg_locatie_key)),
|
||
i.alg_verdieping_volgnr =
|
||
(SELECT iv.alg_verdieping_volgnr
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il,
|
||
alg_verdieping iv,
|
||
alg_ruimte ir
|
||
WHERE ud.fac_usrtab_key = -1
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||
AND alg_locatie_key < il.alg_locatie_key)
|
||
AND ig.alg_gebouw_key = iv.alg_gebouw_key
|
||
AND iv.alg_verdieping_key = ir.alg_verdieping_key
|
||
AND ir.alg_ruimte_nr = '_000'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r, alg_verdieping v
|
||
WHERE r.alg_ruimte_nr = '_000'
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_verdieping_volgnr < iv.alg_verdieping_volgnr)),
|
||
i.alg_ruimte_nr =
|
||
(SELECT '_000'
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il
|
||
WHERE ud.fac_usrtab_key = -1
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||
AND alg_locatie_key < il.alg_locatie_key))
|
||
WHERE NOT EXISTS -- Nog geen werkplek op Locatie!
|
||
(SELECT 1
|
||
FROM fac_v_aanwezigusrdata ud, -- Mapping Kenmerk1-code -> Gebouwcode
|
||
alg_v_aanweziggebouw ig,
|
||
alg_locatie il,
|
||
prs_v_aanwezigperslid p,
|
||
prs_perslidwerkplek pw,
|
||
prs_werkplek cw,
|
||
alg_v_aanwezigruimte cr,
|
||
alg_verdieping cv,
|
||
alg_gebouw cg
|
||
WHERE ud.fac_usrtab_key = -1
|
||
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
|
||
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
|
||
AND ig.alg_locatie_key = il.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
|
||
AND alg_locatie_key < il.alg_locatie_key)
|
||
AND p.prs_perslid_nr = i.prs_perslid_nr
|
||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw.prs_werkplek_key = cw.prs_werkplek_key
|
||
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
|
||
AND cr.alg_verdieping_key = cv.alg_verdieping_key
|
||
AND cv.alg_gebouw_key = cg.alg_gebouw_key
|
||
AND cg.alg_locatie_key = il.alg_locatie_key);
|
||
|
||
-- Resulteert in nette foutmelding als ruimte niet kan worden bepaald.
|
||
UPDATE fac_imp_perslid
|
||
SET alg_verdieping_volgnr = 0
|
||
WHERE alg_gebouw_code IS NOT NULL
|
||
AND alg_verdieping_volgnr IS NULL;
|
||
*/
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces personen afgebroken!');
|
||
END vvgr_import_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE vvgr_update_prs (p_import_key IN NUMBER)
|
||
AS
|
||
-- Toevoegen afdelingen die nog niet voorkomen in Facilitor en verwijderen
|
||
-- voorlopig handmatig (ipv. automatisch).
|
||
CURSOR c_afd
|
||
IS
|
||
SELECT i.prs_afdeling_naam,
|
||
MAX (COALESCE (SUBSTR (i.prs_kenmerk3, 1, 60), i.prs_afdeling_naam)) prs_afdeling_omschrijving,
|
||
COUNT (*) aant
|
||
FROM fac_imp_perslid i
|
||
WHERE LENGTH (i.prs_afdeling_naam) BETWEEN 1 AND 15 -- Gevuld en niet te lang!
|
||
AND EXISTS (SELECT 1 FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_key = 2) -- VVGR!
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_bedrijf_key = 2 -- VVGR!
|
||
AND prs_afdeling_parentkey IS NULL -- Afdeling-1!
|
||
AND UPPER (TRIM (prs_afdeling_naam)) = UPPER (TRIM (i.prs_afdeling_naam)))
|
||
GROUP BY i.prs_afdeling_naam
|
||
ORDER BY 1;
|
||
|
||
-- Verwijderen personen die niet meer in importbestand voorkomen.
|
||
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_key
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_key > 10 -- Voor de zekerheid!
|
||
AND p.prs_perslid_apikey IS NULL
|
||
--AND prs_perslid_oslogin2 IS NULL -- Zonder alternatieve login!
|
||
AND prs_perslid_nr IS NOT NULL -- Met personeelsnummer!
|
||
--AND NOT EXISTS
|
||
-- (SELECT 1
|
||
-- FROM fac_imp_perslid
|
||
-- WHERE LOWER (prs_perslid_email) = LOWER (p.prs_perslid_email))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_perslid
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (p.prs_perslid_nr))
|
||
ORDER BY 1;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
BEGIN
|
||
-- Toevoegen niet bestaande afdelingen.
|
||
FOR rec IN c_afd
|
||
LOOP
|
||
BEGIN
|
||
INSERT INTO prs_afdeling (prs_bedrijf_key, prs_afdeling_naam, prs_afdeling_omschrijving)
|
||
VALUES (2, rec.prs_afdeling_naam, rec.prs_afdeling_omschrijving);
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
|
||
-- Generic update.
|
||
SELECT COUNT(*) INTO v_count FROM fac_imp_perslid;
|
||
|
||
IF v_count < 100
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')',
|
||
'Zie specificatie');
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Generieke update (op e-mail adres).
|
||
prs.update_perslid (p_import_key, 'NR', 'L');
|
||
|
||
-- Verwijderen personen *binnen VVGR* niet meer in importbestand.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
/*
|
||
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
|
||
v_errormsg := 'Fout verwijderen functies';
|
||
DELETE FROM prs_srtperslid sp
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslid
|
||
WHERE prs_srtperslid_key = sp.prs_srtperslid_key);
|
||
COMMIT;
|
||
*/
|
||
-- Toekennen _Default aan alle personen in import-scope!
|
||
v_errormsg := 'Fout toekennen _Default';
|
||
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
|
||
SELECT prs_perslid_key, 1
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_key > 10 -- Voor de zekerheid!
|
||
AND p.prs_perslid_apikey IS NULL
|
||
--AND prs_perslid_oslogin2 IS NULL -- Zonder alternatieve login!
|
||
AND prs_perslid_nr IS NOT NULL -- Met personeelsnummer!
|
||
AND NOT EXISTS -- Nog niet toegekend aan _Default!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 1 -- _Default
|
||
AND prs_perslid_key = p.prs_perslid_key);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces PRS afgebroken!');
|
||
END vvgr_update_prs;
|
||
/
|
||
|
||
-- Mail2Melding. Twee stromen:
|
||
-- - HELPDESK -: Registreren melding van Soortmelding=161 (Mailmelding ICT)!
|
||
-- - SERVICE -: Registreren melding van Soortmelding=162 (Mailmelding FAC)!
|
||
CREATE OR REPLACE PROCEDURE VVGR_processemail (
|
||
pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER)
|
||
AS
|
||
c_onbekend_key NUMBER (10) := 4; -- TODO:API-user tbv. hMail-koppeling?
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_exists_id VARCHAR2 (255);
|
||
v_melding_key NUMBER (10);
|
||
v_melder_key NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
v_stdmelding_key NUMBER (10);
|
||
v_body VARCHAR2 (4000);
|
||
v_folder_kkey NUMBER (10);
|
||
v_count NUMBER (10);
|
||
BEGIN
|
||
CASE
|
||
--WHEN INSTR (UPPER (pfrom), '???') > 0 AND UPPER (pto) LIKE 'HELPDESK@%'
|
||
WHEN UPPER (pto) LIKE 'HELPDESK@%'
|
||
THEN
|
||
-- Bepaal de melder op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder';
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 15=1441RG-44/Purmerend Gorslaan 44-45 Hoofdkantoor
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 15
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
-- 1) Eerst meldingnr 123 of opdrachtnr 123/1 gevolgd door spatie uit
|
||
-- onderwerp proberen te bepalen.
|
||
-- 2) Het eerste voorkomen beginnend met een cijfer wordt gezien als
|
||
-- meldingnr of opdrachtnr en evt. andere voorkomens (verder naar
|
||
-- rechts) worden genegeerd.
|
||
v_errormsg := 'Fout bepalen melding';
|
||
v_exists_id := psubject;
|
||
IF REGEXP_INSTR (v_exists_id, '\d') > 0
|
||
THEN
|
||
v_exists_id := SUBSTR (v_exists_id, REGEXP_INSTR (v_exists_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exists_id plus ' '!
|
||
v_exists_id := SUBSTR (v_exists_id, 1, REGEXP_INSTR (v_exists_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exists_id!
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen melding ' || v_exists_id;
|
||
SELECT MAX (mld_melding_key), MAX (prs_perslid_key) -- MAX() om te zorgen dat v_melding_key=NULL als meldingnr niet bestaat!
|
||
INTO v_melding_key, v_melder_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exists_id);
|
||
|
||
IF v_melding_key IS NOT NULL -- AND INSTR (UPPER (pfrom), '@VNOG.NL') > 0 -- Melding bestaat <20>n VNOG-mailer?
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
mld_melding_note_omschrijving,
|
||
prs_perslid_key,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
SUBSTR (psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)), 1, 4000),
|
||
v_perslid_key,
|
||
DECODE (v_perslid_key, -- Notitie open=1 als mailer=melder, anders gesloten=0!
|
||
v_melder_key, 1,
|
||
0));
|
||
|
||
-- Default tracking is even goed genoeg.
|
||
fac.trackaction ('MLDNOT', v_melding_key, v_perslid_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || TO_CHAR (v_melding_key));
|
||
/*
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet.
|
||
BEGIN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- Backoffice + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Niet gelukt om Attentie te zetten.');
|
||
END;
|
||
|
||
-- Bepalen vakgroeptype prefix en behandelaar van melding.
|
||
SELECT sd.ins_srtdiscipline_prefix, m.mld_melding_behandelaar_key, m.mld_melding_behandelaar2_key
|
||
INTO v_mldprefix, v_behandelaar_key, v_behandelaar2_key
|
||
FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key = v_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key;
|
||
|
||
IF v_behandelaar2_key IS NOT NULL -- Melding en actieve behandelaar bekend?
|
||
THEN
|
||
-- Notificatie naar actieve behandelaar
|
||
fac.putnotificationsrtprio (NULL, v_behandelaar2_key, 'MLDAB2', v_melding_key, 'Melding ' || v_mldprefix || v_melding_key || ' is gewijzigd.', 2, NULL, NULL, NULL, 2, NULL);
|
||
ELSIF v_behandelaar_key IS NOT NULL -- Melding en behandelaar bekend?
|
||
THEN
|
||
-- Notificatie naar behandelaar
|
||
fac.putnotificationsrtprio (NULL, v_behandelaar_key, 'MLDNOB', v_melding_key, 'Melding ' || v_mldprefix || v_melding_key || ' is gewijzigd.', 2, NULL, NULL, NULL, 2, NULL);
|
||
END IF;
|
||
*/
|
||
ELSE
|
||
-- Bepaal de afgesproken soortmelding met key=181=Mailmelding ICT!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key
|
||
INTO v_discipline_key, v_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 181;
|
||
|
||
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
|
||
--v_errormsg := 'Fout strippen disclaimer';
|
||
--IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 --AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
|
||
--THEN
|
||
-- v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
|
||
-- v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DISCLAIMER') - 1));
|
||
--ELSE
|
||
-- v_body := pbody;
|
||
--END IF;
|
||
v_body := pbody;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- Email
|
||
COALESCE (v_locatie_key, 15), -- Fallback op 15=1441RG-44/Purmerend Gorslaan 44-45 Hoofdkantoor
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
SUBSTR (v_body, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- Prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
NULL) -- BT?
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || TO_CHAR (v_melding_key));
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
-- PAS OP: 'Alle vakgroeptypen'-kenmerken hier niet beschouwd en dat bijt
|
||
-- dus nooit met kenmerk hieronder tbv. Originele mail!
|
||
v_errormsg := 'Fout toevoegen melding-bijlage';
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey 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 (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Per 2021.1 mogelijk dat originele mail ook wordt opgeslagen!
|
||
-- PAS OP: Voorkennis dat dit een 'Alle vakgroeptypen'-kenmerk is en
|
||
-- dus nooit bijt met Bijlage(n)-kenmerk hierboven!
|
||
v_errormsg := 'Fout toevoegen originele mail';
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || 1021 || '\');
|
||
/*
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
*/
|
||
WHEN UPPER (pto) LIKE 'SERVICE@%'
|
||
THEN
|
||
-- Bepaal de melder op basis van e-mail adres zoals in pfrom?
|
||
v_errormsg := 'Fout bepalen melder';
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||
prs_v_werkplekperslid_gegevens wpg
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND UPPER (p.prs_perslid_email) LIKE UPPER (pfrom) || '%'
|
||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 15=1441RG-44/Purmerend Gorslaan 44-45 Hoofdkantoor
|
||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 15
|
||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = c_onbekend_key;
|
||
END IF;
|
||
|
||
-- 1) Eerst meldingnr 123 of opdrachtnr 123/1 gevolgd door spatie uit
|
||
-- onderwerp proberen te bepalen.
|
||
-- 2) Het eerste voorkomen beginnend met een cijfer wordt gezien als
|
||
-- meldingnr of opdrachtnr en evt. andere voorkomens (verder naar
|
||
-- rechts) worden genegeerd.
|
||
v_errormsg := 'Fout bepalen melding';
|
||
v_exists_id := psubject;
|
||
IF REGEXP_INSTR (v_exists_id, '\d') > 0
|
||
THEN
|
||
v_exists_id := SUBSTR (v_exists_id, REGEXP_INSTR (v_exists_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exists_id plus ' '!
|
||
v_exists_id := SUBSTR (v_exists_id, 1, REGEXP_INSTR (v_exists_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exists_id!
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen melding ' || v_exists_id;
|
||
SELECT MAX (mld_melding_key), MAX (prs_perslid_key) -- MAX() om te zorgen dat v_melding_key=NULL als meldingnr niet bestaat!
|
||
INTO v_melding_key, v_melder_key
|
||
FROM mld_melding
|
||
WHERE mld_melding_key = fac.safe_to_number (v_exists_id);
|
||
|
||
IF v_melding_key IS NOT NULL -- AND INSTR (UPPER (pfrom), '@VNOG.NL') > 0 -- Melding bestaat <20>n VNOG-mailer?
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen notitie';
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
mld_melding_note_omschrijving,
|
||
prs_perslid_key,
|
||
mld_melding_note_flag)
|
||
VALUES (v_melding_key,
|
||
SUBSTR (psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)), 1, 4000),
|
||
v_perslid_key,
|
||
DECODE (v_perslid_key, -- Notitie open=1 als mailer=melder, anders gesloten=0!
|
||
v_melder_key, 1,
|
||
0));
|
||
|
||
-- Default tracking is even goed genoeg.
|
||
fac.trackaction ('MLDNOT', v_melding_key, v_perslid_key, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || TO_CHAR (v_melding_key));
|
||
/*
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet.
|
||
BEGIN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1 + 128 -- Backoffice + Attentie
|
||
WHERE mld_melding_key = v_melding_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
DBMS_OUTPUT.put_line ('Niet gelukt om Attentie te zetten.');
|
||
END;
|
||
|
||
-- Bepalen vakgroeptype prefix en behandelaar van melding.
|
||
SELECT sd.ins_srtdiscipline_prefix, m.mld_melding_behandelaar_key, m.mld_melding_behandelaar2_key
|
||
INTO v_mldprefix, v_behandelaar_key, v_behandelaar2_key
|
||
FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key = v_melding_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key;
|
||
|
||
IF v_behandelaar2_key IS NOT NULL -- Melding en actieve behandelaar bekend?
|
||
THEN
|
||
-- Notificatie naar actieve behandelaar
|
||
fac.putnotificationsrtprio (NULL, v_behandelaar2_key, 'MLDAB2', v_melding_key, 'Melding ' || v_mldprefix || v_melding_key || ' is gewijzigd.', 2, NULL, NULL, NULL, 2, NULL);
|
||
ELSIF v_behandelaar_key IS NOT NULL -- Melding en behandelaar bekend?
|
||
THEN
|
||
-- Notificatie naar behandelaar
|
||
fac.putnotificationsrtprio (NULL, v_behandelaar_key, 'MLDNOB', v_melding_key, 'Melding ' || v_mldprefix || v_melding_key || ' is gewijzigd.', 2, NULL, NULL, NULL, 2, NULL);
|
||
END IF;
|
||
*/
|
||
ELSE
|
||
-- Bepaal de afgesproken soortmelding met key=182=Mailmelding FAC!
|
||
v_errormsg := 'Fout bepalen soortmelding';
|
||
SELECT mld_ins_discipline_key, mld_stdmelding_key
|
||
INTO v_discipline_key, v_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = 182;
|
||
|
||
-- Body overnemen tot 1e voorkomen van hard afgesproken start DISCLAIMER!
|
||
--v_errormsg := 'Fout strippen disclaimer';
|
||
--IF INSTR (UPPER (pbody), 'DISCLAIMER') > 0 --AND INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') > 0
|
||
--THEN
|
||
-- v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DE INFORMATIE IN DIT BERICHT') - 12));
|
||
-- v_body := TRIM (SUBSTR (pbody, 1, INSTR (UPPER (pbody), 'DISCLAIMER') - 1));
|
||
--ELSE
|
||
-- v_body := pbody;
|
||
--END IF;
|
||
v_body := pbody;
|
||
|
||
-- Suggested extensions:
|
||
-- - Check for MLDUSE-write autorisations
|
||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||
v_errormsg := 'Fout toevoegen melding';
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_datum,
|
||
mld_melding_omschrijving,
|
||
mld_stdmelding_key,
|
||
mld_melding_t_uitvoertijd,
|
||
prs_kostenplaats_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
mld_melding_status,
|
||
mld_melding_spoed,
|
||
mld_melding_onderwerp,
|
||
mld_melding_behandelaar2_key,
|
||
mld_ins_discipline_key)
|
||
VALUES ('MLD',
|
||
4, -- Email
|
||
COALESCE (v_locatie_key, 15), -- Fallback op 15=1441RG-44/Purmerend Gorslaan 44-45 Hoofdkantoor
|
||
NULL, --v_onrgoed_keys,
|
||
SYSDATE,
|
||
SUBSTR (v_body, 1, 2000),
|
||
v_stdmelding_key,
|
||
NULL,
|
||
v_kostenplaats_key,
|
||
v_perslid_key,
|
||
v_perslid_key,
|
||
NULL,
|
||
3, -- Prio normaal
|
||
SUBSTR (psubject, 1, 80),
|
||
NULL,
|
||
NULL) -- BT?
|
||
RETURNING mld_melding_key
|
||
INTO v_melding_key;
|
||
|
||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || TO_CHAR (v_melding_key));
|
||
END IF;
|
||
|
||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||
-- PAS OP: 'Alle vakgroeptypen'-kenmerken hier niet beschouwd en dat bijt
|
||
-- dus nooit met kenmerk hieronder tbv. Originele mail!
|
||
v_errormsg := 'Fout toevoegen melding-bijlage';
|
||
SELECT MIN (k1.mld_kenmerk_key)
|
||
INTO v_folder_kkey
|
||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||
AND k2.mld_kenmerk_verwijder IS NULL
|
||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||
|
||
IF v_folder_kkey 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 (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||
END IF;
|
||
|
||
-- Per 2021.1 mogelijk dat originele mail ook wordt opgeslagen!
|
||
-- PAS OP: Voorkennis dat dit een 'Alle vakgroeptypen'-kenmerk is en
|
||
-- dus nooit bijt met Bijlage(n)-kenmerk hierboven!
|
||
v_errormsg := 'Fout toevoegen originele mail';
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || 1021 || '\');
|
||
/*
|
||
-- Handle workflow actions for completion (in case of new melding).
|
||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||
*/
|
||
ELSE
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
|
||
END CASE;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog ('PROCESSEMAIL', 'E', 'VVGR_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
|
||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW VVGR_V_RAP_QRC
|
||
AS
|
||
SELECT d.ins_deel_omschrijving hide_f_sort,
|
||
dd.ins_discipline_omschrijving || ' / ' || sm.mld_stdmelding_omschrijving
|
||
fclt_f_melding,
|
||
'Plaats' gekoppeld_aan,
|
||
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
|
||
fclt_f_locatie,
|
||
--o.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
o.alg_plaatsaanduiding fclt_f_plaats,
|
||
NULL fclt_f_persoon,
|
||
dd.ins_discipline_omschrijving fclt_f_discipline,
|
||
sg.ins_srtgroep_omschrijving fclt_f_objectgroep,
|
||
sd.ins_srtdeel_omschrijving fclt_f_objectsoort,
|
||
d.ins_deel_omschrijving fclt_f_identificatie,
|
||
--b.fac_bookmark_naam fclt_f_bookmark,
|
||
dd.ins_discipline_key fclt_3d_discipline_key,
|
||
sd.ins_srtdeel_key,
|
||
d.ins_deel_key,
|
||
d.ins_alg_locatie_key fclt_3d_locatie_key,
|
||
d.ins_alg_ruimte_type,
|
||
d.ins_alg_ruimte_key,
|
||
--o.alg_gebouw_code,
|
||
--o.alg_verdieping_code,
|
||
b.fac_bookmark_id hide_f_bookmark_id
|
||
FROM --fac_bookmark b,
|
||
(SELECT SUBSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9), 1, INSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9) || '&', '&') - 1)
|
||
stdmkina,
|
||
--fac_bookmark_naam,
|
||
fac_bookmark_id
|
||
FROM fac_bookmark
|
||
WHERE (fac_bookmark_expire IS NULL OR fac_bookmark_expire > SYSDATE)
|
||
AND UPPER (TRIM (fac_bookmark_path)) = 'APPL/PDA/INS_DEEL.ASP'
|
||
AND INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') > 0) b, -- STDMKINA-bookmarks
|
||
ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_discipline dd,
|
||
alg_locatie l,
|
||
ins_v_alg_overzicht o,
|
||
mld_stdmelding sm,
|
||
mld_stdmelding_srtinst smsd
|
||
WHERE --(b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
|
||
--AND b.fac_bookmark_naam = 'QRC_MELDING'
|
||
--AND d.ins_deel_module = 'INS'
|
||
d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = dd.ins_discipline_key
|
||
AND d.ins_deel_parent_key IS NULL
|
||
AND d.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND d.ins_alg_locatie_key = l.alg_locatie_key
|
||
--AND d.ins_alg_locatie_key = o.alg_locatie_key
|
||
AND d.ins_alg_ruimte_type = o.alg_onroerendgoed_type
|
||
AND d.ins_alg_ruimte_key = o.alg_onroerendgoed_keys
|
||
AND fac.safe_to_number (b.stdmkina) = sm.mld_stdmelding_key
|
||
AND sm.mld_stdmelding_key = smsd.mld_stdmelding_key
|
||
AND smsd.ins_srtinstallatie_key = DECODE (smsd.ins_srtinstallatie_niveau, 'S', sd.ins_srtdeel_key, 'G', sg.ins_srtgroep_key, 'D', dd.ins_discipline_key)
|
||
UNION ALL
|
||
SELECT d.ins_deel_omschrijving hide_f_sort,
|
||
dd.ins_discipline_omschrijving || ' / ' || sm.mld_stdmelding_omschrijving
|
||
fclt_f_melding,
|
||
'Persoon' gekoppeld_aan,
|
||
NULL fclt_f_locatie,
|
||
--NULL fclt_f_gebouw,
|
||
NULL fclt_f_plaats,
|
||
pf.prs_perslid_naam_full fclt_f_persoon,
|
||
dd.ins_discipline_omschrijving fclt_f_discipline,
|
||
sg.ins_srtgroep_omschrijving fclt_f_objectgroep,
|
||
sd.ins_srtdeel_omschrijving fclt_f_objectsoort,
|
||
d.ins_deel_omschrijving fclt_f_identificatie,
|
||
--b.fac_bookmark_naam fclt_f_bookmark,
|
||
dd.ins_discipline_key fclt_3d_discipline_key,
|
||
sd.ins_srtdeel_key,
|
||
d.ins_deel_key,
|
||
d.ins_alg_locatie_key fclt_3d_locatie_key,
|
||
d.ins_alg_ruimte_type,
|
||
d.ins_alg_ruimte_key,
|
||
--NULL alg_gebouw_code,
|
||
--NULL alg_verdieping_code,
|
||
b.fac_bookmark_id hide_f_bookmark_id
|
||
FROM --fac_bookmark b,
|
||
(SELECT SUBSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9), 1, INSTR (SUBSTR (UPPER (fac_bookmark_query), INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') + 9) || '&', '&') - 1)
|
||
stdmkina,
|
||
--fac_bookmark_naam,
|
||
fac_bookmark_id
|
||
FROM fac_bookmark
|
||
WHERE (fac_bookmark_expire IS NULL OR fac_bookmark_expire > SYSDATE)
|
||
AND UPPER (TRIM (fac_bookmark_path)) = 'APPL/PDA/INS_DEEL.ASP'
|
||
AND INSTR (UPPER (fac_bookmark_query), 'STDMKINA=') > 0) b, -- STDMKINA-bookmarks
|
||
ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_discipline dd,
|
||
prs_v_perslid_fullnames pf,
|
||
mld_stdmelding sm,
|
||
mld_stdmelding_srtinst smsd
|
||
WHERE --(b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
|
||
--AND b.fac_bookmark_naam = 'QRC_MELDING'
|
||
--AND d.ins_deel_module = 'INS'
|
||
d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = dd.ins_discipline_key
|
||
AND d.ins_deel_parent_key IS NULL
|
||
AND d.ins_alg_ruimte_type IN ('P')
|
||
AND d.ins_alg_ruimte_key = pf.prs_perslid_key
|
||
AND fac.safe_to_number (b.stdmkina) = sm.mld_stdmelding_key
|
||
AND sm.mld_stdmelding_key = smsd.mld_stdmelding_key
|
||
AND smsd.ins_srtinstallatie_key = DECODE (smsd.ins_srtinstallatie_niveau, 'S', sd.ins_srtdeel_key, 'G', sg.ins_srtgroep_key, 'D', dd.ins_discipline_key)
|
||
;
|
||
|
||
------ 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
|