Files
Customer/IVET/ivet.sql
Benjamin Josso 146d0e2e61 IVET#79859 -- Aanpassing gemaakt in view omdat kenmerk niet meer bestond
svn path=/Customer/trunk/; revision=61608
2023-08-28 13:37:02 +00:00

4587 lines
195 KiB
MySQL
Raw Blame History

--
-- $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;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE VIEW 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_v_aanweziggebouw 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 23-8-2022 18:25:45 (QP5 v5.136.908.31019) */
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 alg_onrgoed_niveau = 'R'
AND alg_kenmerk_key = 1020
AND (alg_onrgoedkenmerk_waarde IS NULL -- IVET#73753/73776: Zou nooit NULL mogen zijn, maar was dat ergens wel!?
OR 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 Schoonmaak-objecten die worden gebruikt.
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 sd.ins_srtdeel_key, rg.alg_ruimte_key, rg.alg_ruimte_aanduiding, sd.ins_srtdeel_omschrijving
FROM alg_onrgoedkenmerk aogk, alg_v_ruimte_gegevens rg, fac_usrdata ud, ins_srtdeel sd
WHERE aogk.alg_kenmerk_key = 1020 -- Schoonmaakprogramma
AND aogk.alg_onrgoed_key = rg.alg_ruimte_key
AND fac.safe_to_number (aogk.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key
AND ud.fac_usrdata_code = sd.ins_srtdeel_code
AND sd.ins_srtgroep_key = c_srtgroep_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (1000) := '';
v_srtgroep_key NUMBER;
v_srtdeel_key NUMBER;
v_deel_key NUMBER;
v_count NUMBER;
BEGIN
v_errormsg := 'Fout bepalen schoonmaak-groep';
SELECT ins_srtgroep_key
INTO v_srtgroep_key
FROM ins_v_aanwezigsrtgroep
WHERE ins_srtgroep_omschrijving = 'Schoonmaak';
-- Aanmaken objectsoorten volgens Eigen tabel met key=2301!
v_errormsg := 'Fout toevoegen schoonmaak-objectsoorten';
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_v_aanwezigusrdata ud
WHERE fac_usrtab_key = 2301
AND NOT EXISTS
(SELECT 1
FROM ins_v_aanwezigsrtdeel
WHERE ins_srtgroep_key = v_srtgroep_key
AND ins_srtdeel_code = ud.fac_usrdata_code);
-- Bijwerken objectsoorten volgens Eigen tabel met key=2301!
v_errormsg := 'Fout bijwerken objectsoort-omschrijvingen';
UPDATE ins_srtdeel
SET ins_srtdeel_omschrijving =
(SELECT fac_usrdata_omschr
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 2301
AND fac_usrdata_code = ins_srtdeel_code)
WHERE ins_srtdeel_verwijder IS NULL
AND ins_srtgroep_key = v_srtgroep_key;
FOR rec IN c (v_srtgroep_key)
LOOP
BEGIN
v_aanduiding := '[' || rec.alg_ruimte_aanduiding || '|' || rec.ins_srtdeel_omschrijving || '] ';
BEGIN
v_errormsg := 'Fout bepalen schoonmaak-object (oud)';
SELECT d.ins_srtdeel_key, d.ins_deel_key
INTO v_srtdeel_key, v_deel_key
FROM ins_v_aanwezigdeel d, ins_srtdeel sd
WHERE d.ins_deel_vervaldatum IS NULL
AND 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_alg_ruimte_type = 'R';
IF v_srtdeel_key <> rec.ins_srtdeel_key
THEN
v_errormsg := 'Fout vervallen schoonmaak-object';
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
-- IVET#57006: SYNC_SCHOONMAAK-export loopt al een maand niet meer.
-- Oorzaak volgens MVH dat toe te voegen object soms al
-- bestaat, daarom voortaan ook objecten reanimeren!
v_errormsg := 'Fout bepalen schoonmaak-object (nieuw)';
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d
WHERE d.ins_srtdeel_key = rec.ins_srtdeel_key
AND d.ins_alg_ruimte_key = rec.alg_ruimte_key
AND d.ins_alg_ruimte_type = 'R';
IF v_count = 0
THEN
v_errormsg := 'Fout toevoegen schoonmaak-object';
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);
ELSE
v_errormsg := 'Fout reanimeren schoonmaak-object';
UPDATE ins_deel
SET ins_deel_vervaldatum = SYSDATE,
ins_deel_omschrijving = SUBSTR (rec.alg_ruimte_aanduiding || ' / ' || rec.ins_srtdeel_omschrijving, 1, 60),
ins_deel_actief = 1
WHERE ins_srtdeel_key = rec.ins_srtdeel_key
AND ins_alg_ruimte_key = rec.alg_ruimte_key
AND ins_alg_ruimte_type = 'R';
END IF;
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_aanduiding || v_errormsg, 'SYNC_SCHOONMAAK-export afgebroken!');
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 (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > TRUNC(SYSDATE))
AND sc.ins_srtcontrole_niveau = 'S' --
)
GROUP BY ins_alg_ruimte_key;
-- Dagelijkse taak.
-- Hieronder vallen:
-- - Synchronisatie 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 interval of er nieuwe transportaanvragen binnen EU zijn en stuurt deze naar gebruiker DistributionCoordination.
-- IVET#64921: Transport aanvraag met key=2821 vervallen en notificatiejob omgebutst tbv. reguliere transportaanvragen (met key=5642)!
-- IVET#66301: Als BT direct toegewezen bij aanmaak, dan ook notificeren!
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_TRANSPORT
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST06',
NULL,
NULL,
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud2.fac_usrdata_omschr,
m.mld_melding_key,
NULL,
dp1.mld_disc_params_emailnw3,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km1,
mld_disc_params dp1,
mld_v_aanwezigkenmerkmelding km2,
fac_usrdata ud2
WHERE t.fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (t.fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND t.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 t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = 5642 -- R-Transportaanvraag/Transportaanvraag
AND m.mld_melding_key = km1.mld_melding_key
AND km1.mld_kenmerk_key = 28261 -- Bestemming transport
AND DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 4121, -- Nederland -> BT-Nederland
'10542', 4123, -- Binnen EU (+UK) -> BT-Binnen Europa (+UK)
'10543', 4122, -- Buiten EU -> BT-Buiten Europa
-1) = dp1.mld_ins_discipline_key
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key =
DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 28261, -- Nederland
'10542', 28309, -- Lidstaten EU
'10543', 28308, -- Wereldlanden
-1)
AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud2.fac_usrdata_key(+)
AND NOT EXISTS -- Onderdrukken als andere BT later toegewezen
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key)
UNION
SELECT 'CUST06',
NULL,
NULL,
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud2.fac_usrdata_omschr,
m.mld_melding_key,
NULL,
dp1.mld_disc_params_emailnw3,
NULL
FROM fac_notificatie_job nj,
fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km1,
mld_disc_params dp1,
mld_v_aanwezigkenmerkmelding km2,
fac_usrdata ud2
WHERE nj.fac_notificatie_job_view = 'IVET_V_NOTI_MLD_TRANSPORT'
AND t.fac_srtnotificatie_key = 26 -- MLDNEW
--AND t.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 t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = 5642 -- R-Transportaanvraag/Transportaanvraag
AND m.mld_melding_key = km1.mld_melding_key
AND km1.mld_kenmerk_key = 28261 -- Bestemming transport
--AND DECODE (km1.mld_kenmerkmelding_waarde,
-- '10541', 4121, -- Nederland -> BT-Nederland
-- '10542', 4123, -- Binnen EU (+UK) -> BT-Binnen Europa (+UK)
-- '10543', 4122, -- Buiten EU -> BT-Buiten Europa
-- -1) = dp1.mld_ins_discipline_key
AND m.mld_ins_discipline_key = dp1.mld_ins_discipline_key -- Toegewezen aan BT
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key =
DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 28261, -- Nederland
'10542', 28309, -- Lidstaten EU
'10543', 28308, -- Wereldlanden
-1)
AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud2.fac_usrdata_key(+)
AND NOT EXISTS -- Onderdrukken als andere BT later toegewezen
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key);
-- IVET#28273:
-- Controleert per interval of er nieuwe transportaanvragen buiten EU zijn en stuurt deze naar gebruiker DistributionCoordination.
-- IVET#64921: Transport aanvraag met key=3181 vervallen en deze notificatiejob zou eigenlijk mogen/moeten worden verwijderd!
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_TRANS_BUITENEU
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'CUST06',
NULL,
69501, -- DistributionCoordination-user
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud.fac_usrdata_omschr,
m.mld_melding_key,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (t.fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND t.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 t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = 3181 -- R-Transportaanvraag buiten EU/Transportaanvraag buiten EU
AND m.mld_melding_key = km.mld_melding_key
AND km.mld_kenmerk_key = 13662 -- Wereldanden
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key;
-- IVET#31601:
-- Controleert per interval of er nieuwe ADR transportaanvragen zijn en stuurt deze naar gebruiker DistributionCoordination.
-- IVET#64921: Transport aanvraag met key=3742 vervallen en notificatiejob omgebutst tbv. ADR transportaanvragen (met key=5641)!
CREATE OR REPLACE VIEW IVET_V_NOTI_MLD_ADR_TRANSPORT
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST06',
NULL,
NULL,
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud2.fac_usrdata_omschr,
m.mld_melding_key,
NULL,
dp1.mld_disc_params_emailnw3,
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km1,
mld_disc_params dp1,
mld_v_aanwezigkenmerkmelding km2,
fac_usrdata ud2
WHERE t.fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (t.fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND t.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 t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = 5641 -- R-Transportaanvraag ADR/Transportaanvraag ADR
AND m.mld_melding_key = km1.mld_melding_key
AND km1.mld_kenmerk_key = 27901 -- Bestemming transport
AND DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 4124, -- Nederland -> BT-Nederland (ADR)
'10542', 4126, -- Binnen EU (+UK) -> BT-Binnen Europa (ADR)
'10543', 4125, -- Buiten EU -> BT-Buiten Europa (ADR)
-1) = dp1.mld_ins_discipline_key
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key =
DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 27901, -- Nederland
'10542', 28041, -- Lidstaten EU
'10543', 28021, -- Wereldlanden
-1)
AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud2.fac_usrdata_key
AND NOT EXISTS -- Onderdrukken als andere BT later toegewezen
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key)
UNION
SELECT 'CUST06',
NULL,
NULL,
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud2.fac_usrdata_omschr,
m.mld_melding_key,
NULL,
dp1.mld_disc_params_emailnw3,
NULL
FROM fac_notificatie_job nj,
fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km1,
mld_disc_params dp1,
mld_v_aanwezigkenmerkmelding km2,
fac_usrdata ud2
WHERE nj.fac_notificatie_job_view = 'IVET_V_NOTI_MLD_ADR_TRANSPORT'
AND t.fac_srtnotificatie_key = 26 -- MLDNEW
--AND t.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 t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key = 5641 -- R-Transportaanvraag ADR/Transportaanvraag ADR
AND m.mld_melding_key = km1.mld_melding_key
AND km1.mld_kenmerk_key = 27901 -- Bestemming transport
--AND DECODE (km1.mld_kenmerkmelding_waarde,
-- '10541', 4124, -- Nederland -> BT-Nederland (ADR)
-- '10542', 4126, -- Binnen EU (+UK) -> BT-Binnen Europa (ADR)
-- '10543', 4125, -- Buiten EU -> BT-Buiten Europa (ADR)
-- -1) = dp1.mld_ins_discipline_key
AND m.mld_ins_discipline_key = dp1.mld_ins_discipline_key -- Toegewezen aan BT
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key =
DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 27901, -- Nederland
'10542', 28041, -- Lidstaten EU
'10543', 28021, -- Wereldlanden
-1)
AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud2.fac_usrdata_key(+)
AND NOT EXISTS -- Onderdrukken als andere BT later toegewezen
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key);
-- IVET#73159:
-- Controleert per dagdeel (om 11:00 en 15:00) of er nieuwe transportaanvragen
-- zijn toegewezen Binnen of Buiten Europa en stuurt vervolgens de meldingsbon
-- als CUST08-noti naar zowel de melder als shipplanning@merck.com.
-- Dus g<><67>n notificatie als toegewezen aan BT-Nederland/BT-Nederland (ADR)!
CREATE OR REPLACE VIEW IVET_V_NOTI_SHIP_BINBUI_EU
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT 'CUST08',
NULL,
NULL,
--Uw melding ##KEY## (##DISC##/##STDMLD##) is geregistreerd, -- MLDNEW-omschrijving
'Nieuwe melding: ' || TO_CHAR (m.mld_melding_key) || ' ' || sm.mld_stdmelding_omschrijving || ' - ' || ud2.fac_usrdata_omschr,
m.mld_melding_key,
NULL,
p.prs_perslid_email || ';shipplanning@merck.com',
NULL
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_v_aanwezigkenmerkmelding km1,
mld_disc_params dp1,
mld_v_aanwezigkenmerkmelding km2,
fac_usrdata ud2,
prs_v_aanwezigperslid p
WHERE t.fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (t.fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (t.fac_tracking_oms, INSTR (t.fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
--AND t.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 t.fac_tracking_datum >
DECODE (
TO_CHAR (SYSDATE + 5 / 1440, 'HH24'),
'11', TO_DATE (TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy') || ' 15:00', 'dd-mm-yyyy hh24:mi'),
'15', TO_DATE (TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 11:00', 'dd-mm-yyyy hh24:mi'),
SYSDATE + 5 / 1440)
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_status IN (0, 2, 3, 4, 7, 99) -- Open meldingen
AND m.mld_ins_discipline_key IN (4122, 4123, 4125, 4126) -- BT-Buiten Europa (+UK)/BT-Binnen Europa/BT-Buiten Europa (+UK) (ADR)/BT-Binnen Europa (ADR)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_stdmelding_key IN (5641, 5642) -- R-Transportaanvraag Dangerous Goods/R-Transportaanvraag Regulier
AND m.mld_melding_key = km1.mld_melding_key
AND km1.mld_kenmerk_key = 28261 -- Bestemming transport
AND DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 4121, -- Nederland -> BT-Nederland
'10542', 4123, -- Binnen EU (+UK) -> BT-Binnen Europa (+UK)
'10543', 4122, -- Buiten EU -> BT-Buiten Europa
-1) = dp1.mld_ins_discipline_key
AND m.mld_melding_key = km2.mld_melding_key
AND km2.mld_kenmerk_key =
DECODE (km1.mld_kenmerkmelding_waarde,
'10541', 28261, -- Nederland
'10542', 28309, -- Lidstaten EU
'10543', 28308, -- Wereldlanden
-1)
AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) = ud2.fac_usrdata_key(+)
AND NOT EXISTS -- Onderdrukken als andere BT later toegewezen
(SELECT 1
FROM fac_tracking
WHERE fac_srtnotificatie_key = 28 -- MLDUPD
AND INSTR (fac_tracking_oms, 'Behandelteam:') > 0
AND INSTR (SUBSTR (fac_tracking_oms, INSTR (fac_tracking_oms, 'Behandelteam:')), ' --> ') > 0
AND fac_tracking_refkey = t.fac_tracking_refkey
AND fac_tracking_key > t.fac_tracking_key)
AND m.prs_perslid_key_voor = p.prs_perslid_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 rapport 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#63202: Contractor inspectie rapportage.
/*
1. Lijngrafiek over de laatste 12 (uitvoer)maanden met het totaal aantal CIFs per maand.
2a. Staafgrafiek met totaal aantal CIFs per (uitvoer)maand met per staaf een gekleurd deel per afdeling voor de geselecteerde periode.
2b. Staafgrafiek met totaal aantal CIFs per firma voor de geselecteerde periode.
3. Staafgrafiek met totaal aantal CIFs per (uitvoer)maand/categorie met daarin een groen deel voor de positieve CIFs en een rood deel voor de negatieve CIFs, dus een staaf per (uitvoer)maand/categorie voor de geselecteerde periode.
4a. Staafgrafiek met totaal aantal CIFs per (uitvoer)maand/firma met daarin een groen deel voor de positieve CIFs en een rood deel voor de negatieve CIFs, dus een staaf per (uitvooer)maand/firma voor de geselecteerde periode/firma.
4b. Staafgrafiek met top-10 aantal negatieve CIFs per firma voor de geselecteerde periode/firma.
[4c. Staafgrafiek met top-10 aantal positieve CIFs per firma voor de geselecteerde periode/firma.]
5. Staafgrafiek met totaal aantal *negatieve* CIFs per (uitvoer)maand/firma/categorie (zonder daarin een groen deel voor de positieve CIFs en een rood deel voor de negatieve CIFs!!!), dus een staaf per (uitvoer)maand/firma/categorie voor de geselecteerde periode/firma.
6. Lijst met per verstrekkende afdeling het aantal CIFs voor/over de 10 slechtst presterende firma's voor de geselecteerde periode (met langs x-as de afdelingen en langs y-as de firma's).
Dus totaal 8 (of 9) presentaties inrichten op basis van bij voorkeur 1 (maar misschien meer) te realiseren bron-rapportages. Naast de afstemming tot nu toe, moet je daarbij denken aan zo'n 12-16 uur.
*/
/*
(
hide_f_sortering,
periode, -- Jaar/maand in formaat yyyy-mm
afdelingscode,
afdelingsnaam,
firmanaam,
aant, -- Aantal inspecties per firma (=Firmanaam hoofdcontractor) Hij wil inzicht hoeveel inspecties er voor een firma zijn ingezet
aant_afd, -- Aantallen per afdeling (= Afdeling Opdrachtverstrekker) Hij wil dus inzicht hoeveel rapportages er in een periode ingezet zijn voor bijvoorbeeld FM of GES etc.)
aant_neg, -- Aantal negatieve bevindingen per firma van totaal
tot_gen_cat, -- Aantal negatieve bevindingen per categorie van totaal (1. Start vereisten - 2. Orde / netheid - 3. Werkzaamheden ...-> t/m 10. Milieu)
-- 1 t/m 10
aant_neg_cat, -- Aantal negatieve bevindingen per categorie per firma van totaal
-- 1 t/m 10
)
*/
CREATE OR REPLACE VIEW ivet_v_rap_mld_cif -- Bron-rapportage met alle CIF-meldingen!
AS
SELECT x.mld_melding_key,
DECODE (dat.mld_kenmerkmelding_waarde,
NULL, TO_CHAR (x.mldnew, 'yyyy-mm'),
SUBSTR (dat.mld_kenmerkmelding_waarde, 7, 4) || '-' || SUBSTR (dat.mld_kenmerkmelding_waarde, 4, 2))
maand, -- Als er geen datum is, dan aanmaakmaand=MLDNEW!
COALESCE (fac.safe_to_date (dat.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), x.mldnew) dat, -- Als er geen datum is, dan aanmaakdatum=MLDNEW!
COALESCE (fhc_ud.fac_usrdata_omschr, 'ONBEKEND') fhc, -- Als er geen hoofdcontractor is, dan 'ONBEKEND'!
COALESCE (afd_ud.fac_usrdata_omschr, 'Onbekend') afd, -- Als er geen opdrachtverstrekker is, dan 'Onbekend'!
mcp.mld_kenmerkmelding_waarde mcp,
fsc.mld_kenmerkmelding_waarde fsc,
geb.mld_kenmerkmelding_waarde geb,
COALESCE (hfd1_sv.cnt, 0) hfd1_cnt,
COALESCE (hfd1_sv.pos, 0) hfd1_pos,
COALESCE (hfd1_sv.neg, 0) hfd1_neg,
COALESCE (hfd2_on.cnt, 0) hfd2_cnt,
COALESCE (hfd2_on.pos, 0) hfd2_pos,
COALESCE (hfd2_on.neg, 0) hfd2_neg,
COALESCE (hfd3_wz.cnt, 0) hfd3_cnt,
COALESCE (hfd3_wz.pos, 0) hfd3_pos,
COALESCE (hfd3_wz.neg, 0) hfd3_neg,
COALESCE (hfd4_np.cnt, 0) hfd4_cnt,
COALESCE (hfd4_np.pos, 0) hfd4_pos,
COALESCE (hfd4_np.neg, 0) hfd4_neg,
COALESCE (hfd5_bp.cnt, 0) hfd5_cnt,
COALESCE (hfd5_bp.pos, 0) hfd5_pos,
COALESCE (hfd5_bp.neg, 0) hfd5_neg,
COALESCE (hfd6_gs.cnt, 0) hfd6_cnt,
COALESCE (hfd6_gs.pos, 0) hfd6_pos,
COALESCE (hfd6_gs.neg, 0) hfd6_neg,
COALESCE (hfd7_pbm.cnt, 0) hfd7_cnt,
COALESCE (hfd7_pbm.pos, 0) hfd7_pos,
COALESCE (hfd7_pbm.neg, 0) hfd7_neg,
COALESCE (hfd8_mg.cnt, 0) hfd8_cnt,
COALESCE (hfd8_mg.pos, 0) hfd8_pos,
COALESCE (hfd8_mg.neg, 0) hfd8_neg,
COALESCE (hfd9_hr.cnt, 0) hfd9_cnt,
COALESCE (hfd9_hr.pos, 0) hfd9_pos,
COALESCE (hfd9_hr.neg, 0) hfd9_neg,
COALESCE (hfd10_m.cnt, 0) hfd10_cnt,
COALESCE (hfd10_m.pos, 0) hfd10_pos,
COALESCE (hfd10_m.neg, 0) hfd10_neg
FROM (SELECT mld_melding_key, fac.gettrackingdate ('MLDNEW', mld_melding_key) mldnew
FROM mld_melding
WHERE mld_stdmelding_key = 4741) x -- Contractor inspectie formulier
LEFT JOIN mld_v_aanwezigkenmerkmelding dat -- Datum
ON x.mld_melding_key = dat.mld_melding_key
AND dat.mld_kenmerk_key = 20285
LEFT JOIN mld_v_aanwezigkenmerkmelding fhc -- Firmanaam hoofdcontractor (Soort 24961)
ON x.mld_melding_key = fhc.mld_melding_key
AND fhc.mld_kenmerk_key = 24961
LEFT JOIN fac_usrdata fhc_ud
ON fac.safe_to_number (fhc.mld_kenmerkmelding_waarde) = fhc_ud.fac_usrdata_key
LEFT JOIN mld_v_aanwezigkenmerkmelding afd -- Afdeling opdrachtverstrekker (Soort 24421)
ON x.mld_melding_key = afd.mld_melding_key
AND afd.mld_kenmerk_key = 24421
LEFT JOIN fac_usrdata afd_ud
ON fac.safe_to_number (afd.mld_kenmerkmelding_waarde) = afd_ud.fac_usrdata_key
LEFT JOIN mld_v_aanwezigkenmerkmelding mcp -- MSD Contactpersoon (Soort 20283)
ON x.mld_melding_key = mcp.mld_melding_key
AND mcp.mld_kenmerk_key = 20283
LEFT JOIN mld_v_aanwezigkenmerkmelding fsc -- Firma naam (sub contractor) (Soort 24121)
ON x.mld_melding_key = fsc.mld_melding_key
AND fsc.mld_kenmerk_key = 24121
LEFT JOIN mld_v_aanwezigkenmerkmelding geb -- Locatie / gebouw (Soort 20286)
ON x.mld_melding_key = geb.mld_melding_key
AND geb.mld_kenmerk_key = 20286
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (20421, 20322, 20323, 20324)
GROUP BY mld_melding_key) hfd1_sv -- Start vereisten
ON x.mld_melding_key = hfd1_sv.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (20326, 20327, 20341, 20361, 25941)
GROUP BY mld_melding_key) hfd2_on -- Orde / Netheid
ON x.mld_melding_key = hfd2_on.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (20328, 20330, 20343, 20481, 24206, 24201, 24202, 24203, 24204, 24205)
GROUP BY mld_melding_key) hfd3_wz -- Werkzaamheden
ON x.mld_melding_key = hfd3_wz.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24241, 24242, 24243)
GROUP BY mld_melding_key) hfd4_np -- Noodprocedures
ON x.mld_melding_key = hfd4_np.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24262, 24263, 25961)
GROUP BY mld_melding_key) hfd5_bp -- Brand Preventie
ON x.mld_melding_key = hfd5_bp.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24264, 24265, 24266, 24267)
GROUP BY mld_melding_key) hfd6_gs -- Opslag gevaarlijke stoffen
ON x.mld_melding_key = hfd6_gs.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24321, 24322)
GROUP BY mld_melding_key) hfd7_pbm -- PBMs
ON x.mld_melding_key = hfd7_pbm.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24341, 24361, 24363, 24364, 24365)
GROUP BY mld_melding_key) hfd8_mg -- Materieel / Gereedschap
ON x.mld_melding_key = hfd8_mg.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24382, 24383, 24384, 24385, 24386, 24387, 24388, 24389)
GROUP BY mld_melding_key) hfd9_hr -- Hoog Risico werk
ON x.mld_melding_key = hfd9_hr.mld_melding_key
LEFT JOIN ( SELECT mld_melding_key, COUNT ( * ) cnt, SUM (DECODE (mld_kenmerkmelding_waarde, '1', 1, '9261', 1, 0)) pos, SUM (DECODE (mld_kenmerkmelding_waarde, '2', 1, '9262', 1, 0)) neg
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (24391)
GROUP BY mld_melding_key) hfd10_m -- Milieu
ON x.mld_melding_key = hfd10_m.mld_melding_key
--WHERE COALESCE (SUBSTR (dat.mld_kenmerkmelding_waarde, 7), TO_CHAR (x.mldnew, 'yyyy')) > '2018' -- Die ene melding uit 2018 niet meenemen!
--WHERE x.mld_melding_key > 14000 -- Die ene melding (135147) uit 2018 niet meenemen!
;
-- Staafgrafiek met totaal aantal CIFs per categorie met daarin een groen deel voor de positieve CIFs en een rood deel voor de negatieve CIFs, dus een staaf per categorie voor de geselecteerde periode.
CREATE OR REPLACE VIEW IVET_V_RAP_CIF_CAT_PN_GP
(
MELDING_KEY,
DATUM,
AFDELING,
FIRMA,
CATEGORIE,
POSITIEF,
NEGATIEF
)
AS
SELECT mld_melding_key,
dat,
afd,
fhc,
'01. Start vereisten' cat,
hfd1_pos positief,
hfd1_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd1_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'02. Orde / Netheid' cat,
hfd2_pos positief,
hfd2_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd2_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'03. Werkzaamheden' cat,
hfd3_pos positief,
hfd3_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd3_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'04. Noodprocedures' cat,
hfd4_pos positief,
hfd4_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd4_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'05. Brand Preventie' cat,
hfd5_pos positief,
hfd5_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd5_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'06. Opslag gevaarlijke stoffen' cat,
hfd6_pos positief,
hfd6_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd6_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'07. PBMs' cat,
hfd7_pos positief,
hfd7_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd7_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'08. Materieel / Gereedschap' cat,
hfd8_pos positief,
hfd8_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd8_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'09. Hoog Risico werk' cat,
hfd9_pos positief,
hfd9_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd9_cnt > 0
UNION ALL
SELECT mld_melding_key,
dat,
afd,
fhc,
'10. Milieu' cat,
hfd10_pos positief,
hfd10_neg negatief
FROM ivet_v_rap_mld_cif
WHERE hfd10_cnt > 0;
--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);
/*
SELECT sn.fac_srtnotificatie_code,
NULL,
NULL,
sn.fac_srtnotificatie_oms,
m.mld_melding_key,
NULL,
'Mail.FacilityServices-Huismeester@merck.com',
NULL
FROM fac_tracking t,
mld_melding m,
(SELECT *
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key IN (2822, 4801) -- Datum uit dienst
OR mld_kenmerk_key = 3881) km, -- Verlenging tot en met
fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = 22 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key IN (256, 641, 821) -- Toegangsbadge uitzendkracht/contractor+Verlenging toegangsbadges
AND m.mld_melding_key = km.mld_melding_key
AND TRUNC (TO_DATE (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') - (2 * 7), 'iw') = TRUNC (SYSDATE, 'iw')
AND sn.fac_srtnotificatie_code = 'CUST05'
UNION ALL
*/
-- IVET#61370: CUST05-noti naar medewerker dat toegangspas bijna is verlopen
-- (over zo'n 2 weken) en moet worden verlengd.
CREATE OR REPLACE VIEW ivet_v_noti_verlengen_pas
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
m.prs_perslid_key_voor,
sn.fac_srtnotificatie_oms,
m.mld_melding_key,
NULL,
NULL, --'Mail.FacilityServices-Huismeester@merck.com',
NULL
FROM fac_tracking t, mld_melding m, fac_srtnotificatie sn, prs_perslid p
WHERE t.fac_srtnotificatie_key = 22 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND p.prs_perslid_key = m.prs_perslid_key_voor
AND p.prs_perslid_verwijder is null
AND m.mld_stdmelding_key IN (256, 641) -- Toegangsbadge uitzendkracht/contractor
AND TRUNC (t.fac_tracking_datum + (24 * 7), 'iw') = TRUNC (SYSDATE, 'iw')
AND sn.fac_srtnotificatie_code = 'CUST05'
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
m.prs_perslid_key_voor,
sn.fac_srtnotificatie_oms,
m.mld_melding_key,
NULL,
NULL, --'Mail.FacilityServices-Huismeester@merck.com',
NULL
FROM fac_tracking t,
mld_melding m,
prs_perslid p,
(SELECT *
FROM mld_v_aanwezigkenmerkmelding
WHERE mld_kenmerk_key = 3881) km, -- Verlenging tot en met
fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = 22 -- MLDAFM
AND t.fac_tracking_refkey = m.mld_melding_key
AND p.prs_perslid_key = m.prs_perslid_key_voor
AND p.prs_perslid_verwijder is null
AND m.mld_stdmelding_key = 821 -- Verlenging toegangsbadges
AND m.mld_melding_key = km.mld_melding_key
AND TRUNC (TO_DATE (km.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') - (2 * 7), 'iw') = TRUNC (SYSDATE, 'iw')
AND sn.fac_srtnotificatie_code = 'CUST05';
-- IVET#65839: Domeinview afdelingen.
CREATE OR REPLACE VIEW ivet_v_afdelingen
(
prs_afdeling_key,
prs_afdeling_codeomschr,
prs_afdeling_verwijder
)
AS
SELECT prs_afdeling_key,
prs_afdeling_naam || ' ' || prs_afdeling_omschrijving,
prs_afdeling_verwijder
FROM prs_afdeling;
-- IVET#68372: Bezettingspercentage (WP-reserveringen uit catalogi 4201 en 4321)!
CREATE OR REPLACE VIEW ivet_v_rap_res_wp_bzg
(
fclt_3d_locatie_key,
maand,
catalogus,
locatie,
wp_aant_nl,
wp_aant_loc,
wp_bzg_nl,
wp_bzg_loc
)
AS
WITH rescatl -- Per catalogus/locatie de reserveringen van WP-objecten op tot-tijd!
AS ( SELECT resbes.mnd,
rd.ins_discipline_omschrijving catalogus,
l.alg_locatie_key,
l.alg_locatie_omschrijving locatie_oms,
SUM (resbez.aant) aantal_reserveringen,
SUM (ROUND (resbes.uren, 2)) bes_uren,
SUM (ROUND (resbez.uren, 2)) bez_uren
FROM (SELECT TO_CHAR (p.mnd, 'yyyy-mm') mnd, -- DISTINCT per definitie!
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1) * 9 -- = 17-8
uren
FROM res_deel rd, ins_deel d,
(SELECT ADD_MONTHS (TRUNC (SYSDATE, 'mm'), LEVEL - 26) mnd FROM DUAL CONNECT BY LEVEL <= 25) p
WHERE rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3
AND rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
AND rd.res_deel_aanmaak < ADD_MONTHS (p.mnd, 1)
AND (rd.res_deel_verwijder IS NULL OR rd.res_deel_verwijder >= p.mnd)) resbes,
( SELECT TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm') mnd,
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
COUNT ( * ) aant,
SUM (LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17)
- GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8))
uren
FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d
WHERE rrd.res_rsv_deel_verwijder IS NULL
AND rrd.res_rsv_deel_dirtlevel = 0
AND TRUNC (rrd.res_rsv_deel_van) = TRUNC (rrd.res_rsv_deel_tot) -- Eendaags!
AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25) AND TRUNC (SYSDATE, 'mm')
AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrd.res_rsv_deel_tot))
--AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
--AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
--AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3
AND rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
GROUP BY TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm'),
rd.res_discipline_key,
rd.res_deel_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)
UNION ALL -- Meerdaagse voorzieningen?
SELECT TO_CHAR (p.dag, 'yyyy-mm') mnd,
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
COUNT ( * ) aant,
SUM (DECODE (p.dag,
TRUNC (rrd.res_rsv_deel_van), 17 - GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8),
TRUNC (rrd.res_rsv_deel_tot), LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17) - 8,
9)) -- = 17-8
uren
FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d,
(SELECT TRUNC (SYSDATE, 'mm') - LEVEL dag FROM DUAL CONNECT BY LEVEL <= TRUNC (SYSDATE, 'mm') - ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)) p
WHERE rrd.res_rsv_deel_verwijder IS NULL
AND rrd.res_rsv_deel_dirtlevel = 0
AND TRUNC (rrd.res_rsv_deel_van) != TRUNC (rrd.res_rsv_deel_tot) -- Meerdaags!
AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25) AND TRUNC (SYSDATE, 'mm')
--AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
--AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
--AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key IN (4201, 4321) -- Flex/hybride werkplekken+Flex/Hybryde WP PD001-3
AND rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
AND p.dag BETWEEN TRUNC (rrd.res_rsv_deel_van) AND TRUNC (rrd.res_rsv_deel_tot)
AND TO_CHAR (p.dag, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (p.dag))
GROUP BY TO_CHAR (p.dag, 'yyyy-mm'),
rd.res_discipline_key,
rd.res_deel_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)) resbez,
res_discipline rd, -- Ook verwijderde catalogi!
alg_v_onrgoed_boom aob, -- Ook verwijderde ruimten!
alg_locatie l -- Ook verwijderde locaties!
WHERE resbes.mnd = resbez.mnd(+)
AND resbes.res_discipline_key = resbez.res_discipline_key(+)
AND resbes.resource_key = resbez.resource_key(+)
AND resbes.alg_ruimte_key = resbez.alg_ruimte_key(+)
AND resbes.res_discipline_key = rd.ins_discipline_key(+)
AND resbes.alg_ruimte_key = aob.alg_ruimte_key
AND aob.alg_locatie_key = l.alg_locatie_key
AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)!
AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)!
GROUP BY l.alg_locatie_key,
resbes.mnd,
rd.ins_discipline_omschrijving,
l.alg_locatie_omschrijving)
SELECT loc.alg_locatie_key, nl.mnd, nl.catalogus,
loc.locatie_oms,
TO_CHAR (nl.ant_nl, '999990'),
TO_CHAR (loc.ant_loc, '999990'),
TO_CHAR (100 * nl.bzg_nl, '990') || '%',
TO_CHAR (100 * loc.bzg_loc, '990') || '%'
FROM ( SELECT mnd, catalogus, SUM (aantal_reserveringen) ant_nl, SUM (COALESCE (bez_uren, 0)) / SUM (bes_uren) bzg_nl
FROM rescatl
GROUP BY mnd, catalogus) nl
LEFT JOIN (SELECT mnd, catalogus, alg_locatie_key, locatie_oms, aantal_reserveringen ant_loc, COALESCE (bez_uren, 0) / bes_uren bzg_loc
FROM rescatl) loc
ON nl.mnd = loc.mnd AND nl.catalogus = loc.catalogus;
-- IVET#69716: CUST07-notificatie naar bezitter om PBM om te wisselen.
CREATE OR REPLACE VIEW IVET_V_NOTI_PBM
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
d.ins_alg_ruimte_key,
REPLACE (sn.fac_srtnotificatie_oms, '##OBJSRT##', sd.ins_srtdeel_omschrijving),
d.ins_deel_key,
NULL,
NULL,
NULL
FROM ins_v_aanwezigdeel d,
ins_srtdeel sd,
fac_srtnotificatie sn
WHERE d.ins_srtdeel_key IN (3501, 3521, 3541, 3561, 3581) -- Beeldschermbril/Correctiebril/Oordop/Steunzool/Insert
AND d.ins_alg_ruimte_type = 'P'
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ADD_MONTHS (trunc (d.ins_deel_vervaldatum), -2) = TRUNC (SYSDATE)
AND sn.fac_srtnotificatie_code = 'CUST07';
-- IVET#69249: Bronview tbv. lopende meldingen per vakgroep op tijd/te laat!
CREATE OR REPLACE VIEW IVET_V_UDR_MELDING_OPEN
(
fclt_3d_discipline_key,
vakgroeptype,
vakgroep,
soortmelding,
mld_melding_key,
status,
uitvoering
)
AS
SELECT md.ins_discipline_key,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving,
sm.mld_stdmelding_omschrijving,
m.mld_melding_key,
ms.mld_statuses_omschrijving,
DECODE (SIGN (m.mld_melding_einddatum - TRUNC (SYSDATE, 'mi')),
-1,
'3. Te laat', -- Zelfs volgens afspraak=gereeddatum te laat!
DECODE (SIGN (m.mld_melding_einddatum_std - TRUNC (SYSDATE, 'mi')),
-1,
'2. Op schema', -- Volgens afspraak en te laat volgens SLA!
'1. Op tijd')) -- Volgens afspraak en op tijd volgens SLA!
uitvoering
FROM mld_melding m,
mld_discipline md,
mld_stdmelding sm,
ins_srtdiscipline sd,
mld_statuses ms
WHERE m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_melding_status = ms.mld_statuses_key
AND ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99);
------ 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