14832 lines
622 KiB
MySQL
14832 lines
622 KiB
MySQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for RAI Amsterdam (ARAI)
|
||
|
||
DEFINE thisfile = 'ARAI.SQL'
|
||
DEFINE dbuser = '^ARAI'
|
||
DEFINE custid = 'ARAI'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_import_log
|
||
AS
|
||
SELECT imp_log_status fclt_f_status,
|
||
imp_log_omschrijving omschrijving,
|
||
imp_log_hint opmerking
|
||
FROM imp_log
|
||
WHERE imp_log_applicatie = 'PRS';
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
v_newline FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
|
||
BEGIN
|
||
|
||
BEGIN
|
||
SELECT fac_imp_file_line
|
||
INTO v_newline
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index = 1;
|
||
|
||
IF v_newline LIKE
|
||
CHR (TO_NUMBER ('EF', 'xx'))
|
||
|| CHR (TO_NUMBER ('BB', 'xx'))
|
||
|| CHR (TO_NUMBER ('BF', 'xx'))
|
||
|| '%'
|
||
THEN
|
||
-- EF BB BF aangetroffen
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Byte Order Mark aangetroffen',
|
||
'Bestand heeft onbehandeld UTF-8 formaat.'
|
||
);
|
||
v_newline := SUBSTR (v_newline, 4);
|
||
END IF;
|
||
|
||
-- Verwijder de dubbele quotes
|
||
v_newline := REPLACE (v_newline, '"');
|
||
|
||
UPDATE fac_imp_file
|
||
SET fac_imp_file_line = v_newline
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index = 1;
|
||
|
||
|
||
EXCEPTION WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Fout bij controle op Byte Order Mark',
|
||
''
|
||
);
|
||
END;
|
||
|
||
|
||
v_errorhint := 'Generieke update';
|
||
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
||
-- Ingangsdatum (laatste kolom) land in v_dummy, later omzetten.
|
||
prs.import_perslid (p_import_key,
|
||
'0;0;0;0;0;0;10;2;0;1;' ||
|
||
'0;0;0;0;0;6;7;5;0;0;' ||
|
||
'11;8;0;0;0;12;15;0;0;0;'||
|
||
'0;0;0;0;0;0;0;0;0;0;'||
|
||
'0;0;0;0;0;0',
|
||
'GivenName;Surname;DisplayName;userPrincipalName;Mail;telephoneNumber;mobile;SamAccountName;Company;Department;Title;extensionAttribute5;extensionAttribute6;accountexpirationdate;userAccountControl%'
|
||
);
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET alg_locatie_code = 'RAI';
|
||
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam =
|
||
(
|
||
SELECT DISTINCT p.prs_afdeling_naam
|
||
FROM prs_afdeling p
|
||
WHERE fac_imp_perslid.prs_afdeling_naam = substr (p.prs_afdeling_omschrijving, 1, 15)
|
||
AND p.prs_afdeling_verwijder IS NULL
|
||
)
|
||
WHERE fac_imp_perslid.prs_afdeling_naam NOT IN (SELECT p.prs_afdeling_naam FROM prs_afdeling p);
|
||
|
||
DELETE FROM fac_imp_perslid
|
||
WHERE alg_locatie_code NOT IN (SELECT alg_locatie_code FROM alg_locatie);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END arai_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_perslid (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
|
||
CURSOR c_del
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, pf.prs_perslid_naam_full
|
||
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
|
||
WHERE p.prs_perslid_oslogin = i.prs_perslid_oslogin(+)
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_oslogin IS NOT NULL
|
||
AND i.prs_perslid_oslogin IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin NOT LIKE '%_%'
|
||
ORDER BY 2;
|
||
|
||
v_count NUMBER;
|
||
|
||
BEGIN
|
||
-- generic update
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM fac_imp_perslid;
|
||
|
||
IF v_count < 150
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Het aantal te importeren personen is te klein ('
|
||
|| TO_CHAR (v_count) || ')',
|
||
'Zie Specificatie'
|
||
);
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- 'LOGIN' betekent dat op basis van oslogin wordt gematched.
|
||
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
|
||
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
|
||
END arai_update_perslid;
|
||
/
|
||
|
||
-- LET OP: OUDE PRS IMPORT!!!!!!!
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
-- LET OP: moet idem zijn als declaratie bij arai_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_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_srtperslid_omschrijving VARCHAR2 (256);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||
|
||
-- Overig:
|
||
v_alg_locatie_code VARCHAR2 (256);
|
||
v_alg_gebouw_code VARCHAR2 (256);
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_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 - Usernaam/login
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
||
|
||
-- 02 - Afdelingsnaam (niet de code!)
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
|
||
|
||
-- 03 - Voornaam van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
|
||
-- 04 - Tussenvoegsels van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
|
||
-- 05 - Naam van medewerkers = voornaam, tussenvoegsels en achternaam
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
||
|
||
|
||
-- 06 - Email adres van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||
|
||
-- Verplicht
|
||
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
|
||
v_prs_srtperslid_omschrijving := 'Onbekend';
|
||
|
||
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
|
||
v_alg_locatie_code := NULL;
|
||
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
|
||
v_alg_gebouw_code := NULL;
|
||
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
|
||
v_prs_perslid_voorletters := NULL;
|
||
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
|
||
v_prs_perslid_telefoonnr := NULL;
|
||
-- fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
|
||
v_prs_perslid_nr := NULL;
|
||
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_oslogin
|
||
|| '|'
|
||
|| v_prs_perslid_naam
|
||
|| '] ';
|
||
|
||
-- 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_oslogin) = 'USERNAAM'
|
||
AND UPPER (v_prs_afdeling_naam) = 'AFDELING'
|
||
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
|
||
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSELS'
|
||
AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
|
||
AND UPPER (v_prs_perslid_email) = 'E-MAIL'
|
||
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig 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
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_oslogin IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Usernaam/login onbekend',
|
||
'Usernaam/login is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig e-mailadres';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 200
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
||
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 := 'Ongeldig personeelsnummer';
|
||
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
||
|
||
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
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
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
|
||
|| ']'
|
||
);
|
||
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!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig tussenvoegsel';
|
||
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
||
|
||
IF LENGTH (v_prs_perslid_tussenvoegsel) > 15
|
||
THEN
|
||
v_prs_perslid_tussenvoegsel :=
|
||
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15);
|
||
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
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
|
||
-- Let op: bij ARAI zijn er geen afdelingscodes, zij gebruiken de hele afdelingnaam cq. omschrijving als unieke ID voor afdeling
|
||
v_errorhint := 'Ongeldige afdeling';
|
||
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
|
||
|
||
IF LENGTH (v_prs_afdeling_naam) > 60
|
||
THEN
|
||
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingsnaam te lang',
|
||
'Afdelingsnaam wordt afgebroken tot ['
|
||
|| v_prs_afdeling_naam
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_afdeling_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Afdelingsnaam onbekend',
|
||
'Afdelingsnaam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige functie';
|
||
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
|
||
|
||
IF LENGTH (v_prs_srtperslid_omschrijving) > 30
|
||
THEN
|
||
v_prs_srtperslid_omschrijving :=
|
||
SUBSTR (v_prs_srtperslid_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Functie te lang',
|
||
'Functie wordt afgebroken tot ['
|
||
|| v_prs_srtperslid_omschrijving
|
||
|| ']'
|
||
);
|
||
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!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige plaats/locatiecode';
|
||
v_alg_locatie_code := TRIM(v_alg_locatie_code);
|
||
|
||
IF LENGTH (v_alg_locatie_code) > 5
|
||
THEN
|
||
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5);
|
||
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 plaats/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 := '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;
|
||
|
||
|
||
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_IMP_PRS';
|
||
|
||
INSERT INTO arai_imp_prs
|
||
(prs_perslid_nr, prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam, prs_afdeling_naam,
|
||
prs_srtperslid_omschrijving,
|
||
alg_locatie_code, alg_gebouw_code,
|
||
alg_verdieping_volgnr, alg_ruimte_nr,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_email,
|
||
prs_perslid_oslogin
|
||
)
|
||
VALUES (v_prs_perslid_nr, v_prs_perslid_naam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_voorletters,
|
||
v_prs_perslid_voornaam, v_prs_afdeling_naam,
|
||
v_prs_srtperslid_omschrijving,
|
||
v_alg_locatie_code, v_alg_gebouw_code,
|
||
NULL, NULL,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_email,
|
||
v_prs_perslid_oslogin
|
||
);
|
||
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 arai_import_prs;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
-- LET OP: moet idem zijn als declaratie bij arai_IMPORT_PRS
|
||
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
||
c_max_delta_percentage NUMBER (10) := 20;
|
||
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
||
c_ruimte_nr VARCHAR2 (10) := '000';
|
||
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
||
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
|
||
c_key_default_rol NUMBER(10) := 1;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_prs_actual NUMBER (10);
|
||
v_count_prs_import NUMBER (10); -- Matching actual persons!
|
||
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_srtperslid_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_wp_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
v_groep_defaultnaam VARCHAR2 (30);
|
||
|
||
|
||
-- Alle personen in Facilitor en niet in AD-dump, obv login-naam
|
||
CURSOR cdelprs
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam, p.prs_perslid_oslogin, prs_srtperslid_key, prs_perslid_einddatum
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND SUBSTR(p.prs_perslid_oslogin,1,1) != '_'
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM arai_imp_prs ip
|
||
WHERE UPPER(ip.prs_perslid_oslogin) = UPPER(p.prs_perslid_oslogin));
|
||
|
||
-- Alle functies uit AD-dump.
|
||
CURSOR csperslid
|
||
IS
|
||
SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
||
FROM arai_imp_prs
|
||
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
||
|
||
-- Alle personen uit AD-dump
|
||
CURSOR cperslid
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_prs;
|
||
|
||
-- Alle personen uit AD-dump met een locatie en gebouw, deze cursor is nu leeg, want RAI heeft deze locatie/gebouw gegevens niet.
|
||
CURSOR cwp
|
||
IS
|
||
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code
|
||
FROM arai_imp_prs ip, prs_v_aanwezigperslid p
|
||
WHERE ip.alg_locatie_code IS NOT NULL
|
||
AND ip.alg_gebouw_code IS NOT NULL
|
||
AND UPPER (ip.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin);
|
||
|
||
-- Alle ACTIEVE personen MET login (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, p.prs_perslid_oslogin
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
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 login (ie. de import-doelgroep) niet in een autorisatiegroep
|
||
CURSOR cnogroup
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam, p.prs_perslid_oslogin
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM fac_gebruikersgroep g
|
||
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
||
|
||
|
||
|
||
|
||
|
||
BEGIN
|
||
-- Tel aantal personen in Facilitor (zonder verwijder-datum) met een login.
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_actual
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_oslogin IS NOT NULL;
|
||
|
||
-- Tel aantal personen in AD dump met een os-login.
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_import
|
||
FROM arai_imp_prs ip
|
||
WHERE prs_perslid_oslogin IS NOT NULL;
|
||
|
||
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
|
||
(100 - c_max_delta_percentage
|
||
)
|
||
)
|
||
|
||
)
|
||
THEN
|
||
-- Verschil tussen aantal te importeren personen t.o.v. het aantal bestaande personen ligt boven de 20% veiligheidsgrens (c_max_delta_percentage),
|
||
-- om te voorkomen dat er een ongeldige dump wordt geleverd waarin (bijna) alle personen worden verwijderd.
|
||
-- M.a.w. Geldig importbestand wat betreft aantal personen
|
||
|
||
-- Eerst de personen verwijderen...
|
||
FOR recdelprs IN cdelprs
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- Voor externen, stagiairs etc die NIET in AD-export staan maar handmatig worden toegevoegd, moeten een einddatum krijgen.
|
||
-- Als die einddatum niet is ingevuld, dan wordt de persoon als die niet meer uit AD komt, gewoon verwijderd.
|
||
-- Als die einddatum wel is ingevuldm dan wordt de persoon pas verwijderd als de einddatum gepasseerd is.
|
||
IF (recdelprs.prs_perslid_einddatum IS NULL or recdelprs.prs_perslid_einddatum < TRUNC(SYSDATE))
|
||
THEN
|
||
--- Als persoon een geen ingevulde einddatum heeft of een einddatum die in het verleden ligt, en NIET in AD-export staat, dan verwijderen.
|
||
|
||
-- 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 login ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is verwijderd',
|
||
'Persoon is verwijderd'
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
-- Staat persoon 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 zetten persoon';
|
||
|
||
-- Persoon INACTIEF zetten (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 usernaam ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gezet',
|
||
'Persoon is INACTIEF gezet'
|
||
);
|
||
ELSE
|
||
v_errorhint := 'Fout bij INACTIEF maken persoon';
|
||
|
||
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin = NULL
|
||
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
|
||
AND prs_perslid_oslogin IS NOT NULL
|
||
AND prs_perslid_key = recdelprs.prs_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon met usernaam ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gemaakt',
|
||
'Persoon is INACTIEF gemaakt'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Extern persoon met login ['
|
||
|| recdelprs.prs_perslid_oslogin
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is nog NIET verwijderd agv einddatum',
|
||
'Extern persoon NIET verwijderd'
|
||
);
|
||
END IF;
|
||
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;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recsperslid IN csperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_srtperslid
|
||
WHERE UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recsperslid.prs_srtperslid_omschrijving)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
|
||
INSERT INTO prs_srtperslid
|
||
(prs_srtperslid_omschrijving
|
||
)
|
||
VALUES (recsperslid.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;
|
||
|
||
-- Alle personen uit AD-dump scannen...
|
||
FOR recperslid IN cperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
recperslid.prs_perslid_oslogin
|
||
|| '|'
|
||
|| 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_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recperslid.prs_srtperslid_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen afdeling ['
|
||
|| recperslid.prs_afdeling_naam
|
||
|| ']';
|
||
-- Let op: bij de RAI wordt geen afdelingscode(naam) gebruikt, maar zij kennen alleen de afdelings!!OMSCHRIJVING!!!! als unieke naam.
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (recperslid.prs_afdeling_naam);
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin);
|
||
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
-- Nieuwe persoon uit AD-dump, wordt toegevoegd in Facilitor.
|
||
INSERT INTO prs_perslid
|
||
(prs_perslid_module, prs_srtperslid_key,
|
||
prs_afdeling_key, prs_perslid_naam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_email,
|
||
prs_perslid_nr, prs_perslid_oslogin
|
||
)
|
||
VALUES ('PRS', v_srtperslid_key,
|
||
v_afdeling_key, recperslid.prs_perslid_naam,
|
||
recperslid.prs_perslid_voorletters,
|
||
recperslid.prs_perslid_tussenvoegsel,
|
||
recperslid.prs_perslid_voornaam,
|
||
recperslid.prs_perslid_telefoonnr,
|
||
recperslid.prs_perslid_email,
|
||
recperslid.prs_perslid_nr, recperslid.prs_perslid_oslogin
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
|
||
-- Functie, Afdeling, Naam, Voorletters, Tuusenvoegsels, Voornaam en Personeelsnummer altijd bijwerken
|
||
-- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
-- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
-- Personeelsnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
|
||
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_voorletters = recperslid.prs_perslid_voorletters,
|
||
prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
|
||
prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
|
||
prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
|
||
prs_perslid_nr = COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr)
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
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;
|
||
|
||
-- Iedereen krijgt _default-rol die nog geen groep heeft.
|
||
FOR recnogroup IN cnogroup
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
recnogroup.prs_perslid_oslogin
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_naam
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_voornaam
|
||
|| ' - ';
|
||
v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']';
|
||
|
||
SELECT fac_groep_upper
|
||
INTO v_groep_defaultnaam
|
||
FROM fac_groep
|
||
WHERE fac_groep_key = c_key_default_rol;
|
||
|
||
v_errorhint :=
|
||
'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']';
|
||
|
||
INSERT INTO fac_gebruikersgroep
|
||
(fac_groep_key, prs_perslid_key
|
||
)
|
||
VALUES (c_key_default_rol, 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;
|
||
|
||
|
||
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)
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF; -- Geldig importbestand wat betreft aantal inserts
|
||
COMMIT;
|
||
END arai_update_prs;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_uitdienst
|
||
( Medewerker,
|
||
Afdeling,
|
||
Login,
|
||
Einddatum
|
||
)
|
||
AS
|
||
SELECT pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving, p.prs_perslid_oslogin, TO_CHAR(prs_perslid_einddatum,'YYYY-MM-DD')
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_v_perslid_fullnames pf
|
||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND prs_perslid_einddatum IS NOT NULL
|
||
AND SUBSTR(p.prs_perslid_oslogin,1,1) != '_';
|
||
|
||
-- Alle (potentiele) uitvoerders met de disciplines waarvoor ze uitvoerder kunnen zijn.
|
||
CREATE OR REPLACE VIEW arai_v_uitvoerders
|
||
AS
|
||
SELECT DISTINCT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_dienstverband,
|
||
sp.prs_srtperslid_omschrijving,
|
||
p.prs_afdeling_key,
|
||
a.prs_afdeling_omschrijving,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving
|
||
FROM prs_perslid p, prs_srtperslid sp, prs_afdeling a, mld_discipline d, fac_groeprechten gr, fac_gebruikersgroep gg, fac_functie f, prs_v_perslid_fullnames pf
|
||
WHERE p.prs_perslid_key = gg.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND gr.fac_groep_key = gg.fac_groep_key
|
||
AND gr.ins_discipline_key = d.ins_discipline_key
|
||
AND gr.fac_functie_key = f.fac_functie_key
|
||
AND f.fac_functie_code = 'WEB_MLDORD';
|
||
|
||
CREATE OR REPLACE VIEW ARAI_V_UITVOERDERS_FULL
|
||
AS SELECT DISTINCT PRS_PERSLID_KEY, PRS_PERSLID_NAAM_FULL FROM arai_v_uitvoerders;
|
||
|
||
-- Teamlid welke nu (!), op dit moment (!) een (of meer) lopende opdracht(en) heeft.
|
||
-- Alle uitvoerders met alle opdrachten in de tijd uitgezet.
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders
|
||
AS
|
||
SELECT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_dienstverband,
|
||
p.prs_afdeling_key,
|
||
a.prs_afdeling_omschrijving,
|
||
o.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_opdr_datumbegin,
|
||
o.mld_opdr_einddatum,
|
||
o.mld_opdr_uren,
|
||
o.mld_statusopdr_key,
|
||
s.mld_statusopdr_omschrijving
|
||
FROM prs_perslid p, mld_opdr o, mld_statusopdr s, prs_afdeling a, prs_v_perslid_fullnames pf
|
||
WHERE p.prs_perslid_key = o.mld_uitvoerende_keys
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND o.mld_statusopdr_key = s.mld_statusopdr_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders_all
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_dienstverband,
|
||
prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
mld_melding_key,
|
||
mld_opdr_key,
|
||
MLD_OPDR_DATUMBEGIN,
|
||
MLD_OPDR_EINDDATUM,
|
||
MLD_OPDR_UREN,
|
||
MLD_STATUSOPDR_OMSCHRIJVING
|
||
FROM arai_v_opdr_uitvoerders
|
||
WHERE MLD_STATUSOPDR_KEY In (5,8)
|
||
UNION
|
||
SELECT DISTINCT prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_dienstverband,
|
||
prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM arai_v_uitvoerders p WHERE NOT EXISTS (SELECT 'x' FROM arai_v_opdr_uitvoerders u WHERE u.prs_perslid_key = p.prs_perslid_key);
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders_grp
|
||
( prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_dienstverband_uren,
|
||
prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
aantal_opdrachten,
|
||
som_MLD_OPDR_UREN,
|
||
url)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
coalesce(40*prs_perslid_dienstverband/100,0),
|
||
prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
count(mld_opdr_key),
|
||
coalesce(SUM(MLD_OPDR_UREN),0),
|
||
'appl/mld/opdr_search.asp?urole=bo' || '&' || 'autosearch=1' || '&' || 'handler_key=' || prs_perslid_key
|
||
FROM arai_v_opdr_uitvoerders_all
|
||
GROUP BY prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_naam,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_dienstverband,
|
||
prs_afdeling_key,
|
||
prs_afdeling_omschrijving;
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_afdeling_grp
|
||
( prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
aantal_opdrachten,
|
||
som_MLD_OPDR_UREN,
|
||
url)
|
||
AS
|
||
SELECT prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
count(mld_opdr_key),
|
||
coalesce(SUM(MLD_OPDR_UREN),0),
|
||
NULL
|
||
FROM arai_v_opdr_uitvoerders_all
|
||
GROUP BY prs_afdeling_key,
|
||
prs_afdeling_omschrijving;
|
||
|
||
|
||
|
||
|
||
-- Dienstverband uren van medewerkers bij volle week, dus b.v. 40, 32, 30 etc
|
||
-- Beschikbare_uren_groen: normaal dienstverband, maar als ergen midden in de week, dan dienstverband - aantal voorbije dagen * # uren bij medewerker - # uren van vandaag gerekend vanaf 9 uur smorgens
|
||
-- Opdracht_uren_rood: opdrachturen bij medewerker, maar niet meer dan Beschikbare_uren_groen
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders_wk0
|
||
(
|
||
prs_perslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
beschikbare_uren_groen,
|
||
opdracht_uren_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
prs_perslid_dienstverband_uren - ( greatest((to_char(sysdate,'D')-2),0)*(prs_perslid_dienstverband_uren/5) + (to_char(sysdate,'HH24') - 9) ) beschikbare_uren_groen,
|
||
least(som_MLD_OPDR_UREN, prs_perslid_dienstverband_uren - (greatest((to_char(sysdate,'D')-2),0)*(prs_perslid_dienstverband_uren/5) + (to_char(sysdate,'HH24') - 9) ) ) opdracht_uren_rood,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_grp;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_mdw_week_0
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen - opdracht_uren_rood,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk0;
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders_wk1
|
||
(
|
||
prs_perslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
beschikbare_uren_groen,
|
||
opdracht_uren_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT g1.prs_perslid_key,
|
||
g1.prs_afdeling_key,
|
||
-- g1.prs_perslid_naam_full,
|
||
TRIM(SUBSTR(g1.prs_perslid_naam_full, 1, decode (INSTR(g1.prs_perslid_naam_full,' '), 0, LENGTH(g1.prs_perslid_naam_full),INSTR(g1.prs_perslid_naam_full,' ') ))),
|
||
g1.prs_perslid_dienstverband_uren,
|
||
g1.prs_perslid_dienstverband_uren - least(g1.som_MLD_OPDR_UREN - w0.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) beschikbare_uren_groen,
|
||
least(g1.som_MLD_OPDR_UREN - w0.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) opdracht_uren_rood,
|
||
g1.url
|
||
FROM arai_v_opdr_uitvoerders_grp g1, arai_v_opdr_uitvoerders_wk0 w0
|
||
WHERE g1.prs_perslid_key = w0.prs_perslid_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_mdw_week_1
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk1;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_opdr_uitvoerders_wk2
|
||
(
|
||
prs_perslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
beschikbare_uren_groen,
|
||
opdracht_uren_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT g1.prs_perslid_key,
|
||
g1.prs_afdeling_key,
|
||
-- g1.prs_perslid_naam_full,
|
||
TRIM(SUBSTR(g1.prs_perslid_naam_full, 1, decode (INSTR(g1.prs_perslid_naam_full,' '), 0, LENGTH(g1.prs_perslid_naam_full),INSTR(g1.prs_perslid_naam_full,' ') ))),
|
||
g1.prs_perslid_dienstverband_uren,
|
||
g1.prs_perslid_dienstverband_uren - least(g1.som_MLD_OPDR_UREN - w0.opdracht_uren_rood - w1.opdracht_uren_rood, g1.prs_perslid_dienstverband_uren) beschikbare_uren_groen,
|
||
least(g1.som_MLD_OPDR_UREN - w0.opdracht_uren_rood - w1.opdracht_uren_rood , g1.prs_perslid_dienstverband_uren) opdracht_uren_rood,
|
||
g1.url
|
||
FROM arai_v_opdr_uitvoerders_grp g1, arai_v_opdr_uitvoerders_wk0 w0, arai_v_opdr_uitvoerders_wk1 w1
|
||
WHERE g1.prs_perslid_key = w0.prs_perslid_key
|
||
AND g1.prs_perslid_key = w1.prs_perslid_key;
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_mdw_week_2
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk2;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_TD_week_0
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen - opdracht_uren_rood,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk0
|
||
WHERE prs_afdeling_key = 97;
|
||
|
||
-- Grafiek van de medewerkers Technische Dienst Electra (key = 98)
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_ELE_week_0
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen - opdracht_uren_rood,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk0
|
||
WHERE prs_afdeling_key = 98;
|
||
|
||
-- Grafiek van de medewerkers Technische Dienst Werktuigbouw (key = 99)
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_WTB_week_0
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || beschikbare_uren_groen || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen - opdracht_uren_rood,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk0
|
||
WHERE prs_afdeling_key = 99;
|
||
|
||
|
||
|
||
-- Grafiek van de medewerkers Technische Dienst (key = 97)
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_TD_week_1
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk1
|
||
WHERE prs_afdeling_key = 97;
|
||
|
||
-- Grafiek van de medewerkers Technische Dienst Electra (key = 98)
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_ELE_week_1
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk1
|
||
WHERE prs_afdeling_key = 98;
|
||
|
||
-- Grafiek van de medewerkers Technische Dienst Werktuigbouw (key = 99)
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_WTB_week_1
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk1
|
||
WHERE prs_afdeling_key = 99;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_TD_week_2
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_UREN,
|
||
FCLT_YAS2_UREN,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk2
|
||
WHERE prs_afdeling_key = 97;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_ELE_week_2
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk2
|
||
WHERE prs_afdeling_key = 98;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_WTB_week_2
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || (opdracht_uren_rood) || '/' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
beschikbare_uren_groen,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_wk2
|
||
WHERE prs_afdeling_key = 99;
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_capac_mdw_max_weeknr
|
||
(max_weeknr)
|
||
AS
|
||
SELECT ROUND(COALESCE(MAX(som_MLD_OPDR_UREN), 0) / 40 ) + 2
|
||
FROM arai_v_opdr_uitvoerders_grp;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_mdw_all
|
||
(
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
beschikbare_uren_groen,
|
||
opdracht_uren_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
prs_perslid_dienstverband_uren,
|
||
40 * max_weeknr,
|
||
round(som_MLD_OPDR_UREN * (40 / prs_perslid_dienstverband_uren)),
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_grp, arai_v_capac_mdw_max_weeknr;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_mdw_totaal
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_UREN,
|
||
-- FCLT_YAS2_WEEKNR,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full || ' (' || prs_perslid_dienstverband_uren || ')',
|
||
opdracht_uren_rood,
|
||
-- (beschikbare_uren_groen - opdracht_uren_rood),
|
||
url
|
||
FROM arai_v_graph_capac_mdw_all;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_aantopdr_mdw_all
|
||
(
|
||
prs_perslid_key,
|
||
FCLT_XAS_UITVOERDER,
|
||
FCLT_YAS_AANTAL,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_perslid_key,
|
||
prs_perslid_naam_full,
|
||
aantal_opdrachten,
|
||
url
|
||
FROM arai_v_opdr_uitvoerders_grp;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_capac_afd_totaal
|
||
(
|
||
prs_afdeling_key,
|
||
FCLT_XAS_AFDELING,
|
||
FCLT_YAS_UREN,
|
||
-- FCLT_YAS2_WEEKNR,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
som_MLD_OPDR_UREN,
|
||
url
|
||
FROM arai_v_opdr_afdeling_grp;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_aantopdr_afd_all
|
||
(
|
||
prs_afdeling_key,
|
||
FCLT_XAS_AFDELING,
|
||
FCLT_YAS_AANTAL,
|
||
-- FCLT_YAS2_WEEKNR,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT prs_afdeling_key,
|
||
prs_afdeling_omschrijving,
|
||
aantal_opdrachten,
|
||
url
|
||
FROM arai_v_opdr_afdeling_grp;
|
||
|
||
|
||
|
||
--CREATE OR REPLACE VIEW arai_v_uren_vd_week
|
||
--AS
|
||
--SELECT
|
||
-- TO_CHAR(SYSDATE, 'YYYY'),
|
||
-- TRUNC(TRUNC (SYSDATE, 'IW') + LEVEL),
|
||
-- TO_CHAR(TRUNC (SYSDATE, 'IW') + LEVEL/24, 'HH24')
|
||
--FROM arai_v_opdr_uitvoerders_grp
|
||
--CONNECT BY LEVEL <= (SELECT ROUND(COALESCE(MAX(som_MLD_OPDR_UREN), 0) / 40 ) + 2
|
||
-- FROM arai_v_opdr_uitvoerders_grp
|
||
-- );
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_sync_alg_ruimte
|
||
( alg_ruimte_key,
|
||
alg_verdieping_key,
|
||
cadlabel
|
||
)
|
||
AS
|
||
SELECT r.alg_ruimte_key,
|
||
r.alg_verdieping_key,
|
||
coalesce(rk.alg_onrgoedkenmerk_waarde, trim(gk.alg_onrgoedkenmerk_waarde) || ' ' || trim(v.alg_verdieping_code) || ' ' || trim(sr.alg_srtruimte_code) || ' ' || trim(r.alg_ruimte_nr))
|
||
FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g, alg_onrgoedkenmerk gk, alg_onrgoedkenmerk rk, alg_srtruimte sr
|
||
WHERE r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND sr.alg_srtruimte_key = r.alg_srtruimte_key
|
||
AND gk.alg_onrgoed_key= g.alg_gebouw_key
|
||
AND gk.alg_kenmerk_key = 1000
|
||
AND gk.alg_onrgoed_niveau='G'
|
||
AND rk.alg_onrgoed_key (+)= r.alg_ruimte_key
|
||
AND rk.alg_kenmerk_key (+) = 1001
|
||
AND rk.alg_onrgoed_niveau (+) ='R';
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_urenoverzicht
|
||
(fclt_x_meldingnr,
|
||
html_meldingnr,
|
||
fclt_f_vakgroep,
|
||
fclt_f_melding,
|
||
fclt_f_gebouw,
|
||
fclt_f_verdieping,
|
||
fclt_f_ruimte,
|
||
opdrachtnr,
|
||
uren_gepland,
|
||
fclt_f_uitvoerder,
|
||
uren_besteed,
|
||
fclt_f_jaar,
|
||
fclt_f_maand,
|
||
fclt_f_weeknr,
|
||
fclt_f_datum,
|
||
fclt_f_status
|
||
)
|
||
AS SELECT TO_CHAR(m.mld_melding_key),
|
||
'<a onclick=''FcltMgr.openDetail("Appl/MLD/mld_melding.asp?urole=bo&'
|
||
|| 'mld_key='
|
||
|| m.mld_melding_key
|
||
|| '")''>'
|
||
|| m.mld_melding_key
|
||
|| '</a>'
|
||
mld_melding_html,
|
||
d.ins_discipline_omschrijving,
|
||
sm.mld_stdmelding_omschrijving,
|
||
g.alg_gebouw_naam,
|
||
to_char(v.alg_verdieping_volgnr),
|
||
r.alg_ruimte_nr,
|
||
-- o.mld_opdr_key,
|
||
-- o.mld_opdr_datumbegin,
|
||
-- TRUNC (o.mld_opdr_einddatum) einddatum,
|
||
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
|
||
o.mld_opdr_uren uren_opdracht,
|
||
--p.prs_perslid_key,
|
||
--p.prs_perslid_naam,
|
||
--p.prs_perslid_tussenvoegsel,
|
||
--p.prs_perslid_voorletters,
|
||
--p.prs_perslid_voornaam,
|
||
pf.prs_perslid_naam_full,
|
||
--p.prs_perslid_dienstverband,
|
||
--ou.mld_opdr_uren_key,
|
||
ou.mld_opdr_uren_besteed,
|
||
TO_CHAR (ou.mld_opdr_uren_datum, 'IYYY'),
|
||
TO_CHAR (ou.mld_opdr_uren_datum, 'MM'),
|
||
TO_CHAR (ou.mld_opdr_uren_datum, 'IW'),
|
||
TO_CHAR (ou.mld_opdr_uren_datum, 'IYYY-MM-DD'),
|
||
DECODE(ou.mld_opdr_uren_status, 0, coalesce(flx0.fac_locale_xsl_cust, flx0.fac_locale_xsl_tekst),
|
||
1, coalesce(flx1.fac_locale_xsl_cust, flx1.fac_locale_xsl_tekst),
|
||
2, coalesce(flx2.fac_locale_xsl_cust, flx2.fac_locale_xsl_tekst),
|
||
3, coalesce(flx3.fac_locale_xsl_cust, flx3.fac_locale_xsl_tekst),
|
||
4, coalesce(flx4.fac_locale_xsl_cust, flx4.fac_locale_xsl_tekst)
|
||
)
|
||
FROM mld_opdr o, mld_opdr_uren ou, prs_perslid p, prs_v_perslid_fullnames pf, mld_melding m, mld_stdmelding sm, mld_discipline d,
|
||
fac_locale_xsl flx0, fac_locale_xsl flx1, fac_locale_xsl flx2, fac_locale_xsl flx3, fac_locale_xsl flx4,
|
||
alg_gebouw g, alg_verdieping v, alg_ruimte r
|
||
WHERE ou.mld_opdr_key = o.mld_opdr_key
|
||
AND ou.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND flx0.fac_locale_xsl_label = 'lcl_mld_uren_status_0'
|
||
AND flx0.fac_locale_xsl_lang = lcl.getuserlanguage ()
|
||
AND flx0.fac_locale_xsl_module = 'ASP'
|
||
AND flx1.fac_locale_xsl_label = 'lcl_mld_uren_status_1'
|
||
AND flx1.fac_locale_xsl_lang = lcl.getuserlanguage ()
|
||
AND flx1.fac_locale_xsl_module = 'ASP'
|
||
AND flx2.fac_locale_xsl_label = 'lcl_mld_uren_status_2'
|
||
AND flx2.fac_locale_xsl_lang = lcl.getuserlanguage ()
|
||
AND flx2.fac_locale_xsl_module = 'ASP'
|
||
AND flx3.fac_locale_xsl_label = 'lcl_mld_uren_status_3'
|
||
AND flx3.fac_locale_xsl_lang = lcl.getuserlanguage ()
|
||
AND flx3.fac_locale_xsl_module = 'ASP'
|
||
AND flx4.fac_locale_xsl_label = 'lcl_mld_uren_status_4'
|
||
AND flx4.fac_locale_xsl_lang = lcl.getuserlanguage ()
|
||
AND flx4.fac_locale_xsl_module = 'ASP'
|
||
AND m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key (+)
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key (+)
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key (+);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KOPPELING MET EBMS KOPPELING MET EBMS KOPPELING MET EBMS KOPPELING MET EBMS ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- EBMS EVENT/ORGANISATIE GEGEVENS
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- call ARAI#33463: via Vervaldatum verleden niet zichtbaar
|
||
-- call ARAI#59317: RAI Amsterdam B.V. vervaldatum kan nooit bereikt worden (sysdate + 30)
|
||
-- Normale events zijn 450 dagen na afbouwdatum niet meer zichtbaar (via vervaldatum), om een te lange lijst te voorkomen.
|
||
CREATE OR REPLACE VIEW ARAI_V_EVENTS
|
||
(
|
||
ARAI_EVENTS_KEY,
|
||
ARAI_EVENTS_FULL,
|
||
EVENEMENT,
|
||
EVENTID,
|
||
BEDRIJFSNAAM,
|
||
BEDRIJFSNAAMID,
|
||
BILLTO,
|
||
BILLTOID,
|
||
EVENTDATUMVAN,
|
||
EVENTDATUMTOT,
|
||
EVENTOPBOUW,
|
||
EVENTAFBOUW,
|
||
VERVALDATUM
|
||
)
|
||
AS
|
||
SELECT arai_events_key,
|
||
Evenement || '|' || Bedrijfsnaam,
|
||
Evenement,
|
||
EventID,
|
||
Bedrijfsnaam,
|
||
BedrijfsnaamID,
|
||
BIllto,
|
||
BilltoID,
|
||
EventDatumVan,
|
||
EventDatumTot,
|
||
EventOpbouw,
|
||
EventAfbouw,
|
||
EventAfbouw + 450
|
||
FROM arai_events
|
||
WHERE evenement NOT LIKE '%ikv%'
|
||
AND evenement NOT LIKE '%IKV%'
|
||
AND evenement NOT LIKE '%ite visit%'
|
||
AND evenement NOT LIKE '%ite Visit%'
|
||
AND evenement NOT LIKE '%espreking%'
|
||
AND evenement NOT LIKE '%valuatie%'
|
||
AND evenement NOT LIKE '%roductie meeting%'
|
||
AND evenement NOT LIKE '%training%'
|
||
AND evenement NOT LIKE '%Training%'
|
||
AND evenement NOT LIKE '%ondleiding%'
|
||
AND evenement NOT LIKE '%FO1%'
|
||
AND evenement NOT LIKE '%ousekeeping%'
|
||
AND evenement NOT LIKE '%tatus report%'
|
||
AND evenement NOT LIKE '%avilions%'
|
||
AND arai_events_key != 28321
|
||
UNION ALL
|
||
SELECT arai_events_key,
|
||
Evenement || '|' || Bedrijfsnaam,
|
||
Evenement,
|
||
EventID,
|
||
Bedrijfsnaam,
|
||
BedrijfsnaamID,
|
||
BIllto,
|
||
BilltoID,
|
||
EventDatumVan,
|
||
EventDatumTot,
|
||
EventOpbouw,
|
||
EventAfbouw,
|
||
SYSDATE + 30
|
||
FROM arai_events
|
||
WHERE arai_events_key = 28321;
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- EBMS EXPOSANTEN GEGEVENS
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
CREATE OR REPLACE VIEW arai_v_ebms (
|
||
arai_ebms_key,
|
||
arai_ebms_full,
|
||
Evenement,
|
||
EventID,
|
||
Bedrijfsnaam,
|
||
BedrijfsnaamID,
|
||
BIllto,
|
||
BilltoID,
|
||
Lokatie,
|
||
Ordernummer,
|
||
EventDatumVan,
|
||
EventDatumTot,
|
||
Vervaldatum
|
||
)
|
||
AS
|
||
SELECT
|
||
eb.arai_ebms_key,
|
||
eb.Ordernummer || '|' || eb.Evenement || '|' || eb.Bedrijfsnaam || '|' || eb.Lokatie,
|
||
eb.Evenement,
|
||
eb.EventID,
|
||
eb.Bedrijfsnaam,
|
||
eb.BedrijfsnaamID,
|
||
eb.BIllto,
|
||
eb.BilltoID,
|
||
eb.Lokatie,
|
||
eb.Ordernummer,
|
||
ev.EventDatumVan,
|
||
ev.EventDatumTot,
|
||
ev.Vervaldatum
|
||
FROM arai_ebms eb, arai_v_events ev
|
||
WHERE eb.eventid=ev.eventid;
|
||
|
||
-- Lijst met unieke standnummers tussen een maand geleden en een jaar vooruit (anders teveel resultaten)
|
||
CREATE OR REPLACE VIEW arai_v_standnummers
|
||
(ebms_key,
|
||
standnummer)
|
||
AS
|
||
SELECT DISTINCT MIN (arai_ebms_key), lokatie
|
||
FROM ARAI_V_EBMS
|
||
WHERE eventdatumtot BETWEEN sysdate - 31 AND sysdate + 365
|
||
GROUP BY lokatie;
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_ebms (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := '|';
|
||
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_Evenement VARCHAR2 (256);
|
||
v_EventID VARCHAR2 (256);
|
||
v_Bedrijfsnaam VARCHAR2 (256);
|
||
v_BedrijfsnaamID VARCHAR2 (256);
|
||
v_BIllto VARCHAR2 (256);
|
||
v_BilltoID VARCHAR2 (256);
|
||
v_Lokatie VARCHAR2 (256);
|
||
v_Ordernummer VARCHAR2 (256);
|
||
v_EventDatum1 VARCHAR2 (256);
|
||
v_EventDatum2 VARCHAR2 (256);
|
||
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_imp_ebms;
|
||
|
||
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
|
||
|
||
|
||
-- EBMS gegevens
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_Evenement);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_EventID);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_Bedrijfsnaam);
|
||
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_BedrijfsnaamID);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_BIllto);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_BilltoID);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_Lokatie);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_Ordernummer);
|
||
|
||
--fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_EventDatum1);
|
||
--fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_EventDatum2);
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_Evenement
|
||
|| '|'
|
||
|| v_BedrijfsnaamID
|
||
|| '|'
|
||
|| v_Ordernummer
|
||
|| '] ';
|
||
|
||
-- 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.
|
||
-- Header = Evenement|EventID|Bedrijfsnaam|BedrijfsnaamID|BIllto|BilltoID|Lokatie|Ordernummer
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_Evenement) = 'EVENEMENT'
|
||
AND UPPER (v_EventID) = 'EVENTID'
|
||
AND UPPER (v_Bedrijfsnaam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_BedrijfsnaamID) = 'BEDRIJFSNAAMID'
|
||
AND UPPER (v_Ordernummer) = 'ORDERNUMMER'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige ordernummer';
|
||
v_Ordernummer := TRIM (v_Ordernummer);
|
||
|
||
IF (v_Ordernummer IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Ordernummer) > 20
|
||
THEN
|
||
v_Ordernummer := SUBSTR (v_Ordernummer, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Ordernummer te lang', 'Ordernummer wordt afgebroken tot [' || v_Ordernummer || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'Ordernummer is leeg');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige lokatie';
|
||
v_Lokatie := TRIM (v_Lokatie);
|
||
|
||
IF (v_Lokatie IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Lokatie) > 50
|
||
THEN
|
||
v_Lokatie := SUBSTR (v_Lokatie, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Lokatie te lang', 'Lokatie wordt afgebroken tot [' || v_Lokatie || ']' );
|
||
END IF;
|
||
--ELSE
|
||
--fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'Lokatie is leeg');
|
||
--v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BedrijfsID';
|
||
v_BedrijfsnaamID := TRIM (v_BedrijfsnaamID);
|
||
|
||
IF (v_BedrijfsnaamID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BedrijfsnaamID) > 20
|
||
THEN
|
||
v_BedrijfsnaamID := SUBSTR (v_BedrijfsnaamID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BedrijfsnaamID te lang', 'BedrijfsnaamID wordt afgebroken tot [' || v_BedrijfsnaamID || ']' );
|
||
END IF;
|
||
--ELSE
|
||
--fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'BedrijfsnaamID is leeg');
|
||
--v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige bedrijfsnaam';
|
||
v_Bedrijfsnaam := TRIM (v_Bedrijfsnaam);
|
||
|
||
IF (v_Bedrijfsnaam IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Bedrijfsnaam) > 255
|
||
THEN
|
||
v_Bedrijfsnaam := SUBSTR (v_Bedrijfsnaam, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Bedrijfsnaam te lang', 'Bedrijfsnaam wordt afgebroken tot [' || v_Bedrijfsnaam || ']' );
|
||
END IF;
|
||
--ELSE
|
||
--fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'Bedrijfsnaam is leeg');
|
||
--v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BilltoID';
|
||
v_BilltoID := TRIM (v_BilltoID);
|
||
|
||
IF (v_BilltoID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BilltoID) > 20
|
||
THEN
|
||
v_BilltoID := SUBSTR (v_BilltoID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BilltoID te lang', 'BilltoID wordt afgebroken tot [' || v_BilltoID || ']' );
|
||
END IF;
|
||
--ELSE
|
||
--fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'BilltoID is leeg');
|
||
--v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BIllto';
|
||
v_BIllto := TRIM (v_BIllto);
|
||
|
||
IF (v_BIllto IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BIllto) > 255
|
||
THEN
|
||
v_BIllto := SUBSTR (v_BIllto, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BIllto te lang', 'BIllto wordt afgebroken tot [' || v_BIllto || ']' );
|
||
END IF;
|
||
--ELSE
|
||
--fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'BIllto is leeg');
|
||
--v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige EventID';
|
||
v_EventID := TRIM (v_EventID);
|
||
|
||
IF (v_EventID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventID) > 20
|
||
THEN
|
||
v_EventID := SUBSTR (v_EventID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'EventID te lang', 'EventID wordt afgebroken tot [' || v_EventID || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'EventID is leeg');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige Evenement';
|
||
v_Evenement := TRIM (v_Evenement);
|
||
|
||
IF (v_Evenement IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Evenement) > 255
|
||
THEN
|
||
v_Evenement := SUBSTR (v_Evenement, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Evenement te lang', 'Evenement wordt afgebroken tot [' || v_Evenement || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'Evenement is leeg');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_imp_ebms';
|
||
|
||
INSERT INTO arai_imp_ebms (Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID, Lokatie, Ordernummer)
|
||
VALUES (v_Evenement, v_EventID, v_Bedrijfsnaam, v_BedrijfsnaamID, v_BIllto, v_BilltoID, v_Lokatie, v_Ordernummer);
|
||
|
||
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',
|
||
'EBMS: aantal ingelezen regels: '
|
||
|| TO_CHAR (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 arai_import_ebms;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_ebms (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
|
||
v_ordernummer VARCHAR(20);
|
||
|
||
|
||
-- Alle kpi_wachtijen van Mitel telefooncentrale
|
||
CURSOR c_imp_ebms
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_ebms k;
|
||
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
|
||
v_aanduiding := '';
|
||
|
||
|
||
-- Alle kpi-wachtrijen verwerken...
|
||
FOR rec_ebms IN c_imp_ebms
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen ordernummer [' || UPPER(rec_ebms.Ordernummer) || ']';
|
||
-- Dit zal waarschijnlijk een error opleveren bij 2 inserts van ordernummer.
|
||
|
||
-- Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID, Lokatie, Ordernummer
|
||
|
||
-- Bepaal het record uit arai_ebms op basis van ordernummer
|
||
|
||
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM arai_ebms
|
||
WHERE Ordernummer = UPPER (rec_ebms.Ordernummer);
|
||
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Ordernummer bestaat nog niet, dus toevoegen...
|
||
v_errorhint := 'Fout bij toevoegen ordernummer ' || UPPER(rec_ebms.Ordernummer);
|
||
|
||
INSERT INTO arai_ebms (Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID, Lokatie, Ordernummer)
|
||
VALUES (rec_ebms.Evenement, rec_ebms.EventID, rec_ebms.Bedrijfsnaam, rec_ebms.BedrijfsnaamID, rec_ebms.BIllto, rec_ebms.BilltoID, rec_ebms.Lokatie, UPPER(rec_ebms.Ordernummer));
|
||
|
||
COMMIT;
|
||
ELSE
|
||
-- Ordernummer bestaat al, dus updaten van alle gegevens
|
||
v_errorhint := 'Fout bij bijwerken van ordernummer ' || UPPER(rec_ebms.Ordernummer);
|
||
|
||
UPDATE arai_ebms
|
||
SET Evenement= rec_ebms.Evenement,
|
||
EventID=rec_ebms.EventID,
|
||
Bedrijfsnaam=rec_ebms.Bedrijfsnaam,
|
||
BedrijfsnaamID=rec_ebms.BedrijfsnaamID,
|
||
BIllto=rec_ebms.BIllto,
|
||
BilltoID=rec_ebms.BilltoID,
|
||
Lokatie=rec_ebms.Lokatie
|
||
WHERE Ordernummer=UPPER(rec_ebms.Ordernummer);
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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',
|
||
'EBMS: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
END arai_update_ebms;
|
||
/
|
||
|
||
|
||
-- mbmb
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- EBMS EVENTS / ORGANISATIE GEGEVENS
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_events (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := '|';
|
||
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_Evenement VARCHAR2 (256);
|
||
v_EventID VARCHAR2 (256);
|
||
v_Bedrijfsnaam VARCHAR2 (256);
|
||
v_BedrijfsnaamID VARCHAR2 (256);
|
||
v_BIllto VARCHAR2 (256);
|
||
v_BilltoID VARCHAR2 (256);
|
||
v_EventDatum1 VARCHAR2 (256);
|
||
v_EventDatum2 VARCHAR2 (256);
|
||
v_EventOpbouw VARCHAR2 (256);
|
||
v_EventAfbouw VARCHAR2 (256);
|
||
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_imp_events;
|
||
|
||
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
|
||
|
||
|
||
-- EVENTS GEGEVENS UIT EBMS
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_Evenement);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_EventID);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_Bedrijfsnaam);
|
||
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_BedrijfsnaamID);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 5, v_BIllto);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_BilltoID);
|
||
|
||
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_EventOpbouw);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_EventDatum1);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_EventDatum2);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_EventAfbouw);
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_Evenement
|
||
|| '|'
|
||
|| v_BedrijfsnaamID
|
||
|| '] ';
|
||
|
||
-- 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.
|
||
-- Header = Evenement|EventID|Bedrijfsnaam|BedrijfsnaamID|BIllto|BilltoID
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_Evenement) = 'EVENEMENT'
|
||
AND UPPER (v_EventID) = 'EVENTID'
|
||
AND UPPER (v_Bedrijfsnaam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_BedrijfsnaamID) = 'BEDRIJFSNAAMID'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige EventID';
|
||
v_EventID := TRIM (v_EventID);
|
||
|
||
IF (v_EventID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventID) > 20
|
||
THEN
|
||
v_EventID := SUBSTR (v_EventID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'EventID te lang', 'EventID wordt afgebroken tot [' || v_EventID || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'EventID is leeg');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige Evenement';
|
||
v_Evenement := TRIM (v_Evenement);
|
||
|
||
IF (v_Evenement IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Evenement) > 255
|
||
THEN
|
||
v_Evenement := SUBSTR (v_Evenement, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Evenement te lang', 'Evenement wordt afgebroken tot [' || v_Evenement || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Record niet ingelezen', 'Evenement is leeg');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BedrijfsID';
|
||
v_BedrijfsnaamID := TRIM (v_BedrijfsnaamID);
|
||
|
||
IF (v_BedrijfsnaamID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BedrijfsnaamID) > 20
|
||
THEN
|
||
v_BedrijfsnaamID := SUBSTR (v_BedrijfsnaamID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BedrijfsnaamID te lang', 'BedrijfsnaamID wordt afgebroken tot [' || v_BedrijfsnaamID || ']' );
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige bedrijfsnaam';
|
||
v_Bedrijfsnaam := TRIM (v_Bedrijfsnaam);
|
||
|
||
IF (v_Bedrijfsnaam IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_Bedrijfsnaam) > 255
|
||
THEN
|
||
v_Bedrijfsnaam := SUBSTR (v_Bedrijfsnaam, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Bedrijfsnaam te lang', 'Bedrijfsnaam wordt afgebroken tot [' || v_Bedrijfsnaam || ']' );
|
||
END IF;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BilltoID';
|
||
v_BilltoID := TRIM (v_BilltoID);
|
||
|
||
IF (v_BilltoID IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BilltoID) > 20
|
||
THEN
|
||
v_BilltoID := SUBSTR (v_BilltoID, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BilltoID te lang', 'BilltoID wordt afgebroken tot [' || v_BilltoID || ']' );
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige BIllto';
|
||
v_BIllto := TRIM (v_BIllto);
|
||
|
||
IF (v_BIllto IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_BIllto) > 255
|
||
THEN
|
||
v_BIllto := SUBSTR (v_BIllto, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'BIllto te lang', 'BIllto wordt afgebroken tot [' || v_BIllto || ']' );
|
||
END IF;
|
||
END IF;
|
||
|
||
|
||
v_errorhint := 'Ongeldige Start Eventdatum ';
|
||
v_EventDatum1 := TRIM (v_EventDatum1);
|
||
IF (v_EventDatum1 IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventDatum1) > 50
|
||
THEN
|
||
v_EventDatum1 := SUBSTR (v_EventDatum1, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Start Eventdatum te lang', 'Start Eventdatum wordt afgebroken tot [' || v_EventDatum1 || ']' );
|
||
END IF;
|
||
v_EventDatum1 := REPLACE(REPLACE(v_EventDatum1,' ', ' '),' ', ' ');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige Einde Eventdatum ';
|
||
v_EventDatum2 := TRIM (v_EventDatum2);
|
||
IF (v_EventDatum2 IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventDatum2) > 50
|
||
THEN
|
||
v_EventDatum2 := SUBSTR (v_EventDatum2, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Einde Eventdatum te lang', 'Einde Eventdatum wordt afgebroken tot [' || v_EventDatum2 || ']' );
|
||
END IF;
|
||
v_EventDatum2 := REPLACE(REPLACE(v_EventDatum2,' ', ' '),' ', ' ');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige Start Opbouwdatum ';
|
||
v_EventOpbouw := TRIM (v_EventOpbouw);
|
||
IF (v_EventOpbouw IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventOpbouw) > 50
|
||
THEN
|
||
v_EventOpbouw := SUBSTR (v_EventOpbouw, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Start Opbouwdatum te lang', 'Start Opbouwdatum wordt afgebroken tot [' || v_EventOpbouw || ']' );
|
||
END IF;
|
||
v_EventOpbouw := REPLACE(REPLACE(v_EventOpbouw,' ', ' '),' ', ' ');
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige Einde Afbouwdatum ';
|
||
v_EventAfbouw := TRIM (v_EventAfbouw);
|
||
IF (v_EventAfbouw IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_EventAfbouw) > 50
|
||
THEN
|
||
v_EventAfbouw := SUBSTR (v_EventAfbouw, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Einde Afbouwdatum te lang', 'Einde Afbouwdatum wordt afgebroken tot [' || v_EventAfbouw || ']' );
|
||
END IF;
|
||
v_EventAfbouw := REPLACE(REPLACE(v_EventAfbouw,' ', ' '),' ', ' ');
|
||
END IF;
|
||
|
||
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_imp_events';
|
||
|
||
INSERT INTO arai_imp_events (Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID, EventDatumVan, EventDatumTot, EventOpbouw, EventAfbouw)
|
||
VALUES (v_Evenement, v_EventID, v_Bedrijfsnaam, v_BedrijfsnaamID, v_BIllto, v_BilltoID, v_EventDatum1, v_EventDatum2, v_EventOpbouw, v_EventAfbouw);
|
||
|
||
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',
|
||
'EVENTS: aantal ingelezen regels: '
|
||
|| TO_CHAR (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 arai_import_events;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_events (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
|
||
|
||
-- Alle event-regels
|
||
CURSOR c_imp_events
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_events;
|
||
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
|
||
v_aanduiding := '';
|
||
|
||
|
||
-- Alle events verwerken...
|
||
FOR rec_events IN c_imp_events
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen events-id [' || UPPER(rec_events.EventID) || ']';
|
||
|
||
-- Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID
|
||
|
||
-- Bepaal het record uit arai_events op basis van event_id
|
||
|
||
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM arai_events
|
||
WHERE EventID = UPPER (rec_events.EventID);
|
||
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Event bestaat nog niet, dus toevoegen...
|
||
v_errorhint := 'Fout bij toevoegen event ' || UPPER(rec_events.EventID);
|
||
|
||
INSERT INTO arai_events (Evenement, EventID, Bedrijfsnaam, BedrijfsnaamID, BIllto, BilltoID, EventDatumVan, EventDatumTot, EventOpbouw, EventAfbouw)
|
||
SELECT rec_events.Evenement, UPPER(rec_events.EventID), rec_events.Bedrijfsnaam, rec_events.BedrijfsnaamID, rec_events.BIllto, rec_events.BilltoID,
|
||
to_date(rec_events.EventDatumVan,'DD-MM-YYYY HH24:MI:SS'),
|
||
to_date(rec_events.EventDatumTot,'DD-MM-YYYY HH24:MI:SS'),
|
||
to_date(rec_events.EventOpbouw,'DD-MM-YYYY HH24:MI:SS'),
|
||
to_date(rec_events.EventAfbouw,'DD-MM-YYYY HH24:MI:SS')
|
||
FROM DUAL;
|
||
-- VALUES (rec_events.Evenement, rec_events.EventID, rec_events.Bedrijfsnaam, rec_events.BedrijfsnaamID, rec_events.BIllto, rec_events.BilltoID);
|
||
|
||
COMMIT;
|
||
ELSE
|
||
-- Event bestaat al, dus updaten van alle gegevens
|
||
v_errorhint := 'Fout bij bijwerken van event ' || UPPER(rec_events.EventID);
|
||
|
||
UPDATE arai_events
|
||
SET Evenement= rec_events.Evenement,
|
||
Bedrijfsnaam=rec_events.Bedrijfsnaam,
|
||
BedrijfsnaamID=rec_events.BedrijfsnaamID,
|
||
BIllto=rec_events.BIllto,
|
||
BilltoID=rec_events.BilltoID,
|
||
EventDatumVan=to_date(rec_events.EventDatumVan,'DD-MM-YYYY HH24:MI:SS'),
|
||
EventDatumTot=to_date(rec_events.EventDatumTot,'DD-MM-YYYY HH24:MI:SS'),
|
||
EventOpbouw=to_date(rec_events.EventOpbouw,'DD-MM-YYYY HH24:MI:SS'),
|
||
EventAfbouw=to_date(rec_events.EventAfbouw,'DD-MM-YYYY HH24:MI:SS')
|
||
WHERE EventID=UPPER(rec_events.EventID);
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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',
|
||
'EVENTS: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'EVENTS: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
END arai_update_events;
|
||
/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KPI TEMPERATUUR KPI TEMPERATUUR KPI TEMPERATUUR ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
-- sd.ins_srtgroep_key (+) = 1 is de key van de groep 'Temperatuur' onder de discipline 'Klimaat'
|
||
-- kd.ins_kenmerk_key (+) = 1 is de key van het kenmerk Temperatuur.
|
||
-- ak.alg_kenmerk_key (+) = 1020 is de key van kenmerk 'Join KPI?'
|
||
-- ak1.alg_kenmerk_key (+) = 1021 is de key van kenmerk 'Min. temperatuur'
|
||
-- ak2.alg_kenmerk_key (+) = 1022 is de key van kenmerk 'Max. temperatuur'
|
||
-- ud1.fac_usrtab_key = 41 is de key van de usertabel '$KPI_SETTINGS'.
|
||
-- ud.fac_usrdata_code = KPI_TEMP_GROEN_MIN is de ondergrens voor de grone zone (default 20.0), KPI_TEMP_GROEN_MAX is de bovengrens voor de groene zone (default 24)..
|
||
-- KPI_TEMP_ORANJE_MARGE is de marge (default 1.0 graad) die de ondergrens voor de oranje zone (default dus 20-1=19) en de bovengrens voor orane (default dus 24+1=25) aangeeft.
|
||
|
||
-- join_kpi heeft de volgende (key)waarden (uit eigen tabel Join KPI): 1 = Nee (doet niet mee), 2 = Nu ff niet, 3 = Ja (doet mee).
|
||
|
||
-- min_waarde_oranje (1e min. grenswaarde, instelbaar per ruimte, als leeg dan eerst uit usrtab $KPI_SETTINGS (KPI_TEMP_GROEN_MIN), anders default 20.0),
|
||
-- max_waarde_oranje,(1e max. grenswaarde, instelbaar per ruimte, als leeg dan eerst uit usrtab $KPI_SETTINGS (KPI_TEMP_GROEN_MAX), anders default 24.0),
|
||
-- min_waarde, (rode grenswaarde, is gelijk aan min_waarde_oranje - 1.0)
|
||
-- max_waarde, (rode grenswaarde, is gelijk aan max_waarde_oranje + 1.0)
|
||
CREATE OR REPLACE VIEW arai_v_kpi_temp_per_ruimte
|
||
( ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_kenmerkdeel_waarde,
|
||
min_waarde_oranje,
|
||
max_waarde_oranje,
|
||
min_waarde,
|
||
max_waarde,
|
||
ins_kenmerkdeel_aanmaak,
|
||
ins_kenmerkdeel_verwijder,
|
||
url
|
||
)
|
||
AS
|
||
SELECT d.ins_deel_key, d.ins_deel_omschrijving, r.alg_ruimte_key, COALESCE(ak.alg_onrgoedkenmerk_waarde,'1'),
|
||
g.alg_gebouw_code, g.alg_gebouw_naam, v.alg_verdieping_key, v.alg_verdieping_volgnr, r.alg_ruimte_nr, r.alg_ruimte_omschrijving, kd.ins_kenmerkdeel_waarde,
|
||
COALESCE(ak1.alg_onrgoedkenmerk_waarde,
|
||
( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_GROEN_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '20.0'),
|
||
COALESCE(ak2.alg_onrgoedkenmerk_waarde,
|
||
( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_GROEN_MAX'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '24.0'),
|
||
COALESCE(ak1.alg_onrgoedkenmerk_waarde,
|
||
( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_GROEN_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '20.0') - COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_ORANJE_MARGE'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '1.0'),
|
||
COALESCE(ak2.alg_onrgoedkenmerk_waarde,
|
||
( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_GROEN_MAX'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '24.0') + COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_ORANJE_MARGE'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '1.0'),
|
||
kd.ins_kenmerkdeel_aanmaak, kd.ins_kenmerkdeel_verwijder, NULL
|
||
FROM ins_deel d, ins_srtdeel sd, alg_ruimte r, alg_verdieping v, alg_gebouw g, ins_kenmerkdeel kd,
|
||
alg_onrgoedkenmerk ak, alg_onrgoedkenmerk ak1, alg_onrgoedkenmerk ak2
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key (+)
|
||
AND sd.ins_srtgroep_key (+) = 1
|
||
AND r.alg_ruimte_key = d.ins_alg_ruimte_key (+)
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND kd.ins_deel_key (+) = d.ins_deel_key
|
||
AND kd.ins_kenmerk_key (+) = 1
|
||
AND r.alg_ruimte_key = ak.alg_onrgoed_key
|
||
AND ak.alg_onrgoed_niveau = 'R'
|
||
AND ak.alg_kenmerk_key (+) = 1020
|
||
AND r.alg_ruimte_key = ak1.alg_onrgoed_key (+)
|
||
AND ak1.alg_onrgoed_niveau (+) = 'R'
|
||
AND ak1.alg_kenmerk_key (+) = 1021
|
||
AND r.alg_ruimte_key = ak2.alg_onrgoed_key (+)
|
||
AND ak2.alg_onrgoed_niveau (+) = 'R'
|
||
AND ak2.alg_kenmerk_key (+) = 1022;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_temp_per_ruimte
|
||
( alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
avg_temp,
|
||
min_temp,
|
||
max_temp,
|
||
min_waarde_oranje,
|
||
max_waarde_oranje,
|
||
min_waarde,
|
||
max_waarde,
|
||
datum,
|
||
url
|
||
)
|
||
AS
|
||
SELECT alg_ruimte_key,
|
||
MIN(join_kpi),
|
||
MIN(alg_gebouw_code),
|
||
MIN(alg_gebouw_naam),
|
||
MIN(alg_verdieping_key),
|
||
MIN(alg_verdieping_volgnr),
|
||
MIN(alg_ruimte_nr),
|
||
MIN(alg_ruimte_omschrijving),
|
||
ROUND(AVG(ins_kenmerkdeel_waarde),1),
|
||
ROUND(MIN(ins_kenmerkdeel_waarde),1),
|
||
ROUND(MAX(ins_kenmerkdeel_waarde),1),
|
||
MIN(min_waarde_oranje),
|
||
MIN(max_waarde_oranje),
|
||
MIN(min_waarde),
|
||
MIN(max_waarde),
|
||
MIN(ins_kenmerkdeel_aanmaak),
|
||
MIN(url)
|
||
FROM arai_v_kpi_temp_per_ruimte
|
||
WHERE ins_kenmerkdeel_verwijder IS NULL
|
||
AND TRUNC(ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
GROUP BY alg_ruimte_key ;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_temp_per_datapunt
|
||
( fclt_x_jaar,
|
||
fclt_x_maand,
|
||
fclt_x_dag,
|
||
fclt_x_uur,
|
||
fclt_x_minuut,
|
||
datum,
|
||
fclt_f_gebouw,
|
||
fclt_f_verdieping,
|
||
fclt_f_ruimte,
|
||
ruimtetemperatuur,
|
||
fclt_f_datapunt,
|
||
temperatuur
|
||
)
|
||
AS SELECT
|
||
to_char(ins_kenmerkdeel_aanmaak,'yyyy'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'mm'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'dd'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'hh24'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'mi'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'dd-mm-yyyy hh24:mi'),
|
||
alg_gebouw_code || '-' || alg_gebouw_naam,
|
||
to_char(alg_verdieping_volgnr),
|
||
alg_ruimte_omschrijving,
|
||
to_char((SELECT ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
FROM arai_v_kpi_temp_per_ruimte y
|
||
WHERE y.alg_ruimte_key = x.alg_ruimte_key
|
||
AND y.ins_kenmerkdeel_aanmaak = x.ins_kenmerkdeel_aanmaak
|
||
GROUP BY alg_ruimte_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI')
|
||
)),
|
||
ins_deel_omschrijving,
|
||
ins_kenmerkdeel_waarde
|
||
FROM arai_v_kpi_temp_per_ruimte x;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_temp_per_ruimte
|
||
( fclt_x_jaar,
|
||
fclt_x_maand,
|
||
fclt_x_dag,
|
||
fclt_x_dagdeel,
|
||
fclt_x_uur,
|
||
fclt_x_minuut,
|
||
fclt_f_gebouw,
|
||
fclt_f_verdieping,
|
||
fclt_f_ruimte,
|
||
ruimtetemperatuur,
|
||
kpi_temp
|
||
)
|
||
AS SELECT
|
||
to_char(ins_kenmerkdeel_aanmaak,'yyyy'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'mm'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'dd'),
|
||
CASE
|
||
WHEN to_char(ins_kenmerkdeel_aanmaak,'hh24') <= '06' THEN 'nacht'
|
||
WHEN to_char(ins_kenmerkdeel_aanmaak,'hh24') <= '11' THEN 'ochtend'
|
||
WHEN to_char(ins_kenmerkdeel_aanmaak,'hh24') <= '17' THEN 'middag'
|
||
ELSE 'avond'
|
||
END dagdeel,
|
||
to_char(ins_kenmerkdeel_aanmaak,'hh24'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'mi'),
|
||
MIN(alg_gebouw_code) || '-' || MIN(alg_gebouw_naam),
|
||
to_char(MIN(alg_verdieping_volgnr)),
|
||
MIN(alg_ruimte_omschrijving),
|
||
to_char(ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)),
|
||
CASE
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) IS NULL THEN -1
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) < MIN(min_waarde) THEN 2
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) > MIN(max_waarde) THEN 2
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) < MIN(min_waarde_oranje) THEN 1
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) > MIN(max_waarde_oranje) THEN 1
|
||
ELSE 0
|
||
END kpi_temp
|
||
FROM arai_v_kpi_temp_per_ruimte x
|
||
GROUP BY alg_ruimte_key, to_char(ins_kenmerkdeel_aanmaak,'yyyy'), to_char(ins_kenmerkdeel_aanmaak,'mm'),
|
||
to_char(ins_kenmerkdeel_aanmaak,'dd'), to_char(ins_kenmerkdeel_aanmaak,'hh24'), to_char(ins_kenmerkdeel_aanmaak,'mi');
|
||
|
||
|
||
|
||
----------------------------------- KPI TEMPERATUUR GRAFIEKEN -----------------------------------
|
||
|
||
-- Grafiek 1: KPI gemiddelde temperatuuur per ruimte van vandaag van max. 4 uur terug in de tijd uitgezet.
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_temp_vandaag
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_TEMPERATUUR,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT alg_ruimte_key,
|
||
TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI'),
|
||
ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1),
|
||
MIN(url)
|
||
FROM arai_v_kpi_temp_per_ruimte
|
||
WHERE ins_kenmerkdeel_aanmaak >= SYSDATE - 4/24
|
||
AND TRUNC(ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
GROUP BY alg_ruimte_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI');
|
||
|
||
-- Grafiek 2: KPI gemiddelde temperatuuur per ruimte van vandaag van max. 4 uur terug in de tijd uitgezet.
|
||
-- FCLT_YAS_TEMPERATUUR is de y-as voor rood
|
||
-- FCLT_YAS2_TEMPERATUUR is de y-as voor groen
|
||
-- FCLT_YAS3_TEMPERATUUR is de y-as voor oranje
|
||
-- Barchart met 3 kleuren: groen (temp = okee), oranje (temp is oranje) en rood (temp is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_temp2_vandaag
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_TEMPERATUUR,
|
||
FCLT_YAS2_TEMPERATUUR,
|
||
FCLT_YAS3_TEMPERATUUR,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT alg_ruimte_key,
|
||
TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI'),
|
||
CASE
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) IS NULL THEN 0
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) < MIN(min_waarde) THEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) > MIN(max_waarde) THEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) IS NULL THEN 0
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) < MIN(min_waarde_oranje) THEN 0
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) > MIN(max_waarde_oranje) THEN 0
|
||
ELSE ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
END,
|
||
CASE
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) IS NULL THEN 0
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) < MIN(min_waarde_oranje) AND
|
||
ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) >= MIN(min_waarde) THEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
WHEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) > MAX(max_waarde_oranje) AND
|
||
ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1) <= MIN(max_waarde) THEN ROUND(AVG(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),1)
|
||
ELSE 0
|
||
END,
|
||
MIN(url)
|
||
FROM arai_v_kpi_temp_per_ruimte
|
||
WHERE ins_kenmerkdeel_aanmaak >= SYSDATE - 4/24
|
||
AND TRUNC(ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
GROUP BY alg_ruimte_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI');
|
||
|
||
CREATE OR REPLACE VIEW arai_v_label_ins_temp
|
||
(ins_deel_key, waarde)
|
||
AS
|
||
SELECT ins_deel_key, CHR (10) ||
|
||
CASE
|
||
WHEN join_kpi = 3 THEN
|
||
CASE
|
||
WHEN ins_kenmerkdeel_waarde IS NULL THEN '[s750][cff0000]'
|
||
WHEN ROUND(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')),1) < min_waarde THEN '[s750][cff0000]'
|
||
WHEN ROUND(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')),1) > max_waarde THEN '[s750][cff0000]'
|
||
WHEN ROUND(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')),1) < min_waarde_oranje THEN '[s750][cff8800]'
|
||
WHEN ROUND(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')),1) > max_waarde_oranje THEN '[s750][cff8800]'
|
||
ELSE '[s500][c00c000]'
|
||
END
|
||
ELSE
|
||
'[s500][cc0c0c0]'
|
||
END || ins_kenmerkdeel_waarde || ' <20>C'
|
||
FROM arai_v_kpi_temp_per_ruimte
|
||
WHERE ins_kenmerkdeel_verwijder IS NULL
|
||
AND TRUNC(ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
AND ins_deel_key IS NOT NULL;
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KPI TOILET SCHOONMAAK KPI TOILET SCHOONMAAK KPI TOILET SCHOONMAAK ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
-- View arai_v_kpi_toilet_scan_ruimte zijn de toilet-inspectiepunten die ooit zijn gescan-d.
|
||
|
||
-- sd.ins_srtgroep_key (+) = 21 is de key van de groep 'Schoonmaak' onder de discipline 'Inspectiepunten'
|
||
-- ak.alg_kenmerk_key (+) = 1020 is de key van kenmerk 'Join KPI?'
|
||
-- join_kpi heeft de volgende (key)waarden (uit eigen tabel Join KPI): 1 = Nee (doet niet mee), 2 = Nu ff niet, 3 = Ja (doet mee).
|
||
|
||
-- ins_srtcontrole_key = 11: dit is de inspectie "Toiletschoonmaak".
|
||
-- ins_controlemode_key = 10 (Goed) of 11 (Fout)
|
||
|
||
-- halveuur_1_of_2, geeft aan of de check in het 1e of 2e halve uur van een heel uur is.
|
||
|
||
-- datum_laatste_check_in_h_uur geeft per halve uur weer wanneer in dat halve uur de laatste check van dat object was.
|
||
-- als deze afwijkt van ins_deelsrtcontrole_datum, dan betekent dat die meting/check niet mee moet worden geteld op de hele halve uren,
|
||
-- omdat die dus eerder was en wordt overruled door die latere meting/check
|
||
CREATE OR REPLACE VIEW arai_v_kpi_toilet_scan_ruimte
|
||
( ins_deel_key,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_controlemode_key,
|
||
goed,
|
||
fout,
|
||
ins_controlemode_oms,
|
||
ins_controlemode_opmerking,
|
||
ins_deelsrtcontrole_opmerking,
|
||
ins_deelsrtcontrole_datum,
|
||
tijd,
|
||
halveuur_1_of_2,
|
||
datum_laatste_check_in_h_uur,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT d.ins_deel_key, r.alg_ruimte_key, COALESCE(ak.alg_onrgoedkenmerk_waarde,'1'),
|
||
g.alg_gebouw_key, g.alg_gebouw_code, g.alg_gebouw_naam, v.alg_verdieping_key, v.alg_verdieping_volgnr, r.alg_ruimte_nr, r.alg_ruimte_omschrijving,
|
||
c.ins_controlemode_key,
|
||
CASE
|
||
WHEN c.ins_controlemode_key = 10 THEN 1
|
||
WHEN c.ins_controlemode_key = 11 THEN 0
|
||
ELSE 0
|
||
END goed,
|
||
CASE
|
||
WHEN c.ins_controlemode_key = 10 THEN 0
|
||
WHEN c.ins_controlemode_key = 11 THEN 1
|
||
ELSE 0
|
||
END fout,
|
||
cm.ins_controlemode_oms, cm.ins_controlemode_opmerking, c.ins_deelsrtcontrole_opmerking, c.ins_deelsrtcontrole_datum,
|
||
TO_CHAR(c.ins_deelsrtcontrole_datum, 'HH24:MI'),
|
||
DECODE(SUBSTR(TO_CHAR(ins_deelsrtcontrole_datum,'MI'),1,1), 0, 1, 1, 1, 2, 1, 3, 2, 4, 2, 5, 2) halveuur_1_of_2,
|
||
(SELECT MAX(c1.ins_deelsrtcontrole_datum)
|
||
FROM ins_deelsrtcontrole c1
|
||
WHERE c1.ins_deel_key = c.ins_deel_key
|
||
AND DECODE(SUBSTR(TO_CHAR(c.ins_deelsrtcontrole_datum,'MI'),1,1), 0, 1, 1, 1, 2, 1, 3, 2, 4, 2, 5, 2) =
|
||
DECODE(SUBSTR(TO_CHAR(c1.ins_deelsrtcontrole_datum,'MI'),1,1), 0, 1, 1, 1, 2, 1, 3, 2, 4, 2, 5, 2)
|
||
AND TRUNC(c.ins_deelsrtcontrole_datum,'HH24')= TRUNC(c1.ins_deelsrtcontrole_datum, 'HH24')
|
||
AND TRUNC(c.ins_deelsrtcontrole_datum)= TRUNC(c1.ins_deelsrtcontrole_datum)
|
||
AND c1.ins_srtcontrole_key = 11) datum_laatste_check_in_h_uur,
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_GROEN_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '90'),
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_ORANJE_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '70'),
|
||
NULL
|
||
FROM ins_deel d, ins_srtdeel sd, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_onrgoedkenmerk ak, ins_deelsrtcontrole c, ins_controlemode cm
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtdeel_key = 21
|
||
AND r.alg_ruimte_key = d.ins_alg_ruimte_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND r.alg_ruimte_key = ak.alg_onrgoed_key (+)
|
||
AND ak.alg_onrgoed_niveau (+) = 'R'
|
||
AND ak.alg_kenmerk_key (+) = 1020
|
||
AND d.ins_deel_key = c.ins_deel_key
|
||
AND c.ins_srtcontrole_key = 11
|
||
AND c.ins_controlemode_key = cm.ins_controlemode_key;
|
||
|
||
|
||
|
||
----------------------------------- KPI TOILET GRAFIEKEN -----------------------------------
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_toil_all
|
||
(
|
||
datum,
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_SCHOON,
|
||
fout,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT TRUNC(ins_deelsrtcontrole_datum),
|
||
alg_gebouw_key,
|
||
DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' || DECODE(halveuur_1_of_2, 1, '30', 2, '00'),
|
||
ROUND(SUM(goed)/COUNT(*)*100,1),
|
||
ROUND(SUM(fout)/COUNT(*)*100,1),
|
||
MIN(url)
|
||
FROM arai_v_kpi_toilet_scan_ruimte c
|
||
-- WHERE TRUNC(c.ins_deelsrtcontrole_datum) = TRUNC(SYSDATE)
|
||
-- AND c.ins_deelsrtcontrole_datum >= SYSDATE - 8/24
|
||
WHERE c.ins_deelsrtcontrole_datum = datum_laatste_check_in_h_uur
|
||
GROUP BY TRUNC(ins_deelsrtcontrole_datum), alg_gebouw_key,
|
||
DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' ||DECODE(halveuur_1_of_2, 1, '30', 2, '00');
|
||
|
||
|
||
|
||
|
||
-- Grafiek 1 (lijngrafiek): KPI precentage schone toiletten per gebouw, van vandaag van max. 8 uur terug in de tijd uitgezet.
|
||
-- Daarbij worden de onregelmatige controle-tijden (naar boven) afgerond op halve uren (dus hh:00 of hh:30),
|
||
-- Indien een toilet-object meer dan 1 keer in een half 'heel' half uur is gecontroleerd, telt de laatste daarvan.
|
||
-- Dus X-as bestaat uit maximaal 8 uur x 2 (ieder half uur) = 16 waarden, b.v. 10:00, 10:30, 11:00, ... t/m 17:30.
|
||
-- De Y-as bestaat uit een percentage van schone toiletten tov. alle gescaned 'laaste' binnen dat halve uur.
|
||
-- En dat gegroepeerd op gebouw nivo.
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_toil_gebouw
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_SCHOON,
|
||
fout,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_SCHOON,
|
||
fout,
|
||
FCLT_URL
|
||
FROM arai_v_graph_kpi_toil_all
|
||
WHERE datum = TRUNC(SYSDATE);
|
||
|
||
|
||
-- Grafiek 2 (barchart met rood/oranje/groen): KPI precentage schone toiletten per gebouw, van vandaag van max. 8 uur terug in de tijd uitgezet.
|
||
-- FCLT_YAS_SCHOON is de y-as voor rood
|
||
-- FCLT_YAS2_SCHOON is de y-as voor groen
|
||
-- FCLT_YAS3_SCHOON is de y-as voor oranje
|
||
-- Barchart met 3 kleuren: groen (temp = okee), oranje (temp is oranje) en rood (temp is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_toil2_gebouw
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_SCHOON,
|
||
FCLT_YAS2_SCHOON,
|
||
FCLT_YAS3_SCHOON,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT alg_gebouw_key,
|
||
DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' || DECODE(halveuur_1_of_2, 1, '30', 2, '00'),
|
||
CASE
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) IS NULL THEN 0
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) < MIN(waarde_rood) THEN ROUND(SUM(goed)/COUNT(*)*100,1)
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) IS NULL THEN 0
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) >= MIN(waarde_oranje) THEN ROUND(SUM(goed)/COUNT(*)*100,1)
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) IS NULL THEN 0
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) >= MIN(waarde_rood) AND
|
||
ROUND(SUM(goed)/COUNT(*)*100,1) < MIN(waarde_oranje) THEN ROUND(SUM(goed)/COUNT(*)*100,1)
|
||
ELSE 0
|
||
END,
|
||
MIN(url)
|
||
FROM arai_v_kpi_toilet_scan_ruimte c
|
||
WHERE TRUNC(c.ins_deelsrtcontrole_datum) = TRUNC(SYSDATE)
|
||
-- AND c.ins_deelsrtcontrole_datum >= SYSDATE - 8/24
|
||
AND c.ins_deelsrtcontrole_datum = datum_laatste_check_in_h_uur
|
||
GROUP BY alg_gebouw_key,
|
||
DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' ||DECODE(halveuur_1_of_2, 1, '30', 2, '00');
|
||
|
||
|
||
|
||
|
||
-- View arai_v_kpi_toilet_scan_h_uur zijn de toilet-inspectiepunten die het !!VORIGE!! 1/2 uur zijn gescan-d (dus als nu 10:15 is, dan de checks van 9:30-10:00u),
|
||
-- Indien meerdere scans van dezelfde toilet, dan telt daarvan de laatste!
|
||
-- !!Let op!!: er wordt gegroepeerd op halve uren, dus groep 1 = scans van 8:00-8:30, groep 2 = 8:30-9:00, 3= 9:00-9:30 etc
|
||
-- Dit is essentieel zodat de grafiek die op hele halve uren gaat (8:00-8:30-9:00-9:30-10:00-10:30 etc) te laten kloppen met de KPI-kleur.
|
||
CREATE OR REPLACE VIEW arai_v_kpi_toilet_scan_h_uur
|
||
AS
|
||
SELECT * FROM arai_v_kpi_toilet_scan_ruimte c
|
||
WHERE TRUNC(c.ins_deelsrtcontrole_datum) = TRUNC(SYSDATE)
|
||
AND c.ins_deelsrtcontrole_datum >= SYSDATE - 1/24
|
||
AND halveuur_1_of_2 <> DECODE(SUBSTR(TO_CHAR(SYSDATE,'MI'),1,1), 0, 1, 1, 1, 2, 1, 3, 2, 4, 2, 5, 2)
|
||
AND c.ins_deelsrtcontrole_datum = datum_laatste_check_in_h_uur;
|
||
|
||
|
||
|
||
|
||
-- Union van arai_v_kpi_toilet_scan_h_uur (scans van afgelopen 'hele' halve uur) met alle toiletruimten die afgelopen uur niet zijn gescan-d
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_toilet_ruimte_uur
|
||
( ins_deel_key,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_controlemode_key,
|
||
goed,
|
||
fout,
|
||
ins_controlemode_oms,
|
||
ins_controlemode_opmerking,
|
||
ins_deelsrtcontrole_opmerking,
|
||
ins_deelsrtcontrole_datum,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
url
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_controlemode_key,
|
||
goed,
|
||
fout,
|
||
ins_controlemode_oms,
|
||
ins_controlemode_opmerking,
|
||
ins_deelsrtcontrole_opmerking,
|
||
ins_deelsrtcontrole_datum,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
url
|
||
FROM arai_v_kpi_toilet_scan_h_uur
|
||
UNION ALL
|
||
SELECT d.ins_deel_key, r.alg_ruimte_key, COALESCE(ak.alg_onrgoedkenmerk_waarde,'1'),
|
||
g.alg_gebouw_key, g.alg_gebouw_code, g.alg_gebouw_naam, v.alg_verdieping_key, v.alg_verdieping_volgnr, r.alg_ruimte_nr, r.alg_ruimte_omschrijving,
|
||
NULL, 0, 0, NULL, NULL, NULL, NULL,
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_GROEN_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '90'),
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_ORANJE_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '70'), NULL
|
||
FROM ins_deel d, ins_srtdeel sd, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_onrgoedkenmerk ak
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtdeel_key = 21
|
||
AND r.alg_ruimte_key = d.ins_alg_ruimte_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND r.alg_ruimte_key = ak.alg_onrgoed_key (+)
|
||
AND ak.alg_onrgoed_niveau (+) = 'R'
|
||
AND ak.alg_kenmerk_key (+) = 1020
|
||
AND NOT EXISTS (select 'x' FROM arai_v_kpi_toilet_scan_h_uur tmp WHERE tmp.ins_deel_key = d.ins_deel_key);
|
||
|
||
|
||
|
||
-- View arai_v_kpi_toilet_scan_gebouw zijn de toiletscans op gebouwnivo waarvan minimaal 1 toilet-inspectiepunten afgelopen halve uur is gescan-d.
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_toilet_scan_gebouw
|
||
( alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
goed,
|
||
fout,
|
||
KPI_STATUS
|
||
)
|
||
AS SELECT alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
ROUND(SUM(goed)/COUNT(*)*100,1),
|
||
ROUND(SUM(fout)/COUNT(*)*100,1),
|
||
CASE
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) < min(waarde_rood) THEN 2
|
||
WHEN ROUND(SUM(goed)/COUNT(*)*100,1) < min(waarde_oranje) THEN 1
|
||
ELSE 0
|
||
END KPI_STATUS
|
||
FROM arai_v_kpi_toilet_ruimte_uur
|
||
WHERE ins_controlemode_key IS NOT NULL
|
||
GROUP BY alg_gebouw_key, alg_gebouw_code, alg_gebouw_naam;
|
||
|
||
|
||
-- UNION van arai_v_kpi_toilet_scan_gebouw (toiletscans op gebouwnivo van afgelopen uur) met de gebouwen waar afgelopen uur niet is gescan-d.
|
||
CREATE OR REPLACE VIEW arai_v_kpi_toilet_gebouw
|
||
( alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
goed,
|
||
fout,
|
||
KPI_STATUS
|
||
)
|
||
AS
|
||
SELECT
|
||
alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
goed,
|
||
fout,
|
||
KPI_STATUS
|
||
FROM arai_v_kpi_toilet_scan_gebouw
|
||
UNION ALL
|
||
SELECT alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
NULL,
|
||
NULL,
|
||
-1
|
||
FROM arai_v_kpi_toilet_ruimte_uur tr
|
||
WHERE NOT EXISTS (select 'x' FROM arai_v_kpi_toilet_scan_gebouw tmp WHERE tmp.alg_gebouw_key = tr.alg_gebouw_key)
|
||
GROUP BY alg_gebouw_key, alg_gebouw_code, alg_gebouw_naam;
|
||
|
||
|
||
|
||
|
||
-- fclt_key is eigenlijk alg_gebouw_key, dit is tbv filer-mogelijkheid op gebouwnivo in de usrrap.
|
||
-- Dit zijn de inspectieresultaten van ooit van alle inspectiepunten
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_toilet_all
|
||
( fclt_x_datum,
|
||
fclt_x_gebouw,
|
||
ins_deel_key,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
fclt_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_controlemode_key,
|
||
goed,
|
||
fout,
|
||
ins_controlemode_oms,
|
||
ins_controlemode_opmerking,
|
||
ins_deelsrtcontrole_opmerking,
|
||
ins_deelsrtcontrole_datum,
|
||
trunc_ins_controle_datum,
|
||
tijd,
|
||
halveuur_1_of_2,
|
||
datum_laatste_check_in_h_uur,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
url,
|
||
afgeronde_tijd,
|
||
KPI_toilet_pergebouw
|
||
)
|
||
AS
|
||
SELECT to_char(ins_deelsrtcontrole_datum,'yyyy-mm-dd'),
|
||
alg_gebouw_code || '-' || alg_gebouw_naam,
|
||
ins_deel_key,
|
||
alg_ruimte_key,
|
||
join_kpi,
|
||
alg_gebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
ins_controlemode_key,
|
||
c.goed,
|
||
c.fout,
|
||
ins_controlemode_oms,
|
||
ins_controlemode_opmerking,
|
||
ins_deelsrtcontrole_opmerking,
|
||
ins_deelsrtcontrole_datum,
|
||
TRUNC(ins_deelsrtcontrole_datum),
|
||
tijd,
|
||
halveuur_1_of_2,
|
||
datum_laatste_check_in_h_uur,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
url,
|
||
DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' || DECODE(halveuur_1_of_2, 1, '30', 2, '00') afgeronde_tijd,
|
||
FCLT_YAS_SCHOON
|
||
FROM arai_v_kpi_toilet_scan_ruimte c, arai_v_graph_kpi_toil_all g
|
||
WHERE c.ins_deelsrtcontrole_datum = datum_laatste_check_in_h_uur
|
||
AND c.alg_gebouw_key = g.fclt_key(+)
|
||
AND DECODE(halveuur_1_of_2, 1, TO_CHAR(ins_deelsrtcontrole_datum,'HH24'), 2, TO_CHAR(ins_deelsrtcontrole_datum+1/24,'HH24')) || ':' || DECODE(halveuur_1_of_2, 1, '30', 2, '00') = g.FCLT_XAS_TIJD (+)
|
||
AND ins_deelsrtcontrole_datum >= SYSDATE - 28;
|
||
|
||
|
||
-- fclt_key is eigenlijk alg_gebouw_key, dit is tbv filer-mogelijkheid op gebouwnivo in de usrrap.
|
||
-- Dit zijn de inspectieresultaten van ALLEEN vandaag van alle inspectiepunten
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_toilet
|
||
AS
|
||
SELECT *
|
||
FROM arai_v_rap_kpi_toilet_all
|
||
WHERE TRUNC(ins_deelsrtcontrole_datum) = TRUNC(SYSDATE);
|
||
|
||
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KPI ICT MITEL KPI ICT MITEL KPI ICT MITEL KPI ICT MITEL ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
-- sd.ins_srtgroep_key (+) = 41 is de key van de groep 'Telefonie' onder de discipline 'Telecom'
|
||
-- kd.ins_kenmerk_key (+) = 21 is de key van het kenmerk Wachtrij.
|
||
-- VERVALLEN: Als aantal wachtenden max. 5 is, dan is dat okee (0 t/m 5 wachtenden, daarna oranje...
|
||
-- VERVALLEN: waarde_oranje (grenswaarde voor oranje zone = 6 t/m 10 wachtenden, daarna rood,
|
||
-- VERVALLEN: waarde_rood (grenswaarde voor rode zone = 11 en meer wachtenden
|
||
-- Als gemiddelde wachttijd max. 60 seconden s, dan is dat okee (0 t/m 60 sec. daarna oranje...
|
||
-- waarde_oranje (grenswaarde voor oranje zone is > 60 t/m 180 sec. daarna rood,
|
||
-- waarde_rood (grenswaarde voor rode zone is > 180 sec
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_ict_mitel
|
||
( ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
alg_ruimte_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
kpi_color_overrule,
|
||
ins_kenmerkdeel_waarde,
|
||
waarde_oranje,
|
||
waarde_rood,
|
||
ins_kenmerkdeel_aanmaak,
|
||
trunc_datum,
|
||
ins_kenmerkdeel_verwijder,
|
||
url
|
||
)
|
||
AS
|
||
SELECT d.ins_deel_key, d.ins_deel_omschrijving, sd.ins_srtdeel_omschrijving, r.alg_ruimte_key,
|
||
g.alg_gebouw_code, g.alg_gebouw_naam, v.alg_verdieping_key, v.alg_verdieping_volgnr, r.alg_ruimte_nr,
|
||
DECODE(ud_color.fac_usrdata_code, 'KPI_GROEN', 0, 'KPI_ORANJE', 1, 'KPI_ROOD', 2, NULL),
|
||
kd.ins_kenmerkdeel_waarde,
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_ICT_MITEL_GROEN_MAX'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
) + 1, 60),
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_ICT_MITEL_ORANJE_MAX'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
) + 1, 180),
|
||
kd.ins_kenmerkdeel_aanmaak, TRUNC(kd.ins_kenmerkdeel_aanmaak), kd.ins_kenmerkdeel_verwijder, NULL
|
||
FROM ins_deel d, ins_srtdeel sd, alg_ruimte r, alg_verdieping v, alg_gebouw g, ins_kenmerkdeel kd,
|
||
ins_kenmerkdeel kd_color, fac_usrdata ud_color
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = 41
|
||
AND r.alg_ruimte_key = d.ins_alg_ruimte_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND kd.ins_deel_key = d.ins_deel_key
|
||
AND kd.ins_kenmerk_key = 21
|
||
AND kd_color.ins_deel_key (+) = d.ins_deel_key
|
||
AND kd_color.ins_kenmerk_key (+) = 41
|
||
AND ud_color.fac_usrdata_key(+) = to_number(kd_color.ins_kenmerkdeel_waarde);
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_ict_mitel
|
||
AS
|
||
SELECT *
|
||
FROM arai_v_kpi_ict_mitel
|
||
WHERE ins_kenmerkdeel_verwijder IS NULL
|
||
AND trunc_datum = TRUNC(SYSDATE);
|
||
|
||
|
||
|
||
----------------------------------- KPI ICT MITEL - GRAFIEKEN -----------------------------------
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_ict_all
|
||
(
|
||
datum,
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_WACHTTIJD,
|
||
KPI_ICT_MITEL,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT trunc_datum,
|
||
ins_deel_key,
|
||
TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI'),
|
||
MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))),
|
||
CASE
|
||
WHEN MAX(ins_kenmerkdeel_waarde) IS NULL THEN -1
|
||
WHEN MAX(ins_kenmerkdeel_waarde) >= MIN(waarde_rood) THEN 2
|
||
WHEN MAX(ins_kenmerkdeel_waarde) >= MIN(waarde_oranje) THEN 1
|
||
ELSE 0
|
||
END kpi_ict_mitel,
|
||
MIN(url)
|
||
FROM arai_v_kpi_ict_mitel
|
||
GROUP BY trunc_datum, ins_deel_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI');
|
||
|
||
-- Grafiek 1: VERVALLEN: KPI aantal wachtenden van vandaag van max. 2 uur terug in de tijd uitgezet (x-as grafiek wordt bij veel meer niet leesbaar)
|
||
-- KPI van gemiddelde wachttijd van vandaag van max. 2 uur terug in de tijd uitgezet (x-as grafiek wordt bij veel meer niet leesbaar)
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_ict_vandaag
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_WACHTTIJD,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_WACHTTIJD,
|
||
FCLT_URL
|
||
FROM arai_v_graph_kpi_ict_all
|
||
WHERE to_date(to_char(datum, 'dd-mm-yyyy') || ' ' ||FCLT_XAS_TIJD,'dd-mm-yyyy hh24:mi') >= SYSDATE - 2/24
|
||
AND datum = TRUNC(SYSDATE);
|
||
|
||
|
||
-- Grafiek 2: KPI van gemiddelde wachttijd van vandaag van max. 2 uur terug in de tijd uitgezet (x-as grafiek wordt bij veel meer niet leesbaar)
|
||
-- FCLT_YAS_TEMPERATUUR is de y-as voor rood
|
||
-- FCLT_YAS2_TEMPERATUUR is de y-as voor groen
|
||
-- FCLT_YAS3_TEMPERATUUR is de y-as voor oranje
|
||
-- Barchart met 3 kleuren: groen (temp = okee), oranje (temp is oranje) en rood (temp is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_ict2_vandaag
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_WACHTTIJD,
|
||
FCLT_YAS2_WACHTTIJD,
|
||
FCLT_YAS3_WACHTTIJD,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI'),
|
||
CASE
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) IS NULL THEN 0
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) >= MIN(waarde_rood) THEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')))
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) IS NULL THEN 0
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) < MIN(waarde_oranje) THEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')))
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) IS NULL THEN 0
|
||
WHEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) < MIN(waarde_rood) AND
|
||
MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0'))) >= MIN(waarde_oranje) THEN MAX(to_number(COALESCE(ins_kenmerkdeel_waarde,'0')))
|
||
ELSE 0
|
||
END,
|
||
MIN(url)
|
||
FROM arai_v_kpi_ict_mitel
|
||
WHERE ins_kenmerkdeel_aanmaak >= SYSDATE - 2/24
|
||
AND trunc_datum = TRUNC(SYSDATE)
|
||
GROUP BY ins_deel_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24:MI');
|
||
|
||
|
||
-- Dagrapportage van ICT Mitel Telefooncentrale
|
||
-- fclt_key is vanuit cust.xsl, voor de actuele rapportage van vandaag (=1), alle andere dagen zijn 0.
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_ict_all
|
||
(
|
||
fclt_f_jaar,
|
||
fclt_f_maand,
|
||
fclt_f_datum,
|
||
fclt_f_dagdeel,
|
||
fclt_f_uur,
|
||
fclt_key,
|
||
tijd,
|
||
wachttijd,
|
||
KPI_ICT_MITEL,
|
||
FCLT_URL
|
||
)
|
||
AS SELECT to_char(datum,'yyyy'), to_char(datum,'mm'), to_char(datum,'yyyy-mm-dd'),
|
||
CASE
|
||
WHEN SUBSTR(FCLT_XAS_TIJD,1,2) <= '06' THEN 'nacht'
|
||
WHEN SUBSTR(FCLT_XAS_TIJD,1,2) <= '11' THEN 'ochtend'
|
||
WHEN SUBSTR(FCLT_XAS_TIJD,1,2) <= '17' THEN 'middag'
|
||
ELSE 'avond'
|
||
END dagdeel,
|
||
SUBSTR(FCLT_XAS_TIJD,1,2),
|
||
CASE
|
||
WHEN datum = TRUNC(SYSDATE) THEN 1
|
||
ELSE 0
|
||
END vandaag,
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_WACHTTIJD,
|
||
KPI_ICT_MITEL,
|
||
FCLT_URL
|
||
FROM arai_v_graph_kpi_ict_all;
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KLACHTEN EXPOSANTEN KLACHTEN EXPOSANTEN KLACHTEN EXPOSANTEN ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- km.mld_kenmerk_key (+) = 181 is het EBMS-ordernummer suggest-kenmerk.
|
||
-- km1.mld_kenmerk_key (+) = 46 is het mailadres van de contactpersoon bij exposant.
|
||
-- km2.mld_kenmerk_key (+) = 45 is het telefoonnummer van de contactpersoon bij exposant.
|
||
-- km3.mld_kenmerk_key (+) = 44 is de naam van de contactpersoon bij exposant.
|
||
-- sd.ins_srtdiscipline_key = 1 is meldingtype 'Klachten'.
|
||
|
||
-- Let op: kolom fclt_key (volgend op fclt_lopend) is dezelfde, alleen deze kolomnaam moet zo heten ivm usrrap vanuit cust.xsl.
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_klachten
|
||
(
|
||
mld_melding_key,
|
||
fclt_f_meldingnr,
|
||
fclt_f_type,
|
||
fclt_3d_discipline_key,
|
||
fclt_f_vakgroep,
|
||
mld_stdmelding_key,
|
||
fclt_f_melding,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
mld_melding_note_omschrijving,
|
||
fclt_f_leverancier,
|
||
fclt_f_jaar,
|
||
fclt_f_kwartaal,
|
||
fclt_f_maand,
|
||
invoer_datum,
|
||
fclt_f_ingevoerd,
|
||
invoer_datum_time,
|
||
operationele_einddatum,
|
||
sla_einddatum,
|
||
mld_operationeel_te_laat,
|
||
mld_sla_te_laat,
|
||
mld_operationeel_dagenuurmin,
|
||
fclt_f_lopend,
|
||
fclt_key,
|
||
fclt_f_status,
|
||
status_code,
|
||
afmeld_datum,
|
||
fclt_f_afgemeld,
|
||
afmeld_datum_time,
|
||
afgemeld_door,
|
||
ingevoerd_door,
|
||
invoerder_email,
|
||
company_contactpersoon,
|
||
company_mailadres,
|
||
company_telefoon,
|
||
eventid,
|
||
fclt_f_evenement,
|
||
bedrijfsnaamid,
|
||
fclt_f_company,
|
||
billtoid,
|
||
billto,
|
||
fclt_f_lokatie,
|
||
ordernummer,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS SELECT
|
||
m.mld_melding_key,
|
||
to_char(m.mld_melding_key),
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving,
|
||
std.mld_stdmelding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
(SELECT mld_melding_note_omschrijving
|
||
FROM mld_melding_note
|
||
WHERE mld_melding_note_key IN
|
||
(SELECT MAX (mld_melding_note_key)
|
||
FROM mld_melding_note mn
|
||
WHERE mn.mld_melding_key = m.mld_melding_key))
|
||
mld_melding_note_omschrijving,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_key = (SELECT mld_uitvoerende_keys
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_opdr_key = (SELECT min(mld_opdr_key)
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key)
|
||
)
|
||
) leverancier,
|
||
to_char(m.mld_melding_datum,'YYYY'),
|
||
'Q'|| to_char(m.mld_melding_datum,'Q'),
|
||
to_char(m.mld_melding_datum,'MM'),
|
||
m.mld_melding_datum,
|
||
to_char(m.mld_melding_datum,'YYYY-MM-DD'),
|
||
to_char(m.mld_melding_datum,'DD-MM-YYYY HH24:MI'),
|
||
m.mld_melding_einddatum,
|
||
m.mld_melding_einddatum_std,
|
||
CASE
|
||
WHEN m.mld_melding_einddatum < COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) THEN 1
|
||
ELSE 0
|
||
END,
|
||
--CASE
|
||
-- WHEN mld.getactualuitvoer(m.mld_melding_key) + mld_melding_respijt - m.mld_melding_uitvoertijd > 0 THEN 1
|
||
-- ELSE 0
|
||
--END,
|
||
CASE
|
||
WHEN mld.geteinddatum (m.mld_melding_einddatum_std,
|
||
m.mld_stdmelding_key,
|
||
m.mld_melding_spoed,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
NULL,
|
||
m.mld_melding_t_respijt) <
|
||
COALESCE (fac.gettrackingdate('MLDAFM', m.mld_melding_key),fac.gettrackingdate('MLDREJ', m.mld_melding_key), SYSDATE)
|
||
THEN 1 -- Te laat volgens SLA als SLA-einddatum + respijt ligt voor gereeddatum/SYSDATE!
|
||
ELSE 0
|
||
END,
|
||
TO_CHAR (FLOOR (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE)- m.mld_melding_datum)) || 'd '
|
||
|| TO_CHAR (
|
||
MOD (FLOOR ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24), 24)
|
||
)
|
||
|| 'u '
|
||
|| TO_CHAR(MOD (
|
||
ROUND ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24 * 60,
|
||
0),
|
||
60
|
||
))
|
||
|| 'm' dagenuurmin,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 'Open'
|
||
ELSE 'Afgesloten'
|
||
END,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 1
|
||
ELSE 0
|
||
END,
|
||
ms.mld_statuses_omschrijving,
|
||
ms.mld_statuses_key,
|
||
fac.gettrackingdate('MLDAFM',m.mld_melding_key),
|
||
COALESCE(to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'YYYY-MM-DD'),'Niet afgemeld'),
|
||
to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'DD-MM-YYYY HH24:MI'),
|
||
p2.prs_perslid_naam|| NVL2( p2.prs_perslid_voorletters, ', ' || p2.prs_perslid_voorletters, '')|| NVL2( p2.prs_perslid_tussenvoegsel, ' ' || p2.prs_perslid_tussenvoegsel, '')|| NVL2( p2.prs_perslid_voornaam, ' (' || p2.prs_perslid_voornaam || ')', '') afgemeld_door,
|
||
p.prs_perslid_naam|| NVL2( p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')|| NVL2( p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')|| NVL2( p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '') ingevoerd_door,
|
||
p.prs_perslid_email,
|
||
km3.mld_kenmerkmelding_waarde company_contactpersoon,
|
||
km1.mld_kenmerkmelding_waarde company_mailadres, REPLACE(REPLACE(km2.mld_kenmerkmelding_waarde ,' ',''),'-','') company_telefoon,
|
||
ebms.eventid, ebms.evenement, ebms.bedrijfsnaamid, ebms.bedrijfsnaam, ebms.billtoid, ebms.billto, ebms.lokatie, ebms.ordernummer,
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_STANDSCHOON_GROEN_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '90'),
|
||
COALESCE( ( SELECT ud.fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 41
|
||
AND ud.fac_usrdata_code = 'KPI_STANDSCHOON_ORANJE_MIN'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), '80')
|
||
FROM mld_melding m, mld_statuses ms, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd,
|
||
mld_kenmerkmelding km, arai_v_ebms ebms,
|
||
mld_kenmerkmelding km1, mld_kenmerkmelding km2, mld_kenmerkmelding km3,
|
||
prs_perslid p, prs_perslid p2
|
||
WHERE m.prs_perslid_key = p.prs_perslid_key
|
||
AND fac.gettrackinguserkey('MLDAFM',m.mld_melding_key) = p2.prs_perslid_key(+)
|
||
AND ms.mld_statuses_key = mld_melding_status
|
||
AND m.mld_melding_key = km.mld_melding_key (+)
|
||
AND km.mld_kenmerk_key (+) IN (2601, 2639, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615,
|
||
2616, 2617, 2618, 2619, 2620, 2622, 2624, 2625, 2626, 2628, 2629, 2630, 2631, 2632, 2633,
|
||
2634, 2635, 2636, 2637, 2602)
|
||
AND km.mld_kenmerkmelding_waarde = ebms.arai_ebms_key(+)
|
||
AND m.mld_melding_key = km1.mld_melding_key (+)
|
||
AND km1.mld_kenmerk_key (+) = 46
|
||
AND m.mld_melding_key = km2.mld_melding_key (+)
|
||
AND km2.mld_kenmerk_key (+) = 45
|
||
AND m.mld_melding_key = km3.mld_melding_key (+)
|
||
AND km3.mld_kenmerk_key (+) = 44
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_key = 1;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_klachten_2
|
||
AS SELECT
|
||
ak.mld_melding_key,
|
||
ak.fclt_f_meldingnr,
|
||
ak.fclt_f_type,
|
||
ak.fclt_3d_discipline_key,
|
||
ak.fclt_f_vakgroep,
|
||
ak.mld_stdmelding_key,
|
||
ak.fclt_f_melding,
|
||
ak.mld_melding_omschrijving,
|
||
ak.mld_melding_opmerking,
|
||
ak.mld_melding_note_omschrijving,
|
||
ak.fclt_f_leverancier,
|
||
ak.fclt_f_jaar,
|
||
ak.fclt_f_kwartaal,
|
||
ak.fclt_f_maand,
|
||
ak.invoer_datum,
|
||
ak.fclt_f_ingevoerd,
|
||
ak.invoer_datum_time,
|
||
ak.operationele_einddatum,
|
||
ak.sla_einddatum,
|
||
ak.mld_operationeel_te_laat,
|
||
ak.mld_sla_te_laat,
|
||
ak.mld_operationeel_dagenuurmin,
|
||
ak.fclt_f_lopend,
|
||
ak.fclt_key,
|
||
ak.fclt_f_status,
|
||
ak.status_code,
|
||
ak.afmeld_datum,
|
||
ak.fclt_f_afgemeld,
|
||
ak.afmeld_datum_time,
|
||
ak.afgemeld_door,
|
||
ak.ingevoerd_door,
|
||
ak.invoerder_email,
|
||
ak.company_contactpersoon,
|
||
ak.company_mailadres,
|
||
ak.company_telefoon,
|
||
ak.eventid,
|
||
COALESCE (ak.fclt_f_evenement,
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = ak.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283))) fclt_f_evenement, -- Geen kenmerk EBMS? Dan pakken we het "normale" evenement kenmerk.
|
||
ak.bedrijfsnaamid,
|
||
ak.fclt_f_company,
|
||
ak.billtoid,
|
||
ak.billto,
|
||
ak.fclt_f_lokatie,
|
||
ak.ordernummer,
|
||
ak.waarde_oranje,
|
||
ak.waarde_rood
|
||
FROM arai_v_rap_mld_klachten ak;
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KLACHTEN ORGANISATOR KLACHTEN ORGANISATOR KLACHTEN ORGANISATOR ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- sd.ins_srtdiscipline_key = 21 is de meldingtype 'Klachten organisatoren'
|
||
-- km.mld_kenmerk_key (+) = 503 is key van kenmerk voor ebms_event
|
||
-- km3.mld_kenmerk_key (+) = 501 is key van kenmerk voor contactpersoon
|
||
-- km1.mld_kenmerk_key (+) = 502 is key van kenmerk voor mailadres
|
||
-- km2.mld_kenmerk_key (+) = 504 is key van kenmerk voor telefoon
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_org_klachten
|
||
(
|
||
mld_melding_key,
|
||
fclt_f_meldingnr,
|
||
fclt_f_type,
|
||
fclt_3d_discipline_key,
|
||
fclt_f_vakgroep,
|
||
mld_stdmelding_key,
|
||
fclt_f_melding,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
mld_melding_note_omschrijving,
|
||
fclt_f_leverancier,
|
||
fclt_f_jaar,
|
||
fclt_f_kwartaal,
|
||
fclt_f_maand,
|
||
invoer_datum,
|
||
fclt_f_ingevoerd,
|
||
invoer_datum_time,
|
||
operationele_einddatum,
|
||
sla_einddatum,
|
||
mld_operationeel_te_laat,
|
||
mld_sla_te_laat,
|
||
mld_operationeel_dagenuurmin,
|
||
fclt_f_lopend,
|
||
fclt_key,
|
||
fclt_f_status,
|
||
status_code,
|
||
afmeld_datum,
|
||
fclt_f_afgemeld,
|
||
afmeld_datum_time,
|
||
afgemeld_door,
|
||
ingevoerd_door,
|
||
invoerder_email,
|
||
organisator_contactpersoon,
|
||
organisator_mailadres,
|
||
organisator_telefoon,
|
||
eventid,
|
||
fclt_f_evenement,
|
||
bedrijfsnaamid,
|
||
fclt_f_company,
|
||
billtoid,
|
||
billto,
|
||
fclt_f_lokatie,
|
||
ordernummer,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS SELECT
|
||
m.mld_melding_key,
|
||
to_char(m.mld_melding_key),
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving,
|
||
std.mld_stdmelding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
(SELECT mld_melding_note_omschrijving
|
||
FROM mld_melding_note
|
||
WHERE mld_melding_note_key IN
|
||
(SELECT MAX (mld_melding_note_key)
|
||
FROM mld_melding_note mn
|
||
WHERE mn.mld_melding_key = m.mld_melding_key))
|
||
mld_melding_note_omschrijving,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_key = (SELECT mld_uitvoerende_keys
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_opdr_key = (SELECT min(mld_opdr_key)
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key)
|
||
)
|
||
) leverancier,
|
||
to_char(m.mld_melding_datum,'YYYY'),
|
||
'Q'|| to_char(m.mld_melding_datum,'Q'),
|
||
to_char(m.mld_melding_datum,'MM'),
|
||
m.mld_melding_datum,
|
||
to_char(m.mld_melding_datum,'YYYY-MM-DD'),
|
||
to_char(m.mld_melding_datum,'DD-MM-YYYY HH24:MI'),
|
||
m.mld_melding_einddatum,
|
||
m.mld_melding_einddatum_std,
|
||
CASE
|
||
WHEN m.mld_melding_einddatum < COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) THEN 1
|
||
ELSE 0
|
||
END,
|
||
--CASE
|
||
-- WHEN mld.getactualuitvoer(m.mld_melding_key) + mld_melding_respijt - m.mld_melding_uitvoertijd > 0 THEN 1
|
||
-- ELSE 0
|
||
--END,
|
||
CASE
|
||
WHEN mld.geteinddatum (m.mld_melding_einddatum_std,
|
||
m.mld_stdmelding_key,
|
||
m.mld_melding_spoed,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
NULL,
|
||
m.mld_melding_t_respijt) <
|
||
COALESCE (fac.gettrackingdate('MLDAFM', m.mld_melding_key),fac.gettrackingdate('MLDREJ', m.mld_melding_key), SYSDATE)
|
||
THEN 1 -- Te laat volgens SLA als SLA-einddatum + respijt ligt voor gereeddatum/SYSDATE!
|
||
ELSE 0
|
||
END,
|
||
TO_CHAR (FLOOR (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE)- m.mld_melding_datum)) || 'd '
|
||
|| TO_CHAR (
|
||
MOD (FLOOR ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24), 24)
|
||
)
|
||
|| 'u '
|
||
|| TO_CHAR(MOD (
|
||
ROUND ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24 * 60,
|
||
0),
|
||
60
|
||
))
|
||
|| 'm' dagenuurmin,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 'Open'
|
||
ELSE 'Afgesloten'
|
||
END,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 1
|
||
ELSE 0
|
||
END,
|
||
ms.mld_statuses_omschrijving,
|
||
ms.mld_statuses_key,
|
||
fac.gettrackingdate('MLDAFM',m.mld_melding_key),
|
||
COALESCE(to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'YYYY-MM-DD'),'Niet afgemeld'),
|
||
to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'DD-MM-YYYY HH24:MI'),
|
||
p2.prs_perslid_naam|| NVL2( p2.prs_perslid_voorletters, ', ' || p2.prs_perslid_voorletters, '')|| NVL2( p2.prs_perslid_tussenvoegsel, ' ' || p2.prs_perslid_tussenvoegsel, '')|| NVL2( p2.prs_perslid_voornaam, ' (' || p2.prs_perslid_voornaam || ')', '') afgemeld_door,
|
||
p.prs_perslid_naam|| NVL2( p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')|| NVL2( p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')|| NVL2( p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '') ingevoerd_door,
|
||
p.prs_perslid_email,
|
||
km3.mld_kenmerkmelding_waarde organisator_contactpersoon,
|
||
km1.mld_kenmerkmelding_waarde organisator_mailadres,
|
||
REPLACE(REPLACE(km2.mld_kenmerkmelding_waarde ,' ',''),'-','') organisator_telefoon,
|
||
ebms.eventid,
|
||
ebms.evenement,
|
||
ebms.bedrijfsnaamid,
|
||
ebms.bedrijfsnaam,
|
||
ebms.billtoid,
|
||
ebms.billto,
|
||
(select alg_onroerendgoed_omschrijving from alg_v_allonrgoed_gegevens where alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys),
|
||
NULL ebms_ordernummer,
|
||
NULL waarde_oranje,
|
||
NULL waarde_rood
|
||
FROM mld_melding m, mld_statuses ms, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd,
|
||
mld_kenmerkmelding km, arai_v_events ebms,
|
||
mld_kenmerkmelding km1, mld_kenmerkmelding km2, mld_kenmerkmelding km3,
|
||
prs_perslid p, prs_perslid p2
|
||
WHERE m.prs_perslid_key = p.prs_perslid_key
|
||
AND fac.gettrackinguserkey('MLDAFM',m.mld_melding_key) = p2.prs_perslid_key(+)
|
||
AND ms.mld_statuses_key = mld_melding_status
|
||
AND m.mld_melding_key = km.mld_melding_key (+)
|
||
AND km.mld_kenmerk_key (+) = 503
|
||
AND km.mld_kenmerkmelding_waarde = ebms.arai_events_key(+)
|
||
AND m.mld_melding_key = km1.mld_melding_key (+)
|
||
AND km1.mld_kenmerk_key (+) = 502
|
||
AND m.mld_melding_key = km2.mld_melding_key (+)
|
||
AND km2.mld_kenmerk_key (+) = 504
|
||
AND m.mld_melding_key = km3.mld_melding_key (+)
|
||
AND km3.mld_kenmerk_key (+) = 501
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_key = 21;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_org_klachten_2
|
||
AS SELECT *
|
||
FROM arai_v_rap_mld_org_klachten;
|
||
|
||
|
||
-----------------------------------------------------------------------------------------------
|
||
-- mbmbmb
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KLACHTEN BEZOEKER KLACHTEN BEZOEKER KLACHTEN BEZOEKER ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- sd.ins_srtdiscipline_key = 22 is de meldingtype 'Klachten BEZOEKERS'
|
||
-- km.mld_kenmerk_key (+) = 507 is key van kenmerk voor ebms_event
|
||
-- km3.mld_kenmerk_key (+) = 505 is key van kenmerk voor Achternaam (contactpersoon)
|
||
-- km1.mld_kenmerk_key (+) = 506 is key van kenmerk voor mailadres
|
||
-- km2.mld_kenmerk_key (+) = 508 is key van kenmerk voor telefoon
|
||
-- km4.mld_kenmerk_key (+) = 510 is key van kenmerk voor voornaam
|
||
-- km5.mld_kenmerk_key (+) = 509 is key van kenmerk voor tussenvoegsel
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_bez_klachten
|
||
(
|
||
mld_melding_key,
|
||
fclt_f_meldingnr,
|
||
fclt_f_type,
|
||
fclt_3d_discipline_key,
|
||
fclt_f_vakgroep,
|
||
mld_stdmelding_key,
|
||
fclt_f_melding,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
mld_melding_note_omschrijving,
|
||
fclt_f_leverancier,
|
||
fclt_f_jaar,
|
||
fclt_f_kwartaal,
|
||
fclt_f_maand,
|
||
invoer_datum,
|
||
fclt_f_ingevoerd,
|
||
invoer_datum_time,
|
||
operationele_einddatum,
|
||
sla_einddatum,
|
||
mld_operationeel_te_laat,
|
||
mld_sla_te_laat,
|
||
mld_operationeel_dagenuurmin,
|
||
fclt_f_lopend,
|
||
fclt_key,
|
||
fclt_f_status,
|
||
status_code,
|
||
afmeld_datum,
|
||
fclt_f_afgemeld,
|
||
afmeld_datum_time,
|
||
afgemeld_door,
|
||
ingevoerd_door,
|
||
invoerder_email,
|
||
bezoeker_contactpersoon,
|
||
bezoeker_mailadres,
|
||
bezoeker_telefoon,
|
||
eventid,
|
||
fclt_f_evenement,
|
||
bedrijfsnaamid,
|
||
fclt_f_company,
|
||
billtoid,
|
||
billto,
|
||
fclt_f_lokatie,
|
||
ordernummer,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS SELECT
|
||
m.mld_melding_key,
|
||
to_char(m.mld_melding_key),
|
||
sd.ins_srtdiscipline_omschrijving,
|
||
d.ins_discipline_key,
|
||
d.ins_discipline_omschrijving,
|
||
std.mld_stdmelding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
(SELECT mld_melding_note_omschrijving
|
||
FROM mld_melding_note
|
||
WHERE mld_melding_note_key IN
|
||
(SELECT MAX (mld_melding_note_key)
|
||
FROM mld_melding_note mn
|
||
WHERE mn.mld_melding_key = m.mld_melding_key))
|
||
mld_melding_note_omschrijving,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_key = (SELECT mld_uitvoerende_keys
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key
|
||
AND mld_opdr_key = (SELECT min(mld_opdr_key)
|
||
FROM mld_opdr
|
||
WHERE mld_melding_key = m.mld_melding_key)
|
||
)
|
||
) leverancier,
|
||
to_char(m.mld_melding_datum,'YYYY'),
|
||
'Q'|| to_char(m.mld_melding_datum,'Q'),
|
||
to_char(m.mld_melding_datum,'MM'),
|
||
m.mld_melding_datum,
|
||
to_char(m.mld_melding_datum,'YYYY-MM-DD'),
|
||
to_char(m.mld_melding_datum,'DD-MM-YYYY HH24:MI'),
|
||
m.mld_melding_einddatum,
|
||
m.mld_melding_einddatum_std,
|
||
CASE
|
||
WHEN m.mld_melding_einddatum < COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) THEN 1
|
||
ELSE 0
|
||
END,
|
||
--CASE
|
||
-- WHEN mld.getactualuitvoer(m.mld_melding_key) + mld_melding_respijt - m.mld_melding_uitvoertijd > 0 THEN 1
|
||
-- ELSE 0
|
||
--END,
|
||
CASE
|
||
WHEN mld.geteinddatum (m.mld_melding_einddatum_std,
|
||
m.mld_stdmelding_key,
|
||
m.mld_melding_spoed,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
NULL,
|
||
m.mld_melding_t_respijt) <
|
||
COALESCE (fac.gettrackingdate('MLDAFM', m.mld_melding_key),fac.gettrackingdate('MLDREJ', m.mld_melding_key), SYSDATE)
|
||
THEN 1 -- Te laat volgens SLA als SLA-einddatum + respijt ligt voor gereeddatum/SYSDATE!
|
||
ELSE 0
|
||
END,
|
||
TO_CHAR (FLOOR (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE)- m.mld_melding_datum)) || 'd '
|
||
|| TO_CHAR (
|
||
MOD (FLOOR ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24), 24)
|
||
)
|
||
|| 'u '
|
||
|| TO_CHAR(MOD (
|
||
ROUND ( (COALESCE(fac.gettrackingdate('MLDAFM',m.mld_melding_key),fac.gettrackingdate('MLDREJ',m.mld_melding_key), SYSDATE) - m.mld_melding_datum) * 24 * 60,
|
||
0),
|
||
60
|
||
))
|
||
|| 'm' dagenuurmin,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 'Open'
|
||
ELSE 'Afgesloten'
|
||
END,
|
||
CASE
|
||
WHEN ms.mld_statuses_key IN (0, 2, 3, 4, 7, 99) THEN 1
|
||
ELSE 0
|
||
END,
|
||
ms.mld_statuses_omschrijving,
|
||
ms.mld_statuses_key,
|
||
fac.gettrackingdate('MLDAFM',m.mld_melding_key),
|
||
COALESCE(to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'YYYY-MM-DD'),'Niet afgemeld'),
|
||
to_char(fac.gettrackingdate('MLDAFM',m.mld_melding_key),'DD-MM-YYYY HH24:MI'),
|
||
p2.prs_perslid_naam || NVL2( p2.prs_perslid_voorletters, ', ' || p2.prs_perslid_voorletters, '')|| NVL2( p2.prs_perslid_tussenvoegsel, ' ' || p2.prs_perslid_tussenvoegsel, '')|| NVL2( p2.prs_perslid_voornaam, ' (' || p2.prs_perslid_voornaam || ')', '') afgemeld_door,
|
||
p.prs_perslid_naam || NVL2( p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')|| NVL2( p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')|| NVL2( p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '') ingevoerd_door,
|
||
p.prs_perslid_email,
|
||
km3.mld_kenmerkmelding_waarde || NVL2( km5.mld_kenmerkmelding_waarde, ', ' || km5.mld_kenmerkmelding_waarde, '')|| NVL2( km4.mld_kenmerkmelding_waarde, ' (' || km4.mld_kenmerkmelding_waarde || ')', '') bezoeker_contactpersoon,
|
||
km1.mld_kenmerkmelding_waarde bezoeker_mailadres,
|
||
REPLACE(REPLACE(km2.mld_kenmerkmelding_waarde ,' ',''),'-','') bezoeker_telefoon,
|
||
ebms.eventid,
|
||
ebms.evenement,
|
||
NULL ebms_bedrijfsnaamid,
|
||
NULL ebms_bedrijfsnaam,
|
||
NULL ebms_billtoid,
|
||
NULL ebms_billto,
|
||
NULL lokatie,
|
||
NULL ebms_ordernummer,
|
||
NULL waarde_oranje,
|
||
NULL waarde_rood
|
||
FROM mld_melding m, mld_statuses ms, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd,
|
||
mld_kenmerkmelding km, arai_v_events ebms,
|
||
mld_kenmerkmelding km1, mld_kenmerkmelding km2, mld_kenmerkmelding km3, mld_kenmerkmelding km4, mld_kenmerkmelding km5,
|
||
prs_perslid p, prs_perslid p2
|
||
WHERE m.prs_perslid_key = p.prs_perslid_key
|
||
AND fac.gettrackinguserkey('MLDAFM',m.mld_melding_key) = p2.prs_perslid_key(+)
|
||
AND ms.mld_statuses_key = mld_melding_status
|
||
AND m.mld_melding_key = km.mld_melding_key (+)
|
||
AND km.mld_kenmerk_key (+) = 507
|
||
AND km.mld_kenmerkmelding_waarde = ebms.arai_events_key(+)
|
||
AND m.mld_melding_key = km1.mld_melding_key (+)
|
||
AND km1.mld_kenmerk_key (+) = 506
|
||
AND m.mld_melding_key = km2.mld_melding_key (+)
|
||
AND km2.mld_kenmerk_key (+) = 508
|
||
AND m.mld_melding_key = km3.mld_melding_key (+)
|
||
AND km3.mld_kenmerk_key (+) = 505
|
||
AND m.mld_melding_key = km4.mld_melding_key (+)
|
||
AND km4.mld_kenmerk_key (+) = 510
|
||
AND m.mld_melding_key = km5.mld_melding_key (+)
|
||
AND km5.mld_kenmerk_key (+) = 509
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_key = 22;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_bez_klachten_2
|
||
AS SELECT *
|
||
FROM arai_v_rap_mld_bez_klachten;
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_tot_klachten
|
||
AS SELECT *
|
||
FROM arai_v_rap_mld_klachten
|
||
UNION ALL
|
||
SELECT *
|
||
FROM arai_v_rap_mld_org_klachten
|
||
UNION ALL
|
||
SELECT *
|
||
FROM arai_v_rap_mld_bez_klachten;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_tot_klachten_2
|
||
AS SELECT *
|
||
FROM arai_v_rap_mld_klachten_2
|
||
UNION ALL
|
||
SELECT *
|
||
FROM arai_v_rap_mld_org_klachten_2
|
||
UNION ALL
|
||
SELECT *
|
||
FROM arai_v_rap_mld_bez_klachten_2;
|
||
|
||
|
||
-- En nu een view incl of een klacht terecht is of niet
|
||
CREATE OR REPLACE VIEW arai_v_rap_mld_tot_klachten_3
|
||
AS
|
||
SELECT a1.*, COALESCE (fac_usrdata_omschr, 'NVT') klacht
|
||
FROM arai_v_rap_mld_klachten_2 a1,
|
||
mld_opdr o,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr
|
||
WHERE mld_kenmerk_key = 2341) mko,
|
||
fac_usrdata ud
|
||
WHERE a1.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_opdr_key = mko.mld_opdr_key(+)
|
||
AND fac.safe_to_number (mko.mld_kenmerkopdr_waarde) =
|
||
fac_usrdata_key(+)
|
||
UNION ALL
|
||
SELECT a2.*,
|
||
COALESCE (
|
||
(SELECT f.fac_usrdata_omschr
|
||
FROM fac_usrdata f,
|
||
( SELECT MAX (mo.mld_opdr_bedrijfopdr_volgnr),
|
||
mko.mld_kenmerkopdr_waarde,
|
||
m.mld_melding_key
|
||
FROM mld_kenmerkopdr mko, mld_opdr mo, mld_melding m
|
||
WHERE mko.mld_opdr_key = mo.mld_opdr_key
|
||
AND mo.mld_melding_key = m.mld_melding_key
|
||
AND mko.mld_kenmerk_key = 2341
|
||
GROUP BY m.mld_melding_key, mko.mld_kenmerkopdr_waarde)
|
||
sub
|
||
WHERE f.fac_usrdata_key =
|
||
fac.safe_to_number (sub.mld_kenmerkopdr_waarde)
|
||
AND sub.mld_melding_key = a2.mld_melding_key),
|
||
'NVT')
|
||
klacht
|
||
FROM arai_v_rap_mld_org_klachten_2 a2
|
||
UNION ALL
|
||
SELECT a3.*,
|
||
COALESCE (
|
||
(SELECT f.fac_usrdata_omschr
|
||
FROM fac_usrdata f,
|
||
( SELECT MAX (mo.mld_opdr_bedrijfopdr_volgnr),
|
||
mko.mld_kenmerkopdr_waarde,
|
||
m.mld_melding_key
|
||
FROM mld_kenmerkopdr mko, mld_opdr mo, mld_melding m
|
||
WHERE mko.mld_opdr_key = mo.mld_opdr_key
|
||
AND mo.mld_melding_key = m.mld_melding_key
|
||
AND mko.mld_kenmerk_key = 2341
|
||
GROUP BY m.mld_melding_key, mko.mld_kenmerkopdr_waarde)
|
||
sub
|
||
WHERE f.fac_usrdata_key =
|
||
fac.safe_to_number (sub.mld_kenmerkopdr_waarde)
|
||
AND sub.mld_melding_key = a3.mld_melding_key),
|
||
'NVT')
|
||
klacht
|
||
FROM arai_v_rap_mld_bez_klachten_2 a3;
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------
|
||
-- Klachten RTM grafieken
|
||
|
||
|
||
--
|
||
|
||
-- Alle klachten (exp + org + bez) van de afgelopen 12 maanden.
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_maand
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_OP_TIJD,
|
||
FCLT_YAS2_TE_LAAT,
|
||
FCLT_YAS3_TOTAAL,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, to_char(to_date(fclt_f_maand,'MM'),'mon'), count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat), count(*),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=fclt_f_jaar' || '&' || 'fclt_f_colvalue1=' || fclt_f_jaar || '&' || 'fclt_f_colname2=fclt_f_maand' || '&' || 'fclt_f_colvalue2=' || fclt_f_maand,
|
||
fclt_f_jaar || fclt_f_maand
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE invoer_datum > SYSDATE - 365
|
||
GROUP BY fclt_f_jaar, fclt_f_maand;
|
||
|
||
|
||
--
|
||
|
||
-- Basisview met de laatste 7 dagen (nodig om 'klachtloze' dagen ook in grafiek te kunnen tonen)
|
||
CREATE OR REPLACE VIEW arai_v_7_dagen
|
||
(datum, dag)
|
||
AS
|
||
SELECT TRUNC(SYSDATE - (LEVEL - 1)) datum, substr(to_char(SYSDATE - (LEVEL - 1), 'day'), 1, 2) dag
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 7;
|
||
|
||
-- Alle klachten (exp + org + bez) van de afgelopen 7 dagen.
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_dag
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_OP_TIJD,
|
||
FCLT_YAS2_TE_LAAT,
|
||
FCLT_YAS3_TOTAAL,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, substr(to_char(to_date(fclt_f_ingevoerd, 'YYYY-MM-DD') ,'day'),1,2), count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat), count(*),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=fclt_f_ingevoerd' || '&' || 'fclt_f_colvalue1=' || fclt_f_ingevoerd,
|
||
fclt_f_ingevoerd
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE TRUNC(invoer_datum) > TRUNC(SYSDATE - 7)
|
||
GROUP BY to_char(to_date(fclt_f_ingevoerd, 'YYYY-MM-DD') ,'day'), fclt_f_ingevoerd
|
||
UNION
|
||
SELECT NULL, dag, 0, 0, 0, '', to_char(datum, 'yyyy-mm-dd')
|
||
FROM arai_v_7_dagen
|
||
WHERE NOT EXISTS (select 'x' FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE TRUNC(invoer_datum) > TRUNC(SYSDATE - 7)
|
||
AND to_char(datum, 'yyyy-mm-dd') = fclt_f_ingevoerd);
|
||
|
||
|
||
-- Basisview met de laatste x-aantal uren (nodig om 'klachtloze' uurtjes ook in grafiek te kunnen tonen)
|
||
CREATE OR REPLACE VIEW arai_v_24_uren
|
||
(datum, uur)
|
||
AS
|
||
SELECT TRUNC(SYSDATE - (LEVEL/24 - 1/24)) datum, to_char(SYSDATE - (LEVEL/24 - 1/24), 'hh24') uur
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 24;
|
||
|
||
|
||
-- Alle klachten (exp + org + bez) van de afgelopen 24 uren.
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_uur
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_OP_TIJD,
|
||
FCLT_YAS2_TE_LAAT,
|
||
FCLT_YAS3_TOTAAL,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, to_char(invoer_datum,'hh24'), count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat), count(*),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=invoer_datum_time' || '&' || 'fclt_f_colvalue1=' || to_char(invoer_datum,'dd-mm-yyyy') || ' ' || to_char(invoer_datum,'hh24') || ':*',
|
||
to_char(invoer_datum,'hh24')
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE TRUNC(invoer_datum) = TRUNC(SYSDATE)
|
||
GROUP BY to_char(invoer_datum,'dd-mm-yyyy'), to_char(invoer_datum,'hh24')
|
||
UNION
|
||
SELECT NULL, uur, 0, 0 ,0, '', uur
|
||
FROM arai_v_24_uren
|
||
WHERE datum = TRUNC(SYSDATE)
|
||
AND NOT EXISTS (SELECT 'x' FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE TRUNC(invoer_datum)= TRUNC(SYSDATE)
|
||
AND to_char(invoer_datum,'hh24') = uur);
|
||
|
||
|
||
-- Alle openstaande klachten per leverancier.
|
||
-- FCLT_YAS_ zijn de klachten die nog op tijd zijn, (blauw)
|
||
-- FCLT_YAS2_ zijn de klachten die te laat tijd zijn (rood),
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_open_lev
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, fclt_f_leverancier, count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=fclt_f_leverancier' || '&' || 'fclt_f_colvalue1=' || fclt_f_leverancier || '&' || 'fclt_f_colname2=fclt_f_lopend' || '&' || 'fclt_f_colvalue2=' || fclt_f_lopend,
|
||
0 - count(*)
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE UPPER(fclt_f_lopend) = 'OPEN'
|
||
GROUP BY fclt_f_leverancier, fclt_f_lopend;
|
||
|
||
-- Top evenement klachten afgelopen maanden
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_event
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, fclt_f_evenement, count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=fclt_f_evenement' || '&' || 'fclt_f_colvalue1=' || fclt_f_evenement,
|
||
0 - count(*)
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE invoer_datum > SYSDATE - 365
|
||
GROUP BY fclt_f_evenement;
|
||
|
||
-- Top leverancier klachten afgelopen maanden
|
||
CREATE OR REPLACE VIEW arai_v_graph_kl_lev
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT NULL, fclt_f_leverancier, count(*) - SUM(mld_sla_te_laat), SUM(mld_sla_te_laat),
|
||
'appl/fac/fac_usrrap_list.asp?usrrap_key=181' || '&' || 'fclt_f_colname1=fclt_f_leverancier' || '&' || 'fclt_f_colvalue1=' || fclt_f_leverancier,
|
||
0 - count(*)
|
||
FROM arai_v_rap_mld_tot_klachten_2
|
||
WHERE invoer_datum > SYSDATE - 365
|
||
GROUP BY fclt_f_leverancier;
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------
|
||
-- Bijzonder handige check-rapportage of er wordt voldaan aan het geheel om automatische opdrachten aan te maken bij stdmelding->dienst->bedrijf
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mlddienstbedrijf
|
||
(
|
||
fclt_f_meldingtype,
|
||
fclt_f_vakgroep,
|
||
MLD_STDMELDING_KEY,
|
||
MLD_STDMELDING_OMSCHRIJVING,
|
||
uitvoertijd_uur,
|
||
auto_opdracht,
|
||
fclt_f_dienst,
|
||
fclt_f_locatie,
|
||
fclt_f_gebouw,
|
||
fclt_f_bedrijf,
|
||
mailadres
|
||
)
|
||
AS
|
||
SELECT SD.INS_SRTDISCIPLINE_OMSCHRIJVING,
|
||
DIS.INS_DISCIPLINE_OMSCHRIJVING,
|
||
SM.MLD_STDMELDING_KEY,
|
||
SM.MLD_STDMELDING_OMSCHRIJVING,
|
||
--ROUND (MLD_STDMELDING_UITVOERTIJD * 24, 2),
|
||
--TO_CHAR (ROUND (SM.MLD_STDMELDING_T_UITVOERTIJD.tijdsduur, 2)) || SM.MLD_STDMELDING_T_UITVOERTIJD.eenheid,
|
||
CASE
|
||
WHEN SM.MLD_STDMELDING_T_UITVOERTIJD.eenheid = 'D'
|
||
THEN
|
||
ROUND (SM.MLD_STDMELDING_T_UITVOERTIJD.tijdsduur * 24, 2)
|
||
ELSE
|
||
ROUND (SM.MLD_STDMELDING_T_UITVOERTIJD.tijdsduur, 2)
|
||
END,
|
||
DECODE (
|
||
MLD_STDMELDING_autoorder,
|
||
1,
|
||
'Ja - Opdracht: '
|
||
|| COALESCE (top.mld_typeopdr_omschrijving, 'Geen')
|
||
|| ' - Dienst vereist:'
|
||
|| DECODE (MLD_STDMELDING_vereisdienst, 1, 'Ja', 'Nee'),
|
||
'Nee'),
|
||
D.PRS_DIENST_OMSCHRIJVING,
|
||
COALESCE (L.ALG_LOCATIE_OMSCHRIJVING, '*'),
|
||
COALESCE (G.ALG_GEBOUW_NAAM, '*'),
|
||
B.PRS_BEDRIJF_NAAM,
|
||
B.PRS_BEDRIJF_EMAIL
|
||
FROM mld_stdmelding sm,
|
||
prs_dienst d,
|
||
prs_bedrijf b,
|
||
prs_bedrijfdienstlocatie bdl,
|
||
mld_discipline dis,
|
||
ins_srtdiscipline sd,
|
||
alg_locatie l,
|
||
alg_gebouw g,
|
||
mld_typeopdr top
|
||
WHERE SM.PRS_DIENST_KEY = D.PRS_DIENST_KEY
|
||
AND d.prs_dienst_key = BDL.PRS_DIENST_KEY
|
||
AND BDL.PRS_BEDRIJF_KEY = b.prs_bedrijf_key
|
||
AND SM.MLD_INS_DISCIPLINE_KEY = DIS.INS_DISCIPLINE_KEY
|
||
AND DIS.INS_SRTDISCIPLINE_KEY = SD.INS_SRTDISCIPLINE_KEY
|
||
AND bdl.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND sm.MLD_TYPEOPDR_KEY = top.MLD_TYPEOPDR_KEY(+);
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- Alle standschoonmaak-klachten
|
||
CREATE OR REPLACE VIEW arai_v_standschoonmaak_alle
|
||
(
|
||
mld_melding_key,
|
||
fclt_f_meldingnr,
|
||
fclt_f_type,
|
||
fclt_discipline_key,
|
||
fclt_f_vakgroep,
|
||
mld_stdmelding_key,
|
||
fclt_f_melding,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
mld_melding_note_omschrijving,
|
||
fclt_f_leverancier,
|
||
fclt_f_jaar,
|
||
fclt_f_kwartaal,
|
||
fclt_f_maand,
|
||
invoer_datum,
|
||
fclt_f_ingevoerd,
|
||
invoer_datum_time,
|
||
operationele_einddatum,
|
||
sla_einddatum,
|
||
mld_operationeel_te_laat,
|
||
mld_sla_te_laat,
|
||
mld_operationeel_dagenuurmin,
|
||
fclt_f_lopend,
|
||
fclt_key,
|
||
fclt_f_status,
|
||
status_code,
|
||
afmeld_datum,
|
||
fclt_f_afgemeld,
|
||
afmeld_datum_time,
|
||
afgemeld_door,
|
||
ingevoerd_door,
|
||
invoerder_email,
|
||
company_contactpersoon,
|
||
company_mailadres,
|
||
company_telefoon,
|
||
eventid,
|
||
fclt_f_evenement,
|
||
bedrijfsnaamid,
|
||
fclt_f_company,
|
||
billtoid,
|
||
billto,
|
||
fclt_f_lokatie,
|
||
ordernummer,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS SELECT *
|
||
FROM arai_v_rap_mld_klachten
|
||
WHERE fclt_3d_discipline_key = 221;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_standschoonmaak_all
|
||
AS SELECT *
|
||
FROM arai_v_standschoonmaak_alle;
|
||
|
||
-- Alle standschoonmaak-klachten die VANDAAG zijn AFGEMELD
|
||
CREATE OR REPLACE VIEW arai_v_standschoon_afgemeld
|
||
AS SELECT *
|
||
FROM arai_v_standschoonmaak_alle
|
||
WHERE TRUNC(afmeld_datum) = TRUNC(SYSDATE);
|
||
|
||
|
||
|
||
-- Alle LOPENDE! (statuscode in 0, 2, 3, 4, 7, 99) klachten over standschoonmaak, van niet alleen vandaag, maar ook die gisteren, eergisteren etc zijn gemaakt.
|
||
CREATE OR REPLACE VIEW arai_v_rap_standschoon_lopend
|
||
AS SELECT *
|
||
FROM arai_v_standschoonmaak_alle
|
||
WHERE status_code IN (0, 2, 3, 4, 7, 99);
|
||
|
||
-- UNION van arai_v_standschoon_afgemeld + arai_v_rap_standschoon_lopend,
|
||
-- Dus Alle afgemelde standschoonmaakklachten van vandaag en de nog lopende (actuele).
|
||
|
||
CREATE OR REPLACE VIEW arai_v_standschoon_today
|
||
AS SELECT *
|
||
FROM arai_v_standschoon_afgemeld
|
||
UNION
|
||
SELECT *
|
||
FROM arai_v_rap_standschoon_lopend;
|
||
|
||
|
||
|
||
|
||
-- Deze view gebruiken voor 'random' binnenkomende KPI-metingen als klachten, om een timetable te hebben voor b.v. grafieken
|
||
CREATE OR REPLACE VIEW arai_v_timetable_halve_uren (datum, tijd)
|
||
AS
|
||
SELECT TRUNC(SYSDATE) + (LEVEL-1)/48 datum,
|
||
TO_CHAR (TRUNC(SYSDATE) + (LEVEL-1)/48, 'HH24:MI') tijd
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 24*2;
|
||
|
||
|
||
|
||
-- Grafiek 1 (lijngrafiek): KPI percentage op tijd afgehandelde klachten schone stands van vandaag van max. 8 uur terug in de tijd uitgezet.
|
||
-- Daarbij worden de onregelmatige controle-tijden (naar boven) afgerond op halve uren (dus hh:00 of hh:30),
|
||
-- Dus X-as bestaat uit maximaal 8 uur x 2 (ieder half uur) = 16 waarden, b.v. 10:00, 10:30, 11:00, ... t/m 17:30.
|
||
-- De Y-as bestaat uit een percentage van op tijd afgehandelde klachten standschoonmaak tov. alle lopende klachten binnen dat tijdstip van het halve uur.
|
||
|
||
-- Eerst een 1e hulp-tabel (temp-tabel)
|
||
CREATE OR REPLACE VIEW arai_v_kpi_schonestand_nu
|
||
(
|
||
fclt_f_meldingnr,
|
||
FCLT_XAS_TIJD,
|
||
mld_operationeel_te_laat,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS SELECT
|
||
fclt_f_meldingnr,
|
||
TO_CHAR(SYSDATE, 'HH24:MI'),
|
||
CASE
|
||
WHEN SYSDATE <= kpi.operationele_einddatum THEN 0
|
||
ELSE 1
|
||
END,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
FROM arai_v_rap_standschoon_lopend kpi;
|
||
|
||
|
||
-- Dan een 2e hulp-tabel (temp-tabel)
|
||
CREATE OR REPLACE VIEW arai_v_tmp_graph_schonestand
|
||
(
|
||
fclt_f_meldingnr,
|
||
FCLT_XAS_TIJD,
|
||
mld_operationeel_te_laat,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS
|
||
SELECT
|
||
fclt_f_meldingnr,
|
||
hu.tijd,
|
||
CASE
|
||
WHEN hu.datum <= kpi.operationele_einddatum THEN 0
|
||
ELSE 1
|
||
END,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
FROM arai_v_standschoon_today kpi, arai_v_timetable_halve_uren hu
|
||
WHERE hu.datum <= SYSDATE
|
||
AND hu.datum <= COALESCE(kpi.afmeld_datum, SYSDATE)
|
||
AND hu.datum >= kpi.invoer_datum
|
||
UNION
|
||
SELECT fclt_f_meldingnr,
|
||
FCLT_XAS_TIJD,
|
||
mld_operationeel_te_laat,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
FROM arai_v_kpi_schonestand_nu;
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_schonestand
|
||
(
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_PERC,
|
||
goed,
|
||
fout,
|
||
waarde_oranje,
|
||
waarde_rood
|
||
)
|
||
AS
|
||
SELECT FCLT_XAS_TIJD,
|
||
ROUND(SUM(mld_operationeel_te_laat)/COUNT(*)*100,1),
|
||
ROUND(100 - (SUM(mld_operationeel_te_laat)/COUNT(*)*100),1),
|
||
ROUND(SUM(mld_operationeel_te_laat)/COUNT(*)*100,1),
|
||
MIN(waarde_oranje),
|
||
MIN(waarde_rood)
|
||
FROM arai_v_tmp_graph_schonestand
|
||
GROUP BY FCLT_XAS_TIJD
|
||
UNION
|
||
SELECT
|
||
hu.tijd, 0, 100, 0, '0', '0'
|
||
FROM arai_v_timetable_halve_uren hu
|
||
WHERE hu.datum < SYSDATE
|
||
AND NOT EXISTS
|
||
(SELECT 'x'
|
||
FROM arai_v_tmp_graph_schonestand t
|
||
WHERE t.FCLT_XAS_TIJD = hu.tijd);
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_standschoon
|
||
( FCLT_XAS_TIJD,
|
||
goed,
|
||
fout,
|
||
KPI_STATUS
|
||
)
|
||
AS
|
||
SELECT FCLT_XAS_TIJD, goed, fout,
|
||
CASE
|
||
WHEN goed >= waarde_oranje THEN 0
|
||
WHEN goed >= waarde_rood THEN 1
|
||
ELSE 2
|
||
END
|
||
FROM arai_v_graph_kpi_schonestand
|
||
WHERE fclt_xas_tijd = (select max(fclt_xas_tijd) from arai_v_graph_kpi_schonestand);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- Grafiek 2 (barchart met rood/oranje/groen): KPI precentage schone toiletten per gebouw, van vandaag van max. 8 uur terug in de tijd uitgezet.
|
||
-- FCLT_YAS_SCHOON is de y-as voor rood
|
||
-- FCLT_YAS2_SCHOON is de y-as voor groen
|
||
-- FCLT_YAS3_SCHOON is de y-as voor oranje
|
||
-- Barchart met 3 kleuren: groen (temp = okee), oranje (temp is oranje) en rood (temp is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_kpi_schonestand2
|
||
(
|
||
FCLT_XAS_TIJD,
|
||
FCLT_YAS_PERC,
|
||
FCLT_YAS2_PERC,
|
||
FCLT_YAS3_PERC
|
||
)
|
||
AS
|
||
SELECT
|
||
FCLT_XAS_TIJD,
|
||
CASE
|
||
WHEN goed IS NULL THEN 0
|
||
WHEN goed < waarde_rood THEN fout
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN goed IS NULL THEN 0
|
||
WHEN goed >= waarde_oranje THEN fout
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN goed IS NULL THEN 0
|
||
WHEN goed >= waarde_rood AND
|
||
goed < waarde_oranje THEN fout
|
||
ELSE 0
|
||
END
|
||
FROM arai_v_graph_kpi_schonestand;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- KPI OVERALL KPI OVERALL KPI OVERALL KPI OVERALL ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
-- STATUS = 0 (is okee), 1 = oranje, 2 = rood, -1 = grijs
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_all
|
||
(
|
||
KPI_NAAM,
|
||
KPI_STATUS,
|
||
FCLT_URL,
|
||
USR_RAP_ALL_DETAILS
|
||
)
|
||
AS
|
||
SELECT 'TEMPERATUUR',
|
||
(SELECT COALESCE(MAX(kpi_temperatuur),-1) FROM
|
||
(SELECT
|
||
CASE
|
||
WHEN avg_temp IS NULL THEN 2
|
||
WHEN avg_temp < min_waarde THEN 2
|
||
WHEN avg_temp > max_waarde THEN 2
|
||
WHEN avg_temp < min_waarde_oranje THEN 1
|
||
WHEN avg_temp > max_waarde_oranje THEN 1
|
||
ELSE 0
|
||
END kpi_temperatuur
|
||
FROM arai_v_rap_kpi_temp_per_ruimte
|
||
WHERE join_kpi = 3)
|
||
), 'arai_v_rap_kpi_temp_per_ruimte', 'arai_v_rap_temp_per_ruimte'
|
||
FROM DUAL
|
||
-- UNION ALL
|
||
-- SELECT 'ICT',
|
||
-- (SELECT COALESCE(MAX(kpi_ict_mitel),-1) FROM
|
||
-- (SELECT
|
||
-- CASE
|
||
-- WHEN kpi_color_overrule IS NOT NULL THEN kpi_color_overrule
|
||
-- WHEN ins_kenmerkdeel_waarde IS NULL THEN -1
|
||
-- WHEN ins_kenmerkdeel_waarde >= waarde_rood THEN 2
|
||
-- WHEN ins_kenmerkdeel_waarde >= waarde_oranje THEN 1
|
||
-- ELSE 0
|
||
-- END kpi_ict_mitel
|
||
-- FROM arai_v_kpi_ict_mitel
|
||
-- WHERE ins_kenmerkdeel_verwijder IS NULL
|
||
-- AND trunc_datum = TRUNC(SYSDATE))
|
||
-- ), 'arai_v_rap_kpi_ict_mitel', ''
|
||
-- FROM DUAL
|
||
UNION ALL
|
||
SELECT 'TOILETSCHOONMAAK',
|
||
(SELECT COALESCE(MAX(KPI_STATUS),-1) FROM arai_v_kpi_toilet_gebouw),
|
||
'arai_v_kpi_toilet_gebouw', 'arai_v_rap_kpi_toilet_all'
|
||
FROM DUAL
|
||
UNION ALL
|
||
SELECT 'STANDSCHOONMAAK',
|
||
(SELECT COALESCE(MAX(KPI_STATUS),-1) FROM arai_v_rap_kpi_standschoon),
|
||
'arai_v_rap_kpi_standschoon', 'arai_v_rap_standschoonmaak_all'
|
||
FROM DUAL;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- QRC TOILET SCHOONMAAK QRC TOILET SCHOONMAAK QRC TOILET SCHOONMAAK ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_ins_qrc_toilet
|
||
(fclt_3d_discipline_key, fclt_3d_locatie_key, fclt_f_locatie, fclt_f_gebouw, plaats, soortruimte, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_key, ins_srtdeel_key,
|
||
fclt_f_objectsoort, ins_alg_ruimte_type, alg_district_key, ins_deel_upper, alg_ruimte_key, hide_f_bookmark_id
|
||
)
|
||
AS
|
||
SELECT i.ins_discipline_key,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
o.alg_gebouw_omschrijving,
|
||
o.alg_plaatsaanduiding plaats,
|
||
(SELECT r.alg_ruimte_omschrijving
|
||
FROM alg_ruimte r
|
||
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte,
|
||
s.ins_srtdeel_code,
|
||
s.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
s.ins_srtdeel_upper,
|
||
i.ins_alg_ruimte_type,
|
||
l.alg_district_key,
|
||
ins_deel_upper,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
fac_bookmark b
|
||
WHERE b.fac_bookmark_naam = 'KPI_TOILETSCHOONMAAK'
|
||
AND s.ins_srtdeel_key = 21
|
||
AND ins_deel_verwijder IS NULL
|
||
AND i.ins_deel_module = 'INS'
|
||
AND i.ins_deel_parent_key IS NULL
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND s.ins_srtdeel_key = i.ins_srtdeel_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_ins_qrc_inspecties
|
||
(fclt_3d_discipline_key, fclt_3d_locatie_key, fclt_f_locatie, fclt_f_gebouw, plaats, soortruimte, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_key, ins_srtdeel_key,
|
||
fclt_f_objectsoort, ins_alg_ruimte_type, alg_district_key, ins_deel_upper, alg_ruimte_key, hide_f_bookmark_id
|
||
)
|
||
AS
|
||
SELECT DISTINCT i.ins_discipline_key,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
o.alg_gebouw_omschrijving,
|
||
o.alg_plaatsaanduiding plaats,
|
||
(SELECT r.alg_ruimte_omschrijving
|
||
FROM alg_ruimte r
|
||
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte,
|
||
s.ins_srtdeel_code,
|
||
s.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
s.ins_srtdeel_upper,
|
||
i.ins_alg_ruimte_type,
|
||
l.alg_district_key,
|
||
ins_deel_upper,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
fac_bookmark b,
|
||
ins_deelsrtcontrole dc,
|
||
ins_srtcontrole sc
|
||
WHERE b.fac_bookmark_naam = 'KPI_INSPECTIES'
|
||
AND ins_deel_verwijder IS NULL
|
||
AND i.ins_deel_module = 'INS'
|
||
AND i.ins_deel_parent_key IS NULL
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND sc.ctr_discipline_key = 2021 -- Inspecties
|
||
AND sc.ins_srtcontrole_niveau = 'S'
|
||
AND sc.ins_srtinstallatie_key = s.ins_srtdeel_key
|
||
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
||
UNION ALL
|
||
SELECT DISTINCT i.ins_discipline_key,
|
||
l.alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
o.alg_gebouw_omschrijving,
|
||
o.alg_plaatsaanduiding plaats,
|
||
(SELECT r.alg_ruimte_omschrijving
|
||
FROM alg_ruimte r
|
||
WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key) soortruimte,
|
||
s.ins_srtdeel_code,
|
||
s.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
s.ins_srtdeel_upper,
|
||
i.ins_alg_ruimte_type,
|
||
l.alg_district_key,
|
||
i.ins_deel_upper,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
alg_locatie l,
|
||
alg_district di,
|
||
fac_bookmark b,
|
||
ins_deelsrtcontrole dc,
|
||
ins_srtcontrole sc,
|
||
ins_srtgroep sg
|
||
WHERE b.fac_bookmark_naam = 'KPI_INSPECTIES'
|
||
AND i.ins_deel_verwijder IS NULL
|
||
AND sg.ins_srtgroep_verwijder IS NULL
|
||
AND i.ins_srtdeel_key = s.ins_srtdeel_key
|
||
AND sg.ins_srtgroep_key = s.ins_srtgroep_key
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = di.alg_district_key
|
||
AND sc.ctr_discipline_key = 2021 -- Inspecties
|
||
AND sc.ins_srtcontrole_niveau = 'G'
|
||
AND sc.ins_srtinstallatie_key = sg.ins_srtgroep_key;
|
||
|
||
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- Export URENREGISTRATIE Export URENREGISTRATIE Export URENREGISTRATIE Export URENREGISTRATIE ---
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
---------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
-- Gedetaileerde versie van de algemene view mld_v_nettotijdsbesteding.
|
||
-- De uren van ARAI moeten niet per persoon per opdracht worden weergegeven maar per persoon per dag.
|
||
CREATE OR REPLACE VIEW arai_v_persoonuren
|
||
(
|
||
mld_opdr_key,
|
||
prs_perslid_key,
|
||
naam,
|
||
datum,
|
||
ntb_prs
|
||
)
|
||
AS
|
||
SELECT a.mld_opdr_key,
|
||
a.prs_perslid_key,
|
||
naam,
|
||
TRUNC(a.start_date + delta) datum,
|
||
SUM(
|
||
CASE
|
||
WHEN TRUNC(a.end_date, 'DD') = TRUNC(a.start_date, 'DD')
|
||
THEN a.lastdate - a.firstdate
|
||
WHEN delta = 0
|
||
THEN TRUNC(a.firstdate + 1) - a.firstdate
|
||
WHEN TRUNC(a.start_date, 'DD') + delta = TRUNC(a.end_date, 'DD')
|
||
THEN a.lastdate - TRUNC(a.lastdate)
|
||
ELSE 1
|
||
END)
|
||
ntb_prs
|
||
FROM (SELECT TRUNC(firstdate) start_date, -- Voor CONNECT BY LEVEL de TRUNC van firstdate en lastdate bepalen anders gaat het fout als de tijd van lastdate kleiner is als van firstdate.
|
||
TRUNC(lastdate) end_date,
|
||
firstdate,
|
||
lastdate,
|
||
prs_perslid_key,
|
||
prs_perslid_naam_full naam,
|
||
mld_opdr_key
|
||
FROM ( SELECT st.fac_srtnotificatie_code,
|
||
LAG(t.fac_tracking_datum)
|
||
OVER(PARTITION BY fac_tracking_refkey
|
||
ORDER BY fac_tracking_datum)
|
||
AS firstdate,
|
||
t.fac_tracking_datum lastdate,
|
||
t.prs_perslid_key,
|
||
p.prs_perslid_naam_full,
|
||
fac_tracking_refkey mld_opdr_key,
|
||
t.fac_tracking_key
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie st,
|
||
prs_v_perslid_fullnames_all p
|
||
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
||
AND t.prs_perslid_key = p.prs_perslid_key
|
||
AND st.fac_srtnotificatie_code IN ('ORDACP',
|
||
'ORDHLT',
|
||
'ORDRSM',
|
||
'ORDAFM',
|
||
'ORDCAN') -- De gecancelde opdrachten zijn nog meegenomen.
|
||
AND fac_tracking_datum >= TO_DATE('01-05-2017','dd-mm-yyyy') -- oude records zijn nog niet ingevuld.
|
||
ORDER BY fac_tracking_datum,
|
||
prs_perslid_key) xx
|
||
WHERE xx.fac_srtnotificatie_code IN ('ORDHLT',
|
||
'ORDAFM',
|
||
'ORDCAN')) a, -- De gecancelde opdrachten zijn nog meegenomen.
|
||
( SELECT LEVEL - 1 AS delta
|
||
FROM DUAL
|
||
CONNECT BY LEVEL - 1 <= (SELECT MAX(end_date - start_date)
|
||
FROM (SELECT TRUNC(firstdate) start_date, -- Voor CONNECT BY LEVEL de TRUNC van firstdate en lastdate bepalen anders gaat het fout als de tijd van lastdate kleiner is als van firstdate.
|
||
TRUNC(lastdate) end_date,
|
||
firstdate,
|
||
lastdate,
|
||
prs_perslid_key,
|
||
mld_opdr_key
|
||
FROM ( SELECT st.fac_srtnotificatie_code,
|
||
LAG(t.fac_tracking_datum)
|
||
OVER(PARTITION BY fac_tracking_refkey
|
||
ORDER BY fac_tracking_datum)
|
||
AS firstdate,
|
||
t.fac_tracking_datum lastdate,
|
||
t.prs_perslid_key,
|
||
p.prs_perslid_naam_full,
|
||
fac_tracking_refkey mld_opdr_key
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie st,
|
||
prs_v_perslid_fullnames_all p
|
||
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
|
||
AND t.prs_perslid_key = p.prs_perslid_key
|
||
AND st.fac_srtnotificatie_code IN ('ORDACP',
|
||
'ORDHLT',
|
||
'ORDRSM',
|
||
'ORDAFM',
|
||
'ORDCAN') -- De gecancelde opdrachten zijn nog meegenomen.
|
||
AND fac_tracking_datum >= TO_DATE('01-05-2017','dd-mm-yyyy') -- oude records zijn nog niet ingevuld.
|
||
ORDER BY fac_tracking_datum,
|
||
prs_perslid_key) xx
|
||
WHERE xx.fac_srtnotificatie_code IN ('ORDHLT',
|
||
'ORDAFM',
|
||
'ORDCAN')))) -- De gecancelde opdrachten zijn nog meegenomen.
|
||
WHERE a.start_date + delta <= a.end_date
|
||
GROUP BY a.mld_opdr_key,
|
||
a.prs_perslid_key,
|
||
naam,
|
||
TRUNC(a.start_date + delta)
|
||
ORDER BY a.prs_perslid_key,
|
||
datum,
|
||
a.mld_opdr_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_export_urenregistratie (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT REPLACE(REPLACE(m.mld_melding_key
|
||
|| ';'
|
||
|| sm.mld_stdmelding_omschrijving
|
||
|| ';'
|
||
|| p.prs_perslid_naam
|
||
|| ';'
|
||
|| p.prs_perslid_voornaam
|
||
|| ';'
|
||
|| m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
||
|| ';'
|
||
|| fac.gettrackingdate('ORDAFM', o.mld_opdr_key)
|
||
|| ';'
|
||
|| ROUND(t.ntb_prs*24*60,2)
|
||
,CHR (13), ''), CHR (10), '<ret>'), m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_opdr o, mld_v_nettotijdsbesteding t, mld_melding m, mld_stdmelding sm, prs_perslid p
|
||
WHERE o.MLD_STATUSOPDR_KEY = 6
|
||
AND o.MLD_TYPEOPDR_KEY = 281
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND o.mld_opdr_key = t.mld_opdr_key
|
||
AND p.prs_perslid_key = t.prs_perslid_key
|
||
AND mld_opdr_datumbegin >= to_date('01-05-2017','dd-mm-yyyy');
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_select_urenregistratie (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
|
||
CREATE OR REPLACE PROCEDURE arai_export_urenregistratie (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
-- Alle opdrachten van type 'Intern' (key = 281) die zijn afgemeld (status = 6) maar nog niet verwerkt (status = 7) vanaf 1 mei 2017 (release ARAI24).
|
||
-- mld_statusopdr_key = 6 betekent 'afgemelde' opdracht.
|
||
-- mld_typeopdr_key = 281 betekent 'interne' opdracht (dwz urenregistratie opdrachttype)
|
||
-- Let op: Het kan zijn dat er geen tijdsbesteding voor een opdracht wordt berekend, dat komt omdat de opdracht niet eerst is geaccepteerd (expliciet is gestart).
|
||
-- Deze opdrachten die zijn afgemeld worden niet meegenomen, omdat hiervoor geen registratie in mld_opdr_uren kan worden gedaan.
|
||
-- Alle door een persoon bestede tijd (aantal_uren, uitgedrukt in een meestal gebroken getal in uren) wordt op afmeld-datum van de opdracht geregistreerd in mld_opdr_uren.
|
||
|
||
-- Er wordt van uitgegaan dat aan het eind van de werkdag de behandeling op HALT wordt gezet en 's morgens weer wordt HERVAT
|
||
-- om een goede urenregistratie te krijgen.
|
||
-- Als de uren per dag meer dan 8 uur is, wordt de behandeling 's morgens niet Hervat en 's avonds niet op HALT gezet.
|
||
|
||
-- ARAI#47067: Uren berekening niet robuust tegen handmatig ingevulde uren, aangepast door een extra conditie (not exists) toe te voegen die bestaande urenregistratie
|
||
-- van een opdracht op de datum van een persoon uitsluit
|
||
CURSOR c_opdr_met_uren
|
||
IS
|
||
SELECT o.mld_opdr_key,
|
||
t.prs_perslid_key,
|
||
t.datum,
|
||
t.ntb_prs * 24 aantal_uur
|
||
FROM mld_opdr o,
|
||
arai_v_persoonuren t
|
||
WHERE o.MLD_STATUSOPDR_KEY IN (5, 6, 8) -- Toegekend, Afgemeld, Geaccepteerd/Onderbroken
|
||
AND o.MLD_TYPEOPDR_KEY = 281
|
||
AND o.mld_opdr_key = t.mld_opdr_key
|
||
AND mld_opdr_datumbegin >= TO_DATE('01-05-2017', 'dd-mm-yyyy')
|
||
AND NOT EXISTS ( SELECT 'x' FROM mld_opdr_uren x
|
||
WHERE o.mld_opdr_key = x.mld_opdr_key
|
||
AND t.datum = x.mld_opdr_uren_datum
|
||
AND t.prs_perslid_key = x.prs_perslid_key);
|
||
|
||
|
||
-- Hieronder alle afgemelde opdrachten, met of zonder uur-besteding, die willen we wel meenemen in de query, zodat ze kunnen worden verwerkt (status 6->7) (en de volgende keer niet meer meedoen).
|
||
CURSOR c_opdr_metofzonder_uren
|
||
IS
|
||
SELECT o.mld_opdr_key
|
||
FROM mld_opdr o
|
||
WHERE o.MLD_STATUSOPDR_KEY = 6
|
||
AND o.MLD_TYPEOPDR_KEY = 281
|
||
AND mld_opdr_datumbegin >= to_date('01-05-2017', 'dd-mm-yyyy');
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
FOR c_uur IN c_opdr_met_uren
|
||
LOOP
|
||
-- Least, omdat aantal uren maximaal 3 cijfers kan bestaan in DB
|
||
INSERT INTO mld_opdr_uren(mld_opdr_key,
|
||
mld_opdr_uren_datum,
|
||
prs_perslid_key,
|
||
mld_opdr_uren_besteed,
|
||
mld_opdr_uren_status)
|
||
SELECT c_uur.mld_opdr_key,
|
||
TRUNC(c_uur.datum),
|
||
c_uur.prs_perslid_key,
|
||
LEAST(999, ROUND(c_uur.aantal_uur, 2)),
|
||
3
|
||
FROM DUAL;
|
||
|
||
mld.setopdrachtstatus (c_uur.mld_opdr_key, 9, 4); -- Update de status naar verwerkt wanneer de opdracht is afgemeld
|
||
|
||
END LOOP;
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle dagrapportage meldingen automatisch af te melden (dagelijks)
|
||
CREATE OR REPLACE PROCEDURE arai_export_dagrapafm (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR arai_dagrap_afm
|
||
IS
|
||
SELECT m.mld_melding_key, m.mld_melding_status
|
||
FROM mld_melding m, mld_stdmelding std, mld_discipline md
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_discipline_key = 1541
|
||
AND m.mld_melding_status != 5;
|
||
BEGIN
|
||
FOR rec IN arai_dagrap_afm
|
||
LOOP
|
||
BEGIN
|
||
UPDATE mld_melding
|
||
SET mld_melding_status = 5
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
fac.trackaction ('MLDAFM',
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Import KPI waarden Import KPI waarden Import KPI waarden Import KPI waarden Import KPI waarden ---
|
||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Import KPI temperatuur Import KPI temperatuur Import KPI temperatuur Import KPI temperatuur ---
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_notify_kpi_temp
|
||
(
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
|
||
-- fac_usrtab_key = 21 is de tabel '$KPI_NOTIFY': SYSTEM TABEL: KEEP OUT!
|
||
-- SYNTAX code = KPI_<kpi-naam>_<mail-of-sms>, dus b.v. 'KPI_TEMP_MAIL', 'KPI_ICT_MITEL_MAIL', 'KPI_TEMP_SMS', 'KPI_ICT_MITEL_SMS',
|
||
-- Met volgnr = 1 wordt aangegeven dat het een actieve notificatie is, lege waarde of 0 (of iets anders) is inactief cq. tijdelijk uitgezet.
|
||
|
||
|
||
CURSOR c_kpi_temp_notify_mail_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_TEMP_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_temp_notify_mail_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_temp_notify_sms_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_TEMP_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
CURSOR c_kpi_temp_notify_sms_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_temp_notify_per_ruimte
|
||
IS
|
||
SELECT alg_ruimte_key, alg_gebouw_naam, alg_ruimte_nr, alg_ruimte_omschrijving, avg_temp,
|
||
CASE
|
||
WHEN avg_temp IS NULL THEN -1
|
||
WHEN avg_temp < min_waarde THEN 2
|
||
WHEN avg_temp > max_waarde THEN 2
|
||
WHEN avg_temp < min_waarde_oranje THEN 1
|
||
WHEN avg_temp > max_waarde_oranje THEN 1
|
||
ELSE 0
|
||
END kpi_temperatuur
|
||
FROM arai_v_rap_kpi_temp_per_ruimte
|
||
WHERE join_kpi = 3;
|
||
|
||
|
||
-- Alleen notificeren gedurende de "openingsdatums" en "openingstijden" van de KPI.
|
||
-- Openingsdatums worden bepaald door settings KPI_ALL_DATUM1 en KPI_ALL_DATUM2 (b.v. 06-09-2012 en 11-09-2012)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingsdatums oneindig (levert altijd OKEE op).
|
||
-- Openingstijden worden bepaald door settings KPI_TEMP_TIME1 en KPI_TEMP_TIME2 (b.v. 08:00 en 17:00)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingstijden van 0:00 t/m 23:59 (24 uurs)
|
||
CURSOR c_kpi_notify_during_opening
|
||
IS
|
||
SELECT
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) <= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) >= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') <= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_TIME1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_tijd,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') >= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_TEMP_TIME2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_tijd
|
||
FROM DUAL;
|
||
|
||
-- Alleen notificeren na verstrijken van de "freqentie-minuten" van de KPI.
|
||
-- Frequentieminuten worden bepaald door setting KPI_TEMP_FREQ_MINUTES (b.v. 30), betekent dat er minimaal 30 minuten zijn verstreken sinds de laatste notificatie is verstuurd.
|
||
-- Indien deze niet in tabel staan, is er geen minimum ingestelde "frequentieminuten" en wordt gewoon genotificeerd.
|
||
-- Levert waarde 0 op indien er nog niet moet worden genotificeerd (tijd is nog niet verstreken), en de waarde 1 indien wel genotificeerd (tijd verstreken of geen instelling).
|
||
CURSOR c_kpi_notify_after_freq_min
|
||
IS
|
||
SELECT
|
||
COALESCE(
|
||
(SELECT
|
||
CASE
|
||
WHEN to_date(fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') + fac_usrdata_volgnr/(60*24) <= SYSDATE THEN 1
|
||
ELSE 0
|
||
END CASE
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code = 'KPI_TEMP_FREQ_MINUTES'
|
||
AND fac_usrdata_verwijder IS NULL), 1) freq_min_verstreken
|
||
FROM DUAL;
|
||
|
||
|
||
BEGIN
|
||
|
||
|
||
FOR rec_open IN c_kpi_notify_during_opening
|
||
LOOP
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
|
||
IF rec_open.min_datum = 1 AND rec_open.max_datum = 1 AND rec_open.min_tijd = 1 AND rec_open.max_tijd = 1
|
||
THEN
|
||
-- De sysdate ligt tussen zowel de openingstijd als sluitingstijd van de KPI, dus we kunnen gaan notificeren...
|
||
|
||
-- ... Alleen indien de het aantal ingestelde frequentie-minuten sinds de laatste notificatie is verlopen.
|
||
|
||
FOR rec_freq IN c_kpi_notify_after_freq_min
|
||
LOOP
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
|
||
IF rec_freq.freq_min_verstreken = 1
|
||
THEN
|
||
-- Het aantal ingestelde frequentie-minuten is sinds de laatste notificatie verstreken, dus we kunnen gaan notificeren...
|
||
|
||
-- Eerst even het notificatie-moment vastleggen voor de volgende keer.
|
||
UPDATE fac_usrdata
|
||
SET fac_usrdata_omschr = TO_CHAR(SYSDATE,'dd-mm-yyyy hh24:mi')
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code = 'KPI_TEMP_FREQ_MINUTES'
|
||
AND fac_usrdata_verwijder IS NULL;
|
||
|
||
COMMIT;
|
||
|
||
FOR rec_kpi_temp IN c_kpi_temp_notify_per_ruimte
|
||
|
||
LOOP
|
||
BEGIN
|
||
-- Als ORANJE (1) of ROOD (2), dan notificeren, anders niet (uiteraard)
|
||
IF rec_kpi_temp.kpi_temperatuur = 1 OR rec_kpi_temp.kpi_temperatuur = 2
|
||
THEN
|
||
|
||
IF rec_kpi_temp.kpi_temperatuur = 1
|
||
THEN
|
||
-- Code ORANJE voor KPI TEMPERATUUR
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ORANJE: Gemiddelde temperatuur in ruimte ' || rec_kpi_temp.alg_gebouw_naam || '(' || rec_kpi_temp.alg_ruimte_omschrijving || ') is ' || rec_kpi_temp.avg_temp || ' <20>C';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
ELSE
|
||
-- Code ROOD voor KPI TEMPERATUUR
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ROOD: Gemiddelde temperatuur in ruimte ' || rec_kpi_temp.alg_gebouw_naam || '(' || rec_kpi_temp.alg_ruimte_omschrijving || ') is ' || rec_kpi_temp.avg_temp || ' <20>C';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_temp_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
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;
|
||
|
||
ELSE
|
||
-- Het aantal frequentie-minuten is nog niet verstreken, dus GEEN notificeren...
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := 'Geen notificatie: frequentie-minuten zijn nog niet voorbij' ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
END IF;
|
||
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
END LOOP;
|
||
|
||
ELSE
|
||
-- De sysdate ligt buiten de openingstijd en sluitingstijd van de KPI, dus GEEN notificeren...
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := 'Geen notificatie: tijd ligt buiten de KPI tijden' ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
END IF;
|
||
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (arai_notify_kpi_temp error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
|
||
END arai_notify_kpi_temp;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_kpi_temp (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
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_ins_deel_omschrijving VARCHAR2 (256);
|
||
v_ins_deel_meetwaarde VARCHAR2 (256);
|
||
v_ins_deel_opclabel VARCHAR2 (256);
|
||
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_imp_kpi;
|
||
|
||
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 - Installatiecode: Kolom M (kolomnr 13) is de installatiecode. Indien leeg, dan deze overslaan.
|
||
-- CSV variant: fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_ins_deel_omschrijving);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_ins_deel_omschrijving);
|
||
|
||
-- 02 - Meetwaarde: Kolom J (kolomnr 10) is de weergave.
|
||
-- CSV variant: fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_ins_deel_meetwaarde);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_ins_deel_meetwaarde);
|
||
|
||
-- 03 - OPC label: Kolom A (kolomnr 1), een interne label cq. tag van de OPC-server oid
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_ins_deel_opclabel);
|
||
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_ins_deel_omschrijving
|
||
|| '|'
|
||
|| v_ins_deel_meetwaarde
|
||
|| '|'
|
||
|| v_ins_deel_opclabel
|
||
|| '] ';
|
||
|
||
-- 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_ins_deel_omschrijving) = 'INSTALLATIECODE'
|
||
AND UPPER (v_ins_deel_meetwaarde) = 'WEERGAVE'
|
||
AND UPPER (v_ins_deel_opclabel) = 'OPC LABEL'
|
||
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige objectnaam / installatiecode';
|
||
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
|
||
|
||
IF (v_ins_deel_omschrijving IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_ins_deel_omschrijving) > 60
|
||
THEN
|
||
v_ins_deel_omschrijving := SUBSTR (v_ins_deel_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Objectnaam te lang', 'Objectnaam wordt afgebroken tot [' || v_ins_deel_omschrijving || ']' );
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige meetwaarde';
|
||
v_ins_deel_meetwaarde := TRIM (v_ins_deel_meetwaarde);
|
||
|
||
IF (v_ins_deel_meetwaarde IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_ins_deel_meetwaarde) > 255
|
||
THEN
|
||
v_ins_deel_meetwaarde := SUBSTR (v_ins_deel_meetwaarde, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Meetwaarde te lang', 'Meetwaarde wordt afgebroken tot [' || v_ins_deel_meetwaarde || ']' );
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige OPC label';
|
||
v_ins_deel_opclabel := TRIM (v_ins_deel_opclabel);
|
||
IF (v_ins_deel_opclabel IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_ins_deel_opclabel) > 255
|
||
THEN
|
||
v_ins_deel_opclabel := SUBSTR (v_ins_deel_opclabel, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'OPC label te lang', 'Label wordt afgebroken tot [' || v_ins_deel_opclabel || ']' );
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_imp_kpi';
|
||
|
||
INSERT INTO arai_imp_kpi (ins_deel_omschrijving, ins_deel_meetwaarde, ins_deel_opclabel)
|
||
VALUES (v_ins_deel_omschrijving, v_ins_deel_meetwaarde, v_ins_deel_opclabel);
|
||
|
||
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',
|
||
'KPI: aantal ingelezen regels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
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 arai_import_kpi_temp;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_kpi_temp (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
c_ins_srtgroep_key_temp NUMBER (10) := 1;
|
||
c_ins_kenmerk_key_temp NUMBER (10) := 1;
|
||
|
||
v_ins_deel_key NUMBER (10);
|
||
|
||
|
||
-- Alle kpi_temperatuur meetwaarden: dit zijn de regels waarvan de objectnaam voldoet aan de volgende codering: XX-XXTTXX, met op de X precies 1 karakter.
|
||
CURSOR c_kpi_temp
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_kpi k
|
||
WHERE k.ins_deel_omschrijving like '%TT%';
|
||
-- AND k.ins_deel_opclabel like '%MET%';
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
|
||
v_aanduiding := '';
|
||
|
||
|
||
-- Alle kpi-temperaturen verwerken...
|
||
FOR rec_kpi_temp IN c_kpi_temp
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen object [' || rec_kpi_temp.ins_deel_omschrijving || ']';
|
||
|
||
-- NB sd.ins_srtgroep_key = 1 is de groep van allemaal temperatuurmeter-objecten;
|
||
SELECT d.ins_deel_key
|
||
INTO v_ins_deel_key
|
||
FROM ins_deel d, ins_srtdeel sd
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND UPPER (d.ins_deel_omschrijving) = UPPER (rec_kpi_temp.ins_deel_omschrijving)
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = c_ins_srtgroep_key_temp;
|
||
|
||
-- Max 1 record wordt bijgewerkt, namelijk het kenmerk temperatuur van het betreffende object wordt functioneel verwijderd.
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_verwijder = SYSDATE
|
||
WHERE ins_kenmerk_key = c_ins_kenmerk_key_temp
|
||
AND ins_deel_key = v_ins_deel_key
|
||
AND ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij toevoegen temperatuur bij object [' || rec_kpi_temp.ins_deel_omschrijving || ']';
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT v_ins_deel_key, c_ins_kenmerk_key_temp, rec_kpi_temp.ins_deel_meetwaarde FROM DUAL;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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;
|
||
|
||
-- Als alle temperaturen zijn verwerkt, dan checken of er een ruimte een gemiddelde temperatuur heeft die buiten de grenzen valt.
|
||
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
-- Tenslotte nog de notificaties uitsturen, als STAART van de import.
|
||
arai_notify_kpi_temp(p_import_key);
|
||
|
||
END arai_update_kpi_temp;
|
||
/
|
||
|
||
|
||
|
||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Import KPI ENERGIE Import KPI ENERGIE Import KPI ENERGIE Import KPI ENERGIE Import KPI ENERGIE Import KPI ENERGIE Import KPI ENERGIE --
|
||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_kpi_energie (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
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_ins_deel_omschrijving VARCHAR2 (256);
|
||
v_ins_deel_meetwaarde VARCHAR2 (256);
|
||
|
||
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_imp_kpi_energie;
|
||
|
||
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
|
||
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_ins_deel_omschrijving);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_ins_deel_meetwaarde);
|
||
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_ins_deel_omschrijving
|
||
|| '|'
|
||
|| v_ins_deel_meetwaarde
|
||
|| '] ';
|
||
|
||
-- 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_ins_deel_omschrijving) = 'INSTALLATIECODE'
|
||
AND UPPER (v_ins_deel_meetwaarde) = 'WEERGAVE'
|
||
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige objectnaam / installatiecode';
|
||
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
|
||
|
||
IF (v_ins_deel_omschrijving IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_ins_deel_omschrijving) > 60
|
||
THEN
|
||
v_ins_deel_omschrijving := SUBSTR (v_ins_deel_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Objectnaam te lang', 'Objectnaam wordt afgebroken tot [' || v_ins_deel_omschrijving || ']' );
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige meetwaarde';
|
||
-- LET OP: een eventuele komma verwijderen via REPLACE (a.g.v. getallen > 1000, die worden met scheidingsteken , door Coneco doorgegeven, zij kunnen die niet (!?!?!?) weghalen. Ja ja.)
|
||
|
||
v_ins_deel_meetwaarde := REPLACE(TRIM (v_ins_deel_meetwaarde),',','');
|
||
|
||
IF (v_ins_deel_meetwaarde IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_ins_deel_meetwaarde) > 255
|
||
THEN
|
||
v_ins_deel_meetwaarde := SUBSTR (v_ins_deel_meetwaarde, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Meetwaarde te lang', 'Meetwaarde wordt afgebroken tot [' || v_ins_deel_meetwaarde || ']' );
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_imp_kpi';
|
||
|
||
INSERT INTO arai_imp_kpi_energie (ins_deel_omschrijving, ins_deel_meetwaarde)
|
||
VALUES (v_ins_deel_omschrijving, v_ins_deel_meetwaarde);
|
||
|
||
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',
|
||
'KPI: aantal ingelezen regels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
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 arai_import_kpi_energie;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_kpi_energie_items (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
-- Very important: om af te dwingen dat bij elkaar horende meetwaarden dezelfde insert-date krijgen, zodat ze in de grafiek-definitie gebruiikt kunnen worden en gegarandeerd dezelfde timestamp hebben
|
||
v_nu DATE;
|
||
|
||
c_ins_kenmerk_key_opc_meting NUMBER (10) := 61;
|
||
c_ins_kenmerk_key_opc_setpoint NUMBER (10) := 62;
|
||
c_ins_kenmerk_key_opc_alarm NUMBER (10) := 63;
|
||
|
||
|
||
v_ins_deel_key NUMBER (10);
|
||
|
||
-- STATISCHE kenmerk_key (OPC-label-ID)
|
||
v_ins_kenmerk_key_opc NUMBER (10);
|
||
|
||
-- DYNAMISCHE kenmerk_key (meetwaarde)
|
||
-- Key van de meting, setpoint of alarm, die op slimme manier runtime hieronder wordt bepaald adhv de waarde van INS_KENMERK_LOCATIEKOLOM
|
||
v_ins_kenmerk_key_dyn NUMBER (10);
|
||
|
||
|
||
CURSOR c_kpi_energie
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_kpi_energie k;
|
||
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
|
||
v_aanduiding := '';
|
||
|
||
SELECT SYSDATE
|
||
INTO v_nu
|
||
FROM dual;
|
||
|
||
|
||
-- Alle kpi-energie verwerken...
|
||
FOR rec_kpi_energie IN c_kpi_energie
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen ENERGIE object obv OPC-label [' || rec_kpi_energie.ins_deel_omschrijving || ']';
|
||
|
||
-- Bepalen van het object ins_deel adhv het UNIEKE! OPC-label. OPC-label staat in 1 van de 3 kenmerken (defintitie op discipline-nivo) bij het object zijn geregistreerd.
|
||
-- Behalve ins_deel_key wordt ook bijbehorende STATISCHE ins_kenmerk_key opgeleverd (wie van de 3 is dan bekend).
|
||
-- Als die niet kan worden gevonden, dat wordt de betreffende waarde (meting, setpoint of alarm) NIET geregistreerd, en wordt gelogd
|
||
|
||
|
||
SELECT ins_deel_key, INS_KENMERK_KEY
|
||
INTO v_ins_deel_key, v_ins_kenmerk_key_opc
|
||
FROM ins_kenmerkdeel kd
|
||
WHERE KD.INS_KENMERKDEEL_WAARDE = rec_kpi_energie.ins_deel_omschrijving
|
||
and KD.INS_KENMERK_KEY IN (c_ins_kenmerk_key_opc_meting, c_ins_kenmerk_key_opc_setpoint, c_ins_kenmerk_key_opc_alarm)
|
||
and KD.INS_KENMERKDEEL_VERWIJDER IS NULL;
|
||
|
||
-- Daarna wordt adhv de STATISCHE kenmerk_key de DYNAMISCHE ins_kenmerk_key (die van de bijbehorende meetwaarde) bepaald.
|
||
-- Enigzins getruukt, maar wel goed, via de locatiekolom, die een verwijzing naar de statische kenmerk bevat.
|
||
-- Zo is bekend welke STATISCHE KEY bij welke DYNAMISCHE hoort.
|
||
|
||
v_errorhint := 'Fout bij bepalen van meetwaarde kenmerk bij object obv OPC-label [' || rec_kpi_energie.ins_deel_omschrijving || ' - ' || v_ins_deel_key || ' - ' || v_ins_kenmerk_key_opc || ']';
|
||
SELECT ins_kenmerk_key
|
||
INTO v_ins_kenmerk_key_dyn
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = v_ins_kenmerk_key_opc
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = v_ins_deel_key);
|
||
|
||
v_errorhint := 'Fout bij update van meetwaarde bij object obv OPC-label [' || rec_kpi_energie.ins_deel_omschrijving || ' - ' || v_ins_deel_key || ' - ' || v_ins_kenmerk_key_opc || ']';
|
||
-- De vorige meetwaarde functioneel verwijderen, er is immers een nieuwe (hieronder)
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_verwijder = v_nu
|
||
WHERE ins_kenmerk_key = v_ins_kenmerk_key_dyn
|
||
AND ins_deel_key = v_ins_deel_key
|
||
AND ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij insert nieuwe van meetwaarde bij object obv OPC-label [' || rec_kpi_energie.ins_deel_omschrijving || ' - ' || v_ins_deel_key || ' - ' || v_ins_kenmerk_key_opc || ']';
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT v_ins_deel_key, v_ins_kenmerk_key_dyn, rec_kpi_energie.ins_deel_meetwaarde FROM DUAL;
|
||
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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',
|
||
'KPI ENERGIE: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI ENERGIE: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
|
||
|
||
END arai_update_kpi_energie_items;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_kpi_halbezetting (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
v_ins_deel_key NUMBER (10);
|
||
c_ins_kenmerk_key_halbezet NUMBER (10) := 64;
|
||
v_aantal NUMBER (10);
|
||
v_nu DATE;
|
||
|
||
CURSOR c_kpi_halbezet
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_kpi_energie k;
|
||
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
v_aanduiding := '';
|
||
|
||
SELECT SYSDATE
|
||
INTO v_nu
|
||
FROM dual;
|
||
|
||
-- Alle kpi-energie verwerken...
|
||
FOR rec_halbezet IN c_kpi_halbezet
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen BEZETTING object obv OPC-label [' || rec_halbezet.ins_deel_omschrijving || ']';
|
||
|
||
-- Bepalen van het object ins_deel adhv het UNIEKE! OPC-label als objectomschrijving
|
||
-- Behalve ins_deel_key wordt ook bijbehorende STATISCHE ins_kenmerk_key opgeleverd (wie van de 3 is dan bekend).
|
||
-- Als die niet kan worden gevonden, dat wordt de betreffende waarde (meting, setpoint of alarm) NIET geregistreerd, en wordt gelogd
|
||
|
||
|
||
SELECT ins_deel_key
|
||
INTO v_ins_deel_key
|
||
FROM ins_deel d
|
||
WHERE ins_deel_omschrijving = rec_halbezet.ins_deel_omschrijving
|
||
AND D.INS_DEEL_VERWIJDER IS NULL;
|
||
|
||
-- Daarna wordt adhv de STATISCHE kenmerk_key de DYNAMISCHE ins_kenmerk_key (die van de bijbehorende meetwaarde) bepaald.
|
||
-- Enigzins getruukt, maar wel goed, via de locatiekolom, die een verwijzing naar de statische kenmerk bevat.
|
||
-- Zo is bekend welke STATISCHE KEY bij welke DYNAMISCHE hoort.
|
||
|
||
|
||
|
||
v_errorhint := 'Fout bij bepalen of meetwaarde halbezetting bij object ' || rec_halbezet.ins_deel_omschrijving || ' - ' || v_ins_deel_key || ' (registratie van vandaag is al gebeurd).';
|
||
|
||
--SELECT COUNT(*)
|
||
--INTO v_aantal
|
||
--FROM ins_kenmerkdeel
|
||
--WHERE ins_deel_key = v_ins_deel_key
|
||
--AND ins_kenmerk_key = c_ins_kenmerk_key_halbezet
|
||
--AND TRUNC(ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE);
|
||
-- Voorheen was het eenmaal per dag, nu gewoon elke 10 minuten oid
|
||
v_aantal := 0;
|
||
IF (v_aantal = 0)
|
||
THEN
|
||
BEGIN
|
||
|
||
v_errorhint := 'Fout bij update van vorige meetwaarde halbezetting bij object ' || rec_halbezet.ins_deel_omschrijving || ' - ' || v_ins_deel_key || '.';
|
||
-- De vorige meetwaarde functioneel verwijderen, er is immers een nieuwe (hieronder)
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_verwijder = v_nu
|
||
WHERE ins_kenmerk_key = c_ins_kenmerk_key_halbezet
|
||
AND ins_deel_key = v_ins_deel_key
|
||
AND ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij insert nieuwe van meetwaarde halbezetting bij object ' || rec_halbezet.ins_deel_omschrijving || ' - ' || v_ins_deel_key || ' (registratie van vandaag is al gebeurd).';
|
||
|
||
-- MB: ITT wat Coneco aangeeft dat hier alleen een waarde 1 of 2 worden gebruikt, zie ik alleen de waarden 0.1 en 0.2
|
||
-- In de nieuwste definitie staat hier 1.0 (= niet verhuurd oftewel leeg) of 2.0 (=wel verhuurd, bezet).
|
||
|
||
|
||
IF rec_halbezet.ins_deel_meetwaarde = 1.0
|
||
THEN
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT v_ins_deel_key, c_ins_kenmerk_key_halbezet, 0 FROM DUAL;
|
||
ELSE
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT v_ins_deel_key, c_ins_kenmerk_key_halbezet, 1 FROM DUAL;
|
||
END IF;
|
||
|
||
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;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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',
|
||
'KPI HALBEZETTING: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI HALBEZETTING: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END arai_update_kpi_halbezetting;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_kpi_energie (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
arai_update_kpi_energie_items(p_import_key);
|
||
arai_update_kpi_halbezetting(p_import_key);
|
||
END arai_update_kpi_energie;
|
||
/
|
||
|
||
---
|
||
-- ins_kenmerk_key = 64 is de kenmerk-key van de 'meetwaarde' ruimte bezet (ja / nee).
|
||
-- Extra aanscherping: object moet van objectsoort 'detectie ruimtebezet' (srtdeel_key=65) zijn.
|
||
-- kd is kenmerkdeel met meetwaarden (zaal bezet ja of nee): ins_kenmerk_key = 64
|
||
-- kd2 is Optioneel: (+) kenmerkdeel met de groepnaam (tbv RTM Energie welke zalen op 1 regel (groep) komen te staan): ins_kenmerk_key = 81
|
||
-- kd3 is Optioneel: (+) kenmerkdeel met de ruimtenaam (tbv RTM Energie, kan de standaard ruimteomschr. daarmee overrulen) : ins_kenmerk_key = 82
|
||
CREATE OR REPLACE VIEW arai_v_hall_bezetting
|
||
(alg_gebouw_key,
|
||
alg_gebouw_naam,
|
||
alg_verdieping_key,
|
||
alg_ruimte_key,
|
||
alg_ruimte_omschrijving,
|
||
ruimtegroep,
|
||
ins_kenmerkdeel_waarde,
|
||
ins_kenmerkdeel_aanmaak
|
||
)
|
||
AS
|
||
SELECT g.alg_gebouw_key,
|
||
g.alg_gebouw_naam,
|
||
v.alg_verdieping_key,
|
||
r.alg_ruimte_key,
|
||
COALESCE(kd3.ins_kenmerkdeel_waarde,r.alg_ruimte_omschrijving),
|
||
kd2.ins_kenmerkdeel_waarde,
|
||
kd.ins_kenmerkdeel_waarde,
|
||
kd.ins_kenmerkdeel_aanmaak
|
||
FROM ins_kenmerkdeel kd, ins_deel d, alg_ruimte r, alg_verdieping v, alg_gebouw g, ins_kenmerkdeel kd2, ins_kenmerkdeel kd3
|
||
WHERE kd.ins_kenmerk_key = 64
|
||
AND TRUNC(kd.ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
AND d.ins_srtdeel_key = 65
|
||
AND kd.ins_kenmerkdeel_verwijder IS NULL
|
||
AND d.ins_deel_key =kd.ins_deel_key
|
||
AND D.INS_ALG_RUIMTE_TYPE = 'R'
|
||
AND r.alg_ruimte_key = D.INS_ALG_RUIMTE_KEY
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND kd2.ins_kenmerk_key(+) = 81
|
||
AND d.ins_deel_key =kd2.ins_deel_key (+)
|
||
AND kd2.ins_kenmerkdeel_verwijder (+) IS NULL
|
||
AND kd3.ins_kenmerk_key(+) = 82
|
||
AND d.ins_deel_key =kd3.ins_deel_key (+)
|
||
AND kd3.ins_kenmerkdeel_verwijder (+) IS NULL;
|
||
|
||
|
||
---
|
||
-- Eerst wat algemene energie-views, als BASIS voor de energie-grafieken
|
||
-- Let op!! Belangrijk: de K.INS_KENMERK_LOCATIEKOLOM = 61, 62 en 63 zijn de ins_kenmerk_key van de bijbehorende OPC-id's.
|
||
-- Die worden elders gebruikt in c_ins_kenmerk_key_opc_meting, c_ins_kenmerk_key_opc_setpoint en c_ins_kenmerk_key_opc_alarm
|
||
--
|
||
-- Verder van belang: SG.INS_DISCIPLINE_KEY = 281 (de key die de discipline energie gaat krijgen).
|
||
---
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_meting_nu
|
||
AS
|
||
SELECT sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
d.ins_deel_x,
|
||
v.ins_kenmerkdeel_waarde verbruik,
|
||
v.ins_kenmerkdeel_aanmaak,
|
||
v.ins_kenmerkdeel_verwijder
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel v
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND v.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 61
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND v.ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_setpoint_nu
|
||
AS
|
||
SELECT sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
s.ins_kenmerkdeel_waarde setpoint
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel s
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND s.ins_deel_key = d.ins_deel_key
|
||
AND s.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 62
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND s.ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_kleur_nu
|
||
AS
|
||
SELECT sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
k.ins_kenmerkdeel_waarde kleur
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel k
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND k.ins_deel_key = d.ins_deel_key
|
||
AND k.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 63
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND k.ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_verbruik_nu
|
||
AS
|
||
SELECT v.ins_srtgroep_key,
|
||
v.ins_srtgroep_omschrijving,
|
||
v.ins_srtdeel_key,
|
||
v.ins_srtdeel_omschrijving,
|
||
v.ins_deel_key,
|
||
v.ins_deel_omschrijving,
|
||
v.verbruik,
|
||
s.setpoint,
|
||
k.kleur,
|
||
v.ins_kenmerkdeel_aanmaak,
|
||
v.ins_kenmerkdeel_verwijder,
|
||
COALESCE(v.ins_deel_x,1) as volgorde
|
||
FROM arai_v_energie_meting_nu v, arai_v_energie_setpoint_nu s, arai_v_energie_kleur_nu k
|
||
WHERE v.ins_deel_key = s.ins_deel_key(+)
|
||
AND v.ins_deel_key = k.ins_deel_key(+);
|
||
|
||
|
||
|
||
-- Let op!! Belangrijk: de K.INS_KENMERK_LOCATIEKOLOM = 61, 62 en 63 zijn de ins_kenmerk_key van de bijbehorende OPC-id's.
|
||
-- Die worden elders gebruikt in c_ins_kenmerk_key_opc_meting, c_ins_kenmerk_key_opc_setpoint en c_ins_kenmerk_key_opc_alarm
|
||
-- Verder van belang: SG.INS_DISCIPLINE_KEY = 281 (de key die de discipline energie gaat krijgen).
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_verbruik_histry
|
||
AS
|
||
SELECT sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
v.ins_kenmerkdeel_waarde verbruik,
|
||
s.ins_kenmerkdeel_waarde setpoint,
|
||
k.ins_kenmerkdeel_waarde kleur,
|
||
v.ins_kenmerkdeel_aanmaak,
|
||
v.ins_kenmerkdeel_verwijder
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel v, ins_kenmerkdeel s, ins_kenmerkdeel k
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND v.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 61
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND s.ins_deel_key = d.ins_deel_key
|
||
AND s.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 62
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND v.ins_kenmerkdeel_aanmaak = s.ins_kenmerkdeel_aanmaak
|
||
AND k.ins_deel_key = d.ins_deel_key
|
||
AND k.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 63
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND v.ins_kenmerkdeel_aanmaak = k.ins_kenmerkdeel_aanmaak;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_verbruik_today
|
||
AS
|
||
SELECT sg.ins_srtgroep_key,
|
||
sg.ins_srtgroep_omschrijving,
|
||
sd.ins_srtdeel_key,
|
||
sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
v.ins_kenmerkdeel_waarde verbruik,
|
||
v.ins_kenmerkdeel_aanmaak,
|
||
v.ins_kenmerkdeel_verwijder
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel v
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND v.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 61
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND TRUNC(v.ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE);
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_energie_verbruik_today
|
||
(ins_deel_key, ins_deel_omschrijving, verbruik, ins_kenmerkdeel_aanmaak)
|
||
AS
|
||
SELECT d.ins_deel_key,
|
||
MIN(d.ins_deel_omschrijving),
|
||
ROUND(AVG(fac.safe_to_number(COALESCE(v.ins_kenmerkdeel_waarde,'0'))),1),
|
||
TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24')
|
||
FROM ins_srtgroep sg, ins_srtdeel sd, ins_deel d, ins_kenmerkdeel v
|
||
WHERE SG.INS_DISCIPLINE_KEY = 281
|
||
and SD.INS_SRTGROEP_KEY = SG.INS_SRTGROEP_KEY
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND v.ins_deel_key = d.ins_deel_key
|
||
AND v.ins_kenmerk_key = (
|
||
SELECT ins_kenmerk_key
|
||
FROM ins_kenmerk k
|
||
WHERE K.INS_KENMERK_LOCATIEKOLOM = 61
|
||
AND K.INS_KENMERK_MEETWAARDE = 1
|
||
AND K.INS_KENMERK_NIVEAU = 'S'
|
||
AND K.INS_SRTINSTALLATIE_KEY = (SELECT ins_srtdeel_key FROM ins_deel WHERE ins_deel_key = d.ins_deel_key)
|
||
)
|
||
AND TRUNC(v.ins_kenmerkdeel_aanmaak) = TRUNC(SYSDATE)
|
||
GROUP BY d.ins_deel_key, TO_CHAR(ins_kenmerkdeel_aanmaak,'HH24');
|
||
|
||
|
||
|
||
-- Discipline Energie, Soortgroep Water (key = 62)
|
||
CREATE OR REPLACE VIEW arai_v_water_verbruik_nu
|
||
AS SELECT * FROM arai_v_energie_verbruik_nu
|
||
WHERE ins_srtgroep_key = 62
|
||
UNION ALL
|
||
SELECT 62, ' ', 0, ' ', 0, ' ', '0', '0', '1.0', SYSDATE, NULL,0 FROM DUAL
|
||
UNION ALL
|
||
SELECT 62, ' ', 0, ' ', 0, ' ', '0', '0', '1.0', SYSDATE, NULL,99 FROM DUAL;
|
||
|
||
-- Discipline Energie, Soortgroep Warmte (key = 64)
|
||
CREATE OR REPLACE VIEW arai_v_warmte_verbruik_nu
|
||
AS SELECT * FROM arai_v_energie_verbruik_nu
|
||
WHERE ins_srtgroep_key = 64;
|
||
|
||
-- Discipline Energie, Soortgroep Elektra (key = 61)
|
||
CREATE OR REPLACE VIEW arai_v_elektra_verbruik_nu
|
||
AS SELECT * FROM arai_v_energie_verbruik_nu
|
||
WHERE ins_srtgroep_key = 61;
|
||
|
||
----------------------------------------------------------------
|
||
|
||
-- WATER
|
||
-- Grafiek: KPI Energie Waterverbruik per watermeter van nu (max 10 minuten geleden) van alle watermeters
|
||
-- FCLT_YAS_ is de y-as voor groen
|
||
-- FCLT_YAS2_ is de y-as voor rood
|
||
-- FCLT_YAS3_ is de y-as voor oranje
|
||
-- Barchart met 3 kleuren: groen (waterverbruik = okee), oranje (waterverbruik is oranje) en rood (waterverbruik is rood)
|
||
|
||
-- KLEUR: 1.0 =GROEN
|
||
-- 3.0 =ORANJE
|
||
-- 7.0 =ROOD
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_water_nu
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_YAS3_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 1.0 THEN fac.safe_to_number(verbruik)
|
||
ELSE CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(setpoint)
|
||
ELSE 0
|
||
END
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 7.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 3.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
'appl/ins/ins_deel.asp?urole=fe' || '&' || 'ins_key=' || ins_deel_key,
|
||
volgorde
|
||
FROM arai_v_water_verbruik_nu;
|
||
|
||
|
||
-- Verbruik van vandaag vanaf maximaal 12 uur geleden.
|
||
CREATE OR REPLACE VIEW arai_v_graph_water_today
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
ins_kenmerkdeel_aanmaak,
|
||
verbruik,
|
||
''
|
||
FROM arai_v_energie_verbruik_today
|
||
WHERE ins_deel_key = 241
|
||
AND ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')));
|
||
|
||
|
||
|
||
-- ELEKTRA
|
||
-- Grafiek: KPI Energie Elektraverbruik per elektrameter van nu (max 10 minuten geleden):
|
||
-- ins_deel_key inkoop = 243
|
||
-- ins_deel_key wkk = 244
|
||
-- ins_deel_key pv = 339 NIET, die gaat in een aparte grafiek (uitdukken in kW)
|
||
-- ins_deel_key totaal = 245
|
||
|
||
-- YAS voor groen
|
||
-- YAS2 voor rood
|
||
-- YAS3 voor oranje
|
||
-- Barchart met 3 kleuren: groen (verbruik = okee), oranje (verbruik is oranje) en rood (verbruik is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_elektra_nu
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_YAS3_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
CASE
|
||
WHEN COALESCE(fac.safe_to_number(kleur),1.0) = 1.0 THEN fac.safe_to_number(verbruik)
|
||
ELSE CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(setpoint)
|
||
ELSE 0
|
||
END
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 7.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 3.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
'appl/ins/ins_deel.asp?urole=fe' || '&' || 'ins_key=' || ins_deel_key,
|
||
volgorde
|
||
FROM arai_v_elektra_verbruik_nu
|
||
WHERE ins_deel_key IN (243, 244, 245);
|
||
|
||
|
||
-- MBMB: Check of de ins_deel_key's hieronder okee zijn:
|
||
-- ins_deel_key inkoop = 243
|
||
-- ins_deel_key wkk = 244
|
||
-- ins_deel_key pv = 339 NIET, die gaat in een aparte grafiek (uitdukken in kW)
|
||
-- ins_deel_key totaal = 245
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_electra_today
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_INKOOP,
|
||
FCLT_YAS2_WKK,
|
||
FCLT_YAS3_TOTAAL,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT totaal.ins_deel_key,
|
||
totaal.ins_kenmerkdeel_aanmaak,
|
||
inkoop.verbruik,
|
||
wkk.verbruik,
|
||
totaal.verbruik,
|
||
''
|
||
FROM arai_v_energie_verbruik_today inkoop, arai_v_energie_verbruik_today wkk, arai_v_energie_verbruik_today totaal
|
||
WHERE inkoop.ins_deel_key = 243
|
||
AND inkoop.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND wkk.ins_deel_key = 244
|
||
AND wkk.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND totaal.ins_deel_key = 245
|
||
AND totaal.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND inkoop.ins_kenmerkdeel_aanmaak = wkk.ins_kenmerkdeel_aanmaak
|
||
AND wkk.ins_kenmerkdeel_aanmaak = totaal.ins_kenmerkdeel_aanmaak;
|
||
|
||
|
||
-- ELEKTRA
|
||
-- Grafiek: KPI Zonne-energie van nu (max 10 minuten geleden)
|
||
-- YAS voor groen
|
||
-- ins_deel_key pv = 339 (uitdukken in kW)
|
||
-- Barchart met 1 kleur: groen.
|
||
CREATE OR REPLACE VIEW arai_v_graph_zon_nu
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
fac.safe_to_number(verbruik),
|
||
'appl/ins/ins_deel.asp?urole=fe' || '&' || 'ins_key=' || ins_deel_key,
|
||
volgorde
|
||
FROM arai_v_elektra_verbruik_nu
|
||
WHERE ins_deel_key IN (339)
|
||
UNION ALL
|
||
SELECT 0, ' ', 0, ' ', 0 FROM DUAL
|
||
UNION ALL
|
||
SELECT 0, ' ', 0, ' ', 99 FROM DUAL;
|
||
|
||
-- MBMB: Check of de ins_deel_key's hieronder okee zijn:
|
||
-- ins_deel_key pv = 339
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_zon_today
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT pv.ins_deel_key,
|
||
pv.ins_kenmerkdeel_aanmaak,
|
||
pv.verbruik,
|
||
''
|
||
FROM arai_v_energie_verbruik_today pv
|
||
WHERE pv.ins_deel_key = 339
|
||
AND pv.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')));
|
||
|
||
|
||
|
||
|
||
|
||
-- WARMTE
|
||
-- Grafiek: KPI Energie Warmteverbruik per warmtemeter van nu (max 10 minuten geleden)
|
||
-- YAS voor groen
|
||
-- YAS2 voor rood
|
||
-- YAS3 voor oranje
|
||
-- Barchart met 3 kleuren: groen (verbruik = okee), oranje (verbruik is oranje) en rood (verbruik is rood)
|
||
CREATE OR REPLACE VIEW arai_v_graph_warmte_nu
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_,
|
||
FCLT_YAS2_,
|
||
FCLT_YAS3_,
|
||
FCLT_URL,
|
||
VOLGORDE
|
||
)
|
||
AS
|
||
SELECT ins_deel_key,
|
||
ins_deel_omschrijving,
|
||
CASE
|
||
WHEN COALESCE(fac.safe_to_number(kleur),1.0) = 1.0 THEN fac.safe_to_number(verbruik)
|
||
ELSE CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(setpoint)
|
||
ELSE 0
|
||
END
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 7.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
CASE
|
||
WHEN fac.safe_to_number(kleur) = 3.0
|
||
THEN CASE
|
||
WHEN fac.safe_to_number(verbruik) > fac.safe_to_number(setpoint) THEN fac.safe_to_number(verbruik) - fac.safe_to_number(setpoint)
|
||
ELSE fac.safe_to_number(verbruik)
|
||
END
|
||
ELSE 0
|
||
END,
|
||
'appl/ins/ins_deel.asp?urole=fe' || '&' || 'ins_key=' || ins_deel_key,
|
||
volgorde
|
||
FROM arai_v_warmte_verbruik_nu;
|
||
|
||
|
||
-- MBMB: Check of de ins_deel_key's hieronder okee zijn:
|
||
-- ins_deel_key gas = 242
|
||
-- ins_deel_key stadw = 246
|
||
-- ins_deel_key wkk = 337
|
||
-- ins_deel_key totaal = 338
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_warmte_today
|
||
(
|
||
fclt_key,
|
||
FCLT_XAS_,
|
||
FCLT_YAS_GAS,
|
||
FCLT_YAS2_STADW,
|
||
FCLT_YAS3_WKK,
|
||
FCLT_YAS4_TOTAAL,
|
||
FCLT_URL
|
||
)
|
||
AS
|
||
SELECT totaal.ins_deel_key,
|
||
totaal.ins_kenmerkdeel_aanmaak,
|
||
gas.verbruik,
|
||
stadw.verbruik,
|
||
wkk.verbruik,
|
||
totaal.verbruik,
|
||
''
|
||
FROM arai_v_energie_verbruik_today gas, arai_v_energie_verbruik_today stadw, arai_v_energie_verbruik_today wkk, arai_v_energie_verbruik_today totaal
|
||
WHERE gas.ins_deel_key = 242
|
||
AND gas.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND stadw.ins_deel_key = 246
|
||
AND gas.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND wkk.ins_deel_key = 337
|
||
AND wkk.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND totaal.ins_deel_key = 338
|
||
AND totaal.ins_kenmerkdeel_aanmaak >= GREATEST('00', TRIM(TO_CHAR(TO_CHAR(SYSDATE,'HH24') - 12,'00')))
|
||
AND gas.ins_kenmerkdeel_aanmaak = stadw.ins_kenmerkdeel_aanmaak
|
||
AND stadw.ins_kenmerkdeel_aanmaak = wkk.ins_kenmerkdeel_aanmaak
|
||
AND wkk.ins_kenmerkdeel_aanmaak = totaal.ins_kenmerkdeel_aanmaak;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- Import KPI ICT MITEL Import KPI ICT MITEL Import KPI ICT MITEL Import KPI ICT MITEL Import KPI ICT MITEL --
|
||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_notify_kpi_ict_mitel
|
||
(
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
|
||
-- fac_usrtab_key = 21 is de tabel '$KPI_NOTIFY': SYSTEM TABEL: KEEP OUT!
|
||
-- SYNTAX code = KPI_<kpi-naam>_<mail-of-sms>, dus b.v. 'KPI_TEMP_MAIL', 'KPI_ICT_MITEL_MAIL', 'KPI_TEMP_SMS', 'KPI_ICT_MITEL_SMS',
|
||
-- Met volgnr = 1 wordt aangegeven dat het een actieve notificatie is, lege waarde of 0 (of iets anders) is inactief cq. tijdelijk uitgezet.
|
||
|
||
|
||
CURSOR c_kpi_ict_notify_mail_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_ICT_MITEL_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_ict_notify_mail_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_ict_notify_sms_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_ICT_MITEL_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
CURSOR c_kpi_ict_notify_sms_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_ict_mitel
|
||
IS
|
||
SELECT ins_deel_key, ins_kenmerkdeel_waarde, kpi_color_overrule,
|
||
CASE
|
||
WHEN kpi_color_overrule IS NOT NULL THEN kpi_color_overrule
|
||
WHEN ins_kenmerkdeel_waarde IS NULL THEN -1
|
||
WHEN ins_kenmerkdeel_waarde >= waarde_rood THEN 2
|
||
WHEN ins_kenmerkdeel_waarde >= waarde_oranje THEN 1
|
||
ELSE 0
|
||
END kpi_ict_mitel
|
||
FROM arai_v_kpi_ict_mitel
|
||
WHERE ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
-- Alleen notificeren gedurende de "openingsdatums" en "openingstijden" van de KPI.
|
||
-- Openingsdatums worden bepaald door settings KPI_ALL_DATUM1 en KPI_ALL_DATUM2 (b.v. 06-09-2012 en 11-09-2012)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingsdatums oneindig (levert altijd OKEE op).
|
||
-- Openingstijden worden bepaald door settings KPI_ICT_MITEL_TIME1 en KPI_ICT_MITEL_TIME2 (b.v. 08:00 en 17:00)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingstijden van 0:00 t/m 23:59 (24 uurs)
|
||
CURSOR c_kpi_notify_during_opening
|
||
IS
|
||
SELECT
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) <= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) >= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') <= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ICT_MITEL_TIME1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_tijd,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') >= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ICT_MITEL_TIME2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_tijd
|
||
FROM DUAL;
|
||
|
||
|
||
BEGIN
|
||
|
||
|
||
FOR rec_open IN c_kpi_notify_during_opening
|
||
LOOP
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
|
||
IF rec_open.min_datum = 1 AND rec_open.max_datum = 1 AND rec_open.min_tijd = 1 AND rec_open.max_tijd = 1
|
||
THEN
|
||
-- De sysdate ligt tussen zowel de openingstijd als sluitingstijd van de KPI, dus we kunnen gaan notificeren...
|
||
|
||
|
||
FOR rec_kpi_ict_mitel IN c_kpi_ict_mitel
|
||
LOOP
|
||
BEGIN
|
||
-- Als ORANJE (1) of ROOD (2), dan notificeren, anders niet (uiteraard)
|
||
IF rec_kpi_ict_mitel.kpi_ict_mitel = 1 OR rec_kpi_ict_mitel.kpi_ict_mitel = 2
|
||
THEN
|
||
|
||
IF rec_kpi_ict_mitel.kpi_ict_mitel = 1
|
||
THEN
|
||
-- Code ORANJE voor KPI ICT MITEL
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM...
|
||
|
||
-- Maar ALLEEN indien er GEEN handmatige OVERRULE kleur is ingesteld
|
||
|
||
IF rec_kpi_ict_mitel.kpi_color_overrule IS NULL
|
||
THEN
|
||
-- Vanuit Mitel, dus geen handmatige ingestelde kleur hier...
|
||
|
||
v_errorhint := 'Alarm ORANJE: Gemiddelde wachttijd ICT Telefooncentrale ' || rec_kpi_ict_mitel.ins_kenmerkdeel_waarde || ' seconden.';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Dan nog sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. En sms-en naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
ELSE
|
||
-- De KPI KLEUR is handmatig (danwel door de 1e ROOD via MITEL) ingesteld, en OVERRULED het systeem MITEL en dus ook GEEN notifificaties...
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := 'Geen notificatie: KPI ICT Mitel is handmatig ingesteld' ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
|
||
END IF;
|
||
ELSE
|
||
-- Code ROOD voor KPI ICT MITEL
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
-- Maar ALLEEN indien er GEEN handmatige OVERRULE kleur is ingesteld
|
||
|
||
IF rec_kpi_ict_mitel.kpi_color_overrule IS NULL
|
||
THEN
|
||
-- Vanuit Mitel, dus geen handmatige ingestelde kleur hier...
|
||
|
||
-- Eerst maar DIRECT de overrule instellen, dan hebbe we die gehad.
|
||
-- RAI wil graag in geval van ROOD dat die op ROOD blijft, ook al vertelt MITEL dat de wachttijd alweer oplaag is
|
||
-- Dat heeft te maken met ALGEMEN aankondiging, en daardoor afname van telefoonwachtrij, terwijl het ICT probleem niet is opgelost.
|
||
-- MB vind dit een kronkel: is eigenlijkj een andere KPI. Maar RAI wil zo, dus geschiedde het...
|
||
|
||
-- kd.ins_kenmerk_key = 41 is de key van kenmerk Overrule Kleur bij telefooncentrale
|
||
DELETE FROM ins_kenmerkdeel kd
|
||
WHERE kd.ins_deel_key = rec_kpi_ict_mitel.ins_deel_key AND kd.ins_kenmerk_key = 41;
|
||
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT rec_kpi_ict_mitel.ins_deel_key , 41,
|
||
(SELECT fac_usrdata_key FROM fac_usrdata WHERE fac_usrdata_code = 'KPI_ROOD' and fac_usrdata_verwijder IS NULL) FROM DUAL;
|
||
|
||
|
||
v_errorhint := 'Alarm ROOD: Gemiddelde wachttijd ICT Telefooncentrale: ' || rec_kpi_ict_mitel.ins_kenmerkdeel_waarde || ' seconden.';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_ict_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
-- Loggen
|
||
v_aanduiding := 'Bestemd voor ' || rec_kpi_noti.fac_usrdata_omschr ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
ELSE
|
||
-- De KPI KLEUR is handmatig (danwel door de 1e ROOD via MITEL) ingesteld, en OVERRULED het systeem MITEL en dus ook GEEN notifificaties...
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := 'Geen notificatie: KPI ICT Mitel is handmatig ingesteld' ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
|
||
END IF;
|
||
|
||
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;
|
||
ELSE
|
||
-- De sysdate ligt buiten de openingstijd en sluitingstijd van de KPI, dus GEEN notificeren...
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := 'Geen notificatie: tijd ligt buiten de KPI tijden' ;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
END IF;
|
||
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (arai_notify_kpi_ict_mitel error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
|
||
|
||
END arai_notify_kpi_ict_mitel;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_kpi_ict_mitel (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
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_wachtrij_id VARCHAR2 (256);
|
||
v_aantal_wachtenden VARCHAR2 (256);
|
||
v_aantal_agents VARCHAR2 (256);
|
||
-- Gemiddelde wachttijd in seconden
|
||
v_gemiddelde_wachttijd VARCHAR2 (256);
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM arai_imp_kpi_ict_mitel;
|
||
|
||
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
|
||
|
||
|
||
-- Wachtrij-ID, aantal wachtenden, aantal agents en gemiddelde-wachttijd van de telefooncentrale
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_wachtrij_id);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_aantal_wachtenden);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_aantal_agents);
|
||
fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_gemiddelde_wachttijd);
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_wachtrij_id
|
||
|| '|'
|
||
|| v_aantal_wachtenden
|
||
|| '|'
|
||
|| v_aantal_agents
|
||
|| '|'
|
||
|| v_gemiddelde_wachttijd
|
||
|| '] ';
|
||
|
||
-- 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_wachtrij_id) = 'WACHTRIJ_ID'
|
||
AND UPPER (v_aantal_wachtenden) = 'AANTAL_WACHTENDEN'
|
||
AND UPPER (v_aantal_agents) = 'AANTAL_AGENTS'
|
||
AND UPPER (v_gemiddelde_wachttijd) = 'GEMIDDELDE_WACHTTIJD'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige objectnaam / installatiecode';
|
||
v_wachtrij_id := TRIM (v_wachtrij_id);
|
||
|
||
IF (v_wachtrij_id IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_wachtrij_id) > 60
|
||
THEN
|
||
v_wachtrij_id := SUBSTR (v_wachtrij_id, 1, 60);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Objectnaam te lang', 'Objectnaam wordt afgebroken tot [' || v_wachtrij_id || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Objectnaam niet gevuld', 'Objectnaam is verplicht');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige meetwaarde';
|
||
v_aantal_wachtenden := TRIM (v_aantal_wachtenden);
|
||
|
||
IF (v_aantal_wachtenden IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_aantal_wachtenden) > 10
|
||
THEN
|
||
v_aantal_wachtenden := SUBSTR (v_aantal_wachtenden, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Aantal wachtenden te lang', 'Aantal wachtenden wordt afgebroken tot [' || v_aantal_wachtenden || ']' );
|
||
END IF;
|
||
ELSE
|
||
--Is wel geldig, maar wel ff loggen...
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Aantal wachtenden niet gevuld', 'Aantal wachtenden wordt niet gergeistreerd');
|
||
-- v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Aantal agents ongeldig';
|
||
v_aantal_agents := TRIM (v_aantal_agents);
|
||
IF (v_aantal_agents IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_aantal_agents) > 10
|
||
THEN
|
||
v_aantal_agents := SUBSTR (v_aantal_agents, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'OPC label te lang', 'Label wordt afgebroken tot [' || v_aantal_agents || ']' );
|
||
END IF;
|
||
ELSE
|
||
--Is wel geldig, maar wel ff loggen...
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Aantal agents is niet gevuld', 'Aantal agents wordt niet geregistreerd');
|
||
-- v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige (gemiddelde) wachttijd';
|
||
v_gemiddelde_wachttijd := TRIM (v_gemiddelde_wachttijd);
|
||
|
||
IF (v_gemiddelde_wachttijd IS NOT NULL)
|
||
THEN
|
||
IF LENGTH (v_gemiddelde_wachttijd) > 10
|
||
THEN
|
||
v_gemiddelde_wachttijd := SUBSTR (v_gemiddelde_wachttijd, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Wachttijd te lang', 'Wachttijd wordt afgebroken tot [' || v_gemiddelde_wachttijd || ']' );
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Gemiddelde wachttijd is niet gevuld', 'Gemiddelde wachttijd is verplicht');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel arai_imp_kpi_ict_mitel';
|
||
|
||
INSERT INTO arai_imp_kpi_ict_mitel (wachtrij_id,aantal_wachtenden,aantal_agents, gemiddelde_wachttijd)
|
||
VALUES (v_wachtrij_id,v_aantal_wachtenden,v_aantal_agents, v_gemiddelde_wachttijd);
|
||
|
||
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',
|
||
'KPI: aantal ingelezen regels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
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 arai_import_kpi_ict_mitel;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_kpi_ict_mitel (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
c_ins_srtgroep_key_mitel NUMBER (10) := 41;
|
||
c_ins_kenmerk_key_mitel NUMBER (10) := 21;
|
||
|
||
v_ins_deel_key NUMBER (10);
|
||
|
||
|
||
-- Alle kpi_wachtijen van Mitel telefooncentrale
|
||
CURSOR c_kpi_ict_mitel
|
||
IS
|
||
SELECT *
|
||
FROM arai_imp_kpi_ict_mitel k;
|
||
-- WHERE k.ins_deel_omschrijving like '%TT%';
|
||
-- AND k.ins_deel_opclabel like '%MET%';
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
|
||
v_aanduiding := '';
|
||
|
||
|
||
-- Alle kpi-wachtrijen verwerken...
|
||
FOR rec_kpi_ict_mitel IN c_kpi_ict_mitel
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errorhint := 'Fout bij bepalen object [' || rec_kpi_ict_mitel.wachtrij_id || ']';
|
||
|
||
-- NB sd.ins_srtgroep_key = 41 is de groep van allemaal telefooncentrale-wachtrij-objecten;
|
||
-- Let op: binnen de srtgroep moet de naam/code/id van het wachtrij-object wel UNIEK zijn!!!
|
||
SELECT d.ins_deel_key
|
||
INTO v_ins_deel_key
|
||
FROM ins_deel d, ins_srtdeel sd
|
||
WHERE d.ins_deel_verwijder IS NULL
|
||
AND UPPER (d.ins_deel_omschrijving) = UPPER (rec_kpi_ict_mitel.wachtrij_id)
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = c_ins_srtgroep_key_mitel;
|
||
|
||
-- Max 1 record wordt bijgewerkt, namelijk het kenmerk wachtrij van het betreffende object wordt functioneel verwijderd.
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_verwijder = SYSDATE
|
||
WHERE ins_kenmerk_key = c_ins_kenmerk_key_mitel
|
||
AND ins_deel_key = v_ins_deel_key
|
||
AND ins_kenmerkdeel_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij toevoegen wachtrij bij object [' || rec_kpi_ict_mitel.wachtrij_id || ']';
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
||
SELECT v_ins_deel_key, c_ins_kenmerk_key_mitel, rec_kpi_ict_mitel.gemiddelde_wachttijd FROM DUAL;
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'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;
|
||
|
||
-- Als alle wachtrijen zijn verwerkt, dan checken of er een wachtrij buiten de grenzen valt.
|
||
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'KPI: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
-- Tenslotte nog de notificaties uitsturen, als STAART van de import.
|
||
arai_notify_kpi_ict_mitel(p_import_key);
|
||
|
||
END arai_update_kpi_ict_mitel;
|
||
/
|
||
|
||
|
||
-- Om het HALVE uur de resultaten van het voorgaande halve uur verzamelen, optellen volgens formule en daarop notifceren.
|
||
CREATE OR REPLACE PROCEDURE arai_export_kpi_toilet_noti (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
CURSOR c_kpi_toilet_notify_mail_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_SCHONETOILETTEN_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_toilet_notify_mail_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_toilet_notify_sms_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_SCHONETOILETTEN_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
CURSOR c_kpi_toilet_notify_sms_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_toilet_gebouw
|
||
IS
|
||
SELECT alg_gebouw_key, alg_gebouw_code, alg_gebouw_naam, goed, kpi_status
|
||
FROM arai_v_kpi_toilet_scan_gebouw;
|
||
|
||
-- Alleen notificeren gedurende de "openingsdatums" en "openingstijden" van de KPI.
|
||
-- Openingsdatums worden bepaald door settings KPI_ALL_DATUM1 en KPI_ALL_DATUM2 (b.v. 06-09-2012 en 11-09-2012)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingsdatums oneindig (levert altijd OKEE op).
|
||
-- Openingstijden worden bepaald door settings KPI_ICT_MITEL_TIME1 en KPI_ICT_MITEL_TIME2 (b.v. 08:00 en 17:00)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingstijden van 0:00 t/m 23:59 (24 uurs)
|
||
|
||
CURSOR c_kpi_notify_during_opening
|
||
IS
|
||
SELECT
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) <= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) >= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') <= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_TIME1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_tijd,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') >= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONETOILETTEN_TIME2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_tijd
|
||
FROM DUAL;
|
||
|
||
|
||
BEGIN
|
||
FOR rec_open IN c_kpi_notify_during_opening
|
||
LOOP
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
|
||
IF rec_open.min_datum = 1 AND rec_open.max_datum = 1 AND rec_open.min_tijd = 1 AND rec_open.max_tijd = 1
|
||
THEN
|
||
-- De sysdate ligt tussen zowel de openingstijd als sluitingstijd van de KPI, dus we kunnen gaan notificeren...
|
||
|
||
FOR rec_kpi_toilet IN c_toilet_gebouw
|
||
|
||
LOOP
|
||
BEGIN
|
||
-- Als ORANJE (1) of ROOD (2), dan notificeren, anders niet (uiteraard)
|
||
IF rec_kpi_toilet.kpi_status = 1 OR rec_kpi_toilet.kpi_status = 2
|
||
THEN
|
||
|
||
IF rec_kpi_toilet.kpi_status = 1
|
||
THEN
|
||
-- Code ORANJE voor KPI TOILET
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ORANJE: Toiletten in gebouw ' || rec_kpi_toilet.alg_gebouw_naam || ' is voor ' || rec_kpi_toilet.goed || ' % schoon.';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
ELSE
|
||
-- Code ROOD voor KPI TOILET
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ROOD: Toiletten in gebouw ' || rec_kpi_toilet.alg_gebouw_naam || ' is voor ' || rec_kpi_toilet.goed || ' % schoon.';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_toilet_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
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
|
||
|| ')';
|
||
COMMIT;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
--ELSE
|
||
-- De sysdate ligt buiten de openingstijd en sluitingstijd van de KPI, dus GEEN notificeren...
|
||
--v_errormsg := '';
|
||
--v_errorhint := '';
|
||
--v_aanduiding := 'Geen notificatie: tijd ligt buiten de KPI tijden' ;
|
||
--fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
END IF;
|
||
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
END LOOP;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (arai_export_kpi_toilet_noti error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
COMMIT;
|
||
|
||
END arai_export_kpi_toilet_noti;
|
||
/
|
||
|
||
|
||
|
||
|
||
-- Om het HALVE uur de resultaten van het voorgaande halve uur verzamelen, optellen volgens formule en daarop notifceren.
|
||
CREATE OR REPLACE PROCEDURE arai_export_kpi_schoonstd_noti (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
|
||
CURSOR c_kpi_notify_mail_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_SCHONESTANDS_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_notify_mail_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_MAIL%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_notify_sms_kpi
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'KPI_SCHONESTANDS_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
CURSOR c_kpi_notify_sms_evm
|
||
IS
|
||
SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_code like 'EVM_SMS%'
|
||
AND fac_usrdata_verwijder IS NULL
|
||
AND fac_usrdata_volgnr = 1;
|
||
|
||
|
||
CURSOR c_kpi_schonestand
|
||
IS
|
||
SELECT FCLT_XAS_TIJD, goed, fout, KPI_STATUS
|
||
FROM arai_v_rap_kpi_standschoon;
|
||
|
||
-- Alleen notificeren gedurende de "openingsdatums" en "openingstijden" van de KPI.
|
||
-- Openingsdatums worden bepaald door settings KPI_ALL_DATUM1 en KPI_ALL_DATUM2 (b.v. 06-09-2012 en 11-09-2012)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingsdatums oneindig (levert altijd OKEE op).
|
||
-- Openingstijden worden bepaald door settings KPI_ICT_MITEL_TIME1 en KPI_ICT_MITEL_TIME2 (b.v. 08:00 en 17:00)
|
||
-- Indien deze niet in tabel staan, dan zijn de openingstijden van 0:00 t/m 23:59 (24 uurs)
|
||
|
||
CURSOR c_kpi_notify_during_opening
|
||
IS
|
||
SELECT
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) <= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN TRUNC(to_date(ud.fac_usrdata_omschr,'DD-MM-YYYY')) >= TRUNC(sysdate)
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_ALL_DATUM2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_datum,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') <= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONESTANDS_TIME1'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) min_tijd,
|
||
COALESCE(
|
||
(SELECT
|
||
CASE WHEN to_date(to_char(sysdate,'DD-MM-YYYY') || ' ' || ud.fac_usrdata_omschr,'DD-MM-YYYY HH24:MI') >= sysdate
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
FROM fac_usrdata ud
|
||
WHERE ud.fac_usrtab_key = 21
|
||
AND ud.fac_usrdata_code = 'KPI_SCHONESTANDS_TIME2'
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
), 1) max_tijd
|
||
FROM DUAL;
|
||
|
||
|
||
BEGIN
|
||
FOR rec_open IN c_kpi_notify_during_opening
|
||
LOOP
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
|
||
IF rec_open.min_datum = 1 AND rec_open.max_datum = 1 AND rec_open.min_tijd = 1 AND rec_open.max_tijd = 1
|
||
THEN
|
||
-- De sysdate ligt tussen zowel de openingstijd als sluitingstijd van de KPI, dus we kunnen gaan notificeren...
|
||
|
||
FOR rec_kpi IN c_kpi_schonestand
|
||
|
||
LOOP
|
||
BEGIN
|
||
-- Als ORANJE (1) of ROOD (2), dan notificeren, anders niet (uiteraard)
|
||
IF rec_kpi.kpi_status = 1 OR rec_kpi.kpi_status = 2
|
||
THEN
|
||
|
||
IF rec_kpi.kpi_status = 1
|
||
THEN
|
||
-- Code ORANJE
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ORANJE: Klachten over standschoonmaak. KPI percentage: ' || rec_kpi.goed || ' %';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
ELSE
|
||
-- Code ROOD voor KPI
|
||
-- Mailen naar KPI + EVM, en SMS-en naar KPI en EVM
|
||
|
||
v_errorhint := 'Alarm ROOD: Klachten over standschoonmaak. KPI percentage: ' || rec_kpi.goed || ' %';
|
||
v_errormsg := '';
|
||
|
||
|
||
-- 1.Eerst mailen naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_notify_mail_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 2. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_notify_mail_evm
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_kpi_noti.fac_usrdata_omschr, NULL, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 3.Eerst sms-en naar alle KPI-eigenaren / betrokkenen
|
||
FOR rec_kpi_noti IN c_kpi_notify_sms_kpi
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- 4. Dan mailen naar alle eventmanagers
|
||
FOR rec_kpi_noti IN c_kpi_notify_sms_evm
|
||
LOOP
|
||
BEGIN
|
||
-- SMS-en
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 4, NULL, rec_kpi_noti.fac_usrdata_omschr, 2);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
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
|
||
|| ')';
|
||
COMMIT;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
--ELSE
|
||
-- De sysdate ligt buiten de openingstijd en sluitingstijd van de KPI, dus GEEN notificeren...
|
||
--v_errormsg := '';
|
||
--v_errorhint := '';
|
||
--v_aanduiding := 'Geen notificatie: tijd ligt buiten de KPI tijden' ;
|
||
--fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_errorhint);
|
||
END IF;
|
||
|
||
-- Deze loop is precies 1 record (feitelijk een if-statement)
|
||
END LOOP;
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (arai_export_kpi_schoonstd_noti error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
COMMIT;
|
||
END arai_export_kpi_schoonstd_noti;
|
||
/
|
||
|
||
|
||
|
||
|
||
-- EXPOSANTEN NOTIFICATIE van klachten
|
||
|
||
-- Om de 5 minuten de nieuwe meldingen en meldingen die zijn afgemeld van de voorgaande 5 minuten verzamelen en notificeren.
|
||
-- De exposanten/klachtindiener krijgt van een nieuwe melding een registratiemail en van een opgeloste klacht feedback.
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_export_klacht_noti (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_tracking VARCHAR2 (1000);
|
||
|
||
-- Nieuwe klachten sinds de laatste keer dat er cust01 of cust02 notificatie is getracked, van ins_srtdiscipline_key = 1 is vakgroeptype 'Klachten exposanten'
|
||
|
||
CURSOR c_klacht_new
|
||
IS
|
||
SELECT m.mld_melding_key, km1.mld_kenmerkmelding_waarde exposant_mailadres, REPLACE(REPLACE(km2.mld_kenmerkmelding_waarde ,' ',''),'-','') exposant_telefoon
|
||
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd,
|
||
fac_tracking t, fac_srtnotificatie sn,
|
||
mld_kenmerkmelding km1, mld_kenmerkmelding km2
|
||
WHERE m.mld_melding_key = km1.mld_melding_key (+)
|
||
AND km1.mld_kenmerk_key (+) = 46
|
||
AND m.mld_melding_key = km2.mld_melding_key (+)
|
||
AND km2.mld_kenmerk_key (+) = 45
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_key = 1
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'MLDNEW'
|
||
AND t.fac_tracking_datum > ( SELECT COALESCE(MAX(FAC_TRACKING_DATUM), SYSDATE - 1)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code IN ( 'CUST01', 'CUST02')
|
||
);
|
||
|
||
-- AND t.fac_tracking_datum >= SYSDATE - 1/24/12; Eerder was het sinds de laatste 5 minuten, hierboven verbeterd met sinds laatste notifictaie.
|
||
|
||
|
||
-- Afgemelde klachten van afgelopen 5 minuten: ins_srtdiscipline_key = 1 is vakgroeptype 'Klachten exposanten'
|
||
CURSOR c_klacht_afgemeld
|
||
IS
|
||
SELECT m.mld_melding_key, km1.mld_kenmerkmelding_waarde exposant_mailadres, REPLACE(REPLACE(km2.mld_kenmerkmelding_waarde ,' ',''),'-','') exposant_telefoon
|
||
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd,
|
||
fac_tracking t, fac_srtnotificatie sn,
|
||
mld_kenmerkmelding km1, mld_kenmerkmelding km2
|
||
WHERE m.mld_melding_key = km1.mld_melding_key (+)
|
||
AND km1.mld_kenmerk_key (+) = 46
|
||
AND m.mld_melding_key = km2.mld_melding_key (+)
|
||
AND km2.mld_kenmerk_key (+) = 45
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND sd.ins_srtdiscipline_key = 1
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'MLDAFM'
|
||
AND t.fac_tracking_datum > ( SELECT COALESCE(MAX(FAC_TRACKING_DATUM), SYSDATE - 1)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code IN ( 'CUST01', 'CUST02')
|
||
);
|
||
|
||
-- AND t.fac_tracking_datum >= SYSDATE - 1/24/12; Eerder was het sinds de laatste 5 minuten, hierboven verbeterd met sinds laatste notifictaie.
|
||
|
||
BEGIN
|
||
FOR rec_klacht IN c_klacht_new
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen van nieuwe klacht naar de expostant via CUST01, eventueel ook SMS indien 06nummer via CUST02.
|
||
v_errorhint := 'Uw melding ' || rec_klacht.mld_melding_key || ' is geregistreerd ';
|
||
v_errormsg := '';
|
||
|
||
IF (rec_klacht.exposant_mailadres IS NOT NULL AND INSTR(rec_klacht.exposant_mailadres,'@') > 0)
|
||
THEN
|
||
-- CUST01 = 'Uw melding ##KEY## is geregistereerd' wordt naar exposant gemaild
|
||
fac.putnotificationsrtprio ( NULL, NULL, 'CUST01', rec_klacht.mld_melding_key, 'Your call ##KEY## is registered', NULL, rec_klacht.exposant_mailadres, NULL, NULL, 2, NULL);
|
||
|
||
v_tracking := 'Mail naar exposant ' || rec_klacht.exposant_mailadres || ': ' || v_errorhint;
|
||
fac.trackaction ('CUST01', rec_klacht.mld_melding_key, NULL, NULL, v_tracking);
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- SMS versturen doen we (nog) NIET!
|
||
IF 0 = 1
|
||
THEN
|
||
IF (rec_klacht.exposant_telefoon IS NOT NULL AND SUBSTR(rec_klacht.exposant_telefoon, 1,2) = '06')
|
||
THEN
|
||
-- Het is een mobiel nummer, stuur een SMS
|
||
|
||
-- CUST02 = 'Uw melding ##KEY## is geregistereerd' wordt naar exposant ge-SMSt
|
||
-- Via de meldingstatus wordt in XSL de tekst bepaald
|
||
fac.putnotificationsrtprio ( NULL, NULL, 'CUST02', rec_klacht.mld_melding_key, 'Your call ##KEY## is registered', NULL, NULL, rec_klacht.exposant_telefoon, NULL, 2, NULL);
|
||
|
||
v_tracking := 'SMS naar exposant ' || rec_klacht.exposant_telefoon || ': ' || v_errorhint;
|
||
fac.trackaction ('CUST01', rec_klacht.mld_melding_key, NULL, NULL, v_tracking);
|
||
|
||
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
|
||
|| ')';
|
||
COMMIT;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
-- Mails en SMS versturen voor afgemelde klachten doen we (nog) NIET!
|
||
IF 0 = 1
|
||
THEN
|
||
FOR rec_klacht IN c_klacht_afgemeld
|
||
LOOP
|
||
BEGIN
|
||
-- Mailen van nieuwe klacht naar de expostant via CUST01, eventueel ook SMS indien 06nummer via CUST02.
|
||
v_errorhint := 'Uw melding ' || rec_klacht.mld_melding_key || ' is afgehandeld. ';
|
||
v_errormsg := '';
|
||
|
||
IF (rec_klacht.exposant_mailadres IS NOT NULL AND INSTR(rec_klacht.exposant_mailadres,'@') > 0)
|
||
THEN
|
||
-- CUST01 = 'Uw melding ##KEY## is afgehandeld' wordt naar exposant gemaild
|
||
fac.putnotificationsrtprio ( NULL, NULL, 'CUST01', rec_klacht.mld_melding_key, 'Your call ##KEY## is signed off', NULL, rec_klacht.exposant_mailadres, NULL, NULL, 2, NULL);
|
||
|
||
v_tracking := 'Mail naar exposant ' || rec_klacht.exposant_mailadres || ': ' || v_errorhint;
|
||
fac.trackaction ('CUST02', rec_klacht.mld_melding_key, NULL, NULL, v_tracking);
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- SMS versturen doen we (nog) NIET!
|
||
IF 0 = 1
|
||
THEN
|
||
IF (rec_klacht.exposant_telefoon IS NOT NULL AND SUBSTR(rec_klacht.exposant_telefoon, 1,2) = '06')
|
||
THEN
|
||
-- Het is een mobiel nummer, stuur een SMS
|
||
|
||
-- CUST02 = 'Uw melding ##KEY## is afgehandeld' wordt naar exposant ge-SMSt
|
||
-- Via de meldingstatus wordt in XSL de tekst bepaald.
|
||
fac.putnotificationsrtprio ( NULL, NULL, 'CUST02', rec_klacht.mld_melding_key, 'Your call ##KEY## is signed off', NULL, NULL, rec_klacht.exposant_telefoon, NULL, 2, NULL);
|
||
|
||
v_tracking := 'SMS naar exposant ' || rec_klacht.exposant_mailadres || ': ' || v_errorhint;
|
||
fac.trackaction ('CUST02', rec_klacht.mld_melding_key, NULL, NULL, v_tracking);
|
||
|
||
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
|
||
|| ')';
|
||
COMMIT;
|
||
|
||
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
-- Aangezien alles in het Engels-talig moet worden verstuurd, (en dat dit niet bij de klacht of via een instelling taalafhankelijk is) hierbij ff hard op Engels (EN).
|
||
-- Dit zijn de notificaties van het type CUST01 (mail, niewe melding en afgemelde melding) en CUST02 (sms, nieuwe melding en afgemelde melding)
|
||
UPDATE fac_notificatie n
|
||
SET n.fac_notificatie_lang = 'EN'
|
||
WHERE n.fac_srtnotificatie_key IN (SELECT sn.fac_srtnotificatie_key FROM fac_srtnotificatie sn
|
||
WHERE sn.fac_srtnotificatie_code IN ( 'CUST01', 'CUST02'));
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (arai_export_kpi_schoonstd_noti error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
COMMIT;
|
||
|
||
END arai_export_klacht_noti;
|
||
/
|
||
|
||
-- INVOERDER/BALIE krijgen NOTIFICATIE van klachten DIE binnen 10 minuten afgerond moeten zijn!
|
||
-- Om de 5 minuten de meldingen die NOG niet zijn afgemeld maar binnen 5 to 10 minuten dat wel zouden moeten verzamelen en notificeren.
|
||
-- De invoerder (baliemedewerker) krijgt van deze klacht die op aflopen staat signaleringsmail.
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_export_klacht_5min_klaar (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errorhint2 VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_tracking VARCHAR2 (1000);
|
||
|
||
|
||
-- Klachten die op over 5-10 minuten afgerond/gereed moeten worden gemeld, notificeren naar mailadres de MELDER (BALIE, FRONTOFFICE)
|
||
-- Hierbij voorkomen
|
||
CURSOR c_klacht_5min
|
||
IS
|
||
SELECT fclt_f_meldingnr, fclt_f_leverancier, invoerder_email from arai_v_rap_mld_klachten
|
||
WHERE fclt_key = 1
|
||
AND sysdate >= operationele_einddatum - (10 / (24*60))
|
||
AND sysdate <= operationele_einddatum - (5 / (24*60));
|
||
|
||
|
||
BEGIN
|
||
FOR rec_klacht IN c_klacht_5min
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Oplostijd van klacht ' || rec_klacht.fclt_f_meldingnr || ' (leverancier ' || rec_klacht.fclt_f_leverancier || ' ) is met +- 5 minuten verstreken.';
|
||
v_errormsg := '';
|
||
-- Mailen naar het mailadres van degene die de klacht heetft ingevoerd (BALIE-medewerker/FrontOffice)
|
||
|
||
IF rec_klacht.invoerder_email IS NOT NULL
|
||
THEN
|
||
fac.putnotificationprio (NULL, NULL, v_errorhint, 2, rec_klacht.invoerder_email, NULL, 2);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
COMMIT;
|
||
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
COMMIT;
|
||
END arai_export_klacht_5min_klaar;
|
||
/
|
||
|
||
|
||
|
||
|
||
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--- ** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP ** --
|
||
--- ** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP ** --
|
||
--- ** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP **** TEMP ** --
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_post_import_energie (p_import_key IN NUMBER)
|
||
IS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
||
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
||
UPPER (ins_srtdeel_code) ins_srtdeel_code_upper,
|
||
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
||
MAX (ins_discipline_omschrijving)
|
||
ins_discipline_omschrijving,
|
||
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
|
||
MAX (ins_srtdeel_code) ins_srtdeel_code,
|
||
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving,
|
||
MIN(res_deel_eenheid) res_deel_eenheid
|
||
FROM arai_imp_ins
|
||
GROUP BY UPPER (ins_discipline_omschrijving),
|
||
UPPER (ins_srtgroep_omschrijving),
|
||
UPPER (ins_srtdeel_code),
|
||
UPPER (ins_srtdeel_omschrijving);
|
||
|
||
|
||
v_discipline_key NUMBER (10);
|
||
v_srtgroep_key NUMBER (10);
|
||
v_ins_srtdeel_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
|
||
|
||
c_ins_kenmerk_key_opc_meting NUMBER (10) := 61;
|
||
c_ins_kenmerk_key_opc_setpoint NUMBER (10) := 62;
|
||
c_ins_kenmerk_key_opc_alarm NUMBER (10) := 63;
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg := 'Post-Energie: Fout bij bepalen discipline';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'INS'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
||
rec.ins_discipline_upper;
|
||
|
||
v_errormsg := 'Post-Energie: Fout bij bepalen groepsoort';
|
||
|
||
SELECT ins_srtgroep_key
|
||
INTO v_srtgroep_key
|
||
FROM ins_srtgroep
|
||
WHERE ins_srtgroep_verwijder IS NULL
|
||
AND ins_srtgroep_module = 'INS'
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
||
|
||
v_errormsg :=
|
||
'Post-Energie: Fout bij bepalen objectsoort ['
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ']';
|
||
|
||
SELECT ins_srtdeel_key
|
||
INTO v_ins_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = v_srtgroep_key
|
||
AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper;
|
||
|
||
|
||
v_errormsg := 'Post-Energie: Fout bij insert srtkenmerk verbruik/meting - ' || rec.ins_srtdeel_upper;
|
||
-- Verbruik soortkenmerk bij dat soort object
|
||
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_dimensie, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte, ins_srtkenmerk_dec)
|
||
SELECT rec.ins_srtdeel_upper || '-verbruik', rec.res_deel_eenheid, 'N', 10, 2 FROM DUAL;
|
||
v_errormsg := 'Post-Energie: Fout bij insert kenmerk verbruik/meting - '|| rec.ins_srtdeel_upper;
|
||
-- Met bijbehorende kenmerk bij dat soort object
|
||
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_meetwaarde, ins_kenmerk_volgnummer, ins_kenmerk_locatiekolom)
|
||
SELECT ins_srtkenmerk_key, v_ins_srtdeel_key, 'S', 1, 901, c_ins_kenmerk_key_opc_meting
|
||
FROM ins_srtkenmerk
|
||
WHERE ins_srtkenmerk_omschrijving = rec.ins_srtdeel_upper || '-verbruik'
|
||
AND ins_srtkenmerk_kenmerktype = 'N'
|
||
AND ins_srtkenmerk_verwijder IS NULL;
|
||
|
||
v_errormsg := 'Post-Energie: Fout bij insert srtkenmerk setpoint - ' || rec.ins_srtdeel_upper;
|
||
-- Setpoint soortkenmerk bij dat soort object
|
||
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_dimensie, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte, ins_srtkenmerk_dec)
|
||
SELECT rec.ins_srtdeel_upper || '-setpoint', rec.res_deel_eenheid, 'N', 10, 2 FROM DUAL;
|
||
v_errormsg := 'Post-Energie: Fout bij insert kenmerk setpoint - '|| rec.ins_srtdeel_upper;
|
||
-- Met bijbehorende kenmerk bij dat soort object
|
||
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_meetwaarde, ins_kenmerk_volgnummer, ins_kenmerk_locatiekolom)
|
||
SELECT ins_srtkenmerk_key, v_ins_srtdeel_key, 'S', 1, 902, c_ins_kenmerk_key_opc_setpoint
|
||
FROM ins_srtkenmerk
|
||
WHERE ins_srtkenmerk_omschrijving = rec.ins_srtdeel_upper || '-setpoint'
|
||
AND ins_srtkenmerk_kenmerktype = 'N'
|
||
AND ins_srtkenmerk_verwijder IS NULL;
|
||
|
||
v_errormsg := 'Post-Energie: Fout bij insert srtkenmerk alarm - ' || rec.ins_srtdeel_upper;
|
||
-- Alarm soortkenmerk bij dat soort object
|
||
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_dimensie, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte, ins_srtkenmerk_dec)
|
||
SELECT rec.ins_srtdeel_upper || '-alarm', rec.res_deel_eenheid, 'N', 2, 1 FROM DUAL;
|
||
v_errormsg := 'Post-Energie: Fout bij insert kenmerk alarm - '|| rec.ins_srtdeel_upper;
|
||
-- Met bijbehorende kenmerk bij dat soort object
|
||
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_meetwaarde, ins_kenmerk_volgnummer, ins_kenmerk_locatiekolom)
|
||
SELECT ins_srtkenmerk_key, v_ins_srtdeel_key, 'S', 1, 903, c_ins_kenmerk_key_opc_alarm
|
||
FROM ins_srtkenmerk
|
||
WHERE ins_srtkenmerk_omschrijving = rec.ins_srtdeel_upper || '-alarm'
|
||
AND ins_srtkenmerk_kenmerktype = 'N'
|
||
AND ins_srtkenmerk_verwijder IS NULL;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
COMMIT;
|
||
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.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kenmerksoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
|
||
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 arai_post_import_energie;
|
||
/
|
||
|
||
CREATE OR REPLACE FORCE VIEW arai_v_bedrijveninfo
|
||
(
|
||
prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_telefoon,
|
||
prs_bedrijf_info,
|
||
prs_bedrijf_verwijder
|
||
)
|
||
AS
|
||
SELECT prs_bedrijf_key,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_telefoon,
|
||
prs_bedrijf_naam || ' (telnr: ' || prs_bedrijf_telefoon || ')',
|
||
prs_bedrijf_verwijder
|
||
FROM prs_bedrijf
|
||
WHERE COALESCE(prs_bedrijf_intern,0) = 0;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_processemail
|
||
(pfrom IN VARCHAR2,
|
||
pto IN VARCHAR2,
|
||
psubject IN VARCHAR2,
|
||
pbody IN VARCHAR2,
|
||
psessionid IN VARCHAR2,
|
||
pemailkey IN NUMBER
|
||
)
|
||
AS
|
||
-- puserkey is alvast een nieuwe parameter die per release 2015.2 er gaat komen (FSN#33503), als gevuld, dan deze als aanvrager van melding gebruiken.
|
||
sender prs_perslid.prs_perslid_key%TYPE;
|
||
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
||
v_mldkey mld_melding.mld_melding_key%TYPE;
|
||
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
||
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
errormsg fac_result.fac_result_waarde%TYPE;
|
||
v_mailadres_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
v_flexprop_mail VARCHAR2(1000);
|
||
v_from VARCHAR2 (1000);
|
||
|
||
subject_regexp fac_setting.fac_setting_default%TYPE;
|
||
v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
|
||
v_mldnum VARCHAR2 (4000);
|
||
v_srtdisc VARCHAR2 (4000);
|
||
v_flag_on_fenote NUMBER (10);
|
||
v_flag_on_bonote NUMBER (10);
|
||
v_gebkey NUMBER (10);
|
||
v_gebcode VARCHAR2 (4000);
|
||
v_standnr NUMBER (10);
|
||
v_standnrpos NUMBER (10);
|
||
v_riggingpnt NUMBER (10);
|
||
v_event NUMBER (10);
|
||
-- v_ontwerp NUMBER (10);
|
||
v_hal NUMBER (10);
|
||
v_getriggingpnt VARCHAR2 (50);
|
||
v_getevent VARCHAR2 (50);
|
||
v_gethal VARCHAR2 (50);
|
||
v_getontwerp VARCHAR2 (50);
|
||
|
||
|
||
BEGIN
|
||
-- We beschouwen dit als een nieuwe melding die afkomstig zijn van (voor Facilitor) onbekende gebruikers (die dus geen account hebben, althans geen prs_perslid zijn).
|
||
-- Deze externe/onbekende gebruikers zijn bezoekers of omwonenden, die een klacht kunnen mailen, die wordt omgezet in een Facilitor melding.
|
||
|
||
|
||
-- De melding zetten we op de system-api user voor hotelremarks, waarvan de api-key bekend is.
|
||
-- Vanaf release 2015.2 (FSN#33503) wordt deze api-user netjes als parameter puserkey meegegeven.
|
||
IF UPPER (pto) = 'HOTELREMARKS@ARAI.FACILITOR.NL'
|
||
THEN
|
||
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
|
||
INTO sender, kostenplaats
|
||
FROM prs_perslid p, prs_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (p.prs_perslid_oslogin) = '_HOTELREMARKS';
|
||
|
||
-- Standaardmelding 1561 heeft omschrijving 'Overig', is van vakgroep 'RAI Hotel Travel Service', die van vakgroeptype 'Exposanten' is
|
||
defaultstdmelding := 1561;
|
||
|
||
-- kenmerk-key 46, deze is van kenmerksoort 'E-mail (C)' (key 26) op vakgroeptype niveau van vakgroeptype-key 'Exposanten' (waarop stdmelding 1561 is gebaseerd).
|
||
v_mailadres_kenmerk_key := 46;
|
||
END IF;
|
||
|
||
IF UPPER (pto) = 'GIELISSEN@ARAI.FACILITOR.NL'
|
||
THEN
|
||
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
|
||
INTO sender, kostenplaats
|
||
FROM prs_perslid p, prs_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (p.prs_perslid_oslogin) = '_GIELISSEN';
|
||
|
||
IF UPPER (psubject) LIKE 'SERVICEBON%'
|
||
THEN
|
||
IF UPPER (psubject) LIKE '%MANSVELD%'
|
||
THEN
|
||
defaultstdmelding := 460;
|
||
v_mailadres_kenmerk_key := 46;
|
||
END IF;
|
||
IF UPPER (psubject) LIKE '%MTD%'
|
||
THEN
|
||
defaultstdmelding := 3443;
|
||
v_mailadres_kenmerk_key := 46;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF UPPER (pto) = 'BEOORDELENRIGGINGPLAN@ARAI.FACILITOR.NL'
|
||
THEN
|
||
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
|
||
INTO sender, kostenplaats
|
||
FROM prs_perslid p, prs_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (p.prs_perslid_oslogin) = '_RIGGING';
|
||
|
||
defaultstdmelding := 4141;
|
||
|
||
v_mailadres_kenmerk_key := 3321;
|
||
END IF;
|
||
|
||
IF UPPER (pto) = 'STORINGENTD@ARAI.FACILITOR.NL'
|
||
THEN
|
||
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
|
||
INTO sender, kostenplaats
|
||
FROM prs_perslid p, prs_afdeling d
|
||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (p.prs_perslid_oslogin) = '_STORING';
|
||
|
||
defaultstdmelding := 3741;
|
||
|
||
v_mailadres_kenmerk_key := 2501;
|
||
END IF;
|
||
-------------------------------------------------
|
||
|
||
-- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.
|
||
-- Wat is een bestaande melding:
|
||
-- 1) Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp het meldingnummer '1234' kan worden opgevist, met ervoor en erna een spatie
|
||
-- 2) Het 1e nummer dat in het onderwerp staat wordt gezien als meldingnummer, eventuele andere nummers later in het onderwerp worden genegeerd.
|
||
-- 3) Het mailadres van de afzender is dezelfde als die van dat gevonden meldingnummer '1234' in het onderwerp, deze afzender (mailadres) staat in flexprop (zie verderop hieronder)
|
||
|
||
-- ARAI heeft geen vakgroeptype-prefix, dus [alpha] is nu niet van toepassing
|
||
-- subject_regexp := '[[:alpha:]]*[[:digit:]]{1,}';
|
||
-- Dus alleen het digits-gedeelte...
|
||
subject_regexp := '[[:digit:]]{1,}';
|
||
v_mldnum :=
|
||
REGEXP_SUBSTR (psubject,
|
||
subject_regexp,
|
||
1,
|
||
1,
|
||
'i'); -- 1234, of 12345, of 12, of 1 etc.
|
||
|
||
v_gebcode := LPAD(v_mldnum,2,'0'); -- gebouwbepaling voor Gielissen meldingen
|
||
|
||
IF defaultstdmelding IN (460, 3443)
|
||
THEN
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebkey
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_code = v_gebcode;
|
||
|
||
-- Eerst bepalen waar in het onderwerp het standnummer staat
|
||
v_standnrpos := INSTR(psubject, 'Standnr', 1, 1) + 1;
|
||
|
||
-- Nu we de positie van standnr weten kunnen we de waarde na de spatie ophalen en de hal ervoor plakken
|
||
SELECT AVS.EBMS_KEY
|
||
INTO v_standnr
|
||
FROM ARAI_V_STANDNUMMERS AVS,
|
||
(SELECT SUBSTR(psubject,
|
||
INSTR(psubject, ' ', v_standnrpos, 1) + 1,
|
||
INSTR(psubject, ' ', v_standnrpos, 2) - INSTR(psubject, ' ', v_standnrpos, 1) - 1) STNR FROM DUAL) SUB
|
||
WHERE AVS.STANDNUMMER = fac.safe_to_number (v_gebcode) || '.' || SUB.STNR;
|
||
|
||
END IF;
|
||
|
||
IF defaultstdmelding = 4141
|
||
THEN
|
||
v_getevent :=
|
||
REGEXP_SUBSTR (REPLACE (pbody, CHR(10), ' '),
|
||
'event id *'||subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
|
||
SELECT a.arai_events_key
|
||
INTO v_event
|
||
FROM arai_events a
|
||
WHERE a.eventid = REGEXP_SUBSTR (v_getevent,
|
||
subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
|
||
v_gethal :=
|
||
REGEXP_SUBSTR (REPLACE (pbody, CHR(10), ' '),
|
||
'hallen *'||subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
|
||
v_hal :=
|
||
REGEXP_SUBSTR (v_gethal,
|
||
subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
|
||
v_gebcode := LPAD(v_hal,2,'0');
|
||
|
||
v_getriggingpnt :=
|
||
REGEXP_SUBSTR (REPLACE (pbody, CHR(10), ' '),
|
||
'punten *'||subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
|
||
v_riggingpnt :=
|
||
REGEXP_SUBSTR (v_getriggingpnt,
|
||
subject_regexp,
|
||
1,
|
||
1,
|
||
'i');
|
||
-- LET OP, ontwerp werkt nog niet!
|
||
-- v_getontwerp :=
|
||
-- REGEXP_SUBSTR (REPLACE (pbody, CHR(10), ' '),
|
||
-- 'ontwerp *'||subject_regexp,
|
||
-- 1,
|
||
-- 1,
|
||
-- 'i');
|
||
--
|
||
-- SELECT f.fac_usrdata_key
|
||
-- INTO v_ontwerp
|
||
-- FROM fac_usrdata f
|
||
-- WHERE f.fac_usrtab_key = 381
|
||
-- AND f.fac_usrdata_omschr = REGEXP_SUBSTR (v_getontwerp,
|
||
-- subject_regexp,
|
||
-- 1,
|
||
-- 1,
|
||
-- 'i');
|
||
END IF;
|
||
|
||
-- ARAI heeft geen vakgroeptype-prefix, dus v_srtdisc is nu niet van toepassing
|
||
--v_srtdisc :=
|
||
-- REGEXP_SUBSTR (v_mldnum,
|
||
-- '[[:alpha:]]',
|
||
-- 1,
|
||
-- 1,
|
||
-- 'i'); -- M
|
||
--v_mldkey := fac.safe_to_number (SUBSTR (v_mldnum, LENGTH (v_srtdisc) + 1)); -- 123, of 12345, of 12, of 1
|
||
|
||
v_mldkey := fac.safe_to_number (v_mldnum);
|
||
|
||
-- Uit onderwerp is de vermoedelijke juiste v_mldkey geparsed.
|
||
-- Final check: is de afzender van de mail dezelfde als die van v_mldkey, deze afzender (mailadres) staat in flexprop (zie verderop hieronder in gedeelte bij insert melding).
|
||
|
||
SELECT MAX(SUBSTR(TRIM(km.mld_kenmerkmelding_waarde),1,50))
|
||
INTO v_flexprop_mail
|
||
FROM mld_kenmerkmelding km
|
||
WHERE mld_melding_key = v_mldkey
|
||
AND mld_kenmerk_key = v_mailadres_kenmerk_key
|
||
AND mld_kenmerkmelding_verwijder IS NULL;
|
||
|
||
|
||
v_from := SUBSTR(TRIM(pfrom),1,50);
|
||
|
||
|
||
|
||
IF v_flexprop_mail = v_from
|
||
THEN
|
||
|
||
-- Gotcha: bestaande melding gevonden
|
||
-- Van deze afzender is een eerdere melding geregistreerd, die we plakken de subject en body nu als notitie toe (als perslid system-api user).
|
||
|
||
INSERT INTO mld_melding_note (mld_melding_key,
|
||
mld_melding_note_omschrijving,
|
||
prs_perslid_key,
|
||
mld_melding_note_flag)
|
||
VALUES (v_mldkey,
|
||
SUBSTR (
|
||
psubject || CHR (13) || CHR (10)
|
||
|| REPLACE (
|
||
SUBSTR (pbody,
|
||
1,
|
||
4000 - (LENGTH (psubject) + 2)),
|
||
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
||
CHR (13) || CHR (10)),
|
||
1,
|
||
4000), -- verwijder onnodige witregels
|
||
sender,
|
||
0); -- 0 is NIET zichtbaar FE (want is system-user, zinloos).
|
||
|
||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
|
||
IF 1=0 -- ARAI heeft geen melding valggetjes, dus onderstaande kan voor nu weg.
|
||
THEN
|
||
BEGIN
|
||
IF fac.getsetting('mld_melding_actiecode') = 1
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
|
||
WHERE mld_melding_key = v_mldkey;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
DBMS_OUTPUT.put_line( 'Niet gelukt om flag '
|
||
|| v_flag_on_bonote
|
||
|| ' te zetten.');
|
||
END;
|
||
END IF; -- ARAI heef geen vlaggetjes
|
||
|
||
-- Default tracking is even goed genoeg
|
||
fac.trackaction ('MLDNOT',
|
||
v_mldkey,
|
||
sender,
|
||
NULL,
|
||
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || v_mldkey);
|
||
|
||
-- Bepalen van de behandelaar van deze melding
|
||
BEGIN
|
||
SELECT mld_melding_behandelaar_key
|
||
INTO v_behandelaar_key
|
||
FROM mld_melding m, prs_perslid p
|
||
WHERE mld_melding_key = v_mldkey
|
||
AND mld_melding_behandelaar_key = p.prs_perslid_key
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
AND p.prs_perslid_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_behandelaar_key := NULL;
|
||
END;
|
||
|
||
IF v_behandelaar_key IS NOT NULL
|
||
THEN
|
||
-- Bestaande melding en behandelaar is bekend.
|
||
|
||
-- Notificatie naar behandelaar
|
||
fac.putnotificationsrtprio (
|
||
NULL,
|
||
v_behandelaar_key,
|
||
'MLDNOB',
|
||
v_mldkey,
|
||
'Melding ' || v_mldkey || ' is door de klant aangepast.',
|
||
2,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
2,
|
||
NULL);
|
||
END IF; -- Bestaande melding en behandelaar is bekend.
|
||
ELSE
|
||
-- GEEN bestaande melding gevonden, we gaan een nieuwe melding toevoegen....
|
||
|
||
IF defaultstdmelding IS NOT NULL
|
||
THEN
|
||
|
||
IF defaultstdmelding IN (460, 3443)
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_melding_datum,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_onderwerp,
|
||
mld_melding_omschrijving,
|
||
mld_melding_status,
|
||
mld_stdmelding_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
mld_melding_spoed)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
SYSDATE,
|
||
1, -- zie ook HSLE#33348: RAI hier kiezen (alg_locatie_key = 1)
|
||
v_gebkey,
|
||
psubject,
|
||
pbody,
|
||
NULL,
|
||
defaultstdmelding,
|
||
sender,
|
||
sender,
|
||
kostenplaats,
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_mldkey;
|
||
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, 863, 35181); -- PLMA 2019, dit moet uiteindelijk voor alle events werken
|
||
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, 2901, v_standnr); -- EBMS Standnr
|
||
|
||
-- Vullen van kenmerkwaarde "e-mail adres"
|
||
IF pfrom IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
|
||
THEN
|
||
-- Kenmerk mailadres heeft max. 50 tekens, afkappen dus...
|
||
|
||
|
||
-- zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
|
||
END IF;
|
||
|
||
mld.setmeldingstatus (v_mldkey, 2, sender);
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);
|
||
|
||
END;
|
||
END IF; -- defaultstdmelding is gielissen of niet
|
||
|
||
IF defaultstdmelding = 4141 -- Wanneer het gaat om een rigging melding
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_melding_datum,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_onderwerp,
|
||
mld_melding_omschrijving,
|
||
mld_melding_status,
|
||
mld_stdmelding_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
mld_melding_spoed)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
SYSDATE,
|
||
1, -- zie ook HSLE#33348: RAI hier kiezen (alg_locatie_key = 1)
|
||
v_gebkey, -- gebouw o.b.v. halnummer (gebouwcode)
|
||
psubject,
|
||
pbody,
|
||
NULL,
|
||
defaultstdmelding,
|
||
sender,
|
||
sender,
|
||
kostenplaats,
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_mldkey;
|
||
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, 2981, v_event); -- evenement
|
||
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, 3241, v_riggingpnt); -- aantal riggingpunten
|
||
|
||
-- INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
-- VALUES (v_mldkey, 3181, v_ontwerp); -- status ontwerp
|
||
|
||
|
||
-- Vullen van kenmerkwaarde "e-mail adres"
|
||
IF pfrom IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
|
||
THEN
|
||
-- Kenmerk mailadres heeft max. 50 tekens, afkappen dus...
|
||
|
||
|
||
-- zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
|
||
END IF;
|
||
|
||
mld.setmeldingstatus (v_mldkey, 2, sender);
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);
|
||
|
||
END;
|
||
END IF; -- defaultstdmelding is rigging of niet
|
||
|
||
IF defaultstdmelding IN (1561, 3741) -- Hotelremarks of StoringenTD
|
||
THEN
|
||
-- suggested extensions:
|
||
-- check for MLDUSE-write autorisations
|
||
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
||
-- append (as a note?) to an existing melding if #key is found in the subject
|
||
BEGIN
|
||
INSERT INTO mld_melding (mld_melding_module,
|
||
mld_meldbron_key,
|
||
mld_melding_datum,
|
||
mld_alg_locatie_key,
|
||
mld_melding_onderwerp,
|
||
mld_melding_omschrijving,
|
||
mld_melding_status,
|
||
mld_stdmelding_key,
|
||
prs_perslid_key,
|
||
prs_perslid_key_voor,
|
||
prs_kostenplaats_key,
|
||
mld_melding_spoed)
|
||
VALUES ('MLD',
|
||
4, -- email
|
||
SYSDATE,
|
||
1, -- zie ook HSLE#33348: RAI hier kiezen (alg_locatie_key = 1)
|
||
psubject,
|
||
SUBSTR (REPLACE (
|
||
SUBSTR (pbody,
|
||
1,
|
||
4000 - (LENGTH (psubject) + 2)),
|
||
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
||
CHR (13) || CHR (10)),
|
||
1,
|
||
4000), -- verwijder onnodige witregels
|
||
NULL,
|
||
defaultstdmelding,
|
||
sender,
|
||
sender,
|
||
kostenplaats,
|
||
3)
|
||
RETURNING mld_melding_key
|
||
INTO v_mldkey;
|
||
|
||
-- Vullen van kenmerkwaarde "e-mail adres"
|
||
IF pfrom IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
|
||
THEN
|
||
-- Kenmerk mailadres heeft max. 50 tekens, afkappen dus...
|
||
|
||
|
||
-- zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
|
||
END IF;
|
||
|
||
mld.setmeldingstatus (v_mldkey, 2, sender);
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);
|
||
|
||
END;
|
||
END IF; -- defaultstdmelding is Hotelremarks of StoringenTD
|
||
END IF; -- defaultstdmelding IS NOT NULL
|
||
END IF; -- v_flexprop_mail = v_from
|
||
|
||
|
||
-- Bijlagen gaan we proberen toe te voegen, zowel bij een nieuwe als een bestaande melding....
|
||
-- Dat doen we bij een flexprop van het type 'M' (=folder met bestanden), door het laagste volgnummer te vinden
|
||
-- find the lowest volgnummer of the flexfield of type folder.
|
||
SELECT MIN (mld_kenmerk_key)
|
||
INTO kkey
|
||
FROM mld_kenmerk k,
|
||
mld_srtkenmerk sk,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d
|
||
WHERE mld_srtkenmerk_kenmerktype = 'M'
|
||
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
|
||
AND std.mld_stdmelding_key = defaultstdmelding
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND k.mld_kenmerk_niveau = 'S')
|
||
OR (k.mld_stdmelding_key = d.ins_discipline_key
|
||
AND k.mld_kenmerk_niveau = 'D')
|
||
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
|
||
AND k.mld_kenmerk_niveau = 'T'))
|
||
AND k.mld_kenmerk_verwijder IS NULL
|
||
AND NOT EXISTS
|
||
(SELECT mld_kenmerk_volgnummer
|
||
FROM mld_kenmerk k1,
|
||
mld_srtkenmerk sk1,
|
||
mld_stdmelding std1,
|
||
ins_tab_discipline d1
|
||
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||
AND sk1.mld_srtkenmerk_key =
|
||
k1.mld_srtkenmerk_key
|
||
AND std1.mld_stdmelding_key =
|
||
defaultstdmelding
|
||
AND std1.mld_ins_discipline_key =
|
||
d1.ins_discipline_key
|
||
AND ( (k1.mld_stdmelding_key =
|
||
std1.mld_stdmelding_key
|
||
AND k1.mld_kenmerk_niveau = 'S')
|
||
OR (k1.mld_stdmelding_key =
|
||
d1.ins_discipline_key
|
||
AND k1.mld_kenmerk_niveau = 'D')
|
||
OR (k1.mld_stdmelding_key =
|
||
d1.ins_srtdiscipline_key
|
||
AND k1.mld_kenmerk_niveau = 'T'))
|
||
AND k1.mld_kenmerk_verwijder IS NULL
|
||
AND k1.mld_kenmerk_volgnummer <
|
||
k.mld_kenmerk_volgnummer);
|
||
|
||
IF kkey IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'kenmerkpath',
|
||
'MLD\M' || to_char( TRUNC(v_mldkey/1000), 'FM0000') || '___\M' || v_mldkey || '\' || kkey || '\');
|
||
END IF;
|
||
|
||
IF errormsg IS NOT NULL
|
||
THEN
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid, 'errormsg', errormsg);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.writelog (
|
||
'PROCESSEMAIL',
|
||
'W',
|
||
'Mail kon niet verwerkt worden afzender: '
|
||
|| pfrom
|
||
|| '['
|
||
|| errormsg
|
||
|| ']',
|
||
'OTHERS (error '
|
||
|| SQLCODE
|
||
|| '/'
|
||
|| SUBSTR (SQLERRM, 1, 100)
|
||
|| ')');
|
||
INSERT INTO fac_result (fac_result_sessionid,
|
||
fac_result_naam,
|
||
fac_result_waarde)
|
||
VALUES (psessionid,
|
||
'errormsg',
|
||
'Database fout - Neem contact op met uw systeembeheerder');
|
||
END;
|
||
/
|
||
|
||
---------------------------------------------------------------------- KPI DEFINITIES ---------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE ARAI_IMPORT_KPI_DEFINITIE (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
-- De importvelden
|
||
v_kpi_definitie_code VARCHAR2(255); --15 BYTE),
|
||
v_kpi_definitie_omschrijving VARCHAR2(255); --60 BYTE),
|
||
v_kpi_definitie_info VARCHAR2(4000); -- 4000 BYTE),
|
||
v_kpi_definitie_categorie1 VARCHAR2(255); -- 50 BYTE),
|
||
v_kpi_definitie_categorie2 VARCHAR2(255); -- 50 BYTE),
|
||
v_kpi_definitie_categorie3 VARCHAR2(255); -- 50 BYTE),
|
||
v_kpi_definitie_drempels_0 VARCHAR2(255); -- 20 BYTE),
|
||
v_kpi_definitie_drempels_70 VARCHAR2(255); -- 20 BYTE),
|
||
v_kpi_definitie_drempels_90 VARCHAR2(255); -- 20 BYTE),
|
||
v_kpi_definitie_drempels_100 VARCHAR2(255); -- 20 BYTE)
|
||
v_kpi_definitie_drempels_tot VARCHAR2(255); -- 20 BYTE),
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM ARAI_IMP_KPI_DEFINITIE;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_categorie1);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_categorie2);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_info);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_0);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_70);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_90);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_100);
|
||
|
||
v_aanduiding :=
|
||
'|'
|
||
|| v_kpi_definitie_categorie1
|
||
|| '|'
|
||
|| v_kpi_definitie_categorie2
|
||
|| '|'
|
||
|| v_kpi_definitie_code
|
||
|| '| ';
|
||
|
||
-- 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_kpi_definitie_categorie1) = 'KPI CATEGORIE 1'
|
||
AND UPPER (v_kpi_definitie_categorie2) = 'KPI CATEGORIE 2'
|
||
AND UPPER (v_kpi_definitie_code) = 'KPI CODE'
|
||
AND UPPER (v_kpi_definitie_omschrijving) = 'KPI OMSCHRIJVING'
|
||
AND UPPER (v_kpi_definitie_info) = 'KPI INFORMATIE'
|
||
AND UPPER (v_kpi_definitie_drempels_0) = 'KPI DREMPEL 0'
|
||
AND UPPER (v_kpi_definitie_drempels_70) = 'KPI DREMPEL 70'
|
||
AND UPPER (v_kpi_definitie_drempels_90) = 'KPI DREMPEL 90'
|
||
AND UPPER (v_kpi_definitie_drempels_100) = 'KPI DREMPEL 100'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
IF v_kpi_definitie_categorie1 IS NOT NULL
|
||
THEN
|
||
v_kpi_definitie_categorie1 := TRIM (v_kpi_definitie_categorie1);
|
||
|
||
IF LENGTH (v_kpi_definitie_categorie1) > 50
|
||
THEN
|
||
v_kpi_definitie_categorie1 :=
|
||
SUBSTR (TRIM (v_kpi_definitie_categorie1), 1, 50);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Categorie 1 wordt afgebroken tot ['
|
||
|| v_kpi_definitie_categorie1
|
||
|| ']');
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Categorie 1 mag NIET leeg zijn: deze regel wordt overgeslagen');
|
||
END IF;
|
||
|
||
IF v_kpi_definitie_categorie2 IS NOT NULL
|
||
THEN
|
||
v_kpi_definitie_categorie2 := TRIM (v_kpi_definitie_categorie2);
|
||
IF LENGTH (v_kpi_definitie_categorie2) > 50
|
||
THEN
|
||
v_kpi_definitie_categorie2 :=
|
||
SUBSTR (TRIM (v_kpi_definitie_categorie2), 1, 50);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Categorie 2 wordt afgebroken tot ['
|
||
|| v_kpi_definitie_categorie2
|
||
|| ']');
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Categorie 2 mag NIET leeg zijn: deze regel wordt overgeslagen');
|
||
END IF;
|
||
|
||
IF v_kpi_definitie_code IS NOT NULL
|
||
THEN
|
||
v_kpi_definitie_code := TRIM (v_kpi_definitie_code);
|
||
IF LENGTH (v_kpi_definitie_code) > 15
|
||
THEN
|
||
v_kpi_definitie_code :=
|
||
SUBSTR (TRIM (v_kpi_definitie_code), 1, 15);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Code wordt afgebroken tot ['
|
||
|| v_kpi_definitie_code
|
||
|| ']');
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Code mag NIET leeg zijn: deze regel wordt overgeslagen');
|
||
END IF;
|
||
|
||
IF v_kpi_definitie_omschrijving IS NOT NULL
|
||
THEN
|
||
|
||
v_kpi_definitie_omschrijving := TRIM (v_kpi_definitie_omschrijving);
|
||
IF LENGTH (v_kpi_definitie_omschrijving) > 60
|
||
THEN
|
||
v_kpi_definitie_omschrijving :=
|
||
SUBSTR (TRIM (v_kpi_definitie_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Omschrijving wordt afgebroken tot ['
|
||
|| v_kpi_definitie_omschrijving
|
||
|| ']');
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Omschrijving mag NIET leeg zijn: deze regel wordt overgeslagen');
|
||
END IF;
|
||
|
||
v_kpi_definitie_info := TRIM (v_kpi_definitie_info);
|
||
IF LENGTH (v_kpi_definitie_info) > 4000
|
||
THEN
|
||
v_kpi_definitie_info :=
|
||
SUBSTR (TRIM (v_kpi_definitie_info), 1, 4000);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Informatie wordt afgebroken tot ['
|
||
|| v_kpi_definitie_info
|
||
|| ']');
|
||
END IF;
|
||
|
||
IF v_kpi_definitie_drempels_0 IS NOT NULL AND v_kpi_definitie_drempels_70 IS NOT NULL AND v_kpi_definitie_drempels_90 IS NOT NULL AND v_kpi_definitie_drempels_100 IS NOT NULL
|
||
THEN
|
||
v_kpi_definitie_drempels_tot := TRIM (v_kpi_definitie_drempels_0 || '|' || v_kpi_definitie_drempels_70 || '|' || v_kpi_definitie_drempels_90 || '|' || v_kpi_definitie_drempels_100);
|
||
IF LENGTH (v_kpi_definitie_drempels_tot) > 20
|
||
THEN
|
||
v_kpi_definitie_drempels_tot :=
|
||
SUBSTR (TRIM (v_kpi_definitie_drempels_tot), 1, 20);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Dermpels wordt afgebroken tot ['
|
||
|| v_kpi_definitie_drempels_tot
|
||
|| ']');
|
||
END IF;
|
||
ELSE
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Alle drempeles MOETEN gevuld zijn: deze regel wordt overgeslagen');
|
||
END IF;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO ARAI_IMP_KPI_DEFINITIE (
|
||
KPI_DEFINITIE_CODE,
|
||
KPI_DEFINITIE_OMSCHRIJVING,
|
||
KPI_DEFINITIE_INFO,
|
||
KPI_DEFINITIE_CATEGORIE1,
|
||
KPI_DEFINITIE_CATEGORIE2,
|
||
KPI_DEFINITIE_DREMPELS)
|
||
VALUES (v_kpi_definitie_code,
|
||
v_kpi_definitie_omschrijving,
|
||
v_kpi_definitie_info,
|
||
v_kpi_definitie_categorie1,
|
||
v_kpi_definitie_categorie2,
|
||
v_kpi_definitie_drempels_tot);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel ARAI_IMP_KPI_DEFINITIE.');
|
||
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',
|
||
'KPI Definitie: aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'KPI Definitie: aantal ongeldige niet ingelezen 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 := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Inleesproces KPI Definitie afgebroken!');
|
||
END ARAI_IMPORT_KPI_DEFINITIE;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE ARAI_UPDATE_KPI_DEFINITIE (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
|
||
|
||
CURSOR c_kpi_defs
|
||
IS
|
||
SELECT * FROM ARAI_IMP_KPI_DEFINITIE;
|
||
-- MAIN
|
||
BEGIN
|
||
FOR rec_ins IN c_kpi_defs
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
rec_ins.kpi_definitie_code
|
||
|| ' - '
|
||
|| rec_ins.kpi_definitie_categorie1
|
||
|| '-'
|
||
|| rec_ins.kpi_definitie_categorie2;
|
||
|
||
v_errorhint := 'Fout bij insert van kpi definitie';
|
||
|
||
IF rec_ins.kpi_definitie_code IS NOT NULL
|
||
AND rec_ins.kpi_definitie_categorie1 IS NOT NULL
|
||
AND rec_ins.kpi_definitie_categorie2 IS NOT NULL
|
||
AND rec_ins.kpi_definitie_omschrijving IS NOT NULL
|
||
AND rec_ins.kpi_definitie_drempels IS NOT NULL
|
||
|
||
THEN
|
||
INSERT INTO kpi_definitie ( KPI_DEFINITIE_CODE,
|
||
KPI_DEFINITIE_OMSCHRIJVING,
|
||
KPI_DEFINITIE_INFO,
|
||
KPI_DEFINITIE_CATEGORIE1,
|
||
KPI_DEFINITIE_CATEGORIE2,
|
||
KPI_DEFINITIE_DREMPELS)
|
||
VALUES (rec_ins.kpi_definitie_code,
|
||
rec_ins.kpi_definitie_omschrijving,
|
||
rec_ins.kpi_definitie_info,
|
||
rec_ins.kpi_definitie_categorie1,
|
||
rec_ins.kpi_definitie_categorie2,
|
||
rec_ins.kpi_definitie_drempels
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Code, Omschrijving, Categorie1 en 2 en drempels mogen niet leeg zijn');
|
||
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;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg :=
|
||
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Importproces KPI Definitie afgebroken!',
|
||
v_errormsg);
|
||
END ARAI_UPDATE_KPI_DEFINITIE;
|
||
/
|
||
|
||
----- Views voor berekenen KPI's -----------------------------------------------
|
||
|
||
-- Views voor berekening (genormeerde) KPI-scores o.b.v. handmatig/automatisch ingevulde KPI-meldingen.
|
||
-- KAVEL 1
|
||
-- #1-Evenementgebonden Schoonmaak door RAI
|
||
-- Deze komen uit de melding met std_melding_key 2943
|
||
CREATE OR REPLACE VIEW arai_v_kpi_es_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'ES'),
|
||
scores_rai AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(ES_01.mld_kenmerkmelding_waarde),0) ES_01_score,
|
||
COALESCE(fac.safe_to_number(ES_02.mld_kenmerkmelding_waarde),0) ES_02_score,
|
||
COALESCE(fac.safe_to_number(ES_05.mld_kenmerkmelding_waarde),0) ES_05_score,
|
||
COALESCE(fac.safe_to_number(ES_06.mld_kenmerkmelding_waarde),0) ES_06_score,
|
||
COALESCE(fac.safe_to_number(ES_07.mld_kenmerkmelding_waarde),0) ES_07_score,
|
||
COALESCE(fac.safe_to_number(ES_08.mld_kenmerkmelding_waarde),0) ES_08_score,
|
||
COALESCE(fac.safe_to_number(ES_03.mld_kenmerkmelding_waarde),0) ES_03_score,
|
||
COALESCE(fac.safe_to_number(ES_04.mld_kenmerkmelding_waarde),0) ES_04_score,
|
||
COALESCE(fac.safe_to_number(ES_TO.mld_kenmerkmelding_waarde),0) ES_TO_score -- Aantal stands schoongemaakt (ivm 7% marge)
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1509) ES_01,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1506) ES_02,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1510) ES_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1507) ES_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1511) ES_07,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1508) ES_08,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1517) ES_03,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1536) ES_04,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 2721) ES_TO -- Aantal stands schoongemaakt
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2943
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND ES_01.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_02.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_07.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_08.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_03.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_04.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_TO.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'ES', (((CASE WHEN ES_01_score <= 13 THEN 13 ELSE ES_01_score END) - 13) * 2) +
|
||
(((CASE WHEN ES_02_score <= 10 THEN 10 ELSE ES_02_score END) - 10) * 2) +
|
||
-- ((DECODE(ES_02_score, 0, 2, 1, 2, ES_02_score) - 2) * 2) +
|
||
(((CASE WHEN ES_05_score <= (ES_TO_score * 0.07) THEN (ES_TO_score * 0.07) ELSE ES_05_score END) - (ES_TO_score * 0.07)) * 2) +
|
||
-- ((DECODE(ES_05_score, 0, 2, 1, 2, ES_05_score) - 2) * 2) +
|
||
((DECODE(ES_06_score, 0, 2, 1, 2, ES_06_score) - 2) * 2) +
|
||
((DECODE(ES_07_score, 0, 2, 1, 2, ES_07_score) - 2) * 2) +
|
||
((DECODE(ES_08_score, 0, 2, 1, 2, ES_08_score) - 2) * 2) +
|
||
(ABS(ES_03_score - 1) * 10) +
|
||
(ABS(ES_04_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_rai k) m;
|
||
|
||
-- KAVEL 1
|
||
-- #1-Evenementgebonden Schoonmaak door CSU
|
||
-- Deze komen uit de melding met std_melding_key 2944
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_es_csu
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'ES'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(ES_07.mld_kenmerkmelding_waarde),0) ES_07_score,
|
||
COALESCE(fac.safe_to_number(ES_08.mld_kenmerkmelding_waarde),0) ES_08_score,
|
||
COALESCE(fac.safe_to_number(ES_09.mld_kenmerkmelding_waarde),0) ES_09_score,
|
||
COALESCE(fac.safe_to_number(ES_10.mld_kenmerkmelding_waarde),0) ES_10_score,
|
||
COALESCE(fac.safe_to_number(ES_11.mld_kenmerkmelding_waarde),0) ES_11_score,
|
||
COALESCE(fac.safe_to_number(ES_12.mld_kenmerkmelding_waarde),0) ES_12_score,
|
||
COALESCE(fac.safe_to_number(ES_13.mld_kenmerkmelding_waarde),0) ES_13_score,
|
||
COALESCE(fac.safe_to_number(ES_14.mld_kenmerkmelding_waarde),0) ES_14_score,
|
||
COALESCE(fac.safe_to_number(ES_15.mld_kenmerkmelding_waarde),0) ES_15_score,
|
||
COALESCE(fac.safe_to_number(ES_16.mld_kenmerkmelding_waarde),0) ES_16_score,
|
||
COALESCE(fac.safe_to_number(ES_18.mld_kenmerkmelding_waarde),0) ES_18_score,
|
||
COALESCE(fac.safe_to_number(ES_20.mld_kenmerkmelding_waarde),0) ES_20_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1514) ES_07,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1527) ES_08,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1513) ES_09,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1529) ES_10,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1528) ES_11,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1515) ES_12,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1530) ES_13,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1525) ES_14,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1526) ES_15,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1535) ES_16,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1534) ES_18,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1533) ES_20
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2944
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND ES_07.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_08.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_09.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_10.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_11.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_12.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_13.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_14.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_15.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_16.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_18.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_20.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'ES', (ABS(ES_07_score - 1) * 10) +
|
||
(ABS(ES_08_score - 1) * 10) +
|
||
(ABS(ES_09_score - 1) * 10) +
|
||
(ABS(ES_10_score - 1) * 10) +
|
||
(ABS(ES_11_score - 1) * 10) +
|
||
(ABS(ES_12_score - 1) * 10) +
|
||
(ABS(ES_13_score - 1) * 10) +
|
||
(ABS(ES_14_score - 1) * 10) +
|
||
(ABS(ES_15_score - 1) * 10) +
|
||
CASE
|
||
WHEN ES_16_score < 1 THEN 20
|
||
WHEN ES_16_score < 2 THEN 17.5
|
||
WHEN ES_16_score < 3 THEN 15
|
||
WHEN ES_16_score < 4 THEN 12.5
|
||
WHEN ES_16_score < 5 THEN 10
|
||
WHEN ES_16_score < 6 THEN 7.5
|
||
WHEN ES_16_score < 7 THEN 5
|
||
ELSE 0
|
||
END +
|
||
(ABS(ES_18_score - 1) * 10) +
|
||
(ABS(ES_20_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
-- Agv ARAI#37911: kenmerken verhuizen naar csu-view naar de rai-view van kavel 1 (ES), die zijn uit bovenstaande verwijderd en hieronder neergezet
|
||
-- Verschil zit 'm in meld_stdmelding_key:
|
||
-- De verhuisde kenmerk-keys van 2944 naar mld_stdmelding_key 2943 zijn:
|
||
-- 1531 (ES_21)
|
||
-- 1505 (ES_17)
|
||
-- 1532 (ES_19)
|
||
-- 1523 (ES_28)
|
||
-- 1516 (ES_29)
|
||
-- 1512 (ES_06)
|
||
-- 1524 (ES_05)
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_es_csu_2_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'ES'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(ES_05.mld_kenmerkmelding_waarde),0) ES_05_score,
|
||
COALESCE(fac.safe_to_number(ES_06.mld_kenmerkmelding_waarde),0) ES_06_score,
|
||
COALESCE(fac.safe_to_number(ES_21.mld_kenmerkmelding_waarde),0) ES_21_score,
|
||
COALESCE(fac.safe_to_number(ES_17.mld_kenmerkmelding_waarde),0) ES_17_score,
|
||
COALESCE(fac.safe_to_number(ES_19.mld_kenmerkmelding_waarde),0) ES_19_score,
|
||
COALESCE(fac.safe_to_number(ES_28.mld_kenmerkmelding_waarde),0) ES_28_score,
|
||
COALESCE(fac.safe_to_number(ES_29.mld_kenmerkmelding_waarde),0) ES_29_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1524) ES_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1512) ES_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1531) ES_21,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1505) ES_17,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1532) ES_19,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1523) ES_28,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1516) ES_29
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2943
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND ES_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_21.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_17.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_19.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_28.mld_melding_key(+) = m.mld_melding_key
|
||
AND ES_29.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'ES', (ES_05_score * 10) +
|
||
(ES_06_score * 5) +
|
||
(ABS(ES_21_score - 1) * 10) +
|
||
(ES_17_score * 2) +
|
||
(ABS(ES_19_score - 1) * 10) +
|
||
(ABS(ES_28_score - 1) * 10) +
|
||
(ABS(ES_29_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
|
||
-- KAVEL 2
|
||
-- Afval, Parkeer, Beursvloer cijfers door RAI
|
||
-- Deze komen uit de melding met std_melding_key 2945
|
||
CREATE OR REPLACE VIEW arai_v_kpi_apb_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'APB'),
|
||
scores_rai AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(APB_01.mld_kenmerkmelding_waarde),0) APB_01_score,
|
||
COALESCE(fac.safe_to_number(APB_02.mld_kenmerkmelding_waarde),0) APB_02_score,
|
||
COALESCE(fac.safe_to_number(APB_05.mld_kenmerkmelding_waarde),0) APB_05_score,
|
||
COALESCE(fac.safe_to_number(APB_06.mld_kenmerkmelding_waarde),0) APB_06_score,
|
||
COALESCE(fac.safe_to_number(APB_03.mld_kenmerkmelding_waarde),0) APB_03_score,
|
||
COALESCE(fac.safe_to_number(APB_04.mld_kenmerkmelding_waarde),0) APB_04_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1542) APB_01,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1540) APB_02,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1543) APB_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1541) APB_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1545) APB_03,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1569) APB_04
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2945
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND APB_01.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_02.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_03.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_04.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'APB', ((DECODE(APB_01_score, 0, 2, 1, 2, APB_01_score) - 2) * 2) +
|
||
((DECODE(APB_02_score, 0, 2, 1, 2, APB_02_score) - 2) * 2) +
|
||
(APB_05_score * 2) +
|
||
((DECODE(APB_06_score, 0, 1, APB_06_score) - 1) * 2) +
|
||
(ABS(APB_03_score - 1) * 10) +
|
||
(ABS(APB_04_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_rai k) m;
|
||
|
||
-- KAVEL 2
|
||
-- Afval, Parkeer, Beursvloer cijfers door CSU
|
||
-- Deze komen uit de melding met std_melding_key 2946
|
||
CREATE OR REPLACE VIEW arai_v_kpi_apb_csu
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'APB'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(APB_24.mld_kenmerkmelding_waarde),0) APB_24_score,
|
||
COALESCE(fac.safe_to_number(APB_07.mld_kenmerkmelding_waarde),0) APB_07_score,
|
||
COALESCE(fac.safe_to_number(APB_08.mld_kenmerkmelding_waarde),0) APB_08_score,
|
||
COALESCE(fac.safe_to_number(APB_09.mld_kenmerkmelding_waarde),0) APB_09_score,
|
||
COALESCE(fac.safe_to_number(APB_10.mld_kenmerkmelding_waarde),0) APB_10_score,
|
||
COALESCE(fac.safe_to_number(APB_11.mld_kenmerkmelding_waarde),0) APB_11_score,
|
||
COALESCE(fac.safe_to_number(APB_12.mld_kenmerkmelding_waarde),0) APB_12_score,
|
||
COALESCE(fac.safe_to_number(APB_13.mld_kenmerkmelding_waarde),0) APB_13_score,
|
||
COALESCE(fac.safe_to_number(APB_14.mld_kenmerkmelding_waarde),0) APB_14_score,
|
||
COALESCE(fac.safe_to_number(APB_15.mld_kenmerkmelding_waarde),0) APB_15_score,
|
||
COALESCE(fac.safe_to_number(APB_16.mld_kenmerkmelding_waarde),0) APB_16_score,
|
||
COALESCE(fac.safe_to_number(APB_18.mld_kenmerkmelding_waarde),0) APB_18_score,
|
||
COALESCE(fac.safe_to_number(APB_25.mld_kenmerkmelding_waarde),0) APB_25_score,
|
||
COALESCE(fac.safe_to_number(APB_26.mld_kenmerkmelding_waarde),0) APB_26_score,
|
||
COALESCE(fac.safe_to_number(APB_27.mld_kenmerkmelding_waarde),0) APB_27_score,
|
||
COALESCE(fac.safe_to_number(APB_20.mld_kenmerkmelding_waarde),0) APB_20_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1539) APB_24,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1547) APB_07,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1559) APB_08,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1546) APB_09,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1561) APB_10,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1560) APB_11,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1549) APB_12,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1562) APB_13,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1557) APB_14,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1558) APB_15,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1567) APB_16,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1566) APB_18,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1568) APB_25,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1570) APB_26,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1548) APB_27,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1565) APB_20
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2946
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND APB_24.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_07.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_08.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_09.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_10.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_11.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_12.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_13.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_14.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_15.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_16.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_18.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_25.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_26.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_27.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_20.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'APB', ((DECODE(APB_24_score, 0, 1, APB_24_score) - 1) * 2) +
|
||
(ABS(APB_07_score - 1) * 10) +
|
||
(ABS(APB_08_score - 1) * 10) +
|
||
(ABS(APB_09_score - 1) * 10) +
|
||
(ABS(APB_10_score - 1) * 10) +
|
||
(ABS(APB_11_score - 1) * 10) +
|
||
(ABS(APB_12_score - 1) * 10) +
|
||
(ABS(APB_13_score - 1) * 10) +
|
||
(ABS(APB_14_score - 1) * 10) +
|
||
(ABS(APB_15_score - 1) * 10) +
|
||
CASE
|
||
WHEN APB_16_score < 1 THEN 10
|
||
WHEN APB_16_score < 2 THEN 7.5
|
||
WHEN APB_16_score < 3 THEN 5
|
||
ELSE 0
|
||
END +
|
||
(ABS(APB_18_score - 1) * 10) +
|
||
CASE
|
||
WHEN to_char(k.periode,'YYYY') = '2016' AND APB_25_score < 7 THEN 10
|
||
WHEN to_char(k.periode,'YYYY') >= '2017' AND APB_25_score < 9 THEN 10
|
||
ELSE 0
|
||
END +
|
||
CASE
|
||
WHEN APB_26_score < 38 THEN 10
|
||
ELSE 0
|
||
END +
|
||
CASE
|
||
WHEN APB_27_score < 22.5 THEN 10
|
||
ELSE 0
|
||
END +
|
||
(ABS(APB_20_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
|
||
-- Agv ARAI#37911: kenmerken verhuizen naar csu-view naar de rai-view van kavel 2 (APB), die zijn uit bovenstaande verwijderd en hieronder neergezet
|
||
-- Verschil zit 'm in meld_stdmelding_key:
|
||
-- De verhuisde kenmerk-keys van 2946 naar mld_stdmelding_key 2945 zijn:
|
||
-- 1563 (APB_21)
|
||
-- 1538 (APB_17)
|
||
-- 1564 (APB_19)
|
||
-- 1555 (APB_28)
|
||
-- 1550 (APB_29)
|
||
-- 1544 (APB_06)
|
||
-- 1556 (APB_05)
|
||
-- 1537 (APB_23)
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_apb_csu_2_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'APB'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(APB_05.mld_kenmerkmelding_waarde),0) APB_05_score,
|
||
COALESCE(fac.safe_to_number(APB_23.mld_kenmerkmelding_waarde),0) APB_23_score,
|
||
COALESCE(fac.safe_to_number(APB_06.mld_kenmerkmelding_waarde),0) APB_06_score,
|
||
COALESCE(fac.safe_to_number(APB_21.mld_kenmerkmelding_waarde),0) APB_21_score,
|
||
COALESCE(fac.safe_to_number(APB_17.mld_kenmerkmelding_waarde),0) APB_17_score,
|
||
COALESCE(fac.safe_to_number(APB_19.mld_kenmerkmelding_waarde),0) APB_19_score,
|
||
COALESCE(fac.safe_to_number(APB_28.mld_kenmerkmelding_waarde),0) APB_28_score,
|
||
COALESCE(fac.safe_to_number(APB_29.mld_kenmerkmelding_waarde),0) APB_29_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1556) APB_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1537) APB_23,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1544) APB_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1563) APB_21,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1538) APB_17,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1564) APB_19,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1555) APB_28,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1550) APB_29
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2945
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND APB_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_23.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_21.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_17.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_19.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_28.mld_melding_key(+) = m.mld_melding_key
|
||
AND APB_29.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'APB', (APB_05_score * 10) +
|
||
(APB_23_score * 2) +
|
||
(APB_06_score * 5) +
|
||
(ABS(APB_21_score - 1) * 10) +
|
||
(APB_17_score * 2) +
|
||
(ABS(APB_19_score - 1) * 10) +
|
||
(ABS(APB_28_score - 1) * 10) +
|
||
(ABS(APB_29_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
|
||
|
||
|
||
-- KAVEL 3
|
||
-- Back of House cijfers door RAI
|
||
-- Deze komen uit de melding met std_melding_key 2947
|
||
CREATE OR REPLACE VIEW arai_v_kpi_bh_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'BH'),
|
||
scores_rai AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(BH_01.mld_kenmerkmelding_waarde),0) BH_01_score,
|
||
COALESCE(fac.safe_to_number(BH_02.mld_kenmerkmelding_waarde),0) BH_02_score,
|
||
COALESCE(fac.safe_to_number(BH_03.mld_kenmerkmelding_waarde),0) BH_03_score,
|
||
COALESCE(fac.safe_to_number(BH_04.mld_kenmerkmelding_waarde),0) BH_04_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1574) BH_01,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1573) BH_02,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1580) BH_03,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1595) BH_04
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2947
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND BH_01.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_02.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_03.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_04.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'BH', (BH_01_score * 2) +
|
||
(BH_02_score * 2) +
|
||
(ABS(BH_03_score - 1) * 10) +
|
||
(ABS(BH_04_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_rai k) m;
|
||
|
||
-- KAVEL 3
|
||
-- Kantoorschoonmaak cijfers door CSU
|
||
-- Deze komen uit de melding met std_melding_key 2948
|
||
CREATE OR REPLACE VIEW arai_v_kpi_bh_csu
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'BH'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(BH_07.mld_kenmerkmelding_waarde),0) BH_07_score,
|
||
COALESCE(fac.safe_to_number(BH_08.mld_kenmerkmelding_waarde),0) BH_08_score,
|
||
COALESCE(fac.safe_to_number(BH_09.mld_kenmerkmelding_waarde),0) BH_09_score,
|
||
COALESCE(fac.safe_to_number(BH_10.mld_kenmerkmelding_waarde),0) BH_10_score,
|
||
COALESCE(fac.safe_to_number(BH_11.mld_kenmerkmelding_waarde),0) BH_11_score,
|
||
COALESCE(fac.safe_to_number(BH_12.mld_kenmerkmelding_waarde),0) BH_12_score,
|
||
COALESCE(fac.safe_to_number(BH_13.mld_kenmerkmelding_waarde),0) BH_13_score,
|
||
COALESCE(fac.safe_to_number(BH_14.mld_kenmerkmelding_waarde),0) BH_14_score,
|
||
COALESCE(fac.safe_to_number(BH_15.mld_kenmerkmelding_waarde),0) BH_15_score,
|
||
COALESCE(fac.safe_to_number(BH_16.mld_kenmerkmelding_waarde),0) BH_16_score,
|
||
COALESCE(fac.safe_to_number(BH_18.mld_kenmerkmelding_waarde),0) BH_18_score,
|
||
COALESCE(fac.safe_to_number(BH_22.mld_kenmerkmelding_waarde),0) BH_22_score,
|
||
COALESCE(fac.safe_to_number(BH_20.mld_kenmerkmelding_waarde),0) BH_20_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1578) BH_07,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1586) BH_08,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1577) BH_09,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1588) BH_10,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1587) BH_11,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1579) BH_12,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1589) BH_13,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1584) BH_14,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1585) BH_15,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1594) BH_16,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1593) BH_18,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1571) BH_22,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1592) BH_20
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2948
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND BH_07.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_08.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_09.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_10.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_11.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_12.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_13.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_14.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_15.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_16.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_18.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_22.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_20.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'BH', (ABS(BH_07_score - 1) * 10) +
|
||
(ABS(BH_08_score - 1) * 10) +
|
||
(ABS(BH_09_score - 1) * 10) +
|
||
(ABS(BH_10_score - 1) * 10) +
|
||
(ABS(BH_11_score - 1) * 10) +
|
||
(ABS(BH_12_score - 1) * 10) +
|
||
(ABS(BH_13_score - 1) * 10) +
|
||
(ABS(BH_14_score - 1) * 10) +
|
||
(ABS(BH_15_score - 1) * 10) +
|
||
CASE
|
||
WHEN BH_16_score < 1 THEN 10
|
||
WHEN BH_16_score < 2 THEN 7.5
|
||
WHEN BH_16_score < 3 THEN 5
|
||
ELSE 0
|
||
END +
|
||
(ABS(BH_18_score - 1) * 10) +
|
||
(ABS(BH_22_score - 1) * 10) +
|
||
(ABS(BH_20_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
-- Agv ARAI#37911: kenmerken verhuizen naar csu-view naar de rai-view van kavel 3 (BH), die zijn uit bovenstaande verwijderd en hieronder neergezet
|
||
-- Verschil zit 'm in meld_stdmelding_key:
|
||
-- De verhuisde kenmerk-keys van 2948 naar mld_stdmelding_key 2947 zijn:
|
||
-- 1590 (BH_21)
|
||
-- 1572 (BH_17)
|
||
-- 1591 (BH_19)
|
||
-- 1575 (BH_06)
|
||
-- 1583 (BH_05)
|
||
CREATE OR REPLACE VIEW arai_v_kpi_bh_csu_2_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'BH'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(BH_05.mld_kenmerkmelding_waarde),0) BH_05_score,
|
||
COALESCE(fac.safe_to_number(BH_06.mld_kenmerkmelding_waarde),0) BH_06_score,
|
||
COALESCE(fac.safe_to_number(BH_21.mld_kenmerkmelding_waarde),0) BH_21_score,
|
||
COALESCE(fac.safe_to_number(BH_17.mld_kenmerkmelding_waarde),0) BH_17_score,
|
||
COALESCE(fac.safe_to_number(BH_19.mld_kenmerkmelding_waarde),0) BH_19_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1583) BH_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1575) BH_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1590) BH_21,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1572) BH_17,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1591) BH_19
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2947
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND BH_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_21.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_17.mld_melding_key(+) = m.mld_melding_key
|
||
AND BH_19.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'BH', (BH_05_score * 10) +
|
||
(BH_06_score * 5) +
|
||
(ABS(BH_21_score - 1) * 10) +
|
||
(BH_17_score * 2) +
|
||
(ABS(BH_19_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
|
||
|
||
|
||
-- KAVEL 4
|
||
-- Kantoorschoonmaak cijfers door RAI
|
||
-- Deze komen uit de melding met std_melding_key 2941
|
||
CREATE OR REPLACE VIEW arai_v_kpi_ks_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'KS'),
|
||
scores_rai AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(KS_01.mld_kenmerkmelding_waarde),0) KS_01_score,
|
||
COALESCE(fac.safe_to_number(KS_02.mld_kenmerkmelding_waarde),0) KS_02_score,
|
||
COALESCE(fac.safe_to_number(KS_03.mld_kenmerkmelding_waarde),0) KS_03_score,
|
||
COALESCE(fac.safe_to_number(KS_04.mld_kenmerkmelding_waarde),0) KS_04_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1483) KS_01,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1482) KS_02,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1489) KS_03,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1504) KS_04
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2941
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND KS_01.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_02.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_03.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_04.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'KS', ((DECODE(KS_01_score, 0, 1, KS_01_score) - 1) * 2) +
|
||
((DECODE(KS_02_score, 0, 1, KS_02_score) - 1) * 2) +
|
||
(ABS(KS_03_score - 1) * 10) +
|
||
(ABS(KS_04_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_rai k) m;
|
||
|
||
-- KAVEL 4
|
||
-- Kantoorschoonmaak cijfers door CSU
|
||
-- Deze komen uit de melding met std_melding_key 2942
|
||
CREATE OR REPLACE VIEW arai_v_kpi_ks_csu
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'KS'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(KS_07.mld_kenmerkmelding_waarde),0) KS_07_score,
|
||
COALESCE(fac.safe_to_number(KS_08.mld_kenmerkmelding_waarde),0) KS_08_score,
|
||
COALESCE(fac.safe_to_number(KS_09.mld_kenmerkmelding_waarde),0) KS_09_score,
|
||
COALESCE(fac.safe_to_number(KS_10.mld_kenmerkmelding_waarde),0) KS_10_score,
|
||
COALESCE(fac.safe_to_number(KS_11.mld_kenmerkmelding_waarde),0) KS_11_score,
|
||
COALESCE(fac.safe_to_number(KS_12.mld_kenmerkmelding_waarde),0) KS_12_score,
|
||
COALESCE(fac.safe_to_number(KS_13.mld_kenmerkmelding_waarde),0) KS_13_score,
|
||
COALESCE(fac.safe_to_number(KS_14.mld_kenmerkmelding_waarde),0) KS_14_score,
|
||
COALESCE(fac.safe_to_number(KS_15.mld_kenmerkmelding_waarde),0) KS_15_score,
|
||
COALESCE(fac.safe_to_number(KS_16.mld_kenmerkmelding_waarde),0) KS_16_score,
|
||
COALESCE(fac.safe_to_number(KS_18.mld_kenmerkmelding_waarde),0) KS_18_score,
|
||
COALESCE(fac.safe_to_number(KS_20.mld_kenmerkmelding_waarde),0) KS_20_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1487) KS_07,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1496) KS_08,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1486) KS_09,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1498) KS_10,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1497) KS_11,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1488) KS_12,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1499) KS_13,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1494) KS_14,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1495) KS_15,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1503) KS_16,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1502) KS_18,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1501) KS_20
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2942
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND KS_07.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_08.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_09.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_10.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_11.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_12.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_13.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_14.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_15.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_16.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_18.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_20.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'KS', (ABS(KS_07_score - 1) * 10) +
|
||
(ABS(KS_08_score - 1) * 10) +
|
||
(ABS(KS_09_score - 1) * 10) +
|
||
(ABS(KS_10_score - 1) * 10) +
|
||
(ABS(KS_11_score - 1) * 10) +
|
||
(ABS(KS_12_score - 1) * 10) +
|
||
(ABS(KS_13_score - 1) * 10) +
|
||
(ABS(KS_14_score - 1) * 10) +
|
||
(ABS(KS_15_score - 1) * 10) +
|
||
CASE
|
||
WHEN KS_16_score < 1 THEN 10
|
||
WHEN KS_16_score < 2 THEN 7.5
|
||
WHEN KS_16_score < 3 THEN 5
|
||
ELSE 0
|
||
END +
|
||
(ABS(KS_18_score - 1) * 10) +
|
||
(ABS(KS_20_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
-- Agv ARAI#37911: kenmerken verhuizen naar csu-view naar de rai-view van kavel 4 (KS), die zijn uit bovenstaande verwijderd en hieronder neergezet
|
||
-- Verschil zit 'm in meld_stdmelding_key:
|
||
-- De verhuisde kenmerk-keys van 2942 naar mld_stdmelding_key 2941 zijn:
|
||
-- 1481 (KS_17)
|
||
-- 1500 (KS_19)
|
||
-- 1484 (KS_06)
|
||
-- 1492 (KS_05)
|
||
CREATE OR REPLACE VIEW arai_v_kpi_ks_csu_2_rai
|
||
AS
|
||
WITH normen AS
|
||
(SELECT kpi_definitie_key,
|
||
kpi_definitie_code kpi_code,
|
||
kpi_definitie_categorie1 kpi_cat1,
|
||
kpi_definitie_categorie2 kpi_cat2,
|
||
kpi_definitie_drempels normscores,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
|
||
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
|
||
FROM kpi_definitie
|
||
WHERE kpi_definitie_code = 'KS'),
|
||
scores_csu AS
|
||
(SELECT m.mld_melding_key,
|
||
1 alg_locatie_key,
|
||
TRUNC(m.mld_melding_einddatum, 'MM') periode,
|
||
COALESCE(fac.safe_to_number(KS_05.mld_kenmerkmelding_waarde),0) KS_05_score,
|
||
COALESCE(fac.safe_to_number(KS_06.mld_kenmerkmelding_waarde),0) KS_06_score,
|
||
COALESCE(fac.safe_to_number(KS_17.mld_kenmerkmelding_waarde),0) KS_17_score,
|
||
COALESCE(fac.safe_to_number(KS_19.mld_kenmerkmelding_waarde),0) KS_19_score
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1492) KS_05,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1484) KS_06,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1481) KS_17,
|
||
(SELECT * FROM mld_kenmerkmelding
|
||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 1500) KS_19
|
||
-- alg_locatie dloc
|
||
WHERE m.mld_stdmelding_key = 2941
|
||
AND m.mld_melding_status NOT IN (1)
|
||
-- AND dloc.alg_locatie_key = m.mld_alg_locatie_key
|
||
AND KS_05.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_06.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_17.mld_melding_key(+) = m.mld_melding_key
|
||
AND KS_19.mld_melding_key(+) = m.mld_melding_key
|
||
)
|
||
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
|
||
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
|
||
n000, n070, n090, n100,
|
||
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
|
||
normscores kpi_score_norm_score,
|
||
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
|
||
FROM (
|
||
SELECT n.kpi_definitie_key, n.normscores,
|
||
k.mld_melding_key,
|
||
k.alg_locatie_key,
|
||
k.periode,
|
||
n.kpi_cat1 proces,
|
||
n.kpi_cat2 onderdeel,
|
||
DECODE(n.kpi_code,
|
||
'KS', (KS_05_score * 10) +
|
||
(KS_06_score * 5) +
|
||
(KS_17_score * 2) +
|
||
(ABS(KS_19_score - 1) * 10)
|
||
) score,
|
||
n.n000, n.n070, n.n090, n.n100
|
||
FROM normen n, scores_csu k) m;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_ks
|
||
(kpi_definitie_key, kpi_score_datum, alg_locatie_key, kpi_score_xmlnode, kpi_score_refkey, kpi_score_score, kpi_score_norm_score, kpi_score_drempels)
|
||
AS
|
||
SELECT kpi_definitie_key, kpi_score_datum, alg_locatie_key, 'melding' kpi_score_xmlnode, NULL kpi_score_refkey, kpi.getNormScore(SUM(kpi_score_drempels), n000, n070, n090, n100), MIN(KPI_SCORE_NORM_SCORE), SUM(kpi_score_drempels)
|
||
FROM
|
||
(SELECT * FROM arai_v_kpi_ks_rai r
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_ks_csu c
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_ks_csu_2_rai cr
|
||
)
|
||
GROUP BY kpi_definitie_key, kpi_score_datum, alg_locatie_key, n000, n070, n090, n100;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_bh
|
||
(kpi_definitie_key, kpi_score_datum, alg_locatie_key, kpi_score_xmlnode, kpi_score_refkey, kpi_score_score, kpi_score_norm_score, kpi_score_drempels)
|
||
AS
|
||
SELECT kpi_definitie_key, kpi_score_datum, alg_locatie_key, 'melding' kpi_score_xmlnode, NULL kpi_score_refkey, kpi.getNormScore(SUM(kpi_score_drempels), n000, n070, n090, n100), MIN(KPI_SCORE_NORM_SCORE), SUM(kpi_score_drempels)
|
||
FROM
|
||
(SELECT * FROM arai_v_kpi_bh_rai r
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_bh_csu c
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_bh_csu_2_rai cr
|
||
)
|
||
GROUP BY kpi_definitie_key, kpi_score_datum, alg_locatie_key, n000, n070, n090, n100;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_apb
|
||
(kpi_definitie_key, kpi_score_datum, alg_locatie_key, kpi_score_xmlnode, kpi_score_refkey, kpi_score_score, kpi_score_norm_score, kpi_score_drempels)
|
||
AS
|
||
SELECT kpi_definitie_key, kpi_score_datum, alg_locatie_key, 'melding' kpi_score_xmlnode, NULL kpi_score_refkey, kpi.getNormScore(SUM(kpi_score_drempels), n000, n070, n090, n100), MIN(KPI_SCORE_NORM_SCORE), SUM(kpi_score_drempels)
|
||
FROM
|
||
(SELECT * FROM arai_v_kpi_apb_rai r
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_apb_csu c
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_apb_csu_2_rai cr
|
||
)
|
||
GROUP BY kpi_definitie_key, kpi_score_datum, alg_locatie_key, n000, n070, n090, n100;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_es
|
||
(kpi_definitie_key, kpi_score_datum, alg_locatie_key, kpi_score_xmlnode, kpi_score_refkey, kpi_score_score, kpi_score_norm_score, kpi_score_drempels)
|
||
AS
|
||
SELECT kpi_definitie_key, kpi_score_datum, alg_locatie_key, 'melding' kpi_score_xmlnode, NULL kpi_score_refkey, kpi.getNormScore(SUM(kpi_score_drempels), n000, n070, n090, n100), MIN(KPI_SCORE_NORM_SCORE), SUM(kpi_score_drempels)
|
||
FROM
|
||
(SELECT * FROM arai_v_kpi_es_rai r
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_es_csu c
|
||
UNION
|
||
SELECT * FROM arai_v_kpi_es_csu_2_rai cr
|
||
)
|
||
GROUP BY kpi_definitie_key, kpi_score_datum, alg_locatie_key, n000, n070, n090, n100;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_kpi_all
|
||
AS
|
||
SELECT * FROM arai_v_kpi_ks
|
||
UNION ALL
|
||
SELECT * FROM arai_v_kpi_bh
|
||
UNION ALL
|
||
SELECT * FROM arai_v_kpi_apb
|
||
UNION ALL
|
||
SELECT * FROM arai_v_kpi_es;
|
||
|
||
CREATE OR REPLACE PACKAGE arai
|
||
AS
|
||
PROCEDURE refreshscore(pUserKey IN NUMBER);
|
||
FUNCTION get_flex_value (
|
||
pmodule IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_ref_key IN NUMBER,
|
||
p_kenmerkdomein_key IN NUMBER,
|
||
p_niveau IN VARCHAR2 DEFAULT NULL)
|
||
RETURN VARCHAR2;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY arai
|
||
AS
|
||
PROCEDURE refreshscore(pUserKey IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- Waarden van de huidige periode(s) verwijderen.
|
||
-- TODO: tricky met KPI's op basis van storingsmeldingen, klachten etc; daar kan voor een
|
||
-- periode maar zo een extra melding afgemeld worden, waardoor de score opnieuw berekend wordt
|
||
|
||
DELETE FROM kpi_score;
|
||
|
||
--WHERE (kpi_definitie_key, kpi_score_datum, alg_locatie_key) IN (
|
||
-- SELECT DISTINCT kpi_definitie_key, kpi_score_datum, alg_locatie_key
|
||
-- FROM demo_v_kpi_all);
|
||
|
||
-- Opnieuw genereren van KPI scores
|
||
INSERT INTO kpi_score (
|
||
kpi_definitie_key,
|
||
kpi_score_datum,
|
||
alg_locatie_key,
|
||
kpi_score_xmlnode,
|
||
kpi_score_refkey,
|
||
kpi_score_score,
|
||
kpi_score_norm_score,
|
||
kpi_score_drempels)
|
||
SELECT * FROM arai_v_kpi_all;
|
||
|
||
COMMIT;
|
||
END;
|
||
FUNCTION get_flex_value (
|
||
pmodule IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_ref_key IN NUMBER,
|
||
p_kenmerkdomein_key IN NUMBER,
|
||
p_niveau IN VARCHAR2 DEFAULT NULL)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_value VARCHAR2 (4000);
|
||
v_kenmerkdomein_key NUMBER (10);
|
||
BEGIN
|
||
v_value :=
|
||
flx.getflex (pmodule,
|
||
p_kenmerk_key,
|
||
p_ref_key,
|
||
p_niveau);
|
||
|
||
IF p_kenmerkdomein_key IS NOT NULL
|
||
THEN
|
||
v_value := flx.getdomeinwaarde (p_kenmerkdomein_key, v_value);
|
||
END IF;
|
||
RETURN v_value;
|
||
END;
|
||
END;
|
||
/
|
||
|
||
-- ARAI#37083 QR Code alle objecten
|
||
CREATE OR REPLACE VIEW arai_v_ins_qrc_mld
|
||
AS
|
||
SELECT i.ins_deel_omschrijving hide_f_sort,
|
||
l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie,
|
||
o.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
o.alg_plaatsaanduiding fclt_f_plaats,
|
||
d.ins_discipline_omschrijving fclt_f_discipline,
|
||
g.ins_srtgroep_omschrijving fclt_f_objectgroep,
|
||
s.ins_srtdeel_omschrijving fclt_f_objectsoort,
|
||
i.ins_deel_omschrijving fclt_f_identificatie,
|
||
d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
o.alg_gebouw_code,
|
||
o.alg_verdieping_code,
|
||
i.ins_discipline_key fclt_3d_discipline_key,
|
||
l.alg_locatie_key fclt_3d_locatie_key,
|
||
i.ins_alg_ruimte_type,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id hide_f_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
ins_srtgroep g,
|
||
ins_discipline d,
|
||
alg_locatie l,
|
||
fac_bookmark b,
|
||
mld_stdmelding sm,
|
||
mld_stdmelding_srtinst si
|
||
WHERE b.fac_bookmark_naam = 'QRC_MELDING'
|
||
AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
|
||
AND ins_deel_verwijder IS NULL
|
||
AND i.ins_deel_module = 'INS'
|
||
AND i.ins_deel_parent_key IS NULL
|
||
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
||
AND g.ins_srtgroep_key = s.ins_srtgroep_key
|
||
AND d.ins_discipline_key = g.ins_discipline_key
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND sm.mld_stdmelding_key = si.mld_stdmelding_key
|
||
AND si.ins_srtinstallatie_key = DECODE(si.ins_srtinstallatie_niveau,
|
||
'S', i.ins_srtdeel_key,
|
||
'G', s.ins_srtgroep_key,
|
||
'D', g.ins_discipline_key);
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap_gegevens
|
||
(
|
||
melding_key,
|
||
afdeling,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
std.mld_stdmelding_omschrijving || ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1041)),
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283)),
|
||
m.mld_melding_datum,
|
||
mk.mld_kenmerk_volgnummer,
|
||
msk.mld_srtkenmerk_omschrijving,
|
||
-- TO_CHAR (m.mld_melding_datum, 'hh24:mi') || ' ' || -- Voor het sorteren op het inlegmoment van de melding
|
||
SUBSTR (p.prs_perslid_voornaam, 1, 1)
|
||
|| SUBSTR (p.prs_perslid_naam, 1, 1)
|
||
|| ': '
|
||
|| ARAI.get_flex_value ('MLD',
|
||
mk.mld_kenmerk_key,
|
||
m.mld_melding_key,
|
||
msk.fac_kenmerkdomein_key,
|
||
'm')
|
||
FROM mld_srtkenmerk msk,
|
||
mld_kenmerk mk,
|
||
mld_kenmerkmelding km,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p
|
||
WHERE msk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND msk.mld_srtkenmerk_key IN
|
||
(1001,
|
||
961,
|
||
1002,
|
||
943,
|
||
941,
|
||
944,
|
||
942,
|
||
922,
|
||
1003,
|
||
1029,
|
||
1030,
|
||
921,
|
||
1021,
|
||
1022,
|
||
1028,
|
||
1027,
|
||
1024,
|
||
1025,
|
||
1026,
|
||
1023)
|
||
AND km.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND std.mld_ins_discipline_key = 1541;
|
||
|
||
-- Onderstaande is t.b.v. de UDR dagrap, bevat meer kenmerksoorten, tevens voor postshow (beleid en werkafspraken)
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap_extradata
|
||
(
|
||
melding_key,
|
||
afdeling,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283)),
|
||
m.mld_melding_datum,
|
||
mk.mld_kenmerk_volgnummer,
|
||
msk.mld_srtkenmerk_omschrijving,
|
||
SUBSTR (p.prs_perslid_voornaam, 1, 1)
|
||
|| SUBSTR (p.prs_perslid_naam, 1, 1)
|
||
|| ': '
|
||
|| ARAI.get_flex_value ('MLD',
|
||
mk.mld_kenmerk_key,
|
||
m.mld_melding_key,
|
||
msk.fac_kenmerkdomein_key,
|
||
'm')
|
||
FROM mld_srtkenmerk msk,
|
||
mld_kenmerk mk,
|
||
mld_kenmerkmelding km,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p
|
||
WHERE msk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND msk.mld_srtkenmerk_key IN
|
||
(1001,
|
||
961,
|
||
1002,
|
||
943,
|
||
941,
|
||
944,
|
||
942,
|
||
922,
|
||
1003,
|
||
1029,
|
||
1030,
|
||
921,
|
||
1021,
|
||
1022,
|
||
1028,
|
||
1027,
|
||
1024,
|
||
1025,
|
||
1026,
|
||
1023,
|
||
1661, -- knelpunten beleid
|
||
1662, -- knelpunten werkafspraken
|
||
1106,
|
||
1141,
|
||
1041)
|
||
AND km.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND std.mld_ins_discipline_key = 1541;
|
||
|
||
-- Nu ook met extra meldingen die niet om dagrap gaan
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_postshow
|
||
(
|
||
melding_key,
|
||
afdeling,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283)),
|
||
m.mld_melding_datum,
|
||
mk.mld_kenmerk_volgnummer,
|
||
msk.mld_srtkenmerk_omschrijving,
|
||
SUBSTR (p.prs_perslid_voornaam, 1, 1) || SUBSTR (p.prs_perslid_naam, 1, 1) || ': ' ||
|
||
ARAI.get_flex_value (
|
||
'MLD',
|
||
mk.mld_kenmerk_key,
|
||
m.mld_melding_key,
|
||
msk.fac_kenmerkdomein_key,
|
||
'm')
|
||
FROM mld_srtkenmerk msk,
|
||
mld_kenmerk mk,
|
||
mld_kenmerkmelding km,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p
|
||
WHERE msk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND msk.mld_srtkenmerk_key IN
|
||
(1001,
|
||
961,
|
||
1002,
|
||
943,
|
||
941,
|
||
944,
|
||
942,
|
||
922,
|
||
1003,
|
||
1029,
|
||
1030,
|
||
921,
|
||
1021,
|
||
1022,
|
||
1028,
|
||
1027,
|
||
1024,
|
||
1025,
|
||
1026,
|
||
1023,
|
||
1661, -- knelpunten beleid
|
||
1662, -- knelpunten werkafspraken
|
||
1106,
|
||
1141,
|
||
1041)
|
||
AND km.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND std.mld_ins_discipline_key IN (1541, 2261);
|
||
|
||
|
||
-- Specifiek rapport voor knelpunt kenmerken
|
||
CREATE OR REPLACE VIEW arai_v_rap_postshow_data
|
||
(
|
||
melding_key,
|
||
discipline,
|
||
melding_status,
|
||
afdeling,
|
||
teammanager,
|
||
teammanager_id,
|
||
manager,
|
||
manager_id,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
md.ins_discipline_omschrijving,
|
||
ms.mld_statuses_omschrijving,
|
||
std.mld_stdmelding_omschrijving,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1681)),
|
||
(SELECT fac_usrdata_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1681)),
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1682)),
|
||
(SELECT fac_usrdata_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1682)),
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283
|
||
AND k.mld_kenmerk_verwijder IS NULL)),
|
||
m.mld_melding_datum,
|
||
mk.mld_kenmerk_volgnummer,
|
||
msk.mld_srtkenmerk_omschrijving,
|
||
SUBSTR (p.prs_perslid_voornaam, 1, 1)
|
||
|| SUBSTR (p.prs_perslid_naam, 1, 1)
|
||
|| ': '
|
||
|| ARAI.get_flex_value ('MLD',
|
||
mk.mld_kenmerk_key,
|
||
m.mld_melding_key,
|
||
msk.fac_kenmerkdomein_key,
|
||
'm')
|
||
FROM mld_srtkenmerk msk,
|
||
mld_kenmerk mk,
|
||
mld_kenmerkmelding km,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p,
|
||
mld_discipline md,
|
||
mld_statuses ms
|
||
WHERE msk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND msk.mld_srtkenmerk_key IN (961, -- knelpunt evemenent
|
||
1661, -- knelpunten beleid
|
||
1662, -- knelpunt werkafspraken
|
||
1001 -- beste practise
|
||
)
|
||
AND km.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND m.mld_melding_status = ms.mld_statuses_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND std.mld_ins_discipline_key IN (1541, 2262, 2261);
|
||
|
||
-- Managers zijn verantwoordelijk voor beleid, teammanagers voor werkafspraken.
|
||
-- Deze worden hieronder verdeelt, is er geen manager geselecteerd bij een beleidspunten dan gaat deze naar de teammanager.
|
||
-- Alleen meldingen waarvan ook echt de volgende workflowstap is gegenereerd, om het overzichtelijk te houden.
|
||
CREATE OR REPLACE VIEW arai_v_rap_postshow_knelpnt
|
||
(
|
||
melding_key,
|
||
discipline,
|
||
melding_status,
|
||
afdeling,
|
||
behandelaar,
|
||
teammanager,
|
||
teammanager_id,
|
||
manager,
|
||
manager_id,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT ad.melding_key,
|
||
ad.discipline,
|
||
ad.melding_status,
|
||
ad.afdeling,
|
||
CASE
|
||
WHEN ad.manager IS NOT NULL OR ad.teammanager IS NOT NULL
|
||
THEN
|
||
'Reeds toegewezen'
|
||
ELSE
|
||
'Nog toe te wijzen'
|
||
END
|
||
behandelaar,
|
||
CASE
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%BELEID%'
|
||
AND ad.manager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
ELSE
|
||
ad.teammanager
|
||
END
|
||
teammanager,
|
||
CASE
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%BELEID%'
|
||
AND ad.manager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
ELSE
|
||
ad.teammanager_id
|
||
END
|
||
teammanager_id,
|
||
CASE
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%WERKAFSPRA%'
|
||
AND ad.teammanager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%EVENEMENT%'
|
||
AND ad.teammanager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
ELSE
|
||
ad.manager
|
||
END
|
||
manager,
|
||
CASE
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%WERKAFSPRA%'
|
||
AND ad.teammanager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
WHEN UPPER (ad.kenmerkoms) LIKE '%EVENEMENT%'
|
||
AND ad.teammanager IS NOT NULL
|
||
THEN
|
||
NULL
|
||
ELSE
|
||
ad.manager_id
|
||
END
|
||
manager_id,
|
||
ad.evenement,
|
||
ad.meldingdatum,
|
||
ad.kenmerkvolgnr,
|
||
ad.kenmerkoms,
|
||
ad.kenmerkwaarde
|
||
FROM arai_v_rap_postshow_data ad, mld_stdmelding std, mld_melding m
|
||
WHERE ad.melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_stdmelding_key IN (4541, 4542)
|
||
AND UPPER (ad.kenmerkwaarde) NOT LIKE '%NVT%';
|
||
|
||
-- Rapport met prs_perslid_key van manager / teammanager voor eigen menu-item.
|
||
CREATE OR REPLACE VIEW arai_v_rap_post_myknlpunt
|
||
(
|
||
melding_key,
|
||
discipline,
|
||
melding_status,
|
||
afdeling,
|
||
behandelaar,
|
||
teammanager,
|
||
manager,
|
||
prs_perslid_key,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT melding_key,
|
||
discipline,
|
||
melding_status,
|
||
afdeling,
|
||
behandelaar,
|
||
teammanager,
|
||
manager,
|
||
fac.safe_to_number (COALESCE (teammanager_id, manager_id, NULL)) prs_perslid_key,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
FROM arai_v_rap_postshow_knelpnt;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_knlpnt_style
|
||
(
|
||
melding_key,
|
||
melding_status,
|
||
afdeling,
|
||
behandelaar,
|
||
rol,
|
||
naam,
|
||
evenement,
|
||
meldingdatum,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT ak.melding_key,
|
||
ak.melding_status,
|
||
ak.afdeling,
|
||
ak.behandelaar,
|
||
CASE
|
||
WHEN ak.teammanager IS NOT NULL THEN 'Teammanager'
|
||
WHEN ak.manager IS NOT NULL THEN 'Manager'
|
||
ELSE 'Nog toe te wijzen'
|
||
END
|
||
CASE,
|
||
COALESCE (ak.teammanager, ak.manager, 'Nog toe te wijzen'),
|
||
ak.evenement,
|
||
ak.meldingdatum,
|
||
ak.kenmerkoms,
|
||
ak.kenmerkwaarde
|
||
FROM arai_v_rap_postshow_knelpnt ak;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_postshow_report
|
||
(
|
||
evenement,
|
||
meldingdatum,
|
||
weeknummer,
|
||
kenmerkoms,
|
||
event_managenent,
|
||
facilities_warehouse,
|
||
traffic_management,
|
||
safety_security,
|
||
food_beverage,
|
||
ict,
|
||
account_management,
|
||
exhibitor_services,
|
||
event_operations,
|
||
planning_management,
|
||
product_manager_es,
|
||
support_center,
|
||
hide_f_sort
|
||
)
|
||
AS
|
||
SELECT x.*, y.kenmerkvolgnr
|
||
FROM ( SELECT afdeling,
|
||
evenement,
|
||
TRUNC (meldingdatum),
|
||
TO_CHAR (meldingdatum, 'YYYY-IW') week,
|
||
kenmerkoms,
|
||
LISTAGG (kenmerkwaarde, ', ')
|
||
WITHIN GROUP (ORDER BY meldingdatum)
|
||
kenmerkwaarde
|
||
FROM arai_v_rap_postshow_data b
|
||
GROUP BY afdeling, evenement, kenmerkoms, meldingdatum) PIVOT (MIN(kenmerkwaarde)
|
||
FOR afdeling
|
||
IN ('Event Management',
|
||
'Facilities/Warehouse',
|
||
'Traffic Management',
|
||
'Safety & Security',
|
||
'Food & Beverage',
|
||
'ICT',
|
||
'Account Management',
|
||
'Exhibitor Services',
|
||
'Event Operations',
|
||
'Planning Management',
|
||
'Product manager ES',
|
||
'Support Center' )) x
|
||
LEFT JOIN
|
||
( SELECT MIN (kenmerkvolgnr) kenmerkvolgnr, kenmerkoms
|
||
FROM arai_v_rap_postshow_data
|
||
GROUP BY kenmerkoms) y
|
||
ON x.kenmerkoms = y.kenmerkoms
|
||
ORDER BY x.evenement;
|
||
|
||
-- Postshow klaar voor styling
|
||
CREATE OR REPLACE VIEW arai_v_rap_postshow_style
|
||
(
|
||
afdeling,
|
||
evenement,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT x.*
|
||
FROM ( SELECT afdeling,
|
||
evenement,
|
||
kenmerkoms,
|
||
TO_CHAR (meldingdatum, 'DD-MM-YYYY') || ' ' || kenmerkwaarde waarde
|
||
FROM arai_v_rap_postshow_data b
|
||
WHERE UPPER (b.afdeling) NOT LIKE '%KNELPUNT%'
|
||
GROUP BY afdeling, evenement, kenmerkoms, kenmerkwaarde, meldingdatum
|
||
ORDER BY DECODE (afdeling,
|
||
'Event Management', 1,
|
||
'Facilities/Warehouse', 2,
|
||
'Traffic Management', 3,
|
||
'Safety & Security', 4,
|
||
'Food & Beverage', 5,
|
||
'ICT', 6,
|
||
'Account Management', 7,
|
||
'Exhibitor Services', 8,
|
||
'Event Operations', 9,
|
||
'Planning Management', 10,
|
||
'Product manager ES', 11,
|
||
'Support Center', 12,
|
||
13)) x,
|
||
DUAL
|
||
ORDER BY x.waarde;
|
||
|
||
-- Deze dagrap_report is voor gebruik als rapportage in Facilitor, hier kan ook historie in bekeken worden.
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap_report
|
||
(
|
||
evenement,
|
||
meldingdatum,
|
||
weeknummer,
|
||
kenmerkoms,
|
||
event_managenent,
|
||
food_beverage,
|
||
safety_security,
|
||
front_office,
|
||
facilities_warehouse,
|
||
technical_services,
|
||
traffic_management,
|
||
ict,
|
||
flexmanagement_hcc,
|
||
hide_f_sort
|
||
)
|
||
AS
|
||
SELECT x.*, y.kenmerkvolgnr
|
||
FROM ( SELECT afdeling,
|
||
evenement || ' ('
|
||
|| (SELECT MAX(fac.safe_to_number(SUBSTR (
|
||
a.kenmerkwaarde,
|
||
4,
|
||
INSTR (
|
||
a.kenmerkwaarde,
|
||
':')
|
||
+ 50)))
|
||
FROM arai_v_rap_dagrap_gegevens a
|
||
WHERE a.kenmerkoms LIKE '%Bezoeker%'
|
||
AND a.evenement = b.evenement)
|
||
|| ' bezoekers)'
|
||
evenement,
|
||
TRUNC (meldingdatum),
|
||
TO_CHAR (meldingdatum, 'YYYY-IW') week,
|
||
kenmerkoms,
|
||
LISTAGG (kenmerkwaarde, ', ')
|
||
WITHIN GROUP (ORDER BY meldingdatum)
|
||
kenmerkwaarde
|
||
FROM arai_v_rap_dagrap_gegevens b
|
||
GROUP BY afdeling, evenement, kenmerkoms, meldingdatum) PIVOT (MIN(kenmerkwaarde)
|
||
FOR afdeling
|
||
IN ('Event Management',
|
||
'Food & Beverage',
|
||
'Safety & Security',
|
||
'Front Office',
|
||
'Facilities/Warehouse',
|
||
'Technical Services',
|
||
'Traffic Management',
|
||
'ICT',
|
||
'Flexmanagement/HCC')) x
|
||
LEFT JOIN
|
||
( SELECT MIN (kenmerkvolgnr) kenmerkvolgnr, kenmerkoms
|
||
FROM arai_v_rap_dagrap_gegevens
|
||
GROUP BY kenmerkoms) y
|
||
ON x.kenmerkoms = y.kenmerkoms
|
||
ORDER BY x.evenement;
|
||
|
||
-- Nieuwe dagrapportage, klaar voor styling
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap_style
|
||
(
|
||
datum,
|
||
afdeling,
|
||
evenement,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT TRUNC (SYSDATE - 1) datum, x.*
|
||
FROM ( SELECT afdeling,
|
||
evenement || ' ('
|
||
|| (SELECT MAX(fac.safe_to_number(SUBSTR (
|
||
a.kenmerkwaarde,
|
||
4,
|
||
INSTR (
|
||
a.kenmerkwaarde,
|
||
':')
|
||
+ 50)))
|
||
FROM arai_v_rap_dagrap_gegevens a
|
||
WHERE a.kenmerkoms LIKE '%Bezoeker%'
|
||
AND a.evenement = b.evenement
|
||
AND a.meldingdatum BETWEEN TRUNC (SYSDATE - 1)
|
||
+ 6 / 24
|
||
AND TRUNC (SYSDATE)
|
||
+ 6 / 24)
|
||
|| ' bezoekers)'
|
||
evenement,
|
||
kenmerkoms,
|
||
LISTAGG (kenmerkwaarde, ', ')
|
||
WITHIN GROUP (ORDER BY meldingdatum)
|
||
kenmerkwaarde
|
||
FROM arai_v_rap_dagrap_gegevens b
|
||
WHERE b.meldingdatum BETWEEN TRUNC (SYSDATE - 1) + 6 / 24
|
||
AND TRUNC (SYSDATE) + 6 / 24 -- Alleen meldingen tussen 06:00 en 06:00 uur (24 uur) van de vorige dag
|
||
GROUP BY afdeling, evenement, kenmerkoms
|
||
ORDER BY DECODE (afdeling,
|
||
'Event Management Congres Centre', 1,
|
||
'Event Management Holland Complex', 2,
|
||
'Event Management Europa Complex', 3,
|
||
'Event Management Gehele complex', 4,
|
||
'Food & Beverage', 5,
|
||
'Safety & Security', 6,
|
||
'Front Office', 7,
|
||
'Facilities/Warehouse', 8,
|
||
'Technical Services', 9,
|
||
'Traffic Management', 10,
|
||
'ICT', 11,
|
||
'Flexmanagement/HCC', 12,
|
||
13),
|
||
DECODE (kenmerkoms, 'Operationele bijzonderheden', 1, 2)) x,
|
||
DUAL;
|
||
|
||
-- Deze dagrap is voor dagelijkse pdf export, hier zijn alleen evenementen zichtbaar die de vorige dag zijn afgerond.
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap
|
||
(
|
||
evenement,
|
||
kenmerkoms,
|
||
event_management,
|
||
food_beverage,
|
||
safety_security,
|
||
front_office,
|
||
facilities_warehouse,
|
||
technical_services,
|
||
traffic_management,
|
||
ict,
|
||
flexmanagement_hcc,
|
||
hide_f_sort
|
||
)
|
||
AS
|
||
SELECT x.*, y.kenmerkvolgnr
|
||
FROM ( SELECT afdeling,
|
||
evenement || ' ('
|
||
|| (SELECT MAX(fac.safe_to_number(SUBSTR (
|
||
a.kenmerkwaarde,
|
||
4,
|
||
INSTR (
|
||
a.kenmerkwaarde,
|
||
':')
|
||
+ 50)))
|
||
FROM arai_v_rap_dagrap_gegevens a
|
||
WHERE a.kenmerkoms LIKE '%Bezoeker%'
|
||
AND a.evenement = b.evenement
|
||
AND a.meldingdatum BETWEEN trunc (sysdate -1) + 6/24 AND trunc (sysdate) + 6/24)
|
||
|| ' bezoekers)'
|
||
evenement,
|
||
kenmerkoms,
|
||
LISTAGG (kenmerkwaarde, ', ')
|
||
WITHIN GROUP (ORDER BY meldingdatum)
|
||
kenmerkwaarde
|
||
FROM arai_v_rap_dagrap_gegevens b
|
||
WHERE b.meldingdatum BETWEEN trunc (sysdate -1) + 6/24 AND trunc (sysdate) + 6/24 -- Alleen meldingen tussen 06:00 en 06:00 uur (24 uur) van de vorige dag
|
||
GROUP BY afdeling, evenement, kenmerkoms) PIVOT (MIN(kenmerkwaarde)
|
||
FOR afdeling
|
||
IN ('Event Management',
|
||
'Food & Beverage',
|
||
'Safety & Security',
|
||
'Front Office',
|
||
'Facilities/Warehouse',
|
||
'Technical Services',
|
||
'Traffic Management',
|
||
'ICT',
|
||
'Flexmanagement/HCC')) x
|
||
LEFT JOIN
|
||
( SELECT MIN (kenmerkvolgnr) kenmerkvolgnr, kenmerkoms
|
||
FROM arai_v_rap_dagrap_gegevens
|
||
GROUP BY kenmerkoms) y
|
||
ON x.kenmerkoms = y.kenmerkoms
|
||
ORDER BY x.evenement;
|
||
|
||
-- Voor meer filtering mogelijkheden binnen de resultaten van de dagrapportages.
|
||
CREATE OR REPLACE VIEW arai_v_rap_dagrap_udr
|
||
(
|
||
meldingnr,
|
||
melder,
|
||
afdeling,
|
||
fclt_3d_afdeling_key,
|
||
invoerder,
|
||
fclt_3d_discipline_key,
|
||
groep,
|
||
subgroep,
|
||
melding_status,
|
||
datum,
|
||
opmerking,
|
||
evenement,
|
||
kenmerk,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
(SELECT pf.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames pf
|
||
WHERE m.prs_perslid_key = pf.prs_perslid_key)
|
||
perslid,
|
||
COALESCE (
|
||
(SELECT prs_afdeling_omschrijving
|
||
FROM prs_afdeling afd
|
||
WHERE afd.prs_afdeling_key = m.prs_afdeling_key),
|
||
(SELECT prs_afdeling_omschrijving
|
||
FROM prs_afdeling afd, prs_perslid pp
|
||
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
|
||
AND pp.prs_perslid_key = m.prs_perslid_key))
|
||
afdeling_omschrijving,
|
||
COALESCE ((m.prs_afdeling_key),
|
||
(SELECT prs_afdeling_key
|
||
FROM prs_perslid pp
|
||
WHERE pp.prs_perslid_key = m.prs_perslid_key))
|
||
afdeling_key,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key))
|
||
invoerder,
|
||
md.ins_discipline_key stdm_ins_discipline_key,
|
||
std.mld_stdmelding_omschrijving subproductgroep,
|
||
(SELECT f.fac_usrdata_omschr
|
||
FROM fac_usrdata f
|
||
WHERE f.fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key IN (1103, 1104)))
|
||
sub,
|
||
ms.mld_statuses_omschrijving,
|
||
TRUNC (m.mld_melding_datum),
|
||
m.mld_melding_opmerking,
|
||
ag.evenement,
|
||
ag.kenmerkoms,
|
||
ag.kenmerkwaarde
|
||
FROM mld_melding m,
|
||
mld_discipline md,
|
||
mld_stdmelding std,
|
||
mld_statuses ms,
|
||
arai_v_rap_dagrap_extradata ag
|
||
WHERE m.mld_melding_key = ag.melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND m.mld_melding_status = ms.mld_statuses_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mat_uur
|
||
(
|
||
datum,
|
||
aanvrager,
|
||
organisatie,
|
||
categorie,
|
||
referentie,
|
||
bedrag,
|
||
status,
|
||
kostenplaatsgroep,
|
||
kostenplaatsnr,
|
||
kostenplaats,
|
||
kostensoortgroep,
|
||
kostensoortnr,
|
||
kostensoort,
|
||
ordernr,
|
||
locatie,
|
||
district,
|
||
regio,
|
||
fclt_3d_locatie_key,
|
||
fclt_3d_afdeling_key,
|
||
materiaalkosten,
|
||
uren,
|
||
uurtarief,
|
||
correctie,
|
||
behandelaar,
|
||
uitvoerder,
|
||
vakgroeptype,
|
||
vakgroep,
|
||
evenement,
|
||
opdrkey
|
||
)
|
||
AS
|
||
SELECT f.*,
|
||
mo.mld_opdr_materiaal,
|
||
COALESCE (mo.mld_opdr_uren, mou.mld_opdr_uren_besteed) uren,
|
||
CASE
|
||
WHEN mo.mld_opdr_uurloon IS NULL THEN p.prs_perslid_uurloon
|
||
WHEN mo.mld_opdr_uurloon < 0.01 THEN p.prs_perslid_uurloon
|
||
ELSE
|
||
mo.mld_opdr_uurloon
|
||
END,
|
||
f.bedrag - COALESCE (mo.mld_opdr_materiaal, 0) - COALESCE (mld_opdr_uren * mo.mld_opdr_uurloon, 0) correctie,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = mo.prs_perslid_key)
|
||
behandelaar,
|
||
mu.naam,
|
||
srt.ins_srtdiscipline_omschrijving,
|
||
md.ins_discipline_omschrijving,
|
||
mko.evenement,
|
||
mo.mld_opdr_key
|
||
FROM mld_opdr mo,
|
||
mld_v_uitvoerende mu,
|
||
mld_discipline md,
|
||
ins_srtdiscipline srt,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p,
|
||
mld_opdr_uren mou,
|
||
( SELECT datum,
|
||
p.prs_perslid_naam
|
||
|| NVL2 (p.prs_perslid_voorletters,
|
||
', ' || p.prs_perslid_voorletters,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
||
' ' || p.prs_perslid_tussenvoegsel,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_voornaam,
|
||
' (' || p.prs_perslid_voornaam || ')',
|
||
'')
|
||
aanvrager,
|
||
d.prs_afdeling_naam organisatie,
|
||
categorie,
|
||
categorienummer,
|
||
SUM (bedrag) bedrag,
|
||
status,
|
||
kpg.prs_kostenplaatsgrp_oms,
|
||
k.prs_kostenplaats_nr,
|
||
lcl.x ('prs_kostenplaats_omschrijving',
|
||
k.prs_kostenplaats_key,
|
||
k.prs_kostenplaats_omschrijving)
|
||
kostenplaats,
|
||
ksg.prs_kostensoortgrp_oms,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_opmerking,
|
||
ordernr,
|
||
alg_locatie_code,
|
||
alg_district_omschrijving,
|
||
alg_regio_omschrijving,
|
||
alg_locatie_key,
|
||
d.prs_afdeling_key
|
||
FROM (SELECT o.prs_kostenplaats_key,
|
||
o.mld_opdr_datumbegin datum,
|
||
m.prs_perslid_key prs_perslid_key,
|
||
mdis.ins_discipline_omschrijving categorie,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
categorienummer,
|
||
COALESCE (o.mld_opdr_kosten, 0) bedrag,
|
||
s.mld_statusopdr_omschrijving status,
|
||
'MLD' module,
|
||
COALESCE (s.prs_kostensoort_key,
|
||
mdis.prs_kostensoort_key)
|
||
prs_kostensoort_key,
|
||
o.mld_opdr_ordernr ordernr,
|
||
o.mld_opdr_key kostenplaats_item_key,
|
||
-1 kostenplaats_item_child_key,
|
||
m.mld_alg_locatie_key locatie_key
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_stdmelding s,
|
||
mld_discipline mdis,
|
||
ins_srtdiscipline sd,
|
||
mld_statusopdr s
|
||
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND s.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND m.mld_stdmelding_key = s.mld_stdmelding_key
|
||
AND mdis.ins_discipline_key = s.mld_ins_discipline_key
|
||
AND mdis.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key
|
||
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 4, 10)) tab,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kpg,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
prs_perslid p,
|
||
prs_v_afdeling d,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_regio r
|
||
WHERE tab.prs_kostenplaats_key(+) = k.prs_kostenplaats_key
|
||
AND tab.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
||
AND tab.prs_perslid_key = p.prs_perslid_key(+)
|
||
AND p.prs_afdeling_key = d.prs_afdeling_key(+)
|
||
AND tab.locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND d.alg_regio_key = r.alg_regio_key(+)
|
||
AND datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
|
||
GROUP BY k.prs_kostenplaats_nr,
|
||
lcl.x ('prs_kostenplaats_omschrijving',
|
||
k.prs_kostenplaats_key,
|
||
k.prs_kostenplaats_omschrijving),
|
||
datum,
|
||
p.prs_perslid_naam
|
||
|| NVL2 (p.prs_perslid_voorletters,
|
||
', ' || p.prs_perslid_voorletters,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
||
' ' || p.prs_perslid_tussenvoegsel,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_voornaam,
|
||
' (' || p.prs_perslid_voornaam || ')',
|
||
''),
|
||
d.prs_afdeling_naam,
|
||
d.prs_afdeling_key,
|
||
categorie,
|
||
categorienummer,
|
||
status,
|
||
kpg.prs_kostenplaatsgrp_oms,
|
||
ksg.prs_kostensoortgrp_oms,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_opmerking,
|
||
ordernr,
|
||
ksg.prs_kostensoortgrp_oms,
|
||
alg_locatie_key,
|
||
alg_district_omschrijving,
|
||
alg_regio_omschrijving,
|
||
alg_locatie_code) f,
|
||
(SELECT mkm.mld_melding_key,
|
||
mkm.mld_kenmerkmelding_waarde,
|
||
ae.evenement
|
||
FROM mld_kenmerkmelding mkm, arai_v_events ae, mld_kenmerk mk
|
||
WHERE mk.mld_srtkenmerk_key = 283
|
||
AND ae.arai_events_key =
|
||
fac.safe_to_number (mkm.mld_kenmerkmelding_waarde)
|
||
AND mkm.mld_kenmerkmelding_verwijder IS NULL
|
||
AND mk.mld_kenmerk_key = mkm.mld_kenmerk_key) mko
|
||
WHERE TO_CHAR (mo.mld_melding_key || '/' || mo.mld_opdr_bedrijfopdr_volgnr) =
|
||
f.categorienummer
|
||
AND mu.mld_uitvoerende_key = mo.mld_uitvoerende_keys
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
|
||
AND m.mld_melding_key = mo.mld_melding_key
|
||
AND mo.mld_melding_key = mko.mld_melding_key(+)
|
||
AND mou.prs_perslid_key = p.prs_perslid_key(+)
|
||
AND mo.mld_opdr_key = mou.mld_opdr_key(+);
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_mat_uur_berek
|
||
(
|
||
datum,
|
||
aanvrager,
|
||
organisatie,
|
||
referentie,
|
||
status,
|
||
kostenplaatsnr,
|
||
kostenplaats,
|
||
kostensoortnr,
|
||
kostensoort,
|
||
materiaalkosten,
|
||
uren,
|
||
uurtarief,
|
||
behandelaar,
|
||
uitvoerder,
|
||
vakgroeptype,
|
||
vakgroep,
|
||
melding,
|
||
evenement,
|
||
opdrkey,
|
||
totaal_berekend,
|
||
correctie,
|
||
totaal_na_cor
|
||
)
|
||
AS
|
||
SELECT av.datum,
|
||
av.aanvrager,
|
||
av.organisatie,
|
||
av.referentie,
|
||
av.status,
|
||
av.kostenplaatsnr,
|
||
av.kostenplaats,
|
||
av.kostensoortnr,
|
||
av.kostensoort,
|
||
av.materiaalkosten,
|
||
SUM (av.uren),
|
||
av.uurtarief,
|
||
av.behandelaar,
|
||
av.uitvoerder,
|
||
av.vakgroeptype,
|
||
av.vakgroep,
|
||
sub2.mld_stdmelding_omschrijving,
|
||
av.evenement,
|
||
av.opdrkey,
|
||
sub.totaal,
|
||
av.correctie,
|
||
sub.totaalecht
|
||
FROM arai_v_rap_mat_uur av,
|
||
( SELECT referentie,
|
||
SUM (uren) * MAX (uurtarief)
|
||
+ COALESCE (MAX (materiaalkosten), 0)
|
||
totaal,
|
||
SUM (uren) * MAX (uurtarief)
|
||
+ COALESCE (MAX (materiaalkosten), 0)
|
||
+ COALESCE (MAX (correctie), 0)
|
||
totaalecht
|
||
FROM arai_v_rap_mat_uur
|
||
GROUP BY referentie) sub,
|
||
(SELECT std.mld_stdmelding_omschrijving, o.mld_opdr_key
|
||
FROM mld_stdmelding std, mld_melding m, mld_opdr o
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND o.mld_melding_key = m.mld_melding_key) sub2
|
||
WHERE av.referentie = sub.referentie AND av.opdrkey = sub2.mld_opdr_key
|
||
GROUP BY av.datum,
|
||
av.aanvrager,
|
||
av.organisatie,
|
||
av.referentie,
|
||
av.status,
|
||
av.kostenplaatsnr,
|
||
av.kostenplaats,
|
||
av.kostensoortnr,
|
||
av.kostensoort,
|
||
av.materiaalkosten,
|
||
av.uurtarief,
|
||
av.behandelaar,
|
||
av.uitvoerder,
|
||
av.vakgroeptype,
|
||
av.vakgroep,
|
||
av.evenement,
|
||
av.opdrkey,
|
||
sub.totaal,
|
||
av.correctie,
|
||
sub.totaalecht,
|
||
sub2.mld_stdmelding_omschrijving;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_ortec
|
||
(
|
||
melding_nr,
|
||
datumtijd,
|
||
vakgroep,
|
||
melding,
|
||
gereed,
|
||
locatie,
|
||
gebouw,
|
||
gebouw_naam,
|
||
verdieping,
|
||
ruimte,
|
||
standnummer,
|
||
onderwerp,
|
||
omschrijving,
|
||
evenement,
|
||
kenmerk_ebms,
|
||
contactpersoon,
|
||
telefoonnummer,
|
||
email,
|
||
rai_medewerker,
|
||
leverancier,
|
||
status,
|
||
looptijd
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
m.mld_melding_datum,
|
||
iva.ins_srtdiscipline_omschrijving,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_einddatum,
|
||
l.alg_locatie_omschrijving,
|
||
og.alg_gebouw_code gebouw,
|
||
og.alg_gebouw_naam gebouw_naam,
|
||
og.alg_verdieping_code verdieping,
|
||
og.alg_ruimte_nr ruimte,
|
||
(SELECT eb.lokatie
|
||
FROM arai_v_ebms eb
|
||
WHERE eb.arai_ebms_key =
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 141))
|
||
standnummer,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
(SELECT ae.evenement
|
||
FROM arai_v_events ae
|
||
WHERE ae.arai_events_key =
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND mk.mld_kenmerk_verwijder IS NULL
|
||
AND msk.mld_srtkenmerk_key = 283))
|
||
evenement,
|
||
(SELECT eb.arai_ebms_full
|
||
FROM arai_v_ebms eb
|
||
WHERE eb.arai_ebms_key =
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 141))
|
||
ebms,
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 3)
|
||
contactpersoon,
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 7)
|
||
telefoonnummer,
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 4)
|
||
email,
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 61)
|
||
rai_medewerker,
|
||
(SELECT mvk.mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerk mk,
|
||
mld_srtkenmerk msk,
|
||
mld_v_aanwezigkenmerkmelding mvk
|
||
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
|
||
AND mk.mld_kenmerk_key = mvk.mld_kenmerk_key
|
||
AND mvk.mld_melding_key = m.mld_melding_key
|
||
AND msk.mld_srtkenmerk_key = 942)
|
||
leverancier,
|
||
mst.mld_statuses_omschrijving,
|
||
-- substr(cast (m.mld_melding_t_uitvoertijd as varchar2 (10)), 1, instr(cast (m.mld_melding_t_uitvoertijd as varchar2 (10)), ';')-1)
|
||
mu.doorlooptijd_werkdgn
|
||
FROM mld_melding m,
|
||
ins_v_aanwezigsrtdiscipline iva,
|
||
mld_discipline md,
|
||
mld_stdmelding std,
|
||
alg_locatie l,
|
||
alg_v_allonrgoed_gegevens og,
|
||
mld_statuses mst,
|
||
mld_v_udr_melding mu
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = iva.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.mld_melding_status = mst.mld_statuses_key
|
||
AND m.mld_melding_key = mu.melding_key
|
||
AND std.mld_stdmelding_verwijder IS NULL
|
||
AND md.ins_discipline_verwijder IS NULL
|
||
AND iva.ins_srtdiscipline_key = 1;
|
||
|
||
-- Onderstaande gaat om openstaande standkeuringen, deze wordt op de vloer gebruikt.
|
||
CREATE OR REPLACE VIEW arai_v_rap_standkeuringmenu
|
||
(
|
||
mld_melding_key,
|
||
datum,
|
||
tijd,
|
||
evenement,
|
||
standnummer,
|
||
resultaat,
|
||
bevindingen,
|
||
risicoklasse,
|
||
steekproef,
|
||
apparaat,
|
||
discipline,
|
||
stdmelding,
|
||
omschrijving,
|
||
opmerking,
|
||
status,
|
||
behandelaar,
|
||
fclt_f_discipline_key
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
TRUNC (m.mld_melding_datum), -- datum
|
||
TO_CHAR (m.mld_melding_datum, 'hh24:mi'), -- tijdstip
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283))
|
||
evenement,
|
||
(SELECT lokatie
|
||
FROM arai_v_ebms
|
||
WHERE arai_ebms_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1261))
|
||
standnr,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1181))
|
||
resultaat,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2741))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2782))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2783))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2784))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2785))
|
||
bevindingen,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2701))
|
||
risicoklasse,
|
||
DECODE (
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2761),
|
||
'1',
|
||
'Ja',
|
||
'Nee')
|
||
steekproef,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2801)
|
||
steekproef_apparaat,
|
||
md.ins_discipline_omschrijving,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
mst.mld_statuses_omschrijving,
|
||
m.mld_melding_behandelaar_key,
|
||
md.ins_discipline_key --fclt_f_discipline_key
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline md,
|
||
mld_statuses mst
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND m.mld_stdmelding_key = 3481 -- Standkeuringen
|
||
AND m.mld_melding_status = mst.mld_statuses_key
|
||
AND m.mld_melding_status IN (0, 1, 2, 3, 4, 99);
|
||
|
||
-- Alle standkeuringen (niet gefilterd op status) voor raadplegen historie.
|
||
CREATE OR REPLACE VIEW arai_v_rap_standkeuringalles
|
||
(
|
||
mld_melding_key,
|
||
datum,
|
||
tijd,
|
||
evenement,
|
||
standnummer,
|
||
resultaat,
|
||
bevindingen,
|
||
risicoklasse,
|
||
steekproef,
|
||
apparaat,
|
||
discipline,
|
||
stdmelding,
|
||
omschrijving,
|
||
opmerking,
|
||
status,
|
||
behandelaar,
|
||
fclt_f_discipline_key
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
TRUNC (m.mld_melding_datum), -- datum
|
||
TO_CHAR (m.mld_melding_datum, 'hh24:mi'), -- tijdstip
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283))
|
||
evenement,
|
||
(SELECT lokatie
|
||
FROM arai_v_ebms
|
||
WHERE arai_ebms_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1261))
|
||
standnr,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1181))
|
||
resultaat,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2741))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2782))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2783))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2784))
|
||
|| ' '
|
||
|| (SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2785))
|
||
bevindingen,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2701))
|
||
risicoklasse,
|
||
DECODE (
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2761),
|
||
'1',
|
||
'Ja',
|
||
'Nee')
|
||
steekproef,
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_kenmerk_key = 2801)
|
||
steekproef_apparaat,
|
||
md.ins_discipline_omschrijving,
|
||
std.mld_stdmelding_omschrijving,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_opmerking,
|
||
mst.mld_statuses_omschrijving,
|
||
m.mld_melding_behandelaar_key,
|
||
md.ins_discipline_key --fclt_f_discipline_key
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline md,
|
||
mld_statuses mst
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND m.mld_stdmelding_key = 3481 -- Standkeuringen
|
||
AND m.mld_melding_status = mst.mld_statuses_key;
|
||
|
||
-- Prio opdrachten rapportages t.b.v. knoppen in mobile
|
||
CREATE OR REPLACE VIEW arai_v_rap_opdrprio
|
||
(
|
||
mld_opdr_key,
|
||
opdrachtnr,
|
||
status,
|
||
melding,
|
||
prioriteit,
|
||
behandelaar,
|
||
plaats,
|
||
omschrijving,
|
||
prs_perslid_key
|
||
)
|
||
AS
|
||
SELECT o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
||
opdrachtnummer,
|
||
DECODE (os.mld_statusopdr_key, 8, DECODE (o.mld_opdr_halted, 1, 'Onderbroken', os.mld_statusopdr_omschrijving), os.mld_statusopdr_omschrijving) status,
|
||
std.mld_stdmelding_omschrijving,
|
||
DECODE (m.mld_melding_spoed,
|
||
'1', lcl.l ('lcl_mld_urg_kritiek'),
|
||
lcl.l ('lcl_mld_urg_hoog'))
|
||
prio,
|
||
p.prs_perslid_naam_full,
|
||
DECODE (
|
||
v.alg_plaatsaanduiding,
|
||
'',
|
||
' (' || l.alg_locatie_omschrijving || ')',
|
||
v.alg_plaatsaanduiding
|
||
|| DECODE (v.alg_plaatsomschrijving,
|
||
'', '',
|
||
' (' || v.alg_plaatsomschrijving || ')'))
|
||
plaats,
|
||
TRIM(REGEXP_REPLACE (
|
||
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
|
||
'(([^ ]*)( |$)*){10}'),
|
||
'[[:space:]]',
|
||
' '))
|
||
|| '...',
|
||
p.prs_perslid_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
prs_v_perslid_fullnames p,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
alg_v_allonrgoed_gegevens v,
|
||
alg_locatie l,
|
||
mld_v_uitvoerende mu,
|
||
mld_statusopdr os
|
||
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
||
AND m.mld_melding_spoed IN ('1', '2') -- Kritiek, hoog
|
||
AND o.prs_perslid_key = p.prs_perslid_key
|
||
AND o.mld_typeopdr_key = 281 -- Interne opdracht
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
||
AND l.alg_locatie_key = v.alg_locatie_key
|
||
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND o.mld_statusopdr_key IN (4, 5, 8)
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND o.mld_uitvoerende_keys = 21
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_opdrprio_normlaag
|
||
(
|
||
mld_opdr_key,
|
||
opdrachtnr,
|
||
status,
|
||
melding,
|
||
behandelaar,
|
||
plaats,
|
||
geplande_aanvang,
|
||
omschrijving,
|
||
prs_perslid_key
|
||
)
|
||
AS
|
||
SELECT o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
||
opdrachtnummer,
|
||
DECODE (os.mld_statusopdr_key, 8, DECODE (o.mld_opdr_halted, 1, 'Onderbroken', os.mld_statusopdr_omschrijving), os.mld_statusopdr_omschrijving) status,
|
||
std.mld_stdmelding_omschrijving,
|
||
p.prs_perslid_naam_full,
|
||
DECODE (
|
||
v.alg_plaatsaanduiding,
|
||
'',
|
||
' (' || l.alg_locatie_omschrijving || ')',
|
||
v.alg_plaatsaanduiding
|
||
||
|
||
DECODE (v.alg_plaatsomschrijving,
|
||
'', '',
|
||
' (' || v.alg_plaatsomschrijving || ')')
|
||
) plaats,
|
||
o.mld_opdr_plandatum,
|
||
TRIM(regexp_replace(regexp_substr(o.mld_opdr_omschrijving, '(([^ ]*)( |$)*){10}'), '[[:space:]]',' ')) || '...',
|
||
p.prs_perslid_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
prs_v_perslid_fullnames p,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
alg_v_allonrgoed_gegevens v,
|
||
alg_locatie l,
|
||
mld_v_uitvoerende mu,
|
||
mld_statusopdr os
|
||
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
||
AND m.mld_melding_spoed NOT IN ('1', '2') -- Niet kritiek of hoog
|
||
AND o.prs_perslid_key = p.prs_perslid_key
|
||
AND o.mld_typeopdr_key = 281 -- Interne opdracht
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
||
AND l.alg_locatie_key = v.alg_locatie_key
|
||
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND o.mld_statusopdr_key IN (4, 5, 8)
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND o.mld_uitvoerende_keys = 21
|
||
AND TRUNC (mld_opdr_plandatum) <= TRUNC (sysdate + 3)
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_noplan_normlaag
|
||
(
|
||
mld_opdr_key,
|
||
opdrachtnr,
|
||
status,
|
||
melding,
|
||
prioriteit,
|
||
behandelaar,
|
||
plaats,
|
||
omschrijving,
|
||
prs_perslid_key
|
||
)
|
||
AS
|
||
SELECT o.mld_opdr_key,
|
||
TO_CHAR (o.mld_melding_key) || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
||
opdrachtnummer,
|
||
DECODE (os.mld_statusopdr_key, 8, DECODE (o.mld_opdr_halted, 1, 'Onderbroken', os.mld_statusopdr_omschrijving), os.mld_statusopdr_omschrijving) status,
|
||
std.mld_stdmelding_omschrijving,
|
||
DECODE (m.mld_melding_spoed,
|
||
'3', lcl.l ('lcl_mld_urg_normaal'),
|
||
lcl.l ('lcl_mld_urg_laag'))
|
||
prio,
|
||
p.prs_perslid_naam_full,
|
||
DECODE (
|
||
v.alg_plaatsaanduiding,
|
||
'',
|
||
' (' || l.alg_locatie_omschrijving || ')',
|
||
v.alg_plaatsaanduiding
|
||
||
|
||
DECODE (v.alg_plaatsomschrijving,
|
||
'', '',
|
||
' (' || v.alg_plaatsomschrijving || ')')
|
||
) plaats,
|
||
TRIM(regexp_replace(regexp_substr(o.mld_opdr_omschrijving, '(([^ ]*)( |$)*){10}'), '[[:space:]]',' ')) || '...',
|
||
p.prs_perslid_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
prs_v_perslid_fullnames p,
|
||
ins_tab_discipline d,
|
||
mld_stdmelding std,
|
||
alg_v_allonrgoed_gegevens v,
|
||
alg_locatie l,
|
||
mld_v_uitvoerende mu,
|
||
mld_statusopdr os
|
||
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
||
AND m.mld_melding_spoed NOT IN ('1', '2') -- Niet kritiek of hoog
|
||
AND o.prs_perslid_key = p.prs_perslid_key
|
||
AND o.mld_typeopdr_key = 281 -- Interne opdracht
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
||
AND l.alg_locatie_key = v.alg_locatie_key
|
||
AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND o.mld_statusopdr_key IN (4, 5, 8)
|
||
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
||
AND o.mld_uitvoerende_keys = 21
|
||
AND mld_opdr_plandatum IS NULL
|
||
AND os.mld_statusopdr_key = o.mld_statusopdr_key;
|
||
|
||
-- Rapport voor het controleren van keyusers
|
||
CREATE OR REPLACE VIEW arai_v_rap_keyusers
|
||
(
|
||
perslid_key,
|
||
naam,
|
||
keyuser,
|
||
laatste_login
|
||
)
|
||
AS
|
||
SELECT f.prs_perslid_key,
|
||
f.naam,
|
||
DECODE (f.key_user, 1, 'Ja', 'Nee'),
|
||
f.last_login
|
||
FROM fac_v_lcrap_fe_vs_key_data f, prs_perslid p
|
||
WHERE f.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_verwijder IS NULL;
|
||
|
||
-- Notificatie wanneer iemand nog opdrachten open heeft staan
|
||
CREATE OR REPLACE VIEW ARAI_V_NOTI_OPENOPDR
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
XKEY,
|
||
XSENDER,
|
||
XEMAIL,
|
||
XMOBILE
|
||
)
|
||
AS
|
||
SELECT DISTINCT 'CUST04',
|
||
NULL,
|
||
NULL,
|
||
'U heeft verlopen opdrachten',
|
||
mo.mld_opdr_key,
|
||
NULL,
|
||
NULL,
|
||
p.prs_perslid_email,
|
||
NULL
|
||
FROM mld_opdr mo,
|
||
mld_melding m,
|
||
mld_stdmelding ms,
|
||
mld_discipline md,
|
||
prs_perslid p,
|
||
fac_tracking t
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
|
||
AND ms.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND mo.mld_uitvoerende_keys = p.prs_perslid_key
|
||
AND md.ins_srtdiscipline_key IN (22, 101, 102)
|
||
AND mo.mld_statusopdr_key IN (5, 8, 10)
|
||
AND mo.mld_opdr_einddatum > SYSDATE - 14
|
||
AND mo.mld_opdr_einddatum < SYSDATE
|
||
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
|
||
- fac_notificatie_job_interval
|
||
/ 24
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_OPENOPDR')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_OPENOPDR')
|
||
UNION ALL
|
||
SELECT DISTINCT 'CUST04',
|
||
NULL,
|
||
NULL,
|
||
'U heeft verlopen opdrachten',
|
||
mo.mld_opdr_key,
|
||
NULL,
|
||
NULL,
|
||
p.prs_bedrijf_email,
|
||
NULL
|
||
FROM mld_opdr mo,
|
||
mld_melding m,
|
||
mld_stdmelding ms,
|
||
mld_discipline md,
|
||
prs_bedrijf p,
|
||
fac_tracking t
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = ms.mld_stdmelding_key
|
||
AND ms.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND mo.mld_uitvoerende_keys = p.prs_bedrijf_key
|
||
AND md.ins_srtdiscipline_key IN (22, 101, 102)
|
||
AND mo.mld_statusopdr_key IN (5, 8, 10)
|
||
AND mo.mld_opdr_einddatum > SYSDATE - 14
|
||
AND mo.mld_opdr_einddatum < SYSDATE
|
||
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
|
||
- fac_notificatie_job_interval
|
||
/ 24
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_OPENOPDR')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_OPENOPDR');
|
||
|
||
CREATE OR REPLACE VIEW arai_v_noti_manager
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey,
|
||
xsender,
|
||
xemail,
|
||
xmobile,
|
||
attachments
|
||
)
|
||
AS
|
||
SELECT 'CUST03',
|
||
NULL,
|
||
(SELECT fac_usrdata_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1682)), -- Verantwoordelijke manager
|
||
'Er staat een nieuw knelpunt beleid voor u klaar',
|
||
m.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM mld_melding m, fac_tracking t
|
||
WHERE m.mld_melding_status = 2 -- NEW
|
||
AND m.mld_stdmelding_key = 4541 -- Knelpunt beleid
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_srtnotificatie_key =
|
||
(SELECT fac_srtnotificatie_key
|
||
FROM fac_srtnotificatie
|
||
WHERE fac_srtnotificatie_code = 'MLDNEW')
|
||
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
|
||
- fac_notificatie_job_interval
|
||
/ 24
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_MANAGER')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_MANAGER');
|
||
|
||
CREATE OR REPLACE VIEW arai_v_noti_tmanager
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey,
|
||
xsender,
|
||
xemail,
|
||
xmobile,
|
||
attachments
|
||
)
|
||
AS
|
||
SELECT 'CUST05',
|
||
NULL,
|
||
(SELECT fac_usrdata_code
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT MAX (mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 1681)), -- Verantwoordelijke Teammanager
|
||
'Er staat een nieuw knelpunt werkafspraken voor u klaar',
|
||
m.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
FROM mld_melding m, fac_tracking t
|
||
WHERE m.mld_melding_status = 2
|
||
AND m.mld_stdmelding_key = 4542 -- Knelpunt werkafspraken
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_srtnotificatie_key =
|
||
(SELECT fac_srtnotificatie_key
|
||
FROM fac_srtnotificatie
|
||
WHERE fac_srtnotificatie_code = 'MLDNEW')
|
||
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
|
||
- fac_notificatie_job_interval
|
||
/ 24
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_TMANAGER')
|
||
AND (SELECT fac_notificatie_job_nextrun
|
||
FROM fac_notificatie_job
|
||
WHERE UPPER(fac_notificatie_job_view) =
|
||
'ARAI_V_NOTI_TMANAGER');
|
||
|
||
-- Zowel voltooide als lopende taken, t.b.v. compliance dashboards
|
||
CREATE OR REPLACE VIEW arai_v_rap_compliance_data
|
||
(
|
||
ins_deel_key,
|
||
ins_deelsrtcontrole_key,
|
||
taakcategorie,
|
||
discipline,
|
||
objectsoort,
|
||
objectomschr,
|
||
taakomschrijving,
|
||
plandatum,
|
||
status,
|
||
gebouw,
|
||
verdieping,
|
||
ruimte,
|
||
te_laat_dagen,
|
||
dagen_tegaan,
|
||
wettelijk_verplicht,
|
||
prioriteit,
|
||
beheerder
|
||
)
|
||
AS
|
||
SELECT i.ins_deel_key,
|
||
dl.ins_deelsrtcontrole_key,
|
||
disc.ins_discipline_omschrijving,
|
||
ic.ins_discipline_omschrijving,
|
||
srt.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
s.ins_srtcontrole_omschrijving,
|
||
dl.ins_deelsrtcontrole_plandatum,
|
||
CASE
|
||
WHEN ROUND (TRUNC (SYSDATE) - dl.ins_deelsrtcontrole_plandatum) >
|
||
0
|
||
THEN
|
||
'Te laat'
|
||
ELSE
|
||
DECODE (st.ins_controlestatus_omschr, 'Afgemeld', 'Voltooid', st.ins_controlestatus_omschr)
|
||
END
|
||
status,
|
||
ag.alg_gebouw_omschrijving,
|
||
av.alg_verdieping_omschrijving,
|
||
ar.alg_ruimte_omschrijving,
|
||
CASE
|
||
WHEN ROUND (TRUNC (SYSDATE) - dl.ins_deelsrtcontrole_plandatum) >
|
||
0
|
||
THEN
|
||
ROUND (TRUNC (SYSDATE) - dl.ins_deelsrtcontrole_plandatum)
|
||
ELSE
|
||
NULL
|
||
END
|
||
te_laat_dagen,
|
||
CASE
|
||
WHEN ROUND (TRUNC (SYSDATE) - dl.ins_deelsrtcontrole_plandatum) <
|
||
0
|
||
THEN
|
||
ROUND(ABS( (TRUNC (SYSDATE)
|
||
- dl.ins_deelsrtcontrole_plandatum)))
|
||
ELSE
|
||
NULL
|
||
END
|
||
dagen_te_gaan,
|
||
CASE
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%WETTELIJK%'
|
||
THEN
|
||
'Ja'
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%VERPLICHT%'
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END
|
||
wettelijk_verplicht,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk k
|
||
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND kd.ins_deel_key = i.ins_deel_key
|
||
AND k.ins_kenmerk_niveau = 'D'
|
||
AND k.ins_srtkenmerk_key = 561))
|
||
prioriteit,
|
||
(SELECT f.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames f
|
||
WHERE f.prs_perslid_key = i.prs_perslid_key_beh)
|
||
beheerder
|
||
FROM ins_deelsrtcontrole dl,
|
||
ins_deel i,
|
||
ins_srtcontrole s,
|
||
ins_srtdeel srt,
|
||
ctr_v_aanwezigdiscipline disc,
|
||
ins_discipline ic,
|
||
ins_controlestatuses st,
|
||
alg_gebouw ag,
|
||
alg_ruimte ar,
|
||
alg_verdieping av
|
||
WHERE dl.ins_deel_key = i.ins_deel_key
|
||
AND dl.ins_srtcontrole_key = s.ins_srtcontrole_key
|
||
AND i.ins_srtdeel_key = srt.ins_srtdeel_key
|
||
AND i.ins_srtdeel_key = s.ins_srtinstallatie_key
|
||
AND i.ins_discipline_key = ic.ins_discipline_key
|
||
AND dl.ins_deelsrtcontrole_status = st.ins_controlestatus_key
|
||
AND s.ctr_discipline_key = disc.ins_discipline_key
|
||
AND disc.ins_discipline_key IN (1941, 2021)
|
||
AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
||
AND i.ins_alg_ruimte_type = 'R'
|
||
AND ar.alg_verdieping_key = av.alg_verdieping_key
|
||
AND av.alg_gebouw_key = ag.alg_gebouw_key
|
||
AND dl.ins_deelsrtcontrole_plandatum > SYSDATE - 365
|
||
AND dl.ins_deelsrtcontrole_status IN (0, 2) -- gepland, in behandeling
|
||
UNION ALL
|
||
SELECT
|
||
i.ins_deel_key,
|
||
dl.ins_deelsrtcontrole_key,
|
||
disc.ins_discipline_omschrijving,
|
||
ic.ins_discipline_omschrijving,
|
||
srt.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
s.ins_srtcontrole_omschrijving,
|
||
dl.ins_deelsrtcontrole_plandatum,
|
||
DECODE (st.ins_controlestatus_omschr, 'Afgemeld', 'Voltooid', st.ins_controlestatus_omschr) status,
|
||
ag.alg_gebouw_omschrijving,
|
||
av.alg_verdieping_omschrijving,
|
||
ar.alg_ruimte_omschrijving,
|
||
NULL te_laat_dagen,
|
||
NULL dagen_te_gaan,
|
||
CASE
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%WETTELIJK%'
|
||
THEN
|
||
'Ja'
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%VERPLICHT%'
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END
|
||
wettelijk_verplicht,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk k
|
||
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND kd.ins_deel_key = i.ins_deel_key
|
||
AND k.ins_kenmerk_niveau = 'D'
|
||
AND k.ins_srtkenmerk_key = 561))
|
||
prioriteit,
|
||
(SELECT f.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames f
|
||
WHERE f.prs_perslid_key = i.prs_perslid_key_beh)
|
||
beheerder
|
||
FROM ins_deelsrtcontrole dl,
|
||
ins_deel i,
|
||
ins_srtcontrole s,
|
||
ins_srtdeel srt,
|
||
ctr_v_aanwezigdiscipline disc,
|
||
ins_discipline ic,
|
||
ins_controlestatuses st,
|
||
alg_gebouw ag,
|
||
alg_ruimte ar,
|
||
alg_verdieping av
|
||
WHERE dl.ins_deel_key = i.ins_deel_key
|
||
AND dl.ins_srtcontrole_key = s.ins_srtcontrole_key
|
||
AND i.ins_srtdeel_key = srt.ins_srtdeel_key
|
||
AND i.ins_srtdeel_key = s.ins_srtinstallatie_key
|
||
AND i.ins_discipline_key = ic.ins_discipline_key
|
||
AND dl.ins_deelsrtcontrole_status = st.ins_controlestatus_key
|
||
AND s.ctr_discipline_key = disc.ins_discipline_key
|
||
AND disc.ins_discipline_key IN (1941, 2021)
|
||
AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
||
AND i.ins_alg_ruimte_type = 'R'
|
||
AND ar.alg_verdieping_key = av.alg_verdieping_key
|
||
AND av.alg_gebouw_key = ag.alg_gebouw_key
|
||
AND dl.ins_deelsrtcontrole_status IN (5, 6)
|
||
UNION ALL
|
||
SELECT
|
||
i.ins_deel_key,
|
||
NULL,
|
||
disc.ins_discipline_omschrijving,
|
||
ic.ins_discipline_omschrijving,
|
||
srt.ins_srtdeel_omschrijving,
|
||
i.ins_deel_omschrijving,
|
||
s.ins_srtcontrole_omschrijving,
|
||
fac.nextcyclusdatedeel (i.ins_deel_key, s.ins_srtcontrole_key, 1),
|
||
CASE
|
||
WHEN ROUND(TRUNC (SYSDATE)
|
||
- fac.nextcyclusdatedeel (i.ins_deel_key,
|
||
s.ins_srtcontrole_key, 1)) > 0
|
||
THEN
|
||
'Te laat'
|
||
ELSE
|
||
'Gepland'
|
||
END
|
||
status,
|
||
ag.alg_gebouw_omschrijving,
|
||
av.alg_verdieping_omschrijving,
|
||
ar.alg_ruimte_omschrijving,
|
||
CASE
|
||
WHEN ROUND(TRUNC (SYSDATE)
|
||
- fac.nextcyclusdatedeel (i.ins_deel_key,
|
||
s.ins_srtcontrole_key, 1)) > 0
|
||
THEN
|
||
ROUND(TRUNC (SYSDATE)
|
||
- fac.nextcyclusdatedeel (i.ins_deel_key,
|
||
s.ins_srtcontrole_key, 1))
|
||
ELSE
|
||
NULL
|
||
END
|
||
te_laat_dagen,
|
||
CASE
|
||
WHEN ROUND(TRUNC (SYSDATE)
|
||
- fac.nextcyclusdatedeel (i.ins_deel_key,
|
||
s.ins_srtcontrole_key, 1)) < 0
|
||
THEN
|
||
ROUND(ABS( (TRUNC (SYSDATE)
|
||
- fac.nextcyclusdatedeel (i.ins_deel_key,
|
||
s.ins_srtcontrole_key, 1))))
|
||
ELSE
|
||
NULL
|
||
END
|
||
dagen_te_gaan,
|
||
CASE
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%WETTELIJK%'
|
||
THEN
|
||
'Ja'
|
||
WHEN UPPER (s.ins_srtcontrole_opmerking) LIKE '%VERPLICHT%'
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END
|
||
wettelijk_verplicht,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key =
|
||
(SELECT fac.safe_to_number (ins_kenmerkdeel_waarde)
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk k
|
||
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
|
||
AND kd.ins_deel_key = i.ins_deel_key
|
||
AND k.ins_kenmerk_niveau = 'D'
|
||
AND k.ins_srtkenmerk_key = 561))
|
||
prioriteit,
|
||
(SELECT f.prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames f
|
||
WHERE f.prs_perslid_key = i.prs_perslid_key_beh)
|
||
beheerder
|
||
FROM
|
||
ins_deel i,
|
||
ins_srtcontrole s,
|
||
ins_srtdeel srt,
|
||
ctr_v_aanwezigdiscipline disc,
|
||
ins_discipline ic,
|
||
alg_gebouw ag,
|
||
alg_ruimte ar,
|
||
alg_verdieping av
|
||
WHERE i.ins_srtdeel_key = srt.ins_srtdeel_key
|
||
AND i.ins_srtdeel_key = s.ins_srtinstallatie_key
|
||
AND i.ins_discipline_key = ic.ins_discipline_key
|
||
AND s.ctr_discipline_key = disc.ins_discipline_key
|
||
AND disc.ins_discipline_key IN (1941, 2021)
|
||
AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
||
AND i.ins_alg_ruimte_type = 'R'
|
||
AND ar.alg_verdieping_key = av.alg_verdieping_key
|
||
AND av.alg_gebouw_key = ag.alg_gebouw_key
|
||
AND i.ins_deel_verwijder IS NULL
|
||
AND NOT EXISTS (SELECT 'x' FROM ins_deelsrtcontrole
|
||
WHERE i.ins_deel_key = ins_deel_key
|
||
AND s.ins_srtcontrole_key = ins_srtcontrole_key
|
||
AND fac.nextcyclusdatedeel (i.ins_deel_key, s.ins_srtcontrole_key, 1) = ins_deelsrtcontrole_datum_org);
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_com_totaal
|
||
(
|
||
STATUS,
|
||
AANTAL
|
||
)
|
||
AS
|
||
SELECT status, COUNT ( * )
|
||
FROM arai_v_rap_compliance_data
|
||
GROUP BY status;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_com_wet
|
||
(
|
||
STATUS,
|
||
AANTAL
|
||
)
|
||
AS
|
||
SELECT status, COUNT ( * )
|
||
FROM arai_v_rap_compliance_data
|
||
WHERE UPPER (wettelijk_verplicht) = 'JA'
|
||
GROUP BY status;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_com_kritisch
|
||
(
|
||
STATUS,
|
||
AANTAL
|
||
)
|
||
AS
|
||
SELECT status, COUNT ( * )
|
||
FROM arai_v_rap_compliance_data
|
||
WHERE prioriteit LIKE '%1%'
|
||
GROUP BY status;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_com_inspecties
|
||
(
|
||
STATUS,
|
||
AANTAL
|
||
)
|
||
AS
|
||
SELECT status, COUNT ( * )
|
||
FROM arai_v_rap_compliance_data
|
||
WHERE UPPER (taakcategorie) = 'INSPECTIE'
|
||
GROUP BY status;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_com_onderhoud
|
||
(
|
||
STATUS,
|
||
AANTAL
|
||
)
|
||
AS
|
||
SELECT status, COUNT ( * )
|
||
FROM arai_v_rap_compliance_data
|
||
WHERE UPPER (taakcategorie) = 'ONDERHOUD'
|
||
GROUP BY status;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_graph_taken_voltooid
|
||
(
|
||
FCLT_XAS_,
|
||
FCLT_YAS_
|
||
)
|
||
AS
|
||
SELECT aantal, sub.totaal
|
||
FROM arai_v_graph_com_totaal,
|
||
(SELECT SUM (aantal) totaal FROM arai_v_graph_com_totaal
|
||
WHERE UPPER (status) NOT LIKE 'GEPLAND') sub
|
||
WHERE UPPER (status) = 'VOLTOOID';
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_disco
|
||
(
|
||
mld_melding_key,
|
||
meldingnummer,
|
||
extern_nr,
|
||
meldbron,
|
||
mld_melding_start_key,
|
||
alg_district_omschrijving,
|
||
locatie,
|
||
locatie_omschrijving,
|
||
alg_locatie_key,
|
||
onrgoed_key,
|
||
gebouw,
|
||
gebouw_naam,
|
||
gebouw_key,
|
||
verdieping,
|
||
verdieping_key,
|
||
ruimtenr,
|
||
ruimte_omschrijving,
|
||
ruimte_key,
|
||
melding_ordernr,
|
||
kostensoortgroep,
|
||
kostensoort,
|
||
kostenplaats,
|
||
kostenplaats_oms,
|
||
melder,
|
||
prs_perslid_key,
|
||
afdeling,
|
||
afdeling_omschrijving,
|
||
prs_bedrijf_key,
|
||
invoerder,
|
||
invoerder_key,
|
||
behandelaar,
|
||
behandelaar_key,
|
||
soortmelding,
|
||
ins_discipline_key,
|
||
ins_srtdiscipline_prefix,
|
||
productgroep,
|
||
subproductgroep,
|
||
subproductgroepgroep,
|
||
status,
|
||
plan_uitvoertijd,
|
||
datum,
|
||
datumfilter,
|
||
plan_einddatum,
|
||
prioriteit,
|
||
ingezien,
|
||
geaccepteerd,
|
||
afgemeld,
|
||
verwerkt,
|
||
acceptoptijd,
|
||
uitvoeringoptijd_sla,
|
||
uitvoeringoptijd_afspraak,
|
||
onderwerp,
|
||
omschrijving,
|
||
opmerking,
|
||
mld_melding_parentkey,
|
||
tevredenheid,
|
||
tevredenheid_opm,
|
||
object_omschrijving,
|
||
geplande_actie,
|
||
opdracht_key,
|
||
opdracht_volgnummer,
|
||
opdracht_type,
|
||
opdracht_status,
|
||
opdracht_datum,
|
||
opdracht_einddatum,
|
||
opdracht_plandatum,
|
||
opdracht_verzonden,
|
||
opdracht_geaccepteerd,
|
||
opdracht_afgemeld,
|
||
opdracht_verwerkt,
|
||
opdracht_omschrijving,
|
||
opdracht_opmerking,
|
||
opdracht_uitvoerende,
|
||
opdracht_contract,
|
||
opdracht_behandelaar,
|
||
opdracht_behandelaar_key,
|
||
opdracht_uren,
|
||
opdracht_uren_besteed,
|
||
opdracht_correctie,
|
||
opdracht_materiaal,
|
||
opdracht_uurtarief,
|
||
opdracht_kosten,
|
||
opdracht_kostenplaats,
|
||
opdracht_kostenplaats_oms
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
TO_CHAR (m.mld_melding_key) meldingnummer,
|
||
m.mld_melding_externnr,
|
||
mld_meldbron_omschrijving meldbron,
|
||
m.mld_melding_start_key,
|
||
alg_district_omschrijving,
|
||
alg_locatie_code locatie,
|
||
alg_locatie_omschrijving locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
og.alg_gebouw_code gebouw,
|
||
og.alg_gebouw_naam gebouw_naam,
|
||
og.alg_gebouw_key,
|
||
og.alg_verdieping_code verdieping,
|
||
og.alg_verdieping_key,
|
||
og.alg_ruimte_nr ruimte,
|
||
og.alg_ruimte_omschrijving ruimte_omschrijving,
|
||
og.alg_ruimte_key,
|
||
m.mld_melding_ordernr melding_ordernr,
|
||
(SELECT ksg.prs_kostensoortgrp_oms
|
||
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
|
||
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
|
||
AND ks.prs_kostensoort_key =
|
||
(SELECT COALESCE (sm.prs_kostensoort_key,
|
||
disc.prs_kostensoort_key)
|
||
FROM mld_stdmelding sm, mld_discipline disc
|
||
WHERE sm.mld_ins_discipline_key =
|
||
disc.ins_discipline_key
|
||
AND sm.mld_stdmelding_key =
|
||
s.mld_stdmelding_key))
|
||
kostensoortgroep,
|
||
(SELECT ks.prs_kostensoort_oms
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
(SELECT COALESCE (sm.prs_kostensoort_key,
|
||
disc.prs_kostensoort_key)
|
||
FROM mld_stdmelding sm, mld_discipline disc
|
||
WHERE sm.mld_ins_discipline_key =
|
||
disc.ins_discipline_key
|
||
AND sm.mld_stdmelding_key =
|
||
s.mld_stdmelding_key))
|
||
kostensoort,
|
||
(SELECT k.prs_kostenplaats_nr
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
|
||
kostenplaats,
|
||
(SELECT k.prs_kostenplaats_omschrijving
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
|
||
kostenplaats_oms,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = m.prs_perslid_key)
|
||
melder,
|
||
m.prs_perslid_key,
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_afdeling afd, prs_perslid pp
|
||
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
|
||
AND pp.prs_perslid_key = m.prs_perslid_key)
|
||
afdeling,
|
||
(SELECT prs_afdeling_omschrijving
|
||
FROM prs_afdeling afd, prs_perslid pp
|
||
WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
|
||
AND pp.prs_perslid_key = m.prs_perslid_key)
|
||
afdeling_omschrijving,
|
||
(SELECT prs_bedrijf_key
|
||
FROM prs_v_afdeling pva, prs_perslid pp
|
||
WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
|
||
AND pp.prs_perslid_key = m.prs_perslid_key)
|
||
prs_bedrijf_key,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key =
|
||
mld.getmeldinguser (m.mld_melding_key))
|
||
invoerder,
|
||
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key),
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all
|
||
WHERE prs_perslid_key = m.mld_melding_behandelaar_key),
|
||
m.mld_melding_behandelaar_key,
|
||
sd.ins_srtdiscipline_omschrijving soortmelding,
|
||
md.ins_discipline_key ins_discipline_key,
|
||
ins_srtdiscipline_prefix ins_srtdiscipline_prefix,
|
||
md.ins_discipline_omschrijving productgroep,
|
||
s.mld_stdmelding_omschrijving subproductgroep,
|
||
(SELECT smg.mld_stdmeldinggroep_naam
|
||
FROM mld_stdmeldinggroep smg
|
||
WHERE smg.mld_stdmeldinggroep_key = s.mld_stdmeldinggroep_key)
|
||
subproductgroepgroep,
|
||
(SELECT DECODE (
|
||
COALESCE (par.mld_melding_status,
|
||
m.mld_melding_status),
|
||
4,
|
||
DECODE (o.mld_opdr_key,
|
||
NULL, mld_statuses_omschrijving,
|
||
'Niet opgelost'),
|
||
mld_statuses_omschrijving
|
||
)
|
||
FROM mld_statuses sta
|
||
WHERE sta.mld_statuses_key =
|
||
COALESCE (par.mld_melding_status,
|
||
m.mld_melding_status))
|
||
status,
|
||
COALESCE (
|
||
par.plan_uitvoertijd,
|
||
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
|
||
'U', TO_NUMBER (NULL),
|
||
m.mld_melding_t_uitvoertijd.tijdsduur)
|
||
)
|
||
plan_uitvoertijd, -- Altijd in dagen; anders NULL!
|
||
COALESCE (par.mld_melding_datum, m.mld_melding_datum) datum,
|
||
m.mld_melding_datum datumfilter,
|
||
COALESCE (par.mld_melding_einddatum, m.mld_melding_einddatum)
|
||
plan_einddatum,
|
||
DECODE(mld_melding_spoed, 1, 'Kritiek', 2, 'Hoog', 3, 'Normaal', 4, 'Laag', 'Onbekend') prioritieit,
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 3) ingezien,
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 4) geaccepteerd,
|
||
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 1))
|
||
afgemeld,
|
||
fac.gettrackingdate ('MLDVER', m.mld_melding_key) verwerkt,
|
||
CASE
|
||
WHEN mld_melding_acceptdatum_std <
|
||
COALESCE (
|
||
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
|
||
COALESCE (
|
||
fac.gettrackingdate ('MLDACP',
|
||
m.mld_melding_key),
|
||
SYSDATE
|
||
)
|
||
)
|
||
THEN
|
||
0
|
||
ELSE
|
||
1
|
||
END
|
||
acceptoptijd,
|
||
CASE
|
||
WHEN s.mld_stdmelding_slabewaken = 0
|
||
OR m.mld_melding_indult = 1
|
||
THEN
|
||
NULL
|
||
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
|
||
THEN
|
||
1
|
||
ELSE
|
||
CASE
|
||
-- vooralsnog WHEN mld.getactualuitvoer(m.mld_melding_key).tijdsduur <
|
||
-- te traag m.mld_melding_t_uitvoertijd.tijdsduur + m.mld_melding_t_respijt.tijdsduur
|
||
WHEN m.mld_melding_einddatum_std >
|
||
COALESCE (
|
||
fac.gettrackingdate ('MLDAFM',
|
||
m.mld_melding_key),
|
||
SYSDATE
|
||
)
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
END
|
||
uitvoeringoptijd_sla,
|
||
CASE
|
||
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NOT NULL
|
||
THEN
|
||
1
|
||
ELSE
|
||
CASE
|
||
WHEN m.mld_melding_einddatum >
|
||
COALESCE (
|
||
fac.gettrackingdate ('MLDAFM',
|
||
m.mld_melding_key),
|
||
SYSDATE
|
||
)
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
END
|
||
uitvoeringoptijd_afspraak,
|
||
m.mld_melding_onderwerp,
|
||
m.mld_melding_omschrijving omschrijving,
|
||
m.mld_melding_opmerking opmerking,
|
||
m.mld_melding_parentkey,
|
||
m.mld_melding_satisfaction,
|
||
m.mld_melding_satisfaction_op,
|
||
(SELECT MAX (ins_deel_omschrijving)
|
||
FROM ins_deel id, mld_melding_object mo
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND mo.ins_deel_key = id.ins_deel_key)
|
||
object_omschrijving,
|
||
DECODE (
|
||
INSTR (mld_melding_opmerking, 'Automatisch gegenereerd door'),
|
||
1,
|
||
'yes',
|
||
'no')
|
||
geplande_actie,
|
||
o.mld_opdr_key,
|
||
o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer,
|
||
(SELECT mld_typeopdr_omschrijving
|
||
FROM mld_typeopdr t
|
||
WHERE o.mld_typeopdr_key = t.mld_typeopdr_key)
|
||
opdracht_type,
|
||
(SELECT REPLACE (mld_statusopdr_omschrijving,
|
||
'Uitgegeven',
|
||
'Toegekend')
|
||
mld_statusopdr_omschrijving
|
||
FROM mld_statusopdr sta
|
||
WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key)
|
||
opdracht_status,
|
||
o.mld_opdr_datumbegin opdracht_datum,
|
||
o.mld_opdr_einddatum opdracht_einddatum,
|
||
o.mld_opdr_plandatum opdracht_plandatum,
|
||
o.mld_opdr_verzonden opdracht_verzonden,
|
||
fac.gettrackingdate ('ORDACP', o.mld_opdr_key)
|
||
opdracht_geaccepteerd,
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld,
|
||
fac.gettrackingdate ('ORDVER', mld_opdr_key) opdracht_verwerkt,
|
||
o.mld_opdr_omschrijving opdracht_omschrijving,
|
||
o.mld_opdr_opmerking opdracht_opmerking,
|
||
(SELECT naam
|
||
FROM mld_v_uitvoerende u
|
||
WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys)
|
||
opdracht_uitvoerende,
|
||
NULL opdracht_contract,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all
|
||
WHERE prs_perslid_key = o.prs_perslid_key)
|
||
behandelaar,
|
||
o.prs_perslid_key opdracht_contactpersoon,
|
||
DECODE (mld_statusopdr_key, 1, 0, 2, 0, -- afgewezen, niet akkoord
|
||
o.mld_opdr_uren)
|
||
opdracht_uren,
|
||
(SELECT COUNT (mld_opdr_uren_besteed)
|
||
FROM mld_opdr_uren ou
|
||
WHERE ou.mld_opdr_key = o.mld_opdr_key
|
||
AND mld_opdr_uren_status IN (3, -- goedgekeurd
|
||
4) -- verwerkt
|
||
)
|
||
uren_besteed,
|
||
DECODE (
|
||
mld_statusopdr_key,
|
||
1,
|
||
0,
|
||
2,
|
||
0,
|
||
o.mld_opdr_kosten
|
||
- o.mld_opdr_materiaal
|
||
- (o.mld_opdr_uren * o.mld_opdr_uurloon)
|
||
)
|
||
opdracht_correctie,
|
||
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_materiaal)
|
||
opdracht_materiaal,
|
||
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_uurloon)
|
||
opdracht_uurtarief,
|
||
DECODE (mld_statusopdr_key, 1, 0, 2, 0, o.mld_opdr_kosten)
|
||
opdracht_kosten,
|
||
(SELECT k.prs_kostenplaats_nr
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
|
||
opdracht_kostenplaats,
|
||
(SELECT k.prs_kostenplaats_omschrijving
|
||
FROM prs_kostenplaats k
|
||
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
|
||
opdracht_kostenplaats_oms
|
||
FROM mld_melding m,
|
||
mld_meldbron mb,
|
||
mld_stdmelding s,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_v_allonrgoed_gegevens og,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
mld_opdr o,
|
||
(SELECT mld_melding_key,
|
||
mld_melding_status,
|
||
mld_melding_datum,
|
||
mld_melding_einddatum,
|
||
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
|
||
'U', TO_NUMBER (NULL),
|
||
m.mld_melding_t_uitvoertijd.tijdsduur)
|
||
plan_uitvoertijd
|
||
FROM mld_melding m
|
||
WHERE mld_melding_key IN
|
||
(SELECT mld_melding_parentkey
|
||
FROM mld_melding
|
||
WHERE mld_melding_parentkey IS NOT NULL)) par
|
||
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND m.mld_meldbron_key = mb.mld_meldbron_key
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
||
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key = s.mld_ins_discipline_key
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND m.mld_melding_key = o.mld_melding_key(+)
|
||
AND m.mld_melding_parentkey = par.mld_melding_key(+);
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_safesight_afm
|
||
(
|
||
issue_id,
|
||
status,
|
||
status_set,
|
||
remark
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
s.mld_statuses_omschrijving,
|
||
MAX (t.fac_tracking_datum),
|
||
m.mld_melding_opmerking
|
||
FROM mld_melding m,
|
||
mld_statuses s,
|
||
fac_tracking t,
|
||
prs_perslid p
|
||
WHERE t.fac_srtnotificatie_key IN (33, 28, 40, 29, 34) -- Nieuw, Geaccepteerd, In behandeling, Afgemeld, Afgewezen
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND m.mld_melding_status = s.mld_statuses_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_oslogin = '_SAPI'
|
||
GROUP BY (m.mld_melding_key, s.mld_statuses_omschrijving, m.mld_melding_opmerking);
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_safesightmails (person_id, person_email)
|
||
AS
|
||
SELECT prs_perslid_key, prs_perslid_email
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_email IS NOT NULL;
|
||
|
||
CREATE OR REPLACE VIEW arai_v_rap_kpi_csu
|
||
(
|
||
melding_key,
|
||
soort_kpi,
|
||
evenement,
|
||
meldingdatum,
|
||
onderwerp,
|
||
omschrijving,
|
||
kenmerkvolgnr,
|
||
kenmerkoms,
|
||
kenmerkwaarde
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
std.mld_stdmelding_omschrijving,
|
||
(SELECT evenement
|
||
FROM arai_v_events
|
||
WHERE arai_events_key =
|
||
(SELECT mld_kenmerkmelding_waarde
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k
|
||
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND k.mld_srtkenmerk_key = 283)),
|
||
m.mld_melding_datum,
|
||
m.mld_melding_onderwerp,
|
||
m.mld_melding_omschrijving,
|
||
mk.mld_kenmerk_volgnummer,
|
||
COALESCE (mk.mld_kenmerk_omschrijving,
|
||
msk.mld_srtkenmerk_omschrijving),
|
||
ARAI.get_flex_value ('MLD',
|
||
mk.mld_kenmerk_key,
|
||
m.mld_melding_key,
|
||
msk.fac_kenmerkdomein_key,
|
||
'm')
|
||
FROM mld_srtkenmerk msk,
|
||
mld_kenmerk mk,
|
||
mld_kenmerkmelding km,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
prs_perslid p
|
||
WHERE msk.mld_srtkenmerk_key = mk.mld_srtkenmerk_key
|
||
AND msk.mld_srtkenmerk_key IN
|
||
(1861,
|
||
1842,
|
||
1841,
|
||
1840,
|
||
1839,
|
||
1838,
|
||
1837,
|
||
1836,
|
||
1835,
|
||
1834,
|
||
1833,
|
||
1832,
|
||
1831,
|
||
1830,
|
||
1829,
|
||
1828,
|
||
1827,
|
||
1826,
|
||
1825,
|
||
1824,
|
||
1823,
|
||
1822,
|
||
1821)
|
||
AND km.mld_kenmerk_key = mk.mld_kenmerk_key
|
||
AND km.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND std.mld_ins_discipline_key = 2341;
|
||
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- MJOB import
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_post_import_mjob (p_import_key IN NUMBER)
|
||
AS
|
||
v_errorhint VARCHAR2 (400);
|
||
BEGIN
|
||
v_errorhint := 'arai_post_import_mjob';
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_import_mjob (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
BEGIN
|
||
|
||
|
||
v_errorhint := 'arai_import_mjob';
|
||
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
||
|
||
fac_import_ins (p_import_key);
|
||
COMMIT;
|
||
|
||
-- After import korrektie gebeurt nu...
|
||
arai_post_import_mjob(p_import_key);
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END arai_import_mjob;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_post_update_mjob (p_import_key IN NUMBER, p_max_ins_srtdeel_key IN NUMBER, p_max_ins_deel_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
|
||
v_receptnr VARCHAR2 (1000);
|
||
v_kosten VARCHAR2 (1000);
|
||
v_periode VARCHAR2 (1000);
|
||
v_perc_onderhoud VARCHAR2 (1000);
|
||
|
||
v_ctr_discipline_key NUMBER(10);
|
||
|
||
v_fin_btwtabelwaarde_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
|
||
|
||
l_kosten ins_srtcontrole.ins_srtcontrole_materiaal%TYPE;
|
||
l_periode ins_srtcontrole.ins_srtcontrole_periode%TYPE;
|
||
l_perc_onderhoud ins_srtcontrole.ins_srtcontrole_percentage%TYPE;
|
||
|
||
v_mx_ins_srtcontroledl_xcp_key NUMBER(10);
|
||
|
||
v_kpn_bestaat NUMBER(10);
|
||
|
||
|
||
-- Flexprops in de FIP-INS Excelsheet
|
||
-- ins_kenmerkwaarde Flexprop
|
||
-- 1 Receptnummer } Srtcontrole
|
||
-- 2 Receptomschrijving }
|
||
-- 3 Totaalbedr.
|
||
-- 4 StJr
|
||
-- 5 Duur
|
||
-- 6 EiJr
|
||
-- 7 ExJr
|
||
-- 8 VvJr
|
||
-- 9 Aant. Aanw. } Aantal geregistreerde objecten
|
||
-- 10 Perc. Onderh } Percentage van dat aantal (vorige kolom) dat voor onderhoud cyclus in aanmerking komt, default 100%
|
||
-- 11 Aantal niet
|
||
-- 12 Aant.Overh.
|
||
-- 13 Eh. } Eenheid --> Stoppen we nu in standaard kolom Eenheid (kolom I)
|
||
-- 14 Cycl
|
||
-- 15 Fo
|
||
-- 16 Fonds
|
||
-- 17 Taak categorie } ctr_discipline
|
||
-- 18 kenmerk18
|
||
-- 19 kenmerk19
|
||
-- 20 kenmerk20
|
||
|
||
|
||
CURSOR c0
|
||
IS -- Taakcategorie
|
||
SELECT DISTINCT(UPPER(ins_kenmerkwaarde17)) AS ctr_discipline_omschrijving
|
||
FROM fac_imp_ins
|
||
order by ctr_discipline_omschrijving;
|
||
|
||
|
||
CURSOR c0a (p_taak_categorie VARCHAR2)
|
||
IS -- Disciplines bij 1 taakcategorie
|
||
SELECT DISTINCT(ins_discipline_key) AS ins_discipline_key
|
||
FROM fac_imp_ins i, ins_discipline d
|
||
WHERE UPPER(i.ins_discipline_omschrijving) = UPPER(d.ins_discipline_omschrijving)
|
||
AND UPPER(ins_kenmerkwaarde17) = UPPER(p_taak_categorie)
|
||
AND d.ins_discipline_verwijder IS NULL;
|
||
|
||
|
||
-- LET OP: WE GAAN ERVAN UIT DAT
|
||
-- 1. bij een Receptnummer (1) altijd dezelfde Receptomschrijving(2) en Eenheid (13) horen. M.a.w. bij 2 regels Receptnr (1) zijn (2) en (13) ook gelijk.
|
||
-- 2. een receptnummer uniek is over Taakcategorie heen (d.w.z. het kan niet voorkomen dat hetzelfde receptnummer onder taakcategorie A en B bestaat (anders moeten we cursors c1 etc ook hierop filteren)
|
||
|
||
CURSOR c1
|
||
IS -- receptnummer, receptomschrijving,
|
||
SELECT DISTINCT(ins_kenmerkwaarde1)
|
||
FROM fac_imp_ins
|
||
order by ins_kenmerkwaarde1;
|
||
|
||
-- Alle geimporteerde regels (objecten met controles) die nog geen standaard srtcontrole hebben, en dus een uitzondering controle (xcp) moeten krijgen.
|
||
CURSOR c2 (p_max_ins_deel_key NUMBER, p_receptnr VARCHAR2, p_kosten VARCHAR2, p_periode VARCHAR2, p_perc_onderhoud VARCHAR2)
|
||
IS
|
||
SELECT d.ins_deel_key, d.ins_deel_omschrijving, c.ins_srtcontrole_key, ins_kenmerkwaarde14 periode, 4,
|
||
fac.safe_to_number(replace(replace(ins_kenmerkwaarde3, '.'), ',','.')) kosten, fac.safe_to_number(replace(replace(ins_kenmerkwaarde10, '.'), ',','.')) perc_onderhoud,
|
||
fac.safe_to_date('01-01-' || ins_kenmerkwaarde8 ,'dd-mm-yyyy') verval_datum
|
||
FROM fac_imp_ins i, ins_deel d, ins_srtcontrole c, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
|
||
WHERE i.ins_deel_omschrijving = d.ins_deel_omschrijving
|
||
AND i.alg_locatie_code = l.alg_locatie_code
|
||
AND i.alg_gebouw_code = g.alg_gebouw_code
|
||
AND i.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||
AND i.alg_ruimte_nr = r.alg_ruimte_nr
|
||
AND d.ins_alg_ruimte_type = 'R'
|
||
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_locatie_key = l.alg_locatie_key
|
||
AND d.ins_deel_key > p_max_ins_deel_key
|
||
AND i.ins_kenmerkwaarde1 = p_receptnr
|
||
AND (i.ins_kenmerkwaarde3 <> p_kosten OR i.ins_kenmerkwaarde14 <> p_periode OR i.ins_kenmerkwaarde10 <> p_perc_onderhoud)
|
||
AND i.ins_kenmerkwaarde3 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde14 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde10 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde1 = c.ins_srtcontrole_omschrijving;
|
||
|
||
-- Alle geimporteerde regels (objecten met controles) die NA cursor C2 een standaard srtcontrole hebben gekregen, maar eigenlijk toch een uitzondering controle (xcp) moeten krijgen vanwege vervaljaar via cursor 6.
|
||
-- Dus alle record met een gevuld vervaljaar (ins_kenmerkwaarde8) krijgen een xcp.
|
||
CURSOR c6 (p_max_ins_deel_key NUMBER, p_receptnr VARCHAR2, p_kosten VARCHAR2, p_periode VARCHAR2, p_perc_onderhoud VARCHAR2)
|
||
IS
|
||
SELECT d.ins_deel_key, d.ins_deel_omschrijving, c.ins_srtcontrole_key, ins_kenmerkwaarde14 periode, 4,
|
||
fac.safe_to_number(replace(replace(ins_kenmerkwaarde3, '.'), ',','.')) kosten, fac.safe_to_number(replace(replace(ins_kenmerkwaarde10, '.'), ',','.')) perc_onderhoud,
|
||
fac.safe_to_date('01-01-' || ins_kenmerkwaarde8 ,'dd-mm-yyyy') verval_datum
|
||
FROM fac_imp_ins i, ins_deel d, ins_srtcontrole c, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
|
||
WHERE i.ins_deel_omschrijving = d.ins_deel_omschrijving
|
||
AND i.alg_locatie_code = l.alg_locatie_code
|
||
AND i.alg_gebouw_code = g.alg_gebouw_code
|
||
AND i.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||
AND i.alg_ruimte_nr = r.alg_ruimte_nr
|
||
AND d.ins_alg_ruimte_type = 'R'
|
||
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_locatie_key = l.alg_locatie_key
|
||
AND d.ins_deel_key > p_max_ins_deel_key
|
||
AND i.ins_kenmerkwaarde1 = p_receptnr
|
||
AND i.ins_kenmerkwaarde3 = p_kosten
|
||
AND i.ins_kenmerkwaarde14 = p_periode
|
||
AND i.ins_kenmerkwaarde10 = p_perc_onderhoud
|
||
AND i.ins_kenmerkwaarde3 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde14 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde10 IS NOT NULL
|
||
AND i.ins_kenmerkwaarde1 = c.ins_srtcontrole_omschrijving
|
||
AND i.ins_kenmerkwaarde8 IS NOT NULL;
|
||
|
||
CURSOR c4 (p_max_ins_srtcontroledl_xcp NUMBER)
|
||
IS
|
||
SELECT ins_srtcontroledl_xcp_key, ins_deel_key, c.ins_srtcontrole_key, ins_srtcontrole_omschrijving,
|
||
CASE
|
||
WHEN ins_srtcontrole_materiaal IS NOT NULL AND ins_srtcontroledl_xcp_materia IS NOT NULL AND ins_srtcontrole_materiaal = ins_srtcontroledl_xcp_materia
|
||
THEN 1
|
||
ELSE 0
|
||
END set_materia_null,
|
||
CASE
|
||
WHEN ins_srtcontrole_periode IS NOT NULL AND ins_srtcontroledl_xcp_periode IS NOT NULL AND ins_srtcontrole_periode = ins_srtcontroledl_xcp_periode
|
||
THEN 1
|
||
ELSE 0
|
||
END set_periode_null,
|
||
CASE
|
||
WHEN ins_srtcontrole_percentage IS NOT NULL AND ins_srtcontroledl_xcp_perc IS NOT NULL AND ins_srtcontrole_percentage = ins_srtcontroledl_xcp_perc
|
||
THEN 1
|
||
ELSE 0
|
||
END set_perc_onderhoud_null
|
||
FROM ins_srtcontrole c, ins_srtcontroledl_xcp x
|
||
WHERE x.ins_srtcontroledl_xcp_key > p_max_ins_srtcontroledl_xcp
|
||
AND x.ins_srtcontrole_key = c.ins_srtcontrole_key;
|
||
|
||
|
||
-- Let op: de eenheid kolom I wordt (itt hetgeen ik dacht) niet in ins_srtdeel_eenheid verwerkt, maar in res_deel_eenheid.
|
||
-- Verder: ins_srtdeel_code is verder helemaal NIET uniek, niet over de DB, niet per discipline en/of groep.
|
||
-- We kunnen daarom volstaan door hier verder ook niet te groeperen op discipline of iets dergelijks, we gaan gewoon op objectsoort-code groeperen, en ze krijgen allen dezelfde eenheid.
|
||
CURSOR c3
|
||
IS
|
||
SELECT ins_srtdeel_code, res_deel_eenheid
|
||
FROM fac_imp_ins
|
||
GROUP BY ins_srtdeel_code, res_deel_eenheid;
|
||
|
||
-- Fondscodes/Projectgroepen gaan we als (gebouw)kostenplaatsen opvoeren
|
||
CURSOR c5
|
||
IS
|
||
SELECT ins_kenmerkwaarde15, ins_kenmerkwaarde16
|
||
FROM fac_imp_ins
|
||
GROUP BY ins_kenmerkwaarde15, ins_kenmerkwaarde16;
|
||
|
||
-- Ten slotte hebben we ook nog de handmatige verschuivingen vanuit Tobias TMJ of StraVIS die komen overwaaien, die willen we niet verloren laten gaan.
|
||
-- B.v. alle schilderwerk is naar jaar 2018 verschoven, die willen we niet verloren laten gaan, daarvoor maken we ins_deelsrtcontrole records aan met een plandatum [ins_deelsrtcontrole_plandatum] aan, te weten
|
||
-- voor ieder record fac_imp_ins met een gevulde kolom ExJr (7e kolom uit de FIP sheet)
|
||
|
||
CURSOR c7 (p_max_ins_deel_key NUMBER)
|
||
IS
|
||
SELECT d.ins_deel_key, d.ins_deel_omschrijving, c.ins_srtcontrole_key, fac.safe_to_date('01-01-' || ins_kenmerkwaarde7 ,'dd-mm-yyyy') plan_datum
|
||
FROM fac_imp_ins i, ins_deel d, ins_srtcontrole c, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
|
||
WHERE i.ins_deel_omschrijving = d.ins_deel_omschrijving
|
||
AND i.alg_locatie_code = l.alg_locatie_code
|
||
AND i.alg_gebouw_code = g.alg_gebouw_code
|
||
AND i.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||
AND i.alg_ruimte_nr = r.alg_ruimte_nr
|
||
AND d.ins_alg_ruimte_type = 'R'
|
||
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_locatie_key = l.alg_locatie_key
|
||
AND d.ins_deel_key > p_max_ins_deel_key
|
||
AND i.ins_kenmerkwaarde1 = c.ins_srtcontrole_omschrijving
|
||
AND i.ins_kenmerkwaarde7 IS NOT NULL;
|
||
|
||
|
||
BEGIN
|
||
v_errorhint := 'arai_post_update_mjob';
|
||
|
||
-- Eerst maar eens beginnen met de verwerking van de kostenplaatsen cursor 5
|
||
FOR rec IN c5
|
||
LOOP
|
||
SELECT COUNT(*)
|
||
INTO v_kpn_bestaat
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_upper = UPPER(rec.ins_kenmerkwaarde15)
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
|
||
IF v_kpn_bestaat = 0
|
||
THEN
|
||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module, prs_kostenplaats_extern, prs_kostenplaats_limietperiode, prs_kostenplaats_fiat)
|
||
VALUES(rec.ins_kenmerkwaarde15, rec.ins_kenmerkwaarde16, 'ALG', 0, 0, 1);
|
||
END IF;
|
||
END LOOP;
|
||
|
||
-- Eerst maar eens beginnen met de verwerking van ins_srtdeel_eenheid
|
||
FOR rec IN c3
|
||
LOOP
|
||
UPDATE ins_srtdeel
|
||
SET ins_srtdeel_eenheid = rec.res_deel_eenheid
|
||
WHERE ins_srtdeel_code = rec.ins_srtdeel_code
|
||
AND ins_srtdeel_key > p_max_ins_srtdeel_key
|
||
AND ins_srtdeel_verwijder IS NULL;
|
||
END LOOP;
|
||
|
||
-- Verder moet van alle ins_srtdeel die zijn toegevoegd de 'hoort bij persoon' eraf worden gehaald (sie in de standaard FIP erop is gezet), dus ins_srtdeel_binding van 17 -> 1
|
||
UPDATE ins_srtdeel
|
||
SET ins_srtdeel_binding = 1
|
||
WHERE ins_srtdeel_key > p_max_ins_srtdeel_key
|
||
AND ins_srtdeel_verwijder IS NULL;
|
||
|
||
|
||
-- Bepalen van de default BTW % 21...
|
||
SELECT MIN(fin_btwtabelwaarde_key)
|
||
INTO v_fin_btwtabelwaarde_key
|
||
FROM fin_btwtabelwaarde
|
||
WHERE fin_btwtabelwaarde_perc = 21
|
||
AND COALESCE(fin_btwtabelwaarde_verlegd,0) = 0
|
||
AND fin_btwtabelwaarde_verwijder IS NULL;
|
||
|
||
|
||
-- We gaan hier per receptnummer het MEEST UNIFORME (algemene) eruit vissen.
|
||
-- Dat doen we door te kijken waarvan de combinatie van dezelfde kosten (aant_K) met dezelfde periode het vaakst voorkomen (aant_P).
|
||
|
||
|
||
-- Voorbeeld hieronder: enkele regels bij 1 object A: recept R1 kost 100 euro per eenhied en wordt elke 2 jaar gepland, elke regel daarna heeft betrekking op ander object
|
||
-- recept(1) kosten(3) periode(14)
|
||
-- R1 100 2
|
||
-- R1 100 2
|
||
-- R1 150 2
|
||
-- R1 100 1
|
||
-- Hier is de meest algemene recept die met kosten 100 en om de 2 jaar (regel 1 en 2), de andere recepten (regel 3 en 4) zijn uitzonderingen (XCP) op de algemene regel.
|
||
|
||
-- We gaan (gebaseerd op de sheet van WaardWonen) hier ook nog eens rekening houden met Perc.Onderh, die default 100 staat.
|
||
-- Maar als de regel is 50%, dan is dat de norm, en elke afwijking van 50% is dus uitzondering, dus we gaan OOK op zoek naar de meeste regels met dezelfde Perc. Onderh.
|
||
-- Dus
|
||
-- recept(1) kosten(3) periode(14) %onderh (10)
|
||
-- R1 100 2 75
|
||
-- R1 100 2 50 <-- Hiervan zijn er 2, dit is de standaard taak (srtcontrole)
|
||
-- R1 150 2 100
|
||
-- R1 100 1 100
|
||
-- R1 100 2 50 <-- Hiervan zijn er 2, dit is de standaard taak (srtcontrole)
|
||
|
||
v_errormsg := 'Loop rec0';
|
||
FOR rec0 IN c0
|
||
LOOP
|
||
BEGIN
|
||
|
||
-- Bepalen van de ctr discipline waaronder de terugkerende taken worden vastgelegd.
|
||
SELECT MIN(ins_discipline_key)
|
||
INTO v_ctr_discipline_key
|
||
FROM ctr_discipline d, ctr_disc_params dp
|
||
WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_verwijder IS NULL
|
||
AND dp.ctr_disc_params_ismjob = 1
|
||
AND UPPER(d.ins_discipline_omschrijving) = UPPER(rec0.ctr_discipline_omschrijving);
|
||
|
||
IF v_ctr_discipline_key IS NULL
|
||
THEN
|
||
-- Is niet gevonden, dan voegen we hem eerst maar eens toe...
|
||
-- Deze 2 regels zijn verplaatst uit arai_mjob_ini.sql
|
||
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving)
|
||
values ('CTR', rec0.ctr_discipline_omschrijving)
|
||
RETURNING ins_discipline_key INTO v_ctr_discipline_key;
|
||
|
||
INSERT INTO ctr_disc_params(ctr_ins_discipline_key, ctr_disc_params_controle_type, ctr_disc_params_ismjob)
|
||
SELECT v_ctr_discipline_key, 2, 1 FROM dual;
|
||
END IF;
|
||
|
||
-- Nu hebben we v_ctr_discipline_key voor onderstaande loop c1 (en de loops daar weer genest in)
|
||
|
||
-- Per Taakcategorie een autorisatie-groepen voor 'MJOB' met alleen leesrechten en schrijfrechten vastleggen (de administrator is in ini al aangemaakt)
|
||
-- WE GAAN ERVAN UIT DAT DEZE NOG NIET BESTAAT (ANDERS CRASHT DEZE PROC!)
|
||
INSERT INTO fac_groep(fac_groep_omschrijving) VALUES('MJOB-R: ' || substr(rec0.ctr_discipline_omschrijving,1,20));
|
||
-- Nu nog de autorisatiegroep MJOB met schrijfrechten
|
||
-- WE GAAN ERVAN UIT DAT DEZE NOG NIET BESTAAT (ANDERS CRASHT DEZE PROC!)
|
||
INSERT INTO fac_groep(fac_groep_omschrijving) VALUES('MJOB-W:' || substr(rec0.ctr_discipline_omschrijving,1,20));
|
||
|
||
|
||
-- 1. Eerst MJOB-R (Leesrechten): ALGUSE READ
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-R: ' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
-1, 9, -1, 9
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_ALGUSE';
|
||
|
||
-- 2. Dan MJOB-W (Schrijfrechten): ook ALGUSE READ en GEEN! WRITE. Reden is de koppeling van vastgoed met Tobias-AX (bron). Wijzigingen zullen derhalve in de bron (Tobias-AX) moeten gebeuren.
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-W:' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
-1, 9, -1, 9
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_ALGUSE';
|
||
|
||
v_errormsg := 'Loop rec0a';
|
||
FOR rec0a IN c0a(rec0.ctr_discipline_omschrijving)
|
||
LOOP
|
||
BEGIN
|
||
|
||
--- En tenslotte gaan we de 3 MJOB autorisatiegroepen MJOB-R, MJOB-W en MJOB-A de rechten op INSUSE, INSMAN en CTRUSE uitdelen....
|
||
-- 1. Eerst MJOB-R (Leesrechten): INSUSE READ en INSMAN READ op elke INS-discipline en CTRUSE READ op de MJOB-discipline (v_ctr_discipline_key)
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-R: ' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
rec0a.ins_discipline_key,
|
||
-1, 9, -1, 9
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_INSUSE';
|
||
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-R: ' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
rec0a.ins_discipline_key,
|
||
-1, 9, -1, 9
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_INSMAN';
|
||
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-R: ' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
v_ctr_discipline_key,
|
||
-1, 9, -1, 9
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_CTRUSE';
|
||
|
||
-- 2. Dan MJOB-W (Schrijfrechten): INSUSE WRITE en INSMAN WRITE op elke INS-discipline en CTRUSE WRITE op de MJOB-discipline (v_ctr_discipline_key)
|
||
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-W:' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
rec0a.ins_discipline_key,
|
||
-1, -1, -1, -1
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_INSUSE';
|
||
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-W:' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
rec0a.ins_discipline_key,
|
||
-1, -1, -1, -1
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_INSMAN';
|
||
|
||
INSERT INTO fac_groeprechten (fac_groep_key, fac_functie_key, ins_discipline_key,
|
||
fac_gebruiker_prs_level_read, fac_gebruiker_prs_level_write, fac_gebruiker_alg_level_read, fac_gebruiker_alg_level_write)
|
||
SELECT
|
||
(SELECT fac_groep_key FROM fac_groep WHERE fac_groep_upper = 'MJOB-W:' || substr(rec0.ctr_discipline_omschrijving,1,20)),
|
||
fac_functie_key,
|
||
v_ctr_discipline_key,
|
||
-1, -1, -1, -1
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = 'WEB_CTRUSE';
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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; -- c0a
|
||
|
||
v_errormsg := 'Loop rec c1';
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
|
||
SELECT ins_kenmerkwaarde1, ins_kenmerkwaarde3, ins_kenmerkwaarde14, ins_kenmerkwaarde10
|
||
INTO v_receptnr, v_kosten, v_periode, v_perc_onderhoud
|
||
FROM (
|
||
|
||
SELECT a.ins_kenmerkwaarde1, a.ins_kenmerkwaarde3, a.ins_kenmerkwaarde14, ins_kenmerkwaarde10, count(*) aantal FROM fac_imp_ins a
|
||
WHERE a.ins_kenmerkwaarde1 = rec.ins_kenmerkwaarde1
|
||
HAVING count(*) = (SELECT MAX(COUNT(*)) FROM fac_imp_ins b
|
||
WHERE b.ins_kenmerkwaarde1 = a.ins_kenmerkwaarde1
|
||
GROUP by ins_kenmerkwaarde1, ins_kenmerkwaarde3, ins_kenmerkwaarde14, ins_kenmerkwaarde10
|
||
)
|
||
GROUP by ins_kenmerkwaarde1, ins_kenmerkwaarde3, a.ins_kenmerkwaarde14, ins_kenmerkwaarde10)
|
||
WHERE rownum = 1;
|
||
|
||
-- Algemene soort controles (terugkerende taken) toevoegen op alle soortdelen die zijn toegevoegd in deze import ( > p_max_ins_srtdeel_key)
|
||
-- Daartoe bepalen we eerst van alle controles op een objectsoort de grootste gemene deler, de rest (= afwijkingen daarop) worden xcp-records.
|
||
-- Definitie "Grootste gemene deler" = het meeste aantal records met dezelfde kosten, periode en onderhoudspercentage.
|
||
|
||
-- Fondscode ook in (laatste, zojuist ingeschoten record) ins_srtcontrole verwerken...
|
||
-- We gaan ervan uit, en dat is terecht, dat er 1 fondscode (en niet meer dan 1) bij een v_receptnr bestaat.
|
||
-- Voor het geval dat er toch is (d.i. een fout in het importbestand) doen we veiligheidshalve MAX.
|
||
|
||
-- FSN#38080: kolom AA (VvJr = vervaljaar = kenmerk8) gaan we nu ook gebruiken bij de import (deden we tot nu toe nog niets mee, deze stond altijd ingevuld met een berekende waarde
|
||
-- indien gevuld met een jaar, dan is dat het vervaljaar van die activiteit bij dat element.
|
||
-- Let op: vervaljaar doet NIET! mee in de bepaling van de "grootste gemene deler" voor ins_srtcontrole.
|
||
|
||
INSERT INTO ins_srtcontrole (ctr_discipline_key, ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ins_srtcontrole_groep,
|
||
ins_srtcontrole_info, ins_srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_mode, ins_srtcontrole_materiaal, fin_btwtabelwaarde_key,
|
||
ins_srtcontrole_percentage, prs_kostenplaats_key)
|
||
SELECT v_ctr_discipline_key, ins_srtdeel_key, 'S', ins_kenmerkwaarde1, MAX (ins_kenmerkwaarde2),
|
||
MAX(ins_kenmerkwaarde2) || ' [' || MAX(ins_kenmerkwaarde13) || ']' , v_periode, 4, 1, fac.safe_to_number(replace(replace(v_kosten, '.'), ',','.')),
|
||
v_fin_btwtabelwaarde_key,
|
||
fac.safe_to_number(replace(replace(v_perc_onderhoud, '.'), ',','.')),
|
||
(SELECT prs_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_module = 'ALG'
|
||
AND prs_kostenplaats_upper = (SELECT UPPER(MAX(ins_kenmerkwaarde15))
|
||
FROM fac_imp_ins
|
||
WHERE ins_kenmerkwaarde1 = v_receptnr))
|
||
FROM ins_srtdeel sd, fac_imp_ins i, ins_srtgroep sg, ins_discipline d
|
||
WHERE ins_srtdeel_key > p_max_ins_srtdeel_key
|
||
AND sd.ins_srtdeel_code = i.ins_srtdeel_code
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND i.ins_discipline_omschrijving = d.ins_discipline_omschrijving
|
||
AND i.ins_srtgroep_omschrijving = sg.ins_srtgroep_omschrijving
|
||
AND i.ins_kenmerkwaarde1 = v_receptnr
|
||
AND i.ins_kenmerkwaarde3 = v_kosten
|
||
AND i.ins_kenmerkwaarde14 = v_periode
|
||
AND i.ins_kenmerkwaarde10 = v_perc_onderhoud
|
||
AND NOT EXISTS (SELECT 'x' FROM ins_srtcontrole
|
||
WHERE ins_srtinstallatie_key = ins_srtdeel_key
|
||
AND ins_srtcontrole_niveau = 'S'
|
||
AND ins_srtcontrole_groep = v_receptnr)
|
||
GROUP BY ins_srtdeel_key, ins_kenmerkwaarde1;
|
||
|
||
|
||
|
||
|
||
-- Uitzonderingen op de algemene (reguliere) soort controle, die dus afwijken van kosten en/of periode, worden toegevoegd als XCP
|
||
-- Let op: hier wordt aantal nog in GROEP gestopt, vraag is of we de eenheid moeten stoppen in ins_srtdeel_aantal of in ins_srtcontrole_aantal / ins_srtcontroledl_xcp_aantal op dieper nivo.
|
||
|
||
-- Check via onderstaande query op araio@labs levert op dat er een paar verschillen in aantal zitten:
|
||
|
||
-- araio_waardwonen_verschil_aantal_andere_eenheid.xls: 15 objecten met meerdere activiteiten, verschillend aantal, andere eenheid.
|
||
-- select a.ins_deel_omschrijving, b.ins_kenmerkwaarde1, b.ins_kenmerkwaarde2, b.ins_kenmerkwaarde13, b.ins_kenmerkwaarde10, c.ins_kenmerkwaarde10, c.ins_kenmerkwaarde13, c.ins_kenmerkwaarde1, c.ins_kenmerkwaarde2 from
|
||
-- (select ins_deel_omschrijving, count(*) from fac_imp_ins
|
||
-- having count(*) > 1
|
||
-- group by ins_deel_omschrijving) a,
|
||
-- fac_imp_ins b,
|
||
-- fac_imp_ins c
|
||
-- where a.ins_deel_omschrijving = b.ins_deel_omschrijving
|
||
-- AND b.ins_deel_omschrijving = c.ins_deel_omschrijving
|
||
-- AND b.ins_kenmerkwaarde1 <> c.ins_kenmerkwaarde1
|
||
-- AND b.ins_kenmerkwaarde10 <> c.ins_kenmerkwaarde10
|
||
-- AND b.ins_kenmerkwaarde13 <> c.ins_kenmerkwaarde13
|
||
-- ORDER BY a.ins_deel_omschrijving;
|
||
|
||
-- araio_waardwonen_verschil_aantal_dezelfde_eenheid.xls: 30 objecten met meerdere activiteiten, verschillend aantal, dezelfde eenheid
|
||
-- select a.ins_deel_omschrijving, b.ins_kenmerkwaarde1, b.ins_kenmerkwaarde2, b.ins_kenmerkwaarde13, b.ins_kenmerkwaarde10, c.ins_kenmerkwaarde10, c.ins_kenmerkwaarde13, c.ins_kenmerkwaarde1, c.ins_kenmerkwaarde2 from
|
||
-- (select ins_deel_omschrijving, count(*) from fac_imp_ins
|
||
-- having count(*) > 1
|
||
-- group by ins_deel_omschrijving) a,
|
||
-- fac_imp_ins b,
|
||
-- fac_imp_ins c
|
||
-- where a.ins_deel_omschrijving = b.ins_deel_omschrijving
|
||
-- AND b.ins_deel_omschrijving = c.ins_deel_omschrijving
|
||
-- AND b.ins_kenmerkwaarde1 <> c.ins_kenmerkwaarde1
|
||
-- AND b.ins_kenmerkwaarde10 <> c.ins_kenmerkwaarde10
|
||
-- AND b.ins_kenmerkwaarde13 = c.ins_kenmerkwaarde13
|
||
-- ORDER BY a.ins_deel_omschrijving;
|
||
|
||
-- araio_waardwonen_meer_activiteiten_met_gelijk_aantal.xlsx: 354 objecten met meerdere activiteiten, gelijke aantal, (dezelfde of afwijkend eenheid).
|
||
--select a.ins_deel_omschrijving, b.ins_kenmerkwaarde1, b.ins_kenmerkwaarde2, b.ins_kenmerkwaarde13, b.ins_kenmerkwaarde10, c.ins_kenmerkwaarde10, c.ins_kenmerkwaarde13, c.ins_kenmerkwaarde1, c.ins_kenmerkwaarde2 from
|
||
--(select ins_deel_omschrijving, count(*) from fac_imp_ins
|
||
--having count(*) > 1
|
||
--group by ins_deel_omschrijving) a,
|
||
--fac_imp_ins b,
|
||
--fac_imp_ins c
|
||
--where a.ins_deel_omschrijving = b.ins_deel_omschrijving
|
||
--AND b.ins_deel_omschrijving = c.ins_deel_omschrijving
|
||
--AND b.ins_kenmerkwaarde1 <> c.ins_kenmerkwaarde1
|
||
--AND b.ins_kenmerkwaarde10 = c.ins_kenmerkwaarde10
|
||
---- AND b.ins_kenmerkwaarde13 = c.ins_kenmerkwaarde13
|
||
--ORDER BY a.ins_deel_omschrijving;
|
||
--;
|
||
|
||
--araio_waardwonen_objecten_met_1_activiteit.xlsx: 2940 objecten met 1 activiteit, aantal dont care, eenheid dont care.
|
||
--select ins_deel_omschrijving, MAX(b.ins_kenmerkwaarde1), MAX(b.ins_kenmerkwaarde2), MAX(b.ins_kenmerkwaarde13), MAX(b.ins_kenmerkwaarde10) from fac_imp_ins b
|
||
--having count(*) = 1
|
||
--group by ins_deel_omschrijving;
|
||
|
||
-- Aantal objecten ingelezen: 3344.
|
||
-- select distinct (ins_deel_omschrijving) from fac_imp_ins;
|
||
|
||
|
||
-- Uitzonderingen op de algemene (reguliere) soort controle die we zojuist hebben toegevoegd, die dus afwijken van kosten en/of periode, worden toegevoegd als XCP
|
||
-- Let op: hier wordt aantal nog in GROEP gestopt, vraag is of we de eenheid moeten stoppen in ins_srtdeel_aantal of in ins_srtcontrole_aantal / ins_srtcontroledl_xcp_aantal op dieper nivo.
|
||
-- Let op 2: Dit zijn natuurlijk alleen de objecten die in deze import zijn toegevoegd (d.ins_deel_key > p_max_ins_deel_key) en afwijkende kosten en afwijkende periode hebben.
|
||
-- Verder moet de algemene ins_srtcontrole wel gevonden kunnen worden om een xcp daarop te kunnen maken (foreign-key)
|
||
|
||
-- Waneer de kosten OF(!) de periode niet zijn ingevuld (NULL-value), dan gaan we ervan uit dat deze de default volgen, en wordt er geen XCP aangemaakt,
|
||
-- Dus als een van beide ontbreekt, dan volgt die de standaard.
|
||
|
||
-- Hier nog ff onthouden wat de laatste xcp record is, is straks nodig voor een nabewerking (cursor 4)
|
||
SELECT coalesce(max(ins_srtcontroledl_xcp_key),0)
|
||
INTO v_mx_ins_srtcontroledl_xcp_key
|
||
FROM ins_srtcontroledl_xcp;
|
||
|
||
|
||
v_errormsg := 'Soort controle gegevens: ' || ' recept=[' || v_receptnr || '],' || ' kosten=[' || v_kosten || '],' ||
|
||
' periode=[' || v_periode || '],' || ' percentage=[' || v_perc_onderhoud || '],';
|
||
|
||
FOR rec2 IN c2 (p_max_ins_deel_key, v_receptnr, v_kosten, v_periode, v_perc_onderhoud)
|
||
LOOP
|
||
BEGIN
|
||
|
||
|
||
v_errormsg := 'C2: INSERT INTO ins_srtcontroledl_xcp: ' || 'ins_deel_key=['|| rec2.ins_deel_key || '],' || 'objectomschrijving=[' || rec2.ins_deel_omschrijving || '] ' ||
|
||
'ins_srtcontrole_key=[' || rec2.ins_srtcontrole_key || '],' ||
|
||
'recept=[' || v_receptnr || '],' || 'kosten=[' || rec2.kosten || '],' ||
|
||
'periode=[' || rec2.periode || '],' || ' percentage=[' || v_perc_onderhoud || '],';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
INSERT INTO ins_srtcontroledl_xcp ( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode,
|
||
ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_eind)
|
||
SELECT rec2.ins_deel_key, rec2.ins_srtcontrole_key, rec2.periode, rec2.kosten, rec2.perc_onderhoud, rec2.verval_datum FROM dual;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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 rec6 IN c6 (p_max_ins_deel_key, v_receptnr, v_kosten, v_periode, v_perc_onderhoud)
|
||
LOOP
|
||
BEGIN
|
||
|
||
|
||
v_errormsg := 'C6: VERVALJAAR -> ins_srtcontroledl_xcp: ' || 'ins_deel_key=['|| rec6.ins_deel_key || '],' || 'objectomschrijving=[' || rec6.ins_deel_omschrijving || '] ' ||
|
||
'ins_srtcontrole_key=[' || rec6.ins_srtcontrole_key || '],' ||
|
||
'recept=[' || v_receptnr || '],' || 'kosten=[' || rec6.kosten || '],' ||
|
||
'periode=[' || rec6.periode || '],' || ' percentage=[' || v_perc_onderhoud || '],';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
INSERT INTO ins_srtcontroledl_xcp ( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_eind)
|
||
SELECT rec6.ins_deel_key, rec6.ins_srtcontrole_key, rec6.verval_datum FROM dual;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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;
|
||
|
||
|
||
|
||
-- "After" post-processing van de XCP records die zojuist - in voorgaande loop- zijn toegevoegd.
|
||
-- De kolommen (materiaal, periode, percentage) die dezelfde waarde hebben als de standaard ins_srtcontrole moeten op NULL worden gezet,
|
||
-- Maw alleen de echte afwijkingen moeten een waarde (NOT NULL) hebben.
|
||
-- In de cursor c2 worden de records opgehaald waarvan minimaal 1 afwijking is, dat betekent dat er dus ook mogelijk dezelfde waarde als de standaard bestaat.
|
||
|
||
v_errormsg := 'NABEWERKING ins_srtcontroledl_xcp: ';
|
||
|
||
FOR rec4 IN c4 (v_mx_ins_srtcontroledl_xcp_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'C4: NABEWERKING ins_srtcontroledl_xcp: ' || 'key=[' || rec4.ins_srtcontroledl_xcp_key || '], controle=[ ' || rec4.ins_srtcontrole_omschrijving || ']';
|
||
IF rec4.set_materia_null = 1
|
||
THEN
|
||
v_errorhint := 'C4a - set_materia_null ' || v_errorhint;
|
||
UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_materia = NULL WHERE ins_srtcontroledl_xcp_key = rec4.ins_srtcontroledl_xcp_key;
|
||
END IF;
|
||
IF rec4.set_periode_null = 1
|
||
THEN
|
||
v_errorhint := 'C4b - set_periode_null ' || v_errorhint;
|
||
UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_periode = NULL WHERE ins_srtcontroledl_xcp_key = rec4.ins_srtcontroledl_xcp_key;
|
||
END IF;
|
||
IF rec4.set_perc_onderhoud_null = 1
|
||
THEN
|
||
v_errorhint := 'C4c - set_perc_onderhoud_null ' || v_errorhint;
|
||
UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_perc = NULL WHERE ins_srtcontroledl_xcp_key = rec4.ins_srtcontroledl_xcp_key;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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; -- cursor c1
|
||
fac.imp_writelog (p_import_key, 'I', v_receptnr || ',' || v_kosten|| ',' || v_periode|| ',' || v_perc_onderhoud, 'v_receptnr, v_kosten, v_periode, v_perc_onderhoud');
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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; -- cursor c0
|
||
|
||
-- De handmatige verschuivingen vanuit Tobias TMJ of StraVIS die komen overwaaien, die willen we niet verloren laten gaan....
|
||
FOR rec7 IN c7 (p_max_ins_deel_key)
|
||
LOOP
|
||
BEGIN
|
||
|
||
|
||
v_errormsg := 'C7: INSPECTIE record -> ins_deelsrtcontrole: ' || 'ins_deel_key=['|| rec7.ins_deel_key || '],' || 'objectomschrijving=[' || rec7.ins_deel_omschrijving || '] ' ||
|
||
'ins_srtcontrole_key=[' || rec7.ins_srtcontrole_key || '],';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
INSERT INTO ins_deelsrtcontrole (ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_status)
|
||
SELECT rec7.ins_deel_key, rec7.ins_srtcontrole_key, rec7.plan_datum, 0 FROM dual;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
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;
|
||
|
||
|
||
-- We gaan dan nog het aantal objecten (ins_deel_aantal) die standaard op 1 staat, bijwerken met kolom 9 (aantal geregistreerde objecten).
|
||
-- Hiervoor nemen we het hoogste aantal (het object kan voor meerdere activiteiten met verschillende aantal (icm eenheid) worden ingezet), b.v.:
|
||
|
||
-- object A (kozijnen) 10 m2 schilderen
|
||
-- object A (kozijnen) 2 st. vervangen
|
||
-- We registeren dan bij object A 10??? (of is 2 beter, omdat dit de preferred eenheid stuks is)?
|
||
fac.imp_writelog (p_import_key, 'I', 'update ins_deel_aantal', '');
|
||
UPDATE ins_deel d
|
||
SET ins_deel_aantal = (SELECT COALESCE(fac.safe_to_number(max(ins_kenmerkwaarde9)),1)
|
||
FROM fac_imp_ins i, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
|
||
WHERE i.ins_deel_omschrijving = d.ins_deel_omschrijving
|
||
AND i.alg_locatie_code = l.alg_locatie_code
|
||
AND i.alg_gebouw_code = g.alg_gebouw_code
|
||
AND i.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||
AND i.alg_ruimte_nr = r.alg_ruimte_nr
|
||
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_locatie_key = l.alg_locatie_key
|
||
)
|
||
WHERE d.ins_deel_key > p_max_ins_deel_key
|
||
AND d.ins_deel_verwijder IS NULL;
|
||
|
||
|
||
-- De aanmaakdatums van de ins_delen die zijn toegevoegd ( > p_max_ins_deel_key) bepalen de volgende controle-momenten, dus dat komt natuurlijk wel wat nauw.
|
||
-- Daarom wordt StJr (ins_kenmerkwaarde4) als startjaar bij alle objecten (ins_delen) van het betreffende pand gezet.
|
||
fac.imp_writelog (p_import_key, 'I', 'update ins_deel_aanmaak', '');
|
||
UPDATE ins_deel d
|
||
SET ins_deel_aanmaak = (SELECT min( to_date (ins_kenmerkwaarde4, 'yyyy'))
|
||
FROM fac_imp_ins i, alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
|
||
WHERE i.ins_deel_omschrijving = d.ins_deel_omschrijving
|
||
AND i.alg_locatie_code = l.alg_locatie_code
|
||
AND i.alg_gebouw_code = g.alg_gebouw_code
|
||
AND i.alg_verdieping_volgnr = v.alg_verdieping_volgnr
|
||
AND i.alg_ruimte_nr = r.alg_ruimte_nr
|
||
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_locatie_key = l.alg_locatie_key
|
||
)
|
||
WHERE d.ins_deel_key > p_max_ins_deel_key
|
||
AND d.ins_deel_verwijder IS NULL;
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_update_mjob (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
v_count NUMBER;
|
||
v_max_ins_srtdeel_key NUMBER(10);
|
||
v_max_ins_deel_key NUMBER(10);
|
||
BEGIN
|
||
|
||
-- Even snel registreren wat de laatst toegevoegde ins_srtdeel is, dan weten we dat er door deze import-procedure wordt toegevoegd (alles > dan deze max).
|
||
SELECT coalesce(max(ins_srtdeel_key),0)
|
||
INTO v_max_ins_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL;
|
||
|
||
-- Idem voor laatst toegevoegde ins_deel is, dan weten we dat er door deze import-procedure wordt toegevoegd (alles > dan deze max).
|
||
SELECT coalesce(max(ins_deel_key),0)
|
||
INTO v_max_ins_deel_key
|
||
FROM ins_deel
|
||
WHERE ins_deel_verwijder IS NULL;
|
||
|
||
fac_update_ins (p_import_key);
|
||
|
||
-- After update ...
|
||
arai_post_update_mjob(p_import_key, v_max_ins_srtdeel_key, v_max_ins_deel_key);
|
||
|
||
END arai_update_mjob;
|
||
/
|
||
|
||
|
||
-- Alle meldingen ouder dan 5 jaar binnen vakgroeptype "Bezoekers en Omwonenden" anonimiseren (ivm AVG)
|
||
CREATE OR REPLACE PROCEDURE arai_export_bezomwanon (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR arai_bezomw_anon
|
||
IS
|
||
SELECT m.mld_melding_key, m.mld_melding_datum
|
||
FROM mld_melding m, mld_discipline md, mld_stdmelding mst
|
||
WHERE mld_melding_datum <= SYSDATE - INTERVAL '5' YEAR
|
||
AND m.mld_stdmelding_key = mst.mld_stdmelding_key
|
||
AND mst.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = 22;
|
||
BEGIN
|
||
FOR rec IN arai_bezomw_anon
|
||
LOOP
|
||
BEGIN
|
||
UPDATE mld_melding
|
||
SET mld_melding_omschrijving = '-GEANONIMISEERD-',
|
||
mld_melding_opmerking = '-GEANONIMISEERD-'
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
UPDATE mld_kenmerkmelding
|
||
SET mld_kenmerkmelding_waarde = 'GEANONIMISEERD'
|
||
WHERE mld_melding_key = rec.mld_melding_key
|
||
AND mld_kenmerk_key IN (506, 506, 508, 509, 510);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE arai_export_obiafmelder (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
CURSOR arai_obi_afmelder
|
||
IS
|
||
SELECT m.mld_melding_key
|
||
FROM mld_melding m
|
||
WHERE m.prs_perslid_key = 12661
|
||
AND m.mld_melding_status < 5;
|
||
BEGIN
|
||
FOR rec IN arai_obi_afmelder
|
||
LOOP
|
||
BEGIN
|
||
UPDATE mld_melding
|
||
SET mld_melding_status = 5
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|