-- Script containing customer specific db-configuration for GOUD.
-- (c) 2011 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xgoud.lst
CREATE OR REPLACE VIEW goud_v_rap_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log l
WHERE l.fac_import_key = (SELECT MAX (fac_import_key)
FROM fac_import
WHERE fac_import_app_key = 21);
/* Formatted on 5-7-2011 17:06:36 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE goud_import_prs (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij GOUD_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_oslogin VARCHAR2 (256);
v_prs_perslid_titel VARCHAR2 (256);
v_prs_perslid_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_afdeling_omschrijving VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_alg_locatie_code VARCHAR2 (256);
--v_alg_gebouw_code VARCHAR2 (256);
--v_alg_verdieping_code VARCHAR2 (256);
v_alg_ruimte_nr VARCHAR2 (256);
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_mobiel VARCHAR2 (256);
v_prs_perslid_email VARCHAR2 (256);
v_prs_perslid_nr VARCHAR2 (256);
v_prs_perslid_ingangsdatum VARCHAR2 (256);
v_prs_perslid_einddatum VARCHAR2 (256);
-- Overig:
v_prs_perslid_ingangs_date DATE;
v_prs_perslid_eind_date DATE;
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM goud_imp_prs;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_aanduiding := '';
v_errorhint := 'Fout bij opvragen te importeren rij';
v_ongeldig := 0;
-- Lees alle veldwaarden
-- 01
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_oslogin);
-- 02
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_titel);
-- 03
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
-- 04
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel);
-- 05
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters);
-- 06
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voornaam);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_afdeling_omschrijving);
-- 09
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
-- xx
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
-- xx
--fac.imp_getfield (v_newline,
-- c_fielddelimitor,
-- v_alg_verdieping_code);
-- 11
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
-- 12
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr);
-- 13
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_mobiel);
-- 14
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 15
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 16
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum);
-- 17
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_einddatum);
--
v_aanduiding :=
'['
|| v_prs_perslid_oslogin
|| '|'
|| v_prs_perslid_naam
|| '|'
|| v_prs_perslid_tussenvoegsel
|| '|'
|| v_prs_perslid_voornaam
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
AND UPPER (v_prs_perslid_titel) = 'TITEL'
AND UPPER (v_prs_perslid_naam) = 'PERSOONACHTERNAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_afdeling_omschrijving) =
'AFDELINGSOMSCHRIJVING'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
--AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
--AND UPPER (v_alg_verdieping_code) = 'BOUWLAAGVOLGNUMMER'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOONNUMMER'
AND UPPER (v_prs_perslid_mobiel) = 'MOBIEL'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_perslid_ingangsdatum) = 'INDIENSTDATUM'
AND UPPER (v_prs_perslid_einddatum) = 'UITDIENSTDATUM'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
IF (v_prs_perslid_oslogin IS NULL
OR LENGTH (v_prs_perslid_oslogin) > 30)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Loginnaam onbekend of te lang',
'Correcte loginnaam is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige titel';
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
IF LENGTH (v_prs_perslid_titel) > 15
THEN
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Titel te lang',
'Titel wordt afgebroken tot ['
|| v_prs_perslid_titel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige naam';
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
IF LENGTH (v_prs_perslid_naam) > 30
THEN
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Naam te lang',
'Naam wordt afgebroken tot [' || v_prs_perslid_naam || ']'
);
COMMIT;
ELSE
IF (v_prs_perslid_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Naam onbekend',
'Naam is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldig tussenvoegsel';
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
THEN
v_prs_perslid_tussenvoegsel :=
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Tussenvoegsel te lang',
'Tussenvoegsel wordt afgebroken tot ['
|| v_prs_perslid_tussenvoegsel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voorletters';
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
IF LENGTH (v_prs_perslid_voorletters) > 10
THEN
v_prs_perslid_voorletters :=
SUBSTR (v_prs_perslid_voorletters, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Voorletters te lang',
'Voorletters worden afgebroken tot ['
|| v_prs_perslid_voorletters
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige voornaam';
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
IF LENGTH (v_prs_perslid_voornaam) > 30
THEN
v_prs_perslid_voornaam :=
SUBSTR (v_prs_perslid_voornaam, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Voornaam is te lang',
'Voornaam wordt afgebroken tot ['
|| v_prs_perslid_voornaam
|| ']'
);
COMMIT;
ELSE
IF (v_prs_perslid_voornaam IS NULL)
THEN
v_prs_perslid_voornaam := '-';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Voornaam onbekend',
'Voornaam wordt gezet op [-]');
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige afdelingscode';
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
IF LENGTH (v_prs_afdeling_naam) > 10
THEN
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Afdelingscode te lang',
'Afdelingscode wordt afgebroken tot ['
|| v_prs_afdeling_naam
|| ']'
);
COMMIT;
ELSE
IF (v_prs_afdeling_naam IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Afdelingscode onbekend',
'Afdelingscode is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige afdelingsomschrijving';
v_prs_afdeling_omschrijving := TRIM (v_prs_afdeling_omschrijving);
IF LENGTH (v_prs_afdeling_omschrijving) > 60
THEN
v_prs_afdeling_omschrijving :=
SUBSTR (v_prs_afdeling_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Afdelingsomschrijving te lang',
'Afdelingsomschrijving wordt afgebroken tot ['
|| v_prs_afdeling_omschrijving
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige functie';
v_prs_srtperslid_omschrijving :=
TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
COMMIT;
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
--
v_errorhint := 'Ongeldige locatiecode';
v_alg_locatie_code := TRIM (v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 10
THEN
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Locatiecode te lang',
'Locatiecode wordt afgebroken tot ['
|| v_alg_locatie_code
|| ']'
);
COMMIT;
END IF;
/*
--
v_errorhint := 'Ongeldige gebouwcode';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
IF LENGTH (v_alg_gebouw_code) > 10
THEN
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Gebouwcode te lang',
'Gebouwcode wordt afgebroken tot ['
|| v_alg_gebouw_code
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige verdiepingcode';
v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
IF LENGTH (v_alg_verdieping_code) > 10
THEN
v_alg_verdieping_code := SUBSTR (v_alg_verdieping_code, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Verdiepingcode te lang',
'Verdiepingcode wordt afgebroken tot ['
|| v_alg_verdieping_code
|| ']'
);
COMMIT;
END IF;
*/
--
v_errorhint := 'Ongeldig ruimtenummer';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
IF LENGTH (v_alg_ruimte_nr) > 10
THEN
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Ruimtenummer te lang',
'Ruimtenummer wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig mobielnummer';
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
IF LENGTH (v_prs_perslid_mobiel) > 15
THEN
v_prs_perslid_mobiel :=
SUBSTR (v_prs_perslid_mobiel, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Mobielnummer te lang',
'Mobielnummer wordt afgebroken tot ['
|| v_prs_perslid_mobiel
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 50
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
-- LET OP: Personeelsnummer - nog - niet gebruikt!
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
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige datum in dienst';
v_prs_perslid_ingangsdatum := TRIM (v_prs_perslid_ingangsdatum);
IF v_prs_perslid_ingangsdatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_ingangs_date :=
TO_DATE (v_prs_perslid_ingangsdatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
COMMIT;
END;
ELSE
v_prs_perslid_ingangs_date := NULL;
END IF;
--
v_errorhint := 'Ongeldige datum uit dienst';
v_prs_perslid_einddatum := TRIM (v_prs_perslid_einddatum);
IF v_prs_perslid_einddatum IS NOT NULL
THEN
BEGIN
v_prs_perslid_eind_date :=
TO_DATE (v_prs_perslid_einddatum, 'dd-mm-yyyy');
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen!');
COMMIT;
END;
ELSE
v_prs_perslid_eind_date := NULL;
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errorhint :=
'Fout bij toevoegen regel aan importtabel GOUD_IMP_PRS';
INSERT INTO goud_imp_prs (imp_datum,
prs_perslid_oslogin,
prs_perslid_titel,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_srtperslid_omschrijving,
alg_locatie_code,
--alg_gebouw_code,
--alg_verdieping_code,
alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_ingangsdatum,
prs_perslid_einddatum)
VALUES (SYSDATE,
v_prs_perslid_oslogin,
v_prs_perslid_titel,
v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam,
v_prs_afdeling_naam,
v_prs_afdeling_omschrijving,
v_prs_srtperslid_omschrijving,
v_alg_locatie_code,
--v_alg_gebouw_code,
--v_alg_verdieping_code,
v_alg_ruimte_nr,
v_prs_perslid_telefoonnr,
v_prs_perslid_mobiel,
v_prs_perslid_email,
v_prs_perslid_nr,
v_prs_perslid_ingangs_date,
v_prs_perslid_eind_date);
COMMIT;
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errorhint
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Ingelezen regel kan niet worden weggeschreven!'
);
COMMIT;
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Persoon: aantal ongeldige importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
''
);
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END goud_import_prs;
/
/* Formatted on 25-8-2011 16:02:25 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE goud_update_prs (p_import_key IN NUMBER)
IS
-- LET OP: moet idem zijn als declaratie bij GOUD_IMPORT_PRS
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
c_max_delta_percentage NUMBER (10) := 20;
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
c_ruimte_nr VARCHAR2 (10) := '0.00';
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
c_profiel_omschrijving VARCHAR2 (30) := 'DEFAULT';
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
v_count_tot NUMBER (10);
v_count_error NUMBER (10);
v_count NUMBER (10);
--
v_perslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_srtperslid_key NUMBER (10);
v_locatie_key NUMBER (10);
--v_gebouw_key NUMBER (10);
--v_gebouw_code VARCHAR2 (10);
--v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (10);
v_ruimte_nr VARCHAR2 (10);
v_wp_volgnr NUMBER (3);
v_wp_oms VARCHAR2 (30);
v_wp_key NUMBER (10);
v_groep_key NUMBER (10);
v_profiel_key NUMBER (10);
-- Let op! Personen die niet meer in dienst zijn -> niet in goud_imp_prs!
-- Dubbele oslogins? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE (p.prs_perslid_oslogin IS NULL
OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\')
AND p.prs_perslid_oslogin2 IS NULL
AND NOT EXISTS
(SELECT 1
FROM goud_imp_prs ip
WHERE UPPER (ip.prs_perslid_oslogin) =
UPPER (p.prs_perslid_oslogin));
-- Let op! Personen die niet meer in dienst zijn -> niet in goud_imp_prs!
CURSOR csrtperslid
IS
SELECT MIN (prs_perslid_oslogin) prs_perslid_oslogin,
MIN (prs_perslid_naam) prs_perslid_naam,
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM goud_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
-- Let op! Personen die niet meer in dienst zijn -> niet in goud_imp_prs!
-- Dubbele oslogins? Dan wordt slechts 1 set persoongegevens toegevoegd!
-- Ook wordt in deze loop de afdelingsomschrijving eventueel bijgewerkt!
CURSOR cperslid
IS
SELECT * FROM goud_imp_prs;
-- Let op! Personen die niet meer in dienst zijn -> niet in goud_imp_prs!
-- Dubbele oslogins? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*,
ip.alg_locatie_code,
COALESCE (ip.alg_ruimte_nr, c_ruimte_nr) alg_ruimte_nr
FROM goud_imp_prs ip, prs_v_aanwezigperslid p
WHERE ip.alg_locatie_code IS NOT NULL
AND UPPER (ip.prs_perslid_oslogin) =
UPPER (p.prs_perslid_oslogin);
-- Alle actieve personen met oslogin (ie. de import-doelgroep) zonder een werkplek
CURSOR cnowp
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
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 oslogin (ie. de import-doelgroep) niet in een groep
CURSOR cnogroup
IS
SELECT p.prs_perslid_key,
p.prs_perslid_oslogin,
p.prs_perslid_naam,
p.prs_perslid_voornaam
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
-- Bepaal oslogin-match tussen Facilitor en RECENT importbestand ofwel het aantal
-- actieve personen na import.
-- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
-- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
-- worden gerapporteerd (nl. op basis van een oud importbestand in GOUD_IMP_PRS).
SELECT COUNT ( * )
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, goud_imp_prs ip
WHERE p.prs_perslid_oslogin IS NOT NULL
AND UPPER (p.prs_perslid_oslogin) =
UPPER (ip.prs_perslid_oslogin)
AND (ip.imp_datum + 0.01) > SYSDATE;
-- Bepaal huidig aantal actieve personen in Facilitor.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin IS NOT NULL;
IF ( (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) >=
(100 - c_max_delta_percentage)))
THEN
-- Geldig importbestand wat betreft aantal personen
v_errorhint := 'Fout bij bepalen profiel';
SELECT MAX (fac_profiel_key), COUNT ( * )
INTO v_profiel_key, v_count
FROM fac_profiel
WHERE UPPER (TRIM (fac_profiel_omschrijving)) =
c_profiel_omschrijving;
IF (v_count = 0)
THEN
fac.imp_writelog (
p_import_key,
'I',
'Standaard profiel ['
|| c_profiel_omschrijving
|| '] niet gevonden.',
'Personen zonder profiel kunnen niet worden gekoppeld aan een profiel.'
);
COMMIT;
END IF;
FOR recdelprs IN cdelprs
LOOP
BEGIN
v_aanduiding :=
recdelprs.prs_perslid_oslogin
|| '|'
|| recdelprs.prs_perslid_naam
|| '|'
|| recdelprs.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen verplichtingen';
-- Heeft persoon actuele/toekomstige verplichtingen?
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p, prs_v_verplichting_keys r
WHERE p.prs_perslid_key = r.prs_perslid_key
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij verwijderen persoon';
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd',
'Persoon is verwijderd'
);
COMMIT;
ELSE
-- Staat persoon INACTIEF?
v_errorhint := 'Fout bij bepalen INACTIEF';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslid p
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
IF v_count = 0
THEN
v_errorhint := 'Fout bij INACTIEF maken persoon';
-- Persoon INACTIEF maken (update naam + reset oslogin)
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR (c_persoon_inactief || prs_perslid_naam,
1,
30),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gemaakt',
'Persoon is INACTIEF gemaakt'
);
ELSE
v_errorhint := 'Fout bij INACTIEF houden persoon';
-- Persoon INACTIEF houden (reset oslogin; indien handmatig INACTIEF gemaakt)
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND prs_perslid_oslogin IS NOT NULL;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met loginnaam ['
|| recdelprs.prs_perslid_oslogin
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF',
'Persoon is INACTIEF'
);
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
v_count_tot := 0;
v_count_error := 0;
FOR recsrtperslid IN csrtperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recsrtperslid.prs_perslid_oslogin
|| '|'
|| recsrtperslid.prs_perslid_naam
|| '|'
|| recsrtperslid.prs_perslid_voornaam
|| '|'
|| recsrtperslid.prs_srtperslid_omschrijving
|| ' - ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsrtperslid.prs_srtperslid_omschrijving);
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recsrtperslid.prs_srtperslid_omschrijving);
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Functie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Functie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recperslid IN cperslid
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recperslid.prs_perslid_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_v_aanwezigsrtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Fout bij bepalen afdeling ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_upper =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint :=
'Fout bij wijzigen afdelingsomschrijving ['
|| recperslid.prs_afdeling_naam
|| '|'
|| recperslid.prs_afdeling_omschrijving
|| ']';
UPDATE prs_afdeling
SET prs_afdeling_omschrijving =
COALESCE (recperslid.prs_afdeling_omschrijving,
prs_afdeling_omschrijving)
WHERE prs_afdeling_key = v_afdeling_key;
COMMIT;
v_errorhint :=
'Fout bij bepalen kostenplaats ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper =
UPPER (recperslid.prs_afdeling_naam);
IF v_count = 1
THEN
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_upper =
UPPER (recperslid.prs_afdeling_naam);
v_errorhint :=
'Fout bij wijzigen kostenplaatsomschrijving ['
|| recperslid.prs_afdeling_naam
|| '|'
|| recperslid.prs_afdeling_omschrijving
|| ']';
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving =
COALESCE (recperslid.prs_afdeling_omschrijving,
prs_kostenplaats_omschrijving)
WHERE prs_kostenplaats_key = v_kostenplaats_key;
COMMIT;
ELSE
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kostenplaats volgens afdeling bestaat niet!'
);
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen persoon';
SELECT COUNT ( * ), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_oslogin) =
UPPER (recperslid.prs_perslid_oslogin);
IF v_count > 1
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errorhint,
'Kan persoon niet 1-duidig bepalen!');
COMMIT;
ELSE
IF v_count = 0
THEN
v_errorhint := 'Fout bij toevoegen persoon';
INSERT INTO prs_perslid (
prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_oslogin,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
fac_profiel_key
)
VALUES (
'PRS',
v_srtperslid_key,
v_afdeling_key,
recperslid.prs_perslid_oslogin,
recperslid.prs_perslid_naam,
recperslid.prs_perslid_tussenvoegsel,
recperslid.prs_perslid_voorletters,
recperslid.prs_perslid_voornaam,
recperslid.prs_perslid_titel,
recperslid.prs_perslid_telefoonnr,
recperslid.prs_perslid_mobiel,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr,
COALESCE (
recperslid.prs_perslid_ingangsdatum,
SYSDATE
),
recperslid.prs_perslid_einddatum,
v_profiel_key
)
RETURNING prs_perslid_key INTO v_perslid_key;
ELSE
v_errorhint := 'Fout bij wijzigen persoon';
UPDATE prs_perslid
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = recperslid.prs_perslid_naam,
prs_perslid_tussenvoegsel =
recperslid.prs_perslid_tussenvoegsel,
prs_perslid_voorletters =
recperslid.prs_perslid_voorletters,
prs_perslid_voornaam =
recperslid.prs_perslid_voornaam,
prs_perslid_titel = recperslid.prs_perslid_titel,
prs_perslid_telefoonnr =
recperslid.prs_perslid_telefoonnr,
prs_perslid_mobiel = recperslid.prs_perslid_mobiel,
prs_perslid_email = recperslid.prs_perslid_email,
prs_perslid_nr = recperslid.prs_perslid_nr,
prs_perslid_ingangsdatum =
COALESCE (recperslid.prs_perslid_ingangsdatum,
prs_perslid_ingangsdatum),
prs_perslid_einddatum =
recperslid.prs_perslid_einddatum,
fac_profiel_key =
COALESCE (fac_profiel_key, v_profiel_key)
WHERE prs_perslid_key = v_perslid_key;
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Persoon: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Persoon: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
v_count_tot := 0;
v_count_error := 0;
FOR recwp IN cwp
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recwp.prs_perslid_oslogin
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_locatie_code
|| '|'
--|| recwp.alg_gebouw_code
--|| '|'
--|| recwp.alg_verdieping_code
--|| '|'
|| recwp.alg_ruimte_nr
|| ' - ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_oslogin) =
UPPER (recwp.prs_perslid_oslogin);
v_errorhint := 'Fout bij bepalen locatie';
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE UPPER (alg_locatie_code) =
UPPER (recwp.alg_locatie_code);
v_errorhint := 'Fout bij bepalen ruimte op locatie';
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g
WHERE r.alg_ruimte_upper_nr = UPPER (recwp.alg_ruimte_nr)
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = v_locatie_key;
v_errorhint :=
'Fout bij bepalen of persoon op locatie een werkplek heeft';
SELECT COUNT ( * )
INTO v_count
FROM prs_perslidwerkplek pw,
prs_werkplek w,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = v_locatie_key;
-- Als persoon op locatie reeds een werkplek heeft en de nieuwe zou
-- in de default ruimte zijn (want ongedefinieerd bij import!), dan
-- wordt onderstaande overgeslagen.
IF v_count = 0 OR recwp.alg_ruimte_nr != c_ruimte_nr
THEN
v_errorhint := 'Fout bij verhuizen naar nieuwe werkplek';
PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'L');
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Werkplek: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Werkplek: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
FOR recnowp IN cnowp
LOOP
BEGIN
fac.imp_writelog (
p_import_key,
'I',
'Persoon met nummer ['
|| recnowp.prs_perslid_oslogin
|| '] en naam ['
|| recnowp.prs_perslid_naam
|| ', '
|| recnowp.prs_perslid_voornaam
|| '] heeft geen werkplek',
'Geen werkplek'
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_oslogin
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE fac_groep_upper = c_groep_upper;
v_errorhint :=
'Fout bij koppelen persoon aan groep ['
|| c_groep_upper
|| ']';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (v_groep_key, recnogroup.prs_perslid_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
DELETE FROM prs_srtperslid sp
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslid p
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key);
COMMIT;
ELSE
IF (v_count_prs_import = 0)
THEN
fac.imp_writelog (
p_import_key,
'S',
'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
''
);
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%]
'
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| ']
'
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']'
);
END IF;
COMMIT;
END IF;
COMMIT;
END goud_update_prs;
/
/* Formatted on 13-10-2014 15:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW GOUD_V_GRAPH_ITMLD_AFM
(
FCLT_XAS_,
FCLT_YAS_
)
AS
SELECT SUM (nog_op_tijd) aantal, COUNT (mld_key) totaal
FROM (SELECT m.mld_melding_key mld_key,
DECODE (
SIGN (m.mld_melding_einddatum_std - TRUNC (SYSDATE, 'mi')),
-1, 0,
1)
nog_op_tijd
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 1 -- Helpdesk IT
AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
);
CREATE OR REPLACE VIEW GOUD_V_GRAPH_FDMLD_AFM
(
FCLT_XAS_,
FCLT_YAS_
)
AS
SELECT SUM (nog_op_tijd) aantal, COUNT (mld_key) totaal
FROM (SELECT m.mld_melding_key mld_key,
DECODE (
SIGN (m.mld_melding_einddatum_std - TRUNC (SYSDATE, 'mi')),
-1, 0,
1)
nog_op_tijd
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 2 -- Servicedesk FD
AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
);
BEGIN fac.registercustversion('GOUD', 1); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
commit;
spool off