3052 lines
124 KiB
MySQL
3052 lines
124 KiB
MySQL
-- Script containing customer specific db-configuration for ARBO.
|
|
-- (c) 2011 SG|facilitor bv
|
|
-- $Revision$
|
|
-- $Id$
|
|
--
|
|
-- Support: +31 53 4800700
|
|
|
|
set echo on
|
|
|
|
spool xarbo.lst
|
|
|
|
CREATE OR REPLACE VIEW arbo_v_rap_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 = 61);
|
|
|
|
/* Formatted on 30-3-2011 14:00:30 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE PROCEDURE arbo_import_prs (p_import_key IN NUMBER)
|
|
IS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
-- LET OP: moet idem zijn als declaratie bij ARBO_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_prs_perslid_nr 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_alg_locatie_code VARCHAR2 (256);
|
|
v_alg_gebouw_code VARCHAR2 (256);
|
|
v_alg_verdieping_code VARCHAR2 (256);
|
|
v_alg_ruimte_nr 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);
|
|
-- Overig:
|
|
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 arbo_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_prs_perslid_nr);
|
|
-- 02
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_titel);
|
|
-- 03
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
|
-- 04
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_tussenvoegsel);
|
|
-- 05
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_voorletters);
|
|
-- 06
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_voornaam);
|
|
-- 07
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
|
|
-- 08
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_afdeling_omschrijving);
|
|
-- 09
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_srtperslid_omschrijving);
|
|
-- 10
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
|
|
-- 11
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
|
|
-- 12
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_alg_verdieping_code);
|
|
-- 13
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
|
|
-- 14
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_telefoonnr);
|
|
-- 15
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
|
-- 16
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_oslogin);
|
|
-- 17
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_ingangsdatum);
|
|
-- 18
|
|
fac.imp_getfield (v_newline,
|
|
c_fielddelimitor,
|
|
v_prs_perslid_einddatum);
|
|
--
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_prs_perslid_nr
|
|
|| '|'
|
|
|| 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_prs_perslid_nr) = 'PERSONEELSNUMMER'
|
|
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_alg_locatie_code) = 'LOCATIECODE'
|
|
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
|
AND UPPER (v_alg_verdieping_code) = 'BOUWLAAGVOLGNUMMER'
|
|
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
|
|
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'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errorhint := 'Ongeldig personeelsnummer';
|
|
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
|
|
|
IF (v_prs_perslid_nr IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Personeelsnummer (= login) onbekend',
|
|
'Personeelsnummer is verplicht; regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
ELSE
|
|
-- Personeelsnummers met lengte <5 links aanvullen met nullen!!!
|
|
-- LET OP: Personeelsnummer wordt 1-op-1 gebruikt als loginnaam!
|
|
IF LENGTH (v_prs_perslid_nr) < 5
|
|
THEN
|
|
v_prs_perslid_nr := SUBSTR ('0000' || v_prs_perslid_nr, -5);
|
|
ELSE
|
|
IF LENGTH (v_prs_perslid_nr) > 16
|
|
THEN
|
|
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Personeelsnummer te lang',
|
|
'Personeelsnummer wordt afgebroken tot ['
|
|
|| v_prs_perslid_nr
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
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;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige locatiecode';
|
|
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 10
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Locatiecode te lang',
|
|
'Locatiecode wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige gebouwcode';
|
|
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
|
|
|
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',
|
|
'Gebouwcode wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldige verdiepingcode';
|
|
v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
|
|
|
|
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',
|
|
'Verdiepingcode wordt afgebroken tot ['
|
|
|| v_alg_verdieping_code
|
|
|| ']'
|
|
);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig ruimtenummer';
|
|
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
|
|
|
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',
|
|
'Ruimtenummer 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;
|
|
|
|
-- LET OP: Personeelsnummer wordt 1-op-1 gebruikt als loginnaam!
|
|
v_errorhint := 'Ongeldige loginnaam';
|
|
v_prs_perslid_oslogin := v_prs_perslid_nr;
|
|
|
|
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;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errorhint :=
|
|
'Fout bij toevoegen regel aan importtabel ARBO_IMP_PRS';
|
|
|
|
INSERT INTO arbo_imp_prs (imp_datum,
|
|
prs_perslid_nr,
|
|
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)
|
|
VALUES (SYSDATE,
|
|
v_prs_perslid_nr,
|
|
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);
|
|
|
|
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 arbo_import_prs;
|
|
/
|
|
|
|
/* Formatted on 30-3-2011 14:00:30 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE PROCEDURE arbo_update_prs (p_import_key IN NUMBER)
|
|
IS
|
|
-- LET OP: moet idem zijn als declaratie bij ARBO_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;
|
|
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
|
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
|
|
c_profiel_omschrijving VARCHAR2 (30) := 'DEFAULT';
|
|
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_perslid_key NUMBER (10);
|
|
v_afdeling_key NUMBER (10);
|
|
v_kostenplaats_key NUMBER (10);
|
|
v_srtperslid_key NUMBER (10);
|
|
v_locatie_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 arbo_imp_prs!
|
|
-- Dubbele nummers? 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
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
--AND p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM arbo_imp_prs ip
|
|
WHERE UPPER (ip.prs_perslid_nr) =
|
|
UPPER (p.prs_perslid_nr));
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in arbo_imp_prs!
|
|
CURSOR csrtperslid
|
|
IS
|
|
SELECT MIN (prs_perslid_nr) prs_perslid_nr,
|
|
MIN (prs_perslid_naam) prs_perslid_naam,
|
|
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
|
|
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
|
FROM arbo_imp_prs
|
|
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in arbo_imp_prs!
|
|
-- Dubbele nummers? Dan wordt slechts 1 set persoongegevens toegevoegd!
|
|
-- Ook wordt in deze loop de afdelingsomschrijving eventueel bijgewerkt!
|
|
CURSOR cperslid
|
|
IS
|
|
SELECT * FROM arbo_imp_prs;
|
|
|
|
-- Let op! Personen die niet meer in dienst zijn -> niet in arbo_imp_prs!
|
|
-- Dubbele nummers? Dan krijgt iemand mogelijk de verkeerde plaats!
|
|
CURSOR cwp
|
|
IS
|
|
SELECT p.*,
|
|
ip.alg_locatie_code,
|
|
ip.alg_gebouw_code,
|
|
ip.alg_verdieping_code,
|
|
ip.alg_ruimte_nr
|
|
FROM arbo_imp_prs ip, prs_v_aanwezigperslid p
|
|
WHERE UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr)
|
|
AND ( ip.alg_locatie_code IS NOT NULL
|
|
OR ip.alg_gebouw_code IS NOT NULL
|
|
OR ip.alg_verdieping_code IS NOT NULL
|
|
OR ip.alg_ruimte_nr IS NOT NULL);
|
|
|
|
-- Alle actieve personen met nummer (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
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslidwerkplek pw
|
|
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
|
|
|
-- Alle aanwezige personen met nummer (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
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM fac_gebruikersgroep g
|
|
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
|
BEGIN
|
|
-- Bepaal nummer-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 ARBO_IMP_PRS).
|
|
SELECT COUNT ( * )
|
|
INTO v_count_prs_import
|
|
FROM prs_v_aanwezigperslid p, arbo_imp_prs ip
|
|
WHERE p.prs_perslid_nr IS NOT NULL
|
|
AND UPPER (p.prs_perslid_nr) = UPPER (ip.prs_perslid_nr)
|
|
AND (ip.imp_datum + 0.01) > SYSDATE;
|
|
|
|
-- Bepaal huidig aantal actieve personen in Facilitor.
|
|
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
|
INTO v_count_prs_actual
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_nr IS NOT NULL;
|
|
|
|
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 nummer ['
|
|
|| 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 nummer ['
|
|
|| 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 nummer ['
|
|
|| 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_perslid_nr
|
|
|| '|'
|
|
|| recsrtperslid.prs_perslid_naam
|
|
|| '|'
|
|
|| recsrtperslid.prs_perslid_voornaam
|
|
|| '|'
|
|
|| 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.prs_perslid_nr
|
|
|| '|'
|
|
|| 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
|
|
WHERE UPPER (prs_perslid_nr) =
|
|
UPPER (recperslid.prs_perslid_nr);
|
|
|
|
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.prs_perslid_nr,
|
|
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;
|
|
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;
|
|
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_locatie_code
|
|
|| '|'
|
|
|| 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
|
|
WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
|
|
|
|
v_locatie_key := NULL;
|
|
v_gebouw_key := NULL;
|
|
v_verdieping_key := NULL;
|
|
v_ruimte_key := NULL;
|
|
|
|
v_errorhint := 'Fout bij bepalen locatie';
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE UPPER (alg_locatie_code) =
|
|
UPPER (recwp.alg_locatie_code);
|
|
|
|
v_errorhint := 'Fout bij bepalen gebouw';
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code)
|
|
AND alg_locatie_key = v_locatie_key;
|
|
|
|
v_errorhint := 'Fout bij bepalen verdieping';
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE UPPER (alg_verdieping_code) =
|
|
UPPER (recwp.alg_verdieping_code)
|
|
AND alg_gebouw_key = v_gebouw_key;
|
|
|
|
v_errorhint := 'Fout bij bepalen ruimte';
|
|
|
|
SELECT alg_ruimte_key
|
|
INTO v_ruimte_key
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE UPPER (alg_ruimte_nr) = UPPER (recwp.alg_ruimte_nr)
|
|
AND alg_verdieping_key = v_verdieping_key;
|
|
|
|
-- Verwijder oude werkplek op dezelfde locatie, tenzij ongewijzigd!
|
|
v_errorhint := 'Fout bij bepalen of werkplek is gewijzigd';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM prs_v_aanwezigperslidwerkplek 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
|
|
v_errorhint := 'Fout bij verwijderen oude werkplek op locatie';
|
|
|
|
UPDATE prs_perslidwerkplek
|
|
SET prs_perslidwerkplek_verwijder = SYSDATE
|
|
WHERE prs_perslidwerkplek_key IN
|
|
(SELECT pw.prs_perslidwerkplek_key
|
|
FROM prs_v_aanwezigperslidwerkplek pw,
|
|
prs_werkplek w,
|
|
alg_ruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g
|
|
WHERE pw.prs_perslid_key = v_perslid_key
|
|
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 = v_locatie_key);
|
|
|
|
COMMIT;
|
|
END IF;
|
|
|
|
-- Als persoon nu nog een werkplek heeft op locatie, dan gebeurt
|
|
-- daar niets mee (nl. ongewijzgd)!
|
|
v_errorhint :=
|
|
'Fout bij bepalen of persoon op locatie een werkplek heeft';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM prs_v_aanwezigperslidwerkplek pw,
|
|
prs_werkplek w,
|
|
alg_ruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g
|
|
WHERE pw.prs_perslid_key = v_perslid_key
|
|
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 = v_locatie_key;
|
|
|
|
-- v_count=0 -> persoon verhuist naar/krijgt wp op locatie.
|
|
IF v_count = 0 AND v_ruimte_key IS NOT NULL
|
|
THEN
|
|
v_errorhint := 'Fout bij bepalen vrije werkplek';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO v_count
|
|
FROM prs_v_aanwezigwerkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslidwerkplek pw
|
|
WHERE pw.prs_werkplek_key =
|
|
w.prs_werkplek_key);
|
|
|
|
IF v_count > 0
|
|
THEN
|
|
SELECT MIN (w.prs_werkplek_key)
|
|
INTO v_wp_key
|
|
FROM prs_v_aanwezigwerkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM prs_v_aanwezigperslidwerkplek pw
|
|
WHERE pw.prs_werkplek_key =
|
|
w.prs_werkplek_key);
|
|
|
|
-- Verwijder (hard) de mogelijk eerder logisch verwijderde
|
|
-- koppeling tussen dezelfde persoon en werkplek!!!
|
|
DELETE FROM prs_perslidwerkplek pw
|
|
WHERE pw.prs_perslid_key = v_perslid_key
|
|
AND pw.prs_werkplek_key = v_wp_key
|
|
AND pw.prs_perslidwerkplek_verwijder IS NOT NULL;
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan vrije werkplek';
|
|
|
|
INSERT INTO prs_perslidwerkplek (
|
|
prs_perslid_key,
|
|
prs_werkplek_key,
|
|
prs_perslidwerkplek_bezetting
|
|
)
|
|
VALUES (v_perslid_key, v_wp_key, 100);
|
|
|
|
COMMIT;
|
|
ELSE
|
|
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
|
|
|
|
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
|
|
INTO v_wp_volgnr
|
|
FROM prs_werkplek w
|
|
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
|
|
|
|
v_wp_oms := v_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
|
|
|
|
v_errorhint := 'Fout bij toevoegen nieuwe werkplek';
|
|
|
|
INSERT INTO prs_werkplek (prs_werkplek_module,
|
|
prs_werkplek_volgnr,
|
|
prs_werkplek_omschrijving,
|
|
prs_alg_ruimte_key)
|
|
VALUES ('PRR',
|
|
v_wp_volgnr,
|
|
v_wp_oms,
|
|
v_ruimte_key)
|
|
RETURNING prs_werkplek_key INTO v_wp_key;
|
|
|
|
v_errorhint :=
|
|
'Fout bij koppelen persoon aan nieuwe werkplek';
|
|
|
|
INSERT INTO prs_perslidwerkplek (
|
|
prs_perslid_key,
|
|
prs_werkplek_key,
|
|
prs_perslidwerkplek_bezetting
|
|
)
|
|
VALUES (v_perslid_key, v_wp_key, 100);
|
|
|
|
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',
|
|
'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 nummer ['
|
|
|| 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!
|
|
DELETE FROM prs_srtperslid sp
|
|
WHERE NOT EXISTS
|
|
(SELECT 1
|
|
FROM prs_perslid 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 arbo_update_prs;
|
|
/
|
|
|
|
-- ARBO#20210 AutoClose alle bestellingen noti-dagen na aanmaken.
|
|
CREATE OR REPLACE PROCEDURE arbo_select_autoclose (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2
|
|
)
|
|
AS
|
|
BEGIN
|
|
NULL;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE FORCE VIEW arbo_v_export_autoclose (RESULT, result_order)
|
|
AS
|
|
SELECT '', 0
|
|
FROM DUAL
|
|
WHERE 1 = 0;
|
|
/
|
|
|
|
/* Formatted on 1-4-2011 14:48:18 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE PROCEDURE arbo_export_autoclose (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2,
|
|
p_filedir IN VARCHAR2,
|
|
p_filename IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
FOR rc
|
|
IN (SELECT boi.bes_bestelopdr_item_key, bo.bes_bestelopdr_key
|
|
FROM bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_bestelling_item bi,
|
|
bes_bestelling b,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
bes_disc_params bdp
|
|
WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bo.bes_bestelopdr_status = 4 -- In bestelling
|
|
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
|
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
--AND sg.ins_discipline_key = -1
|
|
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
|
|
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
|
|
AND (b.bes_bestelling_datum IS NULL
|
|
OR fac.datumtijdplusuitvoertijd (
|
|
b.bes_bestelling_leverdatum,
|
|
bdp.bes_disc_params_noti_dagen,
|
|
'DAGEN'
|
|
) < SYSDATE))
|
|
LOOP
|
|
UPDATE bes_bestelopdr_item
|
|
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
|
|
WHERE bes_bestelopdr_item_key = rc.bes_bestelopdr_item_key;
|
|
|
|
bes.updatebestelopdrstatus (rc.bes_bestelopdr_key, NULL);
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
|
|
FOR rc
|
|
IN (SELECT bi.bes_bestelling_item_key, bi.bes_bestelling_key
|
|
FROM bes_bestelling_item bi, bes_bestelopdr_item boi
|
|
WHERE bi.bes_bestelling_item_aantal <>
|
|
NVL (bi.bes_bestelling_item_aantalontv, 0)
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_item_aantal =
|
|
boi.bes_bestelopdr_item_aantalontv)
|
|
LOOP
|
|
UPDATE bes_bestelling_item
|
|
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
|
|
WHERE bes_bestelling_item_key = rc.bes_bestelling_item_key;
|
|
|
|
bes.updatebestellingstatus (rc.bes_bestelling_key, NULL);
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
/* Formatted on 14-10-2011 16:26:54 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_ruimteoverzicht
|
|
(
|
|
fclt_f_locatie,
|
|
fclt_f_gebouw,
|
|
fclt_f_verdieping,
|
|
ruimtenr,
|
|
omschrijving,
|
|
fclt_f_ruimtefunctie,
|
|
fclt_f_vloersoort,
|
|
oppervlak
|
|
)
|
|
AS
|
|
SELECT a.alg_locatie_code,
|
|
a.alg_gebouw_code,
|
|
a.alg_verdieping_code,
|
|
a.alg_ruimte_nr,
|
|
a.alg_ruimte_omschrijving,
|
|
a.ruimtefunctie,
|
|
b.vloersoort,
|
|
a.opp
|
|
FROM (SELECT r.alg_ruimte_key,
|
|
r.alg_ruimte_nr,
|
|
r.alg_ruimte_omschrijving,
|
|
v.alg_verdieping_code,
|
|
g.alg_gebouw_code,
|
|
l.alg_locatie_code,
|
|
sr.alg_srtruimte_upper ruimtefunctie,
|
|
r.alg_ruimte_bruto_vloeropp opp
|
|
FROM alg_v_aanwezigruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g,
|
|
alg_locatie l,
|
|
alg_srtruimte sr
|
|
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)) a
|
|
LEFT JOIN
|
|
(SELECT ok.alg_onrgoed_key, ud.fac_usrdata_omschr vloersoort
|
|
FROM alg_onrgoedkenmerk ok, fac_usrdata ud
|
|
WHERE ok.alg_kenmerk_key = 1020 -- Vloersoort
|
|
AND ok.alg_onrgoed_niveau = 'R'
|
|
AND ok.alg_onrgoedkenmerk_waarde =
|
|
ud.fac_usrdata_key) b
|
|
ON a.alg_ruimte_key = b.alg_onrgoed_key;
|
|
|
|
-- Bevat CUST01- en CUST02-reminder naar beheerder verantwoordelijk voor de
|
|
-- keuring van betreffende objecten.
|
|
-- CUST01: wekelijks mbt. over 2 tot 3 weken te keuren objecten!
|
|
-- CUST02: wekelijks mbt. objecten waarvan keuringsdatum een week is verstreken!
|
|
/* Formatted on 26-1-2012 10:10:10 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_NOTI_KEURINGREMINDER
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
KEY,
|
|
par1,
|
|
par2,
|
|
xkey
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
sn.fac_srtnotificatie_code code,
|
|
NULL sender,
|
|
gg.prs_perslid_key receiver,
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
sn.fac_srtnotificatie_oms,
|
|
'##SRTGROEP##',
|
|
DECODE (x.min_srtgroep_oms,
|
|
x.max_srtgroep_oms, x.min_srtgroep_oms,
|
|
x.min_srtgroep_oms || ', ...')
|
|
),
|
|
'##AANTAL##',
|
|
x.aantal
|
|
),
|
|
'##REGIO##',
|
|
(SELECT alg_regio_omschrijving
|
|
FROM alg_regio
|
|
WHERE alg_regio_key = x.alg_regio_key)
|
|
)
|
|
subject,
|
|
x.dummy_deel_key, -- Dummy key!!!
|
|
NULL,
|
|
NULL,
|
|
x.alg_regio_key
|
|
FROM ( SELECT o.alg_regio_key,
|
|
MIN (o.ins_srtgroep_omschrijving) min_srtgroep_oms,
|
|
MAX (o.ins_srtgroep_omschrijving) max_srtgroep_oms,
|
|
MIN (o.ins_deel_key) dummy_deel_key,
|
|
COUNT (DISTINCT o.ins_deel_key) aantal
|
|
FROM (SELECT scs.ins_srtinstallatie_key
|
|
ins_srtdeel_key,
|
|
scs.ins_srtcontrole_key,
|
|
scs.ins_srtcontrole_omschrijving,
|
|
scs.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scs
|
|
WHERE scs.ins_srtcontrole_niveau = 'S'
|
|
UNION ALL
|
|
SELECT sd.ins_srtdeel_key,
|
|
scg.ins_srtcontrole_key,
|
|
scg.ins_srtcontrole_omschrijving,
|
|
scg.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scg, ins_srtdeel sd
|
|
WHERE scg.ins_srtcontrole_niveau = 'G'
|
|
AND scg.ins_srtinstallatie_key =
|
|
sd.ins_srtgroep_key
|
|
UNION ALL
|
|
SELECT sd.ins_srtdeel_key,
|
|
scd.ins_srtcontrole_key,
|
|
scd.ins_srtcontrole_omschrijving,
|
|
scd.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scd,
|
|
ins_srtgroep sg,
|
|
ins_srtdeel sd
|
|
WHERE scd.ins_srtcontrole_niveau = 'D'
|
|
AND scd.ins_srtinstallatie_key =
|
|
sg.ins_discipline_key
|
|
AND sg.ins_srtgroep_key =
|
|
sd.ins_srtgroep_key) cso -- ControleSoortObjecten
|
|
LEFT JOIN
|
|
(SELECT d.ins_deel_key,
|
|
d.ins_deel_aanmaak,
|
|
sd.ins_srtdeel_key,
|
|
sg.ins_srtgroep_omschrijving,
|
|
td.ins_discipline_key,
|
|
td.ins_discipline_omschrijving,
|
|
d.alg_regio_key
|
|
FROM ins_v_aanwezigdeel d,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg,
|
|
ins_tab_discipline td,
|
|
alg_locatie l,
|
|
alg_district d
|
|
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key =
|
|
sg.ins_srtgroep_key
|
|
AND sg.ins_discipline_key =
|
|
td.ins_discipline_key
|
|
AND d.ins_alg_locatie_key =
|
|
l.alg_locatie_key
|
|
AND l.alg_district_key =
|
|
d.alg_district_key) o -- Objecten
|
|
ON cso.ins_srtdeel_key = o.ins_srtdeel_key
|
|
LEFT JOIN
|
|
(SELECT dsc.ins_deel_key,
|
|
dsc.ins_srtcontrole_key,
|
|
dsc.ins_deelsrtcontrole_datum,
|
|
dsc.ins_deelsrtcontrole_opmerking
|
|
FROM ins_deelsrtcontrole dsc
|
|
WHERE dsc.ins_deelsrtcontrole_datum =
|
|
(SELECT MAX (
|
|
ins_deelsrtcontrole_datum
|
|
)
|
|
FROM ins_deelsrtcontrole
|
|
WHERE ins_deel_key =
|
|
dsc.ins_deel_key
|
|
AND ins_srtcontrole_key =
|
|
dsc.ins_srtcontrole_key))
|
|
olc -- ObjectLaatsteControle
|
|
ON o.ins_deel_key = olc.ins_deel_key
|
|
AND cso.ins_srtcontrole_key =
|
|
olc.ins_srtcontrole_key
|
|
WHERE COALESCE (olc.ins_deelsrtcontrole_datum,
|
|
o.ins_deel_aanmaak)
|
|
+ cso.ins_srtcontrole_periode BETWEEN TRUNC (
|
|
SYSDATE + 14
|
|
)
|
|
AND TRUNC (
|
|
SYSDATE + 21
|
|
)
|
|
GROUP BY o.alg_regio_key) x,
|
|
alg_district d,
|
|
alg_locatie l,
|
|
alg_gebouw g,
|
|
alg_verdieping v,
|
|
alg_ruimte r,
|
|
prs_v_aanwezigwerkplek wp,
|
|
prs_v_aanwezigperslidwerkplek pw,
|
|
fac_gebruikersgroep gg,
|
|
fac_srtnotificatie sn
|
|
WHERE x.alg_regio_key = d.alg_regio_key
|
|
AND d.alg_district_key = l.alg_district_key
|
|
AND l.alg_locatie_key = g.alg_locatie_key
|
|
AND g.alg_gebouw_key = v.alg_gebouw_key
|
|
AND v.alg_verdieping_key = r.alg_verdieping_key
|
|
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
|
AND wp.prs_werkplek_key = pw.prs_werkplek_key
|
|
AND pw.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key IN (23, 161) -- BO Huismeester/Onderhoudscoordinator
|
|
AND sn.fac_srtnotificatie_code = 'CUST01'
|
|
UNION ALL
|
|
SELECT DISTINCT
|
|
sn.fac_srtnotificatie_code code,
|
|
NULL sender,
|
|
gg.prs_perslid_key receiver,
|
|
REPLACE (
|
|
REPLACE (
|
|
REPLACE (
|
|
sn.fac_srtnotificatie_oms,
|
|
'##SRTGROEP##',
|
|
DECODE (x.min_srtgroep_oms,
|
|
x.max_srtgroep_oms, x.min_srtgroep_oms,
|
|
x.min_srtgroep_oms || ', ...')
|
|
),
|
|
'##AANTAL##',
|
|
x.aantal
|
|
),
|
|
'##REGIO##',
|
|
(SELECT alg_regio_omschrijving
|
|
FROM alg_regio
|
|
WHERE alg_regio_key = x.alg_regio_key)
|
|
)
|
|
subject,
|
|
x.dummy_deel_key, -- Dummy key!!!
|
|
NULL,
|
|
NULL,
|
|
x.alg_regio_key
|
|
FROM ( SELECT o.alg_regio_key,
|
|
MIN (o.ins_srtgroep_omschrijving) min_srtgroep_oms,
|
|
MAX (o.ins_srtgroep_omschrijving) max_srtgroep_oms,
|
|
MIN (o.ins_deel_key) dummy_deel_key,
|
|
COUNT (DISTINCT o.ins_deel_key) aantal
|
|
FROM (SELECT scs.ins_srtinstallatie_key
|
|
ins_srtdeel_key,
|
|
scs.ins_srtcontrole_key,
|
|
scs.ins_srtcontrole_omschrijving,
|
|
scs.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scs
|
|
WHERE scs.ins_srtcontrole_niveau = 'S'
|
|
UNION ALL
|
|
SELECT sd.ins_srtdeel_key,
|
|
scg.ins_srtcontrole_key,
|
|
scg.ins_srtcontrole_omschrijving,
|
|
scg.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scg, ins_srtdeel sd
|
|
WHERE scg.ins_srtcontrole_niveau = 'G'
|
|
AND scg.ins_srtinstallatie_key =
|
|
sd.ins_srtgroep_key
|
|
UNION ALL
|
|
SELECT sd.ins_srtdeel_key,
|
|
scd.ins_srtcontrole_key,
|
|
scd.ins_srtcontrole_omschrijving,
|
|
scd.ins_srtcontrole_periode
|
|
FROM ins_srtcontrole scd,
|
|
ins_srtgroep sg,
|
|
ins_srtdeel sd
|
|
WHERE scd.ins_srtcontrole_niveau = 'D'
|
|
AND scd.ins_srtinstallatie_key =
|
|
sg.ins_discipline_key
|
|
AND sg.ins_srtgroep_key =
|
|
sd.ins_srtgroep_key) cso -- ControleSoortObjecten
|
|
LEFT JOIN
|
|
(SELECT d.ins_deel_key,
|
|
d.ins_deel_aanmaak,
|
|
sd.ins_srtdeel_key,
|
|
sg.ins_srtgroep_omschrijving,
|
|
td.ins_discipline_key,
|
|
td.ins_discipline_omschrijving,
|
|
d.alg_regio_key
|
|
FROM ins_v_aanwezigdeel d,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg,
|
|
ins_tab_discipline td,
|
|
alg_locatie l,
|
|
alg_district d
|
|
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key =
|
|
sg.ins_srtgroep_key
|
|
AND sg.ins_discipline_key =
|
|
td.ins_discipline_key
|
|
AND d.ins_alg_locatie_key =
|
|
l.alg_locatie_key
|
|
AND l.alg_district_key =
|
|
d.alg_district_key) o -- Objecten
|
|
ON cso.ins_srtdeel_key = o.ins_srtdeel_key
|
|
LEFT JOIN
|
|
(SELECT dsc.ins_deel_key,
|
|
dsc.ins_srtcontrole_key,
|
|
dsc.ins_deelsrtcontrole_datum,
|
|
dsc.ins_deelsrtcontrole_opmerking
|
|
FROM ins_deelsrtcontrole dsc
|
|
WHERE dsc.ins_deelsrtcontrole_datum =
|
|
(SELECT MAX (
|
|
ins_deelsrtcontrole_datum
|
|
)
|
|
FROM ins_deelsrtcontrole
|
|
WHERE ins_deel_key =
|
|
dsc.ins_deel_key
|
|
AND ins_srtcontrole_key =
|
|
dsc.ins_srtcontrole_key))
|
|
olc -- ObjectLaatsteControle
|
|
ON o.ins_deel_key = olc.ins_deel_key
|
|
AND cso.ins_srtcontrole_key =
|
|
olc.ins_srtcontrole_key
|
|
WHERE COALESCE (olc.ins_deelsrtcontrole_datum,
|
|
o.ins_deel_aanmaak)
|
|
+ cso.ins_srtcontrole_periode < TRUNC (SYSDATE - 7)
|
|
GROUP BY o.alg_regio_key) x,
|
|
alg_district d,
|
|
alg_locatie l,
|
|
alg_gebouw g,
|
|
alg_verdieping v,
|
|
alg_ruimte r,
|
|
prs_v_aanwezigwerkplek wp,
|
|
prs_v_aanwezigperslidwerkplek pw,
|
|
fac_gebruikersgroep gg,
|
|
fac_srtnotificatie sn
|
|
WHERE x.alg_regio_key = d.alg_regio_key
|
|
AND d.alg_district_key = l.alg_district_key
|
|
AND l.alg_locatie_key = g.alg_locatie_key
|
|
AND g.alg_gebouw_key = v.alg_gebouw_key
|
|
AND v.alg_verdieping_key = r.alg_verdieping_key
|
|
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
|
AND wp.prs_werkplek_key = pw.prs_werkplek_key
|
|
AND pw.prs_perslid_key = gg.prs_perslid_key
|
|
AND gg.fac_groep_key IN (23, 161) -- BO Huismeester/Onderhoudscoordinator
|
|
AND sn.fac_srtnotificatie_code = 'CUST02';
|
|
|
|
/* Formatted on 9-2-2012 13:24:42 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_UC_RELATIES (BEDRIJF_KEY, BEDRIJF_NAAM)
|
|
AS
|
|
SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
|
|
FROM prs_v_aanwezigbedrijf b
|
|
WHERE b.prs_bedrijf_uitvoerende = 1 OR b.prs_bedrijf_contract = 1;
|
|
|
|
/* Formatted on 30-3-2012 14:52:32 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_MLD_PMND
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
VOLGORDE
|
|
)
|
|
AS
|
|
SELECT DECODE (SUBSTR (TO_CHAR (m.mld_melding_datum, 'yyyymm'), 5),
|
|
'01', 'Januari',
|
|
'02', 'Februari',
|
|
'03', 'Maart',
|
|
'04', 'April',
|
|
'05', 'Mei',
|
|
'06', 'Juni',
|
|
'07', 'Juli',
|
|
'08', 'Augustus',
|
|
'09', 'September',
|
|
'10', 'Oktober',
|
|
'11', 'November',
|
|
'December'),
|
|
COUNT (d.ins_discipline_omschrijving),
|
|
TO_CHAR (m.mld_melding_datum, 'yyyymm')
|
|
FROM mld_melding m, mld_stdmelding sm, ins_tab_discipline d
|
|
WHERE m.mld_melding_datum BETWEEN ADD_MONTHS (
|
|
TO_DATE (
|
|
TO_CHAR (SYSDATE, 'yyyymm')
|
|
|| '01',
|
|
'yyyymmdd'
|
|
),
|
|
-11
|
|
)
|
|
AND SYSDATE
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = d.ins_discipline_key
|
|
GROUP BY TO_CHAR (m.mld_melding_datum, 'yyyymm');
|
|
|
|
/* Formatted on 2-4-2012 13:45:04 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_MLD_BEHANDELAAR
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
FCLT_YAS2_
|
|
)
|
|
AS
|
|
SELECT behandelaar,
|
|
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
|
|
SUM (uitvoeringoptijd) op_tijd
|
|
FROM (SELECT m.mld_melding_key mld_key,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_uitvoertijd,
|
|
'DAGEN'
|
|
)
|
|
- SYSDATE)
|
|
WHEN -1
|
|
THEN
|
|
0
|
|
ELSE
|
|
1
|
|
END
|
|
uitvoeringoptijd,
|
|
DECODE (
|
|
m.mld_melding_status,
|
|
4,
|
|
DECODE (
|
|
(SELECT COUNT ( * )
|
|
FROM mld_opdr o
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND o.mld_statusopdr_key IN
|
|
(3, 4, 5, 8)), -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
|
|
0,
|
|
p.prs_perslid_naam_full,
|
|
NULL
|
|
),
|
|
7,
|
|
NULL,
|
|
p.prs_perslid_naam_full
|
|
)
|
|
behandelaar
|
|
FROM mld_melding m, prs_v_perslid_fullnames p
|
|
WHERE m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
|
|
AND m.mld_melding_status IN (2, 3, 4, 7, 0)) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
|
WHERE behandelaar IS NOT NULL
|
|
GROUP BY behandelaar
|
|
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
|
|
SELECT '-', 0 totaal, 0 op_tijd
|
|
FROM DUAL
|
|
WHERE EXISTS (SELECT 1
|
|
FROM mld_melding m
|
|
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0));
|
|
|
|
/* Formatted on 2-4-2012 13:45:04 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_MLD_UITVOERENDE
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
FCLT_YAS2_
|
|
)
|
|
AS
|
|
SELECT uitvoerende,
|
|
COUNT (opdr_key) - SUM (uitvoeringoptijd) totaal,
|
|
SUM (uitvoeringoptijd) op_tijd
|
|
FROM (SELECT o.mld_opdr_key opdr_key,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_uitvoertijd,
|
|
'DAGEN'
|
|
)
|
|
- SYSDATE)
|
|
WHEN -1
|
|
THEN
|
|
0
|
|
ELSE
|
|
1
|
|
END
|
|
uitvoeringoptijd,
|
|
b.prs_bedrijf_naam uitvoerende
|
|
FROM mld_opdr o, mld_melding m, prs_bedrijf b
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
|
AND o.mld_statusopdr_key IN (3, 4, 5, 8)) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
|
|
WHERE uitvoerende IS NOT NULL
|
|
GROUP BY uitvoerende
|
|
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
|
|
SELECT '-', 0 totaal, 0 op_tijd
|
|
FROM DUAL
|
|
WHERE EXISTS
|
|
(SELECT 1
|
|
FROM mld_opdr o, prs_bedrijf b
|
|
WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
|
AND o.mld_statusopdr_key IN (3, 4, 5, 8));
|
|
|
|
/* Formatted on 30-3-2012 15:48:14 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_VAKGROEP_OPEN
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_,
|
|
FCLT_URL,
|
|
FCLT_3D_DISCIPLINE_KEY
|
|
)
|
|
AS
|
|
SELECT md.ins_discipline_omschrijving,
|
|
COUNT (md.ins_discipline_omschrijving),
|
|
'appl/mld/mld_search.asp?urole=fo'
|
|
|| '&'
|
|
|| 'autosearch=1'
|
|
|| '&'
|
|
|| 'disc_key_str='
|
|
|| md.ins_discipline_key,
|
|
md.ins_discipline_key
|
|
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
|
|
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
|
GROUP BY md.ins_discipline_key, md.ins_discipline_omschrijving
|
|
ORDER BY COUNT (md.ins_discipline_omschrijving) DESC;
|
|
|
|
/* Formatted on 30-3-2012 16:26:36 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_PPI_ACP
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_
|
|
)
|
|
AS
|
|
SELECT SUM (acceptatieoptijd) aantal, COUNT (mld_key) totaal
|
|
FROM (SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
fac.gettrackingdate ('MLDNEW',
|
|
m.mld_melding_key),
|
|
sm.mld_stdmelding_urgentie,
|
|
'UREN'
|
|
)
|
|
- SYSDATE)
|
|
WHEN -1
|
|
THEN
|
|
0
|
|
ELSE
|
|
1
|
|
END
|
|
acceptatieoptijd
|
|
FROM mld_melding m, mld_stdmelding sm
|
|
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND m.mld_melding_status IN (2, 3) -- 2-Ingevoerd, 3-Ingezien
|
|
);
|
|
|
|
/* Formatted on 30-3-2012 16:26:36 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW ARBO_V_GRAPH_PPI_AFM
|
|
(
|
|
FCLT_XAS_,
|
|
FCLT_YAS_
|
|
)
|
|
AS
|
|
SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
|
|
FROM (SELECT DISTINCT
|
|
m.mld_melding_key mld_key,
|
|
CASE SIGN(fac.datumtijdplusuitvoertijd (
|
|
m.mld_melding_datum,
|
|
m.mld_melding_uitvoertijd,
|
|
'DAGEN'
|
|
)
|
|
- SYSDATE)
|
|
WHEN -1
|
|
THEN
|
|
0
|
|
ELSE
|
|
1
|
|
END
|
|
uitvoeringoptijd
|
|
FROM mld_melding m
|
|
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
|
);
|
|
|
|
/* Formatted on 7-6-2012 14:16:18 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_hv_per_loc
|
|
(
|
|
fclt_f_vestiging,
|
|
contractnummer,
|
|
einddatum,
|
|
opzegtermijn,
|
|
huurkosten_pj,
|
|
servkosten_pj,
|
|
aantal_m2,
|
|
huurkosten_m2,
|
|
servkosten_m2,
|
|
bezet_m2,
|
|
leeg_m2,
|
|
bezettingsperc
|
|
)
|
|
AS
|
|
SELECT basis.alg_locatie_code,
|
|
hvcnt.contractnummer,
|
|
TO_CHAR (hvcnt.einddatum, 'dd-mm-yyyy'),
|
|
hvcnt.opzegtermijn,
|
|
fac.safe_to_number (hvcnt.huurkosten),
|
|
fac.safe_to_number (hvcnt.servicekosten),
|
|
ROUND (COALESCE (totm2.opp, 0), 2) totaal,
|
|
DECODE (
|
|
totm2.opp,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND (
|
|
fac.safe_to_number (
|
|
COALESCE (hvcnt.huurkosten, '0') / totm2.opp
|
|
),
|
|
2
|
|
),
|
|
'999999990D99'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
),
|
|
DECODE (
|
|
totm2.opp,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND (
|
|
fac.safe_to_number (
|
|
COALESCE (hvcnt.servicekosten, '0') / totm2.opp
|
|
),
|
|
2
|
|
),
|
|
'999999990D99'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
),
|
|
ROUND (COALESCE (bezm2.opp, 0), 2) bezet,
|
|
ROUND (COALESCE (totm2.opp, 0) - COALESCE (bezm2.opp, 0), 2) leeg,
|
|
DECODE (
|
|
totm2.opp,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
TO_CHAR (100 * ROUND (COALESCE (bezm2.opp, 0) / totm2.opp, 2))
|
|
|| '%'
|
|
)
|
|
FROM (SELECT alg_locatie_key, alg_locatie_code
|
|
FROM alg_v_aanweziglocatie) basis
|
|
LEFT JOIN
|
|
( SELECT g.alg_locatie_key,
|
|
SUM (g.alg_gebouw_bruto_vloeropp) opp
|
|
--SUM (r.alg_ruimte_bruto_vloeropp) opp
|
|
FROM alg_gebouw g
|
|
--alg_verdieping v,
|
|
--alg_v_aanwezigruimte r
|
|
--WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
|
-- AND v.alg_verdieping_key =
|
|
-- r.alg_verdieping_key
|
|
GROUP BY g.alg_locatie_key) totm2
|
|
ON basis.alg_locatie_key = totm2.alg_locatie_key
|
|
LEFT JOIN
|
|
( SELECT g.alg_locatie_key,
|
|
SUM (r.alg_ruimte_bruto_vloeropp) opp
|
|
FROM alg_gebouw g,
|
|
alg_verdieping v,
|
|
alg_v_aanwezigruimte r,
|
|
prs_v_aanwezigwerkplek wp,
|
|
( SELECT prs_werkplek_key, COUNT ( * )
|
|
FROM prs_v_aanwezigperslidwerkplek
|
|
GROUP BY prs_werkplek_key) pw
|
|
WHERE g.alg_gebouw_key = v.alg_gebouw_key
|
|
AND v.alg_verdieping_key = r.alg_verdieping_key
|
|
AND r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
|
AND wp.prs_werkplek_key = pw.prs_werkplek_key
|
|
GROUP BY g.alg_locatie_key) bezm2
|
|
ON basis.alg_locatie_key = bezm2.alg_locatie_key
|
|
LEFT JOIN
|
|
(SELECT cp.cnt_alg_plaats_key,
|
|
c.cnt_contract_nummer_intern contractnummer,
|
|
c.cnt_contract_looptijd_tot einddatum,
|
|
t.cnt_termijn_omschrijving opzegtermijn,
|
|
(SELECT kc.cnt_kenmerkcontract_waarde
|
|
FROM cnt_kenmerkcontract kc
|
|
WHERE kc.cnt_kenmerk_key = 44 -- Huur
|
|
AND kc.cnt_contract_key =
|
|
c.cnt_contract_key)
|
|
huurkosten,
|
|
(SELECT kc.cnt_kenmerkcontract_waarde
|
|
FROM cnt_kenmerkcontract kc
|
|
WHERE kc.cnt_kenmerk_key = 101 -- Service
|
|
AND kc.cnt_contract_key =
|
|
c.cnt_contract_key)
|
|
servicekosten
|
|
FROM cnt_contract_plaats cp,
|
|
cnt_v_aanwezigcontract c,
|
|
cnt_termijn t
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_contract_key = c.cnt_contract_key
|
|
AND c.ins_discipline_key = 181 -- Huurcontracten
|
|
AND c.cnt_contract_opzegtermijn = t.cnt_termijn_key)
|
|
hvcnt
|
|
ON basis.alg_locatie_key = hvcnt.cnt_alg_plaats_key;
|
|
|
|
/* Formatted on 7-6-2012 14:16:18 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_hv_per_afd
|
|
(
|
|
hide_f_sortering,
|
|
fclt_f_afdeling,
|
|
fclt_f_vestiging,
|
|
tot_m2,
|
|
afd_m2,
|
|
bezettingsperc
|
|
)
|
|
AS
|
|
SELECT prs_afdeling_naam || '1',
|
|
prs_afdeling_omschrijving || ' (' || prs_afdeling_naam || ')',
|
|
totm2.alg_locatie_code,
|
|
REPLACE (
|
|
TO_CHAR (ROUND (COALESCE (totm2.opp, 0), 2), '999999990D99'),
|
|
'.',
|
|
','
|
|
),
|
|
REPLACE (
|
|
TO_CHAR (ROUND (COALESCE (afdm2.opp, 0), 2), '999999990D99'),
|
|
'.',
|
|
','
|
|
),
|
|
DECODE (
|
|
totm2.opp,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
TO_CHAR (100 * ROUND (COALESCE (afdm2.opp, 0) / totm2.opp, 2))
|
|
|| '%'
|
|
)
|
|
bezetting
|
|
FROM (SELECT prs_afdeling_key,
|
|
prs_afdeling_naam,
|
|
prs_afdeling_omschrijving
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL) basis
|
|
LEFT JOIN
|
|
( SELECT ra.prs_afdeling_key,
|
|
g.alg_locatie_key,
|
|
SUM( (r.alg_ruimte_bruto_vloeropp
|
|
* ra.prs_ruimteafdeling_bezetting)
|
|
/ 100)
|
|
opp
|
|
FROM prs_ruimteafdeling ra,
|
|
alg_v_aanwezigruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g
|
|
WHERE ra.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
|
|
GROUP BY ra.prs_afdeling_key, g.alg_locatie_key) afdm2
|
|
ON basis.prs_afdeling_key = afdm2.prs_afdeling_key
|
|
LEFT JOIN
|
|
( SELECT l.alg_locatie_key,
|
|
l.alg_locatie_code,
|
|
SUM (r.alg_ruimte_bruto_vloeropp) opp
|
|
FROM alg_v_aanwezigruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g,
|
|
alg_locatie l
|
|
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = g.alg_gebouw_key
|
|
AND g.alg_locatie_key = l.alg_locatie_key
|
|
GROUP BY l.alg_locatie_key, l.alg_locatie_code) totm2
|
|
ON afdm2.alg_locatie_key = totm2.alg_locatie_key
|
|
WHERE totm2.alg_locatie_code IS NOT NULL
|
|
UNION ALL
|
|
SELECT prs_afdeling_naam || '2',
|
|
prs_afdeling_omschrijving || ' (' || prs_afdeling_naam || ')',
|
|
'*** Landelijk ***',
|
|
REPLACE (
|
|
TO_CHAR (ROUND (COALESCE (totm2.opp, 0), 2), '999999990D99'),
|
|
'.',
|
|
','
|
|
),
|
|
REPLACE (
|
|
TO_CHAR (ROUND (COALESCE (afdm2.opp, 0), 2), '999999990D99'),
|
|
'.',
|
|
','
|
|
),
|
|
DECODE (
|
|
totm2.opp,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
NULL,
|
|
TO_CHAR (100 * ROUND (COALESCE (afdm2.opp, 0) / totm2.opp, 2))
|
|
|| '%'
|
|
)
|
|
bezetting
|
|
FROM (SELECT prs_afdeling_key,
|
|
prs_afdeling_naam,
|
|
prs_afdeling_omschrijving
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL) basis
|
|
LEFT JOIN
|
|
( SELECT ra.prs_afdeling_key,
|
|
SUM( (r.alg_ruimte_bruto_vloeropp
|
|
* ra.prs_ruimteafdeling_bezetting)
|
|
/ 100)
|
|
opp
|
|
FROM prs_ruimteafdeling ra, alg_v_aanwezigruimte r
|
|
WHERE ra.alg_ruimte_key = r.alg_ruimte_key
|
|
GROUP BY ra.prs_afdeling_key) afdm2
|
|
ON basis.prs_afdeling_key = afdm2.prs_afdeling_key
|
|
LEFT JOIN
|
|
(SELECT SUM (g.alg_gebouw_bruto_vloeropp) opp
|
|
FROM alg_v_aanweziggebouw g) totm2
|
|
ON 1 = 1;
|
|
|
|
/* Formatted on 7-6-2012 14:22:35 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_cntoverzicht
|
|
(
|
|
fclt_f_dienst,
|
|
fclt_f_contractsoort,
|
|
contractnummer,
|
|
startdatum,
|
|
einddatum,
|
|
opzegtermijn,
|
|
fclt_f_scope,
|
|
contractwaarde
|
|
)
|
|
AS
|
|
SELECT basis.dienst,
|
|
basis.contractsoort,
|
|
basis.contractnummer,
|
|
TO_CHAR (basis.startdatum, 'dd-mm-yyyy'),
|
|
TO_CHAR (basis.einddatum, 'dd-mm-yyyy'),
|
|
basis.opzegtermijn,
|
|
x.scope,
|
|
basis.contractwaarde
|
|
FROM (SELECT c.cnt_contract_key,
|
|
c.cnt_contract_nummer_intern contractnummer,
|
|
c.cnt_contract_looptijd_van startdatum,
|
|
c.cnt_contract_looptijd_tot einddatum,
|
|
c.cnt_contract_kosten contractwaarde,
|
|
cd.ins_discipline_omschrijving contractsoort,
|
|
t.cnt_termijn_omschrijving opzegtermijn,
|
|
d.prs_dienst_omschrijving dienst
|
|
FROM cnt_v_aanwezigcontract c,
|
|
cnt_discipline cd,
|
|
cnt_termijn t,
|
|
prs_dienst d
|
|
WHERE c.ins_discipline_key != 181 -- Huurcontracten
|
|
AND c.ins_discipline_key = cd.ins_discipline_key
|
|
AND c.cnt_contract_opzegtermijn = t.cnt_termijn_key
|
|
AND c.prs_dienst_key = d.prs_dienst_key) basis
|
|
LEFT JOIN
|
|
(SELECT cp.cnt_contract_key,
|
|
l.alg_locatie_code
|
|
|| ' ('
|
|
|| l.alg_locatie_omschrijving
|
|
|| ')'
|
|
scope
|
|
FROM cnt_contract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_contract_plaats_verwijder IS NULL
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
|
|
UNION ALL
|
|
SELECT cp.cnt_contract_key,
|
|
g.alg_gebouw_code || ' ' || g.alg_gebouw_naam scope
|
|
FROM cnt_contract_plaats cp, alg_gebouw g
|
|
WHERE cp.cnt_alg_plaats_code = 'G'
|
|
AND cp.cnt_contract_plaats_verwijder IS NULL
|
|
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
UNION ALL
|
|
SELECT co.cnt_contract_key,
|
|
sd.ins_srtdeel_omschrijving scope
|
|
FROM cnt_contract_object co, ins_srtdeel sd
|
|
WHERE co.cnt_contract_object_verwijder IS NULL
|
|
AND co.cnt_ins_srtdeel_key = sd.ins_srtdeel_key
|
|
UNION ALL
|
|
SELECT co.cnt_contract_key,
|
|
d.ins_deel_omschrijving
|
|
|| ' ('
|
|
|| sd.ins_srtdeel_omschrijving
|
|
|| ')'
|
|
scope
|
|
FROM cnt_contract_object co, ins_deel d, ins_srtdeel sd
|
|
WHERE co.cnt_contract_object_verwijder IS NULL
|
|
AND co.cnt_ins_deel_key = d.ins_deel_key
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key) x
|
|
ON basis.cnt_contract_key = x.cnt_contract_key;
|
|
|
|
/* Formatted on 15-5-2012 10:55:15 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_rtm_openmld
|
|
(
|
|
fclt_f_rubriek,
|
|
kengetal
|
|
)
|
|
AS
|
|
SELECT '# Totaal', TO_CHAR (COUNT ( * )) aantal
|
|
FROM mld_melding m
|
|
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
|
|
UNION ALL
|
|
SELECT 'Intern: ' || FCLT_XAS_, TO_CHAR (FCLT_YAS_ + FCLT_YAS2_) aantal
|
|
FROM ARBO_V_GRAPH_MLD_BEHANDELAAR
|
|
WHERE FCLT_XAS_ != '-'
|
|
UNION ALL
|
|
SELECT 'Extern: ' || FCLT_XAS_, TO_CHAR (FCLT_YAS_ + FCLT_YAS2_) aantal
|
|
FROM ARBO_V_GRAPH_MLD_UITVOERENDE
|
|
WHERE FCLT_XAS_ != '-'
|
|
UNION ALL
|
|
SELECT 'Vakgroep: ' || FCLT_XAS_, TO_CHAR (FCLT_YAS_) aantal
|
|
FROM ARBO_V_GRAPH_VAKGROEP_OPEN
|
|
UNION ALL
|
|
SELECT '% Acceptatie (nog) op tijd',
|
|
DECODE (
|
|
FCLT_YAS_,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND ( (COALESCE (FCLT_XAS_, 0) / FCLT_YAS_) * 100, 1),
|
|
'990D9'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
|| '%'
|
|
)
|
|
aantal
|
|
FROM ARBO_V_GRAPH_PPI_ACP
|
|
UNION ALL
|
|
SELECT '% Uitvoering (nog) op tijd',
|
|
DECODE (
|
|
FCLT_YAS_,
|
|
0,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND ( (COALESCE (FCLT_XAS_, 0) / FCLT_YAS_) * 100, 1),
|
|
'990D9'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
|| '%'
|
|
)
|
|
aantal
|
|
FROM ARBO_V_GRAPH_PPI_AFM;
|
|
|
|
/* Formatted on 15-5-2012 11:12:04 (QP5 v5.115.810.9015)
|
|
CREATE OR REPLACE VIEW arbo_v_rap_res_top5_noshow
|
|
(
|
|
fclt_f_maand,
|
|
gebruiker,
|
|
afdeling,
|
|
no_shows
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
|
|
pf.prs_perslid_naam_full,
|
|
a.prs_afdeling_omschrijving || ' (' || a.prs_afdeling_naam || ')',
|
|
COUNT ( * ) aantal
|
|
FROM res_v_aanwezigrsv_ruimte rrr,
|
|
prs_perslid p,
|
|
prs_v_perslid_fullnames pf,
|
|
prs_afdeling a
|
|
WHERE (rrr.res_rsv_ruimte_noshow = 1
|
|
OR rrr.res_rsv_ruimte_bezoekers_shown IS NOT NULL)
|
|
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
|
AND p.prs_perslid_key = pf.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND rrr.res_rsv_ruimte_van >
|
|
TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND rrr.res_rsv_ruimte_van <
|
|
TO_DATE (TO_CHAR (SYSDATE, 'yyyy-mm') || '-01',
|
|
'yyyy-mm-dd')
|
|
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm'),
|
|
pf.prs_perslid_naam_full,
|
|
a.prs_afdeling_omschrijving
|
|
|| ' ('
|
|
|| a.prs_afdeling_naam
|
|
|| ')';
|
|
*/
|
|
/* Formatted on 15-5-2012 12:44:46 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_res_top5_noshow
|
|
(
|
|
fclt_f_maand,
|
|
hide_f_sortering,
|
|
gebruiker,
|
|
afdeling,
|
|
no_shows
|
|
)
|
|
AS
|
|
SELECT maand,
|
|
r,
|
|
gebruiker,
|
|
afdeling,
|
|
aantal
|
|
FROM (SELECT maand,
|
|
gebruiker,
|
|
afdeling,
|
|
aantal,
|
|
RANK ()
|
|
OVER (PARTITION BY maand
|
|
ORDER BY maand, aantal DESC, gebruiker)
|
|
r
|
|
FROM ( SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm')
|
|
maand,
|
|
pf.prs_perslid_naam_full gebruiker,
|
|
a.prs_afdeling_omschrijving
|
|
|| ' ('
|
|
|| a.prs_afdeling_naam
|
|
|| ')'
|
|
afdeling,
|
|
COUNT ( * ) aantal
|
|
FROM res_v_aanwezigrsv_ruimte rrr,
|
|
prs_perslid p,
|
|
prs_v_perslid_fullnames pf,
|
|
prs_afdeling a
|
|
WHERE (rrr.res_rsv_ruimte_noshow = 1
|
|
OR rrr.res_rsv_ruimte_bezoekers_shown IS NOT NULL)
|
|
AND rrr.res_rsv_ruimte_contact_key =
|
|
p.prs_perslid_key
|
|
AND p.prs_perslid_key = pf.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND rrr.res_rsv_ruimte_van >
|
|
TRUNC (ADD_MONTHS (SYSDATE, -12),
|
|
'yyyy')
|
|
AND rrr.res_rsv_ruimte_van <
|
|
TO_DATE (
|
|
TO_CHAR (SYSDATE, 'yyyy-mm')
|
|
|| '-01',
|
|
'yyyy-mm-dd'
|
|
)
|
|
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm'),
|
|
pf.prs_perslid_naam_full,
|
|
a.prs_afdeling_omschrijving
|
|
|| ' ('
|
|
|| a.prs_afdeling_naam
|
|
|| ')'))
|
|
WHERE r <= 5;
|
|
|
|
/* Formatted on 15-5-2012 9:58:14 (QP5 v5.115.810.9015)
|
|
CREATE OR REPLACE VIEW arbo_v_rap_res_bezetting
|
|
(
|
|
fclt_f_maand,
|
|
fclt_f_zaal,
|
|
gebruik_uren,
|
|
beschikbaar_uren,
|
|
bezettingsperc
|
|
)
|
|
AS
|
|
SELECT bes.maand,
|
|
bes.res_ruimte_nr,
|
|
bez.uren bez_uren,
|
|
bes.uren bes_uren,
|
|
DECODE (
|
|
bes.uren,
|
|
0,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND ( (COALESCE (bez.uren, 0) / bes.uren) * 100, 1),
|
|
'990D9'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
|| '%'
|
|
)
|
|
bezetting
|
|
FROM (SELECT periode.maand,
|
|
rr.res_ruimte_nr,
|
|
DECODE (
|
|
periode.maand,
|
|
'2012-05', -- T/m 5.2.1 fout in count_work_days!
|
|
21,
|
|
fac.count_work_days (
|
|
TO_DATE (periode.maand || '-01', 'yyyy-mm-dd')
|
|
- 1,
|
|
LAST_DAY(TO_DATE (periode.maand || '-01',
|
|
'yyyy-mm-dd'))
|
|
)
|
|
)
|
|
* (COALESCE (rr.res_ruimte_eindtijd, 20)
|
|
- COALESCE (rr.res_ruimte_begintijd, 7))
|
|
uren
|
|
FROM res_ruimte rr,
|
|
( SELECT TO_CHAR (ADD_MONTHS (bdate, LEVEL - 1),
|
|
'yyyy-mm')
|
|
maand
|
|
FROM (SELECT TRUNC (
|
|
ADD_MONTHS (SYSDATE, -12),
|
|
'yyyy'
|
|
)
|
|
bdate,
|
|
TO_DATE (
|
|
TO_CHAR (SYSDATE, 'yyyy-mm')
|
|
|| '-01',
|
|
'yyyy-mm-dd'
|
|
)
|
|
- 1
|
|
edate
|
|
FROM DUAL)
|
|
CONNECT BY LEVEL <=
|
|
MONTHS_BETWEEN (
|
|
TRUNC (edate, 'mm'),
|
|
TRUNC (bdate, 'mm')
|
|
)
|
|
+ 1) periode
|
|
WHERE rr.res_discipline_key NOT IN (121, 401)
|
|
AND rr.res_ruimte_aanmaak <
|
|
TO_DATE (periode.maand || '-01', 'yyyy-mm-dd')
|
|
AND (rr.res_ruimte_verwijder IS NULL
|
|
OR rr.res_ruimte_verwijder >
|
|
LAST_DAY(TO_DATE (periode.maand || '-01',
|
|
'yyyy-mm-dd')))) bes
|
|
LEFT JOIN
|
|
( SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
|
|
rr.res_ruimte_nr,
|
|
SUM(LEAST (
|
|
fac.safe_to_number (
|
|
TO_CHAR (rrr.res_rsv_ruimte_tot, 'sssss')
|
|
)
|
|
/ 3600,
|
|
COALESCE (rr.res_ruimte_eindtijd, 20)
|
|
)
|
|
- GREATEST (
|
|
fac.safe_to_number(TO_CHAR (
|
|
rrr.res_rsv_ruimte_van,
|
|
'sssss'
|
|
))
|
|
/ 3600,
|
|
COALESCE (rr.res_ruimte_begintijd, 7)
|
|
))
|
|
uren
|
|
FROM res_rsv_ruimte rrr,
|
|
res_ruimte_opstelling ro,
|
|
res_ruimte rr
|
|
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_status_fo_key IN (1, 2) -- Optie/Def.
|
|
AND rrr.res_ruimte_opstel_key =
|
|
ro.res_ruimte_opstel_key
|
|
AND ro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rrr.res_rsv_ruimte_van >
|
|
TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND TO_CHAR (rrr.res_rsv_ruimte_van, 'd') >= 2 -- Ma
|
|
AND TO_CHAR (rrr.res_rsv_ruimte_van, 'd') <= 6 -- Vr
|
|
AND TRUNC (rrr.res_rsv_ruimte_van) NOT IN
|
|
(SELECT TRUNC (mld_vrije_dagen_datum)
|
|
FROM mld_vrije_dagen)
|
|
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm'),
|
|
rr.res_ruimte_nr) bez
|
|
ON bes.maand = bez.maand
|
|
AND bes.res_ruimte_nr = bez.res_ruimte_nr;
|
|
*/
|
|
/* Formatted on 7-6-2012 14:10:48 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_res_bezetting
|
|
(
|
|
fclt_f_maand,
|
|
fclt_f_vestiging,
|
|
fclt_f_kamer,
|
|
gebruik_uren,
|
|
beschikbaar_uren,
|
|
bezettingsperc
|
|
)
|
|
AS
|
|
SELECT bes.maand,
|
|
rg.alg_locatie_code,
|
|
rg.alg_ruimte_aanduiding
|
|
|| ' ['
|
|
|| rr.res_ruimte_nr
|
|
|| DECODE (bes.aantal, 1, ']', '...]'),
|
|
bez.uren bez_uren,
|
|
bes.uren bes_uren,
|
|
DECODE (
|
|
bes.uren,
|
|
0,
|
|
NULL,
|
|
REPLACE (
|
|
TO_CHAR (
|
|
ROUND ( (COALESCE (bez.uren, 0) / bes.uren) * 100, 1),
|
|
'990D9'
|
|
),
|
|
'.',
|
|
','
|
|
)
|
|
|| '%'
|
|
)
|
|
bezetting
|
|
FROM ( SELECT periode.maand,
|
|
ra.alg_ruimte_key,
|
|
COUNT (rr.res_ruimte_key) aantal,
|
|
MAX(DECODE (
|
|
periode.maand,
|
|
'2012-05', -- T/m 5.2.1 fout in count_work_days!
|
|
21,
|
|
fac.count_work_days (
|
|
TO_DATE (periode.maand || '-01',
|
|
'yyyy-mm-dd')
|
|
- 1,
|
|
LAST_DAY(TO_DATE (periode.maand || '-01',
|
|
'yyyy-mm-dd'))
|
|
)
|
|
)
|
|
* (COALESCE (rr.res_ruimte_eindtijd, 20)
|
|
- COALESCE (rr.res_ruimte_begintijd, 7)))
|
|
uren
|
|
FROM res_ruimte rr,
|
|
res_alg_ruimte ra,
|
|
( SELECT TO_CHAR (ADD_MONTHS (bdate, LEVEL - 1),
|
|
'yyyy-mm')
|
|
maand
|
|
FROM (SELECT TRUNC (
|
|
ADD_MONTHS (SYSDATE, -12),
|
|
'yyyy'
|
|
)
|
|
bdate
|
|
FROM DUAL)
|
|
CONNECT BY LEVEL <=
|
|
MONTHS_BETWEEN (
|
|
TRUNC (SYSDATE, 'mm'),
|
|
TRUNC (bdate, 'mm')
|
|
)) periode
|
|
WHERE rr.res_discipline_key NOT IN (121, 401)
|
|
AND rr.res_ruimte_key = ra.res_ruimte_key
|
|
AND ra.res_alg_ruimte_aanmaak <
|
|
TO_DATE (periode.maand || '-01', 'yyyy-mm-dd')
|
|
AND (ra.res_alg_ruimte_verwijder IS NULL
|
|
OR ra.res_alg_ruimte_verwijder >
|
|
LAST_DAY(TO_DATE (periode.maand || '-01',
|
|
'yyyy-mm-dd')))
|
|
GROUP BY periode.maand, ra.alg_ruimte_key) bes
|
|
LEFT JOIN
|
|
( SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
|
|
ra.alg_ruimte_key,
|
|
SUM(LEAST (
|
|
fac.safe_to_number (
|
|
TO_CHAR (rrr.res_rsv_ruimte_tot, 'sssss')
|
|
)
|
|
/ 3600,
|
|
COALESCE (rr.res_ruimte_eindtijd, 20)
|
|
)
|
|
- GREATEST (
|
|
fac.safe_to_number(TO_CHAR (
|
|
rrr.res_rsv_ruimte_van,
|
|
'sssss'
|
|
))
|
|
/ 3600,
|
|
COALESCE (rr.res_ruimte_begintijd, 7)
|
|
))
|
|
uren
|
|
FROM res_rsv_ruimte rrr,
|
|
res_ruimte_opstelling ro,
|
|
res_ruimte rr,
|
|
res_alg_ruimte ra
|
|
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_status_fo_key IN (1, 2) -- Optie/Def.
|
|
AND rrr.res_ruimte_opstel_key =
|
|
ro.res_ruimte_opstel_key
|
|
AND ro.res_ruimte_key = rr.res_ruimte_key
|
|
AND rr.res_ruimte_key = ra.res_ruimte_key
|
|
AND rrr.res_rsv_ruimte_van >
|
|
TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND TO_CHAR (rrr.res_rsv_ruimte_van, 'd') >= 2 -- Ma
|
|
AND TO_CHAR (rrr.res_rsv_ruimte_van, 'd') <= 6 -- Vr
|
|
AND TRUNC (rrr.res_rsv_ruimte_van) NOT IN
|
|
(SELECT TRUNC (mld_vrije_dagen_datum)
|
|
FROM mld_vrije_dagen)
|
|
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm'),
|
|
ra.alg_ruimte_key) bez
|
|
ON bes.maand = bez.maand
|
|
AND bes.alg_ruimte_key = bez.alg_ruimte_key,
|
|
alg_v_ruimte_gegevens_all rg,
|
|
(SELECT alg_ruimte_key, res_ruimte_key
|
|
FROM (SELECT rar1.alg_ruimte_key,
|
|
rar1.res_ruimte_key,
|
|
RANK ()
|
|
OVER (
|
|
PARTITION BY rar1.alg_ruimte_key
|
|
ORDER BY
|
|
rar1.alg_ruimte_key,
|
|
DECODE (
|
|
rar1.res_alg_ruimte_verwijder,
|
|
NULL,
|
|
1,
|
|
2
|
|
),
|
|
rar2.aantal
|
|
)
|
|
r
|
|
FROM res_alg_ruimte rar1,
|
|
( SELECT res_ruimte_key,
|
|
COUNT (alg_ruimte_key) aantal
|
|
FROM res_alg_ruimte
|
|
GROUP BY res_ruimte_key) rar2
|
|
WHERE rar1.res_ruimte_key = rar2.res_ruimte_key(+))
|
|
WHERE r = 1) rar,
|
|
res_ruimte rr
|
|
WHERE bes.alg_ruimte_key = rg.alg_ruimte_key
|
|
AND rg.alg_ruimte_key = rar.alg_ruimte_key
|
|
AND rar.res_ruimte_key = rr.res_ruimte_key;
|
|
|
|
/* Formatted on 15-5-2012 9:58:14 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE VIEW arbo_v_rap_bez_aantal
|
|
(
|
|
fclt_f_maand,
|
|
fclt_f_vestiging,
|
|
aantal_bezoekers
|
|
)
|
|
AS
|
|
SELECT TO_CHAR (a.bez_afspraak_datum, 'yyyy-mm') maand,
|
|
l.alg_locatie_code,
|
|
COUNT ( * ) sum_visitors
|
|
FROM bez_afspraak a, bez_bezoekers b, alg_locatie l
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND a.alg_locatie_key = l.alg_locatie_key
|
|
AND a.bez_afspraak_datum >
|
|
TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy')
|
|
AND a.bez_afspraak_datum <
|
|
TO_DATE (TO_CHAR (SYSDATE, 'yyyy-mm') || '-01',
|
|
'yyyy-mm-dd')
|
|
GROUP BY TO_CHAR (a.bez_afspraak_datum, 'yyyy-mm'), l.alg_locatie_code;
|
|
|
|
|
|
-- ARBO#26005 view tbv kenmerkdomein met koffieautomaten
|
|
-- key 202 = groep koffieautomaat
|
|
CREATE OR REPLACE VIEW ARBO_V_MLD_KOFFIEAUTOMATEN
|
|
(
|
|
ins_deel_key,
|
|
omschrijving
|
|
)
|
|
AS
|
|
SELECT ins_deel_key,
|
|
l.alg_locatie_omschrijving
|
|
|| ' - '
|
|
|| v.alg_verdieping_code
|
|
|| ' - '
|
|
|| ins_deel_omschrijving
|
|
omschrijving
|
|
FROM ins_deel d,
|
|
ins_srtdeel srt,
|
|
alg_ruimte r,
|
|
alg_verdieping v,
|
|
alg_gebouw g,
|
|
alg_locatie l
|
|
WHERE d.ins_srtdeel_key = srt.ins_srtdeel_key
|
|
AND srt.ins_srtgroep_key = 202 -- objectgroep koffieautomaat
|
|
AND ins_deel_verwijder IS NULL
|
|
AND ins_srtdeel_verwijder IS NULL
|
|
AND d.ins_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_gebouw_key = l.alg_locatie_key
|
|
ORDER BY alg_locatie_omschrijving, alg_verdieping_code;
|
|
|
|
BEGIN fac.registercustversion('ARBO', 6); END;
|
|
/
|
|
BEGIN adm.systrackscript('$Workfile: arbo.sql $', '$Revision$', 0); END;
|
|
/
|
|
commit;
|
|
|
|
spool off
|