Files
Customer/IVET/ivet.sql
Sander Schepers 7f1c2b1d53 IVET#54995 - CUST04 in bon tbv emailnotificatie meldingensreserveringen
svn path=/Customer/trunk/; revision=39522
2018-10-25 10:46:18 +00:00

3855 lines
154 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific db-configuration for IVET.
DEFINE thisfile = 'IVET.SQL'
DEFINE dbuser = '^IVET'
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 ------
CREATE OR REPLACE VIEW ivet_v_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log l
WHERE l.fac_import_key = (SELECT MAX (fac_import_key)
FROM fac_import
WHERE fac_import_app_key = 21);
-- IVET#25262: Van SAP_ID naar WIN_ID!
/* Formatted on 30-1-2013 10:24:44 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE ivet_import_prs (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij IVET_UPDATE_PRS
v_newline VARCHAR2 (1000); -- Input line
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_ongeldig NUMBER (1);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_count NUMBER;
-- De importvelden:
v_sap_id VARCHAR2 (256);
v_pers_nr VARCHAR2 (256);
v_win_id VARCHAR2 (256);
v_prs_perslid_titel VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_afdeling_omschrijving VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_kantoor VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_oslogin VARCHAR2 (256);
v_prs_perslid_ingangsdatum VARCHAR2 (256);
v_prs_perslid_einddatum VARCHAR2 (256);
v_postadres VARCHAR2 (256);
-- Overig:
v_alg_gebouw_code VARCHAR2 (256);
v_alg_verdieping_code VARCHAR2 (256);
v_alg_ruimte_nr VARCHAR2 (256);
v_prs_perslid_ingangs_date DATE;
v_prs_perslid_eind_date DATE;
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM ivet_imp_prs;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline, c_fielddelimitor, v_sap_id);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_pers_nr);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_win_id);
-- 04
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_titel);
-- 05
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 06
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel);
-- 07
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voornaam);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 10
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_afdeling_omschrijving);
-- 11
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_kantoor);
-- 13
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr);
-- 14
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 15
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_oslogin);
-- 16
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum);
-- 17
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_einddatum);
-- 18
fac.imp_getfield (v_newline, c_fielddelimitor, v_postadres);
--
v_aanduiding :=
'['
|| v_sap_id
|| '|'
|| v_prs_perslid_naam
|| '|'
|| v_prs_perslid_tussenvoegsel
|| '|'
|| v_prs_perslid_voornaam
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_sap_id) = 'SAP-ID'
AND UPPER (v_pers_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_win_id) = 'WIN-ID'
AND UPPER (v_prs_perslid_titel) = 'TITEL'
AND UPPER (v_prs_perslid_naam) = 'NAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_afdeling_omschrijving) =
'AFDELINGSOMSCHRIJVING'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_kantoor) = 'KANTOOR'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
AND UPPER (v_prs_perslid_ingangsdatum) = 'INDIENSTDATUM'
AND UPPER (v_prs_perslid_einddatum) = 'UITDIENSTDATUM'
--AND UPPER (v_prs_perslid_einddatum) = 'POSTADRES'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldige SAP-ID';
v_sap_id := TRIM (v_sap_id);
IF v_sap_id IS NULL OR LENGTH (v_sap_id) > 16
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'SAP-ID onbekend/te lang',
'SAP-ID is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig personeelsnummer';
v_pers_nr := TRIM (v_pers_nr);
IF LENGTH (v_pers_nr) > 50
THEN
v_pers_nr := SUBSTR (v_pers_nr, 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Personeelsnummer te lang',
'Personeelsnummer wordt afgebroken tot ['
|| v_pers_nr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige WIN-ID';
v_win_id := TRIM (v_win_id);
IF v_win_id IS NULL OR LENGTH (v_win_id) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'WIN-ID onbekend/te lang',
'WIN-ID is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige titel';
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
IF LENGTH (v_prs_perslid_titel) > 15
THEN
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Titel te lang',
'Titel wordt afgebroken tot ['
|| v_prs_perslid_titel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige naam';
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
IF LENGTH (v_prs_perslid_naam) > 30
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Naam te lang',
'Naam wordt afgebroken tot [' || v_prs_perslid_naam || ']'
);
COMMIT;
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Naam onbekend',
'Naam is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldig tussenvoegsel';
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
THEN
v_prs_perslid_tussenvoegsel :=
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Tussenvoegsel te lang',
'Tussenvoegsel wordt afgebroken tot ['
|| v_prs_perslid_tussenvoegsel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voorletters';
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
IF LENGTH (v_prs_perslid_voorletters) > 10
THEN
v_prs_perslid_voorletters :=
SUBSTR (v_prs_perslid_voorletters, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Voorletters te lang',
'Voorletters worden afgebroken tot ['
|| v_prs_perslid_voorletters
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voornaam';
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
IF LENGTH (v_prs_perslid_voornaam) > 30
THEN
v_prs_perslid_voornaam :=
SUBSTR (v_prs_perslid_voornaam, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Voornaam is te lang',
'Voornaam wordt afgebroken tot ['
|| v_prs_perslid_voornaam
|| ']'
);
COMMIT;
ELSE
IF (v_prs_perslid_voornaam IS NULL)
THEN
v_prs_perslid_voornaam := '-';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam onbekend',
'Voornaam wordt gezet op [-]');
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige afdelingscode';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 10
THEN
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Afdelingscode te lang',
'Afdelingscode wordt afgebroken tot ['
|| v_prs_afdeling_naam
|| ']'
);
COMMIT;
ELSE
IF (v_prs_afdeling_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Afdelingscode onbekend',
'Afdelingscode is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige afdelingsomschrijving';
v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
IF LENGTH (v_prs_afdeling_omschrijving) > 60
THEN
v_prs_afdeling_omschrijving :=
SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Afdelingsomschrijving te lang',
'Afdelingsomschrijving wordt afgebroken tot ['
|| v_prs_afdeling_omschrijving
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving :=
TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
COMMIT;
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
-- LET OP: Kantoor wordt uitgesplitst naar gebouw, verdieping en ruimte!
v_errorhint := 'Ongeldige locatieomschrijving';
v_kantoor := TRIM (v_kantoor);
-- Neem tekens voor de - (streep) en vervang v_kantoor door tekens na de streep.
v_errorhint := 'Ongeldige gebouwcode';
v_alg_gebouw_code :=
SUBSTR (v_kantoor, 1, INSTR (v_kantoor,
'-',
1,
1)
- 1);
v_kantoor :=
SUBSTR (v_kantoor, INSTR (v_kantoor,
'-',
1,
1)
+ 1);
IF LENGTH (v_alg_gebouw_code) > 10
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Gebouwcode te lang',
'Aanduiding wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
COMMIT;
END IF;
-- Neem tekens voor de . (punt) en vervang v_kantoor door tekens na de punt.
v_errorhint := 'Ongeldige verdiepingcode';
v_alg_verdieping_code :=
SUBSTR (v_kantoor, 1, INSTR (v_kantoor,
'.',
1,
1)
- 1);
v_kantoor :=
SUBSTR (v_kantoor, INSTR (v_kantoor,
'.',
1,
1)
+ 1);
IF LENGTH (v_alg_verdieping_code) > 10
THEN
v_alg_verdieping_code := SUBSTR (v_alg_verdieping_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Verdiepingcode te lang',
'Aanduiding wordt afgebroken tot ['
|| v_alg_verdieping_code
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig ruimtenummer';
v_alg_ruimte_nr := v_kantoor; -- v_kantoor bevat nu het gedeelte na de punt.
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Ruimtenummer te lang',
'Aanduiding wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 50
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Loginnaam te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_perslid_oslogin
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige datum in dienst';
v_prs_perslid_ingangsdatum := TRIM (v_prs_perslid_ingangsdatum);
IF v_prs_perslid_ingangsdatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_ingangs_date :=
TO_DATE (v_prs_perslid_ingangsdatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
COMMIT;
END;
ELSE
v_prs_perslid_ingangs_date := NULL;
END IF;
--
v_errorhint := 'Ongeldige datum uit dienst';
v_prs_perslid_einddatum := TRIM (v_prs_perslid_einddatum);
IF v_prs_perslid_einddatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_eind_date :=
TO_DATE (v_prs_perslid_einddatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
COMMIT;
END;
ELSE
v_prs_perslid_eind_date := NULL;
END IF;
--
v_errorhint := 'Ongeldig postadres';
v_postadres := TRIM (v_postadres);
IF LENGTH (v_postadres) > 30
THEN
v_postadres := SUBSTR (v_postadres, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Postadres te lang',
'Postadres wordt afgebroken tot [' || v_postadres || ']'
);
COMMIT;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel IVET_IMP_PRS';
INSERT INTO ivet_imp_prs (imp_datum,
sap_id,
pers_nr,
win_id,
prs_perslid_titel,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_srtperslid_omschrijving,
alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
postadres)
VALUES (SYSDATE,
v_sap_id,
v_pers_nr,
v_win_id,
v_prs_perslid_titel,
v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam,
v_prs_afdeling_naam,
v_prs_afdeling_omschrijving,
v_prs_srtperslid_omschrijving,
v_alg_gebouw_code,
v_alg_verdieping_code,
v_alg_ruimte_nr,
v_prs_perslid_telefoonnr,
v_prs_perslid_email,
v_prs_perslid_oslogin,
v_prs_perslid_ingangs_date,
v_prs_perslid_eind_date,
v_postadres);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Persoon: aantal ongeldige importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
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.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END ivet_import_prs;
/
-- IVET#25262: Van SAP_ID naar WIN_ID!
/* Formatted on 12-9-2013 10:20:02 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE ivet_update_prs (p_import_key IN NUMBER)
IS
-- LET OP: moet idem zijn als declaratie bij IVET_IMPORT_PRS
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
c_max_delta_percentage NUMBER (10) := 20;
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
c_gebouw_code VARCHAR2 (10) := 'PP001';
c_ruimte_nr VARCHAR2 (10) := '000';
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
c_profiel_omschrijving VARCHAR2 (30) := 'DEFAULT';
c_postadres_kkey NUMBER (10) := 1000;
c_win_id_kkey NUMBER (10) := 1020;
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
--
v_srtperslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_perslid_key NUMBER (10);
v_kenmerklink_key NUMBER (10);
v_district_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_gebouw_code VARCHAR2 (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_nr VARCHAR2 (10);
v_wp_volgnr NUMBER (3);
v_wp_oms VARCHAR2 (30);
v_wp_key NUMBER (10);
v_groep_key NUMBER (10);
v_profiel_key NUMBER (10);
-- Let op! Personen die niet meer in dienst zijn -> niet in ivet_imp_prs!
-- Dubbele WIN-IDs? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND NOT EXISTS
(SELECT 1
FROM ivet_imp_prs ip
WHERE UPPER (ip.win_id) =
UPPER (kl.prs_kenmerklink_waarde));
-- Let op! Personen die niet meer in dienst zijn -> niet in ivet_imp_prs!
CURSOR csrtperslid
IS
SELECT MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM ivet_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
-- Let op! Personen die niet meer in dienst zijn -> niet in ivet_imp_prs!
-- Dubbele WIN-IDs? Dan wordt slechts 1 set persoongegevens toegevoegd!
-- Ook wordt in deze loop de afdelingsomschrijving eventueel bijgewerkt!
CURSOR cperslid
IS
SELECT * FROM ivet_imp_prs;
-- Let op! Personen die niet meer in dienst zijn -> niet in ivet_imp_prs!
-- Dubbele WIN-IDs? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*,
ip.win_id,
ip.alg_gebouw_code,
ip.alg_verdieping_code,
ip.alg_verdieping_code || '.' || ip.alg_ruimte_nr
alg_ruimte_nr
FROM ivet_imp_prs ip,
prs_v_aanwezigkenmerklink kl,
prs_v_aanwezigperslid p
WHERE UPPER (ip.win_id) = UPPER (kl.prs_kenmerklink_waarde)
AND kl.prs_kenmerk_key = c_win_id_kkey
AND kl.prs_link_key = p.prs_perslid_key;
-- Alle actieve personen met WIN-ID (ie. de import-doelgroep) zonder een werkplek
CURSOR cnowp
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key);
-- Alle aanwezige personen met WIN-ID (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
-- Bepaal WIN-ID-match tussen Facilitor en RECENT importbestand ofwel het aantal
-- actieve personen na import.
-- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
-- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
-- worden gerapporteerd (nl. op basis van een oud importbestand in IVET_IMP_PRS).
SELECT COUNT ( * )
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p,
prs_v_aanwezigkenmerklink kl,
ivet_imp_prs ip
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND UPPER (kl.prs_kenmerklink_waarde) = UPPER (ip.win_id)
AND (ip.imp_datum + 0.01) > SYSDATE;
-- Bepaal huidig aantal actieve personen met WIN_ID in Facilitor.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey;
IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage)))
THEN
-- Geldig importbestand wat betreft aantal personen
v_errorhint := 'Fout bij bepalen profiel';
SELECT MAX (fac_profiel_key), COUNT ( * )
INTO v_profiel_key, v_count
FROM fac_profiel
WHERE UPPER (TRIM (fac_profiel_omschrijving)) =
c_profiel_omschrijving;
IF (v_count = 0)
THEN
fac.imp_writelog (
p_import_key,
'I',
'Standaard profiel ['
|| c_profiel_omschrijving
|| '] niet gevonden.',
'Personen zonder profiel kunnen niet worden gekoppeld aan een profiel.'
);
COMMIT;
END IF;
FOR recdelprs IN cdelprs
LOOP
BEGIN
v_aanduiding :=
recdelprs.prs_perslid_nr
|| '|'
|| recdelprs.prs_perslid_naam
|| '|'
|| recdelprs.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen verplichtingen';
-- Heeft persoon actuele/toekomstige verplichtingen?
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p, prs_v_verplichting_keys r
WHERE p.prs_perslid_key = r.prs_perslid_key
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij verwijderen persoon';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met SAP-ID ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd'
);
COMMIT;
ELSE
-- Staat persoon INACTIEF?
v_errorhint := 'Fout bij bepalen INACTIEF';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij INACTIEF maken persoon';
-- Persoon INACTIEF maken (update naam + reset oslogin)
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR (c_persoon_inactief || prs_perslid_naam,
1,
30),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met SAP-ID ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gemaakt',
'Persoon is INACTIEF gemaakt'
);
ELSE
v_errorhint := 'Fout bij INACTIEF houden persoon';
-- Persoon INACTIEF houden (reset oslogin; indien handmatig INACTIEF gemaakt)
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND prs_perslid_oslogin IS NOT NULL;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met SAP-ID ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF',
'Persoon is INACTIEF'
);
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
v_count_tot := 0;
v_count_error := 0;
FOR recsrtperslid IN csrtperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding := recsrtperslid.prs_srtperslid_omschrijving || ' - ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsrtperslid.prs_srtperslid_omschrijving);
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recsrtperslid.prs_srtperslid_omschrijving);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| 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',
'Functie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Functie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recperslid IN cperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recperslid.sap_id
|| '|'
|| recperslid.prs_perslid_naam
|| '|'
|| recperslid.prs_perslid_voornaam
|| ' - ';
v_errorhint :=
'Fout bij bepalen functie ['
|| recperslid.prs_srtperslid_omschrijving
|| ']';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Fout bij bepalen afdeling ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_upper =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint :=
'Fout bij wijzigen afdelingsomschrijving ['
|| recperslid.prs_afdeling_naam
|| '|'
|| recperslid.prs_afdeling_omschrijving
|| ']';
UPDATE prs_afdeling
SET prs_afdeling_omschrijving =
COALESCE (recperslid.prs_afdeling_omschrijving,
prs_afdeling_omschrijving)
WHERE prs_afdeling_key = v_afdeling_key;
COMMIT;
v_errorhint :=
'Fout bij bepalen kostenplaats ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper =
UPPER (recperslid.prs_afdeling_naam);
IF v_count = 1
THEN
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint :=
'Fout bij wijzigen kostenplaatsomschrijving ['
|| recperslid.prs_afdeling_naam
|| '|'
|| recperslid.prs_afdeling_omschrijving
|| ']';
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving =
COALESCE (recperslid.prs_afdeling_omschrijving,
prs_kostenplaats_omschrijving)
WHERE prs_kostenplaats_key = v_kostenplaats_key;
COMMIT;
ELSE
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kostenplaats volgens afdeling bestaat niet!'
);
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen persoon';
SELECT COUNT ( * ), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND UPPER (kl.prs_kenmerklink_waarde) =
UPPER (recperslid.win_id);
IF v_count > 1
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errorhint,
'Kan persoon niet 1-duidig bepalen!');
COMMIT;
ELSE
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_nr,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
fac_profiel_key
)
VALUES (
'PRS',
v_srtperslid_key,
v_afdeling_key,
recperslid.sap_id,
recperslid.prs_perslid_naam,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_titel,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_email,
recperslid.prs_perslid_oslogin,
COALESCE (
recperslid.prs_perslid_ingangsdatum,
SYSDATE
),
recperslid.prs_perslid_einddatum,
v_profiel_key
)
RETURNING prs_perslid_key INTO v_perslid_key;
v_errorhint := 'Fout bij toevoegen WIN-ID';
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerk_key,
prs_kenmerklink_waarde)
VALUES (v_perslid_key,
'P',
c_win_id_kkey,
recperslid.win_id);
COMMIT;
ELSE
v_errorhint := 'Fout bij wijzigen persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = recperslid.prs_perslid_naam,
prs_perslid_tussenvoegsel =
recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voorletters =
recperslid.prs_perslid_voorletters,
prs_perslid_voornaam =
recperslid.prs_perslid_voornaam,
prs_perslid_titel = recperslid.prs_perslid_titel,
prs_perslid_telefoonnr =
recperslid.prs_perslid_telefoonnr,
prs_perslid_email = recperslid.prs_perslid_email,
prs_perslid_oslogin =
recperslid.prs_perslid_oslogin,
prs_perslid_ingangsdatum =
COALESCE (recperslid.prs_perslid_ingangsdatum,
prs_perslid_ingangsdatum),
prs_perslid_einddatum =
recperslid.prs_perslid_einddatum,
fac_profiel_key =
COALESCE (fac_profiel_key, v_profiel_key)
WHERE prs_perslid_key = v_perslid_key;
END IF;
COMMIT;
IF LENGTH (recperslid.postadres) > 0
THEN
v_errorhint := 'Fout bij bepalen postadres';
SELECT COUNT ( * ), MAX (prs_kenmerklink_key)
INTO v_count, v_kenmerklink_key
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = v_perslid_key
AND prs_kenmerklink_niveau = 'P'
AND prs_kenmerk_key = c_postadres_kkey;
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen postadres';
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerk_key,
prs_kenmerklink_waarde)
VALUES (v_perslid_key,
'P',
c_postadres_kkey,
recperslid.postadres);
ELSE -- v_count = 1
v_errorhint := 'Fout bij wijzigen postadres';
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = recperslid.postadres
WHERE prs_kenmerklink_key = v_kenmerklink_key;
END IF;
COMMIT;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| 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),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recwp IN cwp
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recwp.prs_perslid_nr
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_gebouw_code
|| '|'
|| recwp.alg_verdieping_code
|| '|'
|| recwp.alg_ruimte_nr
|| ' - ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid p, prs_v_aanwezigkenmerklink kl
WHERE p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = c_win_id_kkey
AND UPPER (kl.prs_kenmerklink_waarde) =
UPPER (recwp.win_id);
v_district_key := NULL;
v_gebouw_key := NULL;
v_gebouw_code := recwp.alg_gebouw_code;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_ruimte_nr := recwp.alg_ruimte_nr;
v_errorhint := 'Fout bij bepalen gebouw';
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (v_gebouw_code);
IF v_count = 1
THEN
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_upper = UPPER (v_gebouw_code);
ELSE -- Gebouw bestaat niet (of >1 keer)!
v_gebouw_code := c_gebouw_code;
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kan gebouw niet (1-duidig) bepalen!');
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen district';
SELECT l.alg_district_key
INTO v_district_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_gebouw_upper = UPPER (v_gebouw_code)
AND g.alg_locatie_key = l.alg_locatie_key;
v_errorhint := 'Fout bij bepalen verdieping';
IF v_gebouw_key IS NOT NULL
THEN
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND UPPER (alg_verdieping_code) =
UPPER (recwp.alg_verdieping_code);
IF v_count = 0
THEN
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Verdieping bestaat niet!');
COMMIT;
ELSE -- Verdieping bestaat!
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND UPPER (alg_verdieping_code) =
UPPER (recwp.alg_verdieping_code);
END IF;
END IF;
v_errorhint := 'Fout bij bepalen ruimte';
IF v_verdieping_key IS NOT NULL
THEN
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr);
IF v_count = 0
THEN
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Ruimte bestaat niet!');
COMMIT;
ELSE -- Ruimte bestaat!
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_upper_nr =
UPPER (recwp.alg_ruimte_nr);
END IF;
END IF;
-- Als hierboven de ruimte uit de import niet is gevonden, dan
-- koppel de persoon aan ruimte '000' op default verdieping in
-- gebouw uit de import (of anders 'PP001')!
v_errorhint :=
'Fout bij bepalen default verdieping in gebouw '
|| v_gebouw_code;
IF v_verdieping_key IS NULL
THEN
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanweziggebouw g, alg_v_aanwezigverdieping v
WHERE g.alg_gebouw_upper = UPPER (v_gebouw_code)
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_volgnr =
(SELECT MIN (alg_verdieping_volgnr)
FROM alg_verdieping
WHERE alg_gebouw_key = g.alg_gebouw_key);
END IF;
v_errorhint :=
'Fout bij bepalen fictieve ruimte in gebouw ' || v_gebouw_code;
IF v_ruimte_key IS NULL
THEN
v_ruimte_nr := c_ruimte_nr;
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_upper_nr = c_ruimte_nr;
IF v_count = 0
THEN
v_errorhint :=
'Fout bij toevoegen fictieve ruimte in gebouw '
|| v_gebouw_code;
INSERT INTO alg_ruimte (
alg_verdieping_key,
alg_srtruimte_key,
alg_ruimte_nr
)
VALUES (v_verdieping_key, 1241, -- Fictieve ruimte
c_ruimte_nr)
RETURNING alg_ruimte_key INTO v_ruimte_key;
COMMIT;
ELSE
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r
WHERE r.alg_verdieping_key = v_verdieping_key
AND r.alg_ruimte_upper_nr = c_ruimte_nr;
END IF;
END IF;
v_errorhint := 'Fout bij bepalen of werkplek is gewijzigd';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslidwerkplek pw, prs_werkplek w
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = v_ruimte_key;
IF (v_count = 0)
THEN
-- Verwijderen oude -niet virtuele!- werkplek(ken) in hetzelfde
-- district!
-- 12-03-10/MvdH: NIET verwijderen bij bezetting < 5, afgestemd
-- dat dat -tijdelijk- speciale gevallen zijn (tbv. autorisatie;
-- hoezo obscuur...)!
v_errorhint := 'Fout bij verwijderen oude werkplek in district';
IF (fac.getSetting ('prs_werkplek_implicit') = '0') --Expliciet
THEN
DELETE FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_perslidwerkplek_bezetting > 5
AND EXISTS
(SELECT 1
FROM prs_werkplek w,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE w.prs_werkplek_virtueel = 0
AND w.prs_werkplek_key = pw.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND 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 = v_district_key);
ELSE -- Impliciet
DELETE FROM prs_werkplek w
WHERE w.prs_werkplek_virtueel = 0
AND EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE pw.prs_perslid_key =
v_perslid_key
AND pw.prs_perslidwerkplek_bezetting > 5
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND 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 = v_district_key);
END IF;
COMMIT;
-- Persoon krijgt wp op fictieve of echte ruimte.
PRS.movetoruimte (v_perslid_key, v_ruimte_key, NULL);
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| 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',
'Werkplek: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Werkplek: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
FOR recnowp IN cnowp
LOOP
BEGIN
fac.imp_writelog (
p_import_key,
'I',
'Persoon met SAP-ID ['
|| recnowp.prs_perslid_nr
|| '] en naam ['
|| recnowp.prs_perslid_naam
|| ', '
|| recnowp.prs_perslid_voornaam
|| '] heeft geen werkplek',
'Geen werkplek'
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_nr
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE fac_groep_upper = c_groep_upper;
v_errorhint :=
'Fout bij koppelen persoon aan groep ['
|| c_groep_upper
|| ']';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (v_groep_key, recnogroup.prs_perslid_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
UPDATE prs_srtperslid sp
SET sp.prs_srtperslid_verwijder = SYSDATE
WHERE sp.prs_srtperslid_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslid p
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key);
COMMIT;
ELSE
IF (v_count_prs_import = 0)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
''
);
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%] <br> '
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| '] <br> '
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']'
);
END IF;
COMMIT;
END IF;
COMMIT;
END ivet_update_prs;
/
/* Formatted on 29-4-2016 11:18:05 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW ivet_v_rap_zalenzetters
(
hide_f_sort_datum_tijd_ruimte,
hide_f_sort_res_nr,
hide_f_sort_categorie,
fclt_f_datum,
res_nr,
begin_eind,
tijd,
tijd_vc,
ruimte,
deelnemers,
activiteit_voorzieningen,
budgetnummer,
opmerking
)
AS
SELECT DECODE (
rrr.alg_ruimte_key,
NULL,
(SELECT DECODE (SUBSTR (rr.res_ruimte_nr, -1), '*', '99')
|| TO_CHAR (res_geg.res_reservering_van, 'YYYYMMDD HH24:MI')
|| rr.res_ruimte_nr
FROM res_ruimte_opstelling rro, res_ruimte rr
WHERE rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key),
(SELECT TO_CHAR (res_geg.res_reservering_van, 'YYYYMMDD HH24:MI')
|| rg.alg_ruimte_aanduiding
FROM alg_v_ruimte_gegevens rg
WHERE rg.alg_ruimte_key = rrr.alg_ruimte_key))
sort_ruimte,
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
sort_resnr,
res_geg.res_type sort_categorie,
TO_CHAR (res_geg.res_reservering_van, 'DD-MM-YYYY') datum,
(CASE
WHEN res_geg.res_type = '1R' OR res_geg.wissel = 1
THEN
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
ELSE
''
END)
resnr,
(CASE
WHEN res_geg.res_type = '1R'
AND res_geg.res_reservering_tot IS NOT NULL
THEN
'Begin'
ELSE
DECODE (res_geg.res_reservering_tot,
NULL, 'Eind',
DECODE (res_geg.wissel, 1, 'Wissel', ''))
END)
begin_eind,
(CASE
WHEN res_geg.res_type = '1R' OR res_geg.wissel = 1
THEN
TO_CHAR (res_geg.res_reservering_van, 'HH24:MI')
ELSE
''
END)
van,
DECODE (
res_geg.res_activiteit_key,
21, TO_CHAR (res_geg.res_reservering_van + (1 / 96), 'HH24:MI'),
NULL)
van_vc,
(CASE
WHEN res_geg.res_type = '1R' OR res_geg.wissel = 1
THEN
DECODE (
rrr.alg_ruimte_key,
NULL,
(SELECT rr.res_ruimte_nr
FROM res_ruimte_opstelling rro, res_ruimte rr
WHERE rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key),
(SELECT rg.alg_ruimte_aanduiding
FROM alg_v_ruimte_gegevens rg
WHERE rg.alg_ruimte_key = rrr.alg_ruimte_key))
ELSE
''
END)
ruimte,
TO_CHAR (res_geg.deelnemers) deelnemers,
(CASE
WHEN res_geg.res_type = '2V'
THEN
res_geg.res_voorziening
WHEN res_geg.res_type = '3C'
THEN
TO_CHAR (res_geg.aantal) || ' x ' || res_geg.res_voorziening
ELSE
DECODE (res_geg.res_next_van,
NULL, res_geg.res_voorziening,
TO_CHAR (res_geg.res_next_van, 'HH24:MI'))
END)
voorzieningen,
DECODE (res_geg.res_type, '1R', res_geg.res_kostenplaats_nr, NULL)
budgetnummer,
DECODE (res_geg.res_type, '1R', res_geg.res_reservering_opm, NULL)
opmerking
FROM (SELECT '1R' res_type, -- begin/wissel-ruimten met v, c of vc!
rrr.res_rsv_ruimte_key,
rrr.res_activiteit_key,
rrr.res_rsv_ruimte_bezoekers deelnemers,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
rrr.res_rsv_ruimte_opmerking res_reservering_opm,
TO_NUMBER (NULL) aantal,
ra.res_activiteit_omschrijving res_voorziening,
NULL artikelnummer,
kp.prs_kostenplaats_nr res_kostenplaats_nr,
NULL res_next_van,
0 wissel,
DECODE (
rrr.res_activiteit_key,
21, 1, -- videoconference (vc)
(SELECT COUNT ( * )
FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_artikel rra
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
OR rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key))
service
FROM res_v_aanwezigrsv_ruimte rrr, res_activiteit ra, prs_kostenplaats kp
WHERE rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND ra.res_activiteit_key NOT IN (101, 161, 281, 301, 321) -- Uitleen, Lunchvoucher, Brandmeldcentrale, Pas sessie, Passen orth. schoenen
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
UNION ALL -- eind-ruimten (reserveerbaar)!
SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
NULL res_activiteit_key,
NULL deelnemers,
rrr.res_rsv_ruimte_tot res_reservering_van,
NULL res_reservering_tot,
NULL res_reservering_opm,
TO_NUMBER (NULL) aantal,
NULL res_voorziening,
NULL artikelnummer,
NULL res_kostenplaats_nr,
(SELECT MIN (x.res_rsv_ruimte_van)
FROM res_v_aanwezigrsv_ruimte x, res_ruimte_opstelling y
WHERE x.res_ruimte_opstel_key = y.res_ruimte_opstel_key
AND y.res_ruimte_key = rr.res_ruimte_key
AND TRUNC (x.res_rsv_ruimte_van) = TRUNC (rrr.res_rsv_ruimte_tot)
AND x.res_rsv_ruimte_van > rrr.res_rsv_ruimte_tot)
res_next_van,
0 wissel,
1 service
FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling rro, res_ruimte rr
WHERE rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
UNION ALL -- eind-ruimten (meerdaags los=met v)!
SELECT '1R' res_type,
rrr.res_rsv_ruimte_key,
rrr.res_activiteit_key,
rrr.res_rsv_ruimte_bezoekers deelnemers,
rrr.res_rsv_ruimte_tot res_reservering_van,
NULL res_reservering_tot,
rrr.res_rsv_ruimte_opmerking res_reservering_opm,
TO_NUMBER (NULL) aantal,
ra.res_activiteit_omschrijving res_voorziening,
NULL artikelnummer,
kp.prs_kostenplaats_nr res_kostenplaats_nr,
NULL res_next_van,
0 wissel,
1 service
FROM res_v_aanwezigrsv_ruimte rrr,
res_activiteit ra,
prs_kostenplaats kp
WHERE rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND ra.res_activiteit_key NOT IN (281, 101, 301, 321) -- Brandmeldcentrale, Uitellenauto, Pas sessie, Passen orth schoenen
AND TRUNC (rrr.res_rsv_ruimte_van) != TRUNC (rrr.res_rsv_ruimte_tot)
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
UNION ALL -- begin/wissel-voorzieningen (bij ruimte en los)!
SELECT '2V' res_type,
rrr.res_rsv_ruimte_key,
NULL res_activiteit_key,
NULL deelnemers,
rrd.res_rsv_deel_van res_reservering_van,
rrd.res_rsv_deel_tot res_reservering_tot,
NULL res_reservering_opm,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal, -- duur in uren
LTRIM (id.ins_deel_omschrijving) || DECODE (rd.res_deel_eenheid, NULL, '', ' (' || rd.res_deel_eenheid || ')')
res_voorziening,
NULL artikelnummer,
NULL res_kostenplaats_nr,
NULL res_next_van,
DECODE (rrd.res_rsv_deel_van, rrr.res_rsv_ruimte_van, 0, 1)
wissel,
1 service
FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_ruimte rrr, res_deel rd, ins_deel id
WHERE rrd.res_rsv_deel_dirtlevel = 0
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key NOT IN (741, 2121, 2162, 2221) -- Bestelauto, Brandmeldcentrale, Pasbus, Orthopedie
AND rd.res_ins_deel_key = id.ins_deel_key
AND rrd.res_rsv_deel_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
UNION ALL -- eind-voorzieningen (meerdaags los=met v)!
SELECT '2V' res_type,
rrr.res_rsv_ruimte_key,
NULL res_activiteit_key,
NULL deelnemers,
rrd.res_rsv_deel_tot res_reservering_van,
rrd.res_rsv_deel_tot res_reservering_tot,
NULL res_reservering_opm,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal, -- duur in uren
LTRIM (id.ins_deel_omschrijving) || DECODE (rd.res_deel_eenheid, NULL, '', ' (' || rd.res_deel_eenheid || ')')
res_voorziening,
NULL artikelnummer,
NULL res_kostenplaats_nr,
NULL res_next_van,
0 wissel,
1 service
FROM res_v_aanwezigrsv_deel rrd, res_v_aanwezigrsv_ruimte rrr, res_deel rd, ins_deel id
WHERE rrd.res_rsv_deel_dirtlevel = 0
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = id.ins_deel_key
AND rd.res_discipline_key NOT IN (2121, 741, 2162, 2221) -- Branmdeldcentrale, Bestelauto, Pasbus, Orthopedie
AND TRUNC (rrd.res_rsv_deel_van) != TRUNC (rrd.res_rsv_deel_tot)
AND rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
UNION ALL -- koppelruimten wand plaatsen
SELECT '2V' res_type,
rrr.res_rsv_ruimte_key,
NULL,
rrr.res_rsv_ruimte_bezoekers deelnemers,
rrr.res_rsv_ruimte_van res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
rrr.res_rsv_ruimte_opmerking res_reservering_opm,
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24
aantal,
wand.voorziening voorziening,
NULL artikelnummer,
NULL res_kostenplaats_nr,
NULL res_next_van,
1 wissel,
1 service
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
(SELECT res_rsv_ruimte_key, voorziening
FROM ( SELECT rro2.res_ruimte_key org,
LAG (rro2.res_ruimte_key)
OVER (ORDER BY rrr2.res_rsv_ruimte_van)
prev,
res_rsv_ruimte_key,
'Wand ' || rr2.res_ruimte_nr
|| DECODE (rro2.res_ruimte_key,
341, ' Verwijderen',
' Plaatsen')
voorziening
FROM res_v_aanwezigrsv_ruimte rrr2,
res_ruimte_opstelling rro2,
res_ruimte rr2
WHERE rro2.res_ruimte_opstel_key = rrr2.res_ruimte_opstel_key
AND rr2.res_ruimte_key = rro2.res_ruimte_key
AND rro2.res_ruimte_key IN (282, 283, 341)
ORDER BY rrr2.res_rsv_ruimte_van)
WHERE ( (org = 341 AND prev IN (282, 283))
OR (org IN (282, 283) AND prev = 341)
OR (prev IS NULL))
UNION
SELECT res_rsv_ruimte_key, voorziening
FROM ( SELECT rro2.res_ruimte_key org,
LAG (rro2.res_ruimte_key)
OVER (ORDER BY rrr2.res_rsv_ruimte_van)
prev,
res_rsv_ruimte_key,
'Wand ' || rr2.res_ruimte_nr
|| DECODE (rro2.res_ruimte_key,
581, ' Verwijderen',
' Plaatsen')
voorziening
FROM res_v_aanwezigrsv_ruimte rrr2,
res_ruimte_opstelling rro2,
res_ruimte rr2
WHERE rro2.res_ruimte_opstel_key = rrr2.res_ruimte_opstel_key
AND rr2.res_ruimte_key = rro2.res_ruimte_key
AND rro2.res_ruimte_key IN (562, 563, 581)
ORDER BY rrr2.res_rsv_ruimte_van)
WHERE ( (org = 581 AND prev IN (562, 563))
OR (org IN (562, 563) AND prev = 581)
OR (prev IS NULL))) wand
WHERE rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5)
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rrr.res_rsv_ruimte_key = wand.res_rsv_ruimte_key
UNION ALL -- begin/wissel-catering (bij ruimte en los)!
SELECT '3C' res_type,
rrr.res_rsv_ruimte_key,
NULL res_activiteit_key,
NULL deelnemers,
rra.res_rsv_artikel_levering res_reservering_van,
rrr.res_rsv_ruimte_tot res_reservering_tot,
NULL res_reservering_opm,
rra.res_rsv_artikel_aantal aantal,
LTRIM (ra.res_artikel_omschrijving) || DECODE (ra.res_artikel_eenheid, NULL, '', ' (' || ra.res_artikel_eenheid || ')')
res_voorziening,
ra.res_artikel_nr artikelnummer,
NULL res_kostenplaats_nr,
NULL res_next_van,
DECODE (rra.res_rsv_artikel_levering, rrr.res_rsv_ruimte_van, 0, 1)
wissel,
1 service
FROM res_v_aanwezigrsv_artikel rra, res_v_aanwezigrsv_ruimte rrr, res_artikel ra
WHERE rra.res_rsv_artikel_dirtlevel = 0
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key NOT IN (1781) -- Lunchvoucher
AND rra.res_rsv_artikel_levering BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 5))
res_geg,
res_v_aanwezigrsv_ruimte rrr
WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND (res_reservering_opm IS NOT NULL OR res_geg.service > 0)
ORDER BY 1, 2, 3;
-- Bevat CUST01/02-reminders naar resp. medewerkers in autorisatiegroep 'BO
-- autorisatie (Security)' met key=2462 en medewerkers die 9 maanden geleden
-- om toegang hebben verzocht (dus binnenkort deze toegang verloopt).
-- CUST01: dagelijks ('s ochtends) mbt. de voorgaande dag aangemaakte nieuwe
-- verzoeken!
-- CUST02: dagelijks mbt. 9 maanden (~275d) geleden ingediende verzoeken!
/* Formatted on 3-4-2013 10:36:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_noti_aut_toegang
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey
)
AS
SELECT DISTINCT
sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE TRUNC (m.mld_melding_datum + 1) = TRUNC (SYSDATE)
--AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
--AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
-- TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 1421 -- Aut. toegang afdeling
--AND m.mld_workflowstep_key IS NOT NULL -- WF-melding?
AND m.mld_melding_key = mld_melding_start_key -- WF-startmelding?
AND sn.fac_srtnotificatie_code = 'CUST01'
AND gg.fac_groep_key = 2462 -- BO autorisatie (Security)
UNION ALL
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
m.prs_perslid_key,
sn.fac_srtnotificatie_oms,
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m, mld_stdmelding sm, fac_srtnotificatie sn
WHERE TRUNC (m.mld_melding_datum + 275) = TRUNC (SYSDATE)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = 1421 -- Aut. toegang afdeling
--AND m.mld_workflowstep_key IS NOT NULL -- WF-melding?
AND m.mld_melding_key = mld_melding_start_key -- WF-startmelding?
AND sn.fac_srtnotificatie_code = 'CUST02';
------------------------------------------------------------------------------
-- CAD SYNCHRONISATIE views
-- Er worden per gebouw verschillende ruimtenummeringsconventies gebruikt
-- Per conventie is er een sync-view, die afhankelijk van een gebouwkenmerk
-- (key=?) wordt toegepast.
--
-- Als in database ruimtenr=Rn, verdiepingscode=Vc en verdiepingsvolgnr=Vn,
-- dan herkennen we deze labels in de tekening:
-- 1. Rn-part -> het gedeelte na de punt '.'
-- 2. Vc.Rn
-- 3. [0]Vn.Rn -> als 0<Vn<10 (dus niet Vn=-1), dan prefix met 0
-- 4. Rn
------------------------------------------------------------------------------
CREATE OR REPLACE VIEW ivet_v_sync_alg_ruimte
(
alg_ruimte_key,
alg_verdieping_key,
cadlabel
)
AS
SELECT r.alg_ruimte_key,
r.alg_verdieping_key,
DECODE (
k.alg_onrgoedkenmerk_waarde,
1,
SUBSTR (r.alg_ruimte_nr, INSTR (r.alg_ruimte_nr, '.') + 1), -- Rn-part
2,
v.alg_verdieping_code || '.' || r.alg_ruimte_nr, -- Vc.Rn
3,
SUBSTR ('0' || v.alg_verdieping_volgnr, -2) || '.' || r.alg_ruimte_nr, -- [0]Vn.Rn
4,
r.alg_ruimte_nr, -- Rn
SUBSTR (r.alg_ruimte_nr, INSTR (r.alg_ruimte_nr, '.') + 1)) -- Rn-part
cadlabel
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
(SELECT *
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = -1) k
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = k.alg_onrgoed_key(+);
CREATE OR REPLACE VIEW ivet_v_sync_prj_ruimte
(
prj_scenario_key,
prj_ruimte_key,
alg_verdieping_key,
cadlabel
)
AS
SELECT r.prj_scenario_key,
r.prj_ruimte_key,
r.alg_verdieping_key,
--r.prj_ruimte_nr,
DECODE (
k.alg_onrgoedkenmerk_waarde,
1,
SUBSTR (r.prj_ruimte_nr, INSTR (r.prj_ruimte_nr, '.') + 1), -- Rn-part
2,
v.alg_verdieping_code || '.' || r.prj_ruimte_nr, -- Vc.Rn
3,
SUBSTR ('0' || v.alg_verdieping_volgnr, -2) || '.' || r.prj_ruimte_nr, -- [0]Vn.Rn
4,
r.prj_ruimte_nr, -- Rn
SUBSTR (r.prj_ruimte_nr, INSTR (r.prj_ruimte_nr, '.') + 1)) -- Rn-part
cadlabel
FROM prj_ruimte r,
alg_verdieping v,
(SELECT *
FROM alg_v_aanwezigonrgoedkenmerk
WHERE alg_kenmerk_key = -1) k
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = k.alg_onrgoed_key(+);
/* Formatted on 6-9-2011 10:57:39 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_label_wpbewoner
(
prs_werkplek_key,
waarde
)
AS
SELECT wp.prs_werkplek_key,
DECODE (bew.aantal, 0, '[Vrij]', 1, bew.naam, bew.naam || '...')
FROM (SELECT prs_werkplek_key FROM prs_werkplek) wp
LEFT JOIN
( SELECT pw.prs_werkplek_key,
COUNT ( * ) aantal,
MAX (p.prs_perslid_naam_full) naam
FROM prs_perslidwerkplek pw,
prs_v_perslid_fullnames p
WHERE pw.prs_perslid_key = p.prs_perslid_key
GROUP BY pw.prs_werkplek_key) bew
ON wp.prs_werkplek_key = bew.prs_werkplek_key;
/* Formatted on 19-4-2012 17:00:48 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_label_bg_match
(
alg_ruimte_key,
waarde
)
AS
SELECT a.prs_alg_ruimte_key,
DECODE (
SIGN (ROUND ( (b.opp / (a.aantal * 7)) * 100, 0) - 110),
1,
2, -- Te Leeg
DECODE (
SIGN (ROUND ( (b.opp / (a.aantal * 7)) * 100, 0) - 90),
-1,
1, -- Te vol
0 -- Volgens norm
)
)
FROM ( SELECT wp.prs_alg_ruimte_key,
COUNT (pw.prs_perslid_key) aantal
FROM prs_perslidwerkplek pw,
prs_werkplek wp
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
GROUP BY wp.prs_alg_ruimte_key) a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (r.alg_ruimte_bruto_vloeropp, 0) opp
FROM alg_v_aanwezigruimte r) b
ON a.prs_alg_ruimte_key = b.alg_ruimte_key;
/* Formatted on 19-4-2012 17:00:48 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_label_bg_delta
(
alg_ruimte_key,
waarde
)
AS
SELECT a.prs_alg_ruimte_key, TO_CHAR (ROUND (b.opp - (a.aantal * 7), 2))
FROM ( SELECT wp.prs_alg_ruimte_key,
COUNT (pw.prs_perslid_key) aantal
FROM prs_perslidwerkplek pw,
prs_werkplek wp
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
GROUP BY wp.prs_alg_ruimte_key) a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (r.alg_ruimte_bruto_vloeropp, 0) opp
FROM alg_v_aanwezigruimte r) b
ON a.prs_alg_ruimte_key = b.alg_ruimte_key;
/* Formatted on 19-4-2012 17:00:48 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_label_gemopp_pp
(
alg_ruimte_key,
waarde
)
AS
SELECT a.prs_alg_ruimte_key, TO_CHAR (ROUND (b.opp / a.aantal, 2))
FROM ( SELECT wp.prs_alg_ruimte_key,
COUNT (pw.prs_perslid_key) aantal
FROM prs_perslidwerkplek pw,
prs_werkplek wp
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
GROUP BY wp.prs_alg_ruimte_key) a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (r.alg_ruimte_bruto_vloeropp, 0) opp
FROM alg_v_aanwezigruimte r) b
ON a.prs_alg_ruimte_key = b.alg_ruimte_key;
/* Formatted on 16-3-2012 15:40:50 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_thema_ruimte_afd
(
alg_ruimte_key,
waarde
--waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Geen]',
1, SUBSTR (y.prs_afdeling_omschrijving, 1, 60),
'Meer dan 1 afdeling!')
--DECODE (y.aantal, NULL, -1, 1, y.prs_afdeling_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
( SELECT w.prs_alg_ruimte_key,
MIN (a.prs_afdeling_omschrijving)
prs_afdeling_omschrijving,
MIN (a.prs_afdeling_key) prs_afdeling_key,
COUNT (DISTINCT a.prs_afdeling_key) aantal
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_v_aanwezigperslid p,
prs_afdeling a
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY w.prs_alg_ruimte_key) y
ON x.alg_ruimte_key = y.prs_alg_ruimte_key
UNION ALL
SELECT NULL, SUBSTR (a.prs_afdeling_omschrijving, 1, 60) --, a.prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_v_aanwezigperslid p
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key)
UNION ALL
SELECT DISTINCT NULL, SUBSTR (a.prs_afdeling_omschrijving, 1, 60) --, a.prs_afdeling_key
FROM prs_perslidwerkplek pw,
prs_v_aanwezigperslid p,
prs_afdeling a
WHERE pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND NOT EXISTS
(SELECT 1
FROM prs_werkplek w
WHERE w.prs_werkplek_key = pw.prs_werkplek_key)
/
/* Formatted on 16-3-2012 15:40:50 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_thema_ruimte_kpn
(
alg_ruimte_key,
waarde
--waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Geen]',
1, SUBSTR (y.prs_kostenplaats_nr, 1, 30),
'Meer dan 1 kostenplaats!')
--DECODE (y.aantal, NULL, -1, 1, y.prs_kostenplaats_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
( SELECT w.prs_alg_ruimte_key,
MIN (kp.prs_kostenplaats_nr) prs_kostenplaats_nr,
MIN (kp.prs_kostenplaats_key) prs_kostenplaats_key,
COUNT (DISTINCT kp.prs_kostenplaats_key) aantal
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_v_aanwezigperslid p,
prs_afdeling a,
prs_kostenplaats kp
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
GROUP BY w.prs_alg_ruimte_key) y
ON x.alg_ruimte_key = y.prs_alg_ruimte_key
UNION ALL
SELECT NULL, SUBSTR (kp.prs_kostenplaats_nr, 1, 30) --, kp.prs_kostenplaats_key
FROM prs_v_aanwezigkostenplaats kp
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw,
prs_werkplek w,
prs_v_aanwezigperslid p,
prs_afdeling a
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key)
UNION ALL
SELECT DISTINCT NULL, SUBSTR (kp.prs_kostenplaats_nr, 1, 30) --, kp.prs_kostenplaats_key
FROM prs_perslidwerkplek pw,
prs_v_aanwezigperslid p,
prs_afdeling a,
prs_kostenplaats kp
WHERE pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND NOT EXISTS
(SELECT 1
FROM prs_werkplek w
WHERE w.prs_werkplek_key = pw.prs_werkplek_key)
/
/* Formatted on 21-12-2012 17:44:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_thema_schprog
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT a.alg_ruimte_key,
COALESCE (b.schprog, '[Onbekend]'),
COALESCE (b.schprog_key, -1)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) a
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr schprog,
ud.fac_usrdata_key schprog_key
FROM alg_v_aanwezigonrgoedkenmerk ok,
fac_v_aanwezigusrdata ud
WHERE ok.alg_kenmerk_key = 1020 -- schoonmaakprog.
AND ok.alg_onrgoed_niveau = 'R'
AND fac.safe_to_number (
ok.alg_onrgoedkenmerk_waarde
) = ud.fac_usrdata_key) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
UNION ALL
SELECT NULL,
ud.fac_usrdata_omschr schprog,
ud.fac_usrdata_key schprog_key
FROM fac_v_aanwezigusrdata ud
WHERE ud.fac_usrtab_key = 2301
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanwezigonrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1020 -- schoonmaakprog.
AND fac.safe_to_number (
ok.alg_onrgoedkenmerk_waarde
) = ud.fac_usrdata_key)
/
/* Formatted on 21-12-2012 17:44:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE TRIGGER ivet_v_thema_schprog_i_iu
INSTEAD OF INSERT OR UPDATE
ON ivet_v_thema_schprog
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = :new.alg_ruimte_key
AND fac.safe_to_number (alg_onrgoedkenmerk_waarde) <>
:new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key,
alg_onrgoed_niveau,
alg_kenmerk_key,
alg_onrgoedkenmerk_waarde)
VALUES (:new.alg_ruimte_key,
'R',
1020,
:new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
/* Formatted on 19-4-2012 16:14:40 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW ivet_v_thema_schprog_ro
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key, ud.fac_usrdata_omschr
FROM alg_v_aanwezigruimte r,
alg_v_aanwezigonrgoedkenmerk ok,
fac_v_aanwezigusrdata ud
WHERE r.alg_ruimte_key = ok.alg_onrgoed_key
AND ok.alg_kenmerk_key = 1020 -- schoonmaakprog.
AND ok.alg_onrgoed_niveau = 'R'
AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) =
ud.fac_usrdata_key
/
-- Synchronisatiemechanisme om dagelijks de schoonmaakprogramma kenmerken bij de
-- ruimte te synchroniseren met de objecten die voor de schoonmaak gebruikt worden.
CREATE OR REPLACE PROCEDURE ivet_export_sync_schoonmaak (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
CURSOR c (
c_srtgroep_key NUMBER)
IS
SELECT ins_srtdeel_key,
alg_ruimte_key,
alg_ruimte_aanduiding,
ins_srtdeel_omschrijving
FROM ins_srtdeel sd,
alg_v_ruimte_gegevens rg,
fac_usrdata ud,
alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoed_key = rg.alg_ruimte_key
AND aogk.alg_kenmerk_key = 1020
AND fac.safe_to_number (aogk.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key
AND ud.fac_usrdata_code = ins_srtdeel_code
AND sd.ins_srtgroep_key = c_srtgroep_key;
v_srtgroep_key NUMBER;
v_srtdeel_key NUMBER;
v_deel_key NUMBER;
BEGIN
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_srtgroep
WHERE ins_srtgroep_verwijder IS NULL AND ins_srtgroep_omschrijving = 'Schoonmaak';
-- aanmaken update ins_srtdeel
-- srtdelen worden gesynchroniseerd met de eigentabel met key
INSERT INTO ins_srtdeel (ins_srtgroep_key,
ins_srtdeel_code,
ins_srtdeel_omschrijving,
ins_srtdeel_binding)
SELECT v_srtgroep_key,
fac_usrdata_code,
fac_usrdata_omschr,
1
FROM fac_usrdata ud
WHERE fac_usrtab_key = 2301
AND NOT EXISTS
(SELECT ins_srtdeel_key
FROM ins_srtdeel
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtdeel_code = ud.fac_usrdata_code
AND ins_srtgroep_key = v_srtgroep_key);
UPDATE ins_srtdeel
SET ins_srtdeel_omschrijving =
(SELECT fac_usrdata_omschr
FROM fac_usrdata
WHERE fac_usrtab_key = 2301
AND fac_usrdata_verwijder IS NULL
AND fac_usrdata_code = ins_srtdeel_code)
WHERE ins_srtgroep_key = v_srtgroep_key AND ins_srtdeel_verwijder IS NULL;
FOR rec IN c (v_srtgroep_key)
LOOP
BEGIN
BEGIN
SELECT d.ins_deel_key, d.ins_srtdeel_key
INTO v_deel_key, v_srtdeel_key
FROM ins_deel d, ins_srtdeel sd
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = v_srtgroep_key
AND d.ins_alg_ruimte_key = rec.alg_ruimte_key
AND d.ins_deel_vervaldatum IS NULL;
IF v_srtdeel_key <> rec.ins_srtdeel_key
THEN
UPDATE ins_deel
SET ins_deel_vervaldatum = SYSDATE
WHERE ins_deel_key = v_deel_key;
v_deel_key := -1;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_deel_key := -1;
END;
IF v_deel_key = -1
THEN
INSERT INTO ins_deel (ins_srtdeel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_deel_omschrijving,
ins_deel_actief)
VALUES (rec.ins_srtdeel_key,
rec.alg_ruimte_key,
'R',
SUBSTR (rec.alg_ruimte_aanduiding || ' / ' || rec.ins_srtdeel_omschrijving,
1,
60),
1)
RETURNING ins_deel_key
INTO v_deel_key;
END IF;
END;
END LOOP;
END;
/
-- De schoonmaak wordt van 03:00 tot 03:00 uur uitgevoerd. Vandaar dat we alle tijden met 3
-- uur moeten corrigeren.
CREATE OR REPLACE VIEW ivet_v_thema_sch_stat
(
alg_ruimte_key,
waarde
)
AS
SELECT ins_alg_ruimte_key,
DECODE (SUM (todo),
0, DECODE (SUM (done), 0, 'Idle',
'Ready'),
DECODE (SUM (done), 0, 'Todo',
'Busy'))
waarde
FROM (
SELECT ins_alg_ruimte_key,
sc.ins_srtcontrole_key,
id.ins_deel_omschrijving,
sc.ins_srtcontrole_omschrijving,
DECODE (
SIGN(TRUNC (
fac.nextcyclusdatedeel (id.ins_deel_key, sc.ins_srtcontrole_key, 1))
- TRUNC (SYSDATE-3/24)),
1,
0,
1)
todo,
(SELECT COUNT ( * )
FROM ins_deelsrtcontrole dsc
WHERE dsc.ins_deel_key = id.ins_deel_key
AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND TRUNC (dsc.ins_deelsrtcontrole_datum-3/24) = TRUNC (SYSDATE-3/24))
done
FROM ins_deel id, ins_srtcontrole sc
WHERE id.ins_srtdeel_key = sc.ins_srtinstallatie_key
AND id.ins_deel_verwijder IS NULL
AND sc.ins_srtcontrole_niveau = 'S' --
)
GROUP BY ins_alg_ruimte_key;
-- Dagelijkse taak.
-- Hieronder vallen:
-- - Synchronsiatie schoonmaakprogramma bij ruimte met schoonmaakobjecten.
CREATE OR REPLACE PROCEDURE ivet_export_daily_task (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
ivet_export_sync_schoonmaak (p_applname,
p_applrun,
p_filedir,
p_filename);
END;
/
CREATE OR REPLACE VIEW ivet_v_thema_cleanroom
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT r.alg_ruimte_key, ud.fac_usrdata_omschr
FROM alg_v_aanwezigruimte r,
alg_v_aanwezigonrgoedkenmerk ok,
fac_v_aanwezigusrdata ud
WHERE r.alg_ruimte_key = ok.alg_onrgoed_key
AND ok.alg_kenmerk_key = 1020 -- schoonmaakprog.
AND ok.alg_onrgoed_niveau = 'R'
AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrdata_key = 4465 -- 25-cleanroom
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_ALL
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key,
prs_bedrijf_naam
|| ' ('
|| prs_bedrijf_bezoek_adres
|| ' - '
|| prs_bedrijf_bezoek_postcode
|| ' '
|| prs_bedrijf_bezoek_plaats
|| ')'
Adres
FROM prs_bedrijf
WHERE prs_bedrijf_verwijder IS NULL
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_BEZORG
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1040 -- 1040 Bezorgadres checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_LOCAL
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1060 -- 1060 Local companies checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_AUTHA
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1061 -- 1061 Authoriteit(A) checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_AUTHB
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1062 -- 1062 Authoriteit(B) checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_DIVERSEN
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1063 -- 1063 Diversen checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
-- IVET#29054
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_BEZORG_NL
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1080 -- 1080 Nederland checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
CREATE OR REPLACE VIEW IVET_V_ADRESSEN_BEZORG_INT
(
PRS_BEDRIJF_KEY,
ADRES
)
AS
SELECT prs_bedrijf_key, ADRES
FROM ivet_v_adressen_all, prs_kenmerklink
WHERE prs_kenmerklink_verwijder IS NULL
AND prs_kenmerklink_niveau = 'B'
AND prs_kenmerk_key = 1081 -- 1081 International buiten EU checkbox
AND prs_kenmerklink_waarde = 1
AND prs_link_key = prs_bedrijf_key
/
-- IVET#26822
-- Controleert per internval of er nieuwe transportaanvragen binnen EU zijn en stuurt deze naar gebruiker DistributionCoordination
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_TRANSPORT
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'MLDNEW',
NULL,
69501, -- User DistributionCoordination
'Nieuwe melding: '
|| m.mld_melding_key
|| ' '
|| std.mld_stdmelding_omschrijving
|| ' - '
|| dat.fac_usrdata_omschr,
m.mld_melding_key,
NULL
FROM mld_melding m,
fac_tracking tr,
fac_srtnotificatie str,
mld_kenmerkmelding mkm,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrdata dat,
mld_stdmelding std
WHERE mld_melding_status IN (0, 2, 3, 4, 7) -- open meldingen
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')))
AND fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'IVET_V_NOTI_MLD_TRANSPORT')
AND m.mld_stdmelding_key = 2821 -- R-Transportaanvraag-transportaanvraag
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key = 13641 -- Kenmerk Land suggest
AND mkm.mld_kenmerkmelding_waarde IS NOT NULL
AND mkm.mld_kenmerkmelding_verwijder IS NULL
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND mkm.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND dat.fac_usrtab_key = kd.fac_usrtab_key
AND mkm.mld_kenmerkmelding_waarde = dat.fac_usrdata_key
/
-- IVET#28273
-- Controleert per internval of er nieuwe transportaanvragen buiten EU zijn en stuurt deze naar gebruiker DistributionCoordination
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_TRANS_BUITENEU
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'MLDNEW',
NULL,
69501, -- User DistributionCoordination
'Nieuwe melding: '
|| m.mld_melding_key
|| ' '
|| std.mld_stdmelding_omschrijving
|| ' - '
|| dat.fac_usrdata_omschr,
m.mld_melding_key,
NULL
FROM mld_melding m,
fac_tracking tr,
fac_srtnotificatie str,
mld_kenmerkmelding mkm,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrdata dat,
mld_stdmelding std
WHERE mld_melding_status IN (0, 2, 3, 4, 7) -- open meldingen
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')))
AND fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'IVET_V_NOTI_MLD_TRANS_BUITENEU')
AND m.mld_stdmelding_key = 3181 -- R-Transportaanvraag-transportaanvraag buiten eu
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key = 13662 -- Kenmerk Wereldanden suggest
AND mkm.mld_kenmerkmelding_waarde IS NOT NULL
AND mkm.mld_kenmerkmelding_verwijder IS NULL
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND mkm.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND dat.fac_usrtab_key = kd.fac_usrtab_key
AND mkm.mld_kenmerkmelding_waarde = dat.fac_usrdata_key
/
-- IVET#31601
-- Controleert per internval of er nieuwe ADR transportaanvragen zijn en stuurt deze naar gebruiker DistributionCoordination
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_ADR_TRANSPORT
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'MLDNEW',
NULL,
69501, -- User DistributionCoordination
'Nieuwe melding: '
|| m.mld_melding_key
|| ' '
|| std.mld_stdmelding_omschrijving
|| ' - '
|| dat.fac_usrdata_omschr
oms,
m.mld_melding_key,
NULL
FROM mld_melding m,
fac_tracking tr,
fac_srtnotificatie str,
mld_kenmerkmelding mkm,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrdata dat,
mld_stdmelding std
WHERE mld_melding_status IN (0, 2, 3, 4, 7) -- open meldingen
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')))
AND fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'IVET_V_NOTI_MLD_ADR_TRANSPORT')
AND m.mld_stdmelding_key = 3742 -- ADR ransportaanvraag buiten eu
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key = 16403 -- Kenmerk Wereldanden suggest
AND mkm.mld_kenmerkmelding_waarde IS NOT NULL
AND mkm.mld_kenmerkmelding_verwijder IS NULL
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND mkm.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND dat.fac_usrtab_key = kd.fac_usrtab_key
AND mkm.mld_kenmerkmelding_waarde = dat.fac_usrdata_key
UNION ALL
SELECT 'MLDNEW',
NULL,
69501, -- User DistributionCoordination
'Nieuwe melding: '
|| m.mld_melding_key
|| ' '
|| std.mld_stdmelding_omschrijving
|| ' - '
|| dat.fac_usrdata_omschr,
m.mld_melding_key,
NULL
FROM mld_melding m,
fac_tracking tr,
fac_srtnotificatie str,
mld_kenmerkmelding mkm,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrdata dat,
mld_stdmelding std
WHERE mld_melding_status IN (0, 2, 3, 4, 7) -- open meldingen
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND ( (tr.fac_tracking_refkey = m.mld_melding_key
AND str.fac_srtnotificatie_xmlnode IN ('melding')))
AND fac_srtnotificatie_code = 'MLDNEW'
AND tr.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'IVET_V_NOTI_MLD_ADR_TRANSPORT')
AND m.mld_stdmelding_key = 3741 -- ADR transportaanvraag binnen eu
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key = 16362 -- Kenmerk Lidstaten EU suggest
AND mkm.mld_kenmerkmelding_waarde IS NOT NULL
AND mkm.mld_kenmerkmelding_verwijder IS NULL
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND mkm.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND dat.fac_usrtab_key = kd.fac_usrtab_key
AND mkm.mld_kenmerkmelding_waarde = dat.fac_usrdata_key
/
-- IVET#29243
-- Controleert elk uur of er een reservering is gemaakt (=key 34), gewijzigd (=key 35) of verwijderd (=key 38)
-- op de activiteiten VC (=key 21) & No-VC meeting (=key 61) en stuurt deze naar het servicepoint (=key 28881)
CREATE OR REPLACE VIEW IVET_V_NOTI_VC_RESREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'RESUPD',
NULL,
28881,
'Reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' ('
|| res_rsv_ruimte_van
|| ' - '
|| res_ruimte_nr
|| ') is op '
|| fac_tracking_datum
|| ' nieuw aangemaakt door '
|| pf.prs_perslid_naam_full
text,
res_reservering_key,
res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND res_activiteit_key IN (21, 61)
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
AND ( (tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')))
AND str.fac_srtnotificatie_key = 34
AND tr.fac_tracking_datum > SYSDATE - 1 / 24
UNION ALL
SELECT DISTINCT 'RESUPD',
NULL,
28881,
tr.fac_tracking_oms text,
res_reservering_key,
res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND res_activiteit_key IN (21, 61)
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
AND ( (tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')))
AND str.fac_srtnotificatie_key = 35
AND ( fac_tracking_oms LIKE '%gewijzigd%Ruimte:%'
OR fac_tracking_oms LIKE '%gewijzigd%Van:%'
OR fac_tracking_oms LIKE '%gewijzigd%Tot:%'
OR fac_tracking_oms LIKE '%adjusted%Room:%'
OR fac_tracking_oms LIKE '%adjusted%From:%'
OR fac_tracking_oms LIKE '%adjusted%Until:%')
AND tr.fac_tracking_datum > SYSDATE - 1 / 24
UNION ALL
SELECT DISTINCT
'RESUPD',
NULL,
28881,
'Reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' ('
|| res_rsv_ruimte_van
|| ' - '
|| res_ruimte_nr
|| ') is op '
|| fac_tracking_datum
|| ' verwijderd door '
|| pf.prs_perslid_naam_full
text,
res_reservering_key,
res_rsv_ruimte_key
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND res_activiteit_key IN (21, 61)
AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
AND ( (tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND str.fac_srtnotificatie_xmlnode IN
('reservering', 'xreservering')))
AND str.fac_srtnotificatie_key = 38
AND tr.fac_tracking_datum > SYSDATE - 1 / 24;
/* Formatted on 15-1-2016 17:00:30 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW ivet_v_rap_mld_telaat_window
(
hide_f_sortering,
prio,
html_nummer,
fclt_f_productgroep,
fclt_f_melding,
datum,
plaats,
omschrijving,
melder,
fclt_f_status,
fclt_f_overschrijding,
behandelaar,
einddatum
)
AS
WITH x
AS ( -- Lopende meldingen te laat opgepakt!
SELECT m.mld_melding_key, -1 acp, 0 afm
FROM mld_melding m, fac_tracking t
WHERE m.mld_melding_status NOT IN (5, 6, 1) -- 5-Afgemeld, 6-Verwerkt, 1-Afgewezen
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_key = t.fac_tracking_refkey(+)
AND t.fac_srtnotificatie_key(+) = 21 -- MLDACP
AND m.mld_melding_acceptdatum_std < COALESCE (t.fac_tracking_datum, TRUNC (SYSDATE))
UNION -- Lopende meldingen te laat gesloten!
SELECT m.mld_melding_key, 0 acp, -1 afm
FROM mld_melding m, mld_stdmelding sm
WHERE m.mld_melding_status NOT IN (5, 6, 1) -- 5-Afgemeld, 6-Verwerkt, 1-Afgewezen
AND m.fac_activiteit_key IS NULL
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND DECODE (COALESCE (sm.mld_stdmelding_planbaar, 0), 0, m.mld_melding_einddatum_std, m.mld_melding_einddatum) < TRUNC (SYSDATE)
UNION -- Voorgaande 2 werkdagen gesloten meldingen te laat opgepakt of gesloten!
SELECT mldafm.mld_melding_key,
SIGN(mldafm.mld_melding_acceptdatum_std - COALESCE (mldacp.fac_tracking_datum, mldafm.fac_tracking_datum))
acp,
SIGN(DECODE (COALESCE (mldafm.mld_stdmelding_planbaar, 0), 0, mldafm.mld_melding_einddatum_std, mldafm.mld_melding_einddatum) - mldafm.fac_tracking_datum)
afm
FROM (SELECT m.mld_melding_key,
m.mld_melding_acceptdatum_std,
sm.mld_stdmelding_planbaar,
m.mld_melding_einddatum_std,
m.mld_melding_einddatum,
t.fac_tracking_datum
FROM fac_tracking t, mld_melding m, mld_stdmelding sm
WHERE t.fac_srtnotificatie_key IN (22, 27) -- MLDAFM/MLDREJ
AND t.fac_tracking_datum > TRUNC (SYSDATE - 7) -- Tbv. performance!
--AND fac.datumtijdplusuitvoertijd (t.fac_tracking_datum, 2, 'D') > TRUNC(SYSDATE)
AND fac.count_work_days (t.fac_tracking_datum, SYSDATE) <= 2 -- Exclusief SYSDATE!
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key) mldafm
LEFT JOIN
fac_tracking mldacp
ON mldafm.mld_melding_key = mldacp.fac_tracking_refkey
AND mldacp.fac_srtnotificatie_key = 21 -- MLDACP
WHERE (mldafm.mld_melding_acceptdatum_std < COALESCE (mldacp.fac_tracking_datum, mldafm.fac_tracking_datum)
OR DECODE (COALESCE (mldafm.mld_stdmelding_planbaar, 0), 0, mldafm.mld_melding_einddatum_std, mldafm.mld_melding_einddatum) < mldafm.fac_tracking_datum))
SELECT mld_melding_einddatum_std,
DECODE (m.mld_melding_spoed, 1, 'Kritisch', 2, 'Hoog', 3, 'Normaal', 'Laag')
prio,
--sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key),
'<a onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=fo&'
|| 'mld_key='
|| m.mld_melding_key
|| '")''>'
|| sd.ins_srtdiscipline_prefix
|| TO_CHAR (m.mld_melding_key)
|| '</a>'
nummer,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_datum datum,
DECODE (
og.alg_type,
'R',
l.alg_locatie_code
|| '-'
|| og.alg_gebouw_code
|| '-'
|| og.alg_verdieping_code
|| '-'
|| og.alg_ruimte_nr
|| ' '
|| og.alg_ruimte_omschrijving,
'V',
l.alg_locatie_code
|| '-'
|| og.alg_gebouw_code
|| '-'
|| og.alg_verdieping_code,
'G',
l.alg_locatie_code || '-' || og.alg_gebouw_code,
'T',
l.alg_locatie_code || '-' || og.alg_terreinsector_code,
l.alg_locatie_code)
plaats,
m.mld_melding_omschrijving,
pm.prs_perslid_naam_full,
ms.mld_statuses_omschrijving,
DECODE (x.acp, -1, DECODE (x.afm, -1, 'Acc.+Uitv.', 'Acceptatie'), 'Uitvoering')
overschrijding,
pb.prs_perslid_naam_full,
m.mld_melding_einddatum_std einddatum
FROM x,
mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_v_onroerendgoed_gegevens og,
prs_v_perslid_fullnames_all pm,
prs_v_perslid_fullnames_all pb
WHERE x.mld_melding_key = m.mld_melding_key
AND m.mld_melding_indult = 0
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_slabewaken = 1
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.prs_perslid_key_voor = pm.prs_perslid_key
AND m.mld_melding_behandelaar_key = pb.prs_perslid_key(+);
-- IVET#34141 10 maandelijkse reminder tbv AMI meldingen
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_AMI
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'MLDINF',
NULL,
82761, -- User AMI
'LET OP: Bewaartermijn overschreden (R'
|| m.mld_melding_key
|| ')',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = 1761
AND m.mld_melding_status != 1
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE - 305);
-- IVET#38124 rappor bo klussen lijst
-- -- 2881 = bo verhuizingen, 19001 = handyman
-- Kenmerken zijn verschillende soort kenmerken Naam, Van, Contactpersoon, Telefoon met een volgnummer
CREATE OR REPLACE VIEW ivet_v_rap_mldklussen
(
soort,
melding,
omschrijving,
datum,
naam,
van,
naar,
contactpersoon,
telnr,
meubilair,
gewenste_bureauhoogte,
werkaanvraagnummer,
opmerking,
gereed
)
AS
SELECT '0. Leeg' soort,
NULL melding,
NULL omschrijving,
NULL datum,
NULL naam,
NULL van,
NULL naar,
NULL contactpersoon,
NULL telnr,
NULL meubilair,
NULL gewenste_bureauhoogte,
NULL werkaanvraagnummerr,
NULL opmerking,
NULL gereed
FROM DUAL
UNION ALL
SELECT '1. Verhuizing BO' soort,
'R' || m.mld_melding_key melding,
m.mld_melding_opmerking omschrijving,
(SELECT TO_DATE (mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = 11961)
datum,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k2
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7141,
7142,
7143,
7144,
7145,
7146,
7147,
7148,
7149)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep)
naam,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k2
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7186,
7187,
7063,
7183,
7185,
7188,
7189,
7190,
7191)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep)
van,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k2
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7203,
7204,
7205,
7206,
7207,
7208,
7209,
7064,
7202)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep)
naar,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = 11962)
contactpersoon,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k2
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7192,
7193,
7194,
7195,
7197,
7198,
7199,
7200,
7201)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep)
telnr,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k2
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7103,
7150,
7151,
7152,
7153,
7154,
7155,
7156,
7157)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep)
meubilair,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding km, mld_kenmerk k2, fac_usrdata fu
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = k2.mld_kenmerk_key
AND k2.mld_srtkenmerk_key IN
(7481,
7482,
7483,
7484,
7485,
7486,
7486,
7487,
7488)
AND k2.mld_kenmerk_groep = m2.mld_kenmerk_groep
AND fu.fac_usrtab_key = 3201
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde)
gewenste_bureauhoogte,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m2.mld_melding_key
AND km.mld_kenmerk_key = 7210)
werkaanvraagnummerr,
NULL opmerking,
NULL gereed
FROM (SELECT DISTINCT mld_melding_key, k.mld_kenmerk_groep
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep > 0) m2,
mld_melding m
WHERE m2.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 2881
AND m.mld_melding_status IN (0, 2, 3, 99, 4, 7)
UNION ALL
SELECT '2. Handymanactiviteiten',
'R' || m.mld_melding_key melding,
m.mld_melding_opmerking,
(SELECT TO_DATE (mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 19001)
datum,
p.prs_perslid_naam,
NULL vanl,
aog.alg_plaatsaanduiding naar,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = 19081)
contactpersoon,
COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel) telnr,
NULL,
NULL,
NULL,
NULL,
NULL
FROM mld_melding m, prs_perslid p, alg_v_onroerendgoed_gegevens aog
WHERE mld_stdmelding_key = 216
AND m.mld_melding_status IN (0, 2, 3, 99, 4, 7)
AND m.prs_perslid_key = p.prs_perslid_key
AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys;
CREATE OR REPLACE VIEW ivet_v_rap_mldkenmerk_gebruik
AS
SELECT mld_kenmerk_key key,
'Kenmerk' soort,
niveau,
sk.mld_srtkenmerk_omschrijving omschrijving,
mld_stdmelding_key melding_key,
mld_stdmelding_omschrijving melding_omschrijving,
ins_discipline_key vakgroep_key,
ins_discipline_omschrijving vakgroep_omschrijving,
ins_srtdiscipline_key vakgroeptype_key,
ins_srtdiscipline_omschrijving vakgroeptype_omschrijving,
COALESCE (
NVL2 (mld_stdmelding_verwijder, 'Melding verwijderd', NULL),
NVL2 (ins_discipline_verwijder, 'Vakgroep verwijderd', NULL),
NVL2 (ins_srtdiscipline_verwijder,
'Vakgroeptype verwijderd',
NULL),
NVL2 (mld_srtkenmerk_verwijder, 'Kenmerksoort verwijderd', NULL),
NULL)
opmerking
FROM (SELECT mld_kenmerk_key,
'Vakgroeptype' niveau,
mld_srtkenmerk_key,
NULL mld_stdmelding_key,
NULL mld_stdmelding_omschrijving,
NULL mld_stdmelding_vervaldatum,
NULL mld_stdmelding_verwijder,
NULL ins_discipline_key,
NULL ins_discipline_omschrijving,
NULL ins_discipline_verwijder,
isd.ins_srtdiscipline_key,
ins_srtdiscipline_omschrijving,
ins_srtdiscipline_verwijder
FROM mld_kenmerk mk, ins_srtdiscipline isd
WHERE mld_kenmerk_verwijder IS NULL
AND mld_kenmerk_niveau = 'T'
AND mk.mld_stdmelding_key = isd.ins_srtdiscipline_key
UNION ALL
SELECT mld_kenmerk_key,
'Vakgroep' niveau,
mld_srtkenmerk_key,
NULL mld_stdmelding_key,
NULL mld_stdmelding_omschrijving,
NULL mld_stdmelding_vervaldatum,
NULL mld_stdmelding_verwijder,
d.ins_discipline_key,
d.ins_discipline_omschrijving,
d.ins_discipline_verwijder,
isd.ins_srtdiscipline_key,
ins_srtdiscipline_omschrijving,
ins_srtdiscipline_verwijder
FROM mld_kenmerk mk, mld_discipline d, ins_srtdiscipline isd
WHERE mld_kenmerk_verwijder IS NULL
AND mld_kenmerk_niveau = 'D'
AND mk.mld_stdmelding_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
UNION ALL
SELECT mld_kenmerk_key,
'Melding' niveau,
mld_srtkenmerk_key,
std.mld_stdmelding_key,
std.mld_stdmelding_omschrijving,
std.mld_stdmelding_vervaldatum,
std.mld_stdmelding_verwijder,
d.ins_discipline_key,
d.ins_discipline_omschrijving,
d.ins_discipline_verwijder,
isd.ins_srtdiscipline_key,
ins_srtdiscipline_omschrijving,
ins_srtdiscipline_verwijder
FROM mld_kenmerk mk,
mld_discipline d,
ins_srtdiscipline isd,
mld_stdmelding std
WHERE mld_kenmerk_verwijder IS NULL
AND mld_kenmerk_niveau = 'S'
AND mk.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = isd.ins_srtdiscipline_key) k,
mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND ( sk.mld_srtkenmerk_verwijder IS NOT NULL
OR k.mld_stdmelding_verwijder IS NOT NULL
OR k.ins_discipline_verwijder IS NOT NULL
OR k.ins_srtdiscipline_verwijder IS NOT NULL)
UNION ALL
SELECT key,
soort,
NULL niveau,
omschrijving,
NULL melding_key,
NULL melding_omschrijving,
NULL vakgroep_key,
NULL vakgroep_omschrijving,
NULL vakgroeptype_key,
NULL vakgroeptype_omschrijving,
opmerking
FROM (SELECT mld_srtkenmerk_key key,
'Kenmerksoort' soort,
mld_srtkenmerk_omschrijving omschrijving,
'Geen kenmerken voor deze kenmerksoort' opmerking
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_verwijder IS NULL
AND mld_srtkenmerk_key NOT IN
(SELECT mld_srtkenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL)
UNION ALL
SELECT fac_usrtab_key,
'Eigen tabel',
fac_usrtab_naam,
'Geen kenmerkdomeinen voor deze Eigen tabel'
FROM fac_usrtab
WHERE fac_usrtab_verwijder IS NULL
AND fac_usrtab_key NOT IN
(SELECT fac_usrtab_key
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_verwijder IS NULL)
UNION ALL
SELECT fac_kenmerkdomein_key,
'Kenmerkdomein',
fac_kenmerkdomein_omschrijving,
'Geen kenmerksoorten voor dit Kenmerkdomein'
FROM fac_kenmerkdomein
WHERE fac_kenmerkdomein_verwijder IS NULL
AND fac_kenmerkdomein_xmlnode = 'MLD'
AND fac_kenmerkdomein_key NOT IN
(SELECT fac_kenmerkdomein_key
FROM mld_srtkenmerk
WHERE mld_srtkenmerk_verwijder IS NULL));
CREATE OR REPLACE VIEW ivet_v_rap_bmc_noscan
(
omschrijving,
controledatumlaatst,
datum
)
AS
SELECT
d.ins_deel_omschrijving,
MAX (dsc.ins_deelsrtcontrole_datum) KEEP (DENSE_RANK LAST ORDER BY dsc.ins_deel_key) last_controle_datum,
SYSDATE
FROM ins_deelsrtcontrole dsc, ins_deel d, prs_perslid pr
WHERE dsc.ins_srtcontrole_key = 310 --Periodieke controletaak BMC bij Objectsoort Brandmeldcentrale (Discipline = Reserveringen; Objectgroep = Brandmeldcentrale)
AND dsc.ins_deel_key = d.ins_deel_key
AND (select MAX (TRUNC(dsc.ins_deelsrtcontrole_datum)) from ins_deelsrtcontrole dsc where d.ins_deel_key = dsc.ins_deel_key) < TRUNC (SYSDATE) - 1
GROUP BY dsc.ins_deel_key, d.ins_deel_omschrijving;
CREATE OR REPLACE VIEW ivet_v_noti_bmc_noscan
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'CUST03' AS CODE,
NULL,
98001, -- Persoon _Security, voor de emailadressen
'Attentie: bijgevoegde brandmeldcentrales zijn niet gescand',
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'IVET_V_RAP_BMC_NOSCAN') rapportnr,
NULL
FROM IVET_V_RAP_BMC_NOSCAN;
------ View voor controleren op OSLOGIN(Alternatieve inlognaam) ------
CREATE OR REPLACE VIEW IVET_V_PERSLID_OSLOGIN
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM_FULL,
PRS_PERSLID_NAAM_FRIENDLY,
PRS_PERSLID_OSLOGIN2,
PRS_AFDELING_KEY,
PRS_PERSLID_EMAIL,
PRS_PERSLID_TELEFOONNR,
ALG_GEBOUW_OMSCHRIJVING,
PRS_PERSLID_NR,
PRS_KOSTENPLAATS_OMSCHRIJVING
)
AS
SELECT p.prs_perslid_key,
p.prs_perslid_naam
|| DECODE (p.prs_perslid_voorletters,
NULL, '',
', ' || p.prs_perslid_voorletters)
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
' ' || p.prs_perslid_tussenvoegsel)
|| DECODE (p.prs_perslid_voornaam,
NULL, '',
' (' || p.prs_perslid_voornaam || ')')
prs_perslid_naam_full,
DECODE (p.prs_perslid_voornaam,
NULL, '',
p.prs_perslid_voornaam || ' ')
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
p.prs_perslid_tussenvoegsel || ' ')
|| prs_perslid_naam
prs_perslid_naam_friendly,
p.prs_perslid_oslogin2,
p.prs_afdeling_key,
p.prs_perslid_email,
p.prs_perslid_telefoonnr,
w.ALG_GEBOUW_OMSCHRIJVING,
p.prs_perslid_nr,
k.PRS_KOSTENPLAATS_OMSCHRIJVING
FROM prs_v_perslidwerkplek_gegevens w,
prs_perslid p,
prs_afdeling a,
prs_kostenplaats k
WHERE p.prs_perslid_key = w.prs_perslid_key
AND p.prs_perslid_oslogin2 IS NOT NULL
AND a.prs_afdeling_key = p.prs_afdeling_key
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key;
-- IVET#52961 Rapport voor afhandeling periodieke taken (in eerste instantie voor brandmeldcentrales)
CREATE OR REPLACE VIEW ivet_v_rap_tasks
AS
SELECT
disc.ins_discipline_omschrijving AS Discipline,
sg.ins_srtgroep_omschrijving AS Groep,
sd.ins_srtdeel_omschrijving AS Objectsoort,
d.ins_deel_omschrijving AS Objectomschrijving,
sc.ins_srtcontrole_omschrijving AS Taak,
TRUNC(dsc.ins_deelsrtcontrole_datum_org) AS Controle_datum,
TRUNC(dsc.ins_deelsrtcontrole_datum) AS Datum_uitvoer,
TO_CHAR(dsc.ins_deelsrtcontrole_datum , 'HH24:MI' ) AS Tijd_uitvoer,
(SELECT cm.ins_controlemode_oms
FROM ins_controlemode cm
WHERE cm.ins_controlemode_key = dsc.ins_controlemode_key) AS Status,
dsc.ins_deelsrtcontrole_opmerking AS Opmerking
FROM
ins_deelsrtcontrole dsc,
ins_srtcontrole sc,
ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
ins_tab_discipline disc
WHERE
dsc.ins_deel_key = d.ins_deel_key
AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND disc.ins_discipline_key = sg.ins_discipline_key
ORDER BY
disc.ins_discipline_omschrijving,
sg.ins_srtgroep_omschrijving,
sd.ins_srtdeel_omschrijving,
d.ins_deel_omschrijving,
sc.ins_srtcontrole_omschrijving,
dsc.ins_deelsrtcontrole_datum_org DESC;
--IVET#54995 notificaties reserveringen / meldingsreserveringen
CREATE OR REPLACE VIEW ivet_v_noti_resreminder
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT code,
sender,
receiver,
'Herinnering - ' || REPLACE (text, ' ', ' '),
key,
xkey,
NULL,
NULL
FROM fac_v_noti_resreminder n, prs_perslid p
WHERE n.receiver = p.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
CREATE OR REPLACE VIEW ivet_v_noti_tafelresreminder
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST04',
NULL,
m.prs_perslid_key,
'Reservering '
|| m.mld_melding_key
|| ': U heeft op '
|| (SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 16741 --Key voor kenmerk datum vanaf
AND km.mld_melding_key = m.mld_melding_key)
|| ' om '
|| (SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 15222 --Key voor kenmerk tijd
AND km.mld_melding_key = m.mld_melding_key)
|| ' een tafel gereserveerd.' AS text,
m.mld_melding_key,
NULL,
NULL,
NULL
FROM mld_melding m
WHERE
m.mld_stdmelding_key = 2661 --Key voor stdmelding 'Tafel reserveren restaurant'
AND
(SELECT (TRUNC (fac.safe_to_date(km.mld_kenmerkmelding_waarde, 'DD-MM-YYYY')))
FROM mld_kenmerkmelding km
WHERE km.mld_kenmerk_key = 16741 --Key voor kenmerk tijd
AND km.mld_melding_key = m.mld_melding_key) =
(CASE WHEN fac.getweekdaynum(SYSDATE) = 6
THEN(TRUNC(SYSDATE)+3)
ELSE (TRUNC(SYSDATE)+1)
END);
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile