Files
Customer/IVET/ivet.sql
Ruud Lipper 013d171201 IVET#34864 verfijning bo looplijst
svn path=/Customer/trunk/; revision=28019
2016-02-03 11:44:15 +00:00

3208 lines
130 KiB
SQL

-- Script containing customer specific db-configuration for IVET.
-- (c) 2010 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xivet.lst
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 18-1-2016 12:15:07 (QP5 v5.115.810.9015) */
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, -- videoconference (vc)
1,
(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
(281, 161, 101, 301, 321) -- Brandmeldcentrale, Luncvoucer, Uitellenauto, 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 TO_CHAR (x.res_rsv_ruimte_van,
'yyyymmdd') =
TO_CHAR (rrr.res_rsv_ruimte_tot,
'yyyymmdd')
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
(2121, 741, 2162, 2221) -- Branmdeldcentrale, Bestelauto, 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
(283, 282, 341)
ORDER BY rrr2.res_rsv_ruimte_van)
WHERE ( (org = 341 AND prev IN (283, 282))
OR (org IN (283, 282) 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 (563, 562))
OR (org IN (563, 562) 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_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=Vn 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
------------------------------------------------------------------------------
/* Formatted on 28-6-2011 14:12:21 (QP5 v5.115.810.9015) */
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, alg_onrgoedkenmerk k
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = k.alg_onrgoed_key(+)
--AND k.alg_kenmerk_key = -1
/
/* 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
/
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 Halfjaarlijkse 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 - 182);
BEGIN fac.registercustversion('IVET', 32); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
commit;
spool off