707 lines
30 KiB
SQL
707 lines
30 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific db-configuration for BLOS.
|
|
DEFINE thisfile = 'BLOS.SQL'
|
|
DEFINE dbuser = '^BLOS'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
-- Mail2Melding - Basis uit SVRZ overgenomen:
|
|
-- - SERVICEDESK -: key=1=Melding via mail - Nog te rubriceren (servicedesk@blos.facilitor-test.nl)
|
|
CREATE OR REPLACE PROCEDURE BLOS_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) := 221; -- Melder onbekend
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_exist_ticket VARCHAR2 (255) := '';
|
|
v_perslid_key NUMBER (10);
|
|
v_kostenplaats_key NUMBER (10);
|
|
v_locatie_key NUMBER (10);
|
|
v_discipline_key NUMBER (10);
|
|
v_stdmelding_key NUMBER (10);
|
|
v_melding_key NUMBER (10);
|
|
v_folder_kkey NUMBER (10);
|
|
v_count NUMBER (10);
|
|
v_count_wp NUMBER (10);
|
|
|
|
BEGIN
|
|
CASE
|
|
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
|
|
THEN
|
|
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
|
|
----- Voor BLOS nog inpassen = KOSTENPLAATS van het GEBOUW!!!!
|
|
v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???');
|
|
SELECT COUNT (*), max(prs_perslid_key)
|
|
INTO v_count, v_perslid_key
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE UPPER (prs_perslid_email) LIKE UPPER (pfrom) || '%';
|
|
|
|
-- Als er persoon gevonden is, dan ff checken of er ook werkplekkoppelingen onder zijn aangemaakt
|
|
IF v_count = 1
|
|
THEN
|
|
SELECT COUNT (*)
|
|
INTO v_count_wp
|
|
FROM prs_perslidwerkplek
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
END IF;
|
|
|
|
IF v_count = 1 AND v_count_wp > 0
|
|
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 + Werkplek kan niet 1-duidig worden bepaald, dus Onbekend en 21= Iepenhoeve Hoofdkantoor!
|
|
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 36
|
|
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;
|
|
/*
|
|
v_errormsg := 'Fout bepalen bestaande melding';
|
|
v_exist_ticket := psubject;
|
|
IF REGEXP_INSTR (v_exist_ticket, '\d') > 0
|
|
THEN
|
|
v_exist_ticket := SUBSTR (v_exist_ticket, REGEXP_INSTR (v_exist_ticket, '\d')) || 'x'; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus 'x'!
|
|
v_exist_ticket := SUBSTR (v_exist_ticket, 1, REGEXP_INSTR (v_exist_ticket, '\D') - 1); -- Gedeelte tot eerste niet-cijfer in v_exist_ticket!
|
|
ELSE
|
|
v_exist_ticket := 'x';
|
|
END IF;
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
|
|
|
-- Om te voorkomen dat huisnummers in het Onderwerp resulteren in het
|
|
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
|
|
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000
|
|
THEN -- Notitie bij bestaande melding!
|
|
SELECT mld_stdmelding_key, mld_melding_key
|
|
INTO v_stdmelding_key, v_melding_key
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
|
|
|
|
v_errormsg := 'Fout toevoegen notitie';
|
|
INSERT INTO mld_melding_note (mld_melding_key,
|
|
prs_perslid_key,
|
|
mld_melding_note_omschrijving,
|
|
mld_melding_note_flag)
|
|
VALUES (v_melding_key,
|
|
v_perslid_key,
|
|
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
|
|
0);
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
|
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
|
|
|
|
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet!
|
|
IF fac.getsetting ('mld_melding_actiecode') = 1
|
|
THEN
|
|
UPDATE mld_melding
|
|
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
|
|
WHERE mld_melding_key = v_melding_key;
|
|
END IF;
|
|
ELSE -- Nieuwe melding!
|
|
*/
|
|
-- Bepaal de afgesproken soortmelding met key=1=Melding via mail - Nog te rubriceren
|
|
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 = 1;
|
|
|
|
-- 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
|
|
v_locatie_key,
|
|
NULL, --v_onrgoed_keys,
|
|
SYSDATE,
|
|
pfrom || CHR (13) || CHR (10) || SUBSTR (pbody, 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 Helpdesk I+A
|
|
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 ' || v_melding_key);
|
|
/*
|
|
END IF;
|
|
*/
|
|
|
|
-- Find the lowest volgnummer of the Folder-flexfield.
|
|
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')
|
|
OR (k1.mld_kenmerk_niveau = 'A')
|
|
)
|
|
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')
|
|
OR (k1.mld_kenmerk_niveau = 'A')
|
|
)
|
|
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;
|
|
|
|
|
|
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', 'BLOS_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;
|
|
/
|
|
|
|
-- Hulpview: Alle locaties die bij een bepaald CLUSTER horen
|
|
CREATE OR REPLACE VIEW blos_v_cluster_locaties
|
|
(
|
|
ALG_LOCATIE_KEY,
|
|
ALG_LOCATIE_CODE,
|
|
ALG_LOCATIE_OMSCHRIJVING,
|
|
CLUSTER_CODE,
|
|
TYPE_LOCATIE,
|
|
RUIMTE_KEY
|
|
)
|
|
AS
|
|
SELECT l.alg_locatie_key,
|
|
l.alg_locatie_code,
|
|
l.alg_locatie_omschrijving,
|
|
(SELECT ud.fac_usrdata_upper
|
|
FROM alg_onrgoedkenmerk km, fac_usrdata ud
|
|
WHERE km.alg_onrgoed_key = l.alg_locatie_key
|
|
AND km.alg_onrgoed_niveau = 'L'
|
|
AND km.alg_kenmerk_key = 1000 -- Cluster
|
|
AND km.alg_onrgoedkenmerk_verwijder IS NULL
|
|
AND fac.safe_to_number (km.alg_onrgoedkenmerk_waarde) =
|
|
ud.fac_usrdata_key
|
|
AND ud.fac_usrtab_key = 1)
|
|
AS cluster_naam,
|
|
(SELECT ud.fac_usrdata_upper
|
|
FROM alg_onrgoedkenmerk km, fac_usrdata ud
|
|
WHERE km.alg_onrgoed_key = l.alg_locatie_key
|
|
AND km.alg_onrgoed_niveau = 'L'
|
|
AND km.alg_kenmerk_key = 1002 -- type_opvang/locatie
|
|
AND km.alg_onrgoedkenmerk_verwijder IS NULL
|
|
AND fac.safe_to_number (km.alg_onrgoedkenmerk_waarde) =
|
|
ud.fac_usrdata_key
|
|
AND ud.fac_usrtab_key = 2)
|
|
AS type_locatie,
|
|
(SELECT min(alg_ruimte_key)
|
|
FROM alg_v_allonrgoed_gegevens v
|
|
WHERE v.alg_locatie_key = l.alg_locatie_key and v.alg_type ='R')
|
|
AS ruimte_key
|
|
FROM alg_locatie l -- , alg_onrgoedkenmerk km -- , fac_usrdata ud
|
|
WHERE l.alg_locatie_verwijder IS NULL;
|
|
|
|
-- Hulpview Personen - Alle locatiemanagers onder REGMAN
|
|
---- Alles onder locatie (niveau 1) REGMAN-Regiomanagement
|
|
---- Per persoon de AFDELING (= CLUSTER-code) + De kostenplaats en de bovenliggende kostenplaats_groep (= tevens ook CLUSTER-code)
|
|
---- PRS_perslid_key || Organisatie_CODE || Kostenplaats_Code || Kostenplaats_Groep_CODE
|
|
CREATE OR REPLACE VIEW blos_v_cluster_personen
|
|
(
|
|
PRS_PERSLID_KEY,
|
|
PRS_PERSLID_VOLLEDIGENAAM,
|
|
PRS_AFDELING_UPPER, -- is CLUSTER_CODE
|
|
PRS_AFDELING_OMSCHRIJVING,
|
|
PRS_AFDELING_PARENT,
|
|
PRS_AFDELING_PARENT_OMS,
|
|
PRS_KOSTENPLAATS_KEY,
|
|
PRS_KOSTENPLAATS_UPPER,
|
|
PRS_KOSTENPLAATS_OMSCHRIJVING,
|
|
PRS_KOSTENPLAATSGRP_OMS -- is CLUSTER_CODE
|
|
)
|
|
AS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam,
|
|
v.prs_afdeling_upper,
|
|
v.prs_afdeling_omschrijving,
|
|
ap.prs_afdeling_upper,
|
|
ap.prs_afdeling_omschrijving,
|
|
vkp.prs_kostenplaats_key,
|
|
vkp.prs_kostenplaats_upper,
|
|
vkp.prs_kostenplaats_omschrijving,
|
|
vkp.prs_kostenplaatsgrp_oms
|
|
FROM prs_perslid p,
|
|
prs_v_aanwezigafdeling v,
|
|
prs_afdeling ap,
|
|
(SELECT kp.prs_kostenplaats_key,
|
|
kp.prs_kostenplaats_upper,
|
|
kp.prs_kostenplaats_omschrijving,
|
|
kpg.prs_kostenplaatsgrp_oms
|
|
FROM prs_kostenplaats kp, prs_kostenplaatsgrp kpg
|
|
WHERE kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
|
|
AND prs_kostenplaats_verwijder IS NULL
|
|
AND kp.prs_kostenplaats_module = 'PRS') vkp
|
|
WHERE p.prs_afdeling_key = v.prs_afdeling_key
|
|
AND v.prs_afdeling_parentkey = ap.prs_afdeling_key
|
|
AND ap.prs_afdeling_key = 34 -- REGMAN als PARENT_KEY (alles onder de Regiomanagement tonen en in procedure bewaken/herzien
|
|
AND p.prs_perslid_verwijder is null
|
|
AND v.prs_kostenplaats_key = vkp.prs_kostenplaats_key(+)
|
|
ORDER BY v.prs_afdeling_upper, p.prs_perslid_naam ;
|
|
|
|
--- DE PROCEDURE om voor de Locatiemanagers van de CLUSTERS de juiste CLUSTER-LOCATIES te koppelen als werkplek
|
|
CREATE OR REPLACE PROCEDURE blos_export_wpcluster (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2
|
|
)
|
|
AS
|
|
CURSOR c_nieuw
|
|
IS
|
|
SELECT cp.prs_perslid_key, cp.prs_perslid_volledigenaam, cl.alg_locatie_key, cl.alg_locatie_code,cl.alg_locatie_omschrijving,cl.cluster_code
|
|
FROM blos_v_cluster_locaties cl, blos_v_cluster_personen cp
|
|
WHERE cl.cluster_code = cp.prs_afdeling_upper
|
|
AND NOT EXISTS
|
|
(SELECT v.alg_locatie_key
|
|
FROM prs_perslidwerkplek wp, prs_v_werkplekafdeling_geg v
|
|
WHERE wp.prs_perslidwerkplek_key =
|
|
v.prs_perslidwerkplek_key
|
|
AND wp.prs_perslid_key = cp.prs_perslid_key
|
|
AND v.alg_locatie_key = cl.alg_locatie_key);
|
|
|
|
CURSOR c_del
|
|
IS
|
|
SELECT b.prs_perslid_key, b.alg_locatie_key, cl.alg_locatie_code, cl.alg_locatie_omschrijving, cl.cluster_code, b.prs_perslidwerkplek_key
|
|
FROM blos_v_cluster_locaties cl,
|
|
(SELECT wp.prs_perslid_key,
|
|
v.alg_locatie_key,
|
|
wp.prs_perslidwerkplek_key,
|
|
v.prs_werkplek_key,
|
|
v.prs_werkplek_volgnr,
|
|
v.alg_ruimte_key
|
|
FROM prs_perslidwerkplek wp, prs_v_werkplekafdeling_geg v
|
|
WHERE wp.prs_perslidwerkplek_key = v.prs_perslidwerkplek_key) b
|
|
WHERE b.alg_locatie_key = cl.alg_locatie_key
|
|
AND NOT EXISTS
|
|
(SELECT cl.alg_locatie_key
|
|
FROM blos_v_cluster_locaties cl, blos_v_cluster_personen cp
|
|
WHERE cl.cluster_code = cp.prs_afdeling_upper
|
|
AND cp.prs_perslid_key = b.prs_perslid_key
|
|
AND cl.alg_locatie_key = b.alg_locatie_key)
|
|
AND EXISTS
|
|
(SELECT cp.prs_perslid_key
|
|
FROM blos_v_cluster_personen cp
|
|
WHERE cp.prs_perslid_key = b.prs_perslid_key);
|
|
|
|
v_ruimte_key NUMBER;
|
|
v_prs_werkplek_volgnr NUMBER;
|
|
v_prs_werkplek_key NUMBER ;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_mes VARCHAR2 (200);
|
|
oracle_err_num NUMBER;
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR2 (1000);
|
|
v_count NUMBER;
|
|
|
|
|
|
BEGIN
|
|
v_count:=0;
|
|
|
|
FOR rec IN c_nieuw
|
|
LOOP
|
|
|
|
v_aanduiding :=
|
|
'Werkplekkoppeling: ' || rec.alg_locatie_code || ' (' || rec.cluster_code || ')' ;
|
|
v_errormsg := 'Fout bij aanmaken werkplekkoppeling';
|
|
|
|
-- Ruimte_key ophalen van desbetreffende locatie_keten
|
|
SELECT min(alg_ruimte_key)
|
|
INTO v_ruimte_key
|
|
FROM alg_v_allonrgoed_gegevens v
|
|
WHERE v.alg_locatie_key = rec.alg_locatie_key and v.alg_type ='R' ;
|
|
|
|
IF v_ruimte_key IS NULL THEN
|
|
|
|
fac.writelog (p_applname,
|
|
'W',
|
|
v_errormsg || ' Locatie wordt overgeslagen:',
|
|
v_aanduiding);
|
|
END IF;
|
|
|
|
v_errorhint := 'INSERT clusterkoppeling bij persoon: ' || rec.alg_locatie_code || ' / ' || rec.prs_perslid_volledigenaam;
|
|
|
|
IF v_ruimte_key IS NOT NULL THEN
|
|
|
|
-- Volgnr werkplek
|
|
SELECT COALESCE(MIN (prs_werkplek_volgnr + 1),1)
|
|
INTO v_prs_werkplek_volgnr
|
|
FROM prs_werkplek pw WHERE prs_alg_ruimte_key = v_ruimte_key AND NOT EXISTS ( SELECT * FROM prs_werkplek pw2 WHERE prs_alg_ruimte_key = v_ruimte_key AND pw2.prs_werkplek_volgnr = pw.prs_werkplek_volgnr + 1);
|
|
|
|
INSERT INTO prs_werkplek w (prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key, prs_werkplek_virtueel)
|
|
SELECT v_prs_werkplek_volgnr, alg_ruimte_nr || '/1', v_ruimte_key, 1 FROM alg_ruimte WHERE alg_ruimte_key = v_ruimte_key ;
|
|
|
|
SELECT prs_werkplek_key
|
|
INTO v_prs_werkplek_key
|
|
FROM prs_werkplek WHERE prs_alg_ruimte_key = v_ruimte_key AND prs_werkplek_volgnr = v_prs_werkplek_volgnr ;
|
|
|
|
INSERT INTO prs_perslidwerkplek(prs_perslidwerkplek_bezetting, prs_perslidwerkplek_volgnr, prs_werkplek_key, prs_perslid_key) -- prs_perslidwerkplek_key)
|
|
VALUES (100, NULL, v_prs_werkplek_key, rec.prs_perslid_key) ; -- 82) ;
|
|
|
|
-- UPDATE prs_perslid p
|
|
-- SET prs_perslid_telefoonnr = rec.nummer_object
|
|
-- WHERE p.prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END IF;
|
|
|
|
END LOOP;
|
|
|
|
FOR rec IN c_del
|
|
LOOP
|
|
v_aanduiding :=
|
|
'Werkplekkoppeling verwijderen - betreft: ' || rec.alg_locatie_code || ' (' || rec.cluster_code || ')' ;
|
|
v_errorhint := 'werkplekkoppeling verwijderen';
|
|
|
|
DELETE FROM prs_werkplek WHERE prs_werkplek_key IN (SELECT prs_werkplek_key FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key) ;
|
|
|
|
DELETE FROM PRS_PERSLIDWERKPLEK WHERE PRS_PERSLIDWERKPLEK_key = rec.prs_perslidwerkplek_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END LOOP;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.writelog (p_applname,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
|
|
|
|
END;
|
|
/
|
|
|
|
-- script om dagelijks terugkerende scripts aan te roepen.
|
|
CREATE OR REPLACE PROCEDURE blos_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
-- job om de werkplekkoppelingen te realiseren en onderhouden voor de locatiemanagers
|
|
blos_export_wpcluster (p_applname, p_applrun);
|
|
END;
|
|
/
|
|
|
|
-- Ivm clusterkoppeling is het belangrijk dat locaties goed zijn vastgelegd.
|
|
-- Omdat in de praktijk dit paar keer niet goed is gegaan een noti-job om applicatiebeheer hierop netjes te attenderen
|
|
CREATE OR REPLACE VIEW blos_v_noti_locatiebeheer
|
|
(
|
|
sender,
|
|
receiver,
|
|
text,
|
|
code,
|
|
key,
|
|
xkey
|
|
)
|
|
AS
|
|
SELECT 3, -- Facilitor
|
|
m.prs_perslid_key,
|
|
'Locatie onvolledig vastgelegd: '
|
|
|| v.alg_locatie_code
|
|
|| ' - '
|
|
|| v.alg_locatie_omschrijving
|
|
|| ' van '
|
|
|| v.cluster_code,
|
|
'CUST01',
|
|
m.prs_perslid_key,
|
|
NULL
|
|
FROM
|
|
blos_v_cluster_locaties v,
|
|
(SELECT g.fac_groep_key,
|
|
p.prs_perslid_key,
|
|
p.prs_perslid_email AS email
|
|
FROM fac_groep g, fac_gebruikersgroep ge, prs_perslid p
|
|
WHERE g.fac_groep_key = 22 -- Applicatiebeheer
|
|
AND g.fac_groep_key = ge.fac_groep_key
|
|
AND ge.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_email IS NOT NULL
|
|
AND p.prs_perslid_verwijder IS NULL) m
|
|
WHERE
|
|
v.ruimte_key IS NULL
|
|
and v.cluster_code IS NOT NULL ;
|
|
|
|
|
|
CREATE OR REPLACE VIEW blos_v_rap_opdrachten_intern
|
|
(
|
|
TYPE,
|
|
MLD_OPDR_KEY,
|
|
MLD_UITVOERENDE_KEY,
|
|
OPDRACHTNR,
|
|
OPDRACHT_DATUM,
|
|
STATUS,
|
|
MELDING,
|
|
BEHANDELAAR,
|
|
LOCATIE_PLAATS,
|
|
LOCATIE_OMSCHRIJVING,
|
|
GEPLANDE_AANVANG,
|
|
OMSCHRIJVING,
|
|
PRS_PERSLID_KEY,
|
|
NAAM_UITVOERDER,
|
|
CLUSTER_BLOS,
|
|
TYPE_LOCATIE,
|
|
UREN_BESTEED,
|
|
AFMELD_DATUM,
|
|
OPDRACHT_TYPE
|
|
)
|
|
AS
|
|
SELECT CASE
|
|
WHEN mu.TYPE = 'B' THEN 'Poule-opdracht'
|
|
WHEN mu.TYPE = 'P' THEN 'Klus-opdracht'
|
|
ELSE '<?>'
|
|
END
|
|
TYPE,
|
|
o.mld_opdr_key,
|
|
CASE
|
|
WHEN mu.TYPE = 'B' THEN o.prs_perslid_key
|
|
WHEN mu.TYPE = 'P' THEN mu.mld_uitvoerende_key
|
|
ELSE NULL
|
|
END
|
|
mld_uitvoerende_key,
|
|
TO_CHAR (o.mld_melding_key)
|
|
|| '/'
|
|
|| o.mld_opdr_bedrijfopdr_volgnr
|
|
opdrachtnummer,
|
|
o.mld_opdr_datumbegin,
|
|
DECODE (
|
|
os.mld_statusopdr_key,
|
|
8, DECODE (o.mld_opdr_halted,
|
|
1, 'Onderbroken',
|
|
os.mld_statusopdr_omschrijving),
|
|
os.mld_statusopdr_omschrijving)
|
|
status,
|
|
std.mld_stdmelding_omschrijving,
|
|
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>'), -- BEHANDELAAR
|
|
l.alg_locatie_plaats,
|
|
l.alg_locatie_omschrijving,
|
|
o.mld_opdr_plandatum,
|
|
TRIM (
|
|
REGEXP_REPLACE (
|
|
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
|
|
'(([^ ]*)( |$)*){10}'),
|
|
'[[:space:]]',
|
|
' '))
|
|
|| '...',
|
|
p.prs_perslid_key,
|
|
mu.naam,
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM alg_onrgoedkenmerk k, fac_usrdata ud
|
|
WHERE k.alg_onrgoed_key = m.mld_alg_locatie_key
|
|
AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) =
|
|
ud.fac_usrdata_key
|
|
AND ud.fac_usrtab_key = 1
|
|
AND k.alg_kenmerk_key = 1000), -- kenmerk Cluster
|
|
(SELECT ud.fac_usrdata_omschr
|
|
FROM alg_onrgoedkenmerk k, fac_usrdata ud
|
|
WHERE k.alg_onrgoed_key = m.mld_alg_locatie_key
|
|
AND fac.safe_to_number (k.alg_onrgoedkenmerk_waarde) =
|
|
ud.fac_usrdata_key
|
|
AND ud.fac_usrtab_key = 2
|
|
AND k.alg_kenmerk_key = 1002), -- kenmerk Type KDV, BVO, et.
|
|
(SELECT ko.mld_kenmerkopdr_waarde
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE ko.mld_opdr_key = o.mld_opdr_key
|
|
AND ko.mld_kenmerk_key = 25), -- kenmerk Uren_besteed
|
|
(SELECT MAX (ft.fac_tracking_datum)
|
|
FROM fac_tracking ft
|
|
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
|
|
AND ft.fac_srtnotificatie_key = 74), -- MLDAFM
|
|
ot.mld_typeopdr_omschrijving
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_typeopdr ot,
|
|
prs_v_perslid_fullnames p,
|
|
ins_tab_discipline d,
|
|
mld_stdmelding std,
|
|
alg_locatie l,
|
|
mld_v_uitvoerende mu,
|
|
mld_statusopdr os
|
|
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
|
AND o.prs_perslid_key = p.prs_perslid_key(+)
|
|
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
|
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
|
|
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
|
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
|
AND mu.intern = 1;
|
|
|
|
-- Notificactiejob voor BLOS vanuit Opdrachten Notities met bepaalde notitie-classificatie voor servicedesk...
|
|
-- Flag = 16 (en geen +1 xemail, xmobile)
|
|
CREATE OR REPLACE VIEW BLOS_V_NOTI_SERVICEDESK_ORD -- ORD = Orders/Opdrachten
|
|
(
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
CODE,
|
|
FAC_SRTNOTIFICATIE_KEY,
|
|
KEY,
|
|
XKEY
|
|
-- XEMAIL,
|
|
-- XMOBILE
|
|
)
|
|
AS
|
|
SELECT (SELECT prs_perslid_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_upper = 'FACILITOR')
|
|
sender,
|
|
241 -- prs_perslid van persoon Facilitairbeheer Onderhoud met juiste emailadres facilitairbeheer@blos.nl
|
|
receiver,
|
|
'Opdrachtnotitie bij ' || TO_CHAR(o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) ||
|
|
' van ' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
|
|
text,
|
|
'CUST02'
|
|
code,
|
|
(SELECT fac_srtnotificatie_key
|
|
FROM fac_srtnotificatie
|
|
WHERE fac_srtnotificatie_code = 'CUST02')
|
|
fac_srtnotificatie_key,
|
|
o.mld_opdr_key
|
|
key,
|
|
n.mld_opdr_note_key
|
|
xkey
|
|
FROM mld_melding m,
|
|
mld_opdr o,
|
|
mld_opdr_note n,
|
|
prs_perslid p,
|
|
fac_note_group ng
|
|
WHERE o.mld_opdr_key = n.mld_opdr_key
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND n.prs_perslid_key = p.prs_perslid_key
|
|
AND n.fac_note_group_key = ng.fac_note_group_key
|
|
AND ng.fac_note_group_key = 1 -- 'Notitie voor Facilitair'
|
|
AND n.prs_perslid_key NOT IN
|
|
(SELECT gg.prs_perslid_key
|
|
FROM fac_gebruikersgroep gg, fac_groep g
|
|
WHERE gg.fac_groep_key = g.fac_groep_key
|
|
AND g.fac_groep_key = 21) -- Servicedesk - Operationeel
|
|
AND n.mld_opdr_note_aanmaak >=
|
|
COALESCE (
|
|
( SELECT MAX (ft.fac_tracking_datum)
|
|
FROM fac_tracking ft, fac_srtnotificatie sn
|
|
WHERE ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
|
|
AND sn.fac_srtnotificatie_code = 'CUST02'),
|
|
SYSDATE - (SELECT COALESCE (fac_notificatie_job_interval, 1) / 24
|
|
FROM fac_notificatie_job
|
|
WHERE fac_notificatie_job_view = 'BLOS_V_NOTI_SERVICEDESK_ORD' )
|
|
) ;
|
|
|
|
------ 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
|