Files
Customer/HPJI/hpji.sql
Peter Koerhuis 78cfb9e126 HPJI#28971 Geleverde bestellingen bloemen automatisch afmelden
svn path=/Customer/trunk/; revision=21248
2014-04-07 12:50:32 +00:00

3225 lines
133 KiB
SQL

-- Script containing customer specific db-configuration for HPJI.
-- (c) 2010 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xhpji.lst
/* Formatted on 3-2-2011 11:55:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE HPJI
AS
-- PACKAGES voor de HPJI specifieke ondersteuning
TYPE t_cursor IS REF CURSOR;
PROCEDURE rap_it_inventaris_jaar (user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor);
END;
/
/* Formatted on 3-2-2011 11:55:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PACKAGE BODY HPJI
AS
PROCEDURE rap_it_inventaris_jaar (user_key IN NUMBER,
p_datum_van IN VARCHAR2, -- Let wel: formaat '24-06-1965'
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor)
AS
v_datum_van DATE;
v_datum_tot DATE;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
OPEN p_cursor FOR
SELECT grid.onderdeel || '-' || grid.rubriek hide_f_regel,
grid.onderdeel fclt_f_onderdeel,
grid.rubriek fclt_f_rubriek,
grid.jaar fclt_f_aanschafjaar,
COALESCE (x.aantal, 0) aantal
FROM (SELECT a.prs_afdeling_key onderdeel_key,
sd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
a.prs_afdeling_omschrijving onderdeel,
sd.ins_srtdeel_omschrijving rubriek
FROM (SELECT prs_afdeling_key,
prs_afdeling_omschrijving
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_parentkey IS NULL
UNION ALL
SELECT -1 prs_afdeling_key,
'Onbekend' prs_afdeling_omschrijving
FROM DUAL) a,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
(SELECT DISTINCT
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 101 -- Aanschafdatum
AND fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
) BETWEEN v_datum_van
AND v_datum_tot) j
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 401) grid -- Hardware
LEFT JOIN
( SELECT asd.prs_afdeling_key1 onderdeel_key,
asd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
COUNT ( * ) aantal
FROM (SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND aog.alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND (aog.alg_ruimte_key IS NULL
OR NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
aog.alg_ruimte_key))
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key =
ab.prs_afdeling_key
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_perslid p,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key =
p.prs_perslid_key
AND p.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND w.prs_alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_werkplek w
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
w.prs_alg_ruimte_key))
asd
LEFT JOIN
(SELECT ins_deel_key,
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
)
datum,
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 101) j -- Aanschafdatum
ON asd.ins_deel_key = j.ins_deel_key
WHERE j.datum BETWEEN v_datum_van AND v_datum_tot
GROUP BY asd.prs_afdeling_key1,
asd.ins_srtdeel_key,
j.jaar) x
ON grid.onderdeel_key = x.onderdeel_key
AND grid.rubriek_key = x.rubriek_key
AND grid.jaar = x.jaar
ORDER BY 1,
2,
3,
4;
END rap_it_inventaris_jaar;
END;
/
CREATE OR REPLACE VIEW hpji_v_import_log
AS
SELECT imp_log_status fclt_f_status,
imp_log_omschrijving omschrijving,
imp_log_hint opmerking
FROM imp_log l
WHERE l.fac_import_key = (SELECT MAX (fac_import_key)
FROM fac_import
WHERE fac_import_app_key = 41);
/* Formatted on 14-1-2010 18:14:22 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE hpji_import_prs (p_import_key IN NUMBER)
IS
c_fielddelimitor VARCHAR2 (1) := ';';
-- LET OP: moet idem zijn als declaratie bij HPJI_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_naam VARCHAR2 (256);
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
v_prs_perslid_voorletters VARCHAR2 (256);
v_prs_perslid_voornaam VARCHAR2 (256);
v_prs_perslid_nr VARCHAR2 (256); -- HPJI#23731
v_prs_afdeling_naam VARCHAR2 (256);
v_prs_srtperslid_omschrijving VARCHAR2 (256);
v_alg_locatie_oms VARCHAR2 (256); -- A30
v_alg_ruimte_nr VARCHAR2 (256); -- A10
v_prs_perslid_telefoonnr VARCHAR2 (256);
v_prs_perslid_email 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 hpji_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_naam);
-- 03
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_tussenvoegsel);
-- 04
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voorletters);
-- 05
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_voornaam);
-- 06
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
-- 07
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
-- 08
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_srtperslid_omschrijving);
-- 09
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_oms);
-- 10
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
-- 11
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_telefoonnr);
-- 12
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
-- 13
fac.imp_getfield (v_newline,
c_fielddelimitor,
v_prs_perslid_ingangsdatum);
-- 14
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
|| '|'
|| v_prs_perslid_nr
|| '] ';
-- 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_naam) = 'NAAM'
AND UPPER (v_prs_perslid_tussenvoegsel) = 'TUSSENVOEGSEL'
AND UPPER (v_prs_perslid_voorletters) = 'VOORLETTERS'
AND UPPER (v_prs_perslid_voornaam) = 'VOORNAAM'
AND UPPER (v_prs_perslid_nr) = 'PERSONEELSNUMMER'
AND UPPER (v_prs_afdeling_naam) = 'AFDELINGSCODE'
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
AND UPPER (v_alg_locatie_oms) = 'LOCATIE'
AND UPPER (v_alg_ruimte_nr) = 'RUIMTE'
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
AND UPPER (v_prs_perslid_email) = 'EMAIL'
AND UPPER (v_prs_perslid_ingangsdatum) = 'DATUM IN DIENST'
AND UPPER (v_prs_perslid_einddatum) = 'DATUM UIT DIENST'
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 LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Loginnaam te lang',
'Loginnaam wordt afgebroken tot ['
|| v_prs_perslid_oslogin
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige 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 := 'Ongeldig personeelsnummer';
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
IF LENGTH (v_prs_perslid_nr) > 16
THEN
-- Niet afbreken; anders persoon mogelijk aan verkeerde foto
-- gekoppeld!
v_prs_perslid_nr := NULL;
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Personeelsnummer te lang',
'Personeelsnummer wordt overgeslagen/gewist'
);
COMMIT;
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 functie';
v_prs_srtperslid_omschrijving :=
TRIM (v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
THEN
v_prs_srtperslid_omschrijving :=
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Functie te lang',
'Functie wordt afgebroken tot ['
|| v_prs_srtperslid_omschrijving
|| ']'
);
COMMIT;
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL)
THEN
v_ongeldig := 1;
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || 'Functie onbekend',
'Functie is verplicht; regel wordt overgeslagen!'
);
COMMIT;
END IF;
END IF;
-- LET OP: Locatieomschrijving (niet locatiecode)!
v_errorhint := 'Ongeldige locatieomschrijving';
v_alg_locatie_oms := TRIM (v_alg_locatie_oms);
IF LENGTH (v_alg_locatie_oms) > 30
THEN
v_alg_locatie_oms := SUBSTR (v_alg_locatie_oms, 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'locatieomschrijving te lang',
'Aanduiding wordt afgebroken tot ['
|| v_alg_locatie_oms
|| ']'
);
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',
'Aanduiding wordt afgebroken tot ['
|| v_alg_ruimte_nr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig telefoonnummer';
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
IF LENGTH (v_prs_perslid_telefoonnr) > 15
THEN
v_prs_perslid_telefoonnr :=
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Telefoonnummer te lang',
'Telefoonnummer wordt afgebroken tot ['
|| v_prs_perslid_telefoonnr
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldig e-mailadres';
v_prs_perslid_email := TRIM (v_prs_perslid_email);
IF LENGTH (v_prs_perslid_email) > 50
THEN
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'E-mailadres te lang',
'E-mailadres wordt afgebroken tot ['
|| v_prs_perslid_email
|| ']'
);
COMMIT;
END IF;
--
v_errorhint := 'Ongeldige 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 HPJI_IMP_PRS';
INSERT INTO hpji_imp_prs (imp_datum,
prs_perslid_oslogin,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_nr,
prs_afdeling_naam,
prs_srtperslid_omschrijving,
alg_locatie,
alg_ruimte_nr,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_ingangsdatum,
prs_perslid_einddatum)
VALUES (SYSDATE,
v_prs_perslid_oslogin,
v_prs_perslid_naam,
v_prs_perslid_tussenvoegsel,
v_prs_perslid_voorletters,
v_prs_perslid_voornaam,
v_prs_perslid_nr,
v_prs_afdeling_naam,
v_prs_srtperslid_omschrijving,
v_alg_locatie_oms,
v_alg_ruimte_nr,
v_prs_perslid_telefoonnr,
v_prs_perslid_email,
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 hpji_import_prs;
/
/* Formatted on 12-3-2010 13:22:22 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE hpji_update_prs (p_import_key IN NUMBER)
IS
-- LET OP: moet idem zijn als declaratie bij HPJI_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) := '000';
-- 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_srtperslid_key NUMBER (10);
v_locatie_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 hpji_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 hpji_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 hpji_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 hpji_imp_prs
GROUP BY UPPER (prs_srtperslid_omschrijving);
-- Let op! Personen die niet meer in dienst zijn -> niet in hpji_imp_prs!
-- Dubbele oslogins? Dan wordt slechts 1 set persoongegevens toegevoegd!
CURSOR cperslid
IS
SELECT * FROM hpji_imp_prs;
-- Let op! Personen die niet meer in dienst zijn -> niet in hpji_imp_prs!
-- Dubbele oslogins? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*, ip.alg_locatie, ip.alg_ruimte_nr
FROM hpji_imp_prs ip, prs_v_aanwezigperslid p
WHERE ip.alg_locatie IS NOT NULL
AND UPPER (ip.prs_perslid_oslogin) =
UPPER (p.prs_perslid_oslogin)
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key);
-- 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 HPJI_IMP_PRS).
SELECT COUNT ( * )
INTO v_count_prs_import
FROM prs_v_aanwezigperslid p, hpji_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
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?
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 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_naam,
prs_perslid_voorletters,
prs_perslid_tussenvoegsel,
prs_perslid_voornaam,
prs_perslid_telefoonnr,
prs_perslid_email,
prs_perslid_oslogin,
prs_perslid_ingangsdatum,
prs_perslid_einddatum,
fac_profiel_key,
prs_perslid_nr
)
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_oslogin,
COALESCE (
recperslid.prs_perslid_ingangsdatum,
SYSDATE
),
recperslid.prs_perslid_einddatum,
v_profiel_key,
recperslid.prs_perslid_nr
)
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_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_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),
prs_perslid_nr = recperslid.prs_perslid_nr
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
|| '|'
|| 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 COUNT ( * )
INTO v_count
FROM alg_v_aanweziglocatie
WHERE alg_locatie_upper = UPPER (recwp.alg_locatie);
IF v_count = 0
THEN
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Locatie bestaat niet!');
COMMIT;
ELSE -- Locatie bestaat!
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE alg_locatie_upper = UPPER (recwp.alg_locatie);
v_ruimte_key := NULL;
v_errorhint := 'Fout bij bepalen ruimte op locatie';
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g
WHERE UPPER (r.alg_ruimte_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;
IF v_count > 1
THEN
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kan ruimte niet 1-duidig bepalen!');
COMMIT;
ELSE
IF v_count = 1
THEN
v_ruimte_nr := recwp.alg_ruimte_nr;
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g
WHERE UPPER (r.alg_ruimte_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;
ELSE
v_ruimte_nr := c_ruimte_nr;
SELECT r.alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g
WHERE UPPER (r.alg_ruimte_nr) = c_ruimte_nr
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_code IN ('FS0', 'INT')
AND g.alg_locatie_key = v_locatie_key;
END IF;
END IF;
-- Persoon krijgt wp op de hierboven bepaalde ruimte (als deze
-- bestaat).
IF v_ruimte_key IS NOT NULL
THEN
v_errorhint := 'Fout bij bepalen vrije werkplek';
SELECT COUNT ( * )
INTO v_count
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
IF v_count > 0
THEN
SELECT MIN (w.prs_werkplek_key)
INTO v_wp_key
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
w.prs_werkplek_key);
v_errorhint :=
'Fout bij koppelen persoon aan vrije werkplek';
INSERT INTO prs_perslidwerkplek (
prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key, 100);
COMMIT;
ELSE
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
INTO v_wp_volgnr
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
v_wp_oms := v_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
v_errorhint := 'Fout bij toevoegen nieuwe werkplek';
INSERT INTO prs_werkplek (prs_werkplek_module,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_alg_ruimte_key)
VALUES ('PRR',
v_wp_volgnr,
v_wp_oms,
v_ruimte_key)
RETURNING prs_werkplek_key INTO v_wp_key;
v_errorhint :=
'Fout bij koppelen persoon aan nieuwe werkplek';
INSERT INTO prs_perslidwerkplek (
prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_wp_key, 100);
COMMIT;
END IF;
END IF;
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 loginnaam ['
|| 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)
|| '%] <br> '
|| '- #personen importbestand = ['
|| TO_CHAR (v_count_prs_import)
|| '] <br> '
|| '- #personen Facilitor = ['
|| TO_CHAR (v_count_prs_actual)
|| ']'
);
END IF;
COMMIT;
END IF;
COMMIT;
END hpji_update_prs;
/
/* Formatted on 2-3-2011 10:30:36 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_ruimtekaartjes
(
fclt_f_opmaak,
fclt_f_loc_code,
fclt_f_geb_code,
fclt_f_ver_code,
fclt_f_ruimte_nr,
hide_f_ruimte_key,
ruimtesoort,
opp,
titel,
naam,
tussenvoegsel,
voorletters,
voornaam,
functie,
aantal
)
AS
(SELECT e.opmaak,
a.alg_locatie_code,
a.alg_gebouw_code,
a.alg_verdieping_code,
a.alg_ruimte_nr,
TO_CHAR (a.alg_ruimte_key) || e.opmaak,
b.ruimtesoort,
a.opp,
c.prs_perslid_titel,
c.prs_perslid_naam,
c.prs_perslid_tussenvoegsel,
c.prs_perslid_voorletters,
c.prs_perslid_voornaam,
c.prs_srtperslid_omschrijving,
d.aantal
FROM (SELECT r.alg_ruimte_key,
r.alg_ruimte_nr,
v.alg_verdieping_code,
g.alg_gebouw_code,
l.alg_locatie_code,
d.alg_district_omschrijving,
r.alg_ruimte_bruto_vloeropp opp
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_district d
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key)
a
LEFT JOIN
(SELECT r.alg_ruimte_key,
COALESCE (sr.alg_srtruimte_omschrijving, '-')
ruimtesoort
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) b
ON a.alg_ruimte_key = b.alg_ruimte_key
LEFT JOIN -- personen op ruimte
(SELECT DISTINCT wp.prs_alg_ruimte_key,
p.prs_perslid_titel,
p.prs_perslid_naam,
p.prs_perslid_voorletters,
p.prs_perslid_tussenvoegsel,
p.prs_perslid_voornaam,
sp.prs_srtperslid_omschrijving
FROM prs_werkplek wp,
prs_perslidwerkplek pw,
prs_v_aanwezigperslid p,
prs_srtperslid sp
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
AND pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key)
c
ON a.alg_ruimte_key = c.prs_alg_ruimte_key
LEFT JOIN -- aantal personen op ruimte
( SELECT wp.prs_alg_ruimte_key,
COUNT (pw.prs_perslid_key) aantal
FROM prs_werkplek wp,
prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY wp.prs_alg_ruimte_key) d
ON a.alg_ruimte_key = d.prs_alg_ruimte_key,
(SELECT 'Wilster' opmaak FROM DUAL
UNION ALL
SELECT 'Portalis' opmaak FROM DUAL
UNION ALL
SELECT 'Juvaid' opmaak FROM DUAL
UNION ALL
SELECT 'Het Poortje' opmaak FROM DUAL
UNION ALL
SELECT 'DOK3' opmaak FROM DUAL) e);
/* Formatted on 15-2-2010 11:36:40 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_ruimtekaartjes2
(
fclt_f_opmaak,
fclt_f_loc_code,
fclt_f_geb_code,
fclt_f_ver_code,
fclt_f_ruimte_nr,
hide_f_ruimte_key,
ruimtesoort
)
AS
SELECT DISTINCT fclt_f_opmaak,
fclt_f_loc_code,
fclt_f_geb_code,
fclt_f_ver_code,
fclt_f_ruimte_nr,
hide_f_ruimte_key,
ruimtesoort
FROM hpji_v_ruimtekaartjes
/
CREATE OR REPLACE VIEW hpji_v_label_ruimteafd (
alg_ruimte_key,
waarde
)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_naam1
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Onbekend]' -- ruimten zonder afd.
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen afd. binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE VIEW hpji_v_label_ruimteafd_nr (alg_ruimte_key, waarde)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_naam
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Onbekend]' -- ruimten zonder afd.
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen afd. binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE VIEW hpji_v_label_ruimteafd_oms (alg_ruimte_key, waarde)
AS
SELECT DISTINCT ra.alg_ruimte_key, a.prs_afdeling_omschrijving
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
UNION
SELECT DISTINCT r.alg_ruimte_key, '[Onbekend]' -- ruimten zonder afd.
FROM alg_v_aanwezigruimte r
WHERE NOT EXISTS ( -- waar geen afd. binnen bestaat
SELECT ra.alg_ruimte_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.alg_ruimte_key = r.alg_ruimte_key)
/
CREATE OR REPLACE FORCE VIEW hpji_v_thema_ruimteafd (
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Onbekend]',
1, SUBSTR (y.afd, 1, 60),
'Meer dan 1 afdeling!'),
DECODE (y.aantal, NULL, -1, 1, y.afd_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
(SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) afd,
MIN (a.prs_afdeling_key) afd_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
UNION ALL
SELECT NULL, a.prs_afdeling_naam1, a.prs_afdeling_key
FROM prs_v_aanwezigafdeling a
WHERE NOT EXISTS
(SELECT ra.prs_afdeling_key
FROM prs_v_aanwezigruimteafdeling ra
WHERE ra.prs_afdeling_key = a.prs_afdeling_key)
/
CREATE OR REPLACE TRIGGER hpji_t_thema_ruimteafd_i_iu
INSTEAD OF INSERT OR UPDATE
ON hpji_v_thema_ruimteafd
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE FROM prs_ruimteafdeling
WHERE alg_ruimte_key = :new.alg_ruimte_key
AND prs_afdeling_key <> :new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
INSERT INTO prs_ruimteafdeling
(
alg_ruimte_key, prs_afdeling_key
)
VALUES (:new.alg_ruimte_key, :new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
/* Formatted on 15-2-2010 12:04:02 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FORCE VIEW hpji_v_thema_ruimteafd1
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT x.alg_ruimte_key,
DECODE (y.aantal,
NULL, '[Onbekend]',
1, SUBSTR (y.afd, 1, 60),
'Meer dan 1 afdeling!'),
DECODE (y.aantal, 1, y.afd_key, NULL)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) x
LEFT JOIN
( SELECT ra.alg_ruimte_key,
MIN (a.prs_afdeling_naam1) afd,
MIN (a.prs_afdeling_key) afd_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_afdeling_boom b,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = b.prs_afdeling_key
AND b.prs_afdeling_key1 = a.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) y
ON x.alg_ruimte_key = y.alg_ruimte_key
/
/* Formatted on 2-3-2010 21:00:14 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_thema_vloerafw
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT a.alg_ruimte_key,
COALESCE (b.vloerafw, '[Onbekend]'),
COALESCE (b.vloerafw_key, -1)
FROM (SELECT r.alg_ruimte_key
FROM alg_v_aanwezigruimte r) a
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr vloerafw,
ud.fac_usrdata_key vloerafw_key
FROM alg_onrgoedkenmerk ok, fac_usrdata ud
WHERE ok.alg_kenmerk_key = 1020 -- vloerafwerking
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND ok.alg_onrgoedkenmerk_waarde =
ud.fac_usrdata_key) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
UNION ALL
SELECT NULL,
ud.fac_usrdata_omschr vloerafw,
ud.fac_usrdata_key vloerafw_key
FROM fac_usrdata ud
WHERE ud.fac_usrtab_key = 21
AND NOT EXISTS
(SELECT 1
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1020 -- vloerafwerking
AND ok.alg_onrgoedkenmerk_waarde =
ud.fac_usrdata_key)
/
/* Formatted on 2-3-2010 13:24:46 (QP5 v5.115.810.9015) */
CREATE OR REPLACE TRIGGER hpji_t_thema_vloerafw_i_iu
INSTEAD OF INSERT OR UPDATE
ON hpji_v_thema_vloerafw
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
DELETE FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = :new.alg_ruimte_key
AND alg_onrgoedkenmerk_waarde <> :new.waarde_key;
END IF;
BEGIN
IF :new.waarde_key <> -1
THEN
INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key,
alg_onrgoed_niveau,
alg_kenmerk_key,
alg_onrgoedkenmerk_waarde)
VALUES (:new.alg_ruimte_key,
'R',
1020,
:new.waarde_key);
END IF;
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
/* Formatted on 23-3-2010 12:00:05 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_thema_ruimtefunc
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT r.alg_ruimte_key ruimte_key,
COALESCE (sr.alg_srtruimte_omschrijving, '[Onbekend]') waarde,
COALESCE (sr.alg_srtruimte_key, -1) waarde_key
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
UNION ALL
SELECT NULL ruimte_key,
sr.alg_srtruimte_omschrijving waarde,
sr.alg_srtruimte_key waarde_key
FROM alg_srtruimte sr
WHERE NOT EXISTS (SELECT 1
FROM alg_v_aanwezigruimte r
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key)
/
/* Formatted on 23-3-2010 12:05:35 (QP5 v5.115.810.9015) */
CREATE OR REPLACE TRIGGER hpji_t_thema_ruimtefunc_i_iu
INSTEAD OF UPDATE
ON hpji_v_thema_ruimtefunc
FOR EACH ROW
BEGIN
UPDATE alg_ruimte
SET alg_srtruimte_key = :new.waarde_key
WHERE alg_ruimte_key = :new.alg_ruimte_key
AND alg_srtruimte_key <> :new.waarde_key;
END;
/
/* Formatted on 2-3-2010 14:06:50 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FORCE VIEW hpji_v_thema_legewp
(
alg_ruimte_key,
waarde
)
AS
SELECT x.prs_alg_ruimte_key,
(100 - ROUND (wp_bez / wp_tot * 100)) leeg_p
FROM ( SELECT wp.prs_alg_ruimte_key, COUNT ( * ) wp_tot
FROM prs_werkplek wp
GROUP BY wp.prs_alg_ruimte_key) x
LEFT JOIN
( SELECT wp.prs_alg_ruimte_key, COUNT ( * ) wp_bez
FROM prs_werkplek wp
WHERE EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key =
wp.prs_werkplek_key)
GROUP BY wp.prs_alg_ruimte_key) y
ON x.prs_alg_ruimte_key = y.prs_alg_ruimte_key;
/
/* Formatted on 23-3-2010 13:40:40 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FORCE VIEW hpji_v_thema_objecten (alg_ruimte_key, waarde)
AS
SELECT d.ins_alg_ruimte_key, COUNT ( * ) aantal
FROM ins_deel d
WHERE d.ins_alg_ruimte_type = 'R'
GROUP BY d.ins_alg_ruimte_key
/
/* Formatted on 2-3-2010 17:00:00 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW HPJI_V_RAP_OPROGNOSEACTIVITEIT
(
FCLT_F_SOORTACTIVITEIT,
FCLT_F_JAAR,
ACTIVITEITEN,
BUDGET
)
AS
SELECT mld_stdmelding_omschrijving,
TO_CHAR (mld_melding_datum, 'yyyy') fclt_f_jaar,
COUNT (mld_melding_key),
SUM (fac.safe_to_number (prijs)) budget
FROM fac_v_oprognosegegevens
GROUP BY mld_stdmelding_omschrijving,
TO_CHAR (mld_melding_datum, 'yyyy');
/* Formatted on 1-4-2010 21:14:04 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW HPJI_V_RAP_OPROGNOSEGEBOUW
(
FCLT_F_GEBOUW,
FCLT_F_JAAR,
ACTIVITEITEN,
BUDGET
)
AS
SELECT op.alg_locatie_code
|| ' - '
|| g.alg_gebouw_code
|| ' / '
|| g.alg_gebouw_naam
gebouw,
TO_CHAR (op.mld_melding_datum, 'yyyy') fclt_f_jaar,
COUNT (op.mld_melding_key),
SUM (fac.safe_to_number (op.prijs)) budget
FROM fac_v_oprognosegegevens op, alg_gebouw g
WHERE op.alg_gebouw_key = g.alg_gebouw_key
GROUP BY op.alg_locatie_code
|| ' - '
|| g.alg_gebouw_code
|| ' / '
|| g.alg_gebouw_naam,
TO_CHAR (op.mld_melding_datum, 'yyyy');
/* Formatted on 2-3-2010 17:00:00 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FORCE VIEW HPJI_V_RAP_OPROGNOSEVOORTGANG
(
FCLT_F_GEBOUW,
FCLT_F_JAAR,
MELDINGNR,
SOORTACTIVITEIT,
ACTIVITEIT,
STATUS,
BUDGET
)
AS
SELECT alg_locatie_gebouw_naam gebouw,
TO_CHAR (mld_melding_datum, 'yyyy') fclt_f_jaar,
TO_CHAR (mld_melding_key) meldingnr,
mld_stdmelding_omschrijving,
mld_melding_omschrijving melding,
mld_statuses_omschrijving status,
fac.safe_to_number (prijs) budget
FROM fac_v_oprognosegegevens;
/* Formatted on 25-5-2010 17:32:32 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_inkoopdata
(
maand,
afgemeld_op,
soort_bestelling,
bestel_id,
status,
besteld_op,
besteld_bij,
commentaar,
kosten
)
AS
SELECT DISTINCT
DECODE (b.bes_bestelling_status,
6, TO_CHAR (bo.bes_bestelopdr_leverdatum, 'yyyy-mm'),
-- TO_CHAR (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
-- 'yyyy-mm'),
'Lopend')
maand,
-- TO_CHAR (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
-- 'dd-mm-yyyy')
TO_CHAR (bo.bes_bestelopdr_leverdatum, 'dd-mm-yyyy') afgemeld_op,
'Catalogus',
TO_CHAR (b.bes_bestelling_key) bestel_id,
s.bes_bestellingstatuses_omschr status,
TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy') besteld_op,
l.prs_bedrijf_naam,
bo.bes_bestelopdr_delivery_opmerk,
0 kosten
FROM bes_bestelling b,
bes_bestellingstatuses s,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
prs_bedrijf l
WHERE b.bes_bestelling_status = s.bes_bestellingstatuses_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = l.prs_bedrijf_key
UNION ALL
SELECT DECODE (
a.mld_statusopdr_key,
6,
TO_CHAR (fac.gettrackingdate ('ORDAFM', a.mld_opdr_key),
'yyyy-mm'),
'Lopend'
)
maand,
TO_CHAR (fac.gettrackingdate ('ORDAFM', a.mld_opdr_key),
'dd-mm-yyyy')
afgemeld_op,
'Incidenteel',
a.bestel_id,
a.status,
TO_CHAR (a.besteld_op, 'dd-mm-yyyy'),
a.prs_bedrijf_naam,
DECODE (b.fac_usrdata_key,
41, b.ontvangststatus || CHR (13) || CHR (10),
42, b.ontvangststatus || CHR (13) || CHR (10),
43, b.ontvangststatus || CHR (13) || CHR (10),
'')
|| COALESCE (c.commentaar, ''),
a.kosten
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
bestel_id,
o.mld_statusopdr_key,
s.mld_statusopdr_omschrijving status,
o.mld_opdr_datumbegin besteld_op,
o.mld_opdr_verzonden,
u.prs_bedrijf_naam,
o.mld_opdr_kosten kosten
FROM mld_opdr o, mld_statusopdr s, prs_bedrijf u
WHERE o.mld_typeopdr_key = 182
AND o.mld_statusopdr_key = s.mld_statusopdr_key
AND o.mld_uitvoerende_keys = u.prs_bedrijf_key) a
LEFT JOIN
(SELECT ko.mld_opdr_key,
ud.fac_usrdata_key,
ud.fac_usrdata_omschr ontvangststatus
FROM mld_v_aanwezigkenmerkopdr ko, fac_usrdata ud
WHERE ko.mld_kenmerk_key = 1
AND fac.safe_to_number (
ko.mld_kenmerkopdr_waarde
) = ud.fac_usrdata_key) b
ON a.mld_opdr_key = b.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde commentaar
FROM mld_v_aanwezigkenmerkopdr ko
WHERE ko.mld_kenmerk_key = 2) c
ON a.mld_opdr_key = c.mld_opdr_key;
/* Formatted on 1-4-2010 21:06:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_inkoop_opm
(
fclt_f_maand,
hide_f_afgemeld_op,
fclt_f_soort_bestelling,
bestel_id,
status,
besteld_op,
fclt_f_leverancier,
klacht
)
AS
SELECT v.maand,
v.afgemeld_op,
v.soort_bestelling,
v.bestel_id,
v.status,
v.besteld_op,
v.besteld_bij,
v.commentaar
FROM hpji_v_inkoopdata v
WHERE v.maand = 'Lopend' OR v.commentaar IS NOT NULL;
/* Formatted on 1-4-2010 22:05:35 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_inkoop_ppi
(
fclt_f_maand,
fclt_f_leverancier,
totaal_aantal,
klacht_aantal,
percentage
)
AS
SELECT sums.maand,
sums.besteld_bij,
sums.totaal_aant,
sums.klacht_aant,
REPLACE (
TO_CHAR (sums.klacht_aant / sums.totaal_aant * 100,
'999990D9'),
'.',
','
)
|| '%'
FROM ( SELECT x.maand,
x.besteld_bij,
SUM (x.totaal_aant) totaal_aant,
SUM (x.klacht_aant) klacht_aant
FROM ( SELECT v.maand,
v.besteld_bij,
COUNT ( * ) totaal_aant,
0 klacht_aant
FROM hpji_v_inkoopdata v
WHERE v.maand <> 'Lopend'
GROUP BY v.maand, v.besteld_bij
UNION ALL
SELECT v.maand,
v.besteld_bij,
0 totaal_aant,
COUNT ( * ) klacht_aant
FROM hpji_v_inkoopdata v
WHERE v.maand <> 'Lopend'
AND v.commentaar IS NOT NULL
GROUP BY v.maand, v.besteld_bij) x
GROUP BY x.maand, x.besteld_bij) sums
WHERE sums.totaal_aant > 0;
/* Formatted on 28-6-2010 15:44:38 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_noti_goederenontvangst
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (
sn.fac_srtnotificatie_oms,
'##OPDR##',
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
),
o.mld_opdr_key,
NULL,
NULL,
NULL
FROM mld_opdr o,
mld_kenmerkopdr ko,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE o.mld_statusopdr_key IN (4, 5, 8) -- Gefiat./Uitgeg./Geaccept.
AND o.mld_typeopdr_key = 182
AND TRUNC (ko.mld_kenmerkopdr_aanmaak) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (ko.mld_kenmerkopdr_aanmaak, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = 1 -- Ontvangststatus
AND ko.mld_kenmerkopdr_waarde IN ('41') -- Onjuist
AND sn.fac_srtnotificatie_code = 'CUST01'
AND gg.fac_groep_key = 81
UNION ALL
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (
sn.fac_srtnotificatie_oms,
'##OPDR##',
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
),
o.mld_opdr_key,
NULL,
NULL,
NULL
FROM mld_opdr o,
mld_v_aanwezigkenmerkopdr ko1,
mld_v_aanwezigkenmerkopdr ko2,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE o.mld_statusopdr_key IN (4, 5, 8) -- Gefiat./Uitgeg./Geaccept.
AND o.mld_typeopdr_key = 182
AND TRUNC (fac.gettrackingdate ('ORDUPD', o.mld_opdr_key)) =
TRUNC (SYSDATE)
AND TO_NUMBER(TO_CHAR (
fac.gettrackingdate ('ORDUPD', o.mld_opdr_key),
'HH24'
))
+ 1 = TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND o.mld_opdr_key = ko1.mld_opdr_key
AND ko1.mld_kenmerk_key = 1 -- Ontvangststatus
AND ko1.mld_kenmerkopdr_waarde IN ('42', '43') -- Retour/Goedgek.
AND o.mld_opdr_key = ko2.mld_opdr_key
AND ko2.mld_kenmerk_key = 101 -- Afleveradres
AND sn.fac_srtnotificatie_code = 'CUST01'
AND gg.fac_groep_key = 86
AND gg.prs_perslid_key IN
(SELECT pw.prs_perslid_key
FROM prs_perslidwerkplek pw,
prs_werkplek wp,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
AND wp.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 =
DECODE (ko2.mld_kenmerkopdr_waarde,
'121', 2, -- Afleveradres GR
'122', 1, -- Afleveradres VH
NULL));
-- Bevat CUST02-reminders naar groepen bij aanmaken specifieke WF-meldingen:
-- Nieuwe Medewerker (NM), Vertrek Medewerker (VM) en Kleine Verhuizing (KV).
-- Periodiciteit: elk uur (mbt. in het voorgaande uur aangemaakte meldingen)!
/* Formatted on 3-5-2010 14:52:25 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_noti_wf_reminder
(
code,
sender,
receiver,
text,
KEY,
par1,
par2,
xkey
)
AS -- Systeembeheer=89
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (281, -- verzorgen netwerkacc.+appl.
288, -- toewijzen telefoonnr.
292, -- plaatsen PC+randapp.
300, -- deact. acc.+appl.
306 -- patchen netw.
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 89
UNION ALL -- PZ=93
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (282, -- opvoeren Persmaster
293, -- wijzigen Persmaster
297 -- innemen vervoersbewijs
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 93
UNION ALL -- Huisvesting=82
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (283, -- toewijzen werkplek
302 -- plannen kleine verhuzing
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 82
UNION ALL -- Applicatiebeheer=21
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (287, -- verzorgen spec. appl.
299 -- deactiveren spec. appl.
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 21
UNION ALL -- Managementassistentes=121
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (289, -- bestellen visitekaartjes
298 -- aankondigen vertrek
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 121
UNION ALL -- AD ontvangst en veiligheid=122
SELECT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##STDM##',
sm.mld_stdmelding_omschrijving),
m.mld_melding_key,
sm.mld_stdmelding_omschrijving,
NULL,
NULL
FROM mld_melding m,
mld_stdmelding sm,
fac_srtnotificatie sn,
fac_gebruikersgroep gg
WHERE m.mld_melding_status IN (2, 3) -- Te behandelen!
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
AND TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) + 1 =
TO_NUMBER (TO_CHAR (SYSDATE, 'HH24'))
AND m.mld_stdmelding_key IN (285, -- verzorgen toegang+pieper
295 -- innemen toegang+pieper
)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sn.fac_srtnotificatie_code = 'CUST02'
AND gg.fac_groep_key = 122;
/* Formatted on 17-5-2010 12:12:30 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_ruimteaanduiding (ruimtekey, ruimteaanduiding)
AS
SELECT pa.alg_onroerendgoed_keys, pa.alg_plaatsaanduiding
FROM alg_v_plaatsaanduiding pa
WHERE pa.alg_onroerendgoed_type = 'R'
UNION ALL
SELECT -1, 'GR-000 (Onbekend)' FROM DUAL
UNION ALL
SELECT -1, 'VH-000 (Onbekend)' FROM DUAL;
/* Formatted on 12-5-2010 15:10:58 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_ruimteoverzicht
(
fclt_f_locatie,
fclt_f_gebouw,
fclt_f_verdieping,
ruimtenr,
fclt_f_ruimtefunctie,
fclt_f_vloerafwerking,
fclt_f_specialisatie,
fclt_f_afdeling,
teken_opp
)
AS
(SELECT a.alg_locatie_code,
a.alg_gebouw_code,
a.alg_verdieping_code,
a.alg_ruimte_nr,
a.ruimtefunctie,
b.vloerafw,
c.specialisatie,
d.afdeling,
a.opp
FROM (SELECT r.alg_ruimte_key,
r.alg_ruimte_nr,
r.alg_ruimte_omschrijving,
v.alg_verdieping_code,
g.alg_gebouw_code,
l.alg_locatie_code,
sr.alg_srtruimte_omschrijving ruimtefunctie,
r.alg_ruimte_bruto_vloeropp opp
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_srtruimte sr
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_srtruimte_key =
sr.alg_srtruimte_key(+)) a
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr vloerafw
FROM alg_onrgoedkenmerk ok, fac_usrdata ud
WHERE ok.alg_kenmerk_key = 1020 -- vloerafwerking
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_waarde =
ud.fac_usrdata_key) b
ON a.alg_ruimte_key = b.alg_onrgoed_key
LEFT JOIN
(SELECT ra.alg_ruimte_key,
a.prs_afdeling_naam1 specialisatie
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_afdeling_boom b,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = b.prs_afdeling_key
AND b.prs_afdeling_key1 = a.prs_afdeling_key) c
ON a.alg_ruimte_key = c.alg_ruimte_key
LEFT JOIN
(SELECT ra.alg_ruimte_key, a.prs_afdeling_naam1 afdeling
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_aanwezigafdeling a
WHERE ra.prs_afdeling_key = a.prs_afdeling_key) d
ON a.alg_ruimte_key = d.alg_ruimte_key);
/* Formatted on 12-5-2010 17:40:43 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_verplichtingen
(
bestel_id,
status,
omschrijving,
besteld_op,
fclt_f_leverancier,
ontvangststatus,
kosten
)
AS
SELECT a.bestel_id,
a.status,
a.mld_opdr_omschrijving,
TO_CHAR (a.besteld_op, 'dd-mm-yyyy'),
a.prs_bedrijf_naam,
DECODE (b.fac_usrdata_key,
41, b.ontvangststatus || CHR (13) || CHR (10),
42, b.ontvangststatus || CHR (13) || CHR (10),
43, b.ontvangststatus || CHR (13) || CHR (10),
'')
|| COALESCE (c.commentaar, ''),
a.kosten
FROM (SELECT o.mld_opdr_key,
o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
bestel_id,
o.mld_statusopdr_key,
s.mld_statusopdr_omschrijving status,
o.mld_opdr_omschrijving,
o.mld_opdr_datumbegin besteld_op,
o.mld_opdr_verzonden,
u.prs_bedrijf_naam,
o.mld_opdr_kosten kosten
FROM mld_opdr o, mld_statusopdr s, prs_bedrijf u
WHERE o.mld_typeopdr_key = 182
AND o.mld_statusopdr_key <> 6
AND o.mld_statusopdr_key = s.mld_statusopdr_key
AND o.mld_uitvoerende_keys = u.prs_bedrijf_key) a
LEFT JOIN
(SELECT ko.mld_opdr_key,
ud.fac_usrdata_key,
ud.fac_usrdata_omschr ontvangststatus
FROM mld_v_aanwezigkenmerkopdr ko, fac_usrdata ud
WHERE ko.mld_kenmerk_key = 1
AND fac.safe_to_number (
ko.mld_kenmerkopdr_waarde
) = ud.fac_usrdata_key) b
ON a.mld_opdr_key = b.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde commentaar
FROM mld_v_aanwezigkenmerkopdr ko
WHERE ko.mld_kenmerk_key = 2) c
ON a.mld_opdr_key = c.mld_opdr_key;
/* Formatted on 1-6-2010 12:12:12 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FUNCTION hpji_res_deel_maandbez (p_reskey IN NUMBER,
yyyymm IN VARCHAR2)
RETURN NUMBER
IS
v_bez NUMBER;
v_van_date DATE;
v_van_uur NUMBER;
v_tot_date DATE;
v_tot_uur NUMBER;
v_loop_date DATE;
v_count NUMBER;
BEGIN
v_bez := 0;
SELECT TRUNC (res_rsv_deel_van),
DECODE (
SIGN (
( (res_rsv_deel_van - TRUNC (res_rsv_deel_van)) * 24) - 8
),
-1,
8,
DECODE (
SIGN( ( (res_rsv_deel_van - TRUNC (res_rsv_deel_van)) * 24)
- 18),
-1,
( (res_rsv_deel_van - TRUNC (res_rsv_deel_van)) * 24),
18
)
),
TRUNC (res_rsv_deel_tot),
DECODE (
SIGN (
( (res_rsv_deel_tot - TRUNC (res_rsv_deel_tot)) * 24) - 8
),
-1,
8,
DECODE (
SIGN( ( (res_rsv_deel_tot - TRUNC (res_rsv_deel_tot)) * 24)
- 18),
-1,
( (res_rsv_deel_tot - TRUNC (res_rsv_deel_tot)) * 24),
18
)
)
INTO v_van_date,
v_van_uur,
v_tot_date,
v_tot_uur
FROM res_rsv_deel
WHERE res_rsv_deel_key = p_reskey;
IF (TO_CHAR (v_van_date, 'yyyy-mm') = yyyymm)
THEN
v_loop_date := v_van_date;
ELSE
v_loop_date := TO_DATE (yyyymm || '01', 'yyyy-mmdd');
END IF;
WHILE (v_loop_date <= v_tot_date
AND TO_CHAR (v_loop_date, 'yyyy-mm') = yyyymm)
LOOP
SELECT COUNT ( * )
INTO v_count
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = v_loop_date;
IF (v_count = 0 AND TO_CHAR (v_loop_date, 'd') NOT IN ('1', '7'))
THEN
CASE
WHEN v_van_date = v_tot_date
THEN
v_bez := v_bez + (v_tot_uur - v_van_uur);
WHEN v_loop_date = v_van_date
THEN
v_bez := v_bez + v_van_uur - 8;
WHEN v_loop_date = v_tot_date
THEN
v_bez := v_bez + v_tot_uur - 8;
ELSE
v_bez := v_bez + 10;
END CASE;
END IF;
v_loop_date := v_loop_date + 1;
END LOOP;
RETURN v_bez;
END;
/
/* Formatted on 1-6-2010 14:24:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_res_deel_maandbez
(
fclt_f_maand,
fclt_f_catalogus,
fclt_f_voorziening,
gebruik,
beschikbaar,
bezetting
)
AS
SELECT a.maand,
a.catalogus,
a.voorziening,
a.gebruik,
b.beschikbaar,
REPLACE (TO_CHAR (a.gebruik / b.beschikbaar * 100, '990D9'),
'.',
',')
|| '%'
FROM ( SELECT hist.maand,
td.ins_discipline_omschrijving catalogus,
ins_d.ins_deel_omschrijving voorziening,
rd.res_deel_key,
SUM(hpji_res_deel_maandbez (rd.res_rsv_deel_key,
hist.maand))
gebruik
FROM res_v_aanwezigrsv_deel rd,
res_deel res_d,
ins_deel ins_d,
ins_tab_discipline td,
(SELECT DISTINCT
TO_CHAR (res_rsv_deel_van, 'yyyy-mm')
maand
FROM res_rsv_deel
WHERE TO_CHAR (res_rsv_deel_van, 'yyyymmdd') <
TO_CHAR (SYSDATE, 'yyyymm') || '01')
hist
WHERE rd.res_deel_key = res_d.res_deel_key
AND res_d.res_ins_deel_key = ins_d.ins_deel_key
AND res_d.res_discipline_key = td.ins_discipline_key
AND TO_CHAR (rd.res_rsv_deel_van, 'yyyy-mm') <=
hist.maand
AND TO_CHAR (rd.res_rsv_deel_tot, 'yyyy-mm') >=
hist.maand
GROUP BY hist.maand,
td.ins_discipline_omschrijving,
ins_d.ins_deel_omschrijving,
rd.res_deel_key) a
LEFT JOIN
(SELECT hist.maand,
fac.count_work_days (
TO_DATE (hist.maand || '01', 'yyyy-mmdd'),
LAST_DAY (
TO_DATE (hist.maand || '01', 'yyyy-mmdd')
)
+ 1
)
* 10
beschikbaar
FROM (SELECT DISTINCT
TO_CHAR (res_rsv_deel_van, 'yyyy-mm')
maand
FROM res_rsv_deel
WHERE TO_CHAR (res_rsv_deel_van, 'yyyymmdd') <
TO_CHAR (SYSDATE, 'yyyymm') || '01')
hist) b
ON a.maand = b.maand;
/* Formatted on 3-2-2011 12:12:12 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_it_inventaris_jaar
(
hide_f_regel,
fclt_f_onderdeel,
fclt_f_rubriek,
fclt_f_aanschafjaar,
aantal
)
AS
SELECT grid.onderdeel || '-' || grid.rubriek regel,
grid.onderdeel,
grid.rubriek,
grid.jaar,
COALESCE (x.aantal, 0)
FROM (SELECT a.prs_afdeling_key onderdeel_key,
sd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
a.prs_afdeling_omschrijving onderdeel,
sd.ins_srtdeel_omschrijving rubriek
FROM (SELECT prs_afdeling_key,
prs_afdeling_omschrijving
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_parentkey IS NULL
UNION ALL
SELECT -1 prs_afdeling_key,
'Onbekend' prs_afdeling_omschrijving
FROM DUAL) a,
ins_v_aanwezigsrtdeel sd,
ins_v_aanwezigsrtgroep sg,
(SELECT DISTINCT
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 101) j -- Aanschafdatum
WHERE sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 401) grid -- Hardware
LEFT JOIN
( SELECT asd.prs_afdeling_key1 onderdeel_key,
asd.ins_srtdeel_key rubriek_key,
j.jaar jaar,
COUNT ( * ) aantal
FROM (SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND aog.alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type NOT IN
('A', 'P', 'W')
AND d.ins_alg_ruimte_key =
aog.alg_onroerendgoed_keys
AND (aog.alg_ruimte_key IS NULL
OR NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
aog.alg_ruimte_key))
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key =
ab.prs_afdeling_key
UNION ALL
SELECT ab.prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_perslid p,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key =
p.prs_perslid_key
AND p.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT DECODE (ra.aantal,
1, ab.prs_afdeling_key1,
-1)
prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key)
prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) ra,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND w.prs_alg_ruimte_key =
ra.alg_ruimte_key
AND ra.prs_afdeling_key =
ab.prs_afdeling_key
UNION ALL
SELECT -1 prs_afdeling_key1,
d.ins_srtdeel_key,
d.ins_deel_key
FROM ins_v_aanwezigdeel d, prs_werkplek w
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key =
w.prs_werkplek_key
AND NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
w.prs_alg_ruimte_key))
asd
LEFT JOIN
(SELECT ins_deel_key,
TO_CHAR (
fac.safe_to_date (
ins_kenmerkdeel_waarde,
'dd-mm-yyyy'
),
'yyyy'
)
jaar
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 101) j -- Aanschafdatum
ON asd.ins_deel_key = j.ins_deel_key
GROUP BY asd.prs_afdeling_key1, asd.ins_srtdeel_key, j.jaar)
x
ON grid.onderdeel_key = x.onderdeel_key
AND grid.rubriek_key = x.rubriek_key
AND grid.jaar = x.jaar;
/* Formatted on 3-2-2011 13:34:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hpji_v_rap_it_inventaris_stuk
(
fclt_f_onderdeel,
fclt_f_rubriek,
obj_id,
fclt_f_merk,
fclt_f_model,
fclt_d_aanschafdatum,
fclt_f_vestiging,
ruimte_nr,
ruimte_oms
)
AS
SELECT a.prs_afdeling_omschrijving,
sd.ins_srtdeel_omschrijving,
asd.ins_deel_omschrijving,
x.merk,
y.model,
TO_CHAR (z.datum, 'dd-mm-yyyy'),
asd.vestiging,
asd.ruimte_nr,
asd.ruimte_oms
FROM (SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
DECODE (rv.aantal, 1, rv.prs_afdeling_key1, -1)
prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
alg_v_allonrgoed_gegevens aog,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key1) prs_afdeling_key1,
COUNT ( * ) aantal
FROM prs_ruimteafdeling ra, prs_v_afdeling_boom ab
WHERE ra.prs_afdeling_key = ab.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) rv
WHERE d.ins_alg_ruimte_type NOT IN ('A', 'P', 'W')
AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
AND aog.alg_ruimte_key = rv.alg_ruimte_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
-1 prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d, alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type NOT IN ('A', 'P', 'W')
AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
AND (aog.alg_ruimte_key IS NULL
OR NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
aog.alg_ruimte_key))
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
ab.prs_afdeling_key1,
'Onbekend',
NULL ruimte_nr,
NULL ruimte_oms
FROM ins_v_aanwezigdeel d, prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'A'
AND d.ins_alg_ruimte_key = ab.prs_afdeling_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
ab.prs_afdeling_key1,
'Onbekend',
NULL ruimte_nr,
NULL ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_perslid p,
prs_v_afdeling_boom ab
WHERE d.ins_alg_ruimte_type = 'P'
AND d.ins_alg_ruimte_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
DECODE (rv.aantal, 1, rv.prs_afdeling_key1, -1)
prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
( SELECT alg_ruimte_key,
MAX (prs_afdeling_key1) prs_afdeling_key1,
COUNT ( * ) aantal
FROM prs_ruimteafdeling ra, prs_v_afdeling_boom ab
WHERE ra.prs_afdeling_key = ab.prs_afdeling_key
GROUP BY ra.alg_ruimte_key) rv,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = rv.alg_ruimte_key
AND rv.alg_ruimte_key = aog.alg_ruimte_key
UNION ALL
SELECT d.ins_srtdeel_key,
d.ins_deel_key,
d.ins_deel_omschrijving,
-1 prs_afdeling_key1,
aog.alg_gebouw_code || ' - ' || aog.alg_gebouw_naam
vestiging,
aog.alg_ruimte_nr ruimte_nr,
aog.alg_ruimte_omschrijving ruimte_oms
FROM ins_v_aanwezigdeel d,
prs_werkplek w,
alg_v_allonrgoed_gegevens aog
WHERE d.ins_alg_ruimte_type = 'W'
AND d.ins_alg_ruimte_key = w.prs_werkplek_key
AND NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key =
w.prs_alg_ruimte_key)
AND w.prs_alg_ruimte_key = aog.alg_ruimte_key) asd,
ins_srtdeel sd,
ins_srtgroep sg,
(SELECT prs_afdeling_key, prs_afdeling_omschrijving
FROM prs_v_aanwezigafdeling
WHERE prs_afdeling_parentkey IS NULL
UNION ALL
SELECT -1 prs_afdeling_key,
'Onbekend' prs_afdeling_omschrijving
FROM DUAL) a,
(SELECT ins_deel_key, ins_kenmerkdeel_waarde merk
FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 21) x, -- Merk
(SELECT ins_deel_key, ins_kenmerkdeel_waarde model
FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 22) y, -- Model
(SELECT ins_deel_key,
fac.safe_to_date (ins_kenmerkdeel_waarde, 'dd-mm-yyyy')
datum
FROM ins_v_aanwezigkenmerkdeel
WHERE ins_kenmerk_key = 101) z -- Aanschafdatum
WHERE asd.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key = 401 -- Hardware
AND asd.prs_afdeling_key1 = a.prs_afdeling_key
AND asd.ins_deel_key = x.ins_deel_key(+)
AND asd.ins_deel_key = y.ins_deel_key(+)
AND asd.ins_deel_key = z.ins_deel_key(+);
-- HPJI#28971 Geleverde bestellingen bloemen automatisch afmelden
CREATE OR REPLACE PROCEDURE hpji_export_bes_afmeld (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
-- De bestelopdrachten die ik als compleet geleverd veronderstel,
-- die zouden in principe meer werkdagen geleden geleverd zijn dan
-- de 'notidagen' van de catalogus aangeeft.
-- bes_discipline 201 Bloemen Groningen
-- bes_discipline 202 Bloemen Veenhuizen
CURSOR cbopi
IS
SELECT boi.bes_bestelopdr_item_key, bo.bes_bestelopdr_key, b.bes_bestelling_key
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_disc_params bdp
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
AND sg.ins_discipline_key IN (201, 202)
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
AND ( b.bes_bestelling_leverdatum IS NULL
OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum,
bdp.bes_disc_params_noti_dagen,
'DAGEN')
< SYSDATE );
-- Alle bestelaanvragen die (nu) geheel geleverd zijn sluiten we af.
CURSOR cbesi
IS
SELECT bi.bes_bestelling_item_key, b.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key IN (201, 202);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
FOR r IN cbopi
LOOP
-- Zeg dat alles geleverd is wat besteld is.
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
WHERE bes_bestelopdr_item_key = r.bes_bestelopdr_item_key;
bes.updatebestelopdrstatus (r.bes_bestelopdr_key, NULL);
END LOOP;
FOR r IN cbesi
LOOP
-- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
WHERE bes_bestelling_item_key = r.bes_bestelling_item_key;
bes.updatebestellingstatus (r.bes_bestelling_key, NULL);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
ROLLBACK;
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Proces afmelden bestellingen afgebroken!',
v_errormsg);
COMMIT;
END;
/
BEGIN fac.registercustversion('HPJI', 10); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
commit;
spool off