Files
Customer/HSLE/hsle.sql
Maarten van der Heide a862e98e19 HSLE#59262 M2M-koppeling/Zichtbaar maken notitie (voor FE)
svn path=/Customer/trunk/; revision=44195
2019-09-12 09:10:14 +00:00

2983 lines
123 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for HSLE: HogeSchool LEiden
DEFINE thisfile = 'HSLE.SQL'
DEFINE dbuser = '^HSLE'
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 ------
--
-- Personen import
--
CREATE OR REPLACE PROCEDURE hsle_post_import_perslid (p_import_key IN NUMBER)
AS
BEGIN
UPDATE fac_imp_perslid
SET prs_perslid_dienstverband = 100 * fac.safe_to_number (prs_kenmerk2)
WHERE fac_import_key = p_import_key;
UPDATE fac_imp_perslid
SET prs_afdeling_naam = SUBSTR (prs_afdeling_naam, 1, INSTR (prs_afdeling_naam, '#') - 1)
WHERE INSTR (prs_afdeling_naam, '#') > 0
AND UPPER (prs_perslid_email) LIKE '%STUDENT.HSLEIDEN.NL%'
AND fac_import_key = p_import_key;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE hsle_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_FCLT NUMBER;
v_aantal_uit_UMRA NUMBER;
BEGIN
v_errorhint := 'Generieke update';
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid()-procedure.
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;6;4;3;1;'
|| '2;0;0;0;0;10;9;8;0;5;'
|| '7;11;0;0;0;0;12;13;14;15;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Persnr.;Afdnr.;Functie;Email;Mobile;Telefoon;Loginnaam;IID;Fte;Indienst;Uitdienst%');
COMMIT;
hsle_post_import_perslid (p_import_key);
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 hsle_import_perslid;
/
CREATE OR REPLACE PROCEDURE hsle_post_update_perslid (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
CURSOR c_perslid_kenmerk_iid
IS
SELECT prs_perslid_key, prs_kenmerk1, prs_perslid_email
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key
AND prs_kenmerk1 IS NOT NULL;
CURSOR c_perslid_kenmerk_overig
IS
SELECT prs_perslid_key, prs_kenmerk3 prs_perslid_ingangsdatum, prs_kenmerk4 prs_perslid_einddatum, prs_perslid_email
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key;
-- De medewerkers, dus de niet-studenten, krijgen een extra autorisatiegroep (key 302): "FE - Medewerker", als ze deze autogroep (key 302) nog niet hebben.
CURSOR c_perslid_niet_studenten
IS
SELECT ip.prs_perslid_key, ip.prs_perslid_email
FROM fac_imp_perslid ip
WHERE fac_import_key = p_import_key
AND UPPER (ip.prs_perslid_email) NOT LIKE '%STUDENT.HSLEIDEN.NL%'
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE prs_perslid_key = ip.prs_perslid_key AND fac_groep_key = 302);
CURSOR c_perslid_studenten
IS
SELECT ip.prs_perslid_key, ip.prs_perslid_email
FROM fac_imp_perslid ip
WHERE fac_import_key = p_import_key
AND UPPER (ip.prs_perslid_email) LIKE '%STUDENT.HSLEIDEN.NL%'
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep
WHERE prs_perslid_key = ip.prs_perslid_key AND fac_groep_key = 621);
BEGIN
FOR rc IN c_perslid_kenmerk_iid
LOOP
BEGIN
-- IID heeft vaste kenmerk-key 1000
prs.upsertkenmerk (1000, rc.prs_perslid_key, rc.prs_kenmerk1);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key, 'W',
'Post update 1 (IID) bij persoon ' || TO_CHAR (rc.prs_perslid_key) || ' is NIET volledig uitgevoerd',
'Email:' || rc.prs_perslid_email);
END;
END LOOP;
FOR rc IN c_perslid_kenmerk_overig
LOOP
BEGIN
UPDATE prs_perslid p
SET p.prs_perslid_ingangsdatum =
COALESCE (
TO_DATE (rc.prs_perslid_ingangsdatum, 'dd-mm-yyyy'),
p.prs_perslid_ingangsdatum),
p.prs_perslid_einddatum =
TO_DATE (rc.prs_perslid_einddatum, 'dd-mm-yyyy')
WHERE p.prs_perslid_key = rc.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key, 'W',
'Post update 2 (KENMERK_OVERIG) bij persoon ' || TO_CHAR (rc.prs_perslid_key) || ' is NIET volledig uitgevoerd',
'Email:' || rc.prs_perslid_email);
END;
END LOOP;
FOR rc IN c_perslid_niet_studenten
LOOP
BEGIN
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
VALUES (rc.prs_perslid_key, 302);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key, 'W',
'Post update 3 (AUTORISATIE GROEP medewerker) bij persoon ' || TO_CHAR (rc.prs_perslid_key) || ' is NIET volledig uitgevoerd',
'Email:' || rc.prs_perslid_email);
END;
END LOOP;
FOR rc IN c_perslid_studenten
LOOP
BEGIN
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
VALUES (rc.prs_perslid_key, 621);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key, 'W',
'Post update 4 (AUTORISATIE GROEP student) bij persoon ' || TO_CHAR (rc.prs_perslid_key) || ' is NIET volledig uitgevoerd',
'Email:' || rc.prs_perslid_email);
END;
END LOOP;
--HSLE#57025: Kopieer prs_perslid_externid naar prs_perslid_nr voor studenten!
UPDATE prs_perslid
SET prs_perslid_nr = prs_perslid_externid
WHERE prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_email) LIKE '%STUDENT.HSLEIDEN.NL%';
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, 'hsle_post_update_perslid() afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE hsle_update_perslid (p_import_key IN NUMBER)
IS
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_externid, pf.prs_perslid_naam_full
FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames_all pf
WHERE --HSLE#52416: p.prs_perslid_email LIKE '%@student.hsleiden.nl%'
--HSLE#57025: p.prs_perslid_nr IS NOT NULL
p.prs_perslid_externid IS NOT NULL
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
AND p.prs_perslid_key = pf.prs_perslid_key
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid
WHERE UPPER (prs_perslid_nr) = UPPER (p.prs_perslid_externid))
ORDER BY 2;
v_count NUMBER;
-- Procedure om generiek personen in te lezen of aan te passen.
-- p_sleutelkolom Bevat het veld die als sleutel bij de import dient.
-- NR - personeelsnummer
-- EMAIL - emailadres
-- LOGIN - logincode
-- APIKEY - API-key voor distributie van persoonsgegevens over FACILITORs
-- XID - externid (toegevoegd nav. HSLE#57025)
-- p_alg_type Werkplekken binnen dit niveau verwijderen
-- NULL - geen werkplekken verwijderen
-- A - altijd vaste werkplek verwijderen
-- R,V,G,L,D - werkplek(en) op dit niveau verwijderen
PROCEDURE update_perslid (p_import_key IN NUMBER,
p_sleutelkolom IN VARCHAR2,
p_alg_type IN VARCHAR2)
IS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_wpcount_error NUMBER (10);
--
v_srtperslid_key NUMBER (10);
v_perslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_prs_perslid_naam VARCHAR2 (200);
v_prs_perslid_tussenvoegsel VARCHAR2 (200);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_space VARCHAR2 (1);
CURSOR cSPERSLID
IS
SELECT MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM fac_imp_perslid i
WHERE NOT EXISTS
(SELECT prs_srtperslid_key
FROM prs_srtperslid
WHERE UPPER (prs_srtperslid_omschrijving) = UPPER (i.prs_srtperslid_omschrijving))
GROUP BY UPPER (prs_srtperslid_omschrijving);
recSPersLid cSPersLid%ROWTYPE;
CURSOR cPERSLID
IS
SELECT * FROM fac_imp_perslid;
recPersLid cPersLid%ROWTYPE;
BEGIN
v_count_tot := 0;
v_count_error := 0;
FOR recSPersLid IN cSPERSLID
LOOP
BEGIN
v_aanduiding := '';
v_errormsg := '';
v_errorhint := '';
v_count_tot := v_count_tot + 1;
v_aanduiding := recSPersLid.PRS_SRTPERSLID_OMSCHRIJVING;
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recSPersLid.prs_srtperslid_omschrijving);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| ORACLE_err_num
|| '> ORACLE error message = <'
|| ORACLE_err_mes
|| '>)';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'Personeelsfunctie: toegevoegde regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '');
fac.imp_writelog (p_import_key, 'S', 'Personeelsfunctie: toegevoegde regels met foutmelding: ' || TO_CHAR (v_count_error), '');
COMMIT;
v_count_tot := 0;
v_count_error := 0;
v_wpcount_error := 0;
FOR recPersLid IN cPERSLID
LOOP
BEGIN
v_aanduiding := '';
v_errormsg := '';
v_errorhint := '';
v_count_tot := v_count_tot + 1;
v_aanduiding := recPersLid.prs_perslid_naam || '|' || recPersLid.prs_perslid_voornaam || '| ';
v_errorhint := 'Fout bij bepalen functie';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_verwijder IS NULL
AND UPPER (prs_srtperslid_omschrijving) = UPPER (recPersLid.prs_srtperslid_omschrijving);
v_errorhint := 'Afdeling niet gevonden [' || recPersLid.prs_afdeling_naam || ']';
SELECT a.prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling a, prs_v_aanwezigafdeling_boom ab
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_afdeling_key = ab.prs_afdeling_key
AND UPPER (a.prs_afdeling_naam) = UPPER (recPersLid.prs_afdeling_naam);
v_space := '';
-- Kijk hoe we met partnernamen moeten omgaan:
IF recPersLid.prs_perslid_naamgebruik_code = 0
THEN
-- Normaal gebruik van naam. Eigen naam wordt gebruikt.
v_prs_perslid_naam := recPersLid.prs_perslid_naam;
v_prs_perslid_tussenvoegsel := recPersLid.prs_perslid_tussenvoegsel;
ELSIF recPersLid.prs_perslid_naamgebruik_code = 1
THEN
-- Personen die de geboortenaam van de partner icm. de eigen naam willen gebruiken.
IF recPersLid.prs_perslid_tussenvoegsel IS NOT NULL
THEN
v_space := ' ';
END IF;
v_prs_perslid_naam := recPersLid.prs_perslid_partner_naam || ' - ' || recPersLid.prs_perslid_tussenvoegsel || v_space || recPersLid.prs_perslid_naam;
v_prs_perslid_tussenvoegsel := recPersLid.prs_perslid_partner_tussenv;
ELSIF recPersLid.prs_perslid_naamgebruik_code = 2
THEN
-- Personen die de geboortenaam van de partner willen gebruiken.
v_prs_perslid_naam := recPersLid.prs_perslid_partner_naam;
v_prs_perslid_tussenvoegsel := recPersLid.prs_perslid_partner_tussenv;
ELSIF recPersLid.prs_perslid_naamgebruik_code = 3
THEN
-- Personen die de eigen naam icm. de geboortenaam van de partner willen gebruiken.
IF recPersLid.prs_perslid_partner_tussenv IS NOT NULL
THEN
v_space := ' ';
END IF;
v_prs_perslid_naam := recPersLid.prs_perslid_naam || ' - ' || recPersLid.prs_perslid_partner_tussenv || v_space || recPersLid.prs_perslid_partner_naam;
v_prs_perslid_tussenvoegsel := recPersLid.prs_perslid_tussenvoegsel;
END IF;
IF LENGTH (v_prs_perslid_naam) > 60
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Samengestelde achternaam is te lang', 'Aanduiding wordt afgebroken tot [' || v_prs_perslid_naam || ']');
END IF;
-- p_sleutelkolom
-- NR = prs_perslid_nr gevuld met prs_perslid_nr (zichtbaar)
-- EMAIL = prs_perslid_email
-- LOGIN = prs_perslid_oslogin
-- APIKEY = prs_perslid_apikey
-- XID = prs_perslid_externid gevuld met prs_perslid_nr (onzichtbaar)
v_errorhint := 'Kijken of de persoon al bestaat';
SELECT MAX (prs_perslid_key), COUNT ( * )
INTO v_perslid_key, v_count
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND ((p_sleutelkolom IS NULL AND UPPER (prs_perslid_naam) = UPPER (recPersLid.prs_perslid_naam) AND UPPER (prs_perslid_voornaam) = UPPER (recPersLid.prs_perslid_voornaam))
OR (UPPER (p_sleutelkolom) = 'NR' AND UPPER (prs_perslid_nr) = UPPER (recPersLid.prs_perslid_nr))
OR (UPPER (p_sleutelkolom) = 'EMAIL' AND UPPER (prs_perslid_email) = UPPER (recPersLid.prs_perslid_email))
OR (UPPER (p_sleutelkolom) = 'LOGIN' AND UPPER (prs_perslid_oslogin) = UPPER (recPersLid.prs_perslid_oslogin))
OR (UPPER (p_sleutelkolom) = 'APIKEY' AND UPPER (prs_perslid_apikey) = UPPER (recPersLid.prs_perslid_apikey))
OR (UPPER (p_sleutelkolom) = 'XID' AND UPPER (prs_perslid_externid) = UPPER (recPersLid.prs_perslid_nr)));
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen persoon';
INSERT INTO prs_perslid (prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_geslacht,
prs_perslid_titel,
prs_perslid_dienstverband,
prs_perslid_oslogin,
prs_perslid_apikey,
prs_perslid_externid)
VALUES ('PRS',
v_srtperslid_key,
v_afdeling_key,
v_prs_perslid_naam,
recPersLid.prs_perslid_voorletters,
v_prs_perslid_tussenvoegsel,
recPersLid.prs_perslid_voornaam,
recPersLid.prs_perslid_telefoonnr,
recPersLid.prs_perslid_mobiel,
recPersLid.prs_perslid_email,
DECODE (UPPER (p_sleutelkolom), 'NR', recPersLid.prs_perslid_nr, NULL),
recPersLid.prs_perslid_geslacht,
recPersLid.prs_perslid_titel,
recPersLid.prs_perslid_dienstverband,
recPersLid.prs_perslid_oslogin,
recPersLid.prs_perslid_apikey,
DECODE (UPPER (p_sleutelkolom), 'XID', recPersLid.prs_perslid_nr, NULL))
RETURNING prs_perslid_key
INTO v_perslid_key;
prs.setpassword (v_perslid_key, recPersLid.prs_perslid_wachtwoord);
ELSIF v_count = 1
THEN
v_errorhint := 'Fout bij bijwerken persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = v_prs_perslid_naam,
prs_perslid_voorletters = recPersLid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel = v_prs_perslid_tussenvoegsel,
prs_perslid_voornaam = recPersLid.prs_perslid_voornaam,
prs_perslid_nr = DECODE (UPPER (p_sleutelkolom), 'NR', recPersLid.prs_perslid_nr, NULL),
prs_perslid_dienstverband = recPersLid.prs_perslid_dienstverband,
prs_perslid_geslacht = recPersLid.prs_perslid_geslacht,
prs_perslid_titel = recPersLid.prs_perslid_titel,
prs_perslid_telefoonnr = recPersLid.prs_perslid_telefoonnr,
prs_perslid_mobiel = recPersLid.prs_perslid_mobiel,
prs_perslid_email = recPersLid.prs_perslid_email,
prs_perslid_oslogin = recPersLid.prs_perslid_oslogin,
prs_perslid_apikey = recPersLid.prs_perslid_apikey,
prs_perslid_externid = DECODE (UPPER (p_sleutelkolom), 'XID', recPersLid.prs_perslid_nr, NULL)
WHERE prs_perslid_key = v_perslid_key;
IF recPersLid.prs_perslid_wachtwoord IS NOT NULL
THEN
prs.setpassword (v_perslid_key, recPersLid.prs_perslid_wachtwoord);
END IF;
END IF;
-- Handig om te onthouden tbv. CUST-postprocessing (van kenmerken)!
UPDATE fac_imp_perslid
SET prs_perslid_key = v_perslid_key
WHERE fac_import_key = recPersLid.fac_import_key
AND fac_imp_file_index = recPersLid.fac_imp_file_index;
COMMIT; -- persoon in ieder geval toegevoegd.
v_aanduiding :=
recPersLid.prs_perslid_nr
|| '|'
|| recPersLid.prs_perslid_naam
|| '|'
|| recPersLid.prs_perslid_voornaam
|| '|'
|| recPersLid.alg_locatie_code
|| '|'
|| recPersLid.alg_gebouw_code
|| '|'
|| recPersLid.alg_verdieping_volgnr
|| '|'
|| recPersLid.alg_ruimte_nr
|| ' - ';
v_locatie_key := NULL;
v_gebouw_key := NULL;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_errorhint := 'Fout bij bepalen locatie';
SELECT MAX (alg_locatie_key)
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) = UPPER (recPersLid.alg_locatie_code);
v_errorhint := 'Fout bij bepalen gebouw';
SELECT MAX (alg_gebouw_key)
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (recPersLid.alg_gebouw_code)
AND alg_locatie_key = v_locatie_key;
v_errorhint := 'Fout bij bepalen verdieping';
SELECT MAX (alg_verdieping_key)
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE UPPER (alg_verdieping_volgnr) = UPPER (recPersLid.alg_verdieping_volgnr)
AND alg_gebouw_key = v_gebouw_key;
v_errorhint := 'Fout bij bepalen beoogde ruimte';
SELECT MAX (alg_ruimte_key)
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r
WHERE r.alg_ruimte_upper_nr = UPPER (recPersLid.alg_ruimte_nr)
AND r.alg_verdieping_key = v_verdieping_key;
-- Standaard ruimte moet door cust-gedeelte van de 'Fout bij bepalen beoogde ruimte' import ingevuld worden.
-- Als er een locatie ingevuld is willen we ook een ruimte vinden.
IF v_ruimte_key IS NULL AND recPersLid.alg_locatie_code IS NOT NULL
THEN
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Ruimte kan niet gevonden worden', 'Controleer locatie, gebouw en verdieping');
END IF;
-- Fouten bij het bepalen van de werkplek worden als waarschuwing weergegeven.
BEGIN
v_errorhint := 'Fout bij het aanpassen van de werkplek';
PRS.movetoruimte (v_perslid_key, v_ruimte_key, p_alg_type);
EXCEPTION
WHEN OTHERS
THEN
v_wpcount_error := v_wpcount_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| ORACLE_err_num
|| '> ORACLE error message = <'
|| ORACLE_err_mes
|| '>)';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| ORACLE_err_num
|| '> ORACLE error message = <'
|| ORACLE_err_mes
|| '>)';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'S', 'Persoon: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error), '');
fac.imp_writelog (p_import_key, 'S', 'Persoon: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error), '');
fac.imp_writelog (p_import_key, 'S', 'Werkplek: verwerkte regels met foutmelding: ' || TO_CHAR (v_wpcount_error), '');
COMMIT;
END update_perslid;
BEGIN
-- generic update
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
IF v_count < 10000
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;
-- XID -: Matchen op basis van (onzichtbare) prs_perslid_externid.
-- NULL -: Alle werkplekken met rust laten.
update_perslid (p_import_key, 'XID', NULL);
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
hsle_post_update_perslid (p_import_key);
END hsle_update_perslid;
/
-- View voor referentie naar RES_RSV_RUIMTE
CREATE OR REPLACE VIEW HSLE_V_RES_REF
(
res_rsv_ruimte_key,
res_rsv_ruimte_omschr,
res_rsv_ruimte_verwijder
)
AS
SELECT res_rsv_ruimte_key,
res_reservering_key
|| '/'
|| res_rsv_ruimte_volgnr
|| res_rsv_ruimte_omschrijving,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte;
-- VIEW om kenmerken toe te voegen aan UDR_DEELMELDING
CREATE OR REPLACE VIEW HSLE_V_INS_DEELMELDING
(
DEEL_KEY,
DISCIPLINE,
SOORT,
GROEP,
SOORTCODE,
OMSCHRIJVING,
PLAATSEIGENAAR,
PLAATSEIGENAARTYPE,
PLAATSAANDUIDING,
EIGENAAR,
EIGENAAR_KEY,
OPMERKING,
REGIO,
DISTRICT,
LOCATIE_CODE,
LOCATIE_OMSCHRIJVING,
LOCATIE_PLAATS,
GEBOUWCODE,
GEBOUW,
TERREINSECTORCODE,
TERREINSECTOR,
VERDIEPINGCODE,
RUIMTENR,
WERKPLEKVOLGNR,
WERKPLEK,
UITLEENBAAR,
UITGELEEND,
RES_OPMERKING,
BEHEERDER,
VERVALDATUM,
ACTIEF,
AANTAL,
STATE,
STATEDATE,
FCLT_3D_DISCIPLINE_KEY,
FCLT_3D_AFDELING_KEY,
FCLT_3D_LOCATIE_KEY,
MELDING_KEY,
MELDINGNUMMER,
MELDING_START_KEY,
EXTERNNUMMER,
MELDING_DISTRICT,
MELDING_LOCATIECODE,
MELDING_LOCATIE,
MELDING_LOCATIEPLAATS,
MELDING_GEBOUWCODE,
MELDING_GEBOUW,
MELDING_VERDIEPING,
MELDING_RUIMTENR,
MELDING_RUIMTE,
MELDING_ORDERNR,
KOSTENSOORTGROEP,
KOSTENSOORT,
KOSTENPLAATS,
KOSTENPLAATS_OMS,
MELDER,
MELDER_KEY,
AFDELING,
AFDELING_OMSCHRIJVING,
BEDRIJF_KEY,
INVOERDER,
MELDBRON,
SOORTMELDING,
PRODUCTGROEP,
SUBPRODUCTGROEP,
BEHANDELGROEP,
BEHANDELAAR,
BEHANDELAAR_KEY,
SUBPRODUCTGROEPGROEP,
MELDING_STATUS,
SLA_NVT,
SLA_WERKDGN,
SLA_WERKUREN,
SLA_RESPIJTDGN,
SLA_RESPIJTUREN,
SLA_ACCPTDGN,
SLA_ACCPTUREN,
PLAN_UITVOERTIJD_SLA,
MELDING_DATUM,
MELDING_EINDDATUM,
MELDING_ACCEPTDATUM,
MELDING_AFGEMELD,
MELDING_ACCEPTED,
DOORLOOPTIJD_WERKDGN,
DOORLOOPTIJD_WERKUREN,
ONDERWERP,
VOMSCHRIJVING,
MELDING_OPMERKING,
PRIORITEIT,
PRIORITEITTXT,
RATING,
RATING_OPMERKING,
BOLLETJE,
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,
MELDING_KOFFIE
)
AS
SELECT d.deel_key,
d.discipline,
d.soort,
d.groep,
d.soortcode,
d.omschrijving,
d.plaatseigenaar,
d.plaatseigenaartype,
d.plaatsaanduiding,
d.eigenaar,
d.eigenaar_key,
d.opmerking,
d.regio,
d.district,
d.locatie_code,
d.locatie_omschrijving,
d.locatie_plaats,
d.gebouwcode,
d.gebouw,
d.terreinsectorcode,
d.terreinsector,
d.verdiepingcode,
d.ruimtenr,
d.werkplekvolgnr,
d.werkplek,
d.uitleenbaar,
d.uitgeleend,
d.res_opmerking,
d.beheerder,
d.vervaldatum,
d.actief,
d.aantal,
d.state,
d.statedate,
d.fclt_3d_discipline_key,
d.fclt_3d_afdeling_key,
d.fclt_3d_locatie_key,
m.melding_key,
m.meldingnummer,
m.melding_start_key,
m.externnummer,
m.melding_district,
m.melding_locatiecode,
m.melding_locatie,
m.melding_locatieplaats,
--m.fclt_3d_locatie_key,
m.melding_gebouwcode,
m.melding_gebouw,
m.melding_verdieping,
m.melding_ruimtenr,
m.melding_ruimte,
m.melding_ordernr,
m.kostensoortgroep,
m.kostensoort,
m.kostenplaats,
m.kostenplaats_oms,
m.melder,
m.melder_key,
m.afdeling,
m.afdeling_omschrijving,
--m.fclt_3d_afdeling_key,
m.bedrijf_key,
m.invoerder,
m.meldbron,
m.soortmelding,
--m.fclt_3d_discipline_key,
m.productgroep,
m.subproductgroep,
m.behandelgroep,
m.behandelaar,
m.behandelaar_key,
m.subproductgroepgroep,
m.melding_status,
m.sla_nvt,
m.sla_werkdgn,
m.sla_werkuren,
m.sla_respijtdgn,
m.sla_respijturen,
m.sla_accptdgn,
m.sla_accpturen,
m.plan_uitvoertijd_sla,
m.melding_datum,
m.melding_einddatum,
m.melding_acceptdatum,
m.melding_afgemeld,
m.melding_accepted,
m.doorlooptijd_werkdgn,
m.doorlooptijd_werkuren,
m.onderwerp,
m.vomschrijving,
m.melding_opmerking,
m.prioriteit,
m.prioriteittxt,
m.rating,
m.rating_opmerking,
m.bolletje,
m.accept_sla_dagen,
m.accept_sla_uren,
m.uitvoering_sla_dagen,
m.uitvoering_sla_uren,
m.afspraak_sla_dagen,
m.afspraak_sla_uren,
m.accept_sla_optijd,
m.uitvoering_sla_optijd,
m.afspraak_sla_optijd,
m.selfservice,
(SELECT ud.fac_usrdata_omschr
FROM mld_kenmerkmelding km, fac_usrdata ud
WHERE km.mld_kenmerk_key = 248
AND km.mld_melding_key = m.melding_key
AND TO_CHAR (ud.FAC_USRDATA_KEY) =
mld_kenmerkmelding_waarde)
waarde
FROM ins_v_udr_deel d, mld_v_udr_melding m, mld_melding_object mo
WHERE mo.mld_melding_key = m.melding_key
AND mo.ins_deel_key = d.deel_key;
-- HSLE#56067: Maandelijks freeze van ruimtehistorie.
CREATE OR REPLACE VIEW hsle_v_hv_actual
(
district_oms,
locatie_code,
gebouw_code,
verdieping_code,
ruimte_key,
ruimte_nr,
omschrijving,
functie,
bvo,
omtrek,
inhoud,
opmerking,
vloerafwerking,
status,
werkplekken,
toelichting,
inrichting,
opleiding,
aantal_wp, -- #prs_werkplek!
wp_bez, -- Som prs_perslidwerkplek_bezetting / #prs_werkplek
aantal_afd, -- #prs_afdeling (zou 1 moeten zijn)!
afd_naam, -- prs_afdeling_naam van oudste afdeling!
afd_oms, -- prs_afdeling_omschrijving van oudste afdeling!
afd_bez -- prs_ruimteafdeling_bezetting van oudste afdeling!
)
AS
SELECT x.alg_district_omschrijving,
x.alg_locatie_code,
x.alg_gebouw_code,
x.alg_verdieping_code,
x.alg_ruimte_key,
x.alg_ruimte_nr,
x.alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
x.alg_ruimte_bruto_vloeropp,
x.alg_ruimte_omtrek,
x.alg_ruimte_inhoud,
x.alg_ruimte_opmerking,
ud1.fac_usrdata_omschr vloerafwerking,
ud2.fac_usrdata_omschr status,
ok3.alg_onrgoedkenmerk_waarde werkplekken,
ok4.alg_onrgoedkenmerk_waarde toelichting,
ok5.alg_onrgoedkenmerk_waarde inrichting,
ud6.fac_usrdata_omschr opleiding,
pwp.aantal aantal_wp,
DECODE (pwp.prs_alg_ruimte_key, NULL, NULL, ROUND (pwp.bezetting / pwp.aantal, 5)) wp_bez,
ra.aantal aantal_afd,
afd.prs_afdeling_naam,
afd.prs_afdeling_omschrijving,
DECODE (ra.aantal, 1, ra.bezetting, NULL) afd_bez -- Bezetting ongedefinieerd als aantal > 1!
FROM (SELECT r.alg_ruimte_key,
r.alg_ruimte_nr,
v.alg_verdieping_code,
g.alg_gebouw_code,
l.alg_locatie_code,
d.alg_district_omschrijving,
r.alg_ruimte_omschrijving,
r.alg_srtruimte_key,
r.alg_ruimte_bruto_vloeropp,
r.alg_ruimte_omtrek,
r.alg_ruimte_inhoud,
r.alg_ruimte_opmerking
FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l, alg_district d
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key) x
LEFT JOIN alg_v_aanwezigsrtruimte sr
ON x.alg_srtruimte_key = sr.alg_srtruimte_key
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok1
ON x.alg_ruimte_key = ok1.alg_onrgoed_key
AND ok1.alg_kenmerk_key = 1003 -- Vloerafwerking
LEFT JOIN fac_v_aanwezigusrdata ud1
ON fac.safe_to_number (ok1.alg_onrgoedkenmerk_waarde) = ud1.fac_usrdata_key
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok2
ON x.alg_ruimte_key = ok2.alg_onrgoed_key
AND ok2.alg_kenmerk_key = 1004 -- Status
LEFT JOIN fac_v_aanwezigusrdata ud2
ON fac.safe_to_number (ok2.alg_onrgoedkenmerk_waarde) = ud2.fac_usrdata_key
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok3
ON x.alg_ruimte_key = ok3.alg_onrgoed_key
AND ok3.alg_kenmerk_key = 1005 -- Werkplekken
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok4
ON x.alg_ruimte_key = ok4.alg_onrgoed_key
AND ok4.alg_kenmerk_key = 1006 -- Toelichting/beheer
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok5
ON x.alg_ruimte_key = ok5.alg_onrgoed_key
AND ok5.alg_kenmerk_key = 1040 -- Inrichting
LEFT JOIN alg_v_aanwezigonrgoedkenmerk ok6
ON x.alg_ruimte_key = ok6.alg_onrgoed_key
AND ok6.alg_kenmerk_key = 1060 -- Opleiding
LEFT JOIN fac_v_aanwezigusrdata ud6
ON fac.safe_to_number (ok6.alg_onrgoedkenmerk_waarde) = ud6.fac_usrdata_key
LEFT JOIN ( SELECT wp.prs_alg_ruimte_key,
COUNT ( * ) aantal,
SUM (pw.prs_perslidwerkplek_bezetting) bezetting
FROM prs_perslidwerkplek pw, prs_werkplek wp -- WPs
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
GROUP BY wp.prs_alg_ruimte_key) pwp
ON x.alg_ruimte_key = pwp.prs_alg_ruimte_key
LEFT JOIN ( SELECT alg_ruimte_key,
COUNT ( * ) aantal,
MIN (prs_afdeling_key) prs_afdeling_key,
MIN (prs_ruimteafdeling_bezetting) bezetting
FROM prs_v_aanwezigruimteafdeling -- Afdeling(en) op ruimte
GROUP BY alg_ruimte_key) ra
ON x.alg_ruimte_key = ra.alg_ruimte_key
LEFT JOIN prs_afdeling afd -- Afdeling
ON ra.prs_afdeling_key = afd.prs_afdeling_key
AND afd.prs_afdeling_verwijder IS NULL;
CREATE OR REPLACE VIEW hsle_v_hv_frozen
(
maand,
district_oms,
locatie_code,
gebouw_code,
verdieping_code,
ruimte_key,
ruimte_nr,
omschrijving,
functie,
bvo,
omtrek,
inhoud,
opmerking,
vloerafwerking,
status,
werkplekken,
toelichting,
inrichting,
opleiding,
aantal_wp, -- #prs_werkplek!
wp_bez, -- Som prs_perslidwerkplek_bezetting / #prs_werkplek
aantal_afd, -- #prs_afdeling (zou 1 moeten zijn)!
afd_naam, -- prs_afdeling_naam van oudste afdeling!
afd_oms, -- prs_afdeling_omschrijving van oudste afdeling!
afd_bez -- prs_ruimteafdeling_bezetting van oudste afdeling!
)
AS
SELECT TO_CHAR (freeze_datum, 'yyyy-mm') maand,
dis_oms,
loc_code,
geb_code,
ver_code,
ruimte_key,
ruimte_nr,
ruimte_oms,
ruimte_functie,
ruimte_bvo,
ruimte_omtrek,
ruimte_inhoud,
ruimte_opm,
vloerafwerking,
status,
inrichting,
werkplekken,
toelichting,
opleiding,
aantal_wp,
wp_bez,
aantal_afd,
afd_naam,
afd_oms,
afd_bez
FROM hsle_hv_freeze;
-- Dummy export NACHTWERK!
CREATE OR REPLACE PROCEDURE hsle_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Cursor over alle ruimteregels!
CURSOR c1
IS
SELECT *
FROM hsle_v_hv_actual
ORDER BY ruimte_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_tot NUMBER (10);
freeze_datum DATE;
BEGIN
-- LET OP: NACHTWERK-export draait dagelijks na middernacht en de historie
-- van ruimtegegevens wordt maandelijks alleen in nacht na 15e dag
-- van maand bewaard!
IF TO_CHAR (SYSDATE, 'dd') = '16' -- Nacht na 15e dag van maand!
THEN
v_count_tot := 0;
freeze_datum := SYSDATE;
FOR rec IN c1
LOOP
INSERT INTO hsle_hv_freeze (dis_oms,
loc_code,
geb_code,
ver_code,
ruimte_key,
ruimte_nr,
ruimte_oms,
ruimte_functie,
ruimte_bvo,
ruimte_omtrek,
ruimte_inhoud,
ruimte_opm,
vloerafwerking,
status,
inrichting,
werkplekken,
toelichting,
opleiding,
aantal_wp,
wp_bez,
aantal_afd,
afd_naam,
afd_oms,
afd_bez,
freeze_datum)
VALUES (rec.district_oms,
rec.locatie_code,
rec.gebouw_code,
rec.verdieping_code,
rec.ruimte_key,
rec.ruimte_nr,
rec.omschrijving,
rec.functie,
rec.bvo,
rec.omtrek,
rec.inhoud,
rec.opmerking,
rec.vloerafwerking,
rec.status,
rec.inrichting,
rec.werkplekken,
rec.toelichting,
rec.opleiding,
rec.aantal_wp,
rec.wp_bez,
rec.aantal_afd,
rec.afd_naam,
rec.afd_oms,
rec.afd_bez,
freeze_datum);
v_count_tot := v_count_tot + 1;
END LOOP;
fac.writelog (p_applname, 'S', 'Ruimtegegevens/#bevroren: ' || TO_CHAR (v_count_tot), '');
COMMIT;
END IF;
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.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END hsle_select_nachtwerk;
/
CREATE OR REPLACE PROCEDURE hsle_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
sender prs_perslid.prs_perslid_key%TYPE;
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
v_mld_key_uit_subject mld_melding.mld_melding_key%TYPE;
v_mldkey mld_melding.mld_melding_key%TYPE;
defaultstdmelding fac_setting.fac_setting_default%TYPE;
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
v_mailadres_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
v_meldbron_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
v_from VARCHAR2 (1000) := '';
v_voor_at VARCHAR2 (1000) := '';
v_na_at VARCHAR2 (1000) := '';
subject_regexp fac_setting.fac_setting_default%TYPE;
v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
v_mldnum VARCHAR2 (4000);
v_srtdisc VARCHAR2 (4000);
v_mldprefix VARCHAR2 (10);
--v_flag_on_fenote NUMBER (10);
v_flag_on_bonote NUMBER (10);
v_mld_meldbron_key NUMBER (10);
l_body VARCHAR2 (4000);
l_vantekst VARCHAR2 (100);
l_van_pos NUMBER (10);
v_count NUMBER (10);
-- HSLE#35572: Resultaat is het linkerdeel van een string p_str tot en met waar de zoekstring p_search_str bestaat, zo niet, dan levert dan de NULL value op.
-- Let op: als de zoekstring niet in de eerste 4000 tekens wordt gevonden, dan wordt ook de NULL-value opgeleverd.
-- Dus:
-- hsle_leftstr('marcel', 'rc') -> 'ma'
-- hsle_leftstr('marcel', 'xx') -> ''
FUNCTION hsle_leftstr (p_str IN VARCHAR2, p_search_str IN VARCHAR2)
RETURN VARCHAR2
IS
p_result_str VARCHAR2 (4000);
l_van_pos NUMBER (10);
BEGIN
l_van_pos := INSTR (p_str, p_search_str);
IF l_van_pos > 0 AND l_van_pos < 4000
THEN
p_result_str := SUBSTR (p_str, 1, l_van_pos - 1);
ELSE
p_result_str := NULL;
END IF;
RETURN (p_result_str);
END;
BEGIN
-- We beschouwen dit als een nieuwe melding
v_errormsg := 'Fout bepalen soortmelding ' || COALESCE (pto, '???');
IF (UPPER (pto) = UPPER ('uMdbnym@hsle.facilitor.nl'))
THEN
-- HSLE#33581: Social Media 'Userlike' berichten naar mld_stdmelding_key=191 (stdmelding 'Social Media' onder vakgroep 'Social Media')
defaultstdmelding := '191';
v_mld_meldbron_key := 8; -- Vanaf 2015.3 zijn meldbronnen 8 (Chat) en 9 (Social Media) ook mogelijk
ELSE
IF (UPPER (pto) = UPPER ('TdDpVge@hsle.facilitor.nl'))
THEN
-- HSLE#37091: Mail naar studentzaken@hsleiden.nl automatisch verwerken in FCL tot stdmelding 'Mailmelding' (key=1241) onder de vakgroep 'Studentzaken' (key=98)
defaultstdmelding := '1241';
v_mld_meldbron_key := 4;
ELSE
IF (UPPER (pto) = UPPER ('CJXaYlt@hsle.facilitor.nl'))
THEN
-- HSLE#38876: Toevoegen Receptie@hsleiden.nl (vervolg op HSLE#37339)
defaultstdmelding := '1701';
v_mld_meldbron_key := 4;
ELSE
-- Mailmelding (onder vakgroep 'Mailmelding') met mld_stdmelding_key=161, deze staat komt uit 'defaultmelding'-setting
defaultstdmelding := fac.getsetting ('defaultstdmelding');
v_mld_meldbron_key := 4;
END IF;
END IF;
END IF;
-- HSLE#57042: Als er 'SRS=' voorkomt in pfrom, dan:
-- voor_at = tekst tussen laatste '=' en laatste '@' (vanaf links)
-- na_at = tekst tussen een-na-laatste '=' en laatste '=' (vanaf links)
-- Anders 1-op-1 overnemen.
IF INSTR (pfrom, 'SRS=') > 0
THEN
v_voor_at := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1, INSTR (pfrom, '@', -1) - INSTR (pfrom, '=', -1) - 1);
v_na_at := SUBSTR (pfrom, INSTR (pfrom, '=', -1, 2) + 1, INSTR (pfrom, '=', -1) - INSTR (pfrom, '=', -1, 2) - 1);
v_from := v_voor_at || '@' || v_na_at;
ELSE
v_from := pfrom;
END IF;
v_from := SUBSTR (v_from, 1, 50);
-- Bepaal de melder/noteur op basis van e-mail adres zoals in pfrom?
v_errormsg := 'Fout bepalen melder ' || COALESCE (v_from, '???');
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigperslid
WHERE (INSTR (UPPER (v_from), '@STUDENT.HSLEIDEN.NL') > 0 OR INSTR (UPPER (v_from), '@HSLEIDEN.NL') > 0)
AND UPPER (prs_perslid_email) LIKE '%' || UPPER (v_from) || '%';
IF v_count = 1
THEN
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
FROM prs_v_aanwezigperslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND UPPER (p.prs_perslid_email) LIKE '%' || UPPER (v_from) || '%';
ELSE -- Melder kan niet 1-duidig worden bepaald, dan selecteer prs_perslid_key = 15621 = system-user 'SYSTEM API Mail2Melding'!
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
FROM prs_v_aanwezigperslid p, prs_afdeling d
WHERE p.prs_afdeling_key = d.prs_afdeling_key
AND p.prs_perslid_key = 15621;
END IF;
-- Bepaal kenmerk-key van kenmerksoort 'E-mail' (key 26) op vakgroeptype niveau van vakgroeptype-key 1 die niet verwijderd is
v_errormsg := 'Fout bepalen kenmerksoort=E-mail';
SELECT MAX (mld_kenmerk_key)
INTO v_mailadres_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = 26
AND mld_kenmerk_verwijder IS NULL
AND mld_kenmerk_niveau = 'T'
AND mld_stdmelding_key = 1;
-- Bepaal kenmerk-key van kenmerksoort 'Meldbron' (key 2401) bij 'defaultstdmelding' die niet verwijderd is
v_errormsg := 'Fout bepalen kenmerksoort=Meldbron';
SELECT MAX (mld_kenmerk_key)
INTO v_meldbron_kenmerk_key
FROM mld_kenmerk k, mld_stdmelding sm, ins_tab_discipline td
WHERE k.mld_srtkenmerk_key = 2401
AND k.mld_kenmerk_verwijder IS NULL
AND sm.mld_stdmelding_key = defaultstdmelding
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND ((k.mld_stdmelding_key = sm.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = td.ins_discipline_key AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = td.ins_srtdiscipline_key AND k.mld_kenmerk_niveau = 'T'));
-- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.
v_errormsg := 'Fout bepalen bestaande melding';
-- Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp 'M123' kan worden opgevist, waarbij het deel achter M minimaal uit 1 cijfer bestaat.
-- HSLE#35572: extra spatie erbij hieronder (= verbetering), zodat een M12X34 niet als M12 wordt gezien, want anders wordt bij M12 een notitie geplaatst en dat is onterecht.
-- HSLE#35572: ook extra spatie aan het einde van het onderwerp erbij, zie info in call bij [Netten, Michelle van; 20-5-2016]
subject_regexp := '[[:alpha:]]*M[[:digit:]]{1,} ';
v_mldnum :=
REGEXP_SUBSTR (psubject || ' ',
subject_regexp,
1,
1,
'i'); -- M123, of M12345, of M12, of M1
v_srtdisc :=
REGEXP_SUBSTR (v_mldnum,
'[[:alpha:]]',
1,
1,
'i'); -- M
v_mld_key_uit_subject := fac.safe_to_number (SUBSTR (v_mldnum, LENGTH (v_srtdisc) + 1)); -- 123, of 12345, of 12, of 1
-- Uit onderwerp is de vermoedelijke juiste v_mld_key_uit_subject geparsed.
-- HSLE#35572: Puntje 1 - er wordt niet langer meer gecheckt op wie de mail stuurt, als in het onderwerp het meldingnummer wordt gevonden,
-- dan wordt die aan die melding als notitie erbij toegevoegd (ongeacht de mailer).
SELECT MAX (mld_melding_key)
INTO v_mldkey
FROM mld_melding
WHERE mld_melding_key = v_mld_key_uit_subject;
IF v_mldkey IS NOT NULL
THEN
-- Gotcha: van deze afzender is een eerdere melding geregistreerd, dus we voegen de subject en body nu als notitie toe.
v_errormsg := 'Fout toevoegen notitie';
-- HSLE#35572
l_vantekst := 'Van: ';
l_body := hsle_leftstr (pbody, l_vantekst);
IF l_body IS NULL
THEN
-- Er is geen 'Van: ' gevonden, misschien nog 'From: '
l_vantekst := 'From: ';
l_body := hsle_leftstr (pbody, l_vantekst);
IF l_body IS NULL
THEN
-- Er is ook geen 'From: ' gevonden, dan doen we de hele tekst
l_body := SUBSTR (pbody, 1, 4000);
END IF;
END IF;
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (v_mldkey,
SUBSTR (psubject || CHR (13) || CHR (10)
|| REPLACE (SUBSTR (l_body, 1, 4000 - (LENGTH (psubject) + 2)), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels
sender,
1); -- HSLE#59262: Notitie zichtbaar maken voor FE!
-- Default tracking is even goed genoeg
fac.trackaction ('MLDNOT', v_mldkey, sender, 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 ' || v_mldkey);
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
BEGIN
IF fac.getsetting ('mld_melding_actiecode') = 1
THEN
UPDATE mld_melding
SET mld_melding_actiecode = 1 + 128 -- Backoffice + Attentie
WHERE mld_melding_key = v_mldkey;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Niet gelukt om flag ' || v_flag_on_bonote || ' te zetten.');
END;
-- Bepalen van de behandelaar van deze melding
v_errormsg := 'Fout bepalen behandelaar';
BEGIN
SELECT mld_melding_behandelaar_key
INTO v_behandelaar_key
FROM mld_melding m, prs_perslid p
WHERE mld_melding_key = v_mldkey
AND mld_melding_behandelaar_key = p.prs_perslid_key
AND p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN OTHERS
THEN
v_behandelaar_key := NULL;
END;
IF v_behandelaar_key IS NOT NULL
THEN
-- Bestaande melding en behandelaar is bekend.
-- bepalen vakgroeptype prefix
SELECT srt.ins_srtdiscipline_prefix
INTO v_mldprefix
FROM mld_melding m, mld_stdmelding std, mld_discipline d, ins_srtdiscipline srt
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND m.mld_melding_key = v_mldkey;
-- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
v_behandelaar_key,
'MLDNOB',
v_mldkey,
'Melding ' || v_mldprefix || v_mldkey || ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
END IF;
ELSE
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an 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';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
v_mld_meldbron_key, -- email (4) of chat (8)
SYSDATE,
1, -- HSLE#33348: CAMPUS hier kiezen (alg_locatie_key = 1)
393, -- HLSE#55591: Ruimte F0.024 hier kiezen (alg_ruimte_key = 393)
SUBSTR (psubject, 1, 80), --HSLE#52534: onderwerp apart en niet meer bij omschrijving
SUBSTR (REPLACE (SUBSTR (pbody, 1, 4000), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels
NULL,
defaultstdmelding,
sender,
sender,
kostenplaats,
3)
RETURNING mld_melding_key
INTO v_mldkey;
-- Vullen van kenmerkwaarde voor "E-mail"
IF v_from IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
THEN
-- v_from is gevuld, en kenmerk mailadres bestaat, zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
END IF;
-- HSLE#56362: Vullen van kenmerkwaarde voor "Meldbron" met 2703 = Chat of 2721 = Mail
IF v_meldbron_kenmerk_key IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_mldkey, v_meldbron_kenmerk_key, DECODE (v_mld_meldbron_key, 8, 2703, 2721));
END IF;
mld.setmeldingstatus (v_mldkey, 2, sender);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);
END;
END IF;
-- find the lowest volgnummer of the flexfield of type folder.
v_errormsg := 'Fout toevoegen bijlage(n)';
SELECT MIN (mld_kenmerk_key)
INTO kkey
FROM mld_kenmerk k, mld_srtkenmerk sk, mld_stdmelding std, ins_tab_discipline d
WHERE sk.mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = defaultstdmelding
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 1
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 = defaultstdmelding
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 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_mldkey / 1000), 'FM0000') || '___\M' || v_mldkey || '\' || kkey || '\');
END IF;
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', 'W', 'HSLE_processemail afgebroken!', '[' || COALESCE (v_from, 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 hsle_v_rap_reservering
(
key,
nummer,
res_omschrijving,
invoerdatum,
datum,
gastheer,
contact,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
afdeling_code,
afdeling_omschrijving,
district_omschijving,
alg_locatie_key,
locatie,
locatie_omschrijving,
gebouw,
verdieping,
ruimte,
opstelling,
no_show,
mandaat,
personeelsnr,
werkplek,
discipline_key,
catalogus_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
activiteit_key,
activiteit,
srtactiviteit_key,
activiteitsoort,
voorziening_discipline_key,
voorziening_catalogus,
voorziening_catalogussoort,
voorziening_product_key,
voorziening_product,
voorziening_totaalprijs,
voorziening_btw,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
grootboekrekeningnr,
grootboekomschrijving,
grootboekaanwezig
)
AS
SELECT res.res_reservering_key,
res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_omschrijving,
COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van),
COALESCE (rrr.res_rsv_ruimte_van, voorz.van),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
(SELECT pf.prs_perslid_naam_full
FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf
WHERE tr.prs_perslid_key = pf.prs_perslid_key
AND str.fac_srtnotificatie_code = 'RESNEW'
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key),
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key))))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT disc.prs_kostensoort_key
FROM res_discipline disc
WHERE disc.ins_discipline_key =
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key))))
kostensoort,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
a.prs_afdeling_naam,
a.prs_afdeling_omschrijving,
(SELECT d.alg_district_omschrijving
FROM alg_district d,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE d.alg_district_key = l.alg_district_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT l.alg_locatie_key
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_code
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_locatie_omschrijving
FROM alg_locatie l,
alg_gebouw g,
alg_verdieping v,
alg_ruimte r
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_gebouw_code
FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
WHERE g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
(SELECT alg_verdieping_code
FROM alg_verdieping v, alg_ruimte r
WHERE v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_ruimte_key = r2a.alg_ruimte_key),
r2a.ruimte_nr,
r2a.opstelling,
rrr.res_rsv_ruimte_noshow,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0),
prs_perslid_nr,
wp2.prs_werkplek_aanduiding,
COALESCE (
voorz.ins_discipline_key,
(SELECT ins_discipline_key
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key)),
(SELECT ins_discipline_key
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
(SELECT ins_discipline_omschrijving
FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr
WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = d.ins_discipline_key),
DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'),
rrr.res_rsv_ruimte_bezoekers,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
COALESCE ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0),
(SELECT res_status_fo_omschrijving
FROM res_status_fo rs
WHERE rs.res_status_fo_key = rrr.res_status_fo_key),
ra.res_activiteit_key,
ra.res_activiteit_omschrijving,
rsa.res_srtactiviteit_key,
rsa.res_srtactiviteit_omschrijving,
voorz.ins_discipline_key,
voorz.catalogus,
DECODE(voorz.catalogussoort,1,'Reserveerbaar object', 2, 'Catering', 3, 'Ruimte', ''),
voorz.product_key,
voorz.product,
voorz.totaalprijs,
voorz.btw,
TO_CHAR (voorz.van, 'hh24:mi'),
TO_CHAR (voorz.tot, 'hh24:mi'),
voorz.aantal,
voorz.prijs,
(SELECT ud.fac_usrdata_code from res_kenmerkwaarde w, res_kenmerk k, fac_usrdata ud
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1
and w.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ud.fac_usrtab_key = 41
AND ud.fac_usrdata_key = fac.safe_to_number(W.RES_KENMERKRESERVERING_WAARDE)
AND w.res_kenmerkwaarde_verwijder IS NULL) grootboekrekeningnr,
(SELECT ud.fac_usrdata_omschr from res_kenmerkwaarde w, res_kenmerk k, fac_usrdata ud
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1
and w.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ud.fac_usrtab_key = 41
AND ud.fac_usrdata_key = fac.safe_to_number(W.RES_KENMERKRESERVERING_WAARDE)
AND w.res_kenmerkwaarde_verwijder IS NULL) grootboekomschrijving,
(SELECT 'X' from res_kenmerkwaarde w, res_kenmerk k, fac_usrdata ud
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = 1
and w.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND ud.fac_usrtab_key = 41
AND ud.fac_usrdata_key = fac.safe_to_number(W.RES_KENMERKRESERVERING_WAARDE)
AND w.res_kenmerkwaarde_verwijder IS NULL) grootboekaanwezig
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
res_srtactiviteit rsa,
res_reservering res,
prs_kostenplaats k,
prs_perslid p,
prs_afdeling a,
( SELECT res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) opstelling,
MAX (ra.alg_ruimte_key) alg_ruimte_key,
MAX (rr.res_ruimte_nr) ruimte_nr
FROM res_rsv_ruimte r,
res_ruimte_opstelling ro,
res_opstelling o,
res_ruimte rr,
res_alg_ruimte ra
WHERE r.res_rsv_ruimte_verwijder IS NULL
AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND ro.res_opstelling_key = o.res_opstelling_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY res_rsv_ruimte_key
UNION ALL
SELECT res_rsv_ruimte_key,
'' opstelling,
rrr.alg_ruimte_key,
r.alg_ruimte_nr
FROM res_rsv_ruimte rrr, alg_ruimte r
WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a,
(SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
-rd.res_deel_key product_key,
rd.res_deel_omschrijving product,
DECODE (
rd.res_deel_prijs_vast,
1,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
totaalprijs,
rrd.res_rsv_deel_van van,
rrd.res_rsv_deel_tot tot,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
NULL btw,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
c.ins_discipline_min_level catalogussoort
FROM res_v_aanwezigrsv_deel rrd,
res_deel rd,
ins_deel d,
ins_tab_discipline c
WHERE rrd.res_deel_key = rd.res_deel_key
AND d.ins_deel_key = rd.res_ins_deel_key
AND rrd.res_rsv_ruimte_key IS NOT NULL
AND c.ins_discipline_key = rd.res_discipline_key
UNION ALL
SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
ra.res_artikel_key product_key,
ra.res_artikel_omschrijving product,
NVL (rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs)
totaalprijs,
rra.res_rsv_artikel_levering van,
NULL tot,
rra.res_rsv_artikel_aantal aantal,
NVL (rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal, res_artikel_prijs)
prijs,
NVL (rra.res_rsv_artikel_btw, ra.res_artikel_btw) btw,
c.ins_discipline_key ins_discipline_key,
c.ins_discipline_omschrijving catalogus,
c.ins_discipline_min_level catalogussoort
FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, ins_tab_discipline c
WHERE rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = c.ins_discipline_key) voorz,
( SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding) || DECODE (COUNT ( * ), 1, '', '...')
prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2
WHERE rrr.res_reservering_key = res.res_reservering_key
AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND (rrr.res_ruimte_opstel_key IS NOT NULL OR voorz.res_rsv_ruimte_key IS NOT NULL)
AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2009', 'DD-MM-YYYY');
-- Copied from ROOT VIEWS for User defined Reports (UDR): ins_v_udr_deel
CREATE OR REPLACE VIEW hsle_v_rap_deel_verwijderd
(
key,
deel_omschrijving,
plaats,
srtdeel_code,
soort,
groep,
deel_opmerking,
discipline_key,
plaats_type,
district,
uitleenbaar,
res_opmerking,
deel_vervaldatum,
eigenaar,
ins_deel_verwijder
)
AS
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
TO_CHAR (NULL) plaats,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving soort,
g.ins_srtgroep_omschrijving groep,
i.ins_deel_opmerking,
i.ins_discipline_key,
i.ins_alg_ruimte_type,
-1 district,
s.ins_srtdeel_uitleenbaar,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
eigenaar,
i.ins_deel_verwijder
FROM ins_deel i,
ins_srtdeel s,
ins_srtgroep g,
(SELECT res_deel_key, res_ins_deel_key, res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_v_afdeling_boom d,
prs_bedrijf b
WHERE s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND i.ins_deel_verwijder IS NOT NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'A'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
TO_CHAR (NULL) plaats,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving soort,
g.ins_srtgroep_omschrijving groep,
i.ins_deel_opmerking,
i.ins_discipline_key,
i.ins_alg_ruimte_type,
-1 district,
s.ins_srtdeel_uitleenbaar,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
p.prs_perslid_naam
|| NVL2 (p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')
|| NVL2 (p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')
|| NVL2 (p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '')
eigenaar,
i.ins_deel_verwijder
FROM ins_deel i,
ins_srtdeel s,
ins_srtgroep g,
(SELECT res_deel_key, res_ins_deel_key, res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_perslid p,
prs_v_afdeling_boom d
WHERE s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND i.ins_deel_verwijder IS NOT NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_afdeling_key = d.prs_afdeling_key
AND i.ins_alg_ruimte_type = 'P'
UNION
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
TO_CHAR (NULL) plaats,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving soort,
g.ins_srtgroep_omschrijving groep,
i.ins_deel_opmerking,
i.ins_discipline_key,
i.ins_alg_ruimte_type,
-1 district,
s.ins_srtdeel_uitleenbaar,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
c.prs_contactpersoon_naam eigenaar,
i.ins_deel_verwijder
FROM ins_deel i,
ins_srtdeel s,
ins_srtgroep g,
(SELECT res_deel_key, res_ins_deel_key, res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd,
prs_contactpersoon c
WHERE s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key
AND i.ins_deel_verwijder IS NOT NULL
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND i.ins_alg_ruimte_key = c.prs_contactpersoon_key
AND i.ins_alg_ruimte_type = 'C'
UNION ALL
SELECT i.ins_deel_key,
i.ins_deel_omschrijving,
o.alg_plaatsaanduiding || ' ('
|| DECODE (
o.alg_onroerendgoed_type,
'R',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key),
'T',
(SELECT t.alg_terreinsector_naam
FROM alg_terreinsector t
WHERE t.alg_terreinsector_key = i.ins_alg_ruimte_key),
'W',
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r, prs_werkplek w
WHERE r.alg_ruimte_key = w.prs_alg_ruimte_key
AND w.prs_werkplek_key = i.ins_alg_ruimte_key))
|| ')'
plaats,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving soort,
g.ins_srtgroep_omschrijving groep,
i.ins_deel_opmerking,
i.ins_discipline_key,
i.ins_alg_ruimte_type,
l.alg_district_key,
s.ins_srtdeel_uitleenbaar,
rd.res_deel_opmerking,
i.ins_deel_vervaldatum,
NULL eigenaar,
i.ins_deel_verwijder
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
ins_srtgroep g,
alg_locatie l,
alg_district di,
(SELECT res_deel_key, res_ins_deel_key, res_deel_opmerking res_deel_opmerking
FROM res_deel
WHERE res_deel_verwijder IS NULL) rd
WHERE i.ins_deel_verwijder IS NOT NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_key = rd.res_ins_deel_key(+)
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND s.ins_srtdeel_key = i.ins_srtdeel_key
AND g.ins_srtgroep_key = s.ins_srtgroep_key;
CREATE OR REPLACE VIEW hsle_v_oppervlak_afdeling
(
alg_ruimte_key,
prs_kostenplaats_nr,
prs_afdeling_omschrijving,
alg_gebouw_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_opmerking,
alg_ruimte_vloerafwerking,
alg_ruimte_status,
alg_ruimte_inrichting,
alg_ruimte_toelichting,
alg_ruimte_aantal_werkplekken,
alg_gebouw_key,
prs_afdeling_key,
alg_ruimte_bruto_vloeropp,
prs_ruimteafdeling_bezetting,
product,
verhuurbaar,
bevat_werkplek
)
AS
SELECT rg.alg_ruimte_key,
COALESCE (ra.prs_kostenplaats_nr, 'Geen') prs_kostenplaats_nr,
COALESCE (ra.prs_afdeling_omschrijving, 'Geen')
prs_afdeling_omschrijving,
rg.alg_gebouw_omschrijving,
rg.alg_verdieping_volgnr,
rg.alg_verdieping_code,
rg.alg_ruimte_nr,
rg.alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
rg.alg_ruimte_opmerking,
(SELECT fac_usrdata_code
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak,
fac_kenmerkdomein kd,
fac_usrdata ud
WHERE alg_onrgoed_key = rg.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND aok.alg_kenmerk_key = 1003
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND ak.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND fac.safe_to_number (aok.alg_onrgoedkenmerk_waarde) =
ud.fac_usrdata_key)
vloerafwerking,
(SELECT fac_usrdata_code
FROM alg_onrgoedkenmerk aok,
alg_kenmerk ak,
fac_kenmerkdomein kd,
fac_usrdata ud
WHERE alg_onrgoed_key = rg.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND aok.alg_kenmerk_key = 1004
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND ak.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND fac.safe_to_number (aok.alg_onrgoedkenmerk_waarde) =
ud.fac_usrdata_key)
Status,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = rg.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND alg_kenmerk_key = 1040)
alg_ruimte_inrichting,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = rg.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND alg_kenmerk_key = 1006)
alg_ruimte_toelichting,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = rg.alg_ruimte_key
AND alg_onrgoed_niveau = 'R'
AND alg_kenmerk_key = 1005)
alg_ruimte_aantal_werkplekken,
rg.alg_gebouw_key,
ra.prs_afdeling_key,
rg.alg_ruimte_bruto_vloeropp,
ra.prs_ruimteafdeling_bezetting,
COALESCE (rg.alg_ruimte_bruto_vloeropp, 0)
* ra.prs_ruimteafdeling_bezetting
/ 100
product,
DECODE (sr.prs_verhuurbaar, 1, 'Ja', 'Nee') prs_verhuurbaar,
DECODE (prs_bevat_werkplek, 1, 'Ja', 'Nee') prs_bevat_werkplek
FROM alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
(SELECT a.prs_afdeling_key,
ra.alg_ruimte_key,
ra.prs_ruimteafdeling_bezetting,
a.prs_afdeling_omschrijving,
kp.prs_kostenplaats_nr
FROM prs_v_aanwezigafdeling a,
prs_v_aanwezigruimteafdeling ra,
prs_kostenplaats kp
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key) ra
WHERE rg.alg_ruimte_key = ra.alg_ruimte_key(+)
AND sr.alg_srtruimte_key = rg.alg_srtruimte_key;
-- HSLE#37030 object x ruimte rapportage
CREATE OR REPLACE VIEW HSLE_V_UDR_RUIMTExOBJECT
AS
SELECT ins_deel_key,
ins_deel_omschrijving identificatie,
ins_deel_opmerking beschrijving,
dsc.ins_discipline_omschrijving discipline,
sg.ins_srtgroep_omschrijving groep,
sd.ins_srtdeel_omschrijving objectsoort,
ins_alg_ruimte_key alg_ruimte_key,
ins_deel_vervaldatum vervaldatum,
prs_perslid_naam_full beheerder,
prs_kostenplaats_nr
prs_afdeling_omschrijving,
alg_gebouw_omschrijving,
alg_verdieping_volgnr,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_opmerking,
alg_ruimte_vloerafwerking,
alg_ruimte_status,
alg_ruimte_toelichting,
alg_ruimte_aantal_werkplekken,
alg_ruimte_bruto_vloeropp,
prs_ruimteafdeling_bezetting,
product,
verhuurbaar,
bevat_werkplek
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_discipline dsc,
prs_v_perslid_fullnames_all p,
hsle_v_oppervlak_afdeling ra
WHERE ins_deel_verwijder IS NULL
AND ins_alg_ruimte_type = 'R'
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND dsc.ins_discipline_key = sg.ins_discipline_key
AND p.prs_perslid_key(+) = d.prs_perslid_key_beh
AND ra.alg_ruimte_key = ins_alg_ruimte_key;
CREATE OR REPLACE VIEW hsle_v_evenement
(
RES_RESERVERING_KEY,
RES_RESERVERING_OMSCHRIJVING
)
AS
SELECT r.res_reservering_key,
TO_CHAR (r.res_reservering_key)
|| ' - '
|| MAX (res_rsv_ruimte_omschrijving)
res_reservering_omschrijving
FROM res_reservering r, res_rsv_ruimte rrr
WHERE r.res_reservering_key = rrr.res_reservering_key
AND rrr.res_activiteit_key = 30 -- evenementen
GROUP BY r.res_reservering_key;
CREATE OR REPLACE VIEW HSLE_V_EVENEMENT_BES
(
BES_BESTELLING_KEY,
BES_BESTELLING_OMSCHR
)
AS
SELECT b.BES_BESTELLING_KEY,
TO_CHAR (b.bes_bestelling_key)
|| ' - '
|| MAX (ins_discipline_omschrijving)
ins_discipline_omschrijving
FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, bes_discipline d
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
GROUP BY b.bes_bestelling_key;
-- view tbv kenmerkdomein. Alle AV objecten
-- KEY 42 = discipline AV
CREATE OR REPLACE VIEW hsle_v_deel_av
(
ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_oms2,
ins_deel_vervaldatum
)
AS
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
ins_deel_omschrijving || ' - ' || ins_deel_opmerking ins_deel_oms2,
ins_deel_vervaldatum
FROM ins_v_aanwezigdeel d, ins_v_srtdeel_gegevens srt
WHERE d.ins_srtdeel_key = srt.ins_srtdeel_key
AND srt.ins_discipline_key = 42;
CREATE OR REPLACE VIEW hsle_v_ict_rfc_kenmerken
AS
SELECT *
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_kenmerk_niveau = 'D'
AND mld_stdmelding_key IN (642, 644) -- RFC/Change
;
CREATE OR REPLACE VIEW hsle_v_rap_ict_rfc
(
mld_melding_key,
mld_stdmelding_key,
mld_discipline_key,
mld_stdmelding_omschrijving,
mld_datum_create,
mld_datum_deadline_akkoord,
mld_melding_prioriteit,
mld_melding_status,
mld_melding_impact,
mld_melding_onderwerp,
fclt_mld_melding_parentkey,
--html_mld_melding_parentkey,
ins_deel_ci,
mld_melding_aanvrager,
mld_melding_eigenaar,
mld_melding_startdatum,
mld_melding_einddatum,
mld_melding_aanwezig_cab_i,
mld_melding_aanwezig_cab_a,
mld_melding_aanwezig_cab_t,
mld_melding_aanwezig_cab_s,
mld_melding_aanwezig_cab_v,
mld_melding_aanwezig_cab_n,
mld_melding_aanwezig_cab_w,
mld_melding_aanwezig_cab_f,
mld_melding_aanwezig_cab_c,
mld_melding_akkoord_i,
mld_melding_akkoord_a,
mld_melding_akkoord_t,
mld_melding_akkoord_s,
mld_melding_akkoord_v,
mld_melding_akkoord_n,
mld_melding_akkoord_w,
mld_melding_akkoord_f,
mld_melding_akkoord_c,
mld_opdr_deelnemer_key,
mld_opdr_deelnemer,
mld_opdr_omschrijving,
mld_opdr_startdatum,
mld_opdr_einddatum,
mld_opdr_plandatum,
mld_opdr_uren
)
AS
SELECT m.mld_melding_key,
sm.mld_stdmelding_key,
sm.mld_ins_discipline_key,
sm.mld_stdmelding_omschrijving,
--to_date(to_char(fac.gettrackingdate('MLDNEW',m.mld_melding_key),'dd-mm-yyyy'),'dd-mm-yyyy'),
TRUNC (fac.gettrackingdate ('MLDNEW', m.mld_melding_key)),
(SELECT fac.safe_to_date (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 382 -- Deadline akkoord
AND km.mld_melding_key = m.mld_melding_key),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 395 -- Prioriteit (Laag, Middel, Hoog)
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)
AND km.mld_melding_key = m.mld_melding_key),
CASE
-- Onderstaande WHEN-THEN volgorde is cruciaal voor tonen juiste status...
WHEN m.mld_melding_status IN (1) -- Afgewezen (1)
THEN 'Afgewezen'
WHEN m.mld_melding_status IN (5, 6) -- Gesloten (5), Historie (6)
THEN 'Afgerond'
WHEN -- Als NIET alle 4 vakgebieden I, A, T en S hebben goedgekeurd, maar WEL de Voorzitter heeft goedgekeurd, dan GOEDGEKEURD (ongeacht de melding-status)
(SELECT DECODE (UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 377 -- Akkoord [Voorzitter]
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)
AND km.mld_melding_key = m.mld_melding_key) = 'V'
THEN 'Goedgekeurd' -- Akkoord door Voorzitter (HSLE#56209)
WHEN m.mld_melding_status IN (0) -- Bij Frontoffice (0)
THEN 'Concept'
WHEN m.mld_melding_status IN (2, 3) -- Nieuw (2), Te accepteren (3)
THEN 'Ingediend'
WHEN m.mld_melding_status IN (4, 7) -- Geaccepteerd (4), Uitgegeven (7)
THEN 'In behandeling'
END status,
(SELECT TO_CHAR (fac.safe_to_number (km1.mld_kenmerkmelding_waarde) * fac.safe_to_number (km2.mld_kenmerkmelding_waarde))
FROM mld_kenmerkmelding km1, hsle_v_ict_rfc_kenmerken k1, mld_kenmerkmelding km2, hsle_v_ict_rfc_kenmerken k2
WHERE km1.mld_kenmerk_key = k1.mld_kenmerk_key
AND k1.mld_srtkenmerk_key = 399 -- Risico impact
AND km1.mld_melding_key = m.mld_melding_key
AND km2.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key = 389 -- Kans op storing
AND km2.mld_melding_key = m.mld_melding_key),
m.mld_melding_omschrijving,
CASE
WHEN m.mld_melding_kto_type = 'M'
THEN TO_CHAR (m.mld_melding_kto_key)
END,
--CASE
-- WHEN m.mld_melding_kto_type = 'M'
-- THEN '<a class="details" onclick=''FcltMgr.openDetail("appl/fac/fac_report.asp?usrrap_key=161&mode=list&fclt_mld_melding_parentkey='
-- || TO_CHAR (m.mld_melding_kto_key)
-- || '")''>'
-- || TO_CHAR (m.mld_melding_kto_key)
-- || '</a>'
--END,
(SELECT LISTAGG (d.ins_deel_omschrijving, ', ') WITHIN GROUP (ORDER BY d.ins_deel_omschrijving)
FROM mld_melding_object mo, ins_deel d
WHERE mo.mld_melding_object_verwijder IS NULL
AND mo.ins_deel_key = d.ins_deel_key
AND mo.mld_melding_key = m.mld_melding_key)
ci,
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = m.prs_perslid_key_voor),
(SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = m.mld_melding_behandelaar_key),
--to_date(to_char(m.mld_melding_datum,'dd-mm-yyyy'),'dd-mm-yyyy'),
--to_date(to_char(m.mld_melding_einddatum,'dd-mm-yyyy'),'dd-mm-yyyy'),
TRUNC (m.mld_melding_datum),
TRUNC (m.mld_melding_einddatum),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 366 -- Aanwezig [Systeembeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 361 -- Aanwezig [Architect]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 367 -- Aanwezig [TAB]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 365 -- Aanwezig [Servicedesk]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 368 -- Aanwezig [Voorzitter]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 364 -- Aanwezig [Netwerkbeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 369 -- Aanwezig [Werkplekbeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 363 -- Aanwezig [FAB]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 362 -- Aanwezig [Co<43>rdinator]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 375 -- Akkoord [Systeembeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 370 -- Akkoord [Architect]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 376 -- Akkoord [TAB]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 374 -- Akkoord [Servicedesk]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 377 -- Akkoord [Voorzitter]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 373 -- Akkoord [Netwerkbeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 378 -- Akkoord [Werkplekbeheer]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 372 -- Akkoord [FAB]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
(SELECT DECODE(UPPER(ud.fac_usrdata_code),'JA','V','NEE','X','')
FROM mld_kenmerkmelding km, hsle_v_ict_rfc_kenmerken k, fac_usrdata ud
WHERE m.mld_melding_key = km.mld_melding_key(+)
AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
AND k.mld_srtkenmerk_key = 371 -- Akkoord [Co<43>rdinator]
AND fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key(+)),
u.mld_uitvoerende_key,
CASE
WHEN u.type = 'P'
THEN (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = u.mld_uitvoerende_key)
WHEN u.type = 'B'
THEN (SELECT prs_bedrijf_naam FROM prs_bedrijf WHERE prs_bedrijf_key = u.mld_uitvoerende_key)
END,
o.mld_opdr_omschrijving,
--to_date(to_char(o.mld_opdr_datumbegin, 'dd-mm-yyyy'),'dd-mm-yyyy'),
--to_date(to_char(o.mld_opdr_einddatum, 'dd-mm-yyyy'),'dd-mm-yyyy'),
--COALESCE(to_date(to_char(o.mld_opdr_plandatum, 'dd-mm-yyyy'),'dd-mm-yyyy'), to_date(to_char(o.mld_opdr_einddatum - (o.mld_opdr_einddatum - o.mld_opdr_datumbegin)/2, 'dd-mm-yyyy'),'dd-mm-yyyy')) plandatum,
TRUNC (o.mld_opdr_datumbegin),
TRUNC (o.mld_opdr_einddatum),
COALESCE (TRUNC (o.mld_opdr_plandatum), TRUNC (o.mld_opdr_einddatum - (o.mld_opdr_einddatum - o.mld_opdr_datumbegin) / 2)) plandatum,
o.mld_opdr_uren
FROM mld_melding m, mld_stdmelding sm, mld_opdr o, mld_v_uitvoerende u
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key IN (642, 644) -- RFC/Change
AND m.mld_melding_key = o.mld_melding_key(+)
AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key(+);
CREATE OR REPLACE VIEW hsle_v_ins_qrc
(fclt_3d_discipline_key, fclt_3d_locatie_key, fclt_f_locatie, fclt_f_gebouw, plaats, soortruimte, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_key, ins_srtdeel_key,
fclt_f_objectsoort, ins_alg_ruimte_type, alg_district_key, ins_deel_upper, alg_ruimte_key, fclt_f_fac_bookmark_naam, hide_f_bookmark_id
)
AS
SELECT i.ins_discipline_key,
l.alg_locatie_key,
l.alg_locatie_omschrijving,
o.alg_gebouw_omschrijving,
o.alg_plaatsaanduiding plaats,
(SELECT r.alg_ruimte_omschrijving
FROM alg_ruimte r
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte,
s.ins_srtdeel_code,
s.ins_srtdeel_omschrijving,
i.ins_deel_omschrijving,
i.ins_deel_key,
s.ins_srtdeel_key,
s.ins_srtdeel_upper,
i.ins_alg_ruimte_type,
l.alg_district_key,
ins_deel_upper,
i.ins_alg_ruimte_key,
b.fac_bookmark_naam,
b.fac_bookmark_id
FROM ins_deel i,
ins_v_alg_overzicht o,
ins_srtdeel s,
alg_locatie l,
alg_district di,
fac_bookmark b
WHERE b.fac_bookmark_naam like '%QRC%'
AND ins_deel_verwijder IS NULL
AND i.ins_deel_module = 'INS'
AND i.ins_deel_parent_key IS NULL
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
AND o.alg_locatie_key = i.ins_alg_locatie_key
AND i.ins_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND s.ins_srtdeel_key = i.ins_srtdeel_key;
-- Notificatie-job die 2 weken (=14 dagen) VOOR de uiterlijke inleverdatum (PRODUCTIE: kenmerk-key 201, TEST: kenmerk-key 281) van het object parkeerpas (ins_srtdeel_key = 301) een mail verstuurd naar de lener.
CREATE OR REPLACE VIEW hsle_v_noti_pp1
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST01',
'',
d.ins_alg_ruimte_key,
'Reminder parkeerpas - Uiterlijke inleverdatum: '
|| kd.ins_kenmerkdeel_waarde,
d.ins_deel_key,
NULL
FROM ins_deel d, ins_kenmerkdeel kd, fac_notificatie_job nj
WHERE ins_srtdeel_key = 301
AND ins_alg_ruimte_key_org IS NOT NULL
AND ins_alg_ruimte_type_org IS NOT NULL
AND ins_alg_ruimte_type = 'P'
AND ins_deel_verwijder IS NULL
AND kd.ins_deel_key = d.ins_deel_key
AND kd.ins_kenmerk_key = 201
AND KD.INS_KENMERKDEEL_VERWIJDER IS NULL
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 14 <=
TRUNC (SYSDATE)
AND nj.fac_notificatie_job_view = 'HSLE_V_NOTI_PP1'
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 14 >=
TRUNC (nj.fac_notificatie_job_nextrun);
-- Notificatie-job die 1 week (=7 dagen) NA de uiterlijke inleverdatum (PRODUCTIE: kenmerk-key 201, TEST: kenmerk-key 281) van het object parkeerpas (ins_srtdeel_key = 301) een mail verstuurd naar de lener.
CREATE OR REPLACE VIEW hsle_v_noti_pp2
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST02',
'',
d.ins_alg_ruimte_key,
'Reminder parkeerpas - Geblokkeerd',
d.ins_deel_key,
NULL
FROM ins_deel d, ins_kenmerkdeel kd, fac_notificatie_job nj
WHERE ins_srtdeel_key = 301
AND ins_alg_ruimte_key_org IS NOT NULL
AND ins_alg_ruimte_type_org IS NOT NULL
AND ins_alg_ruimte_type = 'P'
AND ins_deel_verwijder IS NULL
AND kd.ins_deel_key = d.ins_deel_key
AND kd.ins_kenmerk_key = 201
AND KD.INS_KENMERKDEEL_VERWIJDER IS NULL
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') + 7 <=
TRUNC (SYSDATE)
AND nj.fac_notificatie_job_view = 'HSLE_V_NOTI_PP2'
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') + 7 >=
TRUNC (nj.fac_notificatie_job_nextrun);
-- Notificatie-job die 4 weken (=28 dagen) VOOR de uiterlijke inleverdatum (PRODUCTIE: kenmerk-key 201, TEST: kenmerk-key 281) van het object parkeerpas (ins_srtdeel_key = 301) een mail verstuurd naar de lener.
CREATE OR REPLACE VIEW hsle_v_noti_pp3
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST03',
'',
d.ins_alg_ruimte_key,
'Reminder parkeerpas - Uiterlijke inleverdatum: '
|| kd.ins_kenmerkdeel_waarde,
d.ins_deel_key,
NULL
FROM ins_deel d, ins_kenmerkdeel kd, fac_notificatie_job nj
WHERE ins_srtdeel_key = 301
AND ins_alg_ruimte_key_org IS NOT NULL
AND ins_alg_ruimte_type_org IS NOT NULL
AND ins_alg_ruimte_type = 'P'
AND ins_deel_verwijder IS NULL
AND kd.ins_deel_key = d.ins_deel_key
AND kd.ins_kenmerk_key = 201
AND KD.INS_KENMERKDEEL_VERWIJDER IS NULL
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 28 <=
TRUNC (SYSDATE)
AND nj.fac_notificatie_job_view = 'HSLE_V_NOTI_PP3'
AND TO_DATE (kd.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 28 >=
TRUNC (nj.fac_notificatie_job_nextrun);
--- HSLE#38447 maatwerk rapportage voor draaiboek reserveringen
CREATE OR REPLACE VIEW hsle_v_rap_res_draaiboek
(
key,
res_nummer,
duur,
dag_van,
datum_van,
tijd_van,
dag_tot,
datum_tot,
tijd_tot,
aant_pers,
ruimte,
omschrijving,
voorziening,
gastheer,
aanvrager,
opmerking,
activiteit
)
AS
SELECT u.key,
nummer,
CASE WHEN TRUNC (van) = TRUNC (tot) THEN '-' ELSE 'meerdaags' END
AS duur,
TO_CHAR (van, 'DAY') AS dag_van,
van datum_van,
TO_CHAR (van, 'HH24:Mi') tijd_van,
TO_CHAR (tot, 'DAY') AS dag_tot,
tot datum_tot,
TO_CHAR (tot, 'HH24:Mi') tijd_tot,
bezoekers,
locatie || '-' || gebouw || '-' || verdieping || '- ' || ruimte
AS ruimte,
res_omschrijving,
voorziening_product,
gastheer,
contact,
r.res_rsv_ruimte_opmerking,
activiteit
FROM res_v_udr_reserveringincl u, res_rsv_ruimte r
WHERE u.key = r.res_rsv_ruimte_key;
--- HSLE#38543 maatwerk rapportage aantallen meldingen
CREATE OR REPLACE VIEW HSLE_V_MLD_MLDLIST
(
MELDINGNR,
DATUM,
STDMLDKEY,
MELDING,
VAKGROEP,
AANTAL
)
AS
SELECT m.mld_melding_key,
m.mld_melding_datum,
sm.mld_stdmelding_key,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
COUNT (m.mld_stdmelding_key) AS COUNT
FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key(+)
AND d.ins_discipline_key = sm.mld_ins_discipline_key
GROUP BY sm.mld_stdmelding_key,
m.mld_melding_key,
mld_melding_datum,
sm.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving
ORDER BY mld_stdmelding_key;
--- HSLE#38543 maatwerk rapportage aantallen meldingen
CREATE OR REPLACE VIEW HSLE_V_MLD_MLDLIST2
(
MELDINGNR,
DATUM,
STDMLDKEY,
MELDING,
VAKGROEP,
AANTAL
)
AS
SELECT v.meldingnr,
v.datum,
v.stdmldkey,
v.melding,
v.vakgroep,
SUM (aantal)
FROM hsle_v_mld_mldlist v
GROUP BY v.stdmldkey,
v.vakgroep,
v.melding,
v.datum,
v.meldingnr
ORDER BY v.stdmldkey;
--- HSLE#51829 maatwerk rapportage wijzigingen objectbeheer met tracking
CREATE OR REPLACE VIEW HSLE_V_RAP_INS_TRACKING
(
Discipline,
Deel_key,
Deel_omschrijving,
Deel_opmerking,
Srtdeel,
Srtdeel_omschrijving,
Tracking_key,
Tracking_datum,
Tracking_omschrijving,
Uitgegeven_Aan
)
AS
select
disc.ins_discipline_omschrijving as Discipline,
d.ins_deel_key as Deel_key,
d.ins_deel_omschrijving as Deel_omschrijving,
d.ins_deel_opmerking as Deel_opmerking,
sd.ins_srtdeel_code as Srtdeel,
sd.ins_srtdeel_omschrijving Srtdeel_omschrijving,
t.fac_tracking_key as Tracking_key,
t.fac_tracking_datum as Tracking_datum,
t.fac_tracking_oms as Tracking_omschrijving,
CASE
WHEN t.fac_tracking_oms LIKE '%uitgegeven aan Extern%'
THEN
'Extern'
ELSE
CASE WHEN t.fac_tracking_oms LIKE '%uitgegeven aan%'
then
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'uitgegeven aan') + 15,
INSTR (t.fac_tracking_oms, ')')
- INSTR (t.fac_tracking_oms, 'uitgegeven aan')
- 14)
else '' End
END AS Uitgegeven_Aan
from
ins_tab_discipline disc,
ins_deel d,
ins_srtdeel sd,
fac_tracking t,
fac_srtnotificatie n
where
t.fac_tracking_refkey = d.ins_deel_key
and n.fac_srtnotificatie_xmlnode = 'deel'
and t.fac_tracking_oms is not null
and t.fac_srtnotificatie_key = n.fac_srtnotificatie_key
and disc.ins_discipline_key = d.ins_discipline_key
and sd.ins_srtdeel_key = d.ins_srtdeel_key
order by sd.ins_srtdeel_omschrijving, ins_deel_key
;
CREATE OR REPLACE VIEW HSLE_V_BEZOEKERSAFSPRAAK
(
BEZ_AFSPRAAK_KEY,
BEZ_AFSPRAAK_DATUM,
BEZ_AFSPRAAK_EIND,
BEZ_RUIMTE,
BEZ_AFSPRAAK_OPMERKING,
BEZ_AFSPRAAK_GASTHEER,
BEZ_AFSPRAAK_TELEFOONNR,
OMSCHRIJVING
)
AS
SELECT
a.bez_afspraak_key,
a.bez_afspraak_datum,
a.bez_afspraak_eind,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
a.bez_afspraak_gastheer,
a.bez_afspraak_telefoonnr,
a.bez_afspraak_key || ' - ' || TO_CHAR(a.bez_afspraak_datum, 'YYYY-MM-DD') || ' ' || TO_CHAR(a.bez_afspraak_datum, 'HH24:MI') || '/' || TO_CHAR(a.bez_afspraak_eind, 'HH24:MI') || ' - ' || a.bez_afspraak_gastheer || ' - ' || a.bez_afspraak_ruimte as Omschrijving
FROM bez_afspraak a
WHERE TRUNC(a.bez_afspraak_datum) >= TRUNC(SYSDATE-31)
;
--- HSLE#40151 Rapportage doorlooptijden mld obv gewijzigde vakgroepen
--- Later toegevoegd: behandelgroep_oud en behandelgroep_nieuw
CREATE OR REPLACE VIEW hsle_v_rap_mldstat
(
track_datum,
srtnotificatie_code,
discipline_omschrijving,
stdmelding_omschrijving,
melding_key,
melding_datum,
tracking_omschrijving,
vakgroep_oud,
vakgroep_nieuw,
behandelgroep_oud,
behandelgroep_nieuw,
melder,
behandelaar,
melding_datum_afgemeld
)
AS
SELECT t.fac_tracking_datum,
DECODE (t.fac_srtnotificatie_key,
38, 'MLDAFM',
43, 'MLDNEW',
44, 'MLDREJ',
45, 'MLDUPD'),
d.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
m.mld_melding_datum,
t.fac_tracking_oms,
CASE
WHEN t.fac_tracking_oms LIKE '%Vakgroep:%'
THEN
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:') + 10,
INSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:') + 10,
100),
' --> '))
ELSE
''
END
AS vakgr_oud,
CASE
WHEN t.fac_tracking_oms LIKE '%Vakgroep:%'
THEN
SUBSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:') + 10,
999),
INSTR (
SUBSTR (t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:') + 10,
999),
' --> ')
+ 5,
INSTR (
SUBSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:') + 14
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Vakgroep:')
+ 10,
999),
' --> ')),
0),
CHR (10)))
ELSE
''
END
AS vakgr_nieuw,
CASE
WHEN (CASE
WHEN t.fac_tracking_oms LIKE '%Behandelgroep:%'
THEN
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Behandelgroep:') + 15,
INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 15,
100),
' --> '))
ELSE
''
END) = '(leeg) '
THEN
''
ELSE
CASE
WHEN t.fac_tracking_oms LIKE '%Behandelgroep:%'
THEN
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Behandelgroep:') + 15,
INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Behandelgroep:')
+ 15,
100),
' --> '))
ELSE
''
END
END
AS behandelgr_oud,
CASE
WHEN t.fac_tracking_oms LIKE '%Behandelgroep:%'
THEN
CASE
WHEN SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Behandelgroep:') + 19
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 15,
999),
' --> '),
999) = '(gewist)'
THEN
''
ELSE
SUBSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms, 'Behandelgroep:') + 19
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 15,
999),
' --> '),
999),
1,
(CASE
WHEN (INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 19
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 15,
999),
' --> '),
999),
CHR (10))) = 0
THEN
999
ELSE
INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 19
+ INSTR (
SUBSTR (
t.fac_tracking_oms,
INSTR (t.fac_tracking_oms,
'Behandelgroep:')
+ 15,
999),
' --> '),
999),
CHR (10))
END))
END
ELSE
''
END
AS grpnew,
(SELECT prs_perslid_naam
FROM prs_perslid p
WHERE p.prs_perslid_key = m.prs_perslid_key_voor)
AS melder,
(SELECT prs_perslid_naam
FROM prs_perslid p
WHERE p.prs_perslid_key = m.mld_melding_behandelaar_key)
AS behandelaar,
COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
fac.gettrackingdate ('MLDREJ', m.mld_melding_key))
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
fac_tracking t
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND TRUNC (m.mld_melding_datum) >=
TRUNC (TO_DATE ('2018-01-01', 'yyyy-mm-dd'))
AND t.fac_srtnotificatie_key IN (38, 43, 44, 45) -- MLDAFM, MLDNEW, MLDREJ, MLDUPD
AND m.mld_melding_key = t.fac_tracking_refkey
ORDER BY m.mld_melding_key, t.fac_tracking_datum DESC
;
------ 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