Files
Customer/HOUT/hout.sql
Jos Groot Lipman 25fe4a03ed Allerlei renames die nog nooit gecommit waren.
svn path=/Customer/trunk/; revision=21978
2014-06-24 20:00:06 +00:00

3810 lines
161 KiB
MySQL
Raw Blame History

-- Script containing customer specific configuration sql statements for Hout
-- (c) 2007 Facilitor Software Nederland/Dijkoraad IT bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
set echo on
spool xhout.lst
CREATE OR REPLACE VIEW hout_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 = 161);
CREATE OR REPLACE PROCEDURE hout_import_prs (
p_import_key IN NUMBER
) IS
c_fielddelimitor VARCHAR2(1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR (1000);
v_errorhint VARCHAR (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
v_ongeldig NUMBER(1);
v_mode NUMBER(1);
v_aanduiding VARCHAR (200);
v_all_null BOOLEAN;
v_first_time BOOLEAN;
v_count_error NUMBER(10);
v_count_tot NUMBER(10);
v_count_import NUMBER(10);
-- De importvelden:
v_alg_locatie_code VARCHAR2(256); -- 01
v_alg_gebouw_code VARCHAR2(256);
v_alg_verdieping_volgnr VARCHAR2(256);
v_alg_ruimte_nr VARCHAR2(256);
v_prs_afdeling_naam VARCHAR2(256); -- 05
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_titel VARCHAR2(256); -- 10
v_prs_perslid_telefoonnr VARCHAR2(256);
v_prs_perslid_mobiel VARCHAR2(256);
v_prs_perslid_email VARCHAR2(256);
v_prs_srtperslid_omschrijving VARCHAR2(256);
v_prs_perslid_nr VARCHAR2(256); -- 15
v_prs_perslid_oslogin VARCHAR2(256);
-- Overig
v_alg_verdieping_volgnr_num NUMBER(3);
v_prs_werkplek_volgnr_num NUMBER(3);
v_prs_werkplek_omschrijving VARCHAR2(256);
v_prs_werkplek_volgnr VARCHAR2(256);
-- PRS_BEDRIJF
CURSOR c1(p_import_key IN NUMBER)
IS
SELECT *
FROM fac_imp_file
WHERE 1=1
AND fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
rec1 c1%ROWTYPE;
-- Tot slot Procedures:
PROCEDURE local_imp_getfield (
p_parseline IN OUT VARCHAR2,
p_fielddelimitor IN VARCHAR2,
p_field OUT VARCHAR2
)
AS
v_firstdelim NUMBER;
BEGIN
v_firstdelim := INSTR (p_parseline, p_fielddelimitor, 1);
IF v_firstdelim = 0
THEN
p_field := SUBSTR(trim(p_parseline), 2, length(p_parseline)-2);
p_parseline := '';
RETURN;
END IF;
p_field := SUBSTR(TRIM(p_parseline), 2, v_firstdelim - 3); -- Waarom 3? Om de quotes eraf te halen
p_parseline := SUBSTR2 (p_parseline, v_firstdelim + 1);
RETURN;
END;
BEGIN
DELETE FROM hout_imp_prs;
COMMIT;
v_count_error := 0;
v_count_tot := 0;
v_count_import := 0;
v_aanduiding := '';
OPEN c1(p_import_key);
IF (c1%ISOPEN)
THEN
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
FETCH c1 INTO rec1;
EXIT WHEN c1%NOTFOUND;
v_newline := rec1. fac_imp_file_line;
v_count_tot := v_count_tot + 1;
IF (v_count_tot = 1) THEN
-- Sla header-regel over
FETCH c1 INTO rec1;
EXIT WHEN c1%NOTFOUND;
v_newline := rec1. fac_imp_file_line;
END IF;
v_errormsg := '';
v_errorhint := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
IF (1=0)
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||'Ongeldig importbestand',
'Toelichting: ... '
);
ELSE
-- Lees alle veldwaarden
-- 01
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_alg_locatie_code
);
-- 02
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_alg_gebouw_code
);
-- 03
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_alg_verdieping_volgnr
);
-- 04
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_alg_ruimte_nr
);
-- 05
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_afdeling_naam
);
-- 06
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_naam
);
-- 07
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_tussenvoegsel
);
-- 08
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_voorletters
);
-- 09
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_voornaam
);
-- 10
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_titel
);
-- 11
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_telefoonnr
);
-- 12
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_mobiel
);
-- 13
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_email
);
-- 14
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_srtperslid_omschrijving
);
-- 15
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_nr
);
-- 16
local_imp_getfield (v_newline,
C_FIELDDELIMITOR,
v_prs_perslid_oslogin
);
--
v_aanduiding := v_prs_perslid_naam||'|'||v_prs_perslid_voornaam||' - ';
-- Controleer alle veldwaarde
v_errorhint := 'Ongeldige locatie code';
v_alg_locatie_code := trim(v_alg_locatie_code);
IF LENGTH (v_alg_locatie_code) > 5
THEN
v_alg_locatie_code:= SUBSTR(v_alg_locatie_code,1,5);
fac.imp_writelog(p_import_key
,'W'
,v_aanduiding||'Locatie-aanduiding is te lang'
,'Aanduiding wordt afgebroken tot [' || v_alg_locatie_code || ']'
);
END IF;
--
v_errorhint := 'Ongeldige gebouw code';
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||'Gebouw-aanduiding is te lang'
,'Aanduiding wordt afgebroken tot [' || v_alg_gebouw_code || ']'
);
END IF;
--
v_errorhint := 'Ongeldig verdieping volgnummer ['||v_alg_verdieping_volgnr||']';
v_alg_verdieping_volgnr := trim(v_alg_verdieping_volgnr);
IF (v_alg_verdieping_volgnr IS NULL) THEN
v_alg_verdieping_volgnr_num := TO_NUMBER(v_alg_verdieping_volgnr);
ELSE
BEGIN
v_alg_verdieping_volgnr_num:= TO_NUMBER(v_alg_verdieping_volgnr);
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
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
);
END;
END IF;
--
v_errorhint := 'Ongeldige ruimte nr';
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||'Ruimtenr-aanduiding is te lang'
,'Aanduiding wordt afgebroken tot [' || v_alg_ruimte_nr || ']'
);
END IF;
--
v_errorhint := 'Ongeldig werkplek volgnummer';
v_prs_werkplek_volgnr := trim(v_prs_werkplek_volgnr);
IF (v_prs_werkplek_volgnr IS NULL) THEN
v_prs_werkplek_volgnr_num := TO_NUMBER(v_prs_werkplek_volgnr);
ELSE
BEGIN
v_alg_verdieping_volgnr_num:= TO_NUMBER(v_alg_verdieping_volgnr);
EXCEPTION
WHEN OTHERS
THEN
v_ongeldig := 1;
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
);
END;
END IF;
--
v_errorhint := 'Ongeldige werkplek omschrijving';
v_prs_werkplek_omschrijving := trim(v_prs_werkplek_omschrijving);
IF LENGTH (v_prs_werkplek_omschrijving) > 30
THEN
v_prs_werkplek_omschrijving:= SUBSTR(v_prs_werkplek_omschrijving,1,30);
fac.imp_writelog(p_import_key
,'W'
,v_aanduiding||'Werkplek-aanduiding is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_werkplek_omschrijving || ']'
);
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 is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_afdeling_naam || ']'
);
ELSE
IF (v_prs_afdeling_naam IS NULL) THEN
v_ongeldig := 1;
fac.imp_writelog(p_import_key
,'E'
,v_aanduiding||'Afdelingscode onbekend'
,'Afdelingscode moet worden opgegeven'
);
END IF;
END IF;
--
v_errorhint := 'Ongeldige naam persoon';
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 persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_naam || ']'
);
ELSE
IF (v_prs_perslid_naam IS NULL) THEN
v_ongeldig := 1;
fac.imp_writelog(p_import_key
,'E'
,v_aanduiding||'Naam persoon onbekend'
,'Naam persoon moet worden opgegeven'
);
END IF;
END IF;
--
v_errorhint := 'Ongeldige tussenvoegsel persoon';
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 persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_tussenvoegsel || ']'
);
END IF;
--
v_errorhint := 'Ongeldige voorletters persoon';
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 persoon zijn te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_voorletters || ']'
);
END IF;
--
v_errorhint := 'Voornaam persoon';
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 persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_voornaam || ']'
);
ELSE
IF (v_prs_perslid_voornaam IS NULL) THEN
v_ongeldig := 1;
fac.imp_writelog(p_import_key
,'E'
,v_aanduiding||'Voornaam persoon onbekend'
,'Voornaam persoon moet worden opgegeven'
);
END IF;
END IF;
--
v_errorhint := 'Ongeldige titel persoon';
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 persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_titel || ']'
);
END IF;
--
v_errorhint := 'Ongeldige titel persoon';
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 persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_titel || ']'
);
END IF;
--
v_errorhint := 'Ongeldige telefoonnr. persoon';
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||'Telefoonnr. persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']'
);
END IF;
--
v_errorhint := 'Ongeldige mobielnr. persoon';
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||'Mobielnr. persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_mobiel || ']'
);
END IF;
--
v_errorhint := 'Ongeldige email persoon';
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||'Email persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_email || ']'
);
END IF;
--
v_errorhint := 'Ongeldige functie persoon';
v_prs_srtperslid_omschrijving := trim(v_prs_srtperslid_omschrijving);
IF LENGTH (v_prs_srtperslid_omschrijving) > 30
THEN
v_prs_srtperslid_omschrijving:= SUBSTR(v_prs_srtperslid_omschrijving,1,30);
fac.imp_writelog(p_import_key
,'W'
,v_aanduiding||'Functie-aanduiding persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_srtperslid_omschrijving || ']'
);
ELSE
IF (v_prs_srtperslid_omschrijving IS NULL) THEN
v_ongeldig := 1;
fac.imp_writelog(p_import_key
,'E'
,v_aanduiding||'Functie persoon onbekend'
,'Functie persoon moet worden opgegeven'
);
END IF;
END IF;
--
v_errorhint := 'Ongeldige persoonnr.';
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||'Persoonnr. persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_nr || ']'
);
END IF;
--
v_errorhint := 'Ongeldige loginnaam';
v_prs_perslid_oslogin := trim(v_prs_perslid_oslogin);
IF LENGTH (v_prs_perslid_oslogin) > 30
THEN
v_prs_perslid_oslogin := SUBSTR(v_prs_perslid_oslogin,1,30);
fac.imp_writelog(p_import_key
,'W'
,v_aanduiding||'Loginnaam persoon is te lang'
,'Aanduiding wordt afgebroken tot [' || v_prs_perslid_oslogin || ']'
);
END IF;
--
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bij toevoegen te importeren bedrijf/afdeling ['||v_prs_afdeling_naam||']';
INSERT INTO HOUT_IMP_PRS (
alg_locatie_code
,alg_gebouw_code
,alg_verdieping_volgnr
,alg_ruimte_nr
,prs_afdeling_naam
,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_srtperslid_omschrijving
,prs_perslid_nr
,prs_perslid_oslogin
) VALUES (
v_alg_locatie_code
,v_alg_gebouw_code
,v_alg_verdieping_volgnr
,v_alg_ruimte_nr
,v_prs_afdeling_naam
,v_prs_perslid_naam
,v_prs_perslid_tussenvoegsel
,v_prs_perslid_voorletters
,v_prs_perslid_voornaam
,v_prs_perslid_titel
,v_prs_perslid_telefoonnr
,v_prs_perslid_mobiel
,v_prs_perslid_email
,v_prs_srtperslid_omschrijving
,v_prs_perslid_nr
,v_prs_perslid_oslogin
);
commit;
v_count_import := v_count_import + 1;
END IF;
END IF;
END;
END LOOP;
END IF;
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),
''
);
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
);
END hout_import_prs;
/
/* Formatted on 13-9-2012 17:38:08 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE hout_update_prs (p_import_key IN NUMBER)
IS
-- LET OP: moet idem zijn als declaratie bij HOUT_IMPORT_PRS
c_persoon_inactief VARCHAR (30) := 'INACTIEF: ';
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
c_max_delta_percentage NUMBER (10) := 20;
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
c_locatie_code VARCHAR2 (10) := 'RTD';
c_gebouw_code VARCHAR2 (10) := 'WT';
c_verdieping_volgnr NUMBER (10) := 99;
c_ruimte_nr VARCHAR2 (10) := '99.00';
-- Groep waar personen in geplaatst worden (indien nog geen groep)
c_groep_upper VARCHAR2 (30) := '_DEFAULT';
c_profiel_omschrijving VARCHAR (30) := 'DEFAULT';
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot_new NUMBER (10);
v_count_tot_perslid NUMBER (10);
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count NUMBER (10);
--
v_srtperslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_perslid_key NUMBER (10);
v_secretaresse NUMBER (10);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_key NUMBER (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);
CURSOR cdelprs
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_perslid p, (SELECT *
FROM hout_imp_prs
WHERE prs_perslid_nr IS NOT NULL) p2
WHERE 1 = 1
AND p.prs_perslid_nr = p2.prs_perslid_nr(+)
AND p.prs_perslid_nr IS NOT NULL
AND p2.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL;
recdelprs cdelprs%ROWTYPE;
CURSOR csperslid
IS
SELECT MIN (prs_perslid_naam) prs_perslid_naam,
MIN (prs_perslid_voornaam) prs_perslid_voornaam,
MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
FROM hout_imp_prs
WHERE 1 = 1
GROUP BY UPPER (prs_srtperslid_omschrijving);
recsperslid csperslid%ROWTYPE;
CURSOR cperslid
IS
SELECT *
FROM hout_imp_prs
WHERE 1 = 1;
recperslid cperslid%ROWTYPE;
-- Let op! Personen die niet meer in dienst zijn -> niet in hout_imp_prs!
-- Alle personen met nummer (ie. de import-doelgroep) zonder werkplek
-- krijgen "fictieve" werkplek in locatie/gebouw volgens EMIS of anders
-- Rotterdam/Weena!
-- Dubbele nummers? Dan krijgt iemand mogelijk de verkeerde plaats!
CURSOR cwp
IS
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code
FROM hout_imp_prs ip, prs_v_aanwezigperslid p
WHERE UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr)
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = p.prs_perslid_key);
-- Alle actieve personen met nummer (ie. de import-doelgroep) en "fictieve"
-- werkplek (ie. ruimtenummer 99.00) worden gelogd.
CURSOR cnowp
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
AND EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw,
prs_werkplek w,
alg_ruimte r
WHERE pw.prs_perslid_key = p.prs_perslid_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_ruimte_upper_nr = c_ruimte_nr);
-- Alle personen met nummer (ie. de import-doelgroep) niet in een groep
-- komen in _DEFAULT.
CURSOR cnogroup
IS
SELECT p.prs_perslid_key,
p.prs_perslid_nr,
p.prs_perslid_naam,
p.prs_perslid_voornaam
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_nr IS NOT NULL
AND NOT EXISTS
(SELECT 1
FROM fac_gebruikersgroep g
WHERE g.prs_perslid_key = p.prs_perslid_key);
BEGIN
SELECT COUNT ( * )
INTO v_count
FROM imp_log
WHERE fac_import_key = p_import_key;
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_tot_perslid
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL;
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_tot_new
FROM prs_perslid p, fac_imp_perslid ip
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_nr = ip.prs_perslid_nr(+);
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;
IF ( (v_count > 0)
OR (TRUNC ( (v_count_tot_new / v_count_tot_perslid) * 100) >=
(100 - c_max_delta_percentage))
OR (TRUNC ( (v_count_tot_new / v_count_tot_perslid) * 100) <=
(100 + c_max_delta_percentage)))
THEN
-- Geldig importbestand wat betreft aantal inserts
OPEN cdelprs;
IF cdelprs%ISOPEN
THEN
LOOP
BEGIN
FETCH cdelprs INTO recdelprs;
EXIT WHEN cdelprs%NOTFOUND;
v_errorhint := 'Fout bij bepalen verplichtingen';
-- Heeft de persoon actuele/toekomstige verplichtigen?
SELECT COUNT ( * )
INTO v_count
FROM prs_v_verplichting_keys r
WHERE r.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 personeelsnummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is verwijderd.',
'Persoon is verwijderd.'
);
COMMIT;
ELSE
-- Staat de persoon al op 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,
prs_perslid_ingids = NULL
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
'Persoon met personeelsnummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF gemaakt.',
'Persoon is (voorlopig) 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,
prs_perslid_ingids = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND (prs_perslid_oslogin IS NOT NULL
OR prs_perslid_ingids IS NOT NULL);
fac.imp_writelog (
p_import_key,
'I',
'Persoon met personeelsnummer ['
|| recdelprs.prs_perslid_nr
|| '] en naam ['
|| recdelprs.prs_perslid_naam
|| ', '
|| recdelprs.prs_perslid_voornaam
|| '] is INACTIEF',
'Persoon is INACTIEF'
);
END IF;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| oracle_err_mes
|| '>)';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
COMMIT;
CLOSE cdelprs;
END IF;
-- Dezelfde persoon met hetzelfde personeelsnummer kan vaker voorkomen (1x actief + 1x inactief).
-- prs_perslid_nr hoeft niet uniek te zijn, prs_perslid_oslogin wel; vandaar onderstaande update.
UPDATE prs_perslid
SET prs_perslid_oslogin = NULL, prs_perslid_ingids = NULL
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
AND (prs_perslid_oslogin IS NOT NULL
OR prs_perslid_ingids IS NOT NULL);
COMMIT;
OPEN csperslid;
v_count_tot := 0;
v_count_error := 0;
IF csperslid%ISOPEN
THEN
LOOP
BEGIN
v_aanduiding := '';
v_errormsg := '';
v_errorhint := '';
FETCH csperslid INTO recsperslid;
EXIT WHEN csperslid%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recsperslid.prs_perslid_naam
|| '|'
|| recsperslid.prs_perslid_voornaam
|| '|'
|| recsperslid.prs_srtperslid_omschrijving
|| ' - ';
v_errorhint := 'Fout bij bepalen functie';
SELECT COUNT ( * )
INTO v_count
FROM prs_srtperslid
WHERE UPPER (prs_srtperslid_omschrijving) =
UPPER (recsperslid.prs_srtperslid_omschrijving)
AND prs_srtperslid_verwijder IS NULL;
IF (v_count = 0)
THEN
v_errorhint := 'Fout bij toevoegen functie';
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
VALUES (recsperslid.prs_srtperslid_omschrijving);
COMMIT;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| 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',
'Personeelsfunctie: verwerkte regels zonder foutmelding: '
|| TO_CHAR (v_count_tot - v_count_error),
''
);
fac.imp_writelog (
p_import_key,
'S',
'Personeelsfunctie: verwerkte regels met foutmelding: '
|| TO_CHAR (v_count_error),
''
);
COMMIT;
CLOSE csperslid;
END IF;
OPEN cperslid;
v_count_tot := 0;
v_count_error := 0;
IF cperslid%ISOPEN
THEN
LOOP
BEGIN
v_aanduiding := '';
v_errormsg := '';
v_errorhint := '';
FETCH cperslid INTO recperslid;
EXIT WHEN cperslid%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recperslid.prs_perslid_nr
|| '|'
|| recperslid.prs_perslid_naam
|| '|'
|| recperslid.prs_perslid_voornaam
|| ' - ';
v_errormsg := '';
v_errorhint := 'Fout bij bepalen functie';
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_verwijder IS NULL
AND UPPER (prs_srtperslid_omschrijving) =
UPPER (recperslid.prs_srtperslid_omschrijving);
v_errorhint :=
'Afdeling niet gevonden ['
|| recperslid.prs_afdeling_naam
|| ']';
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE UPPER (prs_afdeling_naam) =
UPPER (recperslid.prs_afdeling_naam)
AND prs_afdeling_verwijder IS NULL;
v_errorhint := 'Kijken of de persoon al bestaat';
SELECT COUNT ( * ), MAX (prs_perslid_key)
INTO v_count, v_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND UPPER (prs_perslid_nr) =
UPPER (recperslid.prs_perslid_nr);
IF (v_count > 1)
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || ' kan persoon niet 1-duidig bepalen',
v_errorhint
);
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_mobiel,
prs_perslid_email,
prs_perslid_nr,
prs_perslid_titel,
prs_perslid_oslogin,
fac_profiel_key)
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_mobiel,
recperslid.prs_perslid_email,
recperslid.prs_perslid_nr,
recperslid.prs_perslid_titel,
recperslid.prs_perslid_oslogin,
v_profiel_key)
RETURNING prs_perslid_key INTO v_perslid_key;
ELSE
-- HOUT#24024: Secretaresse en huidige afdeling anders dan afdeling
-- volgens import, dan mandaat schonen (zo nodig wordt
-- mandaat voor nieuwe afdeling hierna weer toegekend).
v_errorhint := 'Fout bij bepalen WAS-secretaresse';
SELECT COUNT ( * )
INTO v_secretaresse
FROM prs_perslid p
WHERE p.prs_perslid_key = v_perslid_key
AND p.prs_afdeling_key != v_afdeling_key
AND EXISTS
(SELECT 1
FROM prs_afdeling a,
prs_kostenplaats k,
fac_usrdata ud
WHERE a.prs_afdeling_key =
p.prs_afdeling_key
AND a.prs_kostenplaats_key =
k.prs_kostenplaats_key
AND k.prs_kostenplaats_verwijder IS NULL
AND k.prs_kostenplaats_upper =
ud.fac_usrdata_upper
AND ud.fac_usrtab_key = 601 -- Kostenpl.mandaat
AND ud.fac_usrdata_verwijder IS NULL);
IF (v_secretaresse > 0)
THEN
v_errorhint := 'Fout bij schonen mandaat';
DELETE FROM prs_perslidkostenplaats
WHERE prs_perslid_key = v_perslid_key;
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding || ' mandaat geschoond',
'WAS secretaresse'
);
END IF;
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 =
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_titel = recperslid.prs_perslid_titel,
prs_perslid_oslogin =
recperslid.prs_perslid_oslogin,
fac_profiel_key =
COALESCE (fac_profiel_key, v_profiel_key)
WHERE prs_perslid_key = v_perslid_key;
END IF;
COMMIT;
-- HOUT#24024: Indien nog nergens voor gemandateerd, dan secretaresses
-- mandateren voor alles!
v_errorhint := 'Fout bij bepalen WORDT-secretaresse';
SELECT COUNT ( * )
INTO v_secretaresse
FROM prs_afdeling a, prs_kostenplaats k, fac_usrdata ud
WHERE a.prs_afdeling_key = v_afdeling_key
AND a.prs_kostenplaats_key =
k.prs_kostenplaats_key
AND k.prs_kostenplaats_verwijder IS NULL
AND k.prs_kostenplaats_upper =
ud.fac_usrdata_upper
AND ud.fac_usrtab_key = 601 -- Kostenpl.mandaat
AND ud.fac_usrdata_verwijder IS NULL
AND NOT EXISTS
(SELECT 1
FROM prs_perslidkostenplaats pk
WHERE pk.prs_perslid_key = v_perslid_key);
IF (v_secretaresse > 0)
THEN
v_errorhint := 'Fout bij toekennen mandaat';
INSERT INTO prs_perslidkostenplaats pk (
prs_perslid_key,
prs_kostenplaats_key,
prs_perslidkostenplaats_boeken,
prs_perslidkostenplaats_inzage
)
VALUES (v_perslid_key,
NULL,
1,
1);
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || ' mandaat toegekend',
'WORDT secretaresse');
COMMIT;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| 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),
''
);
CLOSE cperslid;
END IF;
v_count_tot := 0;
v_count_error := 0;
FOR recwp IN cwp
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recwp.prs_perslid_nr
|| '|'
|| recwp.prs_perslid_naam
|| '|'
|| recwp.prs_perslid_voornaam
|| '|'
|| recwp.alg_locatie_code
|| '|'
|| recwp.alg_gebouw_code
|| ' - ';
v_errorhint := 'Fout bij bepalen persoon';
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_v_aanwezigperslid
WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
v_locatie_key := NULL;
v_gebouw_key := NULL;
v_verdieping_key := NULL;
v_ruimte_key := NULL;
v_errorhint := 'Fout bij bepalen EMIS-locatie';
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanweziglocatie
WHERE alg_locatie_code = recwp.alg_locatie_code;
IF v_count = 1
THEN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_v_aanweziglocatie
WHERE alg_locatie_code = recwp.alg_locatie_code;
ELSE -- Locatie bestaat niet (of >1 keer)!
fac.imp_writelog (p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kan EMIS-locatie niet (1-duidig) bepalen!');
COMMIT;
END IF;
v_errorhint := 'Fout bij bepalen EMIS-gebouw';
IF v_locatie_key IS NOT NULL
THEN
SELECT COUNT ( * )
INTO v_count
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_upper = UPPER (recwp.alg_gebouw_code);
IF v_count = 1
THEN
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = v_locatie_key
AND alg_gebouw_upper =
UPPER (recwp.alg_gebouw_code);
ELSE -- Gebouw bestaat niet (of >1 keer)!
fac.imp_writelog (
p_import_key,
'I',
v_aanduiding || v_errorhint,
'Kan EMIS-gebouw niet (1-duidig) bepalen!'
);
COMMIT;
END IF;
END IF;
v_errorhint :=
'Fout bij bepalen default locatie/gebouw ('
|| c_locatie_code
|| '-'
|| c_gebouw_code
|| ')';
IF v_gebouw_key IS NULL
THEN
SELECT alg_gebouw_key
INTO v_gebouw_key
FROM alg_v_aanweziglocatie l, alg_v_aanweziggebouw g
WHERE l.alg_locatie_code = c_locatie_code
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_upper = UPPER (c_gebouw_code);
END IF;
v_errorhint :=
'Fout bij bepalen "fictieve" verdieping ('
|| TO_CHAR (c_verdieping_volgnr)
|| ')';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_v_aanwezigverdieping v
WHERE v.alg_gebouw_key = v_gebouw_key
AND v.alg_verdieping_volgnr = c_verdieping_volgnr;
v_errorhint :=
'Fout bij bepalen "fictieve" ruimte (' || c_ruimte_nr || ')';
SELECT alg_ruimte_key
INTO v_ruimte_key
FROM alg_v_aanwezigruimte r
WHERE r.alg_verdieping_key = v_verdieping_key
AND r.alg_ruimte_upper_nr = c_ruimte_nr;
-- Persoon krijgt wp op de hierboven bepaalde ruimte.
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 := c_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;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| 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 personeelsnummer ['
|| recnowp.prs_perslid_nr
|| '] en naam ['
|| recnowp.prs_perslid_naam
|| ', '
|| recnowp.prs_perslid_voornaam
|| '] heeft een "fictieve" werkplek',
'Fictieve werkplek'
);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| oracle_err_mes
|| '>)';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
FOR recnogroup IN cnogroup
LOOP
BEGIN
v_aanduiding :=
recnogroup.prs_perslid_nr
|| '|'
|| recnogroup.prs_perslid_naam
|| '|'
|| recnogroup.prs_perslid_voornaam
|| ' - ';
v_errorhint := 'Fout bij bepalen groep [' || c_groep_upper || ']';
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE fac_groep_upper = c_groep_upper;
v_errorhint :=
'Fout bij koppelen persoon aan groep ['
|| c_groep_upper
|| ']';
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES (v_groep_key, recnogroup.prs_perslid_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| oracle_err_num
|| '> ORACLE error message = <'
|| 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
fac.imp_writelog (
p_import_key,
'E',
'Het verschil tussen het aantal actieve personen met personeelsnummer en de te importeren/wijzigen aantallen is te groot, zie specificatie.',
'* Max. aan wijzigingen toegestaan = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%] <br>* '
|| 'Aantal personen importbestand = ['
|| TO_CHAR (v_count_tot_new)
|| '] <br>* '
|| 'Aantal personen Facilitor = ['
|| TO_CHAR (v_count_tot_perslid)
|| ']'
);
COMMIT;
END IF; -- Geldig importbestand wat betreft aantal inserts
COMMIT;
END hout_update_prs;
/
/* Formatted on 2008/04/25 15:20 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW hout_v_rap_res_overzicht (fclt_f_locatie,
hide_f_sort_datum_tijd,
hide_f_sort_ruimte,
hide_f_sort_resnr,
hide_f_sort_categorie,
fclt_f_res_datum,
res_ruimtenummer,
van,
tot,
naam_gastheer,
aant,
voorzieningen,
omschrijving,
naam_aanvrager,
res_num,
opmerkingen,
fclt_3d_locatie_key
)
AS
SELECT l.alg_locatie_code locatie,
TO_CHAR (res_geg.res_reservering_van,
'YYYY-MM-DD HH24:MI'
) sort_datum_tijd,
COALESCE (opstelalg.res_ruimte_nr,
ruimte_geg.alg_ruimte_aanduiding
) sort_ruimte,
rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr sort_resnr,
res_geg.res_type sort_categorie,
TO_CHAR (res_geg.res_reservering_van, 'DD-MM-YYYY') datum,
(CASE
WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL
THEN ''
ELSE COALESCE (opstelalg.res_ruimte_nr,
ruimte_geg.alg_ruimte_aanduiding
)
END
) ruimte,
TO_CHAR (res_geg.res_reservering_van, 'HH24:MI') van,
TO_CHAR (res_geg.res_reservering_tot, 'HH24:MI') tot, gastheer,
(CASE
WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL
THEN ''
ELSE TO_CHAR (rrr.res_rsv_ruimte_bezoekers)
END
) aantal,
(CASE
WHEN res_geg.aantal IS NOT NULL
THEN TO_CHAR (res_geg.aantal)
|| ' * '
|| res_geg.res_voorziening
ELSE res_geg.res_voorziening
END
) voorzieningen,
(CASE
WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL
THEN ''
ELSE res_rsv_ruimte_omschrijving
END
) omschrijving,
aanvrager,
(CASE
WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL
THEN ''
ELSE rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
END
) resnr,
(CASE
WHEN res_geg.res_type <> '1R' AND rrr.alg_ruimte_key IS NULL
THEN ''
ELSE res_rsv_ruimte_opmerking
END
) opmerking,
l.alg_locatie_key
FROM (SELECT '1R' AS res_type, rrr.res_rsv_ruimte_key,
rro.res_ruimte_key, rrr.res_rsv_ruimte_key AS res_item_key,
rrr.res_rsv_ruimte_van AS res_reservering_van,
rrr.res_rsv_ruimte_tot AS res_reservering_tot,
TO_NUMBER (NULL) AS aantal,
ro.res_opstelling_omschrijving AS res_voorziening,
rr.res_discipline_key AS res_ins_discipline_key,
rrr.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key,
rrr.res_rsv_ruimte_prijs AS prijs,
TO_NUMBER (NULL) AS stuks_prijs, 1 AS rsv_ruimte_aantal,
NULL AS artikelnummer, '' AS artikel_groep,
(SELECT prs_perslid_naam
|| DECODE (p.prs_perslid_voorletters,
NULL, '',
', ' || p.prs_perslid_voorletters
)
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
' ' || p.prs_perslid_tussenvoegsel
)
|| DECODE (p.prs_perslid_voornaam,
NULL, '',
' (' || p.prs_perslid_voornaam || ')'
)
FROM prs_perslid p
WHERE p.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
gastheer,
(SELECT prs_perslid_naam
|| DECODE (p.prs_perslid_voorletters,
NULL, '',
', ' || p.prs_perslid_voorletters
)
|| DECODE (p.prs_perslid_tussenvoegsel,
NULL, '',
' ' || p.prs_perslid_tussenvoegsel
)
|| DECODE (p.prs_perslid_voornaam,
NULL, '',
' (' || p.prs_perslid_voornaam || ')'
)
FROM prs_perslid p
WHERE p.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
aanvrager
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_opstelling ro
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_opstelling_key = ro.res_opstelling_key
UNION ALL
SELECT '2V' AS res_type, rrd.res_rsv_ruimte_key,
(SELECT rro.res_ruimte_key
FROM res_ruimte_opstelling rro
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key)
AS res_ruimte_key,
rrd.res_rsv_deel_key AS res_item_key,
rrd.res_rsv_deel_van AS res_reservering_van,
rrd.res_rsv_deel_tot AS res_reservering_tot,
TO_NUMBER (NULL) AS aantal,
ID.ins_deel_omschrijving
|| ' ('
|| COALESCE (rd.res_deel_eenheid, '')
|| ')' AS res_voorziening,
rd.res_discipline_key AS res_ins_discipline_key,
rrd.res_status_bo_key, TO_NUMBER (NULL) AS res_artikel_key,
TO_NUMBER (NULL) AS prijs, rd.res_deel_prijs AS stuks_prijs,
TO_NUMBER (NULL) AS rsv_ruimte_aantal,
NULL AS artikelnummer, '' AS artikel_groep,
'' gastheer,
'' aanvrager
FROM res_v_aanwezigrsv_deel rrd,
res_v_aanwezigrsv_ruimte rrr,
res_deel rd,
ins_deel ID
WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = ID.ins_deel_key
UNION ALL
SELECT '3C' AS res_type, rra.res_rsv_ruimte_key,
(SELECT rro.res_ruimte_key
FROM res_ruimte_opstelling rro
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key)
AS res_ruimte_key,
res_rsv_artikel_key AS res_item_key,
rra.res_rsv_artikel_levering AS res_reservering_van,
res_rsv_ruimte_tot AS res_reservering_tot,
rra.res_rsv_artikel_aantal AS aantal,
LTRIM (ra.res_artikel_omschrijving)
|| ' ('
|| COALESCE (ra.res_artikel_eenheid, '')
|| ')' AS res_voorziening,
ra.res_discipline_key AS res_ins_discipline_key,
rra.res_status_bo_key,
ra.res_artikel_key AS res_artikel_key,
rra.res_rsv_artikel_prijs AS prijs,
ra.res_artikel_prijs
/ rra.res_rsv_artikel_aantal AS stuks_prijs,
TO_NUMBER (NULL) AS rsv_ruimte_aantal,
ra.res_artikel_nr AS artikelnummer,
ra.res_artikel_groep AS artikel_groep,
'' gastheer,
'' aanvrager
FROM res_v_aanwezigrsv_artikel rra,
res_v_aanwezigrsv_ruimte rrr,
res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key) res_geg,
res_rsv_ruimte rrr,
alg_v_ruimte_gegevens ruimte_geg,
(SELECT res_ruimte_opstel_key, res_ruimte_nr,
MIN (alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro,
res_alg_ruimte rar,
res_ruimte rr
WHERE rro.res_ruimte_key = rar.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg,
alg_locatie l
WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
AND ruimte_geg.alg_ruimte_key =
COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)
AND l.alg_locatie_key = ruimte_geg.alg_locatie_key
AND res_geg.res_status_bo_key < 5
/
/* Formatted on 2008/12/05 16:12 (Formatter Plus v4.8.7) */
CREATE OR REPLACE VIEW hout_v_res_bezet_raw (
res_ruimte_naam,
alg_ruimte_nr,
van,
tot,
t0800,
t0830,
t0900,
t0930,
t1000,
t1030,
t1100,
t1130,
t1200,
t1230,
t1300,
t1330,
t1400,
t1430,
t1500,
t1530,
t1600,
t1630,
t1700,
t1730,
aant_deelnemers,
activiteit,
kostenplaats,
max_personen
)
AS
SELECT res.res_ruimte_nr,
res.alg_ruimte_nr,
res.res_rsv_ruimte_van,
res.res_rsv_ruimte_tot,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 8 AND res.tot >= 8.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 8.25 AND res.tot >= 8.5), 0
)
t0800,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 8.5 AND res.tot >= 8.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 8.75 AND res.tot >= 9), 0
)
t0830,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 9 AND res.tot >= 9.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 9.25 AND res.tot >= 9.5), 0
)
t0900,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 9.5 AND res.tot >= 9.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 9.75 AND res.tot >= 10), 0
)
t0930,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 10 AND res.tot >= 10.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 10.25 AND res.tot >= 10.5), 0
)
t1000,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 10.5 AND res.tot >= 10.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 10.75 AND res.tot >= 11), 0
)
t1030,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 11 AND res.tot >= 11.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 11.25 AND res.tot >= 11.5), 0
)
t1100,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 11.5 AND res.tot >= 11.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 11.75 AND res.tot >= 12), 0
)
t1130,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 12 AND res.tot >= 12.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 12.25 AND res.tot >= 12.5), 0
)
t1200,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 12.5 AND res.tot >= 12.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 12.75 AND res.tot >= 13), 0
)
t1230,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 13 AND res.tot >= 13.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 13.25 AND res.tot >= 13.5), 0
)
t1300,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 13.5 AND res.tot >= 13.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 13.75 AND res.tot >= 14), 0
)
t1330,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 14 AND res.tot >= 14.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 14.25 AND res.tot >= 14.5), 0
)
t1400,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 14.5 AND res.tot >= 14.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 14.75 AND res.tot >= 15), 0
)
t1430,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 15 AND res.tot >= 15.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 15.25 AND res.tot >= 15.5), 0
)
t1500,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 15.5 AND res.tot >= 15.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 15.75 AND res.tot >= 16), 0
)
t1530,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 16 AND res.tot >= 16.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 16.25 AND res.tot >= 16.5), 0
)
t1600,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 16.5 AND res.tot >= 16.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 16.75 AND res.tot >= 17), 0
)
t1630,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 17 AND res.tot >= 17.25), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 17.25 AND res.tot >= 17.5), 0
)
t1700,
NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 17.5 AND res.tot >= 17.75), 0
)
+ NVL ( (SELECT 1 / 2
FROM DUAL
WHERE res.van <= 17.75 AND res.tot >= 18), 0
)
t1730,
res_rsv_ruimte_bezoekers,
res_activiteit_omschrijving,
prs_kostenplaats_nr,
res_ruimte_opstel_bezoekers
FROM (SELECT (rrr.res_rsv_ruimte_van - TRUNC (rrr.res_rsv_ruimte_van))
* 24
van,
(rrr.res_rsv_ruimte_tot - TRUNC (rrr.res_rsv_ruimte_tot)) * 24
tot,
rr.res_ruimte_nr,
ar.alg_ruimte_nr,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
rrr.res_rsv_ruimte_bezoekers,
rra.res_activiteit_omschrijving,
kp.prs_kostenplaats_nr,
rro.res_ruimte_opstel_bezoekers
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
alg_ruimte ar,
res_activiteit rra,
prs_kostenplaats kp
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.alg_ruimte_key = ar.alg_ruimte_key
AND rrr.res_activiteit_key = rra.res_activiteit_key
AND rrr.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)) res;
/* Formatted on 2008/10/16 14:38 (Formatter Plus v4.8.7) */
-- RAP-PACKAGE
CREATE OR REPLACE PACKAGE hout_rap
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE res_bezet_raw (
user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor
);
END;
/
/* Formatted on 2008/10/20 11:28 (Formatter Plus v4.8.7) */
-- RAP-PROCEDURES in PACKAGE BODY (1 per rapportage)
CREATE OR REPLACE PACKAGE BODY hout_rap
AS
-- Ruwe bezettingsdata
PROCEDURE res_bezet_raw (
user_key IN NUMBER,
p_datum_van IN VARCHAR2,
-- Let wel: formaat '16-01-2006'
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 r.res_ruimte_naam ruimte_naam, r.alg_ruimte_nr ruimte_nr,
TO_CHAR (r.van, 'dd-mm-yyyy') datum,
TO_CHAR (r.van, 'HH24:MI') van,
TO_CHAR (r.tot, 'HH24:MI') tot, t0800, t0830, t0900, t0930,
t1000, t1030, t1100, t1130, t1200, t1230, t1300, t1330,
t1400, t1430, t1500, t1530, t1600, t1630, t1700, t1730,
aant_deelnemers, activiteit, kostenplaats, max_personen
FROM hout_v_res_bezet_raw r
WHERE r.van BETWEEN v_datum_van AND v_datum_tot
ORDER BY 1, 3, 4, 5;
END;
END;
/
-- HOUT#15589 AutoClose repro-bestellingen noti-dagen na aanmaken.
CREATE OR REPLACE PROCEDURE hout_select_autoclose (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
END;
/
CREATE OR REPLACE FORCE VIEW hout_v_export_autoclose (RESULT, result_order)
AS
SELECT '', 0
FROM DUAL
WHERE 1 = 0;
/
/* Formatted on 23-8-2012 17:02:18 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE hout_export_autoclose (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
UPDATE bes_bestelopdr
SET bes_bestelopdr_status = 4
WHERE bes_bestelopdr_key IN
(SELECT DISTINCT bo.bes_bestelopdr_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 = 3
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 = 1041 -- repro-bestellingen
AND sg.ins_discipline_key =
bdp.bes_ins_discipline_key
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
AND (b.bes_bestelling_datum IS NULL
OR fac.datumtijdplusuitvoertijd (
b.bes_bestelling_datum,
bdp.bes_disc_params_noti_dagen,
'DAGEN'
) < SYSDATE));
FOR rc
IN (SELECT boi.bes_bestelopdr_item_key, bo.bes_bestelopdr_key
FROM bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelling_item bi,
bes_bestelling b,
bes_srtdeel sd,
bes_srtgroep sg,
bes_disc_params bdp
WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bo.bes_bestelopdr_status = 4 -- In bestelling
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = 1041 -- repro-bestellingen
AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
AND bdp.bes_disc_params_noti_dagen IS NOT NULL
AND (b.bes_bestelling_datum IS NULL
OR fac.datumtijdplusuitvoertijd (
b.bes_bestelling_leverdatum,
bdp.bes_disc_params_noti_dagen,
'DAGEN'
) < SYSDATE))
LOOP
UPDATE bes_bestelopdr_item
SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
WHERE bes_bestelopdr_item_key = rc.bes_bestelopdr_item_key;
bes.updatebestelopdrstatus (rc.bes_bestelopdr_key, NULL);
COMMIT;
END LOOP;
FOR rc
IN (SELECT bi.bes_bestelling_item_key, bi.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
bes_bestelopdr_item boi
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
--AND bi.bes_bestelling_item_aantal <>
-- NVL (bi.bes_bestelling_item_aantalontv, 0)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = 1041 -- repro-bestellingen
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal =
boi.bes_bestelopdr_item_aantalontv)
LOOP
UPDATE bes_bestelling_item
SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
WHERE bes_bestelling_item_key = rc.bes_bestelling_item_key;
bes.updatebestellingstatus (rc.bes_bestelling_key, NULL);
COMMIT;
END LOOP;
END;
/
-- HOUT#15762 - Werkplekstatistieken
/* Formatted on 6-8-2009 17:16:30 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_werkplek_geg
(
locatie_key,
locatie_code,
gebouw_key,
gebouw_code,
verdieping_code,
verdieping_oms,
ruimte_nr,
ruimte_functie,
werkplek_volgnr,
gebruiker
)
AS
SELECT a.alg_locatie_key,
a.alg_locatie_code,
a.alg_gebouw_key,
a.alg_gebouw_code,
a.alg_verdieping_code,
a.alg_verdieping_omschrijving,
a.alg_ruimte_nr,
a.alg_srtruimte_omschrijving,
a.prs_werkplek_volgnr,
DECODE (b.aantal,
NULL, NULL,
1, b.gebruiker,
'Meer dan 1 kostenplaats')
FROM (SELECT w.prs_werkplek_key,
l.alg_locatie_key,
l.alg_locatie_code,
g.alg_gebouw_key,
g.alg_gebouw_code,
v.alg_verdieping_code,
v.alg_verdieping_omschrijving,
r.alg_ruimte_nr,
sr.alg_srtruimte_key,
sr.alg_srtruimte_omschrijving,
w.prs_werkplek_volgnr
FROM prs_werkplek w,
alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_srtruimte sr
WHERE w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)) a
LEFT JOIN
( SELECT pw.prs_werkplek_key,
MIN (a.prs_afdeling_omschrijving) gebruiker,
COUNT (DISTINCT a.prs_afdeling_key) aantal
FROM prs_perslidwerkplek pw,
prs_perslid p,
prs_afdeling a
WHERE pw.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
GROUP BY pw.prs_werkplek_key) b
ON a.prs_werkplek_key = b.prs_werkplek_key
WHERE a.alg_srtruimte_key IN (23, 25, 81);
CREATE OR REPLACE VIEW hout_v_rap_wp_func_rui (fclt_f_gebouw_code,
fclt_f_verdieping_code,
fclt_f_ruimte_functie,
ruimte_nr,
aantal_bezet,
aantal_mogelijk
)
AS
SELECT v.gebouw_code, v.verdieping_code, v.ruimte_functie, v.ruimte_nr,
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.verdieping_code, v.ruimte_functie, v.ruimte_nr
UNION ALL
SELECT v.gebouw_code, v.verdieping_code, v.ruimte_functie,
'zzzTotaal functie', SUM (DECODE (v.gebruiker, NULL, 0, 1)),
COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code,
v.verdieping_code,
v.ruimte_functie,
'zzzTotaal functie'
UNION ALL
SELECT v.gebouw_code, v.verdieping_code, 'zzzTotaal etage', 'zzzTotaal etage',
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.verdieping_code, 'zzzTotaal etage', 'zzzTotaal etage'
/
CREATE OR REPLACE VIEW hout_v_rap_wp_func_ver (fclt_f_gebouw_code,
fclt_f_ruimte_functie,
verdieping_code,
aantal_bezet,
aantal_mogelijk
)
AS
SELECT v.gebouw_code, v.ruimte_functie, v.verdieping_code,
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.verdieping_code, v.ruimte_functie
UNION ALL
SELECT v.gebouw_code, v.ruimte_functie, '99999',
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.ruimte_functie, '99999'
UNION ALL
SELECT v.gebouw_code, 'zzzTotaal gebouw', v.verdieping_code,
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, 'zzzTotaal gebouw', v.verdieping_code
UNION ALL
SELECT v.gebouw_code, 'zzzTotaal gebouw', '99999',
SUM (DECODE (v.gebruiker, NULL, 0, 1)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, 'zzzTotaal gebouw', '99999'
/
CREATE OR REPLACE VIEW hout_v_rap_wp_ver_gebr (fclt_f_gebouw_code,
fclt_f_verdieping_code,
fclt_f_kostenplaats,
aantal,
totaal
)
AS
SELECT a.gebouw_code, a.verdieping_code, a.gebruiker, a.aantal, b.totaal
FROM (SELECT v.gebouw_code, v.verdieping_code, v.gebruiker,
COUNT (*) aantal
FROM hout_v_werkplek_geg v
WHERE v.gebruiker IS NOT NULL
GROUP BY v.gebouw_code, v.verdieping_code, v.gebruiker) a
LEFT JOIN
(SELECT v.gebouw_code, v.verdieping_code, COUNT (*) totaal
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.verdieping_code) b
ON a.gebouw_code = b.gebouw_code
AND a.verdieping_code = b.verdieping_code
UNION ALL
SELECT v.gebouw_code, v.verdieping_code, 'zzzVrij',
SUM (DECODE (v.gebruiker, NULL, 1, 0)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, v.verdieping_code, 'zzzVrij'
UNION ALL
SELECT a.gebouw_code, '99999', a.gebruiker, a.aantal, b.totaal
FROM (SELECT v.gebouw_code, v.gebruiker, COUNT (*) aantal
FROM hout_v_werkplek_geg v
WHERE v.gebruiker IS NOT NULL
GROUP BY v.gebouw_code, v.gebruiker) a
LEFT JOIN
(SELECT v.gebouw_code, COUNT (*) totaal
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code) b ON a.gebouw_code = b.gebouw_code
UNION ALL
SELECT v.gebouw_code, '99999', 'zzzVrij',
SUM (DECODE (v.gebruiker, NULL, 1, 0)), COUNT (*)
FROM hout_v_werkplek_geg v
GROUP BY v.gebouw_code, '99999', 'zzzVrij'
/
/* HOUT#15981 - UNCO aanvragen! */
/* Formatted on 7-8-2009 11:20:08 (QP5 v5.115.810.9015) */
CREATE OR REPLACE FUNCTION hout_mld_flexcontent (p_mldkey IN NUMBER)
RETURN VARCHAR2
IS
CURSOR c1
IS
SELECT k.mld_kenmerk_key,
COALESCE (k.mld_kenmerk_volgnummer, 0) volgnummer,
sk.mld_srtkenmerk_kenmerktype,
sk.mld_srtkenmerk_omschrijving,
sk.mld_srtkenmerk_upper,
rsk.fac_kenmerkdomein_objectnaam,
rsk.fac_kenmerkdomein_kolomnaam,
rsk.fac_kenmerkdomein_kolomtxt,
rsk.fac_usrtab_key,
k.mld_kenmerk_default
FROM mld_melding m,
mld_stdmelding std,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein rsk
WHERE m.mld_melding_key = p_mldkey
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND ( (std.mld_ins_discipline_key = k.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'D')
OR (m.mld_stdmelding_key = k.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'))
AND k.mld_kenmerk_verwijder IS NULL
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_kenmerktype <> 'L' -- label!
AND sk.mld_srtkenmerk_kenmerktype <> 'Q' -- blanco!
AND sk.mld_srtkenmerk_verwijder IS NULL
AND sk.fac_kenmerkdomein_key = rsk.fac_kenmerkdomein_key(+)
ORDER BY COALESCE (k.mld_kenmerk_volgnummer, 0);
v_flexcontent VARCHAR2 (4000);
v_kenmerk_waarde VARCHAR2 (1000);
v_ref_kenmerk_waarde VARCHAR2 (1000);
sql_stmt VARCHAR2 (1000);
v_count NUMBER (3);
BEGIN
v_flexcontent := '';
FOR rec IN c1
LOOP
BEGIN
SELECT COUNT (km.mld_kenmerkmelding_key)
INTO v_count
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = p_mldkey
AND km.mld_kenmerk_key = rec.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL;
IF (v_count = 1)
THEN
SELECT km.mld_kenmerkmelding_waarde
INTO v_kenmerk_waarde
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = p_mldkey
AND km.mld_kenmerk_key = rec.mld_kenmerk_key
AND km.mld_kenmerkmelding_verwijder IS NULL;
IF (rec.mld_srtkenmerk_kenmerktype = 'R')
THEN
sql_stmt :=
'SELECT MIN('
|| rec.fac_kenmerkdomein_kolomtxt
|| ')'
|| ' FROM '
|| rec.fac_kenmerkdomein_objectnaam
|| ' WHERE '
|| rec.fac_kenmerkdomein_kolomnaam
|| ' = '
|| v_kenmerk_waarde;
EXECUTE IMMEDIATE sql_stmt INTO v_ref_kenmerk_waarde;
v_flexcontent :=
SUBSTR (
v_flexcontent
|| rec.mld_srtkenmerk_omschrijving
|| ': '
|| v_ref_kenmerk_waarde
|| CHR (13)
|| CHR (10),
1,
4000
);
ELSE
v_flexcontent :=
SUBSTR (
v_flexcontent
|| rec.mld_srtkenmerk_omschrijving
|| ': '
|| v_kenmerk_waarde
|| CHR (13)
|| CHR (10),
1,
4000
);
END IF;
ELSE -- geen kenmerkwaarde, dus optioneel veld
v_flexcontent :=
SUBSTR (
v_flexcontent
|| rec.mld_srtkenmerk_omschrijving
|| ': <leeg>'
|| CHR (13)
|| CHR (10),
1,
4000
);
END IF;
END;
END LOOP;
RETURN v_flexcontent;
END;
/
-- lijst van repromeldingen, met hun bijbehorende bestelling, if any
/* Formatted on 9-6-2010 17:52:05 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_repro_bes_match
(
fclt_f_meld_maand,
fclt_f_vakgroeptype,
melding,
meld_datum,
bestelling,
bestel_datum
)
AS
SELECT TO_CHAR (m.mld_melding_datum, 'yyyy-mm') meldmaand,
sd.ins_srtdiscipline_omschrijving vakgroeptype,
TO_CHAR (m.mld_melding_key) melding,
TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') melddatum,
TO_CHAR (b.bes_bestelling_key) bestelling,
TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy') besteldatum
FROM mld_melding m,
mld_stdmelding std,
bes_bestelling b,
mld_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = b.mld_melding_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (21, 41);
-- telling van repromeldingen en bestellingen per maand
/* Formatted on 9-6-2010 17:52:25 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_repro_bes_count
(
fclt_f_meld_maand,
fclt_f_vakgroeptype,
meldingen,
bestellingen
)
AS
SELECT TO_CHAR (mld_melding_datum, 'yyyy-mm') meldmaand,
ins_srtdiscipline_omschrijving vakgroeptype,
COUNT (mld_melding_key) meldingen,
COUNT (bes_bestelling_key) bestellingen
FROM (SELECT m.mld_melding_datum,
sd.ins_srtdiscipline_omschrijving,
m.mld_melding_key,
b.bes_bestelling_key
FROM mld_melding m,
mld_stdmelding std,
bes_bestelling b,
mld_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key = b.mld_melding_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (21, 41))
GROUP BY TO_CHAR (mld_melding_datum, 'yyyy-mm'),
ins_srtdiscipline_omschrijving;
/* Formatted on 16-6-2011 10:08:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_thema_ruimte_afd
(
alg_ruimte_key,
waarde
)
AS
SELECT w.prs_alg_ruimte_key, MIN (a.prs_afdeling_omschrijving)
FROM prs_perslidwerkplek pw,
(SELECT p.prs_perslid_key,
DECODE (p.prs_afdeling_key,
b.prs_afdeling_key3, b.prs_afdeling_key2,
b.prs_afdeling_key4, b.prs_afdeling_key2,
b.prs_afdeling_key5, b.prs_afdeling_key2,
p.prs_afdeling_key)
prs_afdeling_key
FROM prs_perslid p, prs_v_afdeling_boom b
WHERE p.prs_afdeling_key = b.prs_afdeling_key) pa,
prs_afdeling a,
prs_werkplek w
WHERE pw.prs_perslid_key = pa.prs_perslid_key
AND pa.prs_afdeling_key = a.prs_afdeling_key
AND pw.prs_werkplek_key = w.prs_werkplek_key
GROUP BY w.prs_alg_ruimte_key;
/* Formatted on 16-6-2011 10:08:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_label_ruimte_afd
(
alg_ruimte_key,
waarde
)
AS
SELECT DISTINCT
w.prs_alg_ruimte_key, SUBSTR (a.prs_afdeling_omschrijving, 1, 60)
FROM prs_perslidwerkplek pw,
(SELECT p.prs_perslid_key,
DECODE (p.prs_afdeling_key,
b.prs_afdeling_key3, b.prs_afdeling_key2,
b.prs_afdeling_key4, b.prs_afdeling_key2,
b.prs_afdeling_key5, b.prs_afdeling_key2,
p.prs_afdeling_key)
prs_afdeling_key
FROM prs_perslid p, prs_v_afdeling_boom b
WHERE p.prs_afdeling_key = b.prs_afdeling_key) pa,
prs_afdeling a,
prs_werkplek w
WHERE pw.prs_perslid_key = pa.prs_perslid_key
AND pa.prs_afdeling_key = a.prs_afdeling_key
AND pw.prs_werkplek_key = w.prs_werkplek_key;
/* Formatted on 16-6-2011 10:25:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_prj_thema_ruimte_afd
(
prj_ruimte_key,
waarde
)
AS
SELECT w.prj_ruimte_key, MIN (a.prs_afdeling_omschrijving)
FROM prj_perslidwerkplek pw,
(SELECT p.prs_perslid_key,
DECODE (p.prs_afdeling_key,
b.prs_afdeling_key3, b.prs_afdeling_key2,
b.prs_afdeling_key4, b.prs_afdeling_key2,
b.prs_afdeling_key5, b.prs_afdeling_key2,
p.prs_afdeling_key)
prs_afdeling_key
FROM prs_perslid p, prs_v_afdeling_boom b
WHERE p.prs_afdeling_key = b.prs_afdeling_key) pa,
prs_afdeling a,
prj_werkplek w
WHERE pw.prs_perslid_key = pa.prs_perslid_key
AND pw.prj_perslidwerkplek_verwijder IS NULL
AND pa.prs_afdeling_key = a.prs_afdeling_key
AND pw.prj_werkplek_key = w.prj_werkplek_key
AND w.prj_werkplek_verwijder IS NULL
GROUP BY w.prj_ruimte_key;
/* Formatted on 16-6-2011 10:25:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_prj_label_ruimte_afd
(
prj_ruimte_key,
waarde
)
AS
SELECT DISTINCT
w.prj_ruimte_key, SUBSTR (a.prs_afdeling_omschrijving, 1, 60)
FROM prj_perslidwerkplek pw,
(SELECT p.prs_perslid_key,
DECODE (p.prs_afdeling_key,
b.prs_afdeling_key3, b.prs_afdeling_key2,
b.prs_afdeling_key4, b.prs_afdeling_key2,
b.prs_afdeling_key5, b.prs_afdeling_key2,
p.prs_afdeling_key)
prs_afdeling_key
FROM prs_perslid p, prs_v_afdeling_boom b
WHERE p.prs_afdeling_key = b.prs_afdeling_key) pa,
prs_afdeling a,
prj_werkplek w
WHERE pw.prs_perslid_key = pa.prs_perslid_key
AND pw.prj_perslidwerkplek_verwijder IS NULL
AND pa.prs_afdeling_key = a.prs_afdeling_key
AND pw.prj_werkplek_key = w.prj_werkplek_key
AND w.prj_werkplek_verwijder IS NULL;
CREATE OR REPLACE VIEW hout_v_label_bewoner_voornaam
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT prs_w.prs_alg_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voornaam,
NULL, '',
' (' || prs_p.prs_perslid_voornaam || ')')
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_pw,
prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prs_werkplek_virtueel = 0
UNION
SELECT prs_w.prs_alg_ruimte_key, '[Vrij]'
FROM prs_werkplek prs_w, prs_v_werkplek_bezetting prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key
AND prs_w.prs_werkplek_virtueel = 0
AND prs_wb.prs_werkplek_bezetting < 100
/
CREATE OR REPLACE VIEW hout_v_label_bewoner_voorl
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT prs_w.prs_alg_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
', ' || prs_p.prs_perslid_voorletters)
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_pw,
prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prs_werkplek_virtueel = 0
UNION
SELECT prs_w.prs_alg_ruimte_key, '[Vrij]'
FROM prs_werkplek prs_w, prs_v_werkplek_bezetting prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key
AND prs_w.prs_werkplek_virtueel = 0
AND prs_wb.prs_werkplek_bezetting < 100
/
/* Formatted on 16-8-2010 14:11:01 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW HOUT_V_LABEL_BEWONERWP
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
SELECT DISTINCT prs_alg_ruimte_key, waarde
FROM (SELECT prs_w.prs_alg_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
', ' || prs_p.prs_perslid_voorletters)
|| ' '
|| DECODE (prs_w.prs_werkplek_omschrijving,
NULL, '',
' (' || prs_w.prs_werkplek_omschrijving || ')')
waarde
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_pw,
prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
UNION
SELECT prs_w.prs_alg_ruimte_key,
' Vrij '
|| DECODE (prs_w.prs_werkplek_omschrijving,
NULL, '',
'(' || prs_w.prs_werkplek_omschrijving || ')')
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key(+)
GROUP BY prs_w.prs_alg_ruimte_key,
prs_w.prs_werkplek_key,
prs_w.prs_werkplek_omschrijving
HAVING SUM (NVL (prs_wb.prs_perslidwerkplek_bezetting, 0)) <
100);
/
/* Formatted on 16-8-2010 14:09:45 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW HOUT_V_PRJ_LABEL_BEWONERWP
(
PRJ_RUIMTE_KEY,
WAARDE,
HIGHLIGHT
)
AS
SELECT DISTINCT
prj_ruimte_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1)
FROM (SELECT prj_r.prj_scenario_key,
prs_w.prj_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
', ' || prs_p.prs_perslid_voorletters)
|| ' '
|| DECODE (prs_w.prj_werkplek_omschrijving,
NULL, '',
'(' || prs_w.prj_werkplek_omschrijving || ')')
waarde,
'PRJ_WERKPLEK' label_soort,
prs_pw.prj_werkplek_key label_key
FROM PRJ_RUIMTE prj_r,
PRJ_WERKPLEK prs_w,
(SELECT *
FROM PRJ_PERSLIDWERKPLEK
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw,
PRS_PERSLID prs_p
WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key
UNION
SELECT -1,
prs_w.prj_ruimte_key,
' Vrij: '
|| DECODE (prs_w.prj_werkplek_omschrijving,
NULL, '',
'(' || prs_w.prj_werkplek_omschrijving || ')'),
'PRJ_WERKPLEK',
prs_w.prj_werkplek_key
FROM PRJ_WERKPLEK prs_w,
(SELECT *
FROM PRJ_PERSLIDWERKPLEK
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb
WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+)
AND prj_werkplek_verwijder IS NULL
GROUP BY prs_w.prj_ruimte_key,
prs_w.prj_werkplek_key,
prs_w.prj_werkplek_omschrijving
HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0)) <
100) DATA,
PRJ_SELECTIE ps
WHERE ps.prj_scenario_key(+) = DATA.prj_scenario_key
AND ps.prj_selectie_tabelnaam(+) = label_soort
AND ps.prj_selectie_tabelkey(+) = label_key;
/
/* Formatted on 26-7-2012 16:02:20 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_mld_afhandeling_ict
(
fclt_d_aanmaak,
nummer,
vakgroep_melding,
--fclt_f_melding,
fclt_f_status,
fclt_f_accept_user,
fclt_f_update_user,
fclt_f_afmeld_user,
plaats_omschrijving,
--opmerking,
melder,
einddatum
)
AS
SELECT TO_CHAR (mldnew.fac_tracking_datum, 'dd-mm-yyyy'),
SUBSTR (meld.vakgroeptype_prefix, 1, 3) || TO_CHAR (meld.mld_key),
SUBSTR (meld.vakgroep_oms, 1, 30)
|| CHR (10)
|| CHR (13)
|| SUBSTR (meld.stdmld_oms, 1, 60),
--SUBSTR (meld.stdmld_oms, 1, 60),
meld.mld_statuses_omschrijving,
DECODE (mldrej.prs_perslid_key,
NULL,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = mldacp.prs_perslid_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = mldrej.prs_perslid_key)),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = mldbeh.prs_perslid_key),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = mldafm.prs_perslid_key),
SUBSTR (meld.plaatsaanduiding, 1, 30)
|| CHR (10)
|| CHR (13)
|| SUBSTR (meld.mld_oms, 1, 4000)
mld_oms,
--SUBSTR (meld.mld_opm, 1, 1000) mld_opm,
meld.prs_perslid_naam_full,
TO_CHAR (meld.einddatum, 'dd-mm-yyyy')
FROM (SELECT m.mld_melding_key mld_key,
sd.ins_srtdiscipline_key
vakgroeptype_key,
sd.ins_srtdiscipline_prefix
vakgroeptype_prefix,
td.ins_discipline_key vakgroep_key,
td.ins_discipline_omschrijving
vakgroep_oms,
sm.mld_stdmelding_key stdmld_key,
sm.mld_stdmelding_omschrijving
stdmld_oms,
m.mld_melding_datum begindatum,
m.mld_melding_einddatum einddatum,
m.mld_melding_omschrijving mld_oms,
m.mld_melding_opmerking mld_opm,
s.mld_statuses_omschrijving,
COALESCE (pa.alg_plaatsaanduiding,
l.alg_locatie_code)
plaatsaanduiding,
p.prs_perslid_naam_full
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline td,
ins_srtdiscipline sd,
mld_statuses s,
alg_v_plaatsaanduiding pa,
alg_locatie l,
prs_v_perslid_fullnames p
WHERE m.mld_stdmelding_key =
sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key =
td.ins_discipline_key
AND td.ins_srtdiscipline_key =
sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key = 2 -- ICT
AND m.mld_melding_status =
s.mld_statuses_key
AND m.mld_alg_onroerendgoed_keys =
pa.alg_onroerendgoed_keys(+)
AND m.mld_alg_locatie_key =
l.alg_locatie_key
AND m.prs_perslid_key =
p.prs_perslid_key) meld
LEFT JOIN
fac_tracking mldnew
ON meld.mld_key = mldnew.fac_tracking_refkey
AND mldnew.fac_srtnotificatie_key = 21
LEFT JOIN
(SELECT t.fac_tracking_refkey,
t.fac_tracking_datum,
t.prs_perslid_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 17
AND t.fac_tracking_key IN
(SELECT MAX (fac_tracking_key)
FROM fac_tracking
WHERE fac_srtnotificatie_key =
17
AND fac_tracking_refkey =
t.fac_tracking_refkey))
mldacp
ON meld.mld_key = mldacp.fac_tracking_refkey
LEFT JOIN
fac_tracking mldrej
ON meld.mld_key = mldrej.fac_tracking_refkey
AND mldrej.fac_srtnotificatie_key = 22
LEFT JOIN
(SELECT t.fac_tracking_refkey,
t.fac_tracking_datum,
t.prs_perslid_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 144
AND t.fac_tracking_key IN
(SELECT MAX (fac_tracking_key)
FROM fac_tracking
WHERE fac_srtnotificatie_key = 144
AND fac_tracking_refkey =
t.fac_tracking_refkey))
mldbeh
ON meld.mld_key = mldbeh.fac_tracking_refkey
LEFT JOIN
fac_tracking mldafm
ON meld.mld_key = mldafm.fac_tracking_refkey
AND mldafm.fac_srtnotificatie_key = 18
WHERE mldafm.fac_tracking_datum IS NULL
OR mldafm.fac_tracking_datum >
TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY');
-- HOUT#27850: Urenregistratie tbv. Facilities (HOUT#23679) naar PSC omgebouwd!
/* Formatted on 24-10-2013 14:08:22 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_urenreg_psc
(
fclt_x_vakgroep,
fclt_f_melding,
fclt_f_opdrachttype,
fclt_f_projectnummer,
fclt_x_opdrachtnr,
html_opdrachtnr,
omschrijving,
dag,
fclt_d_datum,
fclt_f_medewerker,
--fclt_f_type_personeel,
uren,
uurtarief,
kmtarief,
kmperwk
)
AS
SELECT opdr.ins_discipline_omschrijving vakgroep,
opdr.mld_stdmelding_omschrijving melding,
opdr.mld_typeopdr_omschrijving opdrachttype,
TO_CHAR (opdr.mld_melding_key) projectnummer,
opdr.mld_melding_key || '/' || opdr.mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
DECODE (
opdr.mld_opdr_key,
NULL,
NULL,
'<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_opdr.asp?urole=bo&'
|| 'opdr_key='
|| opdr.mld_opdr_key
|| '")''>'
|| opdr.mld_melding_key
|| '/'
|| opdr.mld_opdr_bedrijfopdr_volgnr
|| '</a>'
)
html_opdrachtnr,
opdr.mld_opdr_omschrijving opdr_oms,
DECODE (TO_CHAR (ou.mld_opdr_uren_datum, 'D'),
2, 'Ma',
3, 'Di',
4, 'Wo',
5, 'Do',
6, 'Vr',
7, 'Za',
'Zo')
dag,
TO_CHAR (ou.mld_opdr_uren_datum, 'dd-mm-yyyy') datum,
opdr.prs_perslid_naam_full
|| DECODE (b.prs_perslid_key,
NULL, '',
' (' || b.prs_bedrijf_naam || ')')
medewerker,
--kl.fac_usrdata_omschr type_pers,
ou.mld_opdr_uren_besteed,
k1.uurtarief,
k2.kmtarief,
k3.kmperwk
FROM (SELECT o.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
sm.mld_stdmelding_omschrijving,
md.ins_discipline_omschrijving,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_omschrijving,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
prs_v_perslid_fullnames pf
WHERE o.mld_statusopdr_key != 1 -- Afgewezen
AND o.mld_typeopdr_key =
ot.mld_typeopdr_key
AND ot.mld_typeopdr_matchtype = 3 -- Wekelijks geregistreerde uren
AND o.mld_melding_key =
m.mld_melding_key
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key =
md.ins_discipline_key
AND md.ins_srtdiscipline_key = 181 -- PSC urenregistratie
AND o.mld_uitvoerende_keys =
pf.prs_perslid_key) opdr
LEFT JOIN
(SELECT cp.prs_perslid_key,
b.prs_bedrijf_naam
FROM prs_contactpersoon cp, prs_bedrijf b
WHERE cp.prs_bedrijf_key =
b.prs_bedrijf_key) b
ON opdr.prs_perslid_key = b.prs_perslid_key
LEFT JOIN
mld_opdr_uren ou
ON opdr.mld_opdr_key = ou.mld_opdr_key
LEFT JOIN -- Weg???
(SELECT kl.prs_link_key, ud.fac_usrdata_omschr
FROM prs_kenmerklink kl, fac_usrdata ud
WHERE kl.prs_kenmerk_key = 1020 -- Type personeel
AND fac.safe_to_number (
kl.prs_kenmerklink_waarde
) = ud.fac_usrdata_key
AND ud.fac_usrtab_key = 581) k0 -- Type personeel
ON opdr.prs_perslid_key = k0.prs_link_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde uurtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1161 -- Uurtarief
AND k.mld_kenmerk_niveau = 'O') k1 -- Uurtarief
ON opdr.mld_opdr_key = k1.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde kmtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1181 -- Km-tarief
AND k.mld_kenmerk_niveau = 'O') k2 -- Km-tarief
ON opdr.mld_opdr_key = k2.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde kmperwk
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1182 -- Km per wk
AND k.mld_kenmerk_niveau = 'O') k3 -- Km per wk
ON opdr.mld_opdr_key = k3.mld_opdr_key
WHERE ou.mld_opdr_uren_besteed IS NOT NULL;
/* Formatted on 2-1-2014 14:22:55 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_wk_uren_psc
(
hide_f_bv,
wknr,
maandag,
fclt_d_zondag,
begindatum,
einddatum,
uren_vast,
loon_vast,
uurtarief,
kmtarief,
kmperwk,
fclt_f_opdrachttype,
fclt_f_projectnummer,
opdr_oms,
fclt_f_locatie,
fclt_f_medewerker,
--mdw_type,
uren_besteed,
loon_besteed,
ma_uren,
di_uren,
wo_uren,
do_uren,
vr_uren,
za_uren,
zo_uren
)
AS
SELECT 'B' bv, -- Besteed
TO_CHAR (wk.dag, 'IYYY-IW') wknr,
TO_CHAR (TRUNC (wk.dag, 'IW'), 'dd-mm-yyyy') maandag,
TO_CHAR (TRUNC (wk.dag, 'IW') + 6, 'dd-mm-yyyy') fclt_d_zondag, -- Ref.datum bij van/tot-selectie!
ou.mld_opdr_datumbegin,
ou.mld_opdr_einddatum,
NULL uren_vast, --ou.uren_vast,
NULL loon_vast,
--NULL uurtarief, --k1.uurtarief,
--NULL kmtarief, --k2.kmtarief,
--NULL kmperwk, --k3.kmperwk,
COALESCE (k1.uurtarief, '0') uurtarief,
COALESCE (k2.kmtarief, '0') kmtarief,
COALESCE (k3.kmperwk, '0') kmperwk,
ou.mld_typeopdr_omschrijving opdrachttype,
TO_CHAR (ou.mld_melding_key) projectnummer,
ou.mld_opdr_omschrijving opdr_oms,
ou.alg_locatie_omschrijving locatie,
--opdr.ins_discipline_omschrijving vakgroep,
--opdr.mld_stdmelding_omschrijving melding,
--opdr.mld_melding_key || '/' || opdr.mld_opdr_bedrijfopdr_volgnr
-- opdrachtnr,
--ou.prs_perslid_naam_full mdw_naam,
ou.prs_perslid_naam_full
|| DECODE (b.prs_perslid_key,
NULL, '',
' (' || b.prs_bedrijf_naam || ')')
medewerker,
--NULL mdw_type,
COALESCE (ou.ma, 0)
+ COALESCE (ou.di, 0)
+ COALESCE (ou.wo, 0)
+ COALESCE (ou.do, 0)
+ COALESCE (ou.vr, 0)
+ COALESCE (ou.za, 0)
+ COALESCE (ou.zo, 0)
uren_besteed,
( COALESCE (ou.ma, 0)
+ COALESCE (ou.di, 0)
+ COALESCE (ou.wo, 0)
+ COALESCE (ou.do, 0)
+ COALESCE (ou.vr, 0)
+ COALESCE (ou.za, 0)
+ COALESCE (ou.zo, 0))
* COALESCE (fac.safe_to_number (k1.uurtarief), 0)
loon_besteed,
COALESCE (ou.ma, 0),
COALESCE (ou.di, 0),
COALESCE (ou.wo, 0),
COALESCE (ou.do, 0),
COALESCE (ou.vr, 0),
COALESCE (ou.za, 0),
COALESCE (ou.zo, 0)
FROM ( SELECT TRUNC (ADD_MONTHS (SYSDATE, -12),
'YYYY')
+ (ROWNUM * 7)
dag
FROM DUAL
CONNECT BY LEVEL <=
(CEIL( (SYSDATE
- TRUNC (
ADD_MONTHS (SYSDATE,
-12),
'YYYY'
))
/ 7)
+ 2)) wk
LEFT JOIN -- Tbv. te berekenen bestede uren per dag!
(SELECT ou.wk,
o.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
o.mld_opdr_uren uren_vast,
ot.mld_typeopdr_omschrijving,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
'*Verlof/ziek',
o.mld_opdr_omschrijving)
mld_opdr_omschrijving,
--sm.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
pf.prs_perslid_key,
pf.prs_perslid_naam_full,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.ma, -- -!
ou.ma) -- +!
ma,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.di, -- -!
ou.di) -- +!
di,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.wo, -- -!
ou.wo) -- +!
wo,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.do, -- -!
ou.do) -- +!
do,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.vr, -- -!
ou.vr) -- +!
vr,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.za, -- -!
ou.za) -- +!
za,
DECODE (sm.mld_ins_discipline_key,
1841, -- Afwezigheidsregistratie
-1 * ou.zo, -- -!
ou.zo) -- +!
zo
FROM ( SELECT TO_CHAR (mld_opdr_uren_datum,
'IYYY-IW')
wk,
mld_opdr_key,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
2,
mld_opdr_uren_besteed,
0
))
ma,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
3,
mld_opdr_uren_besteed,
0
))
di,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
4,
mld_opdr_uren_besteed,
0
))
wo,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
5,
mld_opdr_uren_besteed,
0
))
do,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
6,
mld_opdr_uren_besteed,
0
))
vr,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
7,
mld_opdr_uren_besteed,
0
))
za,
SUM(DECODE (
TO_CHAR (
mld_opdr_uren_datum,
'D'
),
1,
mld_opdr_uren_besteed,
0
))
zo
FROM mld_opdr_uren
GROUP BY TO_CHAR (
mld_opdr_uren_datum,
'IYYY-IW'
),
mld_opdr_key) ou,
mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
alg_v_aanweziglocatie l,
prs_v_perslid_fullnames pf
WHERE ou.mld_opdr_key = o.mld_opdr_key
AND o.mld_statusopdr_key != 1 -- Afgewezen
AND o.mld_typeopdr_key =
ot.mld_typeopdr_key
AND ot.mld_typeopdr_matchtype = 3 -- Wekelijks geregistreerde uren
AND o.mld_melding_key =
m.mld_melding_key
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key =
md.ins_discipline_key
AND md.ins_srtdiscipline_key = 181 -- PSC urenregistratie
AND m.mld_alg_locatie_key =
l.alg_locatie_key(+)
AND o.mld_uitvoerende_keys =
pf.prs_perslid_key) ou
ON TO_CHAR (wk.dag, 'IYYY-IW') = ou.wk
LEFT JOIN
( SELECT cp.prs_perslid_key,
MIN (b.prs_bedrijf_naam) prs_bedrijf_naam
FROM prs_contactpersoon cp, prs_bedrijf b
WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key
GROUP BY cp.prs_perslid_key) b
ON ou.prs_perslid_key = b.prs_perslid_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde uurtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1161 -- Uurtarief
AND k.mld_kenmerk_niveau = 'O') k1 -- Uurtarief
ON ou.mld_opdr_key = k1.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde kmtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1181 -- Km-tarief
AND k.mld_kenmerk_niveau = 'O') k2 -- Km-tarief
ON ou.mld_opdr_key = k2.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde kmperwk
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1182 -- Km per wk
AND k.mld_kenmerk_niveau = 'O') k3 -- Km per wk
ON ou.mld_opdr_key = k3.mld_opdr_key
UNION ALL
SELECT 'V' bv, -- Vast
TO_CHAR (o.dag, 'IYYY-IW') wknr,
TO_CHAR (TRUNC (o.dag, 'IW'), 'dd-mm-yyyy') maandag,
TO_CHAR (TRUNC (o.dag, 'IW') + 6, 'dd-mm-yyyy') fclt_d_zondag, -- Ref.datum bij van/tot-selectie!
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
o.uren_vast,
o.uren_vast * COALESCE (fac.safe_to_number (k1.uurtarief), 0)
loon_vast,
COALESCE (k1.uurtarief, '0') uurtarief,
COALESCE (k2.kmtarief, '0') kmtarief,
COALESCE (k3.kmperwk, '0') kmperwk,
o.mld_typeopdr_omschrijving opdrachttype,
TO_CHAR (o.mld_melding_key) projectnummer,
o.mld_opdr_omschrijving opdr_oms,
o.alg_locatie_omschrijving locatie,
--opdr.ins_discipline_omschrijving vakgroep,
--opdr.mld_stdmelding_omschrijving melding,
--opdr.mld_melding_key || '/' || opdr.mld_opdr_bedrijfopdr_volgnr
-- opdrachtnr,
--o.prs_perslid_naam_full mdw_naam,
o.prs_perslid_naam_full
|| DECODE (b.prs_perslid_key,
NULL, '',
' (' || b.prs_bedrijf_naam || ')')
medewerker,
--kl.fac_usrdata_omschr mdw_type,
0,
0,
0,
0,
0,
0,
0,
0,
0
FROM (SELECT wk.dag,
o.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
o.mld_opdr_uren uren_vast,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_omschrijving,
--sm.mld_stdmelding_omschrijving,
l.alg_locatie_omschrijving,
pf.prs_perslid_key,
pf.prs_perslid_naam_full
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
alg_v_aanweziglocatie l,
prs_v_perslid_fullnames pf,
( SELECT TRUNC (
ADD_MONTHS (SYSDATE, -12),
'YYYY'
)
+ (ROWNUM * 7)
dag
FROM DUAL
CONNECT BY LEVEL <=
(CEIL( (SYSDATE
- TRUNC (
ADD_MONTHS (
SYSDATE,
-12
),
'YYYY'
))
/ 7)
+ 2)) wk
WHERE o.mld_statusopdr_key != 1 -- Afgewezen
AND o.mld_typeopdr_key =
ot.mld_typeopdr_key
AND ot.mld_typeopdr_matchtype = 3 -- Wekelijks geregistreerde uren
AND o.mld_melding_key =
m.mld_melding_key
AND m.mld_stdmelding_key =
sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key =
md.ins_discipline_key
AND md.ins_srtdiscipline_key = 181 -- PSC urenregistratie
AND m.mld_alg_locatie_key =
l.alg_locatie_key(+)
AND o.mld_uitvoerende_keys =
pf.prs_perslid_key
AND TO_CHAR (wk.dag, 'IYYY-IW') BETWEEN TO_CHAR (
o.mld_opdr_datumbegin,
'IYYY-IW'
)
AND TO_CHAR (
o.mld_opdr_einddatum,
'IYYY-IW'
))
o
LEFT JOIN
( SELECT cp.prs_perslid_key,
MIN (b.prs_bedrijf_naam)
prs_bedrijf_naam
FROM prs_contactpersoon cp, prs_bedrijf b
WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key
GROUP BY cp.prs_perslid_key) b
ON o.prs_perslid_key = b.prs_perslid_key
LEFT JOIN -- Weg???
(SELECT kl.prs_link_key, ud.fac_usrdata_omschr
FROM prs_kenmerklink kl, fac_usrdata ud
WHERE kl.prs_kenmerk_key = 1020 -- Type personeel
AND fac.safe_to_number (
kl.prs_kenmerklink_waarde
) = ud.fac_usrdata_key
AND ud.fac_usrtab_key = 581) k0 -- Type personeel
ON o.prs_perslid_key = k0.prs_link_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde uurtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1161 -- Uurtarief
AND k.mld_kenmerk_niveau = 'O') k1 -- Uurtarief
ON o.mld_opdr_key = k1.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key,
ko.mld_kenmerkopdr_waarde kmtarief
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1181 -- Km-tarief
AND k.mld_kenmerk_niveau = 'O') k2 -- Km-tarief
ON o.mld_opdr_key = k2.mld_opdr_key
LEFT JOIN
(SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde kmperwk
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1182 -- Km per wk
AND k.mld_kenmerk_niveau = 'O') k3 -- Km per wk
ON o.mld_opdr_key = k3.mld_opdr_key;
/* Formatted on 17-1-2013 17:04:16 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE HOUT_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
pextra IN VARCHAR2)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_stdmelding_key NUMBER (10);
v_stdmelding_uvt NUMBER (8, 5);
v_deel_key NUMBER (10);
v_onrgoed_keys NUMBER (10);
v_locatie_key NUMBER (10);
v_melding_key NUMBER (10);
BEGIN
CASE
WHEN UPPER (pto) LIKE 'PRINTERS@%'
THEN
v_errormsg := 'Fout bij bepalen printer-melder';
-- Valideer bestaan van persoon met key=10081 (Externe partij/leverancier)?
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_key = 10081
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bij bepalen printer-melding';
-- Valideer bestaan van stdmelding met key=2481 (MF Ricoh automatische melding)?
SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_uitvoertijd
INTO v_stdmelding_key, v_stdmelding_uvt
FROM mld_stdmelding sm
WHERE sm.mld_stdmelding_key = 2481
AND sm.mld_stdmelding_verwijder IS NULL;
v_errormsg :=
'Fout bij bepalen printer-object: '
|| SUBSTR (pfrom, 1, INSTR (pfrom, '@') - 1);
-- Valideer de sender in pfrom: kennen we deze als object in de groep met
-- key=21 (Multifunctionals)?
SELECT d.ins_deel_key, og.alg_onrgoed_keys, og.alg_locatie_key
INTO v_deel_key, v_onrgoed_keys, v_locatie_key
FROM ins_v_aanwezigdeel d,
ins_v_aanwezigsrtdeel sd,
ins_v_alg_onroerendgoed og
WHERE UPPER (d.ins_deel_omschrijving) LIKE
UPPER (SUBSTR (pfrom, 1, INSTR (pfrom, '@') - 1)) || '%'
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = 21
AND d.ins_alg_ruimte_key = og.alg_onrgoed_keys;
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find the appropriate stdmelding, if uniquely possible
-- append (as a note?) to an existing melding if #key is found in the subject
v_errormsg := 'Fout bij toevoegen melding';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
v_locatie_key,
v_onrgoed_keys,
SYSDATE,
SUBSTR (psubject, 1, 4000),
NULL,
v_stdmelding_uvt,
v_stdmelding_key,
v_perslid_key,
v_perslid_key,
v_kostenplaats_key,
3) -- prio normaal
RETURNING mld_melding_key INTO v_melding_key;
v_errormsg := 'Fout bij toevoegen melding-object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, v_deel_key);
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
ELSE
INSERT INTO fac_result (
fac_result_sessionid,
fac_result_naam,
fac_result_waarde
)
VALUES (
'hMailServer',
'errormsg',
'Onvanger ongeldig - Neem contact op met uw systeembeheerder '
);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('PROCESSEMAIL',
'E',
'HOUT_processemail afgebroken!',
'[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (
fac_result_sessionid,
fac_result_naam,
fac_result_waarde
)
VALUES (
'hMailServer',
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder '
);
COMMIT;
END;
/
/* Formatted on 14-1-2013 14:52:58 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW hout_v_rap_mail_error
(
hide_f_offset,
datum,
hint,
error
)
AS
SELECT SYSDATE - imp_log_datum,
imp_log_datum,
imp_log_hint,
imp_log_omschrijving
FROM imp_log
WHERE imp_log_applicatie = 'PROCESSEMAIL'
AND imp_log_datum > SYSDATE - 30;
-- HOUT#27713
CREATE OR REPLACE VIEW HOUT_V_RAP_PRJ_OVZ
(
FCLT_F_PROJECTTYPE,
FCLT_F_Project,
Projectnr,
Projectomschrijving,
Projectmanager,
Adviseur,
Opdrachtgever,
Startdatum,
Einddatum,
Status,
Innovatief,
Samen,
Duurzaam,
Divers
)
AS
SELECT md.ins_discipline_omschrijving vakgroep,
std.mld_stdmelding_omschrijving project,
ins_srtdiscipline_prefix || m.mld_melding_key projectnr,
mld_melding_omschrijving projectomschrijving,
prm.prs_perslid_naam_full projectmanager,
adv.prs_perslid_naam_full adviseur,
(SELECT opd.prs_perslid_naam_full
FROM mld_kenmerkmelding mkm, prs_v_perslid_fullnames opd
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1441 -- kenmerk opdrachtgever
AND opd.prs_perslid_key =
mkm.mld_kenmerkmelding_waarde(+))
opdrachtgever,
TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') startdatum,
TO_CHAR (mld_melding_einddatum, 'DD-MM-YYYY') geplande_einddatum,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mkm, fac_usrdata
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1444 -- kenmerk status
AND fac_usrtab_key = 661 -- eigen tabel status
AND fac_usrdata_key = mld_kenmerkmelding_waarde)
status,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1452) -- kenmerk innovatief
Innovatief,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1453) -- kenmerk samen
Samen,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1454) -- kenmerk duurzaam
Duurzaam,
(SELECT mkm.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mkm
WHERE m.mld_melding_key = mkm.mld_melding_key
AND mkm.mld_kenmerk_key = 1455) -- kenmerk divers
Divers
FROM mld_melding m,
mld_stdmelding std,
mld_discipline md,
ins_srtdiscipline srt,
prs_v_perslid_fullnames adv,
prs_v_perslid_fullnames prm
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND md.ins_discipline_key = std.mld_ins_discipline_key
AND srt.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND m.mld_melding_status NOT IN (1, 5, 6) -- alleen lopende meldingen
AND adv.prs_perslid_key(+) = m.mld_melding_behandelaar_key
AND prm.prs_perslid_key = m.prs_perslid_key
AND m.fac_activiteit_key IS NULL
AND srt.ins_srtdiscipline_key = 181 -- vakgroeptype project support centre
ORDER BY 1, 2;
/* Formatted on 10-2-2014 14:48:12 (QP5 v5.136.908.31019) */
/*
CREATE OR REPLACE VIEW HOUT_V_CNT_EXTRA_NOTI
(
perslid_key,
perslid_naam
)
AS
SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full
FROM fac_gebruikersgroep gg, prs_v_perslid_fullnames pf
WHERE gg.fac_groep_key IN (921, 941, 961, 962, 981, 982) -- CNT-groepen
AND gg.prs_perslid_key = pf.prs_perslid_key;
*/
/* Formatted on 10-2-2014 14:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW HOUT_V_NOTI_CNTREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT '',
'',
c.prs_perslid_key_beh,
'Rapp<EFBFBD>l: Contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_status = 0
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
UNION
SELECT '',
'',
c.prs_perslid_key_eig,
'Rapp<EFBFBD>l: Contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
cnt.cnt_getopzegdatum (c.cnt_contract_key),
NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_verwijder IS NULL
AND c.cnt_contract_status = 0
AND c.prs_perslid_key_eig IS NOT NULL
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
BEGIN fac.registercustversion('HOUT', 31); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
commit;
spool off