10674 lines
474 KiB
MySQL
10674 lines
474 KiB
MySQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for FMHN.
|
||
DEFINE thisfile = 'FMHN.SQL'
|
||
DEFINE dbuser = '^FMHN'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
-- Aangepaste import voor ruimten i.v.m. beperkingen export Stabicad
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_ruimten (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_mode NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_alg_kenmerk_key1 VARCHAR2 (255);
|
||
v_alg_kenmerk_key2 VARCHAR2 (255);
|
||
v_alg_kenmerk_key3 VARCHAR2 (255);
|
||
v_alg_kenmerk_key4 VARCHAR2 (255);
|
||
v_alg_kenmerk_key5 VARCHAR2 (255);
|
||
v_bouwdeel NUMBER (1);
|
||
-- De importvelden:
|
||
v_locatie_code VARCHAR2 (255); -- 10
|
||
v_gebouw_code VARCHAR2 (255); -- 12
|
||
v_verdieping_volgnr VARCHAR2 (255); -- 3,0
|
||
v_verdieping_volgnr_n NUMBER (3, 0); -- 3,0
|
||
v_srtruimte_omschrijving VARCHAR2 (255); -- 30
|
||
v_ruimte_nr VARCHAR2 (255); -- 10
|
||
v_ruimte_omschrijving VARCHAR2 (255); -- 30
|
||
v_ruimte_bruto_vloeropp VARCHAR2 (255); -- 8,2
|
||
v_ruimte_bruto_vloeropp_n NUMBER (8, 2); -- 8,2
|
||
v_afdeling_naam VARCHAR2 (255); -- 10
|
||
v_ruimte_afdeling_bezetting VARCHAR2 (255); -- 8,5
|
||
v_ruimte_afdeling_bezetting_n VARCHAR2 (255); -- 8,5
|
||
v_reserveerbaar VARCHAR2 (255); -- 1
|
||
v_res_discipline_omschrijving VARCHAR2 (255); -- 60
|
||
v_res_discipline_expire_dagen VARCHAR2 (255); -- 3
|
||
v_res_disc_expire_dagen_n NUMBER (3, 0); -- 3
|
||
v_res_ruimte_prijs VARCHAR2 (255); -- 7,2
|
||
v_res_ruimte_prijs_n NUMBER (7, 2); -- 7,2
|
||
v_res_opstelling_omschrijving VARCHAR2 (255); -- 30
|
||
v_res_ruimte_opstel_bezoekers VARCHAR2 (255); -- 5,0
|
||
v_res_ruimte_opstel_bez_n NUMBER (5, 0); -- 5,0
|
||
v_res_ruimte_nr VARCHAR2 (255); -- 40
|
||
v_res_ruimte_omschrijving VARCHAR2 (255); -- 255
|
||
v_alg_kenmerkwaarde1 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde2 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde3 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde4 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde5 VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
-- Controleer tijdens import-fase op bestaan van kenmerk
|
||
FUNCTION bepaal_kenmerk_key (kw IN VARCHAR)
|
||
RETURN NUMBER
|
||
IS
|
||
v_kenmerk_key NUMBER;
|
||
BEGIN
|
||
IF fac.safe_to_number (kw) IS NULL
|
||
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_upper = UPPER (kw)
|
||
AND alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau = 'R'
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_key = fac.safe_to_number (kw)
|
||
AND alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau = 'R'
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
|
||
END IF;
|
||
|
||
RETURN v_kenmerk_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
IF kw IS NULL OR UPPER (kw) LIKE 'KENMERK%'
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Fout bij bepalen kenmerk [' || kw || ']',
|
||
'Bestaat niet of type ongeldig');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END IF;
|
||
END;
|
||
BEGIN
|
||
DELETE FROM fac_imp_onrgoed2;
|
||
|
||
header_is_valid := 0;
|
||
v_count := 0;
|
||
|
||
SELECT COUNT (*) bouwdelen
|
||
INTO v_bouwdeel
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_line LIKE '%Verdiepingsnummer%'
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
-- Bepaal of er meer dan 1 bouwdeel wordt ingelezen (ieder bouwdeel heeft een header regel in de CSV
|
||
IF v_bouwdeel > 1
|
||
THEN
|
||
v_bouwdeel := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Er zijn bouwdelen gevonden.',
|
||
'Tijdens het verwerken zullen de verdiepingen worden gesplitst per bouwdeel.'
|
||
);
|
||
ELSE
|
||
v_bouwdeel := 0;
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Geen bouwdelen gevonden.',
|
||
'Deze verdieping wordt op de normale manier verwerkt.'
|
||
);
|
||
END IF;
|
||
|
||
-- Update de headerregel, die uit Stabicad is onbruikbaar
|
||
UPDATE fac_imp_file
|
||
SET fac_imp_file_line = 'Ruimtenummer;Ruimteomschrijving;Vloeroppervlak;Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtefunctie;Afdelingscode;Bezetting;ReserveerbareRuimte;Categorie;Expiredagen;Prijs;Opstelling;AantalBezoekers;Naam;Omschrijving;kenmerk1;kenmerk2;kenmerk3;kenmerk4;kenmerk5'
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_index = 1;
|
||
|
||
-- Nu de bouwdelen zijn geteld en de header is omgehangen mogen andere eventuele header regels weg.
|
||
DELETE fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
AND fac_imp_file_line LIKE '%Verdiepingsnummer%';
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_errorhint := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden, aangepast op export uit Stabicad
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_bruto_vloeropp);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_code);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_code);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_verdieping_volgnr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtruimte_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam); -- Alles vanaf hier is NULL
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_afdeling_bezetting);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_reserveerbaar);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_discipline_expire_dagen);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_prijs);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_opstelling_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_opstel_bezoekers);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde1);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde2);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde3);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde4);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde5);
|
||
|
||
v_aanduiding :=
|
||
v_locatie_code || '|' || v_gebouw_code || '|' || v_verdieping_volgnr || '|' || v_ruimte_nr || '| ';
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_ruimte_nr) = 'RUIMTENUMMER'
|
||
AND UPPER (v_res_ruimte_omschrijving) = 'OMSCHRIJVING'
|
||
THEN
|
||
v_alg_kenmerk_key1 := bepaal_kenmerk_key (v_alg_kenmerkwaarde1);
|
||
v_alg_kenmerk_key2 := bepaal_kenmerk_key (v_alg_kenmerkwaarde2);
|
||
v_alg_kenmerk_key3 := bepaal_kenmerk_key (v_alg_kenmerkwaarde3);
|
||
v_alg_kenmerk_key4 := bepaal_kenmerk_key (v_alg_kenmerkwaarde4);
|
||
v_alg_kenmerk_key5 := bepaal_kenmerk_key (v_alg_kenmerkwaarde5);
|
||
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count := v_count + 1;
|
||
v_errormsg := 'Fout inlezen locatie [' || v_locatie_code || ']';
|
||
|
||
v_locatie_code := TRIM(v_locatie_code);
|
||
IF LENGTH (v_locatie_code) > 10
|
||
THEN
|
||
v_locatie_code := SUBSTR (v_locatie_code, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Locatie-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_locatie_code || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen gebouw [' || v_gebouw_code || ']';
|
||
|
||
v_gebouw_code := TRIM(v_gebouw_code);
|
||
IF LENGTH (v_gebouw_code) > 12
|
||
THEN
|
||
v_gebouw_code := SUBSTR (v_gebouw_code, 1, 12);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Gebouwcode-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_gebouw_code || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := '1 Fout inlezen verdiepingvolgnr [' || v_verdieping_volgnr || ']';
|
||
v_errorhint := 'Geef een geheel getal niet groter dan 3 posities';
|
||
|
||
IF (NVL (LENGTH (ROUND (fac.safe_to_number (v_verdieping_volgnr))), 10)) > 3
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'xyz Ongeldig verdiepingvolgnummer [' || v_verdieping_volgnr || ']',
|
||
v_errorhint
|
||
);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
v_verdieping_volgnr_n := ROUND (fac.safe_to_number (v_verdieping_volgnr));
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimtefunctie [' || v_srtruimte_omschrijving || ']';
|
||
|
||
v_srtruimte_omschrijving := TRIM(v_srtruimte_omschrijving);
|
||
IF LENGTH (v_srtruimte_omschrijving) > 50
|
||
THEN
|
||
v_srtruimte_omschrijving := SUBSTR (v_srtruimte_omschrijving, 1, 50);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimtefunctie-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_srtruimte_omschrijving || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimtenummer [' || v_ruimte_nr || ']';
|
||
|
||
v_ruimte_nr := TRIM(v_ruimte_nr);
|
||
IF LENGTH (v_ruimte_nr) > 20
|
||
THEN
|
||
v_ruimte_nr := SUBSTR (v_ruimte_nr, -20);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimtenr-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_ruimte_nr || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimte [' || v_ruimte_omschrijving || ']';
|
||
|
||
v_ruimte_omschrijving := TRIM(v_ruimte_omschrijving);
|
||
IF LENGTH (v_ruimte_omschrijving) > 30
|
||
THEN
|
||
v_ruimte_omschrijving := SUBSTR (v_ruimte_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimte-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_ruimte_omschrijving || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimte oppervlakte [' || v_ruimte_bruto_vloeropp || ']';
|
||
v_errorhint := 'Maximaal grootte getal is 99999.99';
|
||
|
||
IF TRIM (v_ruimte_bruto_vloeropp) IS NULL
|
||
THEN
|
||
v_ruimte_bruto_vloeropp_n := TO_NUMBER (NULL);
|
||
ELSE
|
||
-- nls_numeric_characters wordt verondersteld
|
||
v_ruimte_bruto_vloeropp_n := TO_NUMBER (TRIM (REPLACE (v_ruimte_bruto_vloeropp, ',', '.')), '999999D99');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen afdelingscode [' || v_afdeling_naam || ']';
|
||
|
||
v_afdeling_naam := TRIM(v_afdeling_naam);
|
||
IF LENGTH (v_afdeling_naam) > 15
|
||
THEN
|
||
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingscode is te lang',
|
||
'Afdelingscode wordt afgebroken tot <' || v_afdeling_naam || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimtebezetting [' || v_ruimte_afdeling_bezetting || ']';
|
||
v_errorhint := 'Maximaal grootte getal is 999.99999';
|
||
|
||
IF TRIM (v_ruimte_afdeling_bezetting) IS NULL
|
||
THEN
|
||
v_ruimte_afdeling_bezetting_n := TO_NUMBER (NULL);
|
||
ELSE
|
||
-- nls_numeric_characters wordt verondersteld
|
||
v_ruimte_afdeling_bezetting_n := TO_NUMBER (TRIM (REPLACE (v_ruimte_afdeling_bezetting, ',', '.')), '999D99999');
|
||
END IF;
|
||
|
||
--
|
||
v_reserveerbaar := SUBSTR (TRIM (v_reserveerbaar), 1, 1);
|
||
--
|
||
v_errormsg := 'Fout inlezen catalogus [' || v_res_discipline_omschrijving || ']';
|
||
|
||
v_res_discipline_omschrijving := TRIM(v_res_discipline_omschrijving);
|
||
IF LENGTH (v_res_discipline_omschrijving) > 60
|
||
THEN
|
||
v_res_discipline_omschrijving := SUBSTR (v_res_discipline_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Categorie-aanduiding ruimte is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_res_discipline_omschrijving || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen expire dagen [' || v_res_discipline_expire_dagen || ']';
|
||
v_errorhint := 'Geef geheel getal niet groter dan 3 posities';
|
||
|
||
IF TRIM (v_res_discipline_expire_dagen) IS NULL
|
||
THEN
|
||
v_res_disc_expire_dagen_n := 0;
|
||
ELSE
|
||
v_res_disc_expire_dagen_n := TO_NUMBER (v_res_discipline_expire_dagen);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen prijs reserveerbare ruimte [' || v_res_ruimte_prijs || ']';
|
||
v_errorhint := 'Maximaal grootte getal is 99999.99 ';
|
||
|
||
IF (TRIM (v_res_ruimte_prijs) IS NULL)
|
||
THEN
|
||
v_res_ruimte_prijs_n := TO_NUMBER (NULL);
|
||
ELSE
|
||
-- nls_numeric_characters wordt verondersteld
|
||
v_res_ruimte_prijs_n := TO_NUMBER (TRIM (REPLACE (v_res_ruimte_prijs, ',', '.')), '999999D99');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen opstelling [' || v_res_opstelling_omschrijving || ']';
|
||
|
||
v_res_opstelling_omschrijving := TRIM(v_res_opstelling_omschrijving);
|
||
IF LENGTH (v_res_opstelling_omschrijving) > 30
|
||
THEN
|
||
v_res_opstelling_omschrijving := SUBSTR (v_res_opstelling_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimteopstelling-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_res_opstelling_omschrijving || '>'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen aantal bezoekers [' || v_res_ruimte_opstel_bezoekers || ']';
|
||
v_errorhint := 'Geef geheel getal niet groter dan 5 posities';
|
||
|
||
IF TRIM (v_res_ruimte_opstel_bezoekers) IS NULL
|
||
THEN
|
||
v_res_ruimte_opstel_bez_n := TO_NUMBER (NULL);
|
||
ELSE
|
||
v_res_ruimte_opstel_bez_n := TO_NUMBER (v_res_ruimte_opstel_bezoekers);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
|
||
|
||
v_res_ruimte_nr := TRIM(v_res_ruimte_nr);
|
||
IF LENGTH (v_res_ruimte_nr) > 40
|
||
THEN
|
||
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
|
||
v_res_ruimte_nr := SUBSTR (v_res_ruimte_nr, 1, 40);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimtenr-aanduiding reserveerbare ruimte is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_res_ruimte_nr || '>'
|
||
);
|
||
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
|
||
--
|
||
v_errormsg := 'Fout inlezen reserveerbare ruimte [' || v_res_ruimte_omschrijving || ']';
|
||
|
||
v_res_ruimte_omschrijving := TRIM(v_res_ruimte_omschrijving);
|
||
IF LENGTH (v_res_ruimte_omschrijving) > 255
|
||
THEN
|
||
v_res_ruimte_omschrijving := SUBSTR (v_res_ruimte_omschrijving, 1, 255);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimte-aanduiding reserveerbare ruimte is te lang',
|
||
'Aanduiding wordt afgebroken tot <' || v_res_ruimte_omschrijving || '>'
|
||
);
|
||
END IF;
|
||
|
||
v_alg_kenmerkwaarde1 := TRIM (v_alg_kenmerkwaarde1);
|
||
v_alg_kenmerkwaarde2 := TRIM (v_alg_kenmerkwaarde2);
|
||
v_alg_kenmerkwaarde3 := TRIM (v_alg_kenmerkwaarde3);
|
||
v_alg_kenmerkwaarde4 := TRIM (v_alg_kenmerkwaarde4);
|
||
v_alg_kenmerkwaarde5 := TRIM (v_alg_kenmerkwaarde5);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen te impoteren ruimte [' || v_res_ruimte_omschrijving || ']';
|
||
|
||
INSERT INTO fac_imp_onrgoed2 (
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_srtruimte_omschrijving,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
prs_afdeling_naam,
|
||
prs_ruimteafdeling_bezetting,
|
||
reserveerbaar,
|
||
res_discipline_omschrijving,
|
||
res_discipline_expire_dagen,
|
||
res_ruimte_prijs,
|
||
res_opstelling_omschrijving,
|
||
res_ruimte_opstel_bezoekers,
|
||
res_ruimte_nr,
|
||
res_ruimte_omschrijving,
|
||
alg_kenmerkwaarde1,
|
||
alg_kenmerkwaarde2,
|
||
alg_kenmerkwaarde3,
|
||
alg_kenmerkwaarde4,
|
||
alg_kenmerkwaarde5
|
||
)
|
||
VALUES (
|
||
v_locatie_code,
|
||
v_gebouw_code,
|
||
v_verdieping_volgnr_n,
|
||
v_srtruimte_omschrijving,
|
||
v_ruimte_nr,
|
||
v_ruimte_omschrijving,
|
||
v_ruimte_bruto_vloeropp_n,
|
||
v_afdeling_naam,
|
||
v_ruimte_afdeling_bezetting_n,
|
||
v_reserveerbaar,
|
||
v_res_discipline_omschrijving,
|
||
v_res_disc_expire_dagen_n,
|
||
v_res_ruimte_prijs_n,
|
||
v_res_opstelling_omschrijving,
|
||
v_res_ruimte_opstel_bez_n,
|
||
v_res_ruimte_nr,
|
||
v_res_ruimte_omschrijving,
|
||
DECODE (v_alg_kenmerk_key1,
|
||
NULL, v_alg_kenmerkwaarde1,
|
||
TO_CHAR (v_alg_kenmerk_key1)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde1, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key2,
|
||
NULL, v_alg_kenmerkwaarde2,
|
||
TO_CHAR (v_alg_kenmerk_key2)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde2, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key3,
|
||
NULL, v_alg_kenmerkwaarde3,
|
||
TO_CHAR (v_alg_kenmerk_key3)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde3, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key4,
|
||
NULL, v_alg_kenmerkwaarde4,
|
||
TO_CHAR (v_alg_kenmerk_key4)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde4, 1, 200)
|
||
), -- We parkeren het bouwdeel verdiepingnummer even in kenmerk 5
|
||
DECODE (v_bouwdeel, 1, SUBSTR (v_ruimte_nr, 1, 1) || '-' || v_verdieping_volgnr_n,
|
||
DECODE (v_alg_kenmerk_key5,
|
||
NULL, v_alg_kenmerkwaarde5,
|
||
TO_CHAR (v_alg_kenmerk_key5)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde5, 1, 200)
|
||
))
|
||
);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Ongeldig importbestand',
|
||
'Geen geldige headerregel aanwezig'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Ruimte: aantal ingelezen regels: ' || TO_CHAR (v_count), '');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := v_errormsg || ' Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Eventeel resterende regels worden niet meer ingelezen!'
|
||
);
|
||
END fmhn_import_ruimten;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_update_ruimten (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
v_count NUMBER(10);
|
||
v_count_update NUMBER(10);
|
||
v_count_tot NUMBER(10);
|
||
v_bouwdeel NUMBER(10);
|
||
|
||
-- De importvelden:
|
||
v_regio_omschrijving VARCHAR2(255); -- 30
|
||
v_district_omschrijving VARCHAR2(255); -- 30
|
||
v_locatie_code VARCHAR2(255); -- 10
|
||
v_locatie_omschrijving VARCHAR2(255); -- 60
|
||
v_gebouw_code VARCHAR2(255); -- 12
|
||
v_gebouw_naam VARCHAR2(255); -- 30
|
||
v_srtgebouw_omschrijving VARCHAR2(255); -- 30
|
||
v_locatie_verantw VARCHAR2(255); -- 30
|
||
v_locatie_verantw_tel VARCHAR2(255); -- 15
|
||
v_locatie_adres VARCHAR2(255); -- 50
|
||
v_locatie_postcode VARCHAR2(255); -- 12
|
||
v_locatie_plaats VARCHAR2(255); -- 30
|
||
v_locatie_land VARCHAR2(255); -- 30
|
||
v_locatie_post_adres VARCHAR2(255); -- 50
|
||
v_locatie_post_postcode VARCHAR2(255); -- 12
|
||
v_locatie_post_plaats VARCHAR2(255); -- 30
|
||
v_locatie_post_land VARCHAR2(255); -- 30
|
||
|
||
v_regio_key NUMBER(10);
|
||
v_district_key NUMBER(10);
|
||
v_locatie_key NUMBER(10);
|
||
v_srtgebouw_key NUMBER(10);
|
||
v_gebouw_key NUMBER(10);
|
||
v_verdieping_key NUMBER(10);
|
||
v_verdieping_volgnr NUMBER(3);
|
||
v_srtruimte_key NUMBER(10);
|
||
v_ruimte_key NUMBER(10);
|
||
v_res_ruimte_key NUMBER(10);
|
||
v_ruimte_omschrijving res_ruimte.res_ruimte_nr%TYPE; -- 40
|
||
|
||
v_discipline_key NUMBER(10);
|
||
v_opstelling_key NUMBER(10);
|
||
v_ruimteafdeling_key NUMBER(10);
|
||
|
||
CURSOR cVerdieping
|
||
IS
|
||
SELECT min(alg_locatie_code) alg_locatie_code
|
||
,min(alg_gebouw_code) alg_gebouw_code
|
||
,alg_verdieping_volgnr alg_verdieping_volgnr
|
||
,alg_kenmerkwaarde5 verdiepingnummer
|
||
FROM fac_imp_onrgoed2
|
||
GROUP BY upper(alg_locatie_code), upper(alg_gebouw_code), alg_verdieping_volgnr, alg_kenmerkwaarde5;
|
||
|
||
recVerdieping cVerdieping%ROWTYPE;
|
||
|
||
CURSOR cBouwdeel
|
||
IS
|
||
SELECT ROWNUM getal, sub.waarde verdiepingnummer
|
||
FROM (SELECT DISTINCT alg_kenmerkwaarde5 waarde FROM fac_imp_onrgoed2) sub;
|
||
|
||
CURSOR cSrtRuimte
|
||
IS
|
||
SELECT min(alg_srtruimte_omschrijving) alg_srtruimte_omschrijving
|
||
FROM fac_imp_onrgoed2
|
||
GROUP BY alg_srtruimte_omschrijving;
|
||
|
||
recSrtRuimte cSrtRuimte%ROWTYPE;
|
||
|
||
CURSOR cRuimte
|
||
IS
|
||
SELECT alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_srtruimte_omschrijving,
|
||
alg_ruimte_nr,
|
||
alg_ruimte_omschrijving,
|
||
alg_ruimte_bruto_vloeropp,
|
||
reserveerbaar,
|
||
res_discipline_omschrijving,
|
||
res_ruimte_prijs,
|
||
res_opstelling_omschrijving,
|
||
res_ruimte_opstel_bezoekers,
|
||
res_ruimte_nr,
|
||
res_ruimte_omschrijving,
|
||
i.prs_afdeling_naam,
|
||
prs_afdeling_key,
|
||
prs_ruimteafdeling_bezetting,
|
||
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))
|
||
kenmerk_key1,
|
||
SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1) waarde1,
|
||
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))
|
||
kenmerk_key2,
|
||
SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1) waarde2,
|
||
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))
|
||
kenmerk_key3,
|
||
SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1) waarde3,
|
||
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))
|
||
kenmerk_key4,
|
||
SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1) waarde4,
|
||
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))
|
||
kenmerk_key5,
|
||
SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1) waarde5
|
||
FROM fac_imp_onrgoed2 i,
|
||
prs_afdeling a
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND UPPER(i.prs_afdeling_naam) = a.prs_afdeling_upper(+);
|
||
|
||
recRuimte cRuimte%ROWTYPE;
|
||
|
||
CURSOR cOpstelling
|
||
IS
|
||
SELECT min(res_opstelling_omschrijving) res_opstelling_omschrijving
|
||
,UPPER(res_opstelling_omschrijving) res_opstelling_upper
|
||
FROM FAC_IMP_ONRGOED2
|
||
WHERE res_opstelling_omschrijving IS NOT NULL
|
||
GROUP BY UPPER(res_opstelling_omschrijving);
|
||
|
||
recOpstelling cOpstelling%ROWTYPE;
|
||
|
||
CURSOR cCategorie
|
||
IS
|
||
SELECT min(res_discipline_omschrijving) res_discipline_omschrijving
|
||
,upper(res_discipline_omschrijving) res_discipline_upper
|
||
,NVL(res_discipline_expire_dagen,0) res_discipline_expire_dagen
|
||
FROM FAC_IMP_ONRGOED2
|
||
WHERE reserveerbaar in ('Y','y','J','j')
|
||
GROUP BY upper(res_discipline_omschrijving)
|
||
, res_discipline_expire_dagen;
|
||
|
||
recCategorie cCategorie%ROWTYPE;
|
||
|
||
CURSOR cResRuimte
|
||
IS
|
||
SELECT *
|
||
FROM FAC_IMP_ONRGOED2
|
||
WHERE RESERVEERBAAR in ('J','j','Y','y');
|
||
|
||
recResRuimte cResRuimte%ROWTYPE;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE upsert_algkenmerk (p_ruimte_key IN NUMBER,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_type VARCHAR2 (1);
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam VARCHAR2 (30);
|
||
v_kolomnaam VARCHAR2 (30);
|
||
v_kolomtxt VARCHAR2 (30);
|
||
sql_stmt VARCHAR2 (1000);
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
BEGIN
|
||
IF (p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerktype';
|
||
SELECT alg_kenmerk_kenmerktype
|
||
INTO v_kenmerk_type
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_kenmerk_niveau = 'R';
|
||
|
||
IF v_kenmerk_type IN ('R', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']';
|
||
|
||
IF ccount = 1
|
||
THEN -- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (p_waarde);
|
||
ELSE -- FACILITOR view/tabel
|
||
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
|
||
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NULL;
|
||
|
||
sql_stmt := 'SELECT MAX ('
|
||
|| v_kolomnaam
|
||
|| ') FROM '
|
||
|| v_objectnaam
|
||
|| ' WHERE UPPER (TRIM ('
|
||
|| v_kolomtxt
|
||
|| ')) = UPPER (:pwaarde)';
|
||
l_cursor_1 := DBMS_SQL.open_cursor;
|
||
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
||
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', p_waarde);
|
||
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
|
||
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
||
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
|
||
DBMS_SQL.close_cursor(l_cursor_1);
|
||
END IF;
|
||
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
|
||
v_waarde := p_waarde;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij toevoegen/bijwerken kenmerk';
|
||
alg.upsertkenmerk (p_kenmerk_key,
|
||
p_ruimte_key,
|
||
v_waarde);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'upsert_algkenmerk');
|
||
END;
|
||
|
||
BEGIN
|
||
|
||
SELECT COUNT (DISTINCT alg_kenmerkwaarde5) INTO v_bouwdeel FROM fac_imp_onrgoed2;
|
||
|
||
IF v_bouwdeel > 0
|
||
THEN
|
||
FOR rec IN cBouwdeel
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fac_imp_onrgoed2
|
||
SET alg_verdieping_volgnr = fac.safe_to_number (alg_verdieping_volgnr || rec.getal) -- verdieping 14 met 3 bouwdelen wordt dus 141 142 143
|
||
WHERE alg_kenmerkwaarde5 = rec.verdiepingnummer;
|
||
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
-- ****************
|
||
-- ***VERDIEPING***
|
||
-- ****************
|
||
OPEN cVerdieping;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cVerdieping%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cVerdieping INTO recVerdieping;
|
||
EXIT WHEN cVerdieping%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recVerdieping.ALG_LOCATIE_CODE||'|'||recVerdieping.ALG_GEBOUW_CODE||'|'||recVerdieping.ALG_VERDIEPING_VOLGNR||'| ';
|
||
|
||
v_errorhint := ' Fout bij bepalen locatie ['||recVerdieping.ALG_LOCATIE_CODE||']';
|
||
|
||
SELECT ALG_LOCATIE_KEY
|
||
INTO v_locatie_key
|
||
FROM ALG_LOCATIE
|
||
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recVerdieping.ALG_LOCATIE_CODE)
|
||
AND ALG_LOCATIE_VERWIJDER IS NULL;
|
||
|
||
v_errorhint := ' Fout bij bepalen gebouw ['||recVerdieping.ALG_GEBOUW_CODE||']';
|
||
|
||
SELECT ALG_GEBOUW_KEY
|
||
INTO v_gebouw_key
|
||
FROM ALG_GEBOUW
|
||
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recVerdieping.ALG_GEBOUW_CODE)
|
||
AND ALG_LOCATIE_KEY = v_locatie_key
|
||
AND ALG_GEBOUW_VERWIJDER IS NULL;
|
||
|
||
v_errorhint := 'Fout bij toevoegen verdieping';
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE alg_gebouw_key = v_gebouw_key
|
||
AND ALG_VERDIEPING_VOLGNR = recVerdieping.ALG_VERDIEPING_VOLGNR;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
insert into ALG_VERDIEPING
|
||
(ALG_GEBOUW_KEY
|
||
,ALG_VERDIEPING_VOLGNR
|
||
,ALG_VERDIEPING_CODE
|
||
,ALG_VERDIEPING_OMSCHRIJVING
|
||
)
|
||
values
|
||
(v_gebouw_key
|
||
,recVerdieping.ALG_VERDIEPING_VOLGNR
|
||
,DECODE (recVerdieping.verdiepingnummer, NULL, to_char(recVerdieping.ALG_VERDIEPING_VOLGNR), recVerdieping.verdiepingnummer)
|
||
,DECODE (recVerdieping.verdiepingnummer, NULL, 'Verdieping '||to_char(recVerdieping.ALG_VERDIEPING_VOLGNR), 'Verdieping '||to_char(recVerdieping.verdiepingnummer))
|
||
);
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken verdieping ['||recVerdieping.ALG_LOCATIE_CODE||'-'||recVerdieping.ALG_GEBOUW_CODE||'-'||to_number(recVerdieping.ALG_VERDIEPING_VOLGNR)||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Verdieping: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Verdieping: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cVerdieping;
|
||
|
||
-- Maak kenmerk5 nu maar weer leeg als deze gebruikt is voor bouwdelen.
|
||
IF v_bouwdeel > 0 THEN
|
||
UPDATE fac_imp_onrgoed2
|
||
SET alg_kenmerkwaarde5 = NULL
|
||
WHERE alg_kenmerkwaarde5 IS NOT NULL;
|
||
END IF;
|
||
|
||
-- *******************
|
||
-- ***RUIMTEFUNCTIE***
|
||
-- *******************
|
||
OPEN cSrtRuimte;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cSrtRuimte%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cSrtRuimte INTO recSrtRuimte;
|
||
EXIT WHEN cSrtRuimte%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING||'| ';
|
||
|
||
v_errorhint := ' Fout bij toevoegen ruimtefunctie';
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM alg_srtruimte
|
||
WHERE upper(alg_srtruimte_omschrijving) = upper(recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING)
|
||
AND alg_srtruimte_verwijder is null;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
insert into ALG_SRTRUIMTE
|
||
(ALG_SRTRUIMTE_OMSCHRIJVING
|
||
)
|
||
values
|
||
(recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING
|
||
);
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken ruimtefunctie ['||recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Ruimtefunctie: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Ruimtefunctie: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cSrtRuimte;
|
||
|
||
-- ************
|
||
-- ***RUIMTE***
|
||
-- ************
|
||
OPEN cRuimte;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cRuimte%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
v_ruimte_key := NULL;
|
||
|
||
FETCH cRuimte INTO recRuimte;
|
||
EXIT WHEN cRuimte%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recRuimte.ALG_LOCATIE_CODE||'|'||recRuimte.ALG_GEBOUW_CODE||'|'||recRuimte.ALG_VERDIEPING_VOLGNR||'|'||recRuimte.ALG_RUIMTE_NR||'| ';
|
||
|
||
v_errorhint := ' Fout bij bepalen locatie';
|
||
|
||
SELECT ALG_LOCATIE_KEY
|
||
INTO v_locatie_key
|
||
FROM ALG_LOCATIE
|
||
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recRuimte.ALG_LOCATIE_CODE)
|
||
AND ALG_LOCATIE_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen gebouw';
|
||
|
||
SELECT ALG_GEBOUW_KEY
|
||
INTO v_gebouw_key
|
||
FROM ALG_GEBOUW
|
||
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recRuimte.ALG_GEBOUW_CODE)
|
||
AND ALG_LOCATIE_KEY = v_locatie_key
|
||
AND ALG_GEBOUW_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen verdieping';
|
||
|
||
SELECT ALG_VERDIEPING_KEY
|
||
INTO v_verdieping_key
|
||
FROM ALG_VERDIEPING
|
||
WHERE ALG_GEBOUW_KEY = v_gebouw_key
|
||
AND ALG_VERDIEPING_VOLGNR = recRuimte.ALG_VERDIEPING_VOLGNR
|
||
AND ALG_VERDIEPING_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen ruimtefunctie'||' ['||recRuimte.alg_srtruimte_omschrijving||']';
|
||
|
||
SELECT ALG_SRTRUIMTE_KEY
|
||
INTO v_srtruimte_key
|
||
FROM ALG_SRTRUIMTE
|
||
WHERE upper(alg_srtruimte_omschrijving) = upper(recRuimte.ALG_SRTRUIMTE_OMSCHRIJVING)
|
||
AND ALG_SRTRUIMTE_verwijder is null;
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM ALG_RUIMTE
|
||
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
|
||
AND UPPER(ALG_RUIMTE_NR) = UPPER(recRuimte.ALG_RUIMTE_NR)
|
||
-- als ruimteomschrijving in sheet afwijkt geeft dit een onduidelijke error, dan liever
|
||
-- de omschrijving negeren en gewoon niet bijwerken
|
||
-- AND UPPER(ALG_RUIMTE_OMSCHRIJVING) = UPPER(recRuimte.ALG_RUIMTE_OMSCHRIJVING)
|
||
AND alg_ruimte_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij toevoegen ruimte';
|
||
|
||
IF v_count = 0 THEN
|
||
|
||
insert into ALG_RUIMTE
|
||
(ALG_VERDIEPING_KEY
|
||
,ALG_SRTRUIMTE_KEY
|
||
,ALG_RUIMTE_NR
|
||
,ALG_RUIMTE_OMSCHRIJVING
|
||
,ALG_RUIMTE_OPMERKING
|
||
,ALG_RUIMTE_BRUTO_VLOEROPP
|
||
)
|
||
values
|
||
(v_verdieping_key
|
||
,v_srtruimte_key
|
||
,recRuimte.ALG_RUIMTE_NR
|
||
,recRuimte.ALG_RUIMTE_OMSCHRIJVING
|
||
,''
|
||
,TO_NUMBER(recRuimte.ALG_RUIMTE_BRUTO_VLOEROPP)
|
||
)
|
||
RETURNING ALG_RUIMTE_KEY
|
||
INTO v_ruimte_key;
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
-- Als de ruimte al bestaat, dan nog de key ophalen, zodat we 'm hieronder kunnen gebruiken.
|
||
IF (v_ruimte_key IS NULL)
|
||
THEN
|
||
v_errorhint := ' Fout bij bepalen ruimte';
|
||
|
||
SELECT ALG_RUIMTE_KEY
|
||
INTO v_ruimte_key
|
||
FROM ALG_RUIMTE
|
||
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
|
||
AND UPPER(ALG_RUIMTE_NR) = UPPER(recRuimte.ALG_RUIMTE_NR)
|
||
AND alg_ruimte_verwijder is null;
|
||
END IF;
|
||
|
||
-- ********************
|
||
-- ***RUIMTEAFDELING***
|
||
-- ********************
|
||
-- AAES#25942: koppel afdeling(en) aan ruimte; <20><>n afdeling per regel, ruimte kan meerdere keren voorkomen.
|
||
IF (recRuimte.prs_afdeling_naam IS NOT NULL)
|
||
THEN
|
||
IF (recRuimte.prs_afdeling_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
|
||
'Afdeling niet gevonden'
|
||
);
|
||
ELSE
|
||
IF (recRuimte.prs_ruimteafdeling_bezetting IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
|
||
'Fout: afdeling gevuld, bezetting leeg!'
|
||
);
|
||
ELSIF (recRuimte.prs_ruimteafdeling_bezetting > 100 OR recRuimte.prs_ruimteafdeling_bezetting < 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
|
||
'Ongeldige ruimtebezetting ['||TO_CHAR(recRuimte.prs_ruimteafdeling_bezetting)||'] verwacht 0 <= bezetting <= 100'
|
||
);
|
||
ELSE
|
||
BEGIN
|
||
SELECT COUNT(*), MAX(prs_ruimteafdeling_key)
|
||
INTO v_count, v_ruimteafdeling_key
|
||
FROM prs_ruimteafdeling
|
||
WHERE prs_ruimteafdeling_verwijder IS NULL
|
||
AND prs_afdeling_key = recRuimte.prs_afdeling_key
|
||
AND alg_ruimte_key = v_ruimte_key;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := ' Fout bij toevoegen ruimtebezetting';
|
||
|
||
INSERT INTO prs_ruimteafdeling
|
||
(prs_afdeling_key
|
||
,alg_ruimte_key
|
||
,prs_ruimteafdeling_bezetting)
|
||
VALUES
|
||
(recRuimte.prs_afdeling_key
|
||
,v_ruimte_key
|
||
,recRuimte.prs_ruimteafdeling_bezetting
|
||
);
|
||
END IF;
|
||
|
||
IF (v_count = 1)
|
||
THEN
|
||
v_errorhint := ' Fout bij aanpassen ruimtebezetting';
|
||
|
||
UPDATE prs_ruimteafdeling
|
||
SET prs_ruimteafdeling_bezetting = recRuimte.prs_ruimteafdeling_bezetting
|
||
WHERE prs_ruimteafdeling_key = v_ruimteafdeling_key;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken ruimteafdeling ['||
|
||
recRuimte.ALG_LOCATIE_CODE||'-'||recRuimte.ALG_GEBOUW_CODE||'-'||recRuimte.ALG_VERDIEPING_VOLGNR||'-'||recRuimte.ALG_RUIMTE_NR
|
||
||'] / ['||recRuimte.PRS_AFDELING_NAAM||']';
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
commit;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- *******************
|
||
-- ***FLEXKENMERKEN***
|
||
-- *******************
|
||
v_errorhint := ' Fout bij toevoegen/bijwerken flexkenmerken';
|
||
|
||
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key1, recRuimte.waarde1);
|
||
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key2, recRuimte.waarde2);
|
||
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key3, recRuimte.waarde3);
|
||
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key4, recRuimte.waarde4);
|
||
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key5, recRuimte.waarde5);
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken ruimte ['||recRuimte.ALG_LOCATIE_CODE||'-'||recRuimte.ALG_GEBOUW_CODE||'-'||recRuimte.ALG_VERDIEPING_VOLGNR||'-'||recRuimte.ALG_RUIMTE_NR||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Ruimte: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Ruimte: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cRuimte;
|
||
|
||
-- ****************
|
||
-- ***OPSTELLING***
|
||
-- ****************
|
||
OPEN cOpstelling;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cOpstelling%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cOpstelling INTO recOpstelling;
|
||
EXIT WHEN cOpstelling%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recOpstelling.RES_OPSTELLING_OMSCHRIJVING||'| ';
|
||
|
||
v_errorhint := ' Fout bij toevoegen opstelling';
|
||
|
||
select count(*)
|
||
into v_count
|
||
from RES_OPSTELLING
|
||
where RES_OPSTELLING_verwijder is null
|
||
and trim(RES_OPSTELLING_upper) = upper(trim(recOpstelling.RES_OPSTELLING_OMSCHRIJVING));
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
insert into RES_OPSTELLING
|
||
(RES_OPSTELLING_OMSCHRIJVING
|
||
)
|
||
values
|
||
(trim(recOpstelling.RES_OPSTELLING_OMSCHRIJVING)
|
||
);
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken opstelling ['||recOpstelling.RES_OPSTELLING_OMSCHRIJVING||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Opstelling: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Opstelling: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cOpstelling;
|
||
|
||
-- ***************
|
||
-- ***CATEGORIE***
|
||
-- ***************
|
||
OPEN cCategorie;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cCategorie%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cCategorie INTO recCategorie;
|
||
EXIT WHEN cCategorie%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recCategorie.res_discipline_omschrijving||'| ';
|
||
|
||
v_errorhint := ' Fout bij toevoegen categorie';
|
||
|
||
select count(*)
|
||
into v_count
|
||
from ins_tab_discipline
|
||
where ins_discipline_verwijder is null
|
||
and ins_discipline_module='RES'
|
||
and upper(trim(ins_discipline_omschrijving)) = upper(trim(recCategorie.res_discipline_omschrijving));
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
INSERT INTO ins_tab_discipline
|
||
(ins_discipline_module
|
||
,ins_discipline_omschrijving
|
||
,ins_discipline_verwijder
|
||
,ins_discipline_min_level)
|
||
VALUES
|
||
('RES'
|
||
,trim(recCategorie.res_discipline_omschrijving)
|
||
,to_date(null)
|
||
,3)
|
||
RETURNING ins_discipline_key
|
||
INTO v_discipline_key;
|
||
|
||
INSERT INTO res_disc_params
|
||
(res_ins_discipline_key
|
||
,res_disc_params_expire_dagen)
|
||
VALUES
|
||
(v_discipline_key
|
||
,recCategorie.res_discipline_expire_dagen
|
||
);
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken catalogus ['||recCategorie.res_discipline_omschrijving||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Categorie: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Categorie: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cCategorie;
|
||
|
||
-- ***************
|
||
-- ***RESRUIMTE***
|
||
-- ***************
|
||
OPEN cResRuimte;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cResRuimte%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cResRuimte INTO recResRuimte;
|
||
EXIT WHEN cResRuimte%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recResRuimte.ALG_LOCATIE_CODE||'|'||recResRuimte.ALG_GEBOUW_CODE||'|'||recResRuimte.ALG_VERDIEPING_VOLGNR||'|'||recResRuimte.ALG_RUIMTE_NR||'| ';
|
||
|
||
v_errorhint := ' Fout bij bepalen locatie';
|
||
|
||
SELECT ALG_LOCATIE_KEY
|
||
INTO v_locatie_key
|
||
FROM ALG_LOCATIE
|
||
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recResRuimte.ALG_LOCATIE_CODE)
|
||
AND alg_locatie_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen gebouw';
|
||
|
||
SELECT ALG_GEBOUW_KEY
|
||
INTO v_gebouw_key
|
||
FROM ALG_GEBOUW
|
||
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recResRuimte.ALG_GEBOUW_CODE)
|
||
AND ALG_LOCATIE_KEY = v_locatie_key
|
||
AND alg_gebouw_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen verdieping';
|
||
|
||
SELECT ALG_VERDIEPING_KEY, ALG_VERDIEPING_VOLGNR
|
||
INTO v_verdieping_key, v_verdieping_volgnr
|
||
FROM ALG_VERDIEPING
|
||
WHERE ALG_GEBOUW_KEY = v_gebouw_key
|
||
AND ALG_VERDIEPING_VOLGNR = recResRuimte.ALG_VERDIEPING_VOLGNR;
|
||
|
||
v_errorhint := ' Fout bij bepalen ruimte';
|
||
|
||
SELECT ALG_RUIMTE_KEY
|
||
INTO v_ruimte_key
|
||
FROM ALG_V_AANWEZIGRUIMTE
|
||
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
|
||
AND ALG_RUIMTE_UPPER_NR = UPPER(recResRuimte.ALG_RUIMTE_NR);
|
||
|
||
v_errorhint := ' Fout bij bepalen catalogus ['||recResRuimte.res_discipline_omschrijving||']';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM RES_V_RES_CATALOGUS
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_min_level = 3
|
||
AND upper(trim(ins_discipline_omschrijving)) = upper(trim(recResRuimte.res_discipline_omschrijving));
|
||
|
||
v_errorhint := ' Fout bij bepalen opstelling ['||recResRuimte.RES_OPSTELLING_OMSCHRIJVING||']';
|
||
|
||
SELECT RES_OPSTELLING_KEY
|
||
INTO v_opstelling_key
|
||
FROM RES_OPSTELLING
|
||
WHERE UPPER(trim(RES_OPSTELLING_OMSCHRIJVING)) = UPPER(trim(recResRuimte.RES_OPSTELLING_OMSCHRIJVING))
|
||
AND RES_OPSTELLING_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij samenstellen ruimte-omschrijving';
|
||
|
||
IF (recResRuimte.RES_RUIMTE_NR IS NULL) THEN
|
||
v_ruimte_omschrijving := SUBSTR( recResRuimte.ALG_LOCATIE_CODE || '-' || recResRuimte.ALG_GEBOUW_CODE || '-' || TO_CHAR(recResRuimte.ALG_VERDIEPING_VOLGNR) || '-' || recResRuimte.ALG_RUIMTE_NR,1,40);
|
||
ELSE
|
||
v_ruimte_omschrijving := recResRuimte.RES_RUIMTE_NR;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen reserveerbare ruimte';
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM RES_RUIMTE
|
||
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
|
||
AND res_ruimte_verwijder is null;
|
||
|
||
IF v_count = 0 THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen reserveerbare ruimte';
|
||
|
||
INSERT INTO RES_RUIMTE
|
||
(RES_RUIMTE_NR
|
||
,RES_RUIMTE_UPPER
|
||
,RES_RUIMTE_PRIJS
|
||
,RES_RUIMTE_OMSCHRIJVING
|
||
,RES_DISCIPLINE_KEY
|
||
)
|
||
VALUES
|
||
(v_ruimte_omschrijving
|
||
,upper(v_ruimte_omschrijving)
|
||
,recResRuimte.RES_RUIMTE_PRIJS
|
||
,recResRuimte.RES_RUIMTE_OMSCHRIJVING
|
||
,v_discipline_key
|
||
)
|
||
RETURNING RES_RUIMTE_KEY
|
||
INTO v_res_ruimte_key;
|
||
|
||
v_errorhint := 'Fout bij koppelen ruimte en reserveerbare ruimte';
|
||
|
||
insert into RES_ALG_RUIMTE
|
||
(RES_RUIMTE_KEY
|
||
,ALG_RUIMTE_KEY
|
||
)
|
||
values
|
||
(v_res_ruimte_key
|
||
,v_ruimte_key
|
||
);
|
||
|
||
ELSE
|
||
|
||
SELECT RES_RUIMTE_KEY
|
||
INTO v_res_ruimte_key
|
||
FROM RES_RUIMTE
|
||
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
|
||
AND res_ruimte_verwijder IS NULL;
|
||
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij koppelen opstelling en reserveerbare ruimte';
|
||
|
||
insert into RES_RUIMTE_OPSTELLING
|
||
(RES_RUIMTE_KEY
|
||
,RES_OPSTELLING_KEY
|
||
,RES_RUIMTE_OPSTEL_BEZOEKERS
|
||
)
|
||
values
|
||
(v_res_ruimte_key
|
||
,v_opstelling_key
|
||
,NVL(recResRuimte.RES_RUIMTE_OPSTEL_BEZOEKERS, 0)
|
||
);
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Reserveerbare ruimte ['||recResRuimte.RES_RUIMTE_OMSCHRIJVING||']';
|
||
v_errorhint := v_errorhint||': ' || 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',
|
||
'Res. ruimte: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Res. ruimte: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cResRuimte;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Fout tijdens importeren van onroerend goed (verdieping en ruimte) ',
|
||
''
|
||
);
|
||
END fmhn_update_ruimten;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_import_log
|
||
(
|
||
fclt_f_applicatie,
|
||
datum,
|
||
fclt_f_status,
|
||
omschrijving,
|
||
hint
|
||
)
|
||
AS
|
||
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
|
||
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
|
||
imp_log_status,
|
||
imp_log_omschrijving,
|
||
imp_log_hint
|
||
FROM imp_log il1, fac_import fi1, fac_import_app fia1
|
||
WHERE il1.fac_import_key = fi1.fac_import_key(+)
|
||
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM imp_log il2, fac_import fi2
|
||
WHERE il2.fac_import_key = fi2.fac_import_key
|
||
AND fi2.fac_import_app_key = fi1.fac_import_app_key
|
||
AND il2.fac_import_key > il1.fac_import_key);
|
||
/*
|
||
CREATE TABLE fmhn_imp_bez
|
||
(
|
||
reservering_id VARCHAR2 (30),
|
||
afspraak_key NUMBER (10),
|
||
locatiecode VARCHAR2 (10),
|
||
gebouwcode VARCHAR2 (12),
|
||
verdiepingcode VARCHAR2 (10),
|
||
ruimtenr VARCHAR2 (14),
|
||
datum DATE,
|
||
van DATE,
|
||
tot DATE,
|
||
contactpersoon VARCHAR2 (50),
|
||
naam VARCHAR2 (30),
|
||
bedrijf VARCHAR2 (60),
|
||
parkeerplaats VARCHAR2 (1),
|
||
actie VARCHAR2 (60),
|
||
telefoon VARCHAR2 (20),
|
||
email VARCHAR2 (200),
|
||
kenteken VARCHAR2 (10)
|
||
);
|
||
*/
|
||
/*
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_bez (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden:
|
||
v_reservering_id VARCHAR2 (255); -- C/res_reservering_key+'/'+res_rsv_ruimte_volgnr
|
||
v_afspraak_id VARCHAR2 (255); -- N10/bez_afspraak_key
|
||
v_locatiecode VARCHAR2 (255); -- C10/alg_locatie_code
|
||
--TODO:
|
||
--v_gebouwcode VARCHAR2 (255); -- C12/alg_gebouw_code
|
||
--v_verdiepingcode VARCHAR2 (255); -- C10/alg_verdieping_code
|
||
--v_ruimtenr VARCHAR2 (255); -- C14/alg_ruimte_nr
|
||
v_datum VARCHAR2 (255); -- D/bez_afspraak_datum
|
||
v_van VARCHAR2 (255); -- D/bez_afspraak_datum
|
||
v_van_d DATE;
|
||
v_tot VARCHAR2 (255); -- D/bez_afspraak_eind
|
||
v_tot_d DATE;
|
||
v_contactpersoon VARCHAR2 (255); -- C50/bez_afspraak_gastheer
|
||
v_naam VARCHAR2 (255); -- C30/bez_afspraak_naam
|
||
v_bedrijf VARCHAR2 (255); -- C60/bez_afspraak_bedrijf
|
||
v_p VARCHAR2 (255); -- C/J(a) of N(ee)=>res_rsv_deel
|
||
v_actie VARCHAR2 (255); -- C/Ophalen of Doorlopen=>bez_kenmerkwaarde_waarde
|
||
v_telefoon VARCHAR2 (255); -- C20/bez_bezoekers_telefoon
|
||
v_email VARCHAR2 (255); -- C200/bez_bezoekers_email
|
||
v_kenteken VARCHAR2 (255); -- C10/bez_bezoekers_kenteken
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fmhn_imp_bez;
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0; -- Geen header, dus altijd valid!
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
-- ReserveringId;AfspraakId;Locatiecode;Datum;Van;Tot;Contactpersoon;Naam;Bedrijf;P;Actie;Telefoon;Email;Kenteken
|
||
fac.imp_getfield (v_newline, c_delim, v_reservering_id);
|
||
fac.imp_getfield (v_newline, c_delim, v_afspraak_id);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatiecode);
|
||
--fac.imp_getfield (v_newline, c_delim, v_gebouwcode);
|
||
--fac.imp_getfield (v_newline, c_delim, v_verdiepingcode);
|
||
--fac.imp_getfield (v_newline, c_delim, v_ruimtenr);
|
||
fac.imp_getfield (v_newline, c_delim, v_datum);
|
||
fac.imp_getfield (v_newline, c_delim, v_van);
|
||
fac.imp_getfield (v_newline, c_delim, v_tot);
|
||
fac.imp_getfield (v_newline, c_delim, v_contactpersoon);
|
||
fac.imp_getfield (v_newline, c_delim, v_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrijf);
|
||
fac.imp_getfield (v_newline, c_delim, v_p);
|
||
fac.imp_getfield (v_newline, c_delim, v_actie);
|
||
fac.imp_getfield (v_newline, c_delim, v_telefoon);
|
||
fac.imp_getfield (v_newline, c_delim, v_email);
|
||
fac.imp_getfield (v_newline, c_delim, v_kenteken);
|
||
v_aanduiding :=
|
||
'['
|
||
|| TRIM (v_reservering_id)
|
||
|| '|'
|
||
|| TRIM (v_afspraak_id)
|
||
|| '|'
|
||
|| TRIM (v_locatiecode)
|
||
|| '|'
|
||
|| TRIM (v_datum) || ' ' || TRIM (v_van) || '-' || TRIM (v_tot)
|
||
|| '|'
|
||
|| TRIM (v_contactpersoon)
|
||
|| '|'
|
||
|| TRIM (v_naam)
|
||
|| '|'
|
||
|| TRIM (v_bedrijf)
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF header_is_valid = 0
|
||
THEN
|
||
IF UPPER (TRIM (v_reservering_id)) = 'RESERVERINGID'
|
||
AND UPPER (TRIM (v_afspraak_id)) = 'AFSPRAAKID'
|
||
AND UPPER (TRIM (v_locatiecode)) = 'LOCATIECODE'
|
||
--AND UPPER (TRIM (v_gebouwcode)) = 'GEBOUWCODE'
|
||
--AND UPPER (TRIM (v_verdiepingcode)) = 'VERDIEPINGCODE'
|
||
--AND UPPER (TRIM (v_ruimtenr)) = 'RUIMTENR'
|
||
AND UPPER (TRIM (v_datum)) = 'DATUM'
|
||
AND UPPER (TRIM (v_van)) = 'VAN'
|
||
AND UPPER (TRIM (v_tot)) = 'TOT'
|
||
AND UPPER (TRIM (v_contactpersoon)) = 'CONTACTPERSOON'
|
||
AND UPPER (TRIM (v_naam)) = 'NAAM'
|
||
AND UPPER (TRIM (v_bedrijf)) = 'BEDRIJF'
|
||
AND UPPER (TRIM (v_p)) = 'P'
|
||
AND UPPER (TRIM (v_actie)) = 'ACTIE'
|
||
AND UPPER (TRIM (v_telefoon)) = 'TELEFOON'
|
||
AND UPPER (TRIM (v_email)) = 'EMAIL'
|
||
AND UPPER (TRIM (v_kenteken)) = 'KENTEKEN'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'ReserveringId ongeldig; formaat niet <numeriek>/<numeriek>';
|
||
v_reservering_id := TRIM (v_reservering_id);
|
||
|
||
IF v_reservering_id IS NOT NULL
|
||
AND (fac.safe_to_number (SUBSTR (v_reservering_id, 1, INSTR (v_reservering_id, '/') - 1)) IS NULL
|
||
OR fac.safe_to_number (SUBSTR (v_reservering_id, INSTR (v_reservering_id, '/') + 1)) IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'AfspraakId ongeldig; formaat niet <numeriek>';
|
||
v_afspraak_id := TRIM (v_afspraak_id);
|
||
|
||
IF v_afspraak_id IS NOT NULL AND fac.safe_to_number (v_afspraak_id) IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatiecode ongeldig; ongedefinieerd of te lang';
|
||
v_locatiecode := TRIM (v_locatiecode);
|
||
|
||
IF COALESCE (v_reservering_id, v_afspraak_id) IS NULL
|
||
THEN
|
||
IF v_locatiecode IS NOT NULL AND LENGTH (v_locatiecode) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
ELSE
|
||
IF v_locatiecode IS NOT NULL
|
||
THEN
|
||
v_locatiecode := NULL;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Locatiecode wordt genegeerd!');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- TODO: Gebouwcode/Verdiepingcode/Ruimtenr!
|
||
|
||
-- TODO: Controle op binnen openingstijden?
|
||
v_errormsg := 'Datum/van ongeldig; ongedefinieerd';
|
||
v_datum := TRIM (v_datum);
|
||
v_van := TRIM (v_van);
|
||
v_van_d := fac.safe_to_date (v_datum || ' ' || SUBSTR ('0' || v_van, -5), 'dd-mm-yyyy hh24:mi');
|
||
|
||
IF COALESCE (v_reservering_id, v_afspraak_id) IS NULL
|
||
THEN
|
||
IF v_van_d IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
ELSE
|
||
IF v_datum IS NOT NULL OR v_van IS NOT NULL
|
||
THEN
|
||
v_van_d := NULL;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Datum/van wordt genegeerd!');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- TODO: Controle op binnen openingstijden?
|
||
v_errormsg := 'Datum/tot ongeldig; ongedefinieerd of voor van-tijdstip';
|
||
v_datum := TRIM (v_datum);
|
||
v_tot := TRIM (v_tot);
|
||
v_tot_d := fac.safe_to_date (v_datum || ' ' || SUBSTR ('0' || v_tot, -5), 'dd-mm-yyyy hh24:mi');
|
||
|
||
IF COALESCE (v_reservering_id, v_afspraak_id) IS NULL
|
||
THEN
|
||
IF v_tot_d IS NULL OR v_tot_d < v_van_d
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
END IF;
|
||
ELSE
|
||
IF v_datum IS NOT NULL OR v_tot IS NOT NULL
|
||
THEN
|
||
v_tot_d := NULL;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Datum/tot wordt genegeerd!');
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Contactpersoon ongeldig; ongedefinieerd of te lang';
|
||
v_contactpersoon := TRIM (v_contactpersoon);
|
||
|
||
IF COALESCE (v_reservering_id, v_afspraak_id) IS NULL
|
||
THEN
|
||
IF v_contactpersoon IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||
ELSIF LENGTH (v_contactpersoon) > 50
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Contactpersoon wordt afgekapt!');
|
||
END IF;
|
||
ELSE
|
||
IF v_contactpersoon IS NOT NULL
|
||
THEN
|
||
v_contactpersoon := NULL;
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Contactpersoon wordt genegeerd!');
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Naam ongeldig; ongedefinieerd of te lang';
|
||
v_naam := TRIM (v_naam);
|
||
|
||
IF v_naam IS NULL OR LENGTH (v_naam) > 30
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'Naam wordt afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Bedrijf ongeldig; ongedefinieerd of te lang';
|
||
v_bedrijf := TRIM (v_bedrijf);
|
||
|
||
IF v_bedrijf IS NULL OR LENGTH (v_bedrijf) > 60
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'Bedrijf wordt afgekapt!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'P ongeldig; formaat niet J(a) of N(ee)';
|
||
v_p := TRIM (v_p);
|
||
|
||
IF v_p IS NOT NULL AND NOT (UPPER (v_p) = 'J' OR UPPER (v_p) = 'N' OR UPPER (v_p) = 'JA' OR UPPER (v_p) = 'NEE')
|
||
THEN
|
||
--v_p := 'N';
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_p || ' Bezoeker krijgt geen parkeerplaats!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Actie ongeldig; formaat niet Ophalen of Doorlopen';
|
||
v_actie := TRIM (v_actie);
|
||
|
||
IF v_actie IS NOT NULL AND NOT (UPPER (v_actie) = 'OPHALEN' OR UPPER (v_actie) = 'DOORLOPEN')
|
||
THEN
|
||
--v_actie := 'Ophalen';
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, v_actie || ' Bezoeker wordt opgehaald!');
|
||
END IF;
|
||
|
||
-- TODO: Telefooon/Email/Kenteken!
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
|
||
INSERT INTO fmhn_imp_bez (reservering_id,
|
||
afspraak_key,
|
||
locatiecode,
|
||
datum,
|
||
van,
|
||
tot,
|
||
contactpersoon,
|
||
naam,
|
||
bedrijf,
|
||
parkeerplaats,
|
||
actie,
|
||
telefoon,
|
||
email,
|
||
kenteken)
|
||
VALUES (v_reservering_id,
|
||
fac.safe_to_number (v_afspraak_id),
|
||
v_locatiecode,
|
||
v_van_d,
|
||
v_van_d,
|
||
v_tot_d,
|
||
SUBSTR (v_contactpersoon, 1, 50),
|
||
SUBSTR (v_naam, 1, 30),
|
||
SUBSTR (v_bedrijf, 1, 60),
|
||
SUBSTR (v_p, 1, 1),
|
||
v_actie,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Bezoekers/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Bezoekers/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '');
|
||
END IF;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces bezoekers afgebroken!');
|
||
END fmhn_import_bez;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_update_bez (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_importeur_key NUMBER (10);
|
||
v_actie_key_def NUMBER (10);
|
||
v_actie_key_all NUMBER (10);
|
||
v_prev_rsv_ruimte_key NUMBER (10);
|
||
v_prev_afspraak_key NUMBER (10);
|
||
v_prev_locatie_key NUMBER (10);
|
||
v_prev_datum_van DATE;
|
||
v_prev_datum_tot DATE;
|
||
v_prev_contactpersoon VARCHAR2 (50);
|
||
v_cur_afspraak_key NUMBER (10);
|
||
v_cur_bezoekers_key NUMBER (10);
|
||
v_cur_deel_key NUMBER (10);
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_new NUMBER (10) := 0;
|
||
v_count NUMBER (10);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT i.reservering_id,
|
||
COALESCE (rrr.res_rsv_ruimte_key, -1) res_rsv_ruimte_key,
|
||
i.afspraak_key,
|
||
COALESCE (a.bez_afspraak_key, -1) bez_afspraak_key,
|
||
i.locatiecode,
|
||
COALESCE (rrr.alg_locatie_key, a.alg_locatie_key, l.alg_locatie_key, -1) alg_locatie_key,
|
||
COALESCE (rrr.res_rsv_ruimte_van, a.bez_afspraak_datum, i.van) van,
|
||
COALESCE (rrr.res_rsv_ruimte_tot, a.bez_afspraak_eind, i.tot) tot,
|
||
COALESCE (rph.prs_perslid_naam_friendly, aph.prs_perslid_naam_friendly, i.contactpersoon) contactpersoon,
|
||
i.bedrijf, i.naam, i.parkeerplaats, i.actie,
|
||
COALESCE (rrr.res_rsv_ruimte_host_key, a.bez_afspraak_host_key) host_key,
|
||
COALESCE (rrr.res_rsv_ruimte_contact_key, a.bez_afspraak_contact_key) contact_key
|
||
FROM (SELECT * FROM fmhn_imp_bez) i
|
||
LEFT JOIN (SELECT rrr.res_rsv_ruimte_key,
|
||
rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
rrr.res_rsv_ruimte_host_key,
|
||
rrr.res_rsv_ruimte_contact_key,
|
||
aog.alg_locatie_key
|
||
FROM res_v_aanwezigrsv_ruimte rrr,
|
||
res_ruimte_opstelling rro,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar1,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NOT NULL
|
||
GROUP BY res_ruimte_key) rar2,
|
||
alg_v_allonroerendgoed aog
|
||
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
||
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
|
||
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
|
||
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key) rrr
|
||
ON i.reservering_id = TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr)
|
||
LEFT JOIN prs_v_perslid_fullnames_all rph
|
||
ON rrr.res_rsv_ruimte_host_key = rph.prs_perslid_key
|
||
LEFT JOIN bez_afspraak a
|
||
ON i.afspraak_key = a.bez_afspraak_key
|
||
LEFT JOIN prs_v_perslid_fullnames_all aph
|
||
ON a.bez_afspraak_host_key = aph.prs_perslid_key
|
||
LEFT JOIN alg_v_aanweziglocatie l
|
||
ON UPPER (i.locatiecode) = UPPER (l.alg_locatie_code)
|
||
ORDER BY 1, 3, 5, 7, 8, 9, 10, 11;
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen importeur';
|
||
SELECT prs_perslid_key
|
||
INTO v_importeur_key
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
v_errormsg := 'Fout bepalen actie';
|
||
SELECT MAX (DECODE (bez_actie_default, 1, bez_actie_key, -1)),
|
||
MAX (DECODE (COALESCE (bez_actie_default, 0), 0, bez_actie_key, -1))
|
||
INTO v_actie_key_def,
|
||
v_actie_key_all
|
||
FROM bez_actie
|
||
WHERE bez_actie_verwijder IS NULL
|
||
AND bez_actie_flags = 0;
|
||
|
||
v_prev_rsv_ruimte_key := -1;
|
||
v_prev_afspraak_key := -1;
|
||
v_prev_locatie_key := -1;
|
||
v_prev_datum_van := TRUNC (SYSDATE);
|
||
v_prev_datum_tot := TRUNC (SYSDATE);
|
||
v_prev_contactpersoon := '';
|
||
v_cur_afspraak_key := -1;
|
||
v_cur_bezoekers_key := -1;
|
||
v_cur_deel_key := -1;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| TO_CHAR (rec.res_rsv_ruimte_key)
|
||
|| '|'
|
||
|| TO_CHAR (rec.bez_afspraak_key)
|
||
|| '|'
|
||
|| TO_CHAR (rec.alg_locatie_key)
|
||
|| '|'
|
||
|| TO_CHAR (rec.van, 'dd-mm-yyyy hh24:mi') || '-' || TO_CHAR (rec.tot, 'hh24:mi')
|
||
|| '|'
|
||
|| rec.contactpersoon
|
||
|| '|'
|
||
|| rec.bedrijf
|
||
|| '|'
|
||
|| rec.naam
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- TODO: Autorisaties strakker controleren?
|
||
v_errormsg := 'Fout bepalen autorisatie';
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM (SELECT *
|
||
FROM fac_gebruikersgroep gg
|
||
WHERE gg.prs_perslid_key = 10321 -- Simone=28142
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM fac_groeprechten
|
||
WHERE fac_functie_key = 15 -- BEZUSE
|
||
AND fac_groep_key = gg.fac_groep_key)
|
||
AND (gg.prs_perslid_key = COALESCE (rec.contact_key, v_importeur_key) -- Importeur = contact!
|
||
OR EXISTS -- Importeur zit in een VERVANGER-groep met contact voor betreffende afspraak!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep gg2, fac_groep g2
|
||
WHERE gg2.prs_perslid_key = rec.contact_key -- Saskia=10321
|
||
AND gg2.fac_groep_key = g2.fac_groep_key
|
||
AND g2.fac_groep_collega = 1
|
||
AND g2.fac_groep_key = gg.fac_groep_key))
|
||
UNION ALL
|
||
SELECT *
|
||
FROM fac_gebruikersgroep gg
|
||
WHERE gg.prs_perslid_key = v_importeur_key -- Simone=28142
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM fac_groeprechten
|
||
WHERE fac_functie_key = 321 -- BEZFOF
|
||
AND fac_gebruiker_prs_level_write < 9
|
||
AND fac_gebruiker_alg_level_write < 9
|
||
AND fac_groep_key = gg.fac_groep_key));
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Niet geautoriseerd om deze bezoeker aan te melden', '');
|
||
ELSIF rec.van < SYSDATE
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Bezoek aanmelden terug in de tijd niet toegestaan', '');
|
||
ELSIF rec.reservering_id IS NOT NULL AND rec.res_rsv_ruimte_key = -1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen bestaande reservering', '');
|
||
ELSIF rec.afspraak_key IS NOT NULL AND rec.bez_afspraak_key = -1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen bestaande afspraak', '');
|
||
ELSIF rec.locatiecode IS NOT NULL AND rec.alg_locatie_key = -1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Fout bepalen locatie nieuwe afspraak', '');
|
||
ELSIF v_prev_rsv_ruimte_key != rec.res_rsv_ruimte_key
|
||
OR v_prev_afspraak_key != rec.bez_afspraak_key
|
||
OR v_prev_locatie_key != rec.alg_locatie_key
|
||
OR v_prev_datum_van != rec.van
|
||
OR v_prev_datum_tot != rec.tot
|
||
OR UPPER (v_prev_contactpersoon) != UPPER (rec.contactpersoon)
|
||
THEN
|
||
v_errormsg := 'Fout bepalen bestaande/nieuwe afspraak';
|
||
IF rec.res_rsv_ruimte_key != -1 -- Bestaande reservering
|
||
THEN
|
||
v_prev_rsv_ruimte_key := rec.res_rsv_ruimte_key;
|
||
v_prev_afspraak_key := -1;
|
||
|
||
-- Bepalen bestaande/nieuwe afspraak bij bestaande reservering!
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM bez_afspraak
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- Toevoegen afspraak bij reservering!
|
||
v_errormsg := 'Fout toevoegen afspraak bij reservering';
|
||
INSERT INTO bez_afspraak (prs_perslid_key,
|
||
bez_afspraak_datum,
|
||
bez_actie_key,
|
||
bez_afspraak_ruimte,
|
||
bez_afspraak_opmerking,
|
||
bez_afspraak_eind,
|
||
bez_afspraak_gastheer,
|
||
bez_afspraak_telefoonnr,
|
||
alg_locatie_key,
|
||
res_rsv_ruimte_key,
|
||
alg_onrgoed_keys,
|
||
bez_afspraak_host_key,
|
||
bez_afspraak_contact_key)
|
||
VALUES (NULL,
|
||
rec.van,
|
||
COALESCE (v_actie_key_def, v_actie_key_all),
|
||
NULL,
|
||
NULL, -- Opmerking
|
||
rec.tot,
|
||
rec.contactpersoon,
|
||
NULL, -- Telefoon
|
||
rec.alg_locatie_key,
|
||
rec.res_rsv_ruimte_key,
|
||
NULL,
|
||
rec.host_key,
|
||
rec.contact_key)
|
||
RETURNING bez_afspraak_key
|
||
INTO v_cur_afspraak_key;
|
||
|
||
fac.trackaction ('BEZMUT', v_cur_afspraak_key, v_importeur_key, NULL, '');
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || 'Afspraak ' || TO_CHAR (v_cur_afspraak_key) || ' aangemaakt', '');
|
||
ELSE
|
||
SELECT bez_afspraak_key
|
||
INTO v_cur_afspraak_key
|
||
FROM bez_afspraak
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
END IF;
|
||
ELSIF rec.bez_afspraak_key != -1 -- Bestaande losse afspraak
|
||
THEN
|
||
v_prev_rsv_ruimte_key := -1;
|
||
v_prev_afspraak_key := rec.bez_afspraak_key;
|
||
|
||
v_cur_afspraak_key := rec.bez_afspraak_key;
|
||
ELSE -- Nieuwe losse afspraak
|
||
v_prev_rsv_ruimte_key := -1;
|
||
v_prev_afspraak_key := -1;
|
||
|
||
-- Toevoegen losse afspraak!
|
||
v_errormsg := 'Fout toevoegen losse afspraak';
|
||
INSERT INTO bez_afspraak (prs_perslid_key,
|
||
bez_afspraak_datum,
|
||
bez_actie_key,
|
||
bez_afspraak_ruimte,
|
||
bez_afspraak_opmerking,
|
||
bez_afspraak_eind,
|
||
bez_afspraak_gastheer,
|
||
bez_afspraak_telefoonnr,
|
||
alg_locatie_key,
|
||
res_rsv_ruimte_key,
|
||
alg_onrgoed_keys,
|
||
bez_afspraak_host_key,
|
||
bez_afspraak_contact_key)
|
||
VALUES (v_importeur_key,
|
||
rec.van,
|
||
COALESCE (v_actie_key_def, v_actie_key_all),
|
||
NULL,
|
||
NULL, -- Opmerking
|
||
rec.tot,
|
||
rec.contactpersoon, -- TODO: Bij huidige BEZ-settings genegeerd en geldt host=importeur!
|
||
NULL, -- Telefoon
|
||
rec.alg_locatie_key,
|
||
NULL,
|
||
NULL,
|
||
v_importeur_key,
|
||
v_importeur_key)
|
||
RETURNING bez_afspraak_key
|
||
INTO v_cur_afspraak_key;
|
||
|
||
fac.trackaction ('BEZMUT', v_cur_afspraak_key, v_importeur_key, NULL, '');
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding || 'Afspraak ' || TO_CHAR (v_cur_afspraak_key) || ' aangemaakt', '');
|
||
END IF;
|
||
|
||
v_prev_locatie_key := rec.alg_locatie_key;
|
||
v_prev_datum_van := rec.van;
|
||
v_prev_datum_tot := rec.tot;
|
||
v_prev_contactpersoon := rec.contactpersoon;
|
||
|
||
-- Verwijderen huidige bezoeker(s) inclusief kenmerken/parkeerplaatsen!
|
||
v_errormsg := 'Fout verwijderen bezoeker(s)';
|
||
DELETE FROM bez_kenmerkwaarde bk
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM bez_bezoekers
|
||
WHERE bez_afspraak_key = v_cur_afspraak_key
|
||
AND bez_bezoekers_key = bk.bez_bezoekers_key);
|
||
DELETE FROM res_rsv_deel rrd
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM bez_bezoekers
|
||
WHERE bez_afspraak_key = v_cur_afspraak_key
|
||
AND bez_bezoekers_key = rrd.bez_bezoekers_key);
|
||
DELETE FROM bez_bezoekers WHERE bez_afspraak_key = v_cur_afspraak_key;
|
||
|
||
SELECT MIN (rd.res_deel_key)
|
||
INTO v_cur_deel_key
|
||
FROM res_deel rd, ins_deel d
|
||
WHERE rd.res_deel_verwijder IS NULL
|
||
AND rd.res_discipline_key = 781 -- TODO: Minder hard-coded!
|
||
AND rd.res_ins_deel_key = d.ins_deel_key
|
||
AND d.ins_alg_locatie_key = rec.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_v_aanwezigrsv_deel
|
||
WHERE res_deel_key = rd.res_deel_key
|
||
AND res_rsv_deel_van <= rec.tot
|
||
AND res_rsv_deel_tot >= rec.van);
|
||
|
||
-- Toevoegen eerste bezoeker!
|
||
v_errormsg := 'Fout toevoegen eerste bezoeker';
|
||
INSERT INTO bez_bezoekers (bez_afspraak_key, bez_afspraak_naam, bez_afspraak_bedrijf, bez_afspraak_opmerking)
|
||
VALUES (v_cur_afspraak_key, rec.naam, rec.bedrijf, NULL)
|
||
RETURNING bez_bezoekers_key
|
||
INTO v_cur_bezoekers_key;
|
||
|
||
IF rec.parkeerplaats = 'J'
|
||
THEN
|
||
-- Toevoegen parkeerplaats!
|
||
v_errormsg := 'Fout bepalen eerste bezoeker-parkeerplaats';
|
||
SELECT MIN (rd.res_deel_key)
|
||
INTO v_cur_deel_key
|
||
FROM res_deel rd, ins_deel d
|
||
WHERE rd.res_deel_verwijder IS NULL
|
||
AND rd.res_discipline_key = 781 -- TODO: Minder hard-coded!
|
||
AND rd.res_ins_deel_key = d.ins_deel_key
|
||
AND d.ins_alg_locatie_key = rec.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_v_aanwezigrsv_deel
|
||
WHERE res_deel_key = rd.res_deel_key
|
||
AND res_rsv_deel_van <= rec.tot
|
||
AND res_rsv_deel_tot >= rec.van);
|
||
|
||
IF v_cur_deel_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen eerste bezoeker-parkeerplaats';
|
||
INSERT INTO res_rsv_deel (res_deel_key, res_rsv_deel_aantal, res_rsv_deel_van, res_rsv_deel_tot, res_status_bo_key, res_rsv_ruimte_key, bez_bezoekers_key, res_rsv_deel_dirtlevel)
|
||
VALUES (v_cur_deel_key, 1, rec.van, rec.tot, 2, DECODE (rec.res_rsv_ruimte_key, -1, NULL, rec.res_rsv_ruimte_key), v_cur_bezoekers_key, 0);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Geen parkeerplaats beschikbaar', '');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Toevoegen Ophalen/Doorlopen! TODO: Minder hard-coded!
|
||
v_errormsg := 'Fout toevoegen eerste bezoeker-actie';
|
||
INSERT INTO bez_kenmerkwaarde (bez_bezoekers_key, bez_kenmerk_key, bez_kenmerkwaarde_waarde)
|
||
VALUES (v_cur_bezoekers_key, 1160, DECODE (rec.actie, 'Doorlopen', '2002', '2001'));
|
||
|
||
fac.trackaction ('BEZUPD', v_cur_afspraak_key, v_importeur_key, NULL, 'Afspraak ' || TO_CHAR (v_cur_afspraak_key) || ' is gewijzigd' || CHR (13) || CHR (10) || 'Bezoekers via import toegevoegd/bijgewerkt');
|
||
-- TODO: Verwijderen (BEZUPD-tracking wordt standaard al getoond bij eventueel gekoppelde reservering)!
|
||
--IF rec.res_rsv_ruimte_key != -1
|
||
--THEN
|
||
-- fac.trackaction ('RESUPD', rec.res_rsv_ruimte_key, v_importeur_key, NULL, 'Afspraak ' || TO_CHAR (v_cur_afspraak_key) || ' is gewijzigd' || CHR (13) || CHR (10) || 'Bezoekers via import toegevoegd/bijgewerkt');
|
||
--END IF;
|
||
ELSE
|
||
-- Toevoegen volgende bezoeker!
|
||
v_errormsg := 'Fout toevoegen volgende bezoeker';
|
||
INSERT INTO bez_bezoekers (bez_afspraak_key, bez_afspraak_naam, bez_afspraak_bedrijf, bez_afspraak_opmerking)
|
||
VALUES (v_cur_afspraak_key, rec.naam, rec.bedrijf, NULL)
|
||
RETURNING bez_bezoekers_key
|
||
INTO v_cur_bezoekers_key;
|
||
|
||
-- Toevoegen parkeerplaats!
|
||
IF rec.parkeerplaats = 'J'
|
||
THEN
|
||
-- Toevoegen parkeerplaats!
|
||
v_errormsg := 'Fout bepalen eerste bezoeker-parkeerplaats';
|
||
SELECT MIN (rd.res_deel_key)
|
||
INTO v_cur_deel_key
|
||
FROM res_deel rd, ins_deel d
|
||
WHERE rd.res_deel_verwijder IS NULL
|
||
AND rd.res_discipline_key = 781 -- TODO: Minder hard-coded!
|
||
AND rd.res_ins_deel_key = d.ins_deel_key
|
||
AND d.ins_alg_locatie_key = rec.alg_locatie_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM res_v_aanwezigrsv_deel
|
||
WHERE res_deel_key = rd.res_deel_key
|
||
AND res_rsv_deel_van <= rec.tot
|
||
AND res_rsv_deel_tot >= rec.van);
|
||
|
||
IF v_cur_deel_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen eerste bezoeker-parkeerplaats';
|
||
INSERT INTO res_rsv_deel (res_deel_key, res_rsv_deel_aantal, res_rsv_deel_van, res_rsv_deel_tot, res_status_bo_key, res_rsv_ruimte_key, bez_bezoekers_key, res_rsv_deel_dirtlevel)
|
||
VALUES (v_cur_deel_key, 1, rec.van, rec.tot, 2, DECODE (rec.res_rsv_ruimte_key, -1, NULL, rec.res_rsv_ruimte_key), v_cur_bezoekers_key, 0);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Geen parkeerplaats beschikbaar', '');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Toevoegen Ophalen/Doorlopen! TODO: Minder hard-coded!
|
||
v_errormsg := 'Fout toevoegen volgende bezoeker-actie';
|
||
INSERT INTO bez_kenmerkwaarde (bez_bezoekers_key, bez_kenmerk_key, bez_kenmerkwaarde_waarde)
|
||
VALUES (v_cur_bezoekers_key, 1160, DECODE (rec.actie, 'Doorlopen', '2002', '2001'));
|
||
END IF;
|
||
|
||
v_count_new := v_count_new + 1;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Bezoekers/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Bezoekers/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces bezoekers afgebroken!');
|
||
END fmhn_update_bez;
|
||
/
|
||
*/
|
||
|
||
/* Formatted on 3-10-2021 15:33:48 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE VIEW FMHN_V_RAP_CATERING
|
||
(
|
||
HIDE_F_SRT,
|
||
NR,
|
||
FCLT_F_GEBOUW,
|
||
DATUM,
|
||
BEGINTIJD,
|
||
EINDTIJD,
|
||
RUIMTENUMMER,
|
||
FCLT_F_RUIMTE,
|
||
OPSTELLING,
|
||
AANTAL,
|
||
OMSCHRIJVING,
|
||
TIJDSTIP,
|
||
ARTIKEL,
|
||
TOELICHTING,
|
||
KEY
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| rg.alg_gebouw_upper
|
||
|| TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
|
||
hide_f_srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
|
||
rg.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
rr.res_rsv_ruimte_van datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
|
||
rui.alg_ruimte_nr ruimtenummer,
|
||
r.res_ruimte_nr fclt_f_ruimte,
|
||
o.res_opstelling_omschrijving opstelling,
|
||
rra.res_rsv_artikel_aantal aantal,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
rra.res_rsv_artikel_levering tijdstip,
|
||
ra.res_artikel_omschrijving artikel,
|
||
rka.res_kenmerkartikel_waarde toelichting,
|
||
rr.res_rsv_ruimte_key key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling o,
|
||
res_ruimte r,
|
||
res_alg_ruimte ar,
|
||
alg_v_ruimte_gegevens rg,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
res_kenmerkartikel rka,
|
||
alg_ruimte rui
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
|
||
AND o.res_opstelling_key = ro.res_opstelling_key
|
||
AND r.res_ruimte_key = ro.res_ruimte_key
|
||
AND ar.res_ruimte_key = r.res_ruimte_key
|
||
AND ar.alg_ruimte_key = rui.alg_ruimte_key
|
||
AND ar.res_alg_ruimte_verwijder IS NULL
|
||
AND rg.alg_ruimte_key = ar.alg_ruimte_key
|
||
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rra.RES_RSV_artikel_verwijder IS NULL
|
||
AND ra.res_artikel_key = rra.res_artikel_key
|
||
AND rra.res_rsv_ruimte_key IS NOT NULL
|
||
AND rra.res_rsv_artikel_key = rka.res_rsv_artikel_key
|
||
AND rka.res_kenmerk_key = 25
|
||
UNION ALL
|
||
SELECT DISTINCT
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| rg.alg_gebouw_upper
|
||
|| TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
|
||
hide_f_srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
|
||
rg.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
rr.res_rsv_ruimte_van datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
|
||
rui.alg_ruimte_nr ruimtenummer,
|
||
NULL fclt_f_ruimte,
|
||
NULL opstelling,
|
||
rra.res_rsv_artikel_aantal aantal,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
rra.res_rsv_artikel_levering tijdstip,
|
||
ra.res_artikel_omschrijving artikel,
|
||
rka.res_kenmerkartikel_waarde toelichting,
|
||
rr.res_rsv_ruimte_key key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte r,
|
||
alg_v_ruimte_gegevens rg,
|
||
res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
res_kenmerkartikel rka,
|
||
alg_ruimte rui
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rg.alg_ruimte_key = rr.alg_ruimte_key
|
||
AND rg.alg_ruimte_key = rui.alg_ruimte_key
|
||
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rra.RES_RSV_artikel_verwijder IS NULL
|
||
AND ra.res_artikel_key = rra.res_artikel_key
|
||
AND rra.res_rsv_ruimte_key IS NOT NULL
|
||
AND rra.res_rsv_artikel_key = rka.res_rsv_artikel_key
|
||
AND rka.res_kenmerk_key = 25;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_res_looplijst
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
voorzieningen,
|
||
catering,
|
||
beveiliging,
|
||
schoonmaak,
|
||
res_rsv_ruimte_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd') || rg.alg_gebouw_upper || TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
|
||
hide_f_srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
|
||
rg.alg_gebouw_omschrijving fclt_f_gebouw,
|
||
rr.res_rsv_ruimte_van datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
|
||
r.res_ruimte_nr fclt_f_ruimte,
|
||
o.res_opstelling_omschrijving opstelling,
|
||
rr.res_rsv_ruimte_bezoekers aantal,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
mld.aant meldingen,
|
||
--voorzieningen,
|
||
CASE
|
||
WHEN LENGTH (voorzieningen) > 75
|
||
THEN SUBSTR (voorzieningen, 1, 75) || ' ...'
|
||
ELSE voorzieningen
|
||
END
|
||
voorzieningen,
|
||
CASE
|
||
WHEN LENGTH (catering) > 75
|
||
THEN SUBSTR (catering, 1, 75) || ' ...'
|
||
ELSE catering
|
||
END
|
||
catering,
|
||
CASE
|
||
WHEN LENGTH (beveiliging) > 75
|
||
THEN SUBSTR (beveiliging, 1, 75) || ' ...'
|
||
ELSE beveiliging
|
||
END
|
||
beveiliging,
|
||
CASE
|
||
WHEN LENGTH (schoonmaak) > 75
|
||
THEN SUBSTR (schoonmaak, 1, 75) || ' ...'
|
||
ELSE schoonmaak
|
||
END
|
||
schoonmaak,
|
||
rr.res_rsv_ruimte_key
|
||
FROM res_rsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_opstelling o,
|
||
res_ruimte r,
|
||
res_alg_ruimte ar,
|
||
alg_v_ruimte_gegevens rg,
|
||
( SELECT res_rsv_ruimte_key,
|
||
'ja (' || COUNT (res_rsv_ruimte_key) || ')' aant
|
||
FROM mld_melding
|
||
WHERE res_rsv_ruimte_key IS NOT NULL
|
||
GROUP BY res_rsv_ruimte_key) mld,
|
||
( SELECT res_rsv_ruimte_key,
|
||
listagg (voorziening, ', ') WITHIN GROUP (ORDER BY voorziening)
|
||
AS voorzieningen
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_deel_omschrijving voorziening
|
||
FROM res_deel rd, res_rsv_deel rrd
|
||
WHERE res_rsv_deel_verwijder IS NULL
|
||
AND rd.res_deel_key = rrd.res_deel_key
|
||
AND res_rsv_ruimte_key IS NOT NULL)
|
||
GROUP BY res_rsv_ruimte_key) voorz,
|
||
( SELECT res_rsv_ruimte_key,
|
||
listagg (artikel, ', ') WITHIN GROUP (ORDER BY artikel)
|
||
AS catering
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_rsv_artikel_aantal || ' x ' || res_artikel_omschrijving
|
||
artikel
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key IS NOT NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key NOT IN (3590, 3591)) -- Reguliere catering
|
||
GROUP BY res_rsv_ruimte_key) cat,
|
||
( SELECT res_rsv_ruimte_key,
|
||
listagg (artikel, ', ') WITHIN GROUP (ORDER BY artikel desc)
|
||
AS beveiliging
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_rsv_artikel_aantal || ' x ' || res_artikel_omschrijving
|
||
artikel
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key IS NOT NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = 3590) -- Beveiliging
|
||
GROUP BY res_rsv_ruimte_key) beveiliging,
|
||
( SELECT res_rsv_ruimte_key,
|
||
listagg (artikel, ', ') WITHIN GROUP (ORDER BY artikel desc)
|
||
AS schoonmaak
|
||
FROM (SELECT res_rsv_ruimte_key,
|
||
res_rsv_artikel_aantal || ' x ' || res_artikel_omschrijving
|
||
artikel
|
||
FROM res_rsv_artikel rra, res_artikel ra
|
||
WHERE rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key IS NOT NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND ra.res_discipline_key = 3591) -- Schoonmaak
|
||
GROUP BY res_rsv_ruimte_key) schoonmaak
|
||
WHERE TRUNC (rr.res_rsv_ruimte_van) > TO_DATE ('01-07-2020', 'dd-mm-yyyy')
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_opstelling_key = o.res_opstelling_key
|
||
AND ro.res_ruimte_key = r.res_ruimte_key
|
||
AND r.res_ruimte_key = ar.res_ruimte_key
|
||
AND ar.res_alg_ruimte_verwijder IS NULL
|
||
AND ar.alg_ruimte_key = rg.alg_ruimte_key
|
||
AND rr.res_rsv_ruimte_key = mld.res_rsv_ruimte_key(+)
|
||
AND rr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
|
||
AND rr.res_rsv_ruimte_key = cat.res_rsv_ruimte_key(+)
|
||
AND rr.res_rsv_ruimte_key = beveiliging.res_rsv_ruimte_key(+)
|
||
AND rr.res_rsv_ruimte_key = schoonmaak.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_cateringtoday
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
voorzieningen,
|
||
catering,
|
||
res_rsv_ruimte_key,
|
||
afgeleverd
|
||
)
|
||
AS
|
||
SELECT dvr.hide_f_srt,
|
||
dvr.nr,
|
||
dvr.fclt_f_gebouw,
|
||
dvr.datum,
|
||
dvr.begintijd,
|
||
dvr.eindtijd,
|
||
dvr.fclt_f_ruimte,
|
||
dvr.opstelling,
|
||
dvr.aantal,
|
||
dvr.omschrijving,
|
||
dvr.meldingen,
|
||
dvr.voorzieningen,
|
||
dvr.catering,
|
||
dvr.res_rsv_ruimte_key,
|
||
DECODE (st.res_kenmerkreservering_waarde,
|
||
1, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
afgeleverd
|
||
FROM fmhn_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_v_aanwezigkenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 101) st
|
||
WHERE TRUNC (dvr.datum) = TRUNC (SYSDATE)
|
||
AND dvr.catering IS NOT NULL
|
||
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_kostencatbron
|
||
AS
|
||
SELECT ru.*,
|
||
NULL conversie_naam,
|
||
(SELECT res_artikel_btw
|
||
FROM res_artikel
|
||
WHERE res_artikel_key = ru.voorziening_product_key)
|
||
BTW
|
||
FROM res_v_udr_reserveringincl ru
|
||
WHERE ru.voorziening_product_key <> 501
|
||
AND ru.voorziening_type = 'consumable'
|
||
AND ru.voorziening_catalogus IS NOT NULL
|
||
UNION ALL
|
||
SELECT DISTINCT
|
||
ru.*,
|
||
sub.res_kenmerkartikel_waarde,
|
||
fac.safe_to_number(DECODE (
|
||
SUBSTR (sub.res_kenmerkartikel_waarde, -7, 1),
|
||
'1',
|
||
'21',
|
||
SUBSTR (sub.res_kenmerkartikel_waarde, -7, 1)))
|
||
BTW
|
||
FROM res_v_udr_reserveringincl ru,
|
||
(SELECT ra.res_rsv_ruimte_key,
|
||
ra.res_artikel_key,
|
||
ra.res_rsv_artikel_aantal,
|
||
ra.res_rsv_artikel_prijs,
|
||
TO_CHAR (ra.res_rsv_artikel_levering, 'HH:MI') van,
|
||
rk.res_kenmerkartikel_waarde
|
||
FROM res_kenmerkartikel rk, res_rsv_artikel ra
|
||
WHERE rk.res_rsv_artikel_key = ra.res_rsv_artikel_key
|
||
AND rk.res_kenmerk_key IN (25)) sub
|
||
WHERE ru.voorziening_type = 'consumable'
|
||
AND ru.voorziening_catalogus IS NOT NULL
|
||
AND sub.res_rsv_ruimte_key = ru.key
|
||
AND sub.res_artikel_key = ru.voorziening_product_key
|
||
AND sub.res_rsv_artikel_aantal = ru.voorziening_aantal
|
||
AND sub.res_rsv_artikel_prijs = ru.voorziening_totaalprijs
|
||
UNION ALL
|
||
SELECT DISTINCT
|
||
ru.*,
|
||
sub.res_kenmerkartikel_waarde,
|
||
sub.res_artikel_btw
|
||
BTW
|
||
FROM res_v_udr_reserveringincl ru,
|
||
(SELECT ra.res_rsv_ruimte_key,
|
||
ra.res_artikel_key,
|
||
ra.res_rsv_artikel_aantal,
|
||
ra.res_rsv_artikel_prijs,
|
||
r.res_artikel_btw,
|
||
TO_CHAR (ra.res_rsv_artikel_levering, 'HH:MI') van,
|
||
rk.res_kenmerkartikel_waarde
|
||
FROM res_kenmerkartikel rk, res_rsv_artikel ra, res_artikel r
|
||
WHERE rk.res_rsv_artikel_key = ra.res_rsv_artikel_key
|
||
AND ra.res_artikel_key = r.res_artikel_key
|
||
AND rk.res_kenmerk_key IN (121, 122, 123)) sub
|
||
WHERE ru.voorziening_type = 'consumable'
|
||
AND ru.voorziening_catalogus IS NOT NULL
|
||
AND sub.res_rsv_ruimte_key = ru.key
|
||
AND sub.res_artikel_key = ru.voorziening_product_key
|
||
AND sub.res_rsv_artikel_aantal = ru.voorziening_aantal
|
||
AND sub.res_rsv_artikel_prijs = ru.voorziening_totaalprijs;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_kostencatbron2
|
||
AS
|
||
SELECT c.*,
|
||
DECODE (c.voorziening_product,
|
||
'Artikel uit conversie', c.conversie_naam, 'Conversie 0 BTW', c.conversie_naam, 'Conversie 9 BTW', c.conversie_naam, 'Conversie 21 BTW', c.conversie_naam,
|
||
c.voorziening_product)
|
||
product,
|
||
CASE WHEN c.BTW = 0 THEN c.voorziening_totaalprijs END BTW_0,
|
||
CASE
|
||
WHEN c.BTW = 9
|
||
AND (c.voorziening_product NOT IN ('Artikel uit conversie', 'Conversie 0 BTW', 'Conversie 9 BTW', 'Conversie 21 BTW') OR c.fclt_3d_locatie_key IN (5, 3, 6))
|
||
THEN
|
||
c.voorziening_totaalprijs * 1.09
|
||
WHEN c.BTW = 9
|
||
AND c.voorziening_product IN ('Artikel uit conversie', 'Conversie 0 BTW', 'Conversie 9 BTW', 'Conversie 21 BTW')
|
||
AND c.fclt_3d_locatie_key NOT IN (5, 3, 6)
|
||
THEN
|
||
c.voorziening_totaalprijs
|
||
END
|
||
BTW_9,
|
||
CASE
|
||
WHEN c.BTW = 21
|
||
AND (c.voorziening_product NOT IN ('Artikel uit conversie', 'Conversie 0 BTW', 'Conversie 9 BTW', 'Conversie 21 BTW') OR c.fclt_3d_locatie_key IN (5, 3, 6))
|
||
THEN
|
||
c.voorziening_totaalprijs * 1.21
|
||
WHEN c.BTW = 21
|
||
AND c.voorziening_product IN ('Artikel uit conversie', 'Conversie 0 BTW', 'Conversie 9 BTW', 'Conversie 21 BTW')
|
||
AND c.fclt_3d_locatie_key NOT IN (5, 3, 6)
|
||
THEN
|
||
c.voorziening_totaalprijs
|
||
END
|
||
BTW_21
|
||
FROM fmhn_v_rap_kostencatbron c;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_kostencatering
|
||
AS
|
||
SELECT c.*, COALESCE (c.btw_0,
|
||
c.btw_9,
|
||
c.btw_21,
|
||
c.voorziening_totaalprijs)
|
||
totaal_incl
|
||
FROM fmhn_v_rap_kostencatbron2 c;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_res_middelen
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
--voorzieningen,
|
||
catering, -- Middelen
|
||
res_rsv_ruimte_key,
|
||
afgeleverd
|
||
)
|
||
AS
|
||
SELECT dvr.hide_f_srt,
|
||
dvr.nr,
|
||
dvr.fclt_f_gebouw,
|
||
dvr.datum,
|
||
dvr.begintijd,
|
||
dvr.eindtijd,
|
||
dvr.fclt_f_ruimte,
|
||
dvr.opstelling,
|
||
dvr.aantal,
|
||
dvr.omschrijving,
|
||
dvr.meldingen,
|
||
--dvr.voorzieningen,
|
||
dvr.voorzieningen catering,
|
||
dvr.res_rsv_ruimte_key,
|
||
DECODE (st.res_kenmerkreservering_waarde,
|
||
1, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
afgeleverd
|
||
FROM fmhn_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_v_aanwezigkenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 101) st -- Afgeleverd-vinkveld
|
||
WHERE TRUNC (dvr.datum) = TRUNC (SYSDATE)
|
||
AND dvr.voorzieningen IS NOT NULL
|
||
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_res_catering
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
--voorzieningen,
|
||
catering, -- Catering
|
||
res_rsv_ruimte_key,
|
||
afgeleverd
|
||
)
|
||
AS
|
||
SELECT dvr.hide_f_srt,
|
||
dvr.nr,
|
||
dvr.fclt_f_gebouw,
|
||
dvr.datum,
|
||
dvr.begintijd,
|
||
dvr.eindtijd,
|
||
dvr.fclt_f_ruimte,
|
||
dvr.opstelling,
|
||
dvr.aantal,
|
||
dvr.omschrijving,
|
||
dvr.meldingen,
|
||
--dvr.voorzieningen,
|
||
dvr.catering,
|
||
dvr.res_rsv_ruimte_key,
|
||
DECODE (st.res_kenmerkreservering_waarde,
|
||
1, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
afgeleverd
|
||
FROM fmhn_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_v_aanwezigkenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 101) st -- Afgeleverd-vinkveld
|
||
WHERE TRUNC (dvr.datum) = TRUNC (SYSDATE)
|
||
AND dvr.catering IS NOT NULL
|
||
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_res_beveiliging
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
--voorzieningen,
|
||
catering, -- Beveiliging
|
||
res_rsv_ruimte_key,
|
||
afgeleverd
|
||
)
|
||
AS
|
||
SELECT dvr.hide_f_srt,
|
||
dvr.nr,
|
||
dvr.fclt_f_gebouw,
|
||
dvr.datum,
|
||
dvr.begintijd,
|
||
dvr.eindtijd,
|
||
dvr.fclt_f_ruimte,
|
||
dvr.opstelling,
|
||
dvr.aantal,
|
||
dvr.omschrijving,
|
||
dvr.meldingen,
|
||
--dvr.voorzieningen,
|
||
dvr.beveiliging catering,
|
||
dvr.res_rsv_ruimte_key,
|
||
DECODE (st.res_kenmerkreservering_waarde,
|
||
1, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
afgeleverd
|
||
FROM fmhn_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_v_aanwezigkenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 101) st -- Afgeleverd-vinkveld
|
||
WHERE TRUNC (dvr.datum) = TRUNC (SYSDATE)
|
||
AND dvr.beveiliging IS NOT NULL
|
||
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_res_schoonmaak
|
||
(
|
||
hide_f_srt,
|
||
nr,
|
||
fclt_f_gebouw,
|
||
datum,
|
||
begintijd,
|
||
eindtijd,
|
||
fclt_f_ruimte,
|
||
opstelling,
|
||
aantal,
|
||
omschrijving,
|
||
meldingen,
|
||
--voorzieningen,
|
||
catering, -- Schoonmaak
|
||
res_rsv_ruimte_key,
|
||
afgeleverd
|
||
)
|
||
AS
|
||
SELECT dvr.hide_f_srt,
|
||
dvr.nr,
|
||
dvr.fclt_f_gebouw,
|
||
dvr.datum,
|
||
dvr.begintijd,
|
||
dvr.eindtijd,
|
||
dvr.fclt_f_ruimte,
|
||
dvr.opstelling,
|
||
dvr.aantal,
|
||
dvr.omschrijving,
|
||
dvr.meldingen,
|
||
--dvr.voorzieningen,
|
||
dvr.schoonmaak catering,
|
||
dvr.res_rsv_ruimte_key,
|
||
DECODE (st.res_kenmerkreservering_waarde,
|
||
1, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
afgeleverd
|
||
FROM fmhn_v_rap_res_looplijst dvr,
|
||
(SELECT rk.res_rsv_ruimte_key,
|
||
sk.res_srtkenmerk_omschrijving,
|
||
res_kenmerkreservering_waarde
|
||
FROM res_v_aanwezigkenmerkwaarde rk, res_kenmerk k, res_srtkenmerk sk
|
||
WHERE rk.res_kenmerk_key = k.res_kenmerk_key
|
||
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 101) st -- Afgeleverd-vinkveld
|
||
WHERE TRUNC (dvr.datum) = TRUNC (SYSDATE)
|
||
AND dvr.schoonmaak IS NOT NULL
|
||
AND dvr.res_rsv_ruimte_key = st.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_select_speednoti (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_curdatetime DATE := SYSDATE;
|
||
|
||
CURSOR c_resupdvico
|
||
IS
|
||
WITH lastchange AS (SELECT res_activiteit_verwijder datum FROM res_activiteit WHERE res_activiteit_key = 0) -- Overig/Bah!
|
||
SELECT DISTINCT
|
||
'[' || TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr) || '|' || cust01.fac_srtnotificatie_code || '] '
|
||
aanduiding,
|
||
rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_key,
|
||
'CUST01' noti,
|
||
REPLACE (
|
||
REPLACE (
|
||
lcl.x ('fac_srtnotificatie_oms', cust01.fac_srtnotificatie_key, cust01.fac_srtnotificatie_oms),
|
||
'##KEY##', TO_CHAR (rrr.res_reservering_key) || '/' || TO_CHAR (rrr.res_rsv_ruimte_volgnr)),
|
||
'##DESC##', rrr.res_rsv_ruimte_omschrijving)
|
||
subj,
|
||
SUBSTR (ba.prs_bedrijfadres_url, INSTR (ba.prs_bedrijfadres_url, 'mailto:') + 7) mailto
|
||
FROM fac_tracking t,
|
||
fac_srtnotificatie resupd,
|
||
lastchange,
|
||
res_rsv_ruimte rrr,
|
||
--res_ruimte_opstelling ro,
|
||
--res_ruimte rr,
|
||
--res_rsv_deel rrd,
|
||
--res_deel rd,
|
||
--res_discipline td,
|
||
res_disc_params dp,
|
||
prs_bedrijf b,
|
||
prs_bedrijfadres ba,
|
||
fac_srtnotificatie cust01
|
||
WHERE t.fac_srtnotificatie_key = 31 -- RESUPD
|
||
AND t.fac_srtnotificatie_key = resupd.fac_srtnotificatie_key
|
||
AND t.fac_tracking_datum > DECODE (SIGN ((lastchange.datum + 1) - SYSDATE), -1, TRUNC (SYSDATE, 'hh24'), lastchange.datum)
|
||
AND INSTR (UPPER (t.fac_tracking_oms), 'RESERVEERBAAR OBJECT') > 0
|
||
AND INSTR (UPPER (t.fac_tracking_oms), 'VICO') > 0
|
||
AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_rsv_ruimte_van > v_curdatetime -- Toekomstig
|
||
--AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key -- Alleen ruimtereserveringen
|
||
--AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
--AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
|
||
--AND COALESCE (rrd.res_rsv_deel_verwijder, rrd.res_rsv_deel_mutatie, rrd.res_rsv_deel_aanmaak) > DECODE (SIGN ((lastchange.datum + 1) - SYSDATE), -1, TRUNC (SYSDATE, 'hh24'), lastchange.datum)
|
||
--AND rrd.res_deel_key = rd.res_deel_key
|
||
--AND rd.res_discipline_key = td.ins_discipline_key
|
||
--AND td.ins_discipline_key = dp.res_ins_discipline_key
|
||
--AND rd.res_discipline_key = dp.res_ins_discipline_key
|
||
AND dp.res_ins_discipline_key = 3589 -- ViCo
|
||
AND dp.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = ba.prs_bedrijf_key
|
||
AND ba.prs_bedrijfadres_type = 'N'
|
||
AND cust01.fac_srtnotificatie_code = 'CUST01'
|
||
ORDER BY 2, 3, 4;
|
||
BEGIN
|
||
FOR rec IN c_resupdvico
|
||
LOOP
|
||
BEGIN
|
||
-- CUST01-notificatie naar BO ViCo (incl. RESINF-tracking)!
|
||
v_errormsg := 'Fout toevoegen CUST01-email';
|
||
fac.putnotificationsrtprio (NULL, -- pfrom
|
||
NULL, -- pto
|
||
rec.noti, -- pcode
|
||
rec.res_reservering_key, -- pref
|
||
rec.subj, -- poptmessage
|
||
NULL, -- poptstatus
|
||
rec.mailto, -- poptemail
|
||
NULL, -- poptmobile
|
||
rec.res_rsv_ruimte_key, -- pxref
|
||
NULL, -- pprio
|
||
NULL, -- psender
|
||
NULL -- pattach
|
||
);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', rec.aanduiding || v_errormsg, 'ResUpdViCo-loop');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_errormsg := 'Fout bijwerken lastchange'; -- Bah, heul smerig (bepaald via verwijderde activiteit)!
|
||
UPDATE res_activiteit
|
||
SET res_activiteit_verwijder = v_curdatetime
|
||
WHERE res_activiteit_key = 0;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (p_applname, 'E', 'Proces afgebroken!', v_errormsg);
|
||
END fmhn_select_speednoti;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_org (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_imp NUMBER (10) := 0;
|
||
v_count NUMBER (10);
|
||
-- De importvelden
|
||
v_mincode VARCHAR2 (255);
|
||
v_afdid VARCHAR2 (255);
|
||
v_afdcode VARCHAR2 (255);
|
||
v_afdoms VARCHAR2 (255);
|
||
v_afdidparent VARCHAR2 (255);
|
||
v_kpnr VARCHAR2 (255);
|
||
v_kpoms VARCHAR2 (255);
|
||
v_begindat VARCHAR2 (255);
|
||
v_einddat VARCHAR2 (255);
|
||
v_operator VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
--DELETE FROM fmhn_imp_org;
|
||
--COMMIT;
|
||
|
||
-- Het aangeleverde bestand heeft soms een komma als scheidingsteken. Deze
|
||
-- wordt hier maar even vervangen.
|
||
--UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = fmhn.change_delimitor (fac_imp_file_line, ',')
|
||
-- WHERE fac_import_key = p_import_key
|
||
-- AND EXISTS (SELECT 1 FROM fac_imp_file WHERE fac_import_key = p_import_key AND INSTR (UPPER (fac_imp_file_line), 'MINCODE,AFDID,AFDCODE,AFDOMS,AFDIDPARENT,KPNR,KPOMS,BEGINDAT,EINDDAT') > 0);
|
||
SELECT fac_imp_file_line
|
||
INTO v_newline
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index = 1;
|
||
|
||
IF INSTR (UPPER (v_newline), 'MINCODE,AFDID,AFDCODE,AFDOMS,AFDIDPARENT,KPNR,KPOMS,BEGINDAT,EINDDAT') > 0
|
||
THEN
|
||
c_delim := ',';
|
||
END IF;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
-- mincode;afdid;afdcode;afdoms;afdidparent;kpnr;kpoms;begindat;einddat
|
||
fac.imp_getfield (v_newline, c_delim, v_mincode);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdid);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdoms);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdidparent);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpoms);
|
||
fac.imp_getfield (v_newline, c_delim, v_begindat);
|
||
fac.imp_getfield (v_newline, c_delim, v_einddat);
|
||
fac.imp_getfield (v_newline, c_delim, v_operator);
|
||
|
||
v_aanduiding := '[' || v_mincode || '|' || v_afdid || '|' || v_afdcode || v_afdoms || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
||
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF v_mincode = 'mincode'
|
||
AND v_afdid = 'afdid'
|
||
AND v_afdcode = 'afdcode'
|
||
AND v_afdoms = 'afdoms'
|
||
AND v_afdidparent = 'afdidparent'
|
||
AND v_kpnr = 'kpnr'
|
||
AND v_kpoms = 'kpoms'
|
||
AND v_begindat = 'begindat'
|
||
AND v_einddat = 'einddat'
|
||
--AND v_operator = 'operator'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
||
THEN
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
|
||
INSERT INTO fmhn_imp_org (fac_import_key,
|
||
volgnr,
|
||
mincode,
|
||
afdid,
|
||
afdcode,
|
||
afdoms,
|
||
afdidparent,
|
||
kpnr,
|
||
kpoms,
|
||
begindat,
|
||
einddat,
|
||
operator)
|
||
VALUES (p_import_key,
|
||
v_count_tot,
|
||
SUBSTR (TRIM (v_mincode), 1, 10), -- C6
|
||
SUBSTR (TRIM (v_afdid), 1, 101), -- C100
|
||
SUBSTR (TRIM (v_afdcode), 1, 15), -- C15
|
||
SUBSTR (TRIM (v_afdoms), 1, 70), -- C60 vs. C70 in IDM
|
||
SUBSTR (TRIM (v_afdidparent), 1, 101), -- C100
|
||
SUBSTR (TRIM (v_kpnr), 1, 30), -- C20
|
||
SUBSTR (TRIM (v_kpoms), 1, 60), -- C60
|
||
--fac.safe_to_date (TRIM (v_begindat), 'yyyy-mm-dd'),
|
||
fac.safe_to_date (SUBSTR (TRIM (v_begindat), 1, 10), 'yyyy-mm-dd'),
|
||
--fac.safe_to_date (TRIM (v_einddat), 'yyyy-mm-dd'),
|
||
fac.safe_to_date (SUBSTR (TRIM (v_einddat), 1, 10), 'yyyy-mm-dd'),
|
||
SUBSTR (TRIM (v_operator), 1, 6));
|
||
|
||
v_count_imp := v_count_imp + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||
END;
|
||
|
||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Afdelingen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Afdelingen/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Afdelingen afgebroken!');
|
||
|
||
-- Maak importtabel leeg om import van foutieve bestanden te voorkomen!
|
||
--DELETE FROM fmhn_imp_org;
|
||
END;
|
||
/
|
||
/*
|
||
SELECT x1.prs_afdeling_naam oud, '#' || x1.prs_afdeling_naam nieuw
|
||
FROM fmhn_imp_org x1
|
||
WHERE x1.prs_bedrijf_naam IS NOT NULL AND x1.prs_afdeling_naam IS NOT NULL -- Geen lege/ongeldige regels
|
||
AND COALESCE (x1.einddatum, SYSDATE + 1) > TRUNC (SYSDATE)
|
||
AND UPPER (x1.prs_afdeling_naam_parent) = UPPER (x1.prs_afdeling_naam);
|
||
|
||
UPDATE fmhn_imp_org x1
|
||
SET x1.prs_afdeling_naam = '#' || x1.prs_afdeling_naam
|
||
WHERE x1.prs_bedrijf_naam IS NOT NULL AND x1.prs_afdeling_naam IS NOT NULL -- Geen lege/ongeldige regels
|
||
AND COALESCE (x1.einddatum, SYSDATE + 1) > TRUNC (SYSDATE)
|
||
AND UPPER (x1.prs_afdeling_naam_parent) = UPPER (x1.prs_afdeling_naam);
|
||
|
||
SELECT x1.prs_bedrijf_naam, x1.prs_afdeling_naam_parent, x1.prs_afdeling_naam
|
||
FROM fmhn_imp_org x1
|
||
WHERE x1.prs_bedrijf_naam IS NOT NULL AND x1.prs_afdeling_naam IS NOT NULL -- Geen lege/ongeldige regels
|
||
AND COALESCE (x1.einddatum, SYSDATE + 1) > TRUNC (SYSDATE)
|
||
AND EXISTS -- Dezelfde afdeling ook onder andere parent!
|
||
(SELECT 1
|
||
FROM fmhn_imp_org x2
|
||
WHERE x2.prs_bedrijf_naam IS NOT NULL AND x2.prs_afdeling_naam IS NOT NULL -- Geen lege/ongeldige regels
|
||
AND COALESCE (x2.einddatum, SYSDATE + 1) > TRUNC (SYSDATE)
|
||
AND x2.prs_afdeling_naam_parent != x1.prs_afdeling_naam_parent
|
||
AND x2.prs_afdeling_naam = x1.prs_afdeling_naam)
|
||
AND EXISTS -- Afdelingen onder dezelfde afdelingen onder andere parent!
|
||
(SELECT 1
|
||
FROM fmhn_imp_org x3
|
||
WHERE x3.prs_bedrijf_naam IS NOT NULL AND x3.prs_afdeling_naam IS NOT NULL -- Geen lege/ongeldige regels
|
||
AND COALESCE (x3.einddatum, SYSDATE + 1) > TRUNC (SYSDATE)
|
||
AND x3.prs_afdeling_naam_parent != x1.prs_afdeling_naam_parent
|
||
AND x3.prs_afdeling_naam_parent = x1.prs_afdeling_naam);
|
||
*/
|
||
CREATE OR REPLACE PROCEDURE fmhn_update_org (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_upd NUMBER (10) := 0;
|
||
v_count NUMBER;
|
||
l_impcountafd NUMBER;
|
||
v_mincode VARCHAR2 (6);
|
||
v_bedrijf_key prs_bedrijf.prs_bedrijf_key%TYPE;
|
||
v_minomschr_key fac_usrdata.fac_usrdata_key%TYPE;
|
||
v_minomschr fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
v_afdidroot prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
|
||
v_minafko VARCHAR2 (10);
|
||
l_oldcountafd NUMBER;
|
||
--l_oldcountkpn NUMBER;
|
||
v_rootvolgnr NUMBER;
|
||
v_afdid fmhn_imp_org.afdid%TYPE;
|
||
v_afdcode fmhn_imp_org.afdcode%TYPE;
|
||
v_afdoms fmhn_imp_org.afdoms%TYPE;
|
||
v_afdidparent fmhn_imp_org.afdidparent%TYPE;
|
||
v_begindat VARCHAR2 (10);
|
||
v_einddat VARCHAR2 (10);
|
||
l_cur_lev NUMBER;
|
||
lafdelingkey prs_afdeling.prs_afdeling_key%TYPE;
|
||
l_cur_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
||
l_cur_afdcode prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
|
||
l_new_lev NUMBER;
|
||
l_new_parentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
||
l_new_grandparentkey prs_afdeling.prs_afdeling_parentkey%TYPE;
|
||
l_afdpadparent prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
|
||
lkostenplaatskey prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
||
v_kpnr prs_kostenplaats.prs_kostenplaats_nr%TYPE;
|
||
v_kpoms prs_kostenplaats.prs_kostenplaats_omschrijving%TYPE;
|
||
l_vervcountafd NUMBER;
|
||
--l_vervcountkpn NUMBER;
|
||
l_newcountafd NUMBER;
|
||
--l_newcountkpn NUMBER;
|
||
|
||
-- Uitgangspunt is dat afbeelding in Facilitor stuctureel gelijk blijft aan
|
||
-- structuur zoals geimporteerd uit IDM.
|
||
-- Wel geldt dat er in Facilitor slechts 5 niveaus zijn (excl. bedrijf)
|
||
-- en in IDM meer. De "lagere" regionen worden daarom op niveau 5 gehangen
|
||
-- (onder niveau 4)!
|
||
CURSOR cafdboomdelta (p_volgnr NUMBER)
|
||
IS
|
||
-- SELECT volgnr, mincode, afdid, afdcode, afdoms, afdidparent, kpnr, kpoms, begindat, einddat, operator
|
||
-- FROM fmhn_imp_org
|
||
-- WHERE fac_import_key = p_import_key
|
||
--ORDER BY volgnr;
|
||
SELECT LEVEL imp_lev,
|
||
volgnr, mincode, afdid, afdcode, SUBSTR (afdoms, 1, 60) afdoms, afdidparent, kpnr, kpoms, begindat, einddat, operator
|
||
FROM (SELECT * FROM fmhn_imp_org WHERE fac_import_key = p_import_key)
|
||
CONNECT BY PRIOR afdid = afdidparent
|
||
START WITH volgnr = p_volgnr
|
||
ORDER BY LEVEL;
|
||
BEGIN
|
||
-- Hoeveel afdelingen ontvangen?
|
||
SELECT COUNT ( * )
|
||
INTO l_impcountafd
|
||
FROM fmhn_imp_org
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Randvoorwaarde dat alle afdelingen in importbestand dezelfde mincode!
|
||
v_errormsg := 'Fout (uniek) bepalen mincode';
|
||
SELECT DISTINCT mincode
|
||
INTO v_mincode
|
||
FROM fmhn_imp_org
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Randvoorwaarde dat <20><>n intern bedrijf bestaat met bepaalde mincode!
|
||
v_errormsg := 'Fout (uniek) bepalen bedrijf';
|
||
SELECT b.prs_bedrijf_key, ud.fac_usrdata_key, ud.fac_usrdata_omschr, afdid.prs_kenmerklink_waarde
|
||
INTO v_bedrijf_key, v_minomschr_key, v_minomschr, v_afdidroot
|
||
FROM prs_v_aanwezigbedrijf b,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1020) mincode, -- Ministeriecode (bij Bedrijf)
|
||
fac_v_aanwezigusrdata ud,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1021) afdid -- Organisatieonderdeelcode (bij Bedrijf)
|
||
WHERE b.prs_bedrijf_intern = 1
|
||
AND b.prs_bedrijf_key = mincode.prs_link_key
|
||
AND fac.safe_to_number (mincode.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrdata_upper = UPPER (v_mincode)
|
||
AND b.prs_bedrijf_key = afdid.prs_link_key(+);
|
||
v_minafko := TRIM (SUBSTR (v_minomschr, INSTR (v_minomschr, '-') + 1));
|
||
|
||
-- Hoeveel afdelingen actief voor ministerie in Facilitor?
|
||
SELECT COUNT ( * )
|
||
INTO l_oldcountafd
|
||
FROM prs_v_afdeling_boom ab, prs_afdeling afd
|
||
WHERE ab.prs_bedrijf_key = v_bedrijf_key
|
||
AND ab.prs_afdeling_key = afd.prs_afdeling_key
|
||
AND afd.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (COALESCE (afd.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
||
|
||
-- Hoeveel kostenplaatsen actief voor ministerie in Facilitor?
|
||
--SELECT COUNT ( * )
|
||
-- INTO l_oldcountkpn
|
||
-- FROM prs_v_aanwezigkostenplaats
|
||
-- WHERE prs_kostenplaats_module = 'PRS'
|
||
-- AND UPPER (prs_kostenplaats_nr) LIKE UPPER (v_minafko) || '%'
|
||
-- AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
||
/*
|
||
-- Controles op problemen in ontvangen bericht (igv. full-load).
|
||
SELECT afdid FROM fmhn_imp_org
|
||
MINUS
|
||
SELECT afdid
|
||
FROM fmhn_imp_org
|
||
CONNECT BY PRIOR afdid = afdidparent
|
||
START WITH afdidparent IS NULL;
|
||
|
||
-- Bijwerken dat het 'Organisatielevel (in IDM)'-kenmerk correct gevuld!
|
||
-- Check op verplichte velden bij INSERT: afdcode, afdoms!
|
||
*/
|
||
-- Voorkennis: CSV-import zou full-load moeten zijn met <20><>n afdeling zonder
|
||
-- parent. Bij >1 afdelingen zonder parent, pak laagste volgnr!
|
||
-- IDM-import zou een XML-bericht per afdeling moeten aanbieden
|
||
-- met volgnr=1 (in de juiste volgorde). Bij >1 afdelingen, dan
|
||
-- op volgnr verwerken!
|
||
|
||
-- Bepaal volgnr van root in ontvangen afdelingsboom.
|
||
v_errormsg := 'Fout (uniek) bepalen root';
|
||
SELECT COUNT ( * ), MIN (volgnr)
|
||
INTO v_count, v_rootvolgnr
|
||
FROM fmhn_imp_org
|
||
WHERE fac_import_key = p_import_key
|
||
AND afdidparent IS NULL;
|
||
|
||
IF l_impcountafd > 1 AND (v_count > 1 OR v_rootvolgnr IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Full-load ongeldig(/fout bepalen root)', 'Importproces Afdelingen afgebroken!');
|
||
RETURN;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen SEARCH-request';
|
||
SELECT COUNT ( * ), MAX (afdid)
|
||
INTO v_count, v_afdid
|
||
FROM fmhn_imp_org
|
||
WHERE fac_import_key = p_import_key
|
||
AND UPPER (operator) = 'SEARCH';
|
||
|
||
IF v_count > 0 -- SEARCH-request ontvangen?
|
||
THEN
|
||
IF l_impcountafd > 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldige operator voor >1 afdeling', 'Importproces Afdelingen afgebroken!');
|
||
ELSE
|
||
IF v_afdidroot = v_afdid -- Hoogste niveau=intern bedrijf!
|
||
THEN
|
||
v_afdcode := NULL; -- TODO?:Niet geregistreerd bij bedrijf!
|
||
v_afdoms := NULL; -- TODO?:Niet geregistreerd bij bedrijf!
|
||
v_afdidparent := NULL;
|
||
v_begindat := NULL; -- TODO?:Niet geregistreerd bij bedrijf!
|
||
v_einddat := NULL; -- TODO?:Niet geregistreerd bij bedrijf!
|
||
|
||
fac.imp_writelog (p_import_key, 'S', '#Afdelingen/SEARCH: 1 -> Succesvol: 1', '');
|
||
--fac.imp_writelog (p_import_key, 'X', '<mincode>' || xml.char_to_html (v_mincode) || '</mincode><afdid>' || xml.char_to_html (v_afdid) || '</afdid><afdcode>' || xml.char_to_html (v_afdcode) || '</afdcode><afdoms>' || xml.char_to_html (v_afdoms) || '</afdoms><afdidparent>' || xml.char_to_html (v_afdidparent) || '</afdidparent><begindat>' || xml.char_to_html (v_begindat) || '</begindat><einddat>' || xml.char_to_html (v_einddat) || '</einddat>', '');
|
||
fac.imp_writelog (p_import_key, 'X', xml.char_to_html (v_mincode) || '#;#' || xml.char_to_html (v_afdid) || '#;#' || xml.char_to_html (v_afdcode) || '#;#' || xml.char_to_html (v_afdoms) || '#;#' || xml.char_to_html (v_afdidparent) || '#;#' || xml.char_to_html (v_begindat) || '#;#' || xml.char_to_html (v_einddat), '');
|
||
ELSE
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen afdeling';
|
||
SELECT afdcode.prs_kenmerklink_waarde afdcode,
|
||
a.prs_afdeling_omschrijving afdoms,
|
||
--DECODE (a.prs_afdeling_parentkey, NULL, DECODE (v_afdid, v_afdidroot, NULL, v_afdidroot), SUBSTR (ap.prs_afdeling_externid, 3)) afdidparent, -- TODO:Als wij de root ook gaan registreren als afdeling-1 (dus naast intern bedrijf)!
|
||
DECODE (a.prs_afdeling_parentkey, NULL, v_afdidroot, SUBSTR (ap.prs_afdeling_externid, 3)) afdidparent,
|
||
SUBSTR (begindat.prs_kenmerklink_waarde, 7) || '-' || SUBSTR (begindat.prs_kenmerklink_waarde, 4, 2) || '-' || SUBSTR (begindat.prs_kenmerklink_waarde, 1, 2) begindat,
|
||
SUBSTR (einddat.prs_kenmerklink_waarde, 7) || '-' || SUBSTR (einddat.prs_kenmerklink_waarde, 4, 2) || '-' || SUBSTR (einddat.prs_kenmerklink_waarde, 1, 2) einddat
|
||
INTO v_afdcode,
|
||
v_afdoms,
|
||
v_afdidparent,
|
||
v_begindat,
|
||
v_einddat
|
||
FROM prs_afdeling a, -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
||
prs_afdeling ap,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1001) afdcode, -- Afdelingscode (was Identificatie afdeling)
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1005) begindat, -- Begindatum
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1006) einddat -- Einddatum
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a.prs_afdeling_externid) = UPPER (v_mincode || v_afdid)
|
||
AND a.prs_afdeling_parentkey = ap.prs_afdeling_key(+)
|
||
AND a.prs_afdeling_key = afdcode.prs_link_key(+)
|
||
AND a.prs_afdeling_key = begindat.prs_link_key(+)
|
||
AND a.prs_afdeling_key = einddat.prs_link_key(+);
|
||
|
||
fac.imp_writelog (p_import_key, 'S', '#Afdelingen/SEARCH: 1 -> Succesvol: 1', '');
|
||
--fac.imp_writelog (p_import_key, 'X', '<mincode>' || xml.char_to_html (v_mincode) || '</mincode><afdid>' || xml.char_to_html (v_afdid) || '</afdid><afdcode>' || xml.char_to_html (v_afdcode) || '</afdcode><afdoms>' || xml.char_to_html (v_afdoms) || '</afdoms><afdidparent>' || xml.char_to_html (v_afdidparent) || '</afdidparent><begindat>' || xml.char_to_html (v_begindat) || '</begindat><einddat>' || xml.char_to_html (v_einddat) || '</einddat>', '');
|
||
fac.imp_writelog (p_import_key, 'X', xml.char_to_html (v_mincode) || '#;#' || xml.char_to_html (v_afdid) || '#;#' || xml.char_to_html (v_afdcode) || '#;#' || xml.char_to_html (v_afdoms) || '#;#' || xml.char_to_html (v_afdidparent) || '#;#' || xml.char_to_html (v_begindat) || '#;#' || xml.char_to_html (v_einddat), '');
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'S', '#Afdelingen/SEARCH: 1 -> Succesvol: 0', '');
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
|
||
RETURN;
|
||
END IF;
|
||
|
||
FOR rc IN cafdboomdelta (COALESCE (v_rootvolgnr, 1))
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || TO_CHAR (rc.volgnr) || '|' || rc.mincode || '|' || rc.afdid || '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Is de ontvangen afdeling het hoogste niveau=interne bedrijf? Dit
|
||
-- is het geval als geldt: Geen parent ontvangen en INSERT!
|
||
-- Randvoorwaarde is dat in IDM op hoogste niveau maar <20><>n afdeling
|
||
-- bestaat! Zo niet, dan wint <20><>n tak van de boom!
|
||
IF rc.afdidparent IS NULL AND COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT'
|
||
THEN
|
||
--v_errormsg := 'Fout bijwerken bedrijfsnaam';
|
||
--UPDATE prs_bedrijf
|
||
-- SET prs_bedrijf_naam = SUBSTR (rc.afdoms, 1, 60)
|
||
-- WHERE prs_bedrijf_key = v_bedrijf_key;
|
||
|
||
IF v_afdidroot IS NULL -- Organisatieonderdeelcode nog niet gevuld (of gewijzigd)?
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken bedrijf';
|
||
prs.upsertkenmerk (1021, v_bedrijf_key, rc.afdid); -- Organisatieonderdeelcode
|
||
v_afdidroot := rc.afdid;
|
||
ELSIF v_afdidroot <> rc.afdid
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken bedrijf';
|
||
prs.upsertkenmerk (1021, v_bedrijf_key, rc.afdid); -- Organisatieonderdeelcode
|
||
v_afdidroot := rc.afdid;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Organisatieonderdeelcode van ministerie gewijzigd');
|
||
END IF;
|
||
END IF;
|
||
|
||
--fac.imp_writelog (p_import_key, 'S', TO_CHAR (v_count_tot), v_afdidroot || '/' || rc.afdid ); -- Logging!
|
||
IF v_afdidroot = rc.afdid -- Hoogste niveau=intern bedrijf!
|
||
THEN
|
||
v_errormsg := 'Doe verder niets (geen level, pad, etc.)';
|
||
ELSE
|
||
-- Vanaf hier hebben ontvangen afdelingen bij INSERT een parent.
|
||
-- Bestaat afdeling al en wat is dan huidige parent?
|
||
v_errormsg := 'Fout bepalen afdeling';
|
||
BEGIN
|
||
SELECT fac.safe_to_number (orglev.prs_kenmerklink_waarde),
|
||
a.prs_afdeling_key,
|
||
a.prs_afdeling_parentkey,
|
||
afdcode.prs_kenmerklink_waarde
|
||
INTO l_cur_lev,
|
||
lafdelingkey,
|
||
l_cur_parentkey,
|
||
l_cur_afdcode
|
||
FROM prs_afdeling a, -- LET OP: Niet prs_v_aanwezigafdeling (want soms "lager" dan 5)!
|
||
--prs_v_afdeling_boom ab,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1003) orglev, -- Organisatielevel (in IDM)
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1001) afdcode -- Afdelingscode (was Identificatie afdeling)
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a.prs_afdeling_externid) = UPPER (rc.mincode || rc.afdid)
|
||
--AND a.prs_afdeling_key = ab.prs_afdeling_key(+) -- LET OP: Kan tijdelijk uit beeld raken ("lager" dan 5)!
|
||
AND a.prs_afdeling_key = orglev.prs_link_key(+)
|
||
AND a.prs_afdeling_key = afdcode.prs_link_key(+);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
l_cur_lev := -1;
|
||
lafdelingkey := -1;
|
||
l_cur_parentkey := -1;
|
||
l_cur_afdcode := rc.afdcode; -- Verplicht bij INSERT!
|
||
END;
|
||
|
||
-- Bepaal parent en parent van (soms zelf verschoven) parent!
|
||
-- Parent verplicht vanaf level=2 bij CSV-import, INSERT en indien
|
||
-- ontvangen!
|
||
v_errormsg := 'Fout bepalen parent';
|
||
IF rc.afdidparent IS NULL -- Geen parent ontvangen!
|
||
THEN
|
||
-- Geen huidige parent?
|
||
IF l_cur_parentkey IS NULL
|
||
THEN -- UPDATE/DELETE van een Afdeling-1!
|
||
l_new_lev := 2;
|
||
l_new_parentkey := TO_NUMBER (NULL);
|
||
l_new_grandparentkey := TO_NUMBER (NULL);
|
||
l_afdpadparent := v_minafko; -- Root meenemen in pad!
|
||
ELSE -- UPDATE/DELETE van een Afdeling-2 of lager!
|
||
-- Bepaal gegevens van bestaande parent!
|
||
SELECT fac.safe_to_number (orglev.prs_kenmerklink_waarde) + 1,
|
||
a.prs_afdeling_key,
|
||
a.prs_afdeling_parentkey,
|
||
afdpad.prs_kenmerklink_waarde
|
||
INTO l_new_lev, -- = l_cur_lev
|
||
l_new_parentkey, -- = l_cur_parentkey
|
||
l_new_grandparentkey,
|
||
l_afdpadparent
|
||
FROM prs_afdeling a, -- LET OP: Of prs_v_aanwezigafdeling (parent nooit "lager" dan 5)!
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1003) orglev, -- Organisatielevel (in IDM)
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1004) afdpad -- Afdelingspad
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_key = l_cur_parentkey
|
||
AND a.prs_afdeling_key = orglev.prs_link_key(+)
|
||
AND a.prs_afdeling_key = afdpad.prs_link_key(+);
|
||
END IF;
|
||
ELSE -- Parent ontvangen!
|
||
-- Parent is root?
|
||
IF rc.afdidparent = v_afdidroot
|
||
THEN -- UPDATE/DELETE van een Afdeling-1!
|
||
l_new_lev := 2;
|
||
l_new_parentkey := TO_NUMBER (NULL);
|
||
l_new_grandparentkey := TO_NUMBER (NULL);
|
||
l_afdpadparent := v_minafko; -- Root meenemen in pad!
|
||
ELSE -- UPDATE/DELETE van een Afdeling-2 of lager!
|
||
-- Bepaal gegevens van ontvangen parent!
|
||
SELECT fac.safe_to_number (orglev.prs_kenmerklink_waarde) + 1,
|
||
a.prs_afdeling_key,
|
||
a.prs_afdeling_parentkey,
|
||
afdpad.prs_kenmerklink_waarde
|
||
INTO l_new_lev,
|
||
l_new_parentkey,
|
||
l_new_grandparentkey,
|
||
l_afdpadparent
|
||
FROM prs_afdeling a, -- LET OP: Of prs_v_aanwezigafdeling (parent nooit "lager" dan 5)!
|
||
--prs_v_afdeling_boom ab,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1003) orglev, -- Organisatielevel (in IDM)
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1004) afdpad -- Afdelingspad
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a.prs_afdeling_externid) = UPPER (rc.mincode || rc.afdidparent)
|
||
--AND a.prs_afdeling_key = ab.prs_afdeling_key -- LET OP: Parent kan nooit uit beeld raken ("lager" dan 5)!
|
||
AND a.prs_afdeling_key = orglev.prs_link_key(+)
|
||
AND a.prs_afdeling_key = afdpad.prs_link_key(+);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Bij mapping van IDM-afdelingen slaan we geen level over en geldt:
|
||
-- level=1 => Bedrijf
|
||
-- level=2 => Afdeling-1
|
||
-- level=3 => Afdeling-2
|
||
-- level=4 => Afdeling-3
|
||
-- level=5 => Afdeling-4
|
||
-- level=6 => Afdeling-5
|
||
-- :
|
||
-- level=n => Afdeling-5
|
||
-- Waarde in rc.afdid voor een (of enkele) ministeries >15 doordat
|
||
-- een prefix is toegevoegd en daarom prs_afdeling_naam gevuld met
|
||
-- laatste 15 posities!
|
||
IF lafdelingkey = -1 -- Nieuwe afdeling -> toevoegen!
|
||
THEN
|
||
v_errormsg := 'Ongeldige operator voor niet bestaande afdeling';
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen afdeling';
|
||
IF l_new_lev = 2 -- Ingelezen afdeling betreft Afdeling-1
|
||
THEN
|
||
INSERT INTO prs_afdeling (prs_bedrijf_key,
|
||
prs_afdeling_parentkey,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
--prs_kostenplaats_key,
|
||
prs_afdeling_externid)
|
||
VALUES (v_bedrijf_key,
|
||
NULL, -- l_new_parentkey = NULL
|
||
SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
rc.afdoms,
|
||
--lkostenplaatskey,
|
||
UPPER (rc.mincode || rc.afdid))
|
||
RETURNING prs_afdeling_key
|
||
INTO lafdelingkey;
|
||
ELSIF l_new_lev <= 6 -- Afdeling-2 t/m Afdeling-5
|
||
THEN
|
||
INSERT INTO prs_afdeling (prs_bedrijf_key,
|
||
prs_afdeling_parentkey,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
--prs_kostenplaats_key,
|
||
prs_afdeling_externid)
|
||
VALUES (NULL,
|
||
l_new_parentkey,
|
||
SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
rc.afdoms,
|
||
--lkostenplaatskey,
|
||
UPPER (rc.mincode || rc.afdid))
|
||
RETURNING prs_afdeling_key
|
||
INTO lafdelingkey;
|
||
ELSE -- Omhoog geschoven afdeling op niveau Afdeling-5
|
||
-- Doordat cursor van hoog naar laag door organisatie
|
||
-- loopt, komen afdelingen vanaf level>=7 keurig onder
|
||
-- gewenste Afdeling-4 te hangen.
|
||
INSERT INTO prs_afdeling (prs_bedrijf_key,
|
||
prs_afdeling_parentkey,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
--prs_kostenplaats_key,
|
||
prs_afdeling_externid)
|
||
VALUES (NULL,
|
||
l_new_grandparentkey,
|
||
SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
rc.afdoms,
|
||
--lkostenplaatskey,
|
||
UPPER (rc.mincode || rc.afdid))
|
||
RETURNING prs_afdeling_key
|
||
INTO lafdelingkey;
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling toegevoegd');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||
END IF;
|
||
ELSE -- Bestaande afdeling -> bijwerken (misschien)!
|
||
v_errormsg := 'Ongeldige operator voor bestaande afdeling';
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT' OR COALESCE (UPPER (rc.operator), 'UPDATE') = 'UPDATE'
|
||
THEN
|
||
-- Zonodig bijwerken omschrijving (kon eerder vervallen
|
||
-- zijn) en/of omhangen naar de juiste plek in de boom.
|
||
v_errormsg := 'Fout bijwerken afdeling';
|
||
IF l_new_lev = 2 -- Ingelezen afdeling betreft Afdeling-1
|
||
THEN
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = v_bedrijf_key,
|
||
prs_afdeling_parentkey = NULL,
|
||
prs_afdeling_naam = SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
prs_afdeling_omschrijving = COALESCE (rc.afdoms, prs_afdeling_omschrijving)
|
||
--prs_kostenplaats_key = COALESCE (lkostenplaatskey, prs_kostenplaats_key)
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
ELSIF l_new_lev <= 6 -- Afdeling-2 t/m Afdeling-5
|
||
THEN
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = NULL,
|
||
prs_afdeling_parentkey = l_new_parentkey,
|
||
prs_afdeling_naam = SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
prs_afdeling_omschrijving = COALESCE (rc.afdoms, prs_afdeling_omschrijving)
|
||
--prs_kostenplaats_key = COALESCE (lkostenplaatskey, prs_kostenplaats_key)
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
ELSE -- Omhoog geschoven afdeling op niveau Afdeling-5
|
||
-- Doordat cursor van hoog naar laag door organisatie
|
||
-- loopt, komen afdelingen vanaf level>=7 keurig onder
|
||
-- gewenste Afdeling-4 te hangen.
|
||
UPDATE prs_afdeling
|
||
SET prs_bedrijf_key = NULL,
|
||
prs_afdeling_parentkey = l_new_grandparentkey,
|
||
prs_afdeling_naam = SUBSTR (rc.afdid, GREATEST (-LENGTH (rc.afdid), -15)),
|
||
prs_afdeling_omschrijving = COALESCE (rc.afdoms, prs_afdeling_omschrijving)
|
||
--prs_kostenplaats_key = COALESCE (lkostenplaatskey, prs_kostenplaats_key)
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
END IF;
|
||
|
||
IF l_new_lev <> l_cur_lev
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Afdeling omgehangen naar level=' || TO_CHAR (l_new_lev));
|
||
END IF;
|
||
ELSIF UPPER (rc.operator) = 'DELETE'
|
||
THEN
|
||
-- Zet afdeling en eventueel kostenplaats op VERVALLEN; de rest handmatig verder maar regelen!
|
||
v_errormsg := 'Fout inactiveren afdeling';
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_afdeling_omschrijving, '-'), 1, 60)
|
||
WHERE prs_afdeling_key = lafdelingkey
|
||
AND UPPER (COALESCE (prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
||
|
||
v_errormsg := 'Fout inactiveren kostenplaats';
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey
|
||
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM prs_afdeling
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey
|
||
AND prs_afdeling_key <> lafdelingkey);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Kostenplaats-afhandeling bij INSERT of UPDATE!
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') <> 'DELETE'
|
||
THEN
|
||
-- Bepaal huidige kostenplaats van - hier bekende - afdeling!
|
||
v_errormsg := 'Fout bepalen kostenplaats (afdeling)';
|
||
SELECT prs_kostenplaats_key
|
||
INTO lkostenplaatskey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
|
||
-- Als eerder een kostenplaats standaard was aangemaakt en nu
|
||
-- wordt een kostenplaats ontvangen, dan standaard kostenplaats
|
||
-- niet bijwerken, maar nieuwe kostenplaats aanmaken/koppelen!
|
||
-- Het schonen van niet gebruikte standaard kostenplaatsen komt
|
||
-- later nog wel een keertje.
|
||
IF lkostenplaatskey IS NULL OR rc.kpnr IS NOT NULL -- Afdeling zonder kostenplaats of kpnnr ontvangen!
|
||
THEN
|
||
IF rc.kpnr IS NULL -- Bij INSERT beide niet ontvangen! Bij UPDATE anders omschrijving mogelijk op '-'!
|
||
THEN
|
||
v_kpnr := v_minafko || rc.afdid;
|
||
v_kpoms := SUBSTR (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode), GREATEST (-LENGTH (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode)), -60));
|
||
ELSE -- Bij INSERT beide ontvangen! Bij UPDATE anders omschrijving mogelijk op '-'!
|
||
v_kpnr := v_minafko || rc.kpnr;
|
||
v_kpoms := COALESCE (rc.kpoms, SUBSTR (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode), GREATEST (-LENGTH (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode)), -60)));
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bepalen kostenplaats (bestaand)';
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO lkostenplaatskey
|
||
FROM prs_v_aanwezigkostenplaats
|
||
WHERE prs_kostenplaats_upper = UPPER (v_kpnr);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
lkostenplaatskey := -1;
|
||
END;
|
||
|
||
IF lkostenplaatskey = -1 -- Kostenplaats bestaat niet!
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen kostenplaats';
|
||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module,
|
||
prs_kostenplaats_begin,
|
||
prs_kostenplaats_eind)
|
||
VALUES (v_kpnr,
|
||
SUBSTR (v_kpoms, 1, 60),
|
||
'PRS',
|
||
SYSDATE,
|
||
NULL)
|
||
RETURNING prs_kostenplaats_key
|
||
INTO lkostenplaatskey;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bijwerken kostenplaats (afdeling)';
|
||
UPDATE prs_afdeling
|
||
SET prs_kostenplaats_key = lkostenplaatskey
|
||
WHERE prs_afdeling_key = lafdelingkey;
|
||
ELSE -- Tja, afdeling met kostenplaats en geen kpnr ontvangen, dan mogelijk bijwerken omschrijving!
|
||
-- TODO (maar laat FMH daar eerst maar eens achter komen):
|
||
-- Eerst nog checken op dubbel gebruik van kostenplaatsen?
|
||
v_kpoms := COALESCE (rc.kpoms, SUBSTR (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode), GREATEST (-LENGTH (l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode)), -60)));
|
||
|
||
v_errormsg := 'Fout bijwerken kostenplaats (bestaand)';
|
||
UPDATE prs_kostenplaats
|
||
SET prs_kostenplaats_omschrijving = SUBSTR (v_kpoms, 1, 60)
|
||
WHERE prs_kostenplaats_key = lkostenplaatskey;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bijwerken mincode';
|
||
prs.upsertkenmerk (1000, lafdelingkey, TO_CHAR (v_minomschr_key)); -- Ministeriecode
|
||
IF rc.afdcode IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken afdcode';
|
||
prs.upsertkenmerk (1001, lafdelingkey, rc.afdcode); -- Afdelingscode (was Identificatie afdeling)
|
||
END IF;
|
||
IF rc.afdidparent IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken afdidparent';
|
||
prs.upsertkenmerk (1002, lafdelingkey, rc.afdidparent); -- Identificatie parentafd.
|
||
END IF;
|
||
IF l_new_lev <> l_cur_lev
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken orglevel';
|
||
prs.upsertkenmerk (1003, lafdelingkey, TO_CHAR (l_new_lev)); -- Organisatielevel (in IDM)
|
||
END IF;
|
||
-- TODO (maar laat FMH daar eerst maar eens achter komen):
|
||
-- Als parent wordt verschoven (omhoog of omlaag), dan blijven
|
||
-- code+parent ongewijzigd, maar zal level+pad wijzigen!
|
||
-- Zonder updates vanuit IDM voor de onderliggende afdelingen,
|
||
-- gebeurt niets in Facilitor en kloppen level+pad niet meer!
|
||
IF rc.afdcode IS NOT NULL OR rc.afdidparent IS NOT NULL OR l_new_lev <> l_cur_lev
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken afdpad';
|
||
prs.upsertkenmerk (1004, lafdelingkey, l_afdpadparent || '#' || COALESCE (rc.afdcode, l_cur_afdcode)); -- Afdelingspad
|
||
END IF;
|
||
IF rc.begindat IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken begindat';
|
||
prs.upsertkenmerk (1005, lafdelingkey, TO_CHAR (rc.begindat, 'dd-mm-yyyy')); -- Begindatum
|
||
END IF;
|
||
IF rc.einddat IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken einddat';
|
||
prs.upsertkenmerk (1006, lafdelingkey, TO_CHAR (rc.einddat, 'dd-mm-yyyy')); -- Einddatum
|
||
END IF;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
IF MOD (v_count_upd, 500) = 0 THEN COMMIT; END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Niet succesvol verwerkt');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', '#Afdelingen/Ontvangen: ' || TO_CHAR (v_count_tot) || ' -> Succesvol: ' || TO_CHAR (v_count_upd), '');
|
||
/*
|
||
-- Zet kostenplaatsen op VERVALLEN; de rest handmatig verder maar regelen!
|
||
v_errormsg := 'Fout inactiveren kostenplaatsen';
|
||
SELECT COUNT ( * )
|
||
INTO l_vervcountkpn
|
||
FROM prs_v_aanwezigkostenplaats kp
|
||
WHERE kp.prs_kostenplaats_module = 'PRS'
|
||
AND UPPER (COALESCE (kp.prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fmhn_imp_org
|
||
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper);
|
||
|
||
UPDATE prs_kostenplaats kp
|
||
SET kp.prs_kostenplaats_omschrijving = SUBSTR ('VERVALLEN:' || COALESCE (prs_kostenplaats_omschrijving, '-'), 1, 60)
|
||
WHERE kp.prs_kostenplaats_verwijder IS NULL
|
||
AND kp.prs_kostenplaats_module = 'PRS'
|
||
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fmhn_imp_org
|
||
WHERE UPPER (prs_kostenplaats_nr) = kp.prs_kostenplaats_upper);
|
||
*/
|
||
-- For summary only.
|
||
SELECT COUNT ( * )
|
||
INTO l_newcountafd
|
||
FROM prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab
|
||
WHERE UPPER (COALESCE (a.prs_afdeling_omschrijving, '-')) NOT LIKE 'VERVALLEN:%'
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = v_bedrijf_key;
|
||
/*
|
||
SELECT COUNT ( * )
|
||
INTO l_newcountkpn
|
||
FROM prs_v_aanwezigkostenplaats
|
||
WHERE prs_kostenplaats_module = 'PRS'
|
||
AND UPPER (COALESCE (prs_kostenplaats_omschrijving, '-')) NOT LIKE 'VERVALLEN:%';
|
||
*/
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal afdelingen in importbestand: ' || TO_CHAR (l_impcountafd), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal actieve afdelingen vooraf: ' || TO_CHAR (l_oldcountafd) || ' -> nu: ' || TO_CHAR (l_newcountafd), '');
|
||
/*
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal actieve kostenplaatsen vooraf: ' || TO_CHAR (l_oldcountkpn) || ' -> nu: ' || TO_CHAR (l_newcountkpn), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal kostenplaatsen vervallen: ' || TO_CHAR (l_vervcountkpn), '');
|
||
*/
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces Afdelingen afgebroken!');
|
||
END;
|
||
/
|
||
/*
|
||
SELECT afdid, LENGTH (afdid) FROM fmhn_imp_org;
|
||
|
||
SELECT afdcode, LENGTH (afdcode) FROM fmhn_imp_org;
|
||
|
||
SELECT afdid, COUNT ( * )
|
||
FROM fmhn_imp_org
|
||
GROUP BY afdid;
|
||
|
||
SELECT LEVEL imp_lev,
|
||
volgnr,
|
||
mincode,
|
||
afdid,
|
||
afdcode,
|
||
afdoms,
|
||
afdidparent,
|
||
kpnr,
|
||
kpoms,
|
||
begindat,
|
||
einddat
|
||
FROM fmhn_imp_org
|
||
--WHERE fac_import_key = p_import_key
|
||
CONNECT BY PRIOR afdid = afdidparent
|
||
START WITH afdidparent IS NULL -- TODO: Of '0'?
|
||
ORDER BY LEVEL;
|
||
*/
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_prs (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_imp NUMBER (10) := 0;
|
||
-- De importvelden
|
||
v_mincode VARCHAR2 (255);
|
||
v_prsnr VARCHAR2 (255);
|
||
v_afdid VARCHAR2 (255);
|
||
v_achternaam VARCHAR2 (255);
|
||
v_tussenvoegsel VARCHAR2 (255);
|
||
v_voorletters VARCHAR2 (255);
|
||
v_voornaam VARCHAR2 (255);
|
||
v_mv VARCHAR2 (255);
|
||
v_tel VARCHAR2 (255);
|
||
v_mob VARCHAR2 (255);
|
||
v_email VARCHAR2 (255);
|
||
v_begindat VARCHAR2 (255);
|
||
v_einddat VARCHAR2 (255);
|
||
v_stamgeb VARCHAR2 (255);
|
||
v_operator VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
--DELETE FROM fmhn_imp_prs;
|
||
--COMMIT;
|
||
|
||
-- Het aangeleverde bestand heeft soms een komma als scheidingsteken. Deze
|
||
-- wordt hier maar even vervangen.
|
||
--UPDATE fac_imp_file
|
||
-- SET fac_imp_file_line = fmhn.change_delimitor (fac_imp_file_line, ',')
|
||
-- WHERE fac_import_key = p_import_key
|
||
-- AND EXISTS (SELECT 1 FROM fac_imp_file WHERE fac_import_key = p_import_key AND INSTR (UPPER (fac_imp_file_line), 'MINCODE,PRSNR,AFDID,ACHTERNAAM,TUSSENVOEGSEL,VOORLETTERS,VOORNAAM,MV,TEL,MOB,EMAIL,BEGINDAT,EINDDAT,STAMGEB') > 0);
|
||
SELECT fac_imp_file_line
|
||
INTO v_newline
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key AND fac_imp_file_index = 1;
|
||
|
||
IF INSTR (UPPER (v_newline), 'MINCODE,PRSNR,AFDID,ACHTERNAAM,TUSSENVOEGSEL,VOORLETTERS,VOORNAAM,MV,TEL,MOB,EMAIL,BEGINDAT,EINDDAT,STAMGEB') > 0
|
||
THEN
|
||
c_delim := ',';
|
||
END IF;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
-- mincode;prsnr;afdid;achternaam;tussenvoegsel;voorletters;voornaam;mv;tel;mobiel;email;begindat;einddat;stamgeb
|
||
fac.imp_getfield (v_newline, c_delim, v_mincode);
|
||
fac.imp_getfield (v_newline, c_delim, v_prsnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdid);
|
||
fac.imp_getfield (v_newline, c_delim, v_achternaam);
|
||
fac.imp_getfield (v_newline, c_delim, v_tussenvoegsel);
|
||
fac.imp_getfield (v_newline, c_delim, v_voorletters);
|
||
fac.imp_getfield (v_newline, c_delim, v_voornaam);
|
||
fac.imp_getfield (v_newline, c_delim, v_mv);
|
||
fac.imp_getfield (v_newline, c_delim, v_tel);
|
||
fac.imp_getfield (v_newline, c_delim, v_mob);
|
||
fac.imp_getfield (v_newline, c_delim, v_email);
|
||
fac.imp_getfield (v_newline, c_delim, v_begindat);
|
||
fac.imp_getfield (v_newline, c_delim, v_einddat);
|
||
fac.imp_getfield (v_newline, c_delim, v_stamgeb);
|
||
fac.imp_getfield (v_newline, c_delim, v_operator);
|
||
|
||
v_aanduiding := '[' || v_mincode || '|' || v_prsnr || '|' || v_afdid || v_email || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
||
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF v_mincode = 'mincode'
|
||
AND v_prsnr = 'prsnr'
|
||
AND v_afdid = 'afdid'
|
||
AND v_achternaam = 'achternaam'
|
||
AND v_tussenvoegsel = 'tussenvoegsel'
|
||
AND v_voorletters = 'voorletters'
|
||
AND v_voornaam = 'voornaam'
|
||
AND v_mv = 'mv'
|
||
AND v_tel = 'tel'
|
||
AND v_mob = 'mob'
|
||
AND v_email = 'email'
|
||
AND v_begindat = 'begindat'
|
||
AND v_einddat = 'einddat'
|
||
AND v_stamgeb = 'stamgeb'
|
||
--AND v_operator = 'operator'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
||
THEN
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Strippen overbodige tekens uit vaste en mobiele nummers >15
|
||
-- posities!
|
||
IF LENGTH (v_tel) > 15
|
||
THEN
|
||
v_tel := REPLACE (REPLACE (v_tel, ' ', ''), '-', '');
|
||
END IF;
|
||
|
||
IF LENGTH (v_mob) > 15
|
||
THEN
|
||
v_mob := REPLACE (REPLACE (v_mob, ' ', ''), '-', '');
|
||
END IF;
|
||
|
||
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
INSERT INTO fmhn_imp_prs (fac_import_key,
|
||
volgnr,
|
||
mincode,
|
||
prsnr,
|
||
afdid,
|
||
achternaam,
|
||
tussenvoegsel,
|
||
voorletters,
|
||
voornaam,
|
||
mv,
|
||
tel,
|
||
mob,
|
||
email,
|
||
begindat,
|
||
einddat,
|
||
stamgeb,
|
||
operator)
|
||
VALUES (p_import_key,
|
||
v_count_imp,
|
||
SUBSTR (TRIM (v_mincode), 1, 10), -- C6
|
||
SUBSTR (TRIM (v_prsnr), 1, 20), -- C20
|
||
SUBSTR (TRIM (v_afdid), 1, 101), -- C100
|
||
SUBSTR (TRIM (v_achternaam), 1, 60), -- C60
|
||
SUBSTR (TRIM (v_tussenvoegsel), 1, 15), -- C15 (of '[wis]')
|
||
SUBSTR (TRIM (v_voorletters), 1, 15), -- C15
|
||
SUBSTR (TRIM (v_voornaam), 1, 30), -- C30
|
||
DECODE (v_mv, '[wis]', 'X', SUBSTR (TRIM (v_mv), 1, 1)), -- C1 (X, M, V of NULL)
|
||
SUBSTR (TRIM (v_tel), 1, 15), -- C15
|
||
SUBSTR (TRIM (v_mob), 1, 15), -- C15 (of '[wis]')
|
||
SUBSTR (TRIM (v_email), 1, 200), -- C200
|
||
fac.safe_to_date (TRIM (v_begindat), 'yyyy-mm-dd'),
|
||
fac.safe_to_date (TRIM (v_einddat), 'yyyy-mm-dd'),
|
||
SUBSTR (TRIM (v_stamgeb), 1, 30), -- C30
|
||
SUBSTR (TRIM (v_operator), 1, 6));
|
||
|
||
v_count_imp := v_count_imp + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||
END;
|
||
|
||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Personen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Personen/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Personen afgebroken!');
|
||
|
||
-- Maak importtabel leeg om import van foutieve bestanden te voorkomen!
|
||
--DELETE FROM fmhn_imp_prs;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_update_prs (p_import_key IN NUMBER)
|
||
AS
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
|
||
c_max_delta_percentage NUMBER (10) := 50; -- 50%!
|
||
c_functie VARCHAR2 (60) := 'Medewerker';
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
v_count_prs_import NUMBER (10); -- #actieve personen na import!
|
||
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_upd NUMBER (10) := 0;
|
||
v_count NUMBER;
|
||
v_mincode VARCHAR2 (6);
|
||
v_bedrijf_key prs_bedrijf.prs_bedrijf_key%TYPE;
|
||
v_minomschr_key fac_usrdata.fac_usrdata_key%TYPE;
|
||
v_minomschr fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
v_afdidroot prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
|
||
v_prsnr fmhn_imp_prs.prsnr%TYPE;
|
||
v_afdid fmhn_imp_prs.afdid%TYPE;
|
||
v_achternaam fmhn_imp_prs.achternaam%TYPE;
|
||
v_tussenvoegsel fmhn_imp_prs.tussenvoegsel%TYPE;
|
||
v_voorletters fmhn_imp_prs.voorletters%TYPE;
|
||
v_voornaam fmhn_imp_prs.voornaam%TYPE;
|
||
v_mv fmhn_imp_prs.mv%TYPE;
|
||
v_tel fmhn_imp_prs.tel%TYPE;
|
||
v_mob fmhn_imp_prs.mob%TYPE;
|
||
v_email fmhn_imp_prs.email%TYPE;
|
||
v_begindat VARCHAR2 (10);
|
||
v_einddat VARCHAR2 (10);
|
||
v_srtperslid_key prs_srtperslid.prs_srtperslid_key%TYPE;
|
||
v_afdeling_key prs_afdeling.prs_afdeling_key%TYPE;
|
||
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
|
||
|
||
CURSOR cprsdelta
|
||
IS
|
||
SELECT volgnr,
|
||
mincode,
|
||
prsnr,
|
||
afdid,
|
||
achternaam,
|
||
tussenvoegsel,
|
||
voorletters,
|
||
voornaam,
|
||
mv,
|
||
tel,
|
||
mob,
|
||
email,
|
||
begindat,
|
||
einddat,
|
||
stamgeb,
|
||
operator
|
||
FROM fmhn_imp_prs
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY volgnr;
|
||
BEGIN
|
||
-- Randvoorwaarde dat alle personen in importbestand dezelfde mincode!
|
||
v_errormsg := 'Fout (uniek) bepalen mincode';
|
||
SELECT DISTINCT mincode
|
||
INTO v_mincode
|
||
FROM fmhn_imp_prs
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Randvoorwaarde dat <20><>n intern bedrijf bestaat met bepaalde mincode!
|
||
v_errormsg := 'Fout (uniek) bepalen bedrijf';
|
||
SELECT b.prs_bedrijf_key, ud.fac_usrdata_key, ud.fac_usrdata_omschr, afdid.prs_kenmerklink_waarde
|
||
INTO v_bedrijf_key, v_minomschr_key, v_minomschr, v_afdidroot
|
||
FROM prs_v_aanwezigbedrijf b,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1020) mincode, -- Ministeriecode (bij Bedrijf)
|
||
fac_v_aanwezigusrdata ud,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1021) afdid -- Organisatieonderdeelcode (bij Bedrijf)
|
||
WHERE b.prs_bedrijf_intern = 1
|
||
AND b.prs_bedrijf_key = mincode.prs_link_key
|
||
AND fac.safe_to_number (mincode.prs_kenmerklink_waarde) = ud.fac_usrdata_key
|
||
AND ud.fac_usrdata_upper = UPPER (v_mincode)
|
||
AND b.prs_bedrijf_key = afdid.prs_link_key(+);
|
||
|
||
-- Bepaal distinct aantal personen in bestand voor mincode.
|
||
--SELECT COUNT (DISTINCT mincode || prsnr)
|
||
--SELECT COUNT (*)
|
||
SELECT COUNT (DISTINCT prsnr)
|
||
INTO v_count_prs_import
|
||
FROM fmhn_imp_prs
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Bepaal huidig aantal personen in Facilitor voor mincode.
|
||
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
|
||
INTO v_count_prs_actual
|
||
FROM prs_v_aanwezigperslid p, prs_v_afdeling_boom ab
|
||
WHERE p.prs_perslid_externid IS NOT NULL
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = v_bedrijf_key;
|
||
|
||
v_errormsg := 'Fout bepalen SEARCH-request';
|
||
SELECT COUNT ( * ), MAX (prsnr)
|
||
INTO v_count, v_prsnr
|
||
FROM fmhn_imp_prs
|
||
WHERE fac_import_key = p_import_key
|
||
AND UPPER (operator) = 'SEARCH';
|
||
|
||
IF v_count > 0 -- SEARCH-request ontvangen?
|
||
THEN
|
||
IF v_count_prs_import > 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldige operator voor >1 persoon', 'Importproces Personen afgebroken!');
|
||
ELSE
|
||
BEGIN
|
||
v_errormsg := 'Fout bepalen persoon';
|
||
SELECT SUBSTR (a.prs_afdeling_externid, 3) afdid,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_voornaam,
|
||
DECODE (p.prs_perslid_geslacht, 1, 'M', 0, 'V', ''),
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_email,
|
||
TO_CHAR (p.prs_perslid_ingangsdatum, 'yyyy-mm-dd'),
|
||
TO_CHAR (p.prs_perslid_einddatum, 'yyyy-mm-dd')
|
||
INTO v_afdid,
|
||
v_achternaam,
|
||
v_tussenvoegsel,
|
||
v_voorletters,
|
||
v_voornaam,
|
||
v_mv,
|
||
v_tel,
|
||
v_mob,
|
||
v_email,
|
||
v_begindat,
|
||
v_einddat
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a
|
||
WHERE UPPER (p.prs_perslid_externid) = UPPER (v_mincode || v_prsnr)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', '#Personen/SEARCH: 1 -> Succesvol: 1', '');
|
||
--fac.imp_writelog (p_import_key, 'X', '<mincode>' || xml.char_to_html (v_mincode) || '</mincode><prsnr>' || xml.char_to_html (v_prsnr) || '</prsnr><afdid>' || xml.char_to_html (v_afdid) || '</afdid><achternaam>' || xml.char_to_html (v_achternaam) || '</achternaam><tussenvoegsel>' || xml.char_to_html (v_tussenvoegsel) || '</tussenvoegsel><voorletters>' || xml.char_to_html (v_voorletters) || '</voorletters><voornaam>' || xml.char_to_html (v_voornaam) || '</voornaam><mv>' || xml.char_to_html (v_mv) || '</mv><tel>' || xml.char_to_html (v_tel) || '</tel><mob>' || xml.char_to_html (v_mob) || '</mob><email>' || xml.char_to_html (v_email) || '</email><begindat>' || xml.char_to_html (v_begindat) || '</begindat><einddat>' || xml.char_to_html (v_einddat) || '</einddat>', '');
|
||
fac.imp_writelog (p_import_key, 'X', xml.char_to_html (v_mincode) || '#;#' || xml.char_to_html (v_prsnr) || '#;#' || xml.char_to_html (v_afdid) || '#;#' || xml.char_to_html (v_achternaam) || '#;#' || xml.char_to_html (v_tussenvoegsel) || '#;#' || xml.char_to_html (v_voorletters) || '#;#' || xml.char_to_html (v_voornaam) || '#;#' || xml.char_to_html (v_mv) || '#;#' || xml.char_to_html (v_tel) || '#;#' || xml.char_to_html (v_mob) || '#;#' || xml.char_to_html (v_email) || '#;#' || xml.char_to_html (v_begindat) || '#;#' || xml.char_to_html (v_einddat), '');
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'S', '#Afdelingen/SEARCH: 1 -> Succesvol: 0', '');
|
||
END;
|
||
END IF;
|
||
|
||
RETURN;
|
||
END IF;
|
||
|
||
/* Alleen controleren bij verwijderen van personen!
|
||
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
'Verschil tussen te importeren en huidig aantal personen te groot!',
|
||
'- #personen/import = [' || TO_CHAR (v_count_prs_import) || ']'
|
||
|| CHR (13) || CHR (10)
|
||
|| '- #personen/huidig = [' || TO_CHAR (v_count_prs_actual) || ']');
|
||
RETURN;
|
||
END IF;
|
||
*/
|
||
FOR rc IN cprsdelta
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rc.mincode || '|' || rc.prsnr || '|' || rc.afdid || '|' || rc.email || '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Afdeling moet bestaan bij bulk-import en INSERT!
|
||
v_errormsg := 'Fout bepalen functie';
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT'
|
||
THEN
|
||
-- Bestaat functie?
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) = UPPER (c_functie);
|
||
ELSE
|
||
v_srtperslid_key := TO_NUMBER (NULL); -- Don't care!
|
||
END IF;
|
||
|
||
-- Afdeling moet bestaan bij bulk-import, INSERT en indien ontvangen!
|
||
v_errormsg := 'Fout bepalen afdeling';
|
||
IF COALESCE (rc.operator,'INSERT') = 'INSERT' OR rc.afdid IS NOT NULL
|
||
THEN
|
||
-- Bestaat afdeling?
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND UPPER (prs_afdeling_externid) = UPPER (rc.mincode || rc.afdid);
|
||
ELSE
|
||
v_afdeling_key := TO_NUMBER (NULL); -- Don't care!
|
||
END IF;
|
||
|
||
v_achternaam := SUBSTR (rc.achternaam, 1, 60);
|
||
IF LENGTH (rc.achternaam) > 60
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Achternaam afgebroken tot ' || v_achternaam, 'Achternaam te lang');
|
||
END IF;
|
||
|
||
-- Bestaat persoon?
|
||
v_errormsg := 'Fout bepalen persoon';
|
||
SELECT MAX (prs_perslid_key), COUNT ( * )
|
||
INTO v_perslid_key, v_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_externid) = UPPER (rc.mincode || rc.prsnr);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := 'Ongeldige operator voor niet bestaande persoon';
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen persoon';
|
||
INSERT INTO prs_perslid (prs_perslid_module,
|
||
prs_srtperslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
--prs_perslid_titel,
|
||
prs_perslid_geslacht,
|
||
--prs_perslid_nr,
|
||
--prs_perslid_oslogin,
|
||
--prs_perslid_apikey,
|
||
--prs_perslid_dienstverband,
|
||
prs_perslid_ingangsdatum,
|
||
prs_perslid_einddatum,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_perslid_externid)
|
||
VALUES ('PRS',
|
||
v_srtperslid_key,
|
||
v_afdeling_key,
|
||
v_achternaam,
|
||
rc.tussenvoegsel,
|
||
rc.voorletters,
|
||
rc.voornaam,
|
||
--rc.titel,
|
||
DECODE (UPPER (rc.mv), 'M', 1, 'V', 0, NULL),
|
||
--rc.prsnr,
|
||
--NULL,
|
||
--NULL,
|
||
--NULL,
|
||
COALESCE (rc.begindat, SYSDATE),
|
||
rc.einddat,
|
||
rc.tel,
|
||
rc.mob,
|
||
rc.email,
|
||
rc.mincode || rc.prsnr)
|
||
RETURNING prs_perslid_key
|
||
INTO v_perslid_key;
|
||
|
||
-- Alleen initieel vullen bij INSERT (daarna nooit meer)!
|
||
v_errormsg := 'Fout bijwerken mincode';
|
||
prs.upsertkenmerk (1008, v_perslid_key, TO_CHAR (v_minomschr_key)); -- Ministeriecode
|
||
|
||
v_errormsg := 'Fout bijwerken prsnr';
|
||
prs.upsertkenmerk (1009, v_perslid_key, rc.prsnr); -- Identificatie persoon
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Operator ongeldig');
|
||
v_perslid_key := -1;
|
||
END IF;
|
||
ELSIF v_count = 1
|
||
THEN
|
||
v_errormsg := 'Ongeldige operator voor bestaande persoon';
|
||
IF COALESCE (UPPER (rc.operator), 'INSERT') = 'INSERT'
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken persoon';
|
||
UPDATE prs_perslid
|
||
SET prs_afdeling_key = COALESCE (v_afdeling_key, prs_afdeling_key),
|
||
prs_perslid_naam = COALESCE (v_achternaam, prs_perslid_naam),
|
||
prs_perslid_tussenvoegsel = rc.tussenvoegsel,
|
||
prs_perslid_voorletters = rc.voorletters,
|
||
prs_perslid_voornaam = rc.voornaam,
|
||
prs_perslid_geslacht = DECODE (rc.mv, 'X', NULL, DECODE (UPPER (rc.mv), 'M', 1, 'V', 0, NULL)),
|
||
prs_perslid_ingangsdatum = COALESCE (rc.begindat, SYSDATE),
|
||
prs_perslid_einddatum = rc.einddat,
|
||
prs_perslid_telefoonnr = rc.tel,
|
||
prs_perslid_mobiel = rc.mob,
|
||
prs_perslid_email = rc.email
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
-- Alleen bij nieuwe persoon of ook bij bestaande persoon?
|
||
v_errormsg := 'Fout bijwerken mincode';
|
||
prs.upsertkenmerk (1008, v_perslid_key, TO_CHAR (v_minomschr_key)); -- Ministeriecode
|
||
|
||
v_errormsg := 'Fout bijwerken prsnr';
|
||
prs.upsertkenmerk (1009, v_perslid_key, rc.prsnr); -- Identificatie persoon
|
||
ELSIF COALESCE (UPPER (rc.operator), 'UPDATE') = 'UPDATE'
|
||
THEN
|
||
v_errormsg := 'Fout bijwerken persoon';
|
||
UPDATE prs_perslid
|
||
SET prs_afdeling_key = COALESCE (v_afdeling_key, prs_afdeling_key),
|
||
prs_perslid_naam = COALESCE (v_achternaam, prs_perslid_naam),
|
||
prs_perslid_tussenvoegsel = DECODE (rc.tussenvoegsel, '[wis]', NULL, COALESCE (rc.tussenvoegsel, prs_perslid_tussenvoegsel)),
|
||
prs_perslid_voorletters = COALESCE (rc.voorletters, prs_perslid_voorletters),
|
||
prs_perslid_voornaam = COALESCE (rc.voornaam, prs_perslid_voornaam),
|
||
prs_perslid_geslacht = DECODE (rc.mv, 'X', NULL, DECODE (UPPER (rc.mv), 'M', 1, 'V', 0, prs_perslid_geslacht)),
|
||
prs_perslid_ingangsdatum = COALESCE (rc.begindat, prs_perslid_ingangsdatum),
|
||
prs_perslid_einddatum = COALESCE (rc.einddat, prs_perslid_einddatum),
|
||
prs_perslid_telefoonnr = COALESCE (rc.tel, prs_perslid_telefoonnr),
|
||
prs_perslid_mobiel = DECODE (rc.mob, '[wis]', NULL, COALESCE (rc.mob, prs_perslid_mobiel)),
|
||
prs_perslid_email = COALESCE (rc.email, prs_perslid_email)
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
-- Alleen bij nieuwe persoon of ook bij bestaande persoon?
|
||
v_errormsg := 'Fout bijwerken mincode';
|
||
prs.upsertkenmerk (1008, v_perslid_key, TO_CHAR (v_minomschr_key)); -- Ministeriecode
|
||
|
||
v_errormsg := 'Fout bijwerken prsnr';
|
||
prs.upsertkenmerk (1009, v_perslid_key, rc.prsnr); -- Identificatie persoon
|
||
ELSIF UPPER (rc.operator) = 'DELETE'
|
||
THEN
|
||
v_errormsg := 'Fout verwijderen persoon';
|
||
prs.delete_perslid (p_import_key, v_perslid_key);
|
||
v_perslid_key := -1;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Operator ongeldig');
|
||
v_perslid_key := -1;
|
||
END IF;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Personeelsnummer niet uniek');
|
||
v_perslid_key := -1;
|
||
END IF;
|
||
|
||
IF v_perslid_key > 0
|
||
THEN
|
||
IF rc.stamgeb IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bepalen huidige ruimte in gebouw';
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_perslidwerkplek pw, prs_werkplek w, alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE pw.prs_perslid_key = v_perslid_key
|
||
AND pw.prs_werkplek_key = w.prs_werkplek_key
|
||
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND UPPER (g.alg_gebouw_code) = UPPER (rc.stamgeb);
|
||
|
||
-- Als persoon in gebouw reeds een werkplek heeft en de nieuwe zou
|
||
-- in de default ruimte zijn, dan wordt onderstaande overgeslagen.
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := 'Fout bepalen default ruimte of gebouw';
|
||
SELECT r1.alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_v_aanweziggebouw g1, alg_verdieping v1, alg_v_aanwezigruimte r1
|
||
WHERE UPPER (g1.alg_gebouw_code) = UPPER (rc.stamgeb)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (rc.stamgeb)
|
||
AND alg_locatie_key < g1.alg_locatie_key)
|
||
AND g1.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v1.alg_verdieping_key = r1.alg_verdieping_key
|
||
AND r1.alg_ruimte_nr = '_'
|
||
AND NOT EXISTS -- Geen ruimte '_' op lagere verdieping!
|
||
(SELECT 1
|
||
FROM alg_verdieping v2, alg_v_aanwezigruimte r2
|
||
WHERE v2.alg_verdieping_key = r2.alg_verdieping_key
|
||
AND r2.alg_ruimte_nr = '_'
|
||
AND v2.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v2.alg_verdieping_volgnr < v1.alg_verdieping_volgnr);
|
||
|
||
v_errormsg := 'Fout bijwerken ruimte';
|
||
prs.movetoruimte (v_perslid_key, v_ruimte_key, NULL);
|
||
END IF;
|
||
END IF;
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Niet succesvol verwerkt');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', '#Personen/Ontvangen: ' || TO_CHAR (v_count_tot) || ' -> Succesvol: ' || TO_CHAR (v_count_upd), '');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces Personen afgebroken!');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_rel (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_imp NUMBER (10) := 0;
|
||
-- De importvelden
|
||
v_levnr VARCHAR2 (255);
|
||
v_bedrnaam VARCHAR2 (255);
|
||
v_postadres VARCHAR2 (255);
|
||
v_ppostcode VARCHAR2 (255);
|
||
v_pplaats VARCHAR2 (255);
|
||
v_pland VARCHAR2 (255);
|
||
v_bezoekadres VARCHAR2 (255);
|
||
v_bpostcode VARCHAR2 (255);
|
||
v_bplaats VARCHAR2 (255);
|
||
v_bland VARCHAR2 (255);
|
||
v_status VARCHAR2 (255);
|
||
v_classificatie VARCHAR2 (255);
|
||
v_sector VARCHAR2 (255);
|
||
v_subsector VARCHAR2 (255);
|
||
v_telefoon VARCHAR2 (255);
|
||
v_email VARCHAR2 (255);
|
||
v_contractant VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fac_imp_ext_bedrijf;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
--Leveranciernr;Bedrijfsnaam;Postadres;PPostcode;PPlaats;PLand;BezoekAdres;BPostcode;BPlaats;BLand;Status;Classificatie;Sector;SubSector;Telefoon;Email;Contractant
|
||
fac.imp_getfield (v_newline, c_delim, v_levnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrnaam);
|
||
fac.imp_getfield (v_newline, c_delim, v_postadres);
|
||
fac.imp_getfield (v_newline, c_delim, v_ppostcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_pplaats);
|
||
fac.imp_getfield (v_newline, c_delim, v_pland);
|
||
fac.imp_getfield (v_newline, c_delim, v_bezoekadres);
|
||
fac.imp_getfield (v_newline, c_delim, v_bpostcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_bplaats);
|
||
fac.imp_getfield (v_newline, c_delim, v_bland);
|
||
fac.imp_getfield (v_newline, c_delim, v_status);
|
||
fac.imp_getfield (v_newline, c_delim, v_classificatie);
|
||
fac.imp_getfield (v_newline, c_delim, v_sector);
|
||
fac.imp_getfield (v_newline, c_delim, v_subsector);
|
||
fac.imp_getfield (v_newline, c_delim, v_telefoon);
|
||
fac.imp_getfield (v_newline, c_delim, v_email);
|
||
fac.imp_getfield (v_newline, c_delim, v_contractant);
|
||
|
||
v_aanduiding := '[' || v_levnr || '|' || v_bedrnaam || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
||
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_levnr) = 'LEVERANCIERNR'
|
||
AND UPPER (v_bedrnaam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_postadres) = 'POSTADRES'
|
||
AND UPPER (v_ppostcode) = 'PPOSTCODE'
|
||
AND UPPER (v_pplaats) = 'PPLAATS'
|
||
AND UPPER (v_pland) = 'PLAND'
|
||
AND UPPER (v_bezoekadres) = 'BEZOEKADRES'
|
||
AND UPPER (v_bpostcode) = 'BPOSTCODE'
|
||
AND UPPER (v_bplaats) = 'BPLAATS'
|
||
AND UPPER (v_bland) = 'BLAND'
|
||
AND UPPER (v_status) = 'STATUS'
|
||
AND UPPER (v_classificatie) = 'CLASSIFICATIE'
|
||
AND UPPER (v_sector) = 'SECTOR'
|
||
AND UPPER (v_subsector) = 'SUBSECTOR'
|
||
AND UPPER (v_telefoon) = 'TELEFOON'
|
||
AND UPPER (v_email) = 'EMAIL'
|
||
AND UPPER (v_contractant) = 'CONTRACTANT'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
||
THEN
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
INSERT INTO fac_imp_ext_bedrijf (prs_leverancier_nr,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_bezoek_adres,
|
||
prs_bedrijf_bezoek_postcode,
|
||
prs_bedrijf_bezoek_plaats,
|
||
prs_bedrijf_bezoek_land,
|
||
prs_bedrijf_post_adres,
|
||
prs_bedrijf_post_postcode,
|
||
prs_bedrijf_post_plaats,
|
||
prs_bedrijf_post_land,
|
||
prs_bedrijf_contract,
|
||
prs_bedrijf_telefoon,
|
||
prs_bedrijf_email,
|
||
prs_dienst_omschrijving, -- Status
|
||
prs_bedrijf_overig1,
|
||
prs_bedrijf_overig2,
|
||
prs_bedrijf_overig3)
|
||
VALUES (TRIM (v_levnr),
|
||
SUBSTR (TRIM (v_bedrnaam), 1, 60),
|
||
SUBSTR (TRIM (v_bezoekadres), 1, 50),
|
||
SUBSTR (TRIM (v_bpostcode), 1, 12),
|
||
SUBSTR (TRIM (v_bplaats), 1, 30),
|
||
SUBSTR (TRIM (v_bland), 1, 30),
|
||
SUBSTR (TRIM (v_postadres), 1, 50),
|
||
SUBSTR (TRIM (v_ppostcode), 1, 12),
|
||
SUBSTR (TRIM (v_pplaats), 1, 30),
|
||
SUBSTR (TRIM (v_pland), 1, 30),
|
||
--DECODE (SUBSTR (UPPER (COALESCE (TRIM (v_contractant), 'N')), 1, 1), 'N', 0, 'J', 1, 9), -- 9=Error!
|
||
DECODE (SUBSTR (UPPER (COALESCE (TRIM (v_contractant), '0')), 1, 1), '0', 0, '1', 1, 9), -- 9=Error!
|
||
SUBSTR (TRIM (v_telefoon), 1, 20),
|
||
SUBSTR (TRIM (v_email), 1, 100),
|
||
SUBSTR (TRIM (v_status), 1, 60),
|
||
TRIM (v_classificatie),
|
||
TRIM (v_sector),
|
||
TRIM (v_subsector));
|
||
|
||
v_count_imp := v_count_imp + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Relaties afgebroken!');
|
||
END fmhn_import_rel;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_update_rel (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_new NUMBER (10) := 0;
|
||
v_count_upd NUMBER (10) := 0;
|
||
v_count_del NUMBER (10) := 0;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT ib.*, ud.fac_usrdata_key
|
||
FROM fac_imp_ext_bedrijf ib,
|
||
(SELECT * FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 3) ud -- Lifecycle REL
|
||
WHERE UPPER (ib.prs_dienst_omschrijving) = TRIM (ud.fac_usrdata_upper)
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE UPPER (prs_bedrijf_naam) = UPPER (ib.prs_bedrijf_naam)
|
||
AND prs_leverancier_nr < ib.prs_leverancier_nr)
|
||
ORDER BY ib.prs_bedrijf_naam, ib.prs_leverancier_nr;
|
||
|
||
v_bedrijf_key NUMBER (10);
|
||
BEGIN
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rec.prs_leverancier_nr || '|' || rec.prs_bedrijf_naam || '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errormsg := 'Fout bepalen bedrijf';
|
||
IF rec.prs_leverancier_nr IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Leveranciersnummer ongedefinieerd');
|
||
COMMIT;
|
||
ELSE
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE UPPER (TRIM (prs_leverancier_nr)) = UPPER (rec.prs_leverancier_nr);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errormsg := 'Fout toevoegen bedrijf';
|
||
INSERT INTO prs_bedrijf (prs_leverancier_nr,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_bezoek_adres,
|
||
prs_bedrijf_bezoek_postcode,
|
||
prs_bedrijf_bezoek_plaats,
|
||
prs_bedrijf_bezoek_land,
|
||
prs_bedrijf_post_adres,
|
||
prs_bedrijf_post_postcode,
|
||
prs_bedrijf_post_plaats,
|
||
prs_bedrijf_post_land,
|
||
--prs_bedrijf_leverancier,
|
||
prs_bedrijf_uitvoerende,
|
||
prs_bedrijf_contract,
|
||
--prs_bedrijf_huurder,
|
||
prs_bedrijf_telefoon,
|
||
prs_bedrijf_email)
|
||
VALUES (rec.prs_leverancier_nr,
|
||
rec.prs_bedrijf_naam,
|
||
rec.prs_bedrijf_bezoek_adres,
|
||
rec.prs_bedrijf_bezoek_postcode,
|
||
rec.prs_bedrijf_bezoek_plaats,
|
||
rec.prs_bedrijf_bezoek_land,
|
||
rec.prs_bedrijf_post_adres,
|
||
rec.prs_bedrijf_post_postcode,
|
||
rec.prs_bedrijf_post_plaats,
|
||
rec.prs_bedrijf_post_land,
|
||
--NULL,
|
||
NULL,
|
||
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
--NULL,
|
||
rec.prs_bedrijf_telefoon,
|
||
rec.prs_bedrijf_email)
|
||
RETURNING prs_bedrijf_key
|
||
INTO v_bedrijf_key;
|
||
|
||
v_count_new := v_count_new + 1;
|
||
ELSE -- v_count > 0
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr);
|
||
|
||
v_errormsg := 'Fout bijwerken bedrijf';
|
||
UPDATE prs_bedrijf
|
||
SET prs_bedrijf_naam = COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam),
|
||
prs_bedrijf_bezoek_adres = COALESCE (rec.prs_bedrijf_bezoek_adres, prs_bedrijf_bezoek_adres),
|
||
prs_bedrijf_bezoek_postcode = COALESCE (rec.prs_bedrijf_bezoek_postcode, prs_bedrijf_bezoek_postcode),
|
||
prs_bedrijf_bezoek_plaats = COALESCE (rec.prs_bedrijf_bezoek_plaats, prs_bedrijf_bezoek_plaats),
|
||
prs_bedrijf_bezoek_land = COALESCE (rec.prs_bedrijf_bezoek_land, prs_bedrijf_bezoek_land),
|
||
prs_bedrijf_post_adres = COALESCE (rec.prs_bedrijf_post_adres, prs_bedrijf_post_adres),
|
||
prs_bedrijf_post_postcode = COALESCE (rec.prs_bedrijf_post_postcode, prs_bedrijf_post_postcode),
|
||
prs_bedrijf_post_plaats = COALESCE (rec.prs_bedrijf_post_plaats, prs_bedrijf_post_plaats),
|
||
prs_bedrijf_post_land = COALESCE (rec.prs_bedrijf_post_land, prs_bedrijf_post_land),
|
||
--prs_bedrijf_leverancier = prs_bedrijf_leverancier,
|
||
--prs_bedrijf_uitvoerende = prs_bedrijf_uitvoerende,
|
||
prs_bedrijf_contract = DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
--prs_bedrijf_huurder = prs_bedrijf_huurder,
|
||
prs_bedrijf_telefoon = COALESCE (rec.prs_bedrijf_telefoon, prs_bedrijf_telefoon),
|
||
prs_bedrijf_email = COALESCE (rec.prs_bedrijf_email, prs_bedrijf_email)
|
||
WHERE prs_bedrijf_key = v_bedrijf_key;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bijwerken Status';
|
||
prs.upsertkenmerk (1043, v_bedrijf_key, TO_CHAR (rec.fac_usrdata_key)); -- Status
|
||
v_errormsg := 'Fout bijwerken Classificatie';
|
||
prs.upsertkenmerk (1040, v_bedrijf_key, rec.prs_bedrijf_overig1); -- Classificatie
|
||
v_errormsg := 'Fout bijwerken Sector';
|
||
prs.upsertkenmerk (1041, v_bedrijf_key, rec.prs_bedrijf_overig2); -- Sector
|
||
v_errormsg := 'Fout bijwerken Subsector';
|
||
prs.upsertkenmerk (1042, v_bedrijf_key, rec.prs_bedrijf_overig3); -- Subsector
|
||
|
||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE del_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT b.*
|
||
FROM prs_v_aanwezigbedrijf b
|
||
WHERE b.prs_bedrijf_intern IS NULL
|
||
AND b.prs_leverancier_nr IS NOT NULL
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE prs_leverancier_nr = b.prs_leverancier_nr)
|
||
ORDER BY b.prs_bedrijf_naam, b.prs_leverancier_nr;
|
||
|
||
v_vervallen_key NUMBER (10);
|
||
BEGIN
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rec.prs_leverancier_nr || '|' || rec.prs_bedrijf_naam || '] ';
|
||
|
||
--v_errormsg := 'Fout verwijderen bedrijf';
|
||
--UPDATE prs_bedrijf
|
||
-- SET prs_bedrijf_verwijder = SYSDATE
|
||
-- WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
v_errormsg := 'Fout bijwerken Status=Vervallen';
|
||
SELECT fac_usrdata_key INTO v_vervallen_key FROM fac_v_aanwezigusrdata WHERE fac_usrtab_key = 3 AND fac_usrdata_upper = 'VERVALLEN';
|
||
prs.upsertkenmerk (1043, rec.prs_bedrijf_key, TO_CHAR (v_vervallen_key)); -- Status
|
||
|
||
v_count_del := v_count_del + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Relaties/#vervallen: ' || TO_CHAR (v_count_del), '');
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
SELECT COUNT ( * ) INTO v_count FROM fac_imp_ext_bedrijf;
|
||
|
||
IF v_count < 100
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren relaties is te klein (' || TO_CHAR (v_count) || ')', '');
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Toevoegen Status-entries in Eigen tabel 221='Lifecycle REL'!
|
||
v_errormsg := 'Fout bijwerken Status-entries';
|
||
INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr)
|
||
SELECT 3, 'Vervallen', 'Vervallen'
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 3 -- Lifecycle REL
|
||
AND UPPER (TRIM (fac_usrdata_omschr)) = UPPER ('Vervallen'));
|
||
INSERT INTO fac_usrdata (fac_usrtab_key, fac_usrdata_code, fac_usrdata_omschr)
|
||
SELECT DISTINCT 3, SUBSTR (ib.prs_dienst_omschrijving, 1, 40), SUBSTR (ib.prs_dienst_omschrijving, 1, 60)
|
||
FROM fac_imp_ext_bedrijf ib
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 3 -- Lifecycle REL
|
||
AND UPPER (TRIM (fac_usrdata_omschr)) = UPPER (ib.prs_dienst_omschrijving));
|
||
COMMIT;
|
||
|
||
add_bedrijf (p_import_key);
|
||
del_bedrijf (p_import_key); -- Zet op Status-kenmerkveld op 'Vervallen'!
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Importproces relaties afgebroken!');
|
||
END fmhn_update_rel;
|
||
/
|
||
|
||
-- View voor Burgertelefonie
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_faq_kenm
|
||
(
|
||
kb_key,
|
||
vraag,
|
||
antwoord,
|
||
datum,
|
||
wijzigdatum,
|
||
oorsprong,
|
||
url,
|
||
taal,
|
||
zichtbaar,
|
||
zichtbaar_code,
|
||
productgroep,
|
||
subproductgroep,
|
||
zoekwoorden,
|
||
invoerder,
|
||
scope,
|
||
plaats,
|
||
aantalmeldingen,
|
||
aantalplaatsen,
|
||
organisatieonderdeel,
|
||
afdeling,
|
||
telefoonnummer,
|
||
bgg,
|
||
mobiel,
|
||
email,
|
||
opmerking,
|
||
contactpersoon,
|
||
contactgegevens
|
||
)
|
||
AS
|
||
SELECT f.fac_faq_key kb_key,
|
||
f.fac_faq_question vraag,
|
||
f.fac_faq_answer antwoord,
|
||
f.fac_faq_datum datum,
|
||
f.fac_faq_wijzigdatum wijzigdatum,
|
||
f.fac_faq_source oorsprong,
|
||
f.fac_faq_url url,
|
||
f.fac_faq_lang taal,
|
||
DECODE (f.fac_faq_level,
|
||
1, lcl.l ('lcl_faq_level1'),
|
||
2, lcl.l ('lcl_faq_level2'),
|
||
3, lcl.l ('lcl_faq_level3'))
|
||
zichtbaar,
|
||
f.fac_faq_level zichtbaar_code,
|
||
(SELECT MIN(CASE
|
||
WHEN sd.ins_srtdiscipline_prefix IS NULL THEN ''
|
||
ELSE sd.ins_srtdiscipline_prefix || '-'
|
||
END
|
||
|| m1.ins_discipline_omschrijving)
|
||
FROM mld_v_aanwezigdiscipline m1,
|
||
ins_srtdiscipline sd,
|
||
mld_stdmeldingfaq mf
|
||
WHERE m1.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m1.ins_discipline_key = mf.ins_discipline_key
|
||
AND mf.fac_faq_key = f.fac_faq_key)
|
||
productgroep,
|
||
(SELECT MIN (sm.mld_stdmelding_omschrijving)
|
||
FROM mld_stdmeldingfaq mf, mld_stdmelding sm
|
||
WHERE mf.mld_stdmelding_key = sm.mld_stdmelding_key(+)
|
||
AND mf.fac_faq_key = f.fac_faq_key)
|
||
subproductgroep,
|
||
fac_faq_hint zoekwoorden,
|
||
pf.prs_perslid_naam_full invoerder,
|
||
(SELECT MIN (NVL (o.alg_type, 'L'))
|
||
FROM alg_v_allonroerendgoed o, alg_algfaq af
|
||
WHERE af.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)
|
||
AND af.fac_faq_key = f.fac_faq_key)
|
||
scope,
|
||
(SELECT MIN(l.alg_locatie_code
|
||
|| DECODE (o.alg_plaatsaanduiding,
|
||
NULL, NULL,
|
||
'-' || o.alg_plaatsaanduiding))
|
||
FROM alg_v_aanweziglocatie l,
|
||
alg_v_onroerendgoed_gegevens o,
|
||
alg_algfaq af
|
||
WHERE af.alg_onroerendgoed_keys = o.alg_onroerendgoed_keys(+)
|
||
AND af.alg_locatie_key = l.alg_locatie_key
|
||
AND af.fac_faq_key = f.fac_faq_key)
|
||
plaats,
|
||
(SELECT COUNT ( * )
|
||
FROM mld_stdmeldingfaq mf
|
||
WHERE mf.fac_faq_key = f.fac_faq_key)
|
||
aantalmeldingen,
|
||
(SELECT COUNT ( * )
|
||
FROM alg_algfaq af
|
||
WHERE af.fac_faq_key = f.fac_faq_key)
|
||
aantalplaatsen,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) =
|
||
'ORGANISATIEONDERDEEL')
|
||
AS organisatieonderdeel,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'AFDELING')
|
||
AS afdeling,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'TELEFOONNUMMER')
|
||
AS telefoonnummer,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'BGG')
|
||
AS bgg,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'MOBIEL')
|
||
AS mobiel,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'EMAIL')
|
||
AS email,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'OPMERKING')
|
||
AS opmerking,
|
||
(SELECT faq_kenmerkwaarde_waarde
|
||
FROM faq_kenmerkwaarde kmwa, faq_kenmerk kma
|
||
WHERE f.fac_faq_key = kmwa.fac_faq_key
|
||
AND kma.faq_kenmerk_key = kmwa.faq_kenmerk_key
|
||
AND UPPER (kma.faq_kenmerk_omschrijving) = 'CONTACTPERSOON')
|
||
AS contactpersoon,
|
||
contact.kenmerken AS contactgegevens
|
||
FROM fac_faq f,
|
||
prs_v_perslid_fullnames_all pf,
|
||
( SELECT kb_key,
|
||
listagg (kenmerken, CHR (10))
|
||
WITHIN GROUP (ORDER BY kb_key)
|
||
kenmerken
|
||
FROM (SELECT kb_key, (kenmerk || ': ' || waarde_c) AS kenmerken
|
||
FROM fac_v_udr_faqkenmerk_cnd
|
||
WHERE kenmerk IN
|
||
('Telefoonnummer',
|
||
'Mobiel',
|
||
'BGG',
|
||
'Email',
|
||
'Contactpersoon'))
|
||
GROUP BY kb_key) contact
|
||
WHERE f.prs_perslid_key = pf.prs_perslid_key(+)
|
||
AND f.fac_faq_key = contact.kb_key(+);
|
||
|
||
-- CAD sync-view, de orginele ruimtenummers landen in een kenmerk bij de ruimte.
|
||
CREATE OR REPLACE VIEW fmhn_v_sync_alg_ruimte
|
||
(
|
||
alg_ruimte_key,
|
||
alg_verdieping_key,
|
||
cadlabel
|
||
)
|
||
AS
|
||
SELECT r.alg_ruimte_key,
|
||
r.alg_verdieping_key,
|
||
COALESCE (k.alg_onrgoedkenmerk_waarde, r.alg_ruimte_nr) cadlabel
|
||
FROM alg_ruimte r, alg_onrgoedkenmerk k
|
||
WHERE r.alg_ruimte_key = k.alg_onrgoed_key AND k.alg_kenmerk_key = 1000;
|
||
|
||
-- Domein-view tbv. alle medewerkers uit IDM!
|
||
-- Als P-kenmerk 1009=Identificatie persoon gevuld, dan uiteindelijk (in mijn
|
||
-- wijsheid, maar twijfel) besloten om medewerker te beschouwen als uit IDM.
|
||
-- Bewust niet op basis B-kenmerk 1020=Ministeriecode of prs_perslid_externid!
|
||
CREATE OR REPLACE VIEW FMHN_V_IDM_MEDEWERKER
|
||
(
|
||
PRS_PERSLID_KEY,
|
||
PRS_PERSLID_NAAM_FULL,
|
||
PRS_PERSLID_NAAM_FRIENDLY,
|
||
PRS_PERSLID_VERWIJDER,
|
||
PRS_AFD
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_key,
|
||
pf.prs_perslid_naam_full,
|
||
pf.prs_perslid_naam_friendly,
|
||
p.prs_perslid_verwijder,
|
||
pf.prs_perslid_naam_full
|
||
|| ' - ['
|
||
|| a.prs_afdeling_omschrijving
|
||
|| ']'
|
||
FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_afdeling a
|
||
WHERE p.prs_perslid_apikey IS NULL
|
||
AND SUBSTR (COALESCE (p.prs_perslid_oslogin, 'X'), 1, 1) != '_'
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key;
|
||
/*
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1009 -- Identificatie persoon
|
||
AND prs_link_key = p.prs_perslid_key);
|
||
*/
|
||
|
||
-- Rapportages tbv. Personenvervoer
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_medewerkers
|
||
(
|
||
person_id,
|
||
mincode,
|
||
prsnr,
|
||
--department_id,
|
||
--afdeling,
|
||
account_id,
|
||
kostenplaats,
|
||
achternaam,
|
||
tussenvoegsel,
|
||
voorletters,
|
||
voornaam,
|
||
titel,
|
||
telefoon,
|
||
mobiel,
|
||
email
|
||
)
|
||
AS
|
||
SELECT p.prs_perslid_key,
|
||
TRIM (SUBSTR (ud.fac_usrdata_omschr, INSTR (ud.fac_usrdata_omschr, '-') + 1)),
|
||
SUBSTR (p.prs_perslid_externid, 3),
|
||
--a.prs_afdeling_key,
|
||
--afdpad.prs_kenmerklink_waarde,
|
||
kp.prs_kostenplaats_key,
|
||
kp.prs_kostenplaats_omschrijving,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_voornaam,
|
||
--p.prs_perslid_titel,
|
||
DECODE (p.prs_perslid_geslacht, 1, 'Dhr', 0, 'Mevr', 'Onbekend'),
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_email
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1020) mincode, -- Ministeriecode (bij Bedrijf)
|
||
fac_v_aanwezigusrdata ud,
|
||
--(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1009) prsnr, -- Identificatie persoon
|
||
(SELECT * FROM prs_v_aanwezigkenmerklink WHERE prs_kenmerk_key = 1004) afdpad, -- Afdelingspad
|
||
prs_kostenplaats kp
|
||
WHERE p.prs_perslid_apikey IS NULL
|
||
AND SUBSTR (COALESCE (p.prs_perslid_oslogin, 'X'), 1, 1) != '_'
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = mincode.prs_link_key(+)
|
||
AND fac.safe_to_number (mincode.prs_kenmerklink_waarde) = ud.fac_usrdata_key(+)
|
||
--AND p.prs_perslid_key = prsnr.prs_link_key(+)
|
||
AND a.prs_afdeling_key = afdpad.prs_link_key(+)
|
||
AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key(+);
|
||
/*
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1009 -- Identificatie persoon
|
||
AND prs_link_key = p.prs_perslid_key);
|
||
*/
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_ritkosten
|
||
(
|
||
tertaal,
|
||
startdatum,
|
||
einddatum,
|
||
aanvrager, -- Aangevraagd door
|
||
meldingnummer,
|
||
type_rit_nummer,
|
||
type_rit,
|
||
van_adres,
|
||
van_plaats,
|
||
naar_adres,
|
||
naar_plaats,
|
||
aangevraagd_voor,
|
||
kostenplaats,
|
||
inhuur_jn,
|
||
normbedrag,
|
||
aantal_uren,
|
||
kosten,
|
||
ritnummer_fl
|
||
)
|
||
AS
|
||
SELECT DECODE (ed.mld_kenmerkmelding_waarde,
|
||
NULL, 'Ongeldig',
|
||
SUBSTR (ed.mld_kenmerkmelding_waarde, -4) || '-'
|
||
|| DECODE (
|
||
TO_CHAR (fac.safe_to_date (ed.mld_kenmerkmelding_waarde, 'dd-mm-yyyy'), 'mm'),
|
||
'10', '3',
|
||
'09', '3',
|
||
'08', '2',
|
||
'07', '2',
|
||
'06', '2',
|
||
'05', '2',
|
||
'1'))
|
||
tertaal,
|
||
fac.safe_to_date (sd.mld_kenmerkmelding_waarde, 'dd-mm-yyyy')
|
||
startdatum,
|
||
fac.safe_to_date (ed.mld_kenmerkmelding_waarde, 'dd-mm-yyyy')
|
||
einddatum,
|
||
pfd.prs_perslid_naam_full aanvrager,
|
||
x.mld_melding_key meldingnummer,
|
||
SUBSTR (tr_ud.fac_usrdata_code, INSTR (tr_ud.fac_usrdata_code, '/') + 1)
|
||
type_rit_nummer,
|
||
tr_ud.fac_usrdata_omschr type_rit,
|
||
va.mld_kenmerkmelding_waarde || ' ' || vhn.mld_kenmerkmelding_waarde
|
||
van_adres,
|
||
vp.mld_kenmerkmelding_waarde van_plaats,
|
||
na.mld_kenmerkmelding_waarde || ' ' || nhn.mld_kenmerkmelding_waarde
|
||
naar_adres,
|
||
np.mld_kenmerkmelding_waarde naar_plaats,
|
||
pfv.prs_perslid_naam_full aangevraagd_voor,
|
||
kp.prs_kostenplaats_omschrijving kostenplaats,
|
||
DECODE (ih.mld_kenmerkmelding_waarde, NULL, 'N', 'J') inhuur_jn,
|
||
COALESCE (tr_ud.fac_usrdata_prijs, 0) normbedrag,
|
||
ROUND ((fac.safe_to_date (ed.mld_kenmerkmelding_waarde || ' ' || et.mld_kenmerkmelding_waarde, 'dd-mm-yyyy hh24:mi')
|
||
- fac.safe_to_date (sd.mld_kenmerkmelding_waarde || ' ' || st.mld_kenmerkmelding_waarde, 'dd-mm-yyyy hh24:mi'))
|
||
* 24, 2)
|
||
aantal_uren,
|
||
COALESCE (tr_ud.fac_usrdata_prijs, 0)
|
||
* ROUND ((fac.safe_to_date (ed.mld_kenmerkmelding_waarde || ' ' || et.mld_kenmerkmelding_waarde, 'dd-mm-yyyy hh24:mi')
|
||
- fac.safe_to_date (sd.mld_kenmerkmelding_waarde || ' ' || st.mld_kenmerkmelding_waarde, 'dd-mm-yyyy hh24:mi'))
|
||
* 24, 2)
|
||
kosten,
|
||
rn.mld_kenmerkmelding_waarde ritnummer_fl
|
||
FROM (SELECT mld_melding_key, prs_perslid_key_voor, prs_kostenplaats_key
|
||
FROM mld_melding
|
||
WHERE mld_stdmelding_key = 1) x
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding ad
|
||
ON x.mld_melding_key = ad.mld_melding_key
|
||
AND ad.mld_kenmerk_key = 41 -- Aanvraag door
|
||
LEFT JOIN prs_v_perslid_fullnames_all pfd
|
||
ON fac.safe_to_number (ad.mld_kenmerkmelding_waarde) = pfd.prs_perslid_key
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding tr
|
||
ON x.mld_melding_key = tr.mld_melding_key
|
||
AND tr.mld_kenmerk_key = 1 -- Type rit
|
||
LEFT JOIN fac_v_aanwezigusrdata tr_ud
|
||
ON fac.safe_to_number (tr.mld_kenmerkmelding_waarde) = tr_ud.fac_usrdata_key
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding va
|
||
ON x.mld_melding_key = va.mld_melding_key
|
||
AND va.mld_kenmerk_key = 11 -- Van adres
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding vhn
|
||
ON x.mld_melding_key = vhn.mld_melding_key
|
||
AND vhn.mld_kenmerk_key = 12 -- Van huisnummer
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding vp
|
||
ON x.mld_melding_key = vp.mld_melding_key
|
||
AND vp.mld_kenmerk_key = 14 -- Van plaats
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding na
|
||
ON x.mld_melding_key = na.mld_melding_key
|
||
AND na.mld_kenmerk_key = 17 -- Naar adres
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding nhn
|
||
ON x.mld_melding_key = nhn.mld_melding_key
|
||
AND nhn.mld_kenmerk_key = 18 -- Naar huisnummer
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding np
|
||
ON x.mld_melding_key = np.mld_melding_key
|
||
AND np.mld_kenmerk_key = 20 -- Naar plaats
|
||
LEFT JOIN prs_v_perslid_fullnames_all pfv
|
||
ON x.prs_perslid_key_voor = pfv.prs_perslid_key -- Aanvraag voor
|
||
LEFT JOIN prs_v_aanwezigkostenplaats kp
|
||
ON x.prs_kostenplaats_key = kp.prs_kostenplaats_key -- Kostenplaats
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding ih
|
||
ON x.mld_melding_key = ih.mld_melding_key
|
||
AND ih.mld_kenmerk_key = 9 -- Inhuur
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding sd
|
||
ON x.mld_melding_key = sd.mld_melding_key
|
||
AND sd.mld_kenmerk_key = 22 -- Startdatum
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding st
|
||
ON x.mld_melding_key = st.mld_melding_key
|
||
AND st.mld_kenmerk_key = 23 -- Starttijd
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding ed
|
||
ON x.mld_melding_key = ed.mld_melding_key
|
||
AND ed.mld_kenmerk_key = 24 -- Einddatum
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding et
|
||
ON x.mld_melding_key = et.mld_melding_key
|
||
AND et.mld_kenmerk_key = 25 -- Eindttijd
|
||
LEFT JOIN mld_v_aanwezigkenmerkmelding rn
|
||
ON x.mld_melding_key = rn.mld_melding_key
|
||
AND rn.mld_kenmerk_key = 2 -- Ritnummer
|
||
;
|
||
|
||
CREATE OR REPLACE PACKAGE FMHN
|
||
AS
|
||
PROCEDURE sluiten_ritten;
|
||
PROCEDURE schonen_lessen;
|
||
--FUNCTION change_delimitor (p_string VARCHAR2, p_delimitor VARCHAR2) RETURN VARCHAR2;
|
||
PROCEDURE movetoruimte (p_perslid_key NUMBER, p_gebouw_key NUMBER);
|
||
PROCEDURE movetopp (p_bezoekers_key NUMBER, p_afspraak_van DATE, p_afspraak_tot DATE, p_terrein_key NUMBER, p_max_cap NUMBER);
|
||
PROCEDURE update_fegroep;
|
||
PROCEDURE update_min2geb;
|
||
PROCEDURE update_afd2geb;
|
||
PROCEDURE delete_wps_nok;
|
||
PROCEDURE insert_npq (p_rrr_key NUMBER,p_rra_key NUMBER, p_aantal NUMBER, p_lever_datum DATE, p_ra_key NUMBER);
|
||
PROCEDURE delete_npq (p_rrr_key NUMBER,p_rra_key NUMBER);
|
||
PROCEDURE add_xml_element (p_bestand VARCHAR2, p_tag VARCHAR2, p_value VARCHAR2);
|
||
PROCEDURE add_xml_row (p_bestand VARCHAR2, p_regel VARCHAR2);
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PACKAGE BODY FMHN
|
||
AS
|
||
-- Maandelijks sluiten lopende Rit-meldingen over voorgaande maand zoals
|
||
-- vanuit Flowlogic aangemaakt!
|
||
PROCEDURE sluiten_ritten
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'SLUITEN_RITTEN';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER (10) := 0;
|
||
|
||
CURSOR c_ritten
|
||
IS
|
||
SELECT m.mld_melding_key, m.mld_melding_onderwerp
|
||
FROM mld_melding m,
|
||
(SELECT * FROM mld_v_aanwezigkenmerkmelding WHERE mld_kenmerk_key = 24) ed -- Einddatum
|
||
WHERE m.mld_stdmelding_key = 1 -- Rit vanuit Flowlogic aangemaakt
|
||
--AND m.mld_melding_key = 1
|
||
AND m.mld_melding_status IN (2, 3, 4, 99) -- Nieuw/Te accepteren/In behandeling (zou altijd Nieuw moeten zijn!)
|
||
AND m.mld_melding_key = ed.mld_melding_key
|
||
AND fac.safe_to_date (ed.mld_kenmerkmelding_waarde, 'dd-mm-yyyy') < SYSDATE; -- TODO:TRUNC (SYSDATE, 'mm');
|
||
BEGIN
|
||
-- LET OP: DAILY-taak draait dagelijks na middernacht (begin van dag) en
|
||
-- ritten - over de voorgaande maand - worden alleen in de nacht
|
||
-- na 22e dag van de maand gesloten.
|
||
--IF TO_CHAR (SYSDATE, 'dd') = '23' -- TODO:Nacht na 22e dag van de maand!
|
||
--THEN
|
||
FOR rec IN c_ritten
|
||
LOOP
|
||
v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '|' || rec.mld_melding_onderwerp || '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
MLD.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- Afgemeld (incl. tracking)
|
||
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL); -- Administratief verwerkt (incl. tracking)
|
||
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
|
||
END LOOP;
|
||
fac.writelog (c_applname, 'S', '#Ritten gesloten: ' || TO_CHAR (v_count_tot), '');
|
||
COMMIT;
|
||
--END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Daily achtergrond taak afgebroken!');
|
||
END;
|
||
|
||
-- Jaarlijks schonen gevolgde (herhalings)lessen door BHV-ers!
|
||
PROCEDURE schonen_lessen
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'WISSEN_BHVHERH';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10) := 0;
|
||
BEGIN
|
||
-- LET OP: DAILY-taak draait dagelijks na middernacht (begin van dag) en
|
||
-- (herhalings)lessen worden in de nacht na 31 januari gewist.
|
||
--IF TO_CHAR (SYSDATE, 'ddmm') = '0102' -- TODO:Nacht na 31 januari!
|
||
--THEN
|
||
v_errormsg := 'Fout verwijderen lessen';
|
||
SELECT COUNT (*) INTO v_count_tot FROM ins_kenmerkdeel WHERE ins_kenmerk_key BETWEEN 76 AND 80;
|
||
DELETE FROM ins_kenmerkdeel WHERE ins_kenmerk_key BETWEEN 76 AND 80;
|
||
fac.writelog (c_applname, 'S', '#Lessen geschoond: ' || TO_CHAR (v_count_tot), '');
|
||
COMMIT;
|
||
--END IF;
|
||
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 (c_applname, 'E', v_errormsg, 'Daily achtergrond taak afgebroken!');
|
||
END;
|
||
/*
|
||
FUNCTION change_delimitor (p_string VARCHAR2, p_delimitor VARCHAR2)
|
||
RETURN VARCHAR2
|
||
AS
|
||
v_line VARCHAR2 (2000);
|
||
v_field VARCHAR2 (255);
|
||
v_result VARCHAR2 (2000);
|
||
BEGIN
|
||
v_line := p_string;
|
||
|
||
WHILE v_line IS NOT NULL
|
||
LOOP
|
||
fac.imp_getfield (v_line, p_delimitor, v_field);
|
||
v_result := v_result || '"' || v_field || '";';
|
||
END LOOP;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
*/
|
||
PROCEDURE movetoruimte (p_perslid_key NUMBER, p_gebouw_key NUMBER)
|
||
AS
|
||
v_ruimte_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
BEGIN
|
||
SELECT MIN (x.alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM (SELECT r1.alg_ruimte_key
|
||
FROM alg_v_aanwezigruimte r1, alg_verdieping v1
|
||
WHERE r1.alg_srtruimte_key = 101 -- Fictief
|
||
AND SUBSTR (r1.alg_ruimte_nr, 1, 1) = '_'
|
||
AND r1.alg_verdieping_key = v1.alg_verdieping_key
|
||
AND v1.alg_gebouw_key = p_gebouw_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r2, alg_verdieping v2
|
||
WHERE r2.alg_srtruimte_key = 101 -- Fictief
|
||
AND SUBSTR (r2.alg_ruimte_nr, 1, 1) = '_'
|
||
AND r2.alg_verdieping_key = v2.alg_verdieping_key
|
||
AND v2.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v2.alg_verdieping_volgnr < v1.alg_verdieping_volgnr)) x
|
||
LEFT JOIN
|
||
( SELECT prs_alg_ruimte_key, COUNT ( * ) aant
|
||
FROM prs_werkplek wp
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM prs_perslidwerkplek
|
||
WHERE prs_werkplek_key = wp.prs_werkplek_key)
|
||
GROUP BY prs_alg_ruimte_key) wp
|
||
ON x.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||
WHERE COALESCE (wp.aant, 0) < 9999;
|
||
|
||
IF v_ruimte_key IS NULL
|
||
THEN
|
||
SELECT MIN (v1.alg_verdieping_key)
|
||
INTO v_verdieping_key
|
||
FROM alg_v_aanwezigruimte r1, alg_verdieping v1
|
||
WHERE r1.alg_srtruimte_key = 101 -- Fictief
|
||
AND SUBSTR (r1.alg_ruimte_nr, 1, 1) = '_'
|
||
AND r1.alg_verdieping_key = v1.alg_verdieping_key
|
||
AND v1.alg_gebouw_key = p_gebouw_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM alg_v_aanwezigruimte r2, alg_verdieping v2
|
||
WHERE r2.alg_srtruimte_key = 101 -- Fictief
|
||
AND SUBSTR (r2.alg_ruimte_nr, 1, 1) = '_'
|
||
AND r2.alg_verdieping_key = v2.alg_verdieping_key
|
||
AND v2.alg_gebouw_key = v1.alg_gebouw_key
|
||
AND v2.alg_verdieping_volgnr < v1.alg_verdieping_volgnr);
|
||
|
||
IF v_verdieping_key IS NULL
|
||
THEN
|
||
-- Als er geen verdieping met een underscore-ruimte is, dan is er
|
||
-- misschien zelfs helemaal nog geen verdieping en houdt het op
|
||
-- (zie ook specificatie Periodieke import IDM-persoonsgegevens).
|
||
RETURN;
|
||
END IF;
|
||
|
||
INSERT INTO alg_ruimte (alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr)
|
||
VALUES (v_verdieping_key, 101, '_Quqelequ')
|
||
RETURNING alg_ruimte_key
|
||
INTO v_ruimte_key;
|
||
|
||
UPDATE alg_ruimte
|
||
SET alg_ruimte_nr = '_' || TO_CHAR (v_ruimte_key)
|
||
WHERE alg_ruimte_key = v_ruimte_key;
|
||
END IF;
|
||
|
||
PRS.movetoruimte (p_perslid_key, v_ruimte_key, 'L'); -- Eventueel andere impliciete WPs op Locatie verwijderen!
|
||
END;
|
||
|
||
-- Tijdelijke procedure tbv. migratie, daarna kan deze weg!
|
||
PROCEDURE movetopp (p_bezoekers_key NUMBER,
|
||
p_afspraak_van DATE,
|
||
p_afspraak_tot DATE,
|
||
p_terrein_key NUMBER,
|
||
p_max_cap NUMBER)
|
||
AS
|
||
v_count NUMBER (10);
|
||
v_res_deel_key NUMBER (10);
|
||
BEGIN
|
||
-- Bepaal hoeveel bezet
|
||
SELECT COUNT ( * ) aant
|
||
INTO v_count
|
||
FROM ins_v_aanwezigdeel pp, res_v_aanwezigdeel rd
|
||
WHERE pp.ins_alg_ruimte_type = 'T'
|
||
AND pp.ins_alg_ruimte_key = p_terrein_key
|
||
--AND pp.ins_discipline_key = rd.res_discipline_key
|
||
AND pp.ins_deel_key = rd.res_ins_deel_key
|
||
AND EXISTS -- Bezet
|
||
(SELECT 1
|
||
FROM res_v_aanwezigrsv_deel
|
||
WHERE TRUNC (res_rsv_deel_van) = TRUNC (p_afspraak_van)
|
||
AND res_deel_key = rd.res_deel_key);
|
||
|
||
IF (v_count < p_max_cap)
|
||
THEN
|
||
-- Bepaal vrije PP
|
||
SELECT MIN (rd.res_deel_key)
|
||
INTO v_res_deel_key
|
||
FROM res_v_aanwezigdeel rd
|
||
WHERE EXISTS
|
||
(SELECT 1
|
||
FROM ins_v_aanwezigdeel d -- Voorkomen op terrein
|
||
WHERE d.ins_alg_ruimte_type = 'T'
|
||
AND d.ins_alg_ruimte_key = p_terrein_key
|
||
AND d.ins_deel_key = rd.res_ins_deel_key)
|
||
AND NOT EXISTS -- Vrij zijn
|
||
(SELECT 1
|
||
FROM res_v_aanwezigrsv_deel
|
||
WHERE TRUNC (res_rsv_deel_van) = TRUNC (p_afspraak_van)
|
||
AND res_deel_key = rd.res_deel_key);
|
||
|
||
-- Toekennen PP.
|
||
INSERT INTO res_rsv_deel (res_deel_key,
|
||
bez_bezoekers_key,
|
||
res_rsv_deel_aantal,
|
||
res_status_bo_key,
|
||
res_rsv_deel_van,
|
||
res_rsv_deel_tot)
|
||
VALUES (v_res_deel_key,
|
||
p_bezoekers_key,
|
||
1,
|
||
2,
|
||
p_afspraak_van,
|
||
p_afspraak_tot);
|
||
ELSE
|
||
-- Geen PP meer beschikbaar (handmatig corrigeren).
|
||
fac.writelog ('MOVETOPP', 'I', '[' || TO_CHAR (p_terrein_key) || '|' || TO_CHAR (p_bezoekers_key) || '|' || TO_CHAR (p_afspraak_van, 'dd-mm-yyyy') || ']',
|
||
'Geen PP beschikbaar');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END;
|
||
|
||
PROCEDURE update_fegroep
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'UPDATE_FEGROEP';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_datum1 DATE;
|
||
v_datum2 DATE;
|
||
|
||
CURSOR c_gg_ienw_anvs -- IenW-uitzondering: 76=ANVS (en geen RES Klant)
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '03' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid IN
|
||
('0363362976', -- ANVS
|
||
'0363303402')) -- ANVS
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid IN
|
||
('0363362976', -- ANVS
|
||
'0363303402')) -- ANVS
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid IN
|
||
('0363362976', -- ANVS
|
||
'0363303402')) -- ANVS
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid IN
|
||
('0363362976', -- ANVS
|
||
'0363303402')) -- ANVS
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid IN
|
||
('0363362976', -- ANVS
|
||
'0363303402'))) -- ANVS
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_ienw_nea -- IenW-uitzondering: 73=NEA (en geen RES Klant)
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '03' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid IN
|
||
('0363032557', -- NEA
|
||
'0363562066')) -- NEA
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid IN
|
||
('0363032557', -- NEA
|
||
'0363562066')) -- NEA
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid IN
|
||
('0363032557', -- NEA
|
||
'0363562066')) -- NEA
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid IN
|
||
('0363032557', -- NEA
|
||
'0363562066')) -- NEA
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid IN
|
||
('0363032557', -- NEA
|
||
'0363562066'))) -- NEA
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_ocw_duo -- OCW-uitzondering: 87=DUO
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '05' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid = '0510000000') -- DUO
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid = '0510000000') -- DUO
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid = '0510000000') -- DUO
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid = '0510000000') -- DUO
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid = '0510000000')) -- DUO
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_vws_rivm -- VWS-uitzondering: 60=RIVM
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '06' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid = '0650297830') -- RIVM
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid = '0650297830') -- RIVM
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid = '0650297830') -- RIVM
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid = '0650297830') -- RIVM
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid = '0650297830')) -- RIVM
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_jenv_dtenv -- JenV-uitzondering: 106=DTenV
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '07' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid = '0763141006') -- DTenV
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid = '0763141006') -- DTenV
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid = '0763141006') -- DTenV
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid = '0763141006') -- DTenV
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid = '0763141006')) -- DTenV
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_jenv_ind -- JenV-uitzondering: 98=IND
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '07' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid = '0763387873') -- IND
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid = '0763387873') -- IND
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid = '0763387873') -- IND
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid = '0763387873') -- IND
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid = '0763387873')) -- IND
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_jenv_rvdk -- JenV-uitzondering: 108=RvdK
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '07' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid = '0763596496') -- RvdK
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid = '0763596496') -- RvdK
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid = '0763596496') -- RvdK
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid = '0763596496') -- RvdK
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid = '0763596496')) -- RvdK
|
||
ORDER BY p.prs_perslid_key;
|
||
|
||
CURSOR c_gg_iedereen
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
SUBSTR (p.prs_perslid_externid, 1, 2) mincode
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_externid IS NOT NULL -- Alleen voor uit IDM geimporteerde personen!
|
||
AND SUBSTR (p.prs_perslid_externid, 1, 2) IN ('02', '03', '04', '05', '06', '07', '08', '09', '11', '14', '24')
|
||
AND NOT EXISTS -- Persoon geen uitzondering!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key IN (73, 76, 87, 60, 98, 106, 108)
|
||
AND prs_perslid_key = p.prs_perslid_key)
|
||
ORDER BY prs_perslid_key;
|
||
|
||
CURSOR c_gg_jenv_cob -- JenV-uitzondering: 941=COB-zalen tbv. NCTV en NCSC
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
a.prs_afdeling_externid
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
prs_v_afdeling_boom ab
|
||
WHERE SUBSTR (p.prs_perslid_externid, 1, 2) = '07' -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND prs_afdeling_externid IN
|
||
('0750001168', -- NCTV
|
||
'0763677016')) -- NCSC
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND prs_afdeling_externid IN
|
||
('0750001168', -- NCTV
|
||
'0763677016')) -- NCSC
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND prs_afdeling_externid IN
|
||
('0750001168', -- NCTV
|
||
'0763677016')) -- NCSC
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND prs_afdeling_externid IN
|
||
('0750001168', -- NCTV
|
||
'0763677016')) -- NCSC
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND prs_afdeling_externid IN
|
||
('0750001168', -- NCTV
|
||
'0763677016'))) -- NCSC
|
||
ORDER BY p.prs_perslid_key;
|
||
BEGIN
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_ienw_anvs -- 76=ANVS (en geen RES Klant)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_IenW-ANVS';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 76, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 76
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_IenW-ANVS/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_ienw_nea -- 73=NEA (en geen RES Klant)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_IenW-NEA';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 73, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 73
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_IenW-NEA/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_ocw_duo -- 87=DUO
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_OCW-DUO';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 87, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 87
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_OCW-DUO/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_vws_rivm -- 60=RIVM
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_VWS-RIVM';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 60, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 60
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_VWS-RIVM/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_jenv_dtenv -- 106=DTenV
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_JenV-DTenV';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 106, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 106
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_JenV-DTenV/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_jenv_ind -- 98=IND
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_JenV-IND';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 98, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 98
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_JenV-IND/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- LET OP: Eerst de uitzonderingen!
|
||
FOR rec IN c_gg_jenv_rvdk -- 108=RvdK
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_JenV-RvdK';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 108, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 108
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_JenV-RvdK/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
FOR rec IN c_gg_iedereen
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_Iedereen';
|
||
|
||
-- TODO:Hoe zit het met MLD_BenG_Iedereen???
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT DECODE (rec.mincode,
|
||
--'01', 47, -- BZ
|
||
'02', 88, -- SZW
|
||
'03', 56, -- IenW (hierboven: 73=NEA/76=ANVS)
|
||
--'04', 102, -- BZK
|
||
'05', 113, -- OCW (hierboven: 67=RCE/87=DUO)
|
||
'06', 81, -- VWS (hierboven: 60=RIVM)
|
||
'07', 85, -- JenV (95=COA geen uitzondering, hierboven: 98=IND/106=DTenV/108=RvdK)
|
||
'08', 55, -- EZK (93=LNV geen uitzondering)
|
||
'09', 93, -- LNV
|
||
'10', 84, -- AZ
|
||
'11', 83, -- DEF
|
||
--'12', -1, -- FIN
|
||
--'13', -1, -- RvdR
|
||
'14', 95, -- COA
|
||
--'15', -1, -- AR
|
||
--'16', -1, -- COHO
|
||
--'17', -1, -- AP
|
||
--'18', -1, -- PC
|
||
--'19', -1, -- TK
|
||
--'20', -1, -- KdNO
|
||
--'21', -1, -- NFI
|
||
--'22', -1, -- NP
|
||
--'23', -1, -- HR
|
||
'24', 109, -- KSA
|
||
--'25', -1, -- BD
|
||
102), -- BZK
|
||
rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS -- Persoon niet al in groep!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key =
|
||
DECODE (rec.mincode,
|
||
--'01', 47, -- BZ
|
||
'02', 88, -- SZW
|
||
'03', 56, -- IenW
|
||
--'04', 102, -- BZK
|
||
'05', 113, -- OCW
|
||
'06', 81, -- VWS
|
||
'07', 85, -- JenV
|
||
'08', 55, -- EZK
|
||
'09', 93, -- LNV
|
||
'10', 84, -- AZ
|
||
'11', 83, -- DEF
|
||
--'12', -1, -- FIN
|
||
--'13', -1, -- RvdR
|
||
'14', 95, -- COA
|
||
--'15', -1, -- AR
|
||
--'16', -1, -- COHO
|
||
--'17', -1, -- AP
|
||
--'18', -1, -- PC
|
||
--'19', -1, -- TK
|
||
--'20', -1, -- KdNO
|
||
--'21', -1, -- NFI
|
||
--'22', -1, -- NP
|
||
--'23', -1, -- HR
|
||
'24', 109, -- KSA
|
||
--'25', -1, -- BD
|
||
102)
|
||
AND prs_perslid_key = rec.prs_perslid_key)
|
||
UNION ALL
|
||
SELECT 167, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE rec.mincode <> '03' -- Persoon niet van IenW!
|
||
AND NOT EXISTS -- Persoon niet al in groep!
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 167
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_Iedereen/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
-- Extra COB-rol voor NCTV en NCSC!
|
||
FOR rec IN c_gg_jenv_cob -- 941=COB-rol
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout behouden GG_JenV-COB';
|
||
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
SELECT 941, rec.prs_perslid_key
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = 941
|
||
AND prs_perslid_key = rec.prs_perslid_key);
|
||
|
||
-- TODO:DELETE FROM eventuele andere Iedereen-groepen!
|
||
|
||
v_count := v_count + 1;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#GG_JenV-COB/toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
END;
|
||
|
||
PROCEDURE update_min2geb
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'UPDATE_MIN2GEB';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_datum1 DATE;
|
||
v_datum2 DATE;
|
||
|
||
CURSOR c_wp
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
g.alg_gebouw_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_afdeling a,
|
||
fac_v_aanwezigusrdata ud,
|
||
alg_v_aanweziggebouw g
|
||
WHERE p.prs_perslid_externid IS NOT NULL -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND ud.fac_usrtab_key = 141 -- Min2Geb
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, 4)) = TRIM (g.alg_gebouw_upper)
|
||
AND g.alg_locatie_key IN (3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 20, 21, 22, 43) -- Locaties live!
|
||
AND SUBSTR (ud.fac_usrdata_code, 1, 2) = SUBSTR (a.prs_afdeling_externid, 1, 2) -- Hoofdzetel ministerie van persoon!
|
||
AND NOT EXISTS (SELECT 1 -- Nog geen WP op hoofdzetel!
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_ruimte r, alg_verdieping v
|
||
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND pw.prs_perslid_key = p.prs_perslid_key)
|
||
ORDER BY p.prs_perslid_key;
|
||
BEGIN
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
FOR rec IN c_wp
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout toekennen fictieve hoofd-WP';
|
||
fmhn.movetoruimte (rec.prs_perslid_key, rec.alg_gebouw_key);
|
||
v_count := v_count + 1;
|
||
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#WPs toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
END;
|
||
|
||
PROCEDURE update_afd2geb
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'UPDATE_AFD2GEB';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_datum1 DATE;
|
||
v_datum2 DATE;
|
||
|
||
CURSOR c_wp
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
p.prs_perslid_key,
|
||
g.alg_gebouw_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_afdeling_boom ab,
|
||
fac_v_aanwezigusrdata ud,
|
||
alg_v_aanweziggebouw g
|
||
WHERE p.prs_perslid_externid IS NOT NULL -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ud.fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (g.alg_gebouw_upper)
|
||
AND g.alg_locatie_key IN (3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 20, 21, 22, 43) -- Locaties live!
|
||
AND (EXISTS
|
||
(SELECT 1 -- Satellietzetel op bedrijf van persoon (kan ook)!
|
||
FROM prs_v_aanwezigkenmerklink
|
||
WHERE prs_kenmerk_key = 1021 -- Organisatieonderdeelcode (bij Bedrijf)
|
||
AND prs_link_key = ab.prs_bedrijf_key
|
||
AND UPPER (SUBSTR (p.prs_perslid_externid, 1, 2) || prs_kenmerklink_waarde) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1)))
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND UPPER (prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1)))
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND UPPER (prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1)))
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND UPPER (prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1)))
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND UPPER (prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1)))
|
||
OR EXISTS
|
||
(SELECT 1 -- Satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND UPPER (prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))))
|
||
AND NOT EXISTS (SELECT 1 -- Nog geen WP op satellietzetel!
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp, alg_ruimte r, alg_verdieping v
|
||
WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND pw.prs_perslid_key = p.prs_perslid_key)
|
||
ORDER BY p.prs_perslid_key;
|
||
BEGIN
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
FOR rec IN c_wp
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout toekennen fictieve satelliet-WP';
|
||
fmhn.movetoruimte (rec.prs_perslid_key, rec.alg_gebouw_key);
|
||
v_count := v_count + 1;
|
||
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#WPs toegekend: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- Verwijderen (normale en virtuele) prs_perslidwerkplek anders dan op hoofd- of satellietzetel!
|
||
PROCEDURE delete_wps_nok
|
||
AS
|
||
c_applname VARCHAR2 (50) := 'DELETE_WPS_NOK';
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_datum1 DATE;
|
||
v_datum2 DATE;
|
||
|
||
CURSOR c_wp
|
||
IS
|
||
SELECT '[' || p.prs_perslid_email || '] ' aanduiding,
|
||
pw.prs_perslidwerkplek_key
|
||
FROM prs_v_aanwezigperslid p,
|
||
prs_v_afdeling_boom ab,
|
||
prs_v_perslidwerkplek_gegevens pw
|
||
WHERE p.prs_perslid_externid IS NOT NULL -- Alleen voor uit IDM geimporteerde personen!
|
||
AND p.prs_perslid_key <> 3 -- _FACILITOR
|
||
AND NOT EXISTS -- TODO:FB-er of alle FMH-ers uitsluiten?
|
||
(SELECT 1
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key IN (-1)
|
||
AND prs_perslid_key = p.prs_perslid_key)
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND p.prs_perslid_key = pw.prs_perslid_key
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen hoofdzetel van persoon!
|
||
FROM fac_v_aanwezigusrdata ud
|
||
WHERE ud.fac_usrtab_key = 141 -- Min2Geb
|
||
AND SUBSTR (ud.fac_usrdata_code, 1, 2) = SUBSTR (p.prs_perslid_externid, 1, 2)
|
||
--AND UPPER (SUBSTR (ud.fac_usrdata_code, 4)) = TRIM (pw.alg_gebouw_upper)
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op bedrijf van persoon (kan ook)!
|
||
FROM prs_v_aanwezigkenmerklink kl, fac_v_aanwezigusrdata ud
|
||
WHERE kl.prs_kenmerk_key = 1021 -- Organisatieonderdeelcode (bij Bedrijf)
|
||
AND kl.prs_link_key = ab.prs_bedrijf_key
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (SUBSTR (p.prs_perslid_externid, 1, 2) || kl.prs_kenmerklink_waarde) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op afdeling1 van persoon!
|
||
FROM prs_afdeling a, fac_v_aanwezigusrdata ud
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key1
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (a.prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op afdeling2 van persoon!
|
||
FROM prs_afdeling a, fac_v_aanwezigusrdata ud
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key2
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (a.prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op afdeling3 van persoon!
|
||
FROM prs_afdeling a, fac_v_aanwezigusrdata ud
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key3
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (a.prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op afdeling4 van persoon!
|
||
FROM prs_afdeling a, fac_v_aanwezigusrdata ud
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key4
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (a.prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
AND NOT EXISTS
|
||
(SELECT 1 -- Geen satellietzetel op afdeling5 van persoon!
|
||
FROM prs_afdeling a, fac_v_aanwezigusrdata ud
|
||
WHERE a.prs_afdeling_key = ab.prs_afdeling_key5
|
||
AND fac_usrtab_key = 142 -- Afd2Geb
|
||
AND UPPER (a.prs_afdeling_externid) =
|
||
UPPER (SUBSTR (ud.fac_usrdata_code, 1, INSTR (ud.fac_usrdata_code, '/') - 1))
|
||
AND UPPER (SUBSTR (ud.fac_usrdata_code, INSTR (ud.fac_usrdata_code, '/') + 1)) = TRIM (pw.alg_gebouw_upper))
|
||
ORDER BY p.prs_perslid_key, pw.prs_perslidwerkplek_key;
|
||
BEGIN
|
||
v_count := 0;
|
||
v_datum1 := SYSDATE;
|
||
|
||
FOR rec IN c_wp
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout verwijderen ongeldige WP';
|
||
DELETE FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_key = rec.prs_perslidwerkplek_key;
|
||
v_count := v_count + 1;
|
||
IF MOD (v_count, 1000) = 0 THEN COMMIT; END IF;
|
||
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 (c_applname, 'E', rec.aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_datum2 := SYSDATE;
|
||
fac.writelog (c_applname, 'S', '#WPs verwijderd: ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_datum2 - v_datum1) * 24 * 60), 'FM990') || 'm');
|
||
COMMIT;
|
||
END;
|
||
|
||
|
||
PROCEDURE insert_npq (p_rrr_key IN NUMBER,p_rra_key IN NUMBER, p_aantal IN NUMBER, p_lever_datum IN DATE, p_ra_key IN NUMBER)
|
||
AS
|
||
v_aantal NUMBER:=0;
|
||
BEGIN
|
||
SELECT COUNT(*) INTO v_aantal FROM fmhn_npq_export WHERE res_rsv_ruimte_key = p_rrr_key AND res_rsv_artikel_key = p_rra_key;
|
||
IF v_aantal = 0
|
||
THEN
|
||
|
||
INSERT INTO fmhn_npq_export(res_rsv_artikel_key,export_datum,res_rsv_ruimte_key,res_artikel_key,aantal,lever_datum)
|
||
VALUES(p_rra_key,SYSDATE,p_rrr_key, p_ra_key, p_aantal, p_lever_datum);
|
||
COMMIT;
|
||
END IF;
|
||
END;
|
||
|
||
PROCEDURE delete_npq (p_rrr_key IN NUMBER,p_rra_key IN NUMBER)
|
||
AS
|
||
|
||
BEGIN
|
||
DELETE FROM fmhn_npq_export WHERE res_rsv_ruimte_key= p_rrr_key AND res_rsv_artikel_key = p_rra_key;
|
||
COMMIT;
|
||
END;
|
||
|
||
|
||
PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2)
|
||
AS
|
||
v_index NUMBER;
|
||
BEGIN
|
||
SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + 1
|
||
INTO v_index
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = p_bestand;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES (p_bestand, v_index, p_regel);
|
||
END;
|
||
|
||
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
|
||
p_tag IN VARCHAR2,
|
||
p_value IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
fmhn.add_xml_row (
|
||
p_bestand,
|
||
'<'
|
||
|| p_tag
|
||
|| '>'
|
||
|| xml.char_to_html (p_value)
|
||
|| '</'
|
||
|| p_tag
|
||
|| '>');
|
||
END;
|
||
|
||
|
||
END;
|
||
/
|
||
|
||
-- Dagelijkse taak
|
||
CREATE OR REPLACE PROCEDURE FMHN_DAILY
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- Maandelijks sluiten geregistreerde ritten vanuit Flowlogic!
|
||
--fmhn.sluiten_ritten ();
|
||
|
||
-- Jaarlijks schonen gevolgde (herhalings)lessen door BHV-ers!
|
||
--fmhn.schonen_lessen ();
|
||
|
||
-- Toekennen(/TODO:afnemen) FE-autorisatiegroepen volgens ministerie(onderdeel).
|
||
-- NB: Voor alle FE-autorisatiegroepen geldt Scope-beperking op Locatie!
|
||
fmhn.update_fegroep ();
|
||
|
||
-- Toekennen WPs op hoofdzetel volgens Eigen tabel 'min2geb'.
|
||
fmhn.update_min2geb ();
|
||
|
||
-- Toekennen WPs op satellietzetel volgens Eigen tabel 'afd2geb'.
|
||
fmhn.update_afd2geb ();
|
||
|
||
-- Verwijderen WPs anders dan op hoofd- of satellietzetel!
|
||
--fmhn.delete_wps_nok ();
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW FMHN_V_NOTI_CNTREMINDER
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
PAR1,
|
||
PAR2,
|
||
XKEY
|
||
--XEMAIL,
|
||
--XMOBILE,
|
||
--FAC_SRTNOTIFICATIE_KEY,
|
||
--ATTACHMENTS,
|
||
--XSENDER,
|
||
--PRS_BEDRIJFADRES_KEY
|
||
)
|
||
AS -- Op Rappeltermijn voor Actiedatum naar 1e Aanspreekpunt
|
||
SELECT 'CNTMAI',
|
||
NULL,
|
||
c.prs_perslid_key_eig,
|
||
'Actie: Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|
||
|| ' ' || b.prs_bedrijf_naam || ' ' || c.cnt_contract_omschrijving,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
fac.safe_to_date (kc.cnt_kenmerkcontract_waarde, 'dd-mm-yyyy'),
|
||
NULL
|
||
--NULL xemail,
|
||
--NULL xmobile,
|
||
--NULL fac_srtnotificatie_key,
|
||
--NULL attachments,
|
||
--NULL xsender,
|
||
--NULL prs_bedrijfadres_key
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b, cnt_termijn ct,
|
||
--(SELECT * FROM cnt_kenmerkcontract WHERE cnt_kenmerkcontract_verwijder IS NULL AND cnt_kenmerk_key IN (8, 28, 29, 30)) kc, -- Actiedatum contractbeheer
|
||
(SELECT * FROM cnt_kenmerkcontract WHERE cnt_kenmerkcontract_verwijder IS NULL AND cnt_kenmerk_key IN (9, 25, 26, 27)) kc -- Actiedatum
|
||
WHERE c.cnt_contract_status = 0
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND c.cnt_contract_rappeltermijn = ct.cnt_termijn_key
|
||
AND c.cnt_contract_key = kc.cnt_contract_key
|
||
AND TRUNC (DECODE (ct.cnt_termijn_type,
|
||
'W', SYSDATE + (ct.cnt_termijn_aantal * 7),
|
||
'M', ADD_MONTHS (SYSDATE, ct.cnt_termijn_aantal),
|
||
'Y', ADD_MONTHS (SYSDATE, ct.cnt_termijn_aantal * 12),
|
||
SYSDATE + ct.cnt_termijn_aantal)) = fac.safe_to_date (kc.cnt_kenmerkcontract_waarde, 'dd-mm-yyyy')
|
||
UNION -- Op Rappeldatum naar 1e Aanspreekpunt
|
||
SELECT 'CNTMAI',
|
||
NULL,
|
||
c.prs_perslid_key_eig,
|
||
'Rappel: Contract ' || c.cnt_contract_nummer_intern || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
|
||
|| ' ' || b.prs_bedrijf_naam || ' ' || c.cnt_contract_omschrijving,
|
||
c.cnt_contract_key,
|
||
c.cnt_contract_nummer_intern,
|
||
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
NULL
|
||
--NULL xemail,
|
||
--NULL xmobile,
|
||
--NULL fac_srtnotificatie_key,
|
||
--NULL attachments,
|
||
--NULL xsender,
|
||
--NULL prs_bedrijfadres_key
|
||
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
|
||
WHERE c.cnt_contract_status = 0
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE);
|
||
|
||
CREATE OR REPLACE VIEW FMHN_V_RAP_CNT
|
||
(
|
||
CONTRACTSOORT,
|
||
CNT_CONTRACT_KEY,
|
||
CONTRACTNR,
|
||
BESCHR,
|
||
EXTERNNR,
|
||
MANTELNR,
|
||
OMSCHR,
|
||
--DIENST,
|
||
CONTRACTAFD,
|
||
AANSPREEKPUNT1,
|
||
ICBMEDEWERKER1,
|
||
OPMERKING,
|
||
STATUS,
|
||
INGANGSDATUM,
|
||
RAPPELDATUM,
|
||
OPZEGDATUM,
|
||
EINDDATUM,
|
||
CONTRACTANT,
|
||
--CONTACTNAAM,
|
||
--KOSTENPLAATSCODE
|
||
--KOSTENPLAATSOMSCHR,
|
||
CONTRACTBEDRAG,
|
||
--TERMIJNBEDRAG,
|
||
--UURTARIEF,
|
||
--KORTING,
|
||
--LOCATIEGEBOUW,
|
||
--VERLENGEN,
|
||
PLANON_REF,
|
||
GEMANAGED_FMH,
|
||
BEHEREND_IUC,
|
||
AANSPREEKPUNT2,
|
||
ICBMEDEWERKER2,
|
||
ICB_SENIOR,
|
||
ACTIEDATUM_BEHEER,
|
||
ACTIEDATUM,
|
||
EINDDAT_SPEND,
|
||
EUROPESE_AANBEST,
|
||
VERLENGING_LT1,
|
||
VERLENGING_LT2,
|
||
MAX_EINDDATUM,
|
||
WERKGEBIED
|
||
)
|
||
AS
|
||
SELECT x.contractsoort,
|
||
x.cnt_contract_key,
|
||
x.cnt_contract_nummer_intern || DECODE (x.cnt_contract_versie, NULL, '', '.' || cnt_contract_versie) contractnr,
|
||
x.cnt_contract_omschrijving beschrijving,
|
||
x.cnt_contract_nummer externnr,
|
||
x.mantelnr,
|
||
x.cnt_contract_document omschrijving,
|
||
--x.dienst,
|
||
x.eigenaar_afd,
|
||
x.eigenaar,
|
||
x.beheerder,
|
||
x.cnt_contract_opmerking opmerking,
|
||
DECODE (x.cnt_contract_status, 1, 'Gesloten', 2, 'Nieuw', 3, 'Ter goedkeuring', 'Definitief') status,
|
||
TO_CHAR (x.cnt_contract_looptijd_van, 'dd-mm-yyyy') ingangsdat,
|
||
TO_CHAR (cnt.cnt_getRappeldatum (x.cnt_contract_key), 'dd-mm-yyyy') rappeldat,
|
||
TO_CHAR (cnt.cnt_getOpzegdatum (x.cnt_contract_key), 'dd-mm-yyyy') opzegdat,
|
||
TO_CHAR (x.cnt_contract_looptijd_tot, 'dd-mm-yyyy') einddat,
|
||
x.contractant,
|
||
--x.contactnaam,
|
||
--x.kostenplaatscode,
|
||
--x.kostenplaatsomschr,
|
||
TO_CHAR (x.cnt_contract_kosten) contractbedrag,
|
||
--TO_CHAR (x.cnt_contract_termijnkosten) termijnbedrag,
|
||
--TO_CHAR (x.cnt_contract_uurloon) uurtarief,
|
||
--TO_CHAR (x.cnt_contract_korting) korting,
|
||
--x.plaats locatiegebouw,
|
||
--TO_CHAR (x.cnt_contract_verlenging) verlengen,
|
||
pr.cnt_kenmerkcontract_waarde planon_referentie,
|
||
--pb.cnt_kenmerkcontract_waarde planon_bedrijf,
|
||
gfmh_ud.fac_usrdata_omschr gemanaged_fmh,
|
||
biuc_ud.fac_usrdata_omschr beherend_iuc,
|
||
ap2_pf.prs_perslid_naam_full aanspreekpunt2,
|
||
icbm_pf.prs_perslid_naam_full icb_medewerker,
|
||
icbs_pf.prs_perslid_naam_full icb_senior,
|
||
adcb.cnt_kenmerkcontract_waarde actiedat_beheer,
|
||
ad.cnt_kenmerkcontract_waarde actiedat,
|
||
edsp.cnt_kenmerkcontract_waarde einddat_spend,
|
||
ea_ud.fac_usrdata_omschr europese_aanbest,
|
||
vl1.cnt_kenmerkcontract_waarde verlenging_lt1,
|
||
vl2.cnt_kenmerkcontract_waarde verlenging_lt2,
|
||
med.cnt_kenmerkcontract_waarde max_einddat,
|
||
wg_ud.fac_usrdata_omschr werkgebied
|
||
FROM (SELECT c.*,
|
||
cd.ins_discipline_omschrijving contractsoort,
|
||
cm.cnt_contract_nummer_intern mantelnr,
|
||
--d.prs_dienst_omschrijving dienst,
|
||
a.prs_afdeling_naam eigenaar_afd,
|
||
eig.prs_perslid_naam_full eigenaar,
|
||
beh.prs_perslid_naam_full beheerder,
|
||
b.prs_bedrijf_naam contractant
|
||
--cp.prs_contactpersoon_naam contactnaam,
|
||
--kp.prs_kostenplaats_nr kostenplaatscode,
|
||
--kp.prs_kostenplaats_omschrijving kostenplaatsomschr,
|
||
--p.plaats
|
||
FROM cnt_v_aanwezigcontract c,
|
||
cnt_discipline cd,
|
||
cnt_v_aanwezigcontract cm,
|
||
--prs_dienst d,
|
||
prs_afdeling a,
|
||
prs_v_perslid_fullnames_all eig,
|
||
prs_v_perslid_fullnames_all beh,
|
||
prs_v_aanwezigbedrijf b
|
||
--prs_contactpersoon cp,
|
||
--prs_kostenplaats kp,
|
||
--(SELECT DISTINCT
|
||
-- cp.cnt_contract_key,
|
||
-- COALESCE (l.alg_locatie_code, g.alg_gebouw_code) plaats
|
||
-- FROM cnt_contract_plaats cp
|
||
-- LEFT JOIN alg_v_aanweziglocatie l
|
||
-- ON cp.cnt_alg_plaats_key = l.alg_locatie_key
|
||
-- AND cp.cnt_alg_plaats_code = 'L'
|
||
-- LEFT JOIN alg_v_aanweziggebouw g
|
||
-- ON cp.cnt_alg_plaats_key = g.alg_gebouw_key
|
||
-- AND cp.cnt_alg_plaats_code = 'G'
|
||
-- WHERE cp.cnt_contract_plaats_verwijder IS NULL) p
|
||
WHERE c.ins_discipline_key = cd.ins_discipline_key
|
||
AND c.cnt_contract_mantel_key = cm.cnt_contract_key(+)
|
||
--AND c.prs_dienst_key = d.prs_dienst_key(+)
|
||
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
|
||
AND c.prs_perslid_key_eig = eig.prs_perslid_key(+)
|
||
AND c.prs_perslid_key_beh = beh.prs_perslid_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
||
--AND c.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
|
||
--AND c.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
|
||
--AND c.cnt_contract_key = p.cnt_contract_key(+)
|
||
) x
|
||
LEFT JOIN cnt_kenmerkcontract pr
|
||
ON x.cnt_contract_key = pr.cnt_contract_key
|
||
AND pr.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 1 AND cnt_kenmerk_key = pr.cnt_kenmerk_key) -- Planon referentie
|
||
--LEFT JOIN cnt_kenmerkcontract pb
|
||
-- ON x.cnt_contract_key = pb.cnt_contract_key
|
||
-- AND pb.cnt_kenmerkcontract_verwijder IS NULL
|
||
-- AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 2 AND cnt_kenmerk_key = pb.cnt_kenmerk_key) -- Planon bedrijf
|
||
LEFT JOIN cnt_kenmerkcontract gfmh
|
||
ON x.cnt_contract_key = gfmh.cnt_contract_key
|
||
AND gfmh.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 3 AND cnt_kenmerk_key = gfmh.cnt_kenmerk_key) -- Gemanaged door FMH
|
||
LEFT JOIN fac_v_aanwezigusrdata gfmh_ud
|
||
ON fac.safe_to_number (gfmh.cnt_kenmerkcontract_waarde) = gfmh_ud.fac_usrdata_key
|
||
LEFT JOIN cnt_kenmerkcontract biuc
|
||
ON x.cnt_contract_key = biuc.cnt_contract_key
|
||
AND biuc.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 4 AND cnt_kenmerk_key = biuc.cnt_kenmerk_key) -- Beherend IUC
|
||
LEFT JOIN fac_v_aanwezigusrdata biuc_ud
|
||
ON fac.safe_to_number (biuc.cnt_kenmerkcontract_waarde) = biuc_ud.fac_usrdata_key
|
||
LEFT JOIN cnt_kenmerkcontract ap2
|
||
ON x.cnt_contract_key = ap2.cnt_contract_key
|
||
AND ap2.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 16 AND cnt_kenmerk_key = ap2.cnt_kenmerk_key) -- 2e Aanspreekpunt
|
||
LEFT JOIN prs_v_perslid_fullnames_all ap2_pf
|
||
ON fac.safe_to_number (ap2.cnt_kenmerkcontract_waarde) = ap2_pf.prs_perslid_key
|
||
LEFT JOIN cnt_kenmerkcontract icbm
|
||
ON x.cnt_contract_key = icbm.cnt_contract_key
|
||
AND icbm.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 17 AND cnt_kenmerk_key = icbm.cnt_kenmerk_key) -- ICB Medewerker
|
||
LEFT JOIN prs_v_perslid_fullnames_all icbm_pf
|
||
ON fac.safe_to_number (icbm.cnt_kenmerkcontract_waarde) = icbm_pf.prs_perslid_key
|
||
LEFT JOIN cnt_kenmerkcontract icbs
|
||
ON x.cnt_contract_key = icbs.cnt_contract_key
|
||
AND icbs.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 18 AND cnt_kenmerk_key = icbs.cnt_kenmerk_key) -- ICB Senior
|
||
LEFT JOIN prs_v_perslid_fullnames_all icbs_pf
|
||
ON fac.safe_to_number (icbs.cnt_kenmerkcontract_waarde) = icbs_pf.prs_perslid_key
|
||
LEFT JOIN cnt_kenmerkcontract adcb
|
||
ON x.cnt_contract_key = adcb.cnt_contract_key
|
||
AND adcb.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 8 AND cnt_kenmerk_key = adcb.cnt_kenmerk_key) -- Actiedatum contractbeheer
|
||
LEFT JOIN cnt_kenmerkcontract ad
|
||
ON x.cnt_contract_key = ad.cnt_contract_key
|
||
AND ad.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 9 AND cnt_kenmerk_key = ad.cnt_kenmerk_key) -- Actiedatum
|
||
LEFT JOIN cnt_kenmerkcontract edsp
|
||
ON x.cnt_contract_key = edsp.cnt_contract_key
|
||
AND edsp.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 10 AND cnt_kenmerk_key = edsp.cnt_kenmerk_key) -- Einddatum tbv. SPEND
|
||
LEFT JOIN cnt_kenmerkcontract ea
|
||
ON x.cnt_contract_key = ea.cnt_contract_key
|
||
AND ea.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 11 AND cnt_kenmerk_key = ea.cnt_kenmerk_key) -- Europese aanbesteding
|
||
LEFT JOIN fac_v_aanwezigusrdata ea_ud
|
||
ON fac.safe_to_number (ea.cnt_kenmerkcontract_waarde) = ea_ud.fac_usrdata_key
|
||
LEFT JOIN cnt_kenmerkcontract vl1
|
||
ON x.cnt_contract_key = vl1.cnt_contract_key
|
||
AND vl1.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 12 AND cnt_kenmerk_key = vl1.cnt_kenmerk_key) -- 1e verlenging looptijd
|
||
LEFT JOIN cnt_kenmerkcontract vl2
|
||
ON x.cnt_contract_key = vl2.cnt_contract_key
|
||
AND vl2.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 13 AND cnt_kenmerk_key = vl2.cnt_kenmerk_key) -- 2e verlenging looptijd
|
||
LEFT JOIN cnt_kenmerkcontract med
|
||
ON x.cnt_contract_key = med.cnt_contract_key
|
||
AND med.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 14 AND cnt_kenmerk_key = med.cnt_kenmerk_key) -- Maximale einddatum
|
||
LEFT JOIN cnt_kenmerkcontract wg
|
||
ON x.cnt_contract_key = wg.cnt_contract_key
|
||
AND wg.cnt_kenmerkcontract_verwijder IS NULL
|
||
AND EXISTS (SELECT 1 FROM cnt_kenmerk WHERE cnt_kenmerk_verwijder IS NULL AND cnt_srtkenmerk_key = 15 AND cnt_kenmerk_key = wg.cnt_kenmerk_key) -- Werkgebied
|
||
LEFT JOIN fac_v_aanwezigusrdata wg_ud
|
||
ON fac.safe_to_number (wg.cnt_kenmerkcontract_waarde) = wg_ud.fac_usrdata_key;
|
||
|
||
-- Koppeling Sentido tbv. Hoftoren!
|
||
CREATE OR REPLACE VIEW fmhn_v_api_sentido
|
||
AS
|
||
SELECT TO_CHAR (rr.res_rsv_ruimte_van, 'YYYYMMDD-HH24MI') || TO_CHAR (rr.res_rsv_ruimte_tot, ',YYYYMMDD-HH24MI')
|
||
srt,
|
||
rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nummer,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'YYYY-MM-DD HH24:MI:SS') van,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'YYYY-MM-DD HH24:MI:SS') tot,
|
||
rr.res_rsv_ruimte_omschrijving omschrijving,
|
||
pf.prs_perslid_naam_full host,
|
||
TRIM (r.res_ruimte_nr) ruimte,
|
||
r.res_ruimte_key ruimte_key
|
||
FROM res_rsv_ruimte rr, res_ruimte_opstelling ro, res_ruimte r, prs_v_perslid_fullnames pf
|
||
WHERE rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rr.res_status_fo_key NOT IN (3, 4)
|
||
AND COALESCE (rr.res_rsv_ruimte_bezoekers_shown, rr.res_rsv_ruimte_noshow) IS NULL
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = r.res_ruimte_key
|
||
AND EXISTS
|
||
(SELECT 1
|
||
FROM res_alg_ruimte ar, alg_v_onroerendgoed aog
|
||
WHERE ar.res_ruimte_key = r.res_ruimte_key
|
||
AND ar.alg_ruimte_key = aog.alg_onroerendgoed_keys
|
||
AND aog.alg_type = 'R'
|
||
AND alg_gebouw_key = 4) -- Hoftoren
|
||
AND rr.res_rsv_ruimte_host_key = pf.prs_perslid_key
|
||
AND TRUNC (rr.res_rsv_ruimte_van) BETWEEN TRUNC (SYSDATE) AND TRUNC (SYSDATE + 3);
|
||
/*
|
||
-- Rapportje met res_ruimte-gegevens, inclusief volledige URL naar de booking
|
||
-- pagina van de door Sentido te genereren QR-code.
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_ruimtes_sentido
|
||
AS
|
||
SELECT res_ruimte_key ruimte_key,
|
||
res_ruimte_nr ruimte_nr,
|
||
'https://fmhn.facilitor.nl/?u=xxx&'||'res_ruimte_key=' || res_ruimte_key ruimte_url
|
||
FROM res_v_aanwezigruimte;
|
||
*/
|
||
-- Koppeling Smart Signs tbv. Turfmarkt (en Resident)!
|
||
/*
|
||
CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat
|
||
(
|
||
res_rsv_ruimte_key,
|
||
res_rsv_ruimte_omschrijving,
|
||
res_rsv_ruimte_van,
|
||
res_rsv_ruimte_tot,
|
||
res_rsv_ruimte_bezoekers,
|
||
res_ruimte_key,
|
||
res_ruimte_nr
|
||
)
|
||
AS
|
||
SELECT r.res_rsv_ruimte_key,
|
||
res_rsv_ruimte_omschrijving,
|
||
TO_CHAR (r.res_rsv_ruimte_van, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi:ss'),
|
||
TO_CHAR (r.res_rsv_ruimte_tot, 'yyyy-mm-dd')
|
||
|| 'T'
|
||
|| TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi:ss'),
|
||
COALESCE (res_rsv_ruimte_bezoekers, 0),
|
||
rr.res_ruimte_key,
|
||
DECODE (
|
||
INSTR (res_ruimte_nr, '('),
|
||
0, res_ruimte_nr,
|
||
SUBSTR (
|
||
res_ruimte_nr,
|
||
INSTR (res_ruimte_nr, '(') + 1,
|
||
INSTR (res_ruimte_nr, ')')
|
||
- INSTR (res_ruimte_nr, '(')
|
||
- 1))
|
||
FROM res_rsv_ruimte r,
|
||
res_ruimte_opstelling rro,
|
||
res_ruimte rr,
|
||
(SELECT rrr.res_rsv_ruimte_key,
|
||
(SELECT w.res_kenmerkreservering_waarde
|
||
FROM res_kenmerkwaarde w, res_kenmerk k
|
||
WHERE w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND w.res_kenmerk_key = k.res_kenmerk_key
|
||
AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key
|
||
AND k.res_srtkenmerk_key = 1 -- zichtbaar op planbord
|
||
AND k.res_activiteit_key = rrr.res_activiteit_key) res_kenmerkreservering_waarde
|
||
FROM res_rsv_ruimte rrr) ds
|
||
WHERE r.res_rsv_ruimte_verwijder IS NULL
|
||
AND r.res_status_fo_key = 2
|
||
AND r.res_rsv_ruimte_key = ds.res_rsv_ruimte_key
|
||
AND r.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
|
||
AND rro.res_ruimte_key = rr.res_ruimte_key
|
||
AND ( fac.safe_to_number (ds.res_kenmerkreservering_waarde) = 2
|
||
OR r.res_rsv_ruimte_contact_key = 30064) -- SmartSigns user
|
||
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE);
|
||
|
||
CREATE OR REPLACE VIEW PNBR_V_RAP_DAGSTAAT_BRON
|
||
(
|
||
FCLT_D_DATUM,
|
||
DAGVWEEK,
|
||
MAAND,
|
||
DAG,
|
||
JAAR,
|
||
NUMMER,
|
||
TIJDSORT,
|
||
RUIMTE_VAN,
|
||
RUIMTE_TOT,
|
||
BEZOEKERS,
|
||
ACTIVITEIT,
|
||
OMSCHRIJVING,
|
||
OPMERKING,
|
||
RUIMTE,
|
||
VERDIEPING,
|
||
LOCATIE,
|
||
MELDER,
|
||
TELEFOON,
|
||
KOSTENPLAATS,
|
||
BEGRPOST,
|
||
BESTELNR,
|
||
OPSTELLING,
|
||
AANTALCATERING,
|
||
V_VAN,
|
||
V_TOT,
|
||
V_OMSCHRIJVING,
|
||
V_AANTAL,
|
||
V_PRIJS,
|
||
V_TOTAAL,
|
||
GS,
|
||
CDK,
|
||
RES_RSV_RUIMTE_KEY,
|
||
RES_DISCIPLINE_KEY,
|
||
RES_BESNR_CATERAAR,
|
||
PROJECTMGR_EVENEMENT,
|
||
LM_MUT,
|
||
LM_DEL
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy')
|
||
datum,
|
||
DECODE (TO_CHAR (res_rsv_ruimte_van, 'd'),
|
||
1, 'zondag',
|
||
2, 'maandag',
|
||
3, 'dinsdag',
|
||
4, 'woensdag',
|
||
5, 'donderdag',
|
||
6, 'vrijdag',
|
||
7, 'zaterdag')
|
||
dagvweek,
|
||
DECODE (TO_CHAR (res_rsv_ruimte_van, 'mm'),
|
||
1, 'januari',
|
||
2, 'februari',
|
||
3, 'maart',
|
||
4, 'april',
|
||
5, 'mei',
|
||
6, 'juni',
|
||
7, 'juli',
|
||
8, 'augustus',
|
||
9, 'september',
|
||
10, 'oktober',
|
||
11, 'november',
|
||
12, 'december')
|
||
maand,
|
||
TO_CHAR (res_rsv_ruimte_van, 'dd')
|
||
dag,
|
||
TO_CHAR (res_rsv_ruimte_van, 'yyyy')
|
||
jaar,
|
||
res_reservering_key || '/' || res_rsv_ruimte_volgnr
|
||
nummer,
|
||
TO_CHAR (res_rsv_ruimte_van, 'yyyymmddhh24mi')
|
||
tijdsort,
|
||
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi')
|
||
ruimte_van,
|
||
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi')
|
||
ruimte_tot,
|
||
res_rsv_ruimte_bezoekers
|
||
bezoekers,
|
||
res_activiteit_omschrijving,
|
||
DECODE (
|
||
rrr.res_activiteit_key,
|
||
150, 'GEBAK '
|
||
|| (SELECT ud.fac_usrdata_omschr
|
||
FROM res_kenmerkwaarde rk, fac_usrdata ud
|
||
WHERE rk.res_kenmerk_key = 262
|
||
AND ud.fac_usrtab_key = 1943 -- kenmerk + usertab zakelijk/prive
|
||
AND ud.fac_usrdata_key =
|
||
fac.safe_to_number (
|
||
rk.res_kenmerkreservering_waarde)
|
||
AND rk.res_rsv_ruimte_key =
|
||
rrr.res_rsv_ruimte_key),
|
||
UPPER (res_rsv_ruimte_omschrijving)),
|
||
res_rsv_ruimte_opmerking
|
||
opmerking,
|
||
COALESCE (
|
||
(SELECT res_ruimte_nr
|
||
FROM res_v_ruimte_opstel_gegevens rog
|
||
WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key),
|
||
(SELECT MAX (alg_ruimte_aanduiding)
|
||
FROM alg_v_ruimte_gegevens rg
|
||
WHERE rrr.alg_ruimte_key = rg.alg_ruimte_key))
|
||
ruimte,
|
||
vg.alg_verdieping_omschrijving
|
||
verdieping,
|
||
vg.alg_locatie_omschrijving
|
||
locatie,
|
||
prs_perslid_naam_full
|
||
melder,
|
||
COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel)
|
||
telefoon,
|
||
k.prs_kostenplaats_nr
|
||
kostenplaats,
|
||
COALESCE (bp_extra.waarde, bp.waarde)
|
||
begrpost,
|
||
bnk.waarde
|
||
bestelnr,
|
||
(SELECT rog.res_opstelling_omschrijving
|
||
FROM res_v_ruimte_opstel_gegevens rog
|
||
WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)
|
||
opstelling,
|
||
(SELECT COUNT (*)
|
||
FROM res_rsv_artikel rra
|
||
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
|
||
aantalcatering,
|
||
TO_CHAR (v.van, 'hh24:mi')
|
||
v_van,
|
||
v.tot
|
||
v_tot,
|
||
v.omschrijving
|
||
v_omschrijving,
|
||
v.aantal
|
||
v_aantal,
|
||
v.prijs
|
||
v_prijs,
|
||
COALESCE (v.aantal, 0) * v.prijs
|
||
v_totaal,
|
||
COALESCE (gs.waarde, '0')
|
||
gs,
|
||
COALESCE (cdk.waarde, '0')
|
||
cdk,
|
||
rrr.res_rsv_ruimte_key,
|
||
v.res_discipline_key,
|
||
kn_bes_cateraar.waarde,
|
||
projmngr_evenement.prs_perslid_naam_friendly,
|
||
v.lm_mut,
|
||
v.lm_del
|
||
FROM res_rsv_ruimte rrr,
|
||
(SELECT res_rsv_ruimte_key,
|
||
res_rsv_artikel_aantal aantal,
|
||
res_artikel_prijs prijs,
|
||
res_rsv_artikel_levering van,
|
||
NULL tot,
|
||
ra.res_artikel_omschrijving omschrijving,
|
||
ra.res_discipline_key,
|
||
CASE
|
||
WHEN ( rra.res_rsv_artikel_aanmaak >=
|
||
referentie.ref_datum
|
||
OR rra.res_rsv_artikel_mutatie >=
|
||
referentie.ref_datum)
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END LM_MUT,
|
||
CASE
|
||
WHEN rra.res_rsv_artikel_verwijder >=
|
||
referentie.ref_datum
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee'
|
||
END LM_DEL
|
||
FROM res_rsv_artikel rra,
|
||
res_artikel ra,
|
||
(SELECT fac.safe_to_date (
|
||
( TO_CHAR (SYSDATE - 1, 'dd-mm-yyyy')
|
||
|| ' 16:00'), -- om te bekijken welke wijzigingen in de catering zijn doorgevoerd na 16 uur
|
||
'dd-mm-yyyy HH24:mi') AS ref_datum
|
||
FROM DUAL) referentie
|
||
WHERE rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
UNION ALL
|
||
SELECT res_rsv_ruimte_key,
|
||
1 aantal,
|
||
NULL,
|
||
res_rsv_deel_van van,
|
||
res_rsv_deel_tot tot,
|
||
ins_deel_omschrijving omschrijving,
|
||
rd.res_discipline_key,
|
||
'' lm_mut, -- dit beoordelen we alleen voor verbuiksartikelen
|
||
'' lm_del
|
||
FROM res_rsv_deel rrd,
|
||
res_deel rd,
|
||
ins_deel d,
|
||
ins_srtdeel sd
|
||
WHERE rrd.res_rsv_deel_verwijder IS NULL
|
||
AND rrd.res_deel_key = rd.res_deel_key
|
||
AND rd.res_ins_deel_key = d.ins_deel_key
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key) v,
|
||
(SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
|
||
FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 21
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key
|
||
AND fac.safe_to_number (res_kenmerkreservering_waarde) =
|
||
fac_usrdata_key) bp,
|
||
(SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde
|
||
FROM res_kenmerkwaarde kw, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 61
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key) bp_extra,
|
||
(SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
|
||
FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 2
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key
|
||
AND fac.safe_to_number (res_kenmerkreservering_waarde) =
|
||
fac_usrdata_key) gs,
|
||
(SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
|
||
FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 22
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key
|
||
AND fac.safe_to_number (res_kenmerkreservering_waarde) =
|
||
fac_usrdata_key) cdk,
|
||
(SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde
|
||
FROM res_kenmerkwaarde kw, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 281
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key) bnk,
|
||
(SELECT fac_usrdata_omschr waarde, kw.res_rsv_ruimte_key
|
||
FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
|
||
WHERE rk.res_srtkenmerk_key = 441
|
||
AND kw.res_kenmerk_key = rk.res_kenmerk_key
|
||
AND fac.safe_to_number (res_kenmerkreservering_waarde) =
|
||
fac_usrdata_key) kn_bes_cateraar,
|
||
(SELECT rrr2.res_rsv_ruimte_key,
|
||
rg.alg_verdieping_omschrijving,
|
||
rg.alg_locatie_omschrijving
|
||
FROM alg_v_ruimte_gegevens rg, res_rsv_ruimte rrr2
|
||
WHERE rg.alg_ruimte_key =
|
||
COALESCE (
|
||
rrr2.alg_ruimte_key,
|
||
(SELECT MIN (rar.alg_ruimte_key)
|
||
FROM res_v_rsv_ruimte_2_alg_ruimte rar
|
||
WHERE rar.res_rsv_ruimte_key =
|
||
rrr2.res_rsv_ruimte_key))) vg,
|
||
(SELECT res_rsv_ruimte_key, p.prs_perslid_naam_friendly
|
||
FROM res_kenmerk k,
|
||
res_srtkenmerk sk,
|
||
res_kenmerkwaarde kw,
|
||
prs_v_perslid_fullnames_all p
|
||
WHERE k.res_srtkenmerk_key = sk.res_srtkenmerk_key
|
||
AND kw.res_kenmerk_key = k.res_kenmerk_key
|
||
AND fac.safe_to_number (kw.res_kenmerkreservering_waarde) =
|
||
p.prs_perslid_key
|
||
AND sk.res_srtkenmerk_key = 521) projmngr_evenement,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_kostenplaats k,
|
||
res_activiteit a
|
||
WHERE rrr.res_rsv_ruimte_key = v.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_activiteit_key = a.res_activiteit_key
|
||
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND rrr.res_rsv_ruimte_key = vg.res_rsv_ruimte_key
|
||
AND rrr.res_rsv_ruimte_key = bp.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key = bp_extra.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key = gs.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key = cdk.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key = bnk.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key =
|
||
projmngr_evenement.res_rsv_ruimte_key(+)
|
||
AND rrr.res_rsv_ruimte_key = kn_bes_cateraar.res_rsv_ruimte_key(+);
|
||
|
||
CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_cat
|
||
(
|
||
fclt_f_datum,
|
||
dag,
|
||
dagvweek,
|
||
maand,
|
||
jaar,
|
||
nummer,
|
||
tijdsort,
|
||
ruimte_van,
|
||
ruimte_tot,
|
||
bezoekers,
|
||
activiteit,
|
||
omschrijving,
|
||
opmerking,
|
||
ruimte,
|
||
verdieping,
|
||
fclt_f_locatie,
|
||
melder,
|
||
telefoon,
|
||
kostenplaats,
|
||
begrpost,
|
||
bestelnr,
|
||
opstelling,
|
||
aantalcatering,
|
||
v_van,
|
||
v_tot,
|
||
v_omschrijving,
|
||
v_aantal,
|
||
v_prijs,
|
||
v_totaal,
|
||
gs,
|
||
cdk,
|
||
res_besnr_cateraar,
|
||
lm_mut,
|
||
lm_del
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (TO_DATE (fclt_d_datum, 'dd-mm-yyyy'), 'yyyy-mm-dd')
|
||
|| ' ('
|
||
|| dagvweek
|
||
|| ')',
|
||
dag,
|
||
dagvweek,
|
||
maand,
|
||
jaar,
|
||
nummer,
|
||
tijdsort,
|
||
ruimte_van,
|
||
ruimte_tot,
|
||
bezoekers,
|
||
activiteit,
|
||
omschrijving,
|
||
opmerking,
|
||
ruimte,
|
||
verdieping,
|
||
locatie,
|
||
melder,
|
||
telefoon,
|
||
kostenplaats,
|
||
begrpost,
|
||
bestelnr,
|
||
opstelling,
|
||
aantalcatering,
|
||
v_van,
|
||
v_tot,
|
||
v_omschrijving,
|
||
v_aantal,
|
||
v_prijs,
|
||
v_totaal,
|
||
gs,
|
||
cdk,
|
||
res_besnr_cateraar,
|
||
LM_MUT,
|
||
LM_DEL
|
||
FROM pnbr_v_rap_dagstaat_bron
|
||
WHERE TO_DATE (fclt_d_datum, 'dd-mm-yyyy') BETWEEN TRUNC (SYSDATE - 5)
|
||
AND TRUNC (SYSDATE + 10);
|
||
|
||
CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_even
|
||
(
|
||
fclt_d_datum,
|
||
dag,
|
||
dagvweek,
|
||
maand,
|
||
jaar,
|
||
nummer,
|
||
tijdsort,
|
||
ruimte_van,
|
||
ruimte_tot,
|
||
bezoekers,
|
||
activiteit,
|
||
omschrijving,
|
||
opmerking,
|
||
ruimte,
|
||
verdieping,
|
||
melder,
|
||
telefoon,
|
||
kostenplaats,
|
||
begrpost,
|
||
bestelnr,
|
||
opstelling,
|
||
v_van,
|
||
v_tot,
|
||
v_omschrijving,
|
||
v_aantal,
|
||
v_prijs,
|
||
v_totaal,
|
||
gs,
|
||
cdk,
|
||
res_besnr_cateraar,
|
||
projectmgr_evenement
|
||
)
|
||
AS
|
||
SELECT fclt_d_datum,
|
||
dag,
|
||
dagvweek,
|
||
maand,
|
||
jaar,
|
||
nummer,
|
||
tijdsort,
|
||
ruimte_van,
|
||
ruimte_tot,
|
||
bezoekers,
|
||
activiteit,
|
||
omschrijving,
|
||
opmerking,
|
||
ruimte,
|
||
verdieping,
|
||
melder,
|
||
telefoon,
|
||
kostenplaats,
|
||
begrpost,
|
||
bestelnr,
|
||
opstelling,
|
||
v_van,
|
||
v_tot,
|
||
v_omschrijving,
|
||
v_aantal,
|
||
v_prijs,
|
||
v_totaal,
|
||
gs,
|
||
cdk,
|
||
res_besnr_cateraar,
|
||
projectmgr_evenement
|
||
FROM pnbr_v_rap_dagstaat_bron b
|
||
WHERE activiteit = 'Evenement'
|
||
OR EXISTS -- of reserveringen met catering die de klant niet zelf mag bestellen
|
||
(SELECT res_rsv_ruimte_key
|
||
FROM pnbr_v_rap_dagstaat_bron b2, ins_tab_discipline d
|
||
WHERE b2.res_discipline_key IS NOT NULL
|
||
AND d.ins_discipline_min_level = 2
|
||
AND b2.res_discipline_key = d.ins_discipline_key
|
||
AND b.res_rsv_ruimte_key = b2.res_rsv_ruimte_key);
|
||
*/
|
||
CREATE OR REPLACE VIEW fmhn_v_api_smartsigns
|
||
(
|
||
van,
|
||
tot,
|
||
key,
|
||
resid,
|
||
locatiecode,
|
||
gebouwcode,
|
||
fclt_3d_gebouw_key,
|
||
verdiepingcode,
|
||
ruimtecode,
|
||
ruimtenaam,
|
||
rvck_vnr,
|
||
voorziening,
|
||
aantal,
|
||
prijs,
|
||
btw,
|
||
act_oms,
|
||
srtact_oms,
|
||
bezoekers,
|
||
fo_status_key,
|
||
fo_status,
|
||
bo_status_key,
|
||
bo_status,
|
||
contact,
|
||
host,
|
||
kostenplaats,
|
||
resruimtekey,
|
||
algruimtekey,
|
||
algruimtenr,
|
||
omschrijving,
|
||
opmerking,
|
||
dagstaat
|
||
)
|
||
AS
|
||
SELECT x.van van_datumtijd,
|
||
x.tot tot_datumtijd,
|
||
x.res_rsv_ruimte_key res_key,
|
||
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) res_id,
|
||
rvck.loc_code,
|
||
rvck.geb_code,
|
||
rvck.geb_key,
|
||
rvck.ver_code,
|
||
rvck.alg_ruimte_nr ruimtecode,
|
||
rvck.res_ruimte_nr ruimtenaam,
|
||
rvck.vnr,
|
||
rvck.voorziening,
|
||
rvck.aantal,
|
||
ROUND (COALESCE (rvck.res_rsv_prijs, rvck.aantal * rvck.ps), 2) prijs,
|
||
rvck.btw,
|
||
x.res_activiteit_omschrijving,
|
||
x.res_srtactiviteit_omschrijving,
|
||
x.res_rsv_ruimte_bezoekers bezoekers,
|
||
x.fo_status_key,
|
||
DECODE (x.fo_status_key,
|
||
1, 'RESOPT',
|
||
2, 'RESDEF',
|
||
3, 'RESBLK',
|
||
'RESDEL')
|
||
fo_status,
|
||
x.bo_status_key,
|
||
x.bo_status_oms,
|
||
x.contact_naam,
|
||
x.host_naam,
|
||
x.kp_nr,
|
||
rvck.res_ruimte_key,
|
||
rvck.alg_ruimte_key,
|
||
rvck.alg_ruimte_nr algruimtenr, -- 2e keer, maar weet niet of gebruikt door Smart Signs?
|
||
x.res_rsv_ruimte_omschrijving oms,
|
||
x.res_rsv_ruimte_opmerking opm,
|
||
--DECODE (x.contact_key,
|
||
-- 46, 'Ja', -- _API-user tbv. Smart Signs
|
||
-- DECODE (COALESCE ((SELECT res_kenmerkreservering_waarde
|
||
-- FROM res_kenmerkwaarde kw, res_kenmerk k
|
||
-- WHERE kw.res_kenmerk_key = k.res_kenmerk_key
|
||
-- AND k.res_srtkenmerk_key = -1 -- Zichtbaar op dagstaat
|
||
-- AND kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key), '1'),
|
||
-- '1', 'Nee',
|
||
-- 'Ja'))
|
||
'Ja' dagstaat
|
||
FROM (SELECT rrr.res_rsv_ruimte_key,
|
||
rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
a.res_activiteit_key,
|
||
a.res_activiteit_omschrijving,
|
||
sa.res_srtactiviteit_key,
|
||
sa.res_srtactiviteit_omschrijving,
|
||
rrr.res_rsv_ruimte_van van,
|
||
rrr.res_rsv_ruimte_tot tot,
|
||
rrr.res_rsv_ruimte_bezoekers,
|
||
fs.res_status_fo_key fo_status_key,
|
||
fs.res_status_fo_omschrijving fo_status_oms,
|
||
bs.res_status_bo_key bo_status_key,
|
||
bs.res_status_bo_omschrijving bo_status_oms,
|
||
pfc.prs_perslid_key contact_key,
|
||
pfc.prs_perslid_naam_full contact_naam,
|
||
pfh.prs_perslid_key host_key,
|
||
pfh.prs_perslid_naam_full host_naam,
|
||
k.prs_kostenplaats_nr kp_nr,
|
||
k.prs_kostenplaats_omschrijving kp_oms,
|
||
rrr.res_rsv_ruimte_omschrijving,
|
||
rrr.res_rsv_ruimte_opmerking
|
||
FROM res_v_aanwezigrsv_ruimte rrr, -- Alleen aanwezige!
|
||
res_activiteit a,
|
||
res_srtactiviteit sa,
|
||
res_status_fo fs,
|
||
res_status_bo bs,
|
||
prs_v_perslid_fullnames_all pfc,
|
||
prs_v_perslid_fullnames_all pfh,
|
||
prs_kostenplaats k
|
||
WHERE rrr.res_rsv_ruimte_tot > TRUNC (SYSDATE, 'IW') - 7
|
||
AND rrr.res_ruimte_opstel_key IS NOT NULL -- Alleen ruimtereserveringen!
|
||
AND rrr.res_rsv_ruimte_dirtlevel = 0
|
||
AND rrr.res_activiteit_key = a.res_activiteit_key
|
||
AND a.res_activiteit_verwijder IS NULL
|
||
AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key
|
||
AND sa.res_srtactiviteit_verwijder IS NULL
|
||
AND rrr.res_status_fo_key = fs.res_status_fo_key
|
||
AND rrr.res_status_bo_key = bs.res_status_bo_key
|
||
AND rrr.res_rsv_ruimte_contact_key = pfc.prs_perslid_key
|
||
AND rrr.res_rsv_ruimte_host_key = pfh.prs_perslid_key
|
||
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x
|
||
LEFT JOIN
|
||
(SELECT rrr.res_rsv_ruimte_key,
|
||
l.alg_locatie_code loc_code,
|
||
g.alg_gebouw_code geb_code,
|
||
g.alg_gebouw_key geb_key,
|
||
v.alg_verdieping_code ver_code,
|
||
r.alg_ruimte_nr,
|
||
rr.res_ruimte_nr,
|
||
r.alg_ruimte_key alg_ruimte_key,
|
||
rr.res_ruimte_key res_ruimte_key,
|
||
TO_NUMBER (NULL) vnr,
|
||
ro.res_opstelling_omschrijving voorziening,
|
||
ROUND ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 2)
|
||
aantal, -- Duur in uren
|
||
rrr.res_rsv_ruimte_prijs res_rsv_prijs,
|
||
rr.res_ruimte_prijs ps, -- Uurtarief
|
||
rr.res_ruimte_prijs_ochtend po,
|
||
rr.res_ruimte_prijs_middag pm,
|
||
rr.res_ruimte_prijs_avond pa,
|
||
NULL btw
|
||
FROM res_v_aanwezigrsv_ruimte rrr,
|
||
res_ruimte_opstelling rro,
|
||
res_ruimte rr,
|
||
( SELECT res_ruimte_key,
|
||
MAX (alg_ruimte_key) alg_ruimte_key,
|
||
COUNT ( * ) aantal
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
res_opstelling ro
|
||
WHERE 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 = 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 rro.res_opstelling_key = ro.res_opstelling_key) rvck
|
||
ON x.res_rsv_ruimte_key = rvck.res_rsv_ruimte_key
|
||
--WHERE alg_gebouw_key IN (3, 5, 6) -- TODO:Turfmarkt 147/Parnassusplein 5 (Resident)/Turfmarkt 244
|
||
;
|
||
|
||
-- T.b.v. facturatie en verwerking in Exact van kostendragende RES / BES / MLD
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_sleutelbestand
|
||
(
|
||
Datum,
|
||
Gebouw,
|
||
Melder,
|
||
Afdeling,
|
||
Nummer,
|
||
PDC_nummer,
|
||
PDC_naam,
|
||
Omschrijving,
|
||
Kosten,
|
||
Aanvraag_voor,
|
||
Status,
|
||
Jaar,
|
||
Maand,
|
||
Artikel,
|
||
Dienst,
|
||
Departement,
|
||
Debiteur,
|
||
Kostendrager,
|
||
Kostenplaats
|
||
)
|
||
AS
|
||
SELECT trunc (datum),
|
||
alg_locatie_omschrijving,
|
||
p.prs_perslid_naam
|
||
|| NVL2 (p.prs_perslid_voorletters,
|
||
', ' || p.prs_perslid_voorletters,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
||
' ' || p.prs_perslid_tussenvoegsel,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_voornaam,
|
||
' (' || p.prs_perslid_voornaam || ')',
|
||
'')
|
||
aanvrager,
|
||
pva.prs_afdeling_naam organisatie,
|
||
categorienummer,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_opmerking,
|
||
categorie,
|
||
SUM (bedrag) bedrag,
|
||
pf.prs_perslid_naam_full,
|
||
status,
|
||
to_char (datum, 'YYYY') jaar,
|
||
to_char (datum, 'MM') maand,
|
||
NULL,-- artikelnr uit Exact?
|
||
NULL,-- dienst uit Exact
|
||
(SELECT pb.prs_bedrijf_naam
|
||
FROM prs_bedrijf pb
|
||
WHERE pb.prs_bedrijf_key = pva.prs_bedrijf_key) departement,
|
||
(SELECT pl.prs_kenmerklink_waarde
|
||
FROM prs_kenmerklink pl
|
||
WHERE pl.prs_link_key = pva.prs_afdeling_key
|
||
AND pl.prs_kenmerklink_niveau = 'A'
|
||
AND pl.prs_kenmerk_key = 1007) debiteur,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM
|
||
alg_onrgoedkenmerk ao, alg_gebouw g
|
||
WHERE g.alg_locatie_key = l.alg_locatie_key
|
||
AND g.alg_gebouw_key = ao.alg_onrgoed_key
|
||
AND ao.alg_onrgoed_niveau = 'G'
|
||
AND alg_kenmerk_key = 1020) kostendrager,
|
||
lcl.x ('prs_kostenplaats_omschrijving',
|
||
k.prs_kostenplaats_key,
|
||
k.prs_kostenplaats_omschrijving)
|
||
FROM (SELECT rr.prs_kostenplaats_key,
|
||
trunc (rr.res_rsv_ruimte_van) datum,
|
||
res_rsv_ruimte_contact_key prs_perslid_key,
|
||
res_rsv_ruimte_host_key host_key,
|
||
'Reservering' categorie,
|
||
TO_CHAR (rr.res_reservering_key)
|
||
|| '/'
|
||
|| rr.res_rsv_ruimte_volgnr
|
||
categorienummer,
|
||
res_rsv_ruimte_prijs bedrag,
|
||
s.res_status_bo_omschrijving status,
|
||
'RES' module,
|
||
dis.prs_kostensoort_key,
|
||
rr.res_rsv_ruimte_ordernr ordernr,
|
||
rr.res_reservering_key kostenplaats_item_key,
|
||
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
|
||
(SELECT MAX (g.alg_locatie_key)
|
||
FROM alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
res_alg_ruimte ar
|
||
WHERE ar.res_alg_ruimte_verwijder IS NULL
|
||
AND ar.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 ar.res_ruimte_key = ro.res_ruimte_key)
|
||
locatie_key
|
||
FROM res_v_aanwezigrsv_ruimte rr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte ru,
|
||
res_discipline dis,
|
||
res_status_bo s
|
||
WHERE ru.res_ruimte_prijs <> 0
|
||
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = ru.res_ruimte_key
|
||
AND s.res_status_bo_key = rr.res_status_bo_key
|
||
AND ru.res_discipline_key = dis.ins_discipline_key
|
||
UNION ALL
|
||
SELECT rr.prs_kostenplaats_key,
|
||
trunc (ra.res_rsv_artikel_levering) datum,
|
||
res_rsv_ruimte_contact_key prs_perslid_key,
|
||
res_rsv_ruimte_host_key host_key,
|
||
'Reservering' categorie,
|
||
TO_CHAR (rr.res_reservering_key)
|
||
|| '/'
|
||
|| rr.res_rsv_ruimte_volgnr
|
||
categorienummer,
|
||
res_rsv_artikel_prijs bedrag,
|
||
s.res_status_bo_omschrijving status,
|
||
'RES' module,
|
||
dis.prs_kostensoort_key,
|
||
rr.res_rsv_ruimte_ordernr ordernr,
|
||
rr.res_reservering_key kostenplaats_item_key,
|
||
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
|
||
COALESCE (
|
||
(SELECT g.alg_locatie_key
|
||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE rr.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),
|
||
(SELECT MAX (g.alg_locatie_key)
|
||
FROM alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
res_alg_ruimte ar,
|
||
res_ruimte_opstelling ro
|
||
WHERE ar.res_alg_ruimte_verwijder IS NULL
|
||
AND ar.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 ar.res_ruimte_key = ro.res_ruimte_key
|
||
AND rr.res_ruimte_opstel_key =
|
||
ro.res_ruimte_opstel_key))
|
||
locatie_key
|
||
FROM res_v_aanwezigrsv_ruimte rr,
|
||
res_v_aanwezigrsv_artikel ra,
|
||
res_artikel a,
|
||
res_discipline dis,
|
||
res_status_bo s
|
||
WHERE COALESCE (ra.res_rsv_artikel_prijs,
|
||
a.res_artikel_prijs) <> 0
|
||
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND ra.res_artikel_key = a.res_artikel_key
|
||
AND s.res_status_bo_key = ra.res_status_bo_key
|
||
AND a.res_discipline_key = dis.ins_discipline_key
|
||
UNION ALL
|
||
SELECT rr.prs_kostenplaats_key,
|
||
trunc (rd.res_rsv_deel_van) datum,
|
||
res_rsv_ruimte_contact_key prs_perslid_key,
|
||
res_rsv_ruimte_host_key host_key,
|
||
'Reservering' categorie,
|
||
TO_CHAR (rr.res_reservering_key)
|
||
|| '/'
|
||
|| rr.res_rsv_ruimte_volgnr
|
||
categorienummer,
|
||
res_rsv_deel_prijs bedrag,
|
||
s.res_status_bo_omschrijving status,
|
||
'RES' module,
|
||
dis.prs_kostensoort_key,
|
||
rr.res_rsv_ruimte_ordernr ordernr,
|
||
rr.res_reservering_key kostenplaats_item_key,
|
||
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
|
||
COALESCE (
|
||
(SELECT g.alg_locatie_key
|
||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE rr.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),
|
||
(SELECT MAX (g.alg_locatie_key)
|
||
FROM alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
res_alg_ruimte ar,
|
||
res_ruimte_opstelling ro
|
||
WHERE ar.res_alg_ruimte_verwijder IS NULL
|
||
AND ar.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 ar.res_ruimte_key = ro.res_ruimte_key
|
||
AND rr.res_ruimte_opstel_key =
|
||
ro.res_ruimte_opstel_key))
|
||
locatie_key
|
||
FROM res_v_aanwezigrsv_ruimte rr,
|
||
res_v_aanwezigrsv_deel rd,
|
||
res_deel d,
|
||
res_discipline dis,
|
||
res_status_bo,
|
||
res_status_bo s
|
||
WHERE d.res_deel_prijs <> 0
|
||
AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
|
||
AND rd.res_deel_key = d.res_deel_key
|
||
AND s.res_status_bo_key = rd.res_status_bo_key
|
||
AND d.res_discipline_key = dis.ins_discipline_key
|
||
UNION ALL
|
||
SELECT o.prs_kostenplaats_key,
|
||
o.mld_opdr_datumbegin datum,
|
||
m.prs_perslid_key prs_perslid_key,
|
||
m.prs_perslid_key_voor host_key,
|
||
mdis.ins_discipline_omschrijving categorie,
|
||
sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
categorienummer,
|
||
COALESCE (o.mld_opdr_kosten, 0) bedrag,
|
||
s.mld_statusopdr_omschrijving status,
|
||
'MLD' module,
|
||
COALESCE (s.prs_kostensoort_key, mdis.prs_kostensoort_key)
|
||
prs_kostensoort_key,
|
||
o.mld_opdr_ordernr ordernr,
|
||
o.mld_opdr_key kostenplaats_item_key,
|
||
-1 kostenplaats_item_child_key,
|
||
m.mld_alg_locatie_key locatie_key
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_stdmelding s,
|
||
mld_discipline mdis,
|
||
ins_srtdiscipline sd,
|
||
mld_statusopdr s
|
||
WHERE o.mld_opdr_kosten <> 0
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
-- AND ot.mld_typeopdr_kosten = 1
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND s.mld_statusopdr_key = o.mld_statusopdr_key
|
||
AND m.mld_stdmelding_key = s.mld_stdmelding_key
|
||
AND mdis.ins_discipline_key = s.mld_ins_discipline_key
|
||
AND mdis.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 4, 10)
|
||
UNION ALL
|
||
SELECT b.prs_kostenplaats_key,
|
||
bo.bes_bestelopdr_datum datum,
|
||
b.prs_perslid_key prs_perslid_key,
|
||
b.prs_perslid_key_voor host_key,
|
||
'Bestelling' categorie,
|
||
TO_CHAR (b.bes_bestelling_key) categorienummer,
|
||
(boi.bes_bestelopdr_item_aantal
|
||
* boi.bes_bestelopdr_item_prijs)
|
||
bedrag,
|
||
s.bes_bestelopdrstatuses_omschr status,
|
||
'BES' module,
|
||
bdis.prs_kostensoort_key,
|
||
b.bes_bestelling_ordernr ordernr,
|
||
b.bes_bestelling_key kostenplaats_item_key,
|
||
-1 kostenplaats_item_child_key,
|
||
(SELECT alg_locatie_key
|
||
FROM mld_adres ma
|
||
WHERE ma.mld_adres_key = b.mld_adres_key_lev)
|
||
locatie_key
|
||
FROM bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr bo,
|
||
bes_bestelopdr_item boi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg,
|
||
bes_discipline bdis,
|
||
bes_bestelopdrstatuses s
|
||
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key =
|
||
boi.bes_bestelopdr_item_key
|
||
AND s.bes_bestelopdrstatuses_key = bo.bes_bestelopdr_status
|
||
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = bdis.ins_discipline_key
|
||
AND bo.bes_bestelopdr_status IN (4, 6, 7)) tab,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaatsgrp kpg,
|
||
prs_kostensoort ks,
|
||
prs_kostensoortgrp ksg,
|
||
prs_perslid p,
|
||
prs_v_afdeling pva,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_regio r,
|
||
prs_v_perslid_fullnames pf
|
||
WHERE tab.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND tab.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
|
||
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
|
||
AND tab.prs_perslid_key = p.prs_perslid_key(+)
|
||
AND tab.host_key = pf.prs_perslid_key(+)
|
||
AND p.prs_afdeling_key = pva.prs_afdeling_key(+)
|
||
AND tab.locatie_key = l.alg_locatie_key(+)
|
||
AND l.alg_district_key = d.alg_district_key(+)
|
||
AND d.alg_regio_key = r.alg_regio_key(+)
|
||
AND datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
|
||
GROUP BY k.prs_kostenplaats_nr,
|
||
lcl.x ('prs_kostenplaats_omschrijving',
|
||
k.prs_kostenplaats_key,
|
||
k.prs_kostenplaats_omschrijving),
|
||
datum,
|
||
p.prs_perslid_naam
|
||
|| NVL2 (p.prs_perslid_voorletters,
|
||
', ' || p.prs_perslid_voorletters,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_tussenvoegsel,
|
||
' ' || p.prs_perslid_tussenvoegsel,
|
||
'')
|
||
|| NVL2 (p.prs_perslid_voornaam,
|
||
' (' || p.prs_perslid_voornaam || ')',
|
||
''),
|
||
pva.prs_afdeling_naam,
|
||
pva.prs_afdeling_key,
|
||
categorie,
|
||
categorienummer,
|
||
status,
|
||
kpg.prs_kostenplaatsgrp_oms,
|
||
ksg.prs_kostensoortgrp_oms,
|
||
ks.prs_kostensoort_oms,
|
||
ks.prs_kostensoort_opmerking,
|
||
ordernr,
|
||
ksg.prs_kostensoortgrp_oms,
|
||
alg_locatie_key,
|
||
alg_district_omschrijving,
|
||
alg_regio_omschrijving,
|
||
alg_locatie_code,
|
||
alg_locatie_omschrijving,
|
||
pva.prs_bedrijf_key,
|
||
pf.prs_perslid_naam_full;
|
||
|
||
--Tijdelijke view, voor inzicht in de migratie van meldingen.
|
||
CREATE OR REPLACE VIEW fmh_v_mld_migratie
|
||
AS
|
||
SELECT planonnr,
|
||
parentnr,
|
||
gebruikerstype,
|
||
status,
|
||
standaardorder,
|
||
omschrijving,
|
||
vakgroep,
|
||
melder,
|
||
afdeling,
|
||
aanvraagvoor,
|
||
gebouw,
|
||
ruimtenr,
|
||
plaats,
|
||
inventaris,
|
||
toelichting,
|
||
toelichtingintern,
|
||
oplosgroep,
|
||
uitvoerderint,
|
||
uitvoerderext,
|
||
prioriteit,
|
||
gereeddatum,
|
||
startdatumtijd,
|
||
vraagnpq,
|
||
einddatumtijd,
|
||
melddatum,
|
||
archiefdatum,
|
||
aangemaaktdoor,
|
||
pdcnr,
|
||
facturatiewijze,
|
||
aandachtsgebied,
|
||
syncdate,
|
||
spare1,
|
||
spare2,
|
||
spare3,
|
||
spare4,
|
||
spare5,
|
||
spare6,
|
||
spare7,
|
||
spare8,
|
||
spare9,
|
||
spare10,
|
||
spare11,
|
||
spare12,
|
||
spare13,
|
||
spare14,
|
||
spare15,
|
||
spare16,
|
||
spare17,
|
||
spare18,
|
||
spare19,
|
||
spare20,
|
||
spare21,
|
||
spare22,
|
||
spare23,
|
||
spare24,
|
||
spare25
|
||
FROM fmhn_tmp_mldmigratie;
|
||
|
||
--View tbv rapportage van passieve KTO
|
||
CREATE OR REPLACE VIEW fmhn_v_like_antwoorden
|
||
(
|
||
module,
|
||
aanvrager,
|
||
begunstigde,
|
||
key,
|
||
nummer,
|
||
cijfer,
|
||
opmerking,
|
||
disc_key,
|
||
vakgroep,
|
||
locatie_key,
|
||
locatie_code,
|
||
locatie_omschrijving,
|
||
datum
|
||
)
|
||
AS
|
||
SELECT 'Melding',
|
||
mkto.prs_perslid_key,
|
||
mkto.prs_perslid_key_voor,
|
||
mkto.mld_melding_key,
|
||
TO_CHAR (mkto.mld_melding_key),
|
||
mkto.mld_melding_satisfaction,
|
||
mkto.mld_melding_satisfaction_op,
|
||
mkto.mld_ins_discipline_key,
|
||
disc.ins_discipline_omschrijving,
|
||
mkto.mld_alg_locatie_key,
|
||
alg.alg_locatie_code,
|
||
alg.alg_locatie_omschrijving,
|
||
TRUNC (mld_melding_datum)
|
||
FROM mld_melding mkto, ins_tab_discipline disc, alg_locatie alg
|
||
WHERE disc.ins_discipline_key = mkto.mld_ins_discipline_key
|
||
AND alg.alg_locatie_key = mkto.mld_alg_locatie_key
|
||
UNION ALL
|
||
SELECT 'Reservering',
|
||
rkto.res_rsv_ruimte_contact_key,
|
||
rkto.res_rsv_ruimte_host_key,
|
||
rkto.res_rsv_ruimte_key,
|
||
rkto.res_reservering_key || '/' || rkto.res_rsv_ruimte_volgnr,
|
||
rkto.res_rsv_ruimte_satisfaction,
|
||
rkto.res_rsv_ruimte_satisfaction_op,
|
||
disc.ins_discipline_key,
|
||
disc.ins_discipline_omschrijving,
|
||
res.fclt_3d_locatie_key,
|
||
res.locatie,
|
||
res.locatie_omschrijving,
|
||
TRUNC (res_rsv_ruimte_van)
|
||
FROM res_rsv_ruimte rkto,
|
||
res_v_udr_reservering res,
|
||
ins_tab_discipline disc
|
||
WHERE rkto.res_rsv_ruimte_key = res.key
|
||
AND disc.ins_discipline_key = res.catalogus_key
|
||
UNION ALL
|
||
SELECT 'Bestelling',
|
||
bkto.prs_perslid_key,
|
||
bkto.prs_perslid_key_voor,
|
||
bkto.bes_bestelling_key,
|
||
TO_CHAR (bkto.bes_bestelling_key),
|
||
bkto.bes_bestelling_satisfaction,
|
||
bkto.bes_bestelling_satisfaction_op,
|
||
disc.ins_discipline_key,
|
||
disc.ins_discipline_omschrijving,
|
||
alg.alg_locatie_key,
|
||
alg.alg_locatie_code,
|
||
alg.alg_locatie_omschrijving,
|
||
TRUNC (bes_bestelling_datum)
|
||
FROM bes_bestelling bkto,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel bsd,
|
||
bes_srtgroep bsg,
|
||
ins_tab_discipline disc,
|
||
mld_adres a,
|
||
alg_locatie alg
|
||
WHERE bkto.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key
|
||
AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key
|
||
AND bsg.ins_discipline_key = disc.ins_discipline_key
|
||
AND bkto.mld_adres_key_lev = a.mld_adres_key
|
||
AND a.alg_locatie_key = alg.alg_locatie_key
|
||
GROUP BY bkto.prs_perslid_key,
|
||
bkto.prs_perslid_key_voor,
|
||
bkto.bes_bestelling_key,
|
||
TO_CHAR (bkto.bes_bestelling_key),
|
||
bkto.bes_bestelling_satisfaction,
|
||
bkto.bes_bestelling_satisfaction_op,
|
||
disc.ins_discipline_key,
|
||
disc.ins_discipline_omschrijving,
|
||
alg.alg_locatie_key,
|
||
alg.alg_locatie_code,
|
||
alg.alg_locatie_omschrijving,
|
||
TRUNC (bes_bestelling_datum);
|
||
|
||
--View tbv rapportage van passieve KTO
|
||
CREATE OR REPLACE VIEW fmhn_v_kto_passief
|
||
(
|
||
locatie_key,
|
||
locatie_code,
|
||
locatie_omschrijving,
|
||
ministerie,
|
||
begunstigde,
|
||
aanvrager,
|
||
cijfer,
|
||
opmerking,
|
||
module,
|
||
nummer,
|
||
disc_key,
|
||
vakgroep,
|
||
datum,
|
||
jaar,
|
||
kwartaal,
|
||
maand
|
||
)
|
||
AS
|
||
SELECT locatie_key,
|
||
locatie_code,
|
||
locatie_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
p_voor.prs_perslid_naam_friendly,
|
||
p_door.prs_perslid_naam_friendly,
|
||
fac.safe_to_number(cijfer),
|
||
opmerking,
|
||
module,
|
||
nummer,
|
||
disc_key,
|
||
vakgroep,
|
||
datum,
|
||
fac.safe_to_number (TO_CHAR (datum, 'YYYY')),
|
||
fac.safe_to_number (TO_CHAR (datum, 'Q')),
|
||
fac.safe_to_number (TO_CHAR (datum, 'MM'))
|
||
FROM fmhn_v_like_antwoorden,
|
||
prs_perslid p,
|
||
prs_v_aanwezigafdeling_boom pa,
|
||
prs_bedrijf b,
|
||
prs_v_perslid_fullnames_all p_voor,
|
||
prs_v_perslid_fullnames_all p_door
|
||
WHERE p.prs_perslid_key = fmhn_v_like_antwoorden.begunstigde
|
||
AND p.prs_afdeling_key = pa.prs_afdeling_key
|
||
AND pa.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND p.prs_perslid_key = p_voor.prs_perslid_key
|
||
AND fmhn_v_like_antwoorden.aanvrager = p_door.prs_perslid_key;
|
||
|
||
--View tbv rapportage van actieve KTO
|
||
CREATE OR REPLACE VIEW fmhn_v_kto_actief
|
||
(
|
||
locatie_key,
|
||
locatie_code,
|
||
locatie_omschrijving,
|
||
ministerie,
|
||
begunstigde,
|
||
aanvrager,
|
||
vraag,
|
||
cijfer,
|
||
opmerking,
|
||
module,
|
||
nummer,
|
||
melding_key,
|
||
disc_key,
|
||
vakgroep,
|
||
datum,
|
||
jaar,
|
||
kwartaal,
|
||
maand
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_key,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
p_voor.prs_perslid_naam_friendly,
|
||
p_door.prs_perslid_naam_friendly,
|
||
antwoorden.vraag,
|
||
fac.safe_to_number(antwoorden.cijfer),
|
||
antwoorden.toelichting,
|
||
'Melding',
|
||
m.mld_melding_kto_key,
|
||
m.mld_melding_key,
|
||
disc_kto.ins_discipline_key,
|
||
disc_kto.ins_discipline_omschrijving,
|
||
kto.mld_melding_datum,
|
||
fac.safe_to_number (TO_CHAR (kto.mld_melding_datum, 'YYYY')),
|
||
fac.safe_to_number (TO_CHAR (kto.mld_melding_datum, 'Q')),
|
||
fac.safe_to_number (TO_CHAR (kto.mld_melding_datum, 'MM'))
|
||
FROM mld_melding m,
|
||
mld_melding kto,
|
||
mld_stdmelding sm,
|
||
mld_stdmelding sm_kto,
|
||
ins_tab_discipline disc,
|
||
ins_tab_discipline disc_kto,
|
||
prs_perslid p,
|
||
prs_v_aanwezigafdeling_boom pa,
|
||
prs_bedrijf b,
|
||
prs_v_perslid_fullnames_all p_voor,
|
||
prs_v_perslid_fullnames_all p_door,
|
||
alg_locatie l,
|
||
(SELECT groep.mld_melding_key,
|
||
vraag.mld_kenmerk_omschrijving AS vraag,
|
||
groep.cijfer,
|
||
(SELECT DISTINCT (opm_kmm.mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding opm_kmm
|
||
WHERE opm_kmm.mld_kenmerk_key = opm.mld_kenmerk_key
|
||
AND opm_kmm.mld_melding_key = groep.mld_melding_key
|
||
AND opm_kmm.mld_kenmerkmelding_verwijder IS NULL)
|
||
AS toelichting
|
||
FROM mld_kenmerk vraag,
|
||
mld_srtkenmerk vraag_k,
|
||
mld_kenmerk opm,
|
||
mld_srtkenmerk opm_k,
|
||
( SELECT kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code AS cijfer
|
||
FROM mld_melding kto,
|
||
mld_kenmerkmelding kmm,
|
||
mld_kenmerk km,
|
||
mld_srtkenmerk skm,
|
||
fac_usrdata ud
|
||
WHERE kto.mld_melding_key = kmm.mld_melding_key
|
||
AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = skm.mld_srtkenmerk_key
|
||
AND kmm.mld_kenmerkmelding_verwijder IS NULL
|
||
AND TO_CHAR (ud.fac_usrdata_key) =
|
||
kmm.mld_kenmerkmelding_waarde
|
||
AND mld_srtkenmerk_kenmerktype = 'R'
|
||
GROUP BY kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code
|
||
ORDER BY kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code) groep
|
||
WHERE groep.mld_stdmelding_key = vraag.mld_stdmelding_key
|
||
AND groep.mld_kenmerk_groep = vraag.mld_kenmerk_groep
|
||
AND vraag.mld_srtkenmerk_key = vraag_k.mld_srtkenmerk_key
|
||
AND vraag_k.mld_srtkenmerk_kenmerktype = 'L'
|
||
AND groep.mld_stdmelding_key = opm.mld_stdmelding_key
|
||
AND groep.mld_kenmerk_groep = opm.mld_kenmerk_groep
|
||
AND opm.mld_srtkenmerk_key = opm_k.mld_srtkenmerk_key
|
||
AND opm_k.mld_srtkenmerk_kenmerktype = 'C') antwoorden
|
||
WHERE p.prs_perslid_key = kto.prs_perslid_key_voor
|
||
AND p.prs_afdeling_key = pa.prs_afdeling_key
|
||
AND pa.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND kto.prs_perslid_key_voor = p_voor.prs_perslid_key
|
||
AND kto.prs_perslid_key = p_door.prs_perslid_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
|
||
AND kto.mld_stdmelding_key = sm_kto.mld_stdmelding_key
|
||
AND sm_kto.mld_ins_discipline_key = disc_kto.ins_discipline_key
|
||
AND disc.ins_srtdiscipline_key = 141 --Vakgroeptype KTO
|
||
AND m.mld_melding_kto_type = 'M'
|
||
AND m.mld_melding_kto_key = kto.mld_melding_key
|
||
AND m.mld_melding_key = antwoorden.mld_melding_key
|
||
AND kto.mld_alg_locatie_key = l.alg_locatie_key
|
||
UNION ALL
|
||
SELECT res.fclt_3d_locatie_key,
|
||
res.locatie,
|
||
res.locatie_omschrijving,
|
||
b.prs_bedrijf_naam,
|
||
p_voor.prs_perslid_naam_friendly,
|
||
p_door.prs_perslid_naam_friendly,
|
||
antwoorden.vraag,
|
||
fac.safe_to_number(antwoorden.cijfer),
|
||
antwoorden.toelichting,
|
||
'Reservering',
|
||
m.mld_melding_kto_key,
|
||
m.mld_melding_key,
|
||
resdisc.ins_discipline_key,
|
||
resdisc.ins_discipline_omschrijving,
|
||
rkto.res_rsv_ruimte_van,
|
||
fac.safe_to_number (TO_CHAR (rkto.res_rsv_ruimte_van, 'YYYY')),
|
||
fac.safe_to_number (TO_CHAR (rkto.res_rsv_ruimte_van, 'Q')),
|
||
fac.safe_to_number (TO_CHAR (rkto.res_rsv_ruimte_van, 'MM'))
|
||
FROM mld_melding m,
|
||
res_rsv_ruimte rkto,
|
||
res_v_udr_reservering res,
|
||
ins_tab_discipline resdisc,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline disc,
|
||
prs_perslid p,
|
||
prs_v_aanwezigafdeling_boom pa,
|
||
prs_bedrijf b,
|
||
prs_v_perslid_fullnames_all p_voor,
|
||
prs_v_perslid_fullnames_all p_door,
|
||
(SELECT groep.mld_melding_key,
|
||
vraag.mld_kenmerk_omschrijving AS vraag,
|
||
groep.cijfer,
|
||
(SELECT DISTINCT (opm_kmm.mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding opm_kmm
|
||
WHERE opm_kmm.mld_kenmerk_key = opm.mld_kenmerk_key
|
||
AND opm_kmm.mld_melding_key = groep.mld_melding_key
|
||
AND opm_kmm.mld_kenmerkmelding_verwijder IS NULL)
|
||
AS toelichting
|
||
FROM mld_kenmerk vraag,
|
||
mld_srtkenmerk vraag_k,
|
||
mld_kenmerk opm,
|
||
mld_srtkenmerk opm_k,
|
||
( SELECT kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code AS cijfer
|
||
FROM mld_melding kto,
|
||
mld_kenmerkmelding kmm,
|
||
mld_kenmerk km,
|
||
mld_srtkenmerk skm,
|
||
fac_usrdata ud
|
||
WHERE kto.mld_melding_key = kmm.mld_melding_key
|
||
AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = skm.mld_srtkenmerk_key
|
||
AND kmm.mld_kenmerkmelding_verwijder IS NULL
|
||
AND TO_CHAR (ud.fac_usrdata_key) =
|
||
kmm.mld_kenmerkmelding_waarde
|
||
AND mld_srtkenmerk_kenmerktype = 'R'
|
||
GROUP BY kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code
|
||
ORDER BY kto.mld_melding_key,
|
||
km.mld_stdmelding_key,
|
||
km.mld_kenmerk_groep,
|
||
ud.fac_usrdata_code) groep
|
||
WHERE groep.mld_stdmelding_key = vraag.mld_stdmelding_key
|
||
AND groep.mld_kenmerk_groep = vraag.mld_kenmerk_groep
|
||
AND vraag.mld_srtkenmerk_key = vraag_k.mld_srtkenmerk_key
|
||
AND vraag_k.mld_srtkenmerk_kenmerktype = 'L'
|
||
AND groep.mld_stdmelding_key = opm.mld_stdmelding_key
|
||
AND groep.mld_kenmerk_groep = opm.mld_kenmerk_groep
|
||
AND opm.mld_srtkenmerk_key = opm_k.mld_srtkenmerk_key
|
||
AND opm_k.mld_srtkenmerk_kenmerktype = 'C') antwoorden
|
||
WHERE p.prs_perslid_key = rkto.res_rsv_ruimte_host_key
|
||
AND p.prs_afdeling_key = pa.prs_afdeling_key
|
||
AND pa.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND rkto.res_rsv_ruimte_host_key = p_voor.prs_perslid_key
|
||
AND rkto.res_rsv_ruimte_contact_key = p_door.prs_perslid_key
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
|
||
AND disc.ins_srtdiscipline_key = 141 --Vakgroeptype KTO
|
||
AND m.mld_melding_kto_type = 'R'
|
||
AND m.mld_melding_kto_key = rkto.res_rsv_ruimte_key
|
||
AND m.mld_melding_key = antwoorden.mld_melding_key
|
||
AND rkto.res_rsv_ruimte_key = res.key(+)
|
||
AND resdisc.ins_discipline_key = res.catalogus_key;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_departement
|
||
(
|
||
prs_bedrijf_key,
|
||
prs_bedrijf_naam
|
||
)
|
||
AS
|
||
SELECT prs_bedrijf_key, prs_bedrijf_naam
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE prs_bedrijf_intern = 1;
|
||
|
||
-- KPIs (rapportages en dashboards)!
|
||
-- Doorlooptijd dienstverlening.
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_afh_mld_dv
|
||
AS
|
||
SELECT m.meldingnummer,
|
||
m.melding_start_key,
|
||
m.melding_regio,
|
||
m.melding_district,
|
||
m.melding_locatiecode,
|
||
m.melding_locatie,
|
||
m.melding_locatieplaats,
|
||
m.melding_gebouwcode,
|
||
m.melding_gebouw,
|
||
m.melding_verdieping,
|
||
m.melding_ruimtenr,
|
||
m.melding_ruimte,
|
||
m.kostensoortgroep,
|
||
m.kostensoort,
|
||
m.kostenplaats,
|
||
m.kostenplaats_oms,
|
||
m.melder,
|
||
m.afdeling,
|
||
m.afdeling_omschrijving afdeling_oms,
|
||
m.invoerder,
|
||
m.meldbron,
|
||
m.soortmelding vakgroeptype,
|
||
m.productgroep vakgroep,
|
||
m.subproductgroep soortmelding,
|
||
m.behandelgroep,
|
||
m.behandelaar,
|
||
m.actieve_behandelgroep,
|
||
m.actieve_behandelaar,
|
||
m.melding_status,
|
||
m.sla_nvt,
|
||
m.sla_accptdgn,
|
||
m.sla_accpturen,
|
||
m.sla_werkdgn,
|
||
m.sla_werkuren,
|
||
m.plan_uitvoertijd_sla,
|
||
m.melding_datum,
|
||
m.melding_einddatum,
|
||
m.melding_einddatum_std,
|
||
m.melding_acceptdatum,
|
||
m.melding_afgemeld,
|
||
m.melding_accepted,
|
||
m.doorlooptijd_werkdgn,
|
||
m.doorlooptijd_werkuren,
|
||
m.onderwerp,
|
||
m.vomschrijving omschrijving,
|
||
m.melding_opmerking,
|
||
m.prioriteit,
|
||
m.rating,
|
||
m.rating_opmerking rating_opm,
|
||
m.actiecode,
|
||
m.accept_sla_dagen,
|
||
m.accept_sla_uren,
|
||
m.uitvoering_sla_dagen,
|
||
m.uitvoering_sla_uren,
|
||
m.afspraak_sla_dagen,
|
||
m.afspraak_sla_uren,
|
||
DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
m.selfservice,
|
||
TO_CHAR (m.melding_afgemeld, 'yyyy-mm') maand
|
||
FROM mld_v_udr_melding m
|
||
WHERE m.melding_afgemeld > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of m.melding_datum
|
||
AND m.sla_nvt = 0
|
||
AND INSTR (UPPER (subproductgroep), 'KLACHT') = 0
|
||
AND prioriteit IN (3, 4)
|
||
;
|
||
|
||
-- Afhandeling klachten.
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_afh_klachten
|
||
AS
|
||
SELECT m.meldingnummer,
|
||
m.melding_start_key,
|
||
m.melding_regio,
|
||
m.melding_district,
|
||
m.melding_locatiecode,
|
||
m.melding_locatie,
|
||
m.melding_locatieplaats,
|
||
m.melding_gebouwcode,
|
||
m.melding_gebouw,
|
||
m.melding_verdieping,
|
||
m.melding_ruimtenr,
|
||
m.melding_ruimte,
|
||
m.kostensoortgroep,
|
||
m.kostensoort,
|
||
m.kostenplaats,
|
||
m.kostenplaats_oms,
|
||
m.melder,
|
||
m.afdeling,
|
||
m.afdeling_omschrijving afdeling_oms,
|
||
m.invoerder,
|
||
m.meldbron,
|
||
m.soortmelding vakgroeptype,
|
||
m.productgroep vakgroep,
|
||
m.subproductgroep soortmelding,
|
||
m.behandelgroep,
|
||
m.behandelaar,
|
||
m.actieve_behandelgroep,
|
||
m.actieve_behandelaar,
|
||
m.melding_status,
|
||
m.sla_nvt,
|
||
m.sla_accptdgn,
|
||
m.sla_accpturen,
|
||
m.sla_werkdgn,
|
||
m.sla_werkuren,
|
||
m.plan_uitvoertijd_sla,
|
||
m.melding_datum,
|
||
m.melding_einddatum,
|
||
m.melding_einddatum_std,
|
||
m.melding_acceptdatum,
|
||
m.melding_afgemeld,
|
||
m.melding_accepted,
|
||
m.doorlooptijd_werkdgn,
|
||
m.doorlooptijd_werkuren,
|
||
m.onderwerp,
|
||
m.vomschrijving omschrijving,
|
||
m.melding_opmerking,
|
||
m.prioriteit,
|
||
m.rating,
|
||
m.rating_opmerking rating_opm,
|
||
m.actiecode,
|
||
m.accept_sla_dagen,
|
||
m.accept_sla_uren,
|
||
m.uitvoering_sla_dagen,
|
||
m.uitvoering_sla_uren,
|
||
m.afspraak_sla_dagen,
|
||
m.afspraak_sla_uren,
|
||
DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
m.selfservice,
|
||
TO_CHAR (m.melding_afgemeld, 'yyyy-mm') maand
|
||
FROM mld_v_udr_melding m
|
||
WHERE m.melding_afgemeld > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of m.melding_datum
|
||
AND m.sla_nvt = 0
|
||
AND INSTR (UPPER (subproductgroep), 'KLACHT') > 0
|
||
;
|
||
|
||
-- Facilitair oog.
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_facilitair_oog
|
||
AS
|
||
SELECT m.meldingnummer,
|
||
m.melding_start_key,
|
||
m.melding_regio,
|
||
m.melding_district,
|
||
m.melding_locatiecode,
|
||
m.melding_locatie,
|
||
m.melding_locatieplaats,
|
||
m.melding_gebouwcode,
|
||
m.melding_gebouw,
|
||
m.melding_verdieping,
|
||
m.melding_ruimtenr,
|
||
m.melding_ruimte,
|
||
m.kostensoortgroep,
|
||
m.kostensoort,
|
||
m.kostenplaats,
|
||
m.kostenplaats_oms,
|
||
m.melder,
|
||
m.afdeling,
|
||
m.afdeling_omschrijving afdeling_oms,
|
||
m.invoerder,
|
||
m.meldbron,
|
||
m.soortmelding vakgroeptype,
|
||
m.productgroep vakgroep,
|
||
m.subproductgroep soortmelding,
|
||
m.behandelgroep,
|
||
m.behandelaar,
|
||
m.actieve_behandelgroep,
|
||
m.actieve_behandelaar,
|
||
m.melding_status,
|
||
m.sla_nvt,
|
||
m.sla_accptdgn,
|
||
m.sla_accpturen,
|
||
m.sla_werkdgn,
|
||
m.sla_werkuren,
|
||
m.plan_uitvoertijd_sla,
|
||
m.melding_datum,
|
||
m.melding_einddatum,
|
||
m.melding_einddatum_std,
|
||
m.melding_acceptdatum,
|
||
m.melding_afgemeld,
|
||
m.melding_accepted,
|
||
m.doorlooptijd_werkdgn,
|
||
m.doorlooptijd_werkuren,
|
||
m.onderwerp,
|
||
m.vomschrijving omschrijving,
|
||
m.melding_opmerking,
|
||
m.prioriteit,
|
||
m.rating,
|
||
m.rating_opmerking rating_opm,
|
||
m.actiecode,
|
||
m.accept_sla_dagen,
|
||
m.accept_sla_uren,
|
||
m.uitvoering_sla_dagen,
|
||
m.uitvoering_sla_uren,
|
||
m.afspraak_sla_dagen,
|
||
m.afspraak_sla_uren,
|
||
DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
m.selfservice,
|
||
TO_CHAR (m.melding_afgemeld, 'yyyy-mm') maand,
|
||
DECODE (ab.prs_afdeling_key5, -1, 1, 0) facilitair_oog -- TODO:Key van FMH in BZK-afdelingsboom
|
||
FROM mld_v_udr_melding m, mld_melding m, prs_perslid p, prs_v_afdeling_boom ab
|
||
WHERE m.melding_afgemeld > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of m.melding_datum
|
||
--AND m.sla_nvt = 0
|
||
--AND INSTR (UPPER (subproductgroep), 'KLACHT') = 0
|
||
--AND prioriteit IN (1, 2)
|
||
AND SUBSTR (m.meldingnummer, REGEXP_INSTR (m.meldingnummer, '\d')) = TO_CHAR (m.mld_melding_key)
|
||
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
;
|
||
|
||
-- Afhandeling urgente meldingen.
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_afh_mld_prio
|
||
AS
|
||
SELECT m.meldingnummer,
|
||
m.melding_start_key,
|
||
m.melding_regio,
|
||
m.melding_district,
|
||
m.melding_locatiecode,
|
||
m.melding_locatie,
|
||
m.melding_locatieplaats,
|
||
m.melding_gebouwcode,
|
||
m.melding_gebouw,
|
||
m.melding_verdieping,
|
||
m.melding_ruimtenr,
|
||
m.melding_ruimte,
|
||
m.kostensoortgroep,
|
||
m.kostensoort,
|
||
m.kostenplaats,
|
||
m.kostenplaats_oms,
|
||
m.melder,
|
||
m.afdeling,
|
||
m.afdeling_omschrijving afdeling_oms,
|
||
m.invoerder,
|
||
m.meldbron,
|
||
m.soortmelding vakgroeptype,
|
||
m.productgroep vakgroep,
|
||
m.subproductgroep soortmelding,
|
||
m.behandelgroep,
|
||
m.behandelaar,
|
||
m.actieve_behandelgroep,
|
||
m.actieve_behandelaar,
|
||
m.melding_status,
|
||
m.sla_nvt,
|
||
m.sla_accptdgn,
|
||
m.sla_accpturen,
|
||
m.sla_werkdgn,
|
||
m.sla_werkuren,
|
||
m.plan_uitvoertijd_sla,
|
||
m.melding_datum,
|
||
m.melding_einddatum,
|
||
m.melding_einddatum_std,
|
||
m.melding_acceptdatum,
|
||
m.melding_afgemeld,
|
||
m.melding_accepted,
|
||
m.doorlooptijd_werkdgn,
|
||
m.doorlooptijd_werkuren,
|
||
m.onderwerp,
|
||
m.vomschrijving omschrijving,
|
||
m.melding_opmerking,
|
||
m.prioriteit,
|
||
m.rating,
|
||
m.rating_opmerking rating_opm,
|
||
m.actiecode,
|
||
m.accept_sla_dagen,
|
||
m.accept_sla_uren,
|
||
m.uitvoering_sla_dagen,
|
||
m.uitvoering_sla_uren,
|
||
m.afspraak_sla_dagen,
|
||
m.afspraak_sla_uren,
|
||
DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (m.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (m.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (m.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
m.selfservice,
|
||
TO_CHAR (m.melding_afgemeld, 'yyyy-mm') maand
|
||
FROM mld_v_udr_melding m
|
||
WHERE m.melding_afgemeld > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of m.melding_datum
|
||
AND m.sla_nvt = 0
|
||
AND INSTR (UPPER (subproductgroep), 'KLACHT') = 0
|
||
AND prioriteit IN (1, 2)
|
||
;
|
||
|
||
-- NoShow catering en reserveringen
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_res_noshow
|
||
AS
|
||
SELECT DISTINCT
|
||
b.prs_bedrijf_naam,
|
||
p.prs_afdeling_key,
|
||
SUBSTR (a.prs_afdeling_externid, 3) afdnr,
|
||
a.prs_afdeling_naam afdcode,
|
||
a.prs_afdeling_omschrijving afdoms,
|
||
d.alg_district_omschrijving district,
|
||
l.alg_locatie_code locatiecode,
|
||
l.alg_locatie_omschrijving locatie,
|
||
aog.alg_gebouw_code gebouwcode,
|
||
aog.alg_gebouw_naam gebouw,
|
||
rrr.res_rsv_ruimte_key,
|
||
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resid,
|
||
rrr.res_rsv_ruimte_van datum,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
act.res_activiteit_omschrijving activiteit,
|
||
rrr.res_rsv_ruimte_omschrijving omschrijving,
|
||
--rra.res_rsv_artikel_aantal aantal,
|
||
--ra.res_artikel_omschrijving artikel,
|
||
--res.getartikelprijs (rra.res_rsv_artikel_key) prijs,
|
||
rrr.res_rsv_ruimte_bezoekers aantal_pers,
|
||
rrr.res_rsv_ruimte_bezoekers_shown aantal_show,
|
||
rrr.res_rsv_ruimte_noshow noshow,
|
||
rrr.res_status_fo_key fo_status,
|
||
rrr.res_status_bo_key bo_status,
|
||
rrr.res_rsv_ruimte_verwijder,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand
|
||
FROM res_rsv_ruimte rrr,
|
||
res_v_aanwezigrsv_artikel rra,
|
||
res_artikel ra,
|
||
res_activiteit act,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
prs_afdeling a,
|
||
res_ruimte_opstelling rro,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar1,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NOT NULL
|
||
GROUP BY res_ruimte_key) rar2,
|
||
alg_v_allonrgoed_gegevens aog,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE rrr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of rrr.res_rsv_ruimte_van
|
||
--AND rrr.res_rsv_ruimte_bezoekers_shown IS NOT NULL
|
||
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
|
||
AND rra.res_artikel_key = ra.res_artikel_key
|
||
AND rrr.res_activiteit_key = act.res_activiteit_key
|
||
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND ab.prs_afdeling_key = a.prs_afdeling_key
|
||
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
||
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
|
||
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
|
||
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
|
||
AND aog.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
;
|
||
|
||
-- Openstaande meldingen vandaag en komende 5 werkdagen
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_mld_open_d
|
||
AS
|
||
SELECT x.meldingnummer,
|
||
x.melding_start_key,
|
||
x.melding_regio,
|
||
x.melding_district,
|
||
x.melding_locatiecode,
|
||
x.melding_locatie,
|
||
x.melding_locatieplaats,
|
||
x.melding_gebouwcode,
|
||
x.melding_gebouw,
|
||
x.melding_verdieping,
|
||
x.melding_ruimtenr,
|
||
x.melding_ruimte,
|
||
x.kostensoortgroep,
|
||
x.kostensoort,
|
||
x.kostenplaats,
|
||
x.kostenplaats_oms,
|
||
x.melder,
|
||
x.afdeling,
|
||
x.afdeling_omschrijving afdeling_oms,
|
||
x.invoerder,
|
||
x.meldbron,
|
||
x.soortmelding vakgroeptype,
|
||
x.productgroep vakgroep,
|
||
x.subproductgroep soortmelding,
|
||
x.behandelgroep,
|
||
x.behandelaar,
|
||
x.actieve_behandelgroep,
|
||
x.actieve_behandelaar,
|
||
x.melding_status,
|
||
x.sla_nvt,
|
||
x.sla_accptdgn,
|
||
x.sla_accpturen,
|
||
x.sla_werkdgn,
|
||
x.sla_werkuren,
|
||
x.plan_uitvoertijd_sla,
|
||
x.melding_datum,
|
||
x.melding_einddatum,
|
||
x.melding_einddatum_std,
|
||
x.melding_acceptdatum,
|
||
x.melding_afgemeld,
|
||
x.melding_accepted,
|
||
x.doorlooptijd_werkdgn,
|
||
x.doorlooptijd_werkuren,
|
||
x.onderwerp,
|
||
x.vomschrijving omschrijving,
|
||
x.melding_opmerking,
|
||
x.prioriteit,
|
||
x.rating,
|
||
x.rating_opmerking rating_opm,
|
||
x.actiecode,
|
||
x.accept_sla_dagen,
|
||
x.accept_sla_uren,
|
||
x.uitvoering_sla_dagen,
|
||
x.uitvoering_sla_uren,
|
||
x.afspraak_sla_dagen,
|
||
x.afspraak_sla_uren,
|
||
DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
x.selfservice,
|
||
TO_CHAR (x.melding_afgemeld, 'yyyy-mm') maand,
|
||
DECODE (SIGN (TRUNC (x.melding_einddatum_std) - TRUNC (SYSDATE)),
|
||
0, 1,
|
||
0)
|
||
sla_vandaag,
|
||
CASE
|
||
WHEN fac.count_work_days (SYSDATE, x.melding_einddatum_std) BETWEEN 1 AND 5
|
||
THEN 1
|
||
ELSE 0
|
||
END
|
||
sla_over5wd
|
||
FROM mld_v_udr_melding x,
|
||
mld_melding m,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab
|
||
WHERE x.melding_datum < SYSDATE -- Niet in de toekomst!
|
||
AND x.melding_afgemeld IS NULL -- Niet afgemeld, dus lopend!
|
||
--AND x.sla_nvt = 0
|
||
--AND INSTR (UPPER (x.subproductgroep), 'KLACHT') = 0
|
||
--AND x.prioriteit IN (1, 2)
|
||
AND SUBSTR (x.meldingnummer, REGEXP_INSTR (x.meldingnummer, '\d')) = TO_CHAR (m.mld_melding_key)
|
||
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
;
|
||
|
||
-- Openstaande meldingen tussen [w1] en [w2] weken
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_mld_open_w
|
||
AS
|
||
SELECT x.meldingnummer,
|
||
x.melding_start_key,
|
||
x.melding_regio,
|
||
x.melding_district,
|
||
x.melding_locatiecode,
|
||
x.melding_locatie,
|
||
x.melding_locatieplaats,
|
||
x.melding_gebouwcode,
|
||
x.melding_gebouw,
|
||
x.melding_verdieping,
|
||
x.melding_ruimtenr,
|
||
x.melding_ruimte,
|
||
x.kostensoortgroep,
|
||
x.kostensoort,
|
||
x.kostenplaats,
|
||
x.kostenplaats_oms,
|
||
x.melder,
|
||
x.afdeling,
|
||
x.afdeling_omschrijving afdeling_oms,
|
||
x.invoerder,
|
||
x.meldbron,
|
||
x.soortmelding vakgroeptype,
|
||
x.productgroep vakgroep,
|
||
x.subproductgroep soortmelding,
|
||
x.behandelgroep,
|
||
x.behandelaar,
|
||
x.actieve_behandelgroep,
|
||
x.actieve_behandelaar,
|
||
x.melding_status,
|
||
x.sla_nvt,
|
||
x.sla_accptdgn,
|
||
x.sla_accpturen,
|
||
x.sla_werkdgn,
|
||
x.sla_werkuren,
|
||
x.plan_uitvoertijd_sla,
|
||
x.melding_datum,
|
||
x.melding_einddatum,
|
||
x.melding_einddatum_std,
|
||
x.melding_acceptdatum,
|
||
x.melding_afgemeld,
|
||
x.melding_accepted,
|
||
x.doorlooptijd_werkdgn,
|
||
x.doorlooptijd_werkuren,
|
||
x.onderwerp,
|
||
x.vomschrijving omschrijving,
|
||
x.melding_opmerking,
|
||
x.prioriteit,
|
||
x.rating,
|
||
x.rating_opmerking rating_opm,
|
||
x.actiecode,
|
||
x.accept_sla_dagen,
|
||
x.accept_sla_uren,
|
||
x.uitvoering_sla_dagen,
|
||
x.uitvoering_sla_uren,
|
||
x.afspraak_sla_dagen,
|
||
x.afspraak_sla_uren,
|
||
DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
x.selfservice,
|
||
TO_CHAR (x.melding_afgemeld, 'yyyy-mm') maand,
|
||
DECODE (SIGN (TRUNC (x.melding_datum + 14) - TRUNC (SYSDATE)),
|
||
-1, 1,
|
||
0)
|
||
langer_2wk,
|
||
FLOOR ((SYSDATE - x.melding_datum) / 7) lopend_wk
|
||
FROM mld_v_udr_melding x,
|
||
mld_melding m,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab
|
||
WHERE x.melding_datum < SYSDATE -- Niet in de toekomst!
|
||
AND x.melding_afgemeld IS NULL -- Niet afgemeld, dus lopend!
|
||
--AND x.sla_nvt = 0
|
||
--AND INSTR (UPPER (x.subproductgroep), 'KLACHT') = 0
|
||
--AND x.prioriteit IN (1, 2)
|
||
AND SUBSTR (x.meldingnummer, REGEXP_INSTR (x.meldingnummer, '\d')) = TO_CHAR (m.mld_melding_key)
|
||
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
;
|
||
|
||
-- Reserveringen & evenementen
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_res_aantallen
|
||
AS
|
||
SELECT DISTINCT
|
||
b.prs_bedrijf_naam,
|
||
p.prs_afdeling_key,
|
||
SUBSTR (a.prs_afdeling_externid, 3) afdnr,
|
||
a.prs_afdeling_naam afdcode,
|
||
a.prs_afdeling_omschrijving afdoms,
|
||
d.alg_district_omschrijving district,
|
||
l.alg_locatie_code locatiecode,
|
||
l.alg_locatie_omschrijving locatie,
|
||
aog.alg_gebouw_code gebouwcode,
|
||
aog.alg_gebouw_naam gebouw,
|
||
rrr.res_rsv_ruimte_key,
|
||
rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr resid,
|
||
rrr.res_rsv_ruimte_van datum,
|
||
rrr.res_rsv_ruimte_van,
|
||
rrr.res_rsv_ruimte_tot,
|
||
act.res_activiteit_omschrijving activiteit,
|
||
rrr.res_rsv_ruimte_omschrijving omschrijving,
|
||
rrr.res_rsv_ruimte_bezoekers aantal_pers,
|
||
rrr.res_rsv_ruimte_bezoekers_shown aantal_show,
|
||
rrr.res_rsv_ruimte_noshow noshow,
|
||
rrr.res_status_fo_key fo_status,
|
||
rrr.res_status_bo_key bo_status,
|
||
rrr.res_rsv_ruimte_verwijder,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm') maand,
|
||
DECODE (rrr.res_status_fo_key,
|
||
1, DECODE (rrr.res_activiteit_key,
|
||
10, 'Vergadering-Optie',
|
||
11, 'Roomservice-Optie',
|
||
'Evenement-Optie'),
|
||
DECODE (rrr.res_activiteit_key,
|
||
10, 'Vergadering-Definitief',
|
||
11, 'Roomservice-Definitief',
|
||
'Evenement-Definitief'))
|
||
soortreservering
|
||
FROM res_rsv_ruimte rrr,
|
||
res_activiteit act,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
prs_afdeling a,
|
||
res_ruimte_opstelling rro,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NULL
|
||
GROUP BY res_ruimte_key) rar1,
|
||
( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key
|
||
FROM res_alg_ruimte
|
||
WHERE res_alg_ruimte_verwijder IS NOT NULL
|
||
GROUP BY res_ruimte_key) rar2,
|
||
alg_v_allonrgoed_gegevens aog,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE rrr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') -- Of rrr.res_rsv_ruimte_van
|
||
AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief
|
||
AND rrr.res_activiteit_key = act.res_activiteit_key
|
||
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND ab.prs_afdeling_key = a.prs_afdeling_key
|
||
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
|
||
AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
|
||
AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
|
||
AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) = aog.alg_ruimte_key
|
||
AND aog.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_ord_open
|
||
AS
|
||
SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype,
|
||
md.ins_discipline_omschrijving vakgroep,
|
||
sm.mld_stdmelding_omschrijving soortmelding,
|
||
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key)
|
||
meldingnummer,
|
||
DECODE (mld_melding_spoed,
|
||
3, lcl.l ('lcl_mld_urg_normaal'),
|
||
1, lcl.l ('lcl_mld_urg_kritiek'),
|
||
2, lcl.l ('lcl_mld_urg_hoog'),
|
||
4, lcl.l ('lcl_mld_urg_laag'))
|
||
prio,
|
||
d.alg_district_omschrijving district,
|
||
l.alg_locatie_code locatiecode,
|
||
l.alg_locatie_omschrijving locatie,
|
||
aog.alg_gebouw_code gebouwcode,
|
||
aog.alg_gebouw_naam gebouw,
|
||
o.mld_opdr_key,
|
||
sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
||
opdrachtnummer,
|
||
ot.mld_typeopdr_omschrijving opdrachttype,
|
||
o.mld_opdr_datumbegin,
|
||
--TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy') datum,
|
||
--TO_CHAR (o.mld_opdr_datumbegin, 'hh24:mi') tijd,
|
||
TO_CHAR (mld_statusopdr_key) status_key,
|
||
(SELECT mld_statusopdr_omschrijving
|
||
FROM mld_statusopdr
|
||
WHERE mld_statusopdr_key = o.mld_statusopdr_key)
|
||
status,
|
||
o.mld_opdr_einddatum,
|
||
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
|
||
--TO_CHAR (o.mld_opdr_einddatum, 'hh24:mi') eindtijd,
|
||
(SELECT naam
|
||
FROM mld_v_uitvoerende
|
||
WHERE mld_uitvoerende_key = o.mld_uitvoerende_keys)
|
||
opdracht_uitvoerende,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all
|
||
WHERE prs_perslid_key = o.prs_perslid_key)
|
||
behandelaar
|
||
FROM mld_opdr o,
|
||
mld_typeopdr ot,
|
||
mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
mld_disc_params mdp,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_v_allonrgoed_gegevens aog
|
||
WHERE o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Lopend (inclusief afgemelde Offerteaanvragen?)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||
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 = sd.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key = mdp.mld_ins_discipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_mld_beh
|
||
AS
|
||
SELECT x.meldingnummer,
|
||
x.melding_start_key,
|
||
x.melding_regio,
|
||
x.melding_district,
|
||
x.melding_locatiecode,
|
||
x.melding_locatie,
|
||
x.melding_locatieplaats,
|
||
x.melding_gebouwcode,
|
||
x.melding_gebouw,
|
||
x.melding_verdieping,
|
||
x.melding_ruimtenr,
|
||
x.melding_ruimte,
|
||
x.kostensoortgroep,
|
||
x.kostensoort,
|
||
x.kostenplaats,
|
||
x.kostenplaats_oms,
|
||
x.melder,
|
||
x.afdeling,
|
||
x.afdeling_omschrijving afdeling_oms,
|
||
x.invoerder,
|
||
x.meldbron,
|
||
x.soortmelding vakgroeptype,
|
||
x.productgroep vakgroep,
|
||
x.subproductgroep soortmelding,
|
||
x.behandelgroep,
|
||
x.behandelaar,
|
||
x.actieve_behandelgroep,
|
||
x.actieve_behandelaar,
|
||
x.melding_status,
|
||
x.sla_nvt,
|
||
x.sla_accptdgn,
|
||
x.sla_accpturen,
|
||
x.sla_werkdgn,
|
||
x.sla_werkuren,
|
||
x.plan_uitvoertijd_sla,
|
||
x.melding_datum,
|
||
x.melding_einddatum,
|
||
x.melding_einddatum_std,
|
||
x.melding_acceptdatum,
|
||
x.melding_afgemeld,
|
||
x.melding_accepted,
|
||
x.doorlooptijd_werkdgn,
|
||
x.doorlooptijd_werkuren,
|
||
x.onderwerp,
|
||
x.vomschrijving omschrijving,
|
||
x.melding_opmerking,
|
||
x.prioriteit,
|
||
x.rating,
|
||
x.rating_opmerking rating_opm,
|
||
x.actiecode,
|
||
x.accept_sla_dagen,
|
||
x.accept_sla_uren,
|
||
x.uitvoering_sla_dagen,
|
||
x.uitvoering_sla_uren,
|
||
x.afspraak_sla_dagen,
|
||
x.afspraak_sla_uren,
|
||
DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
x.selfservice,
|
||
TO_CHAR (x.melding_afgemeld, 'yyyy-mm') maand,
|
||
COALESCE (x.actieve_behandelaar, x.actieve_behandelgroep, x.behandelaar, '*Onbekend') in_behandeling_bij
|
||
FROM mld_v_udr_melding x,
|
||
mld_melding m,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab
|
||
WHERE x.melding_datum < SYSDATE -- Niet in de toekomst!
|
||
AND x.melding_afgemeld IS NULL -- Niet afgemeld, dus lopend!
|
||
--AND x.sla_nvt = 0
|
||
--AND INSTR (UPPER (x.subproductgroep), 'KLACHT') = 0
|
||
--AND x.prioriteit IN (1, 2)
|
||
AND SUBSTR (x.meldingnummer, REGEXP_INSTR (x.meldingnummer, '\d')) = TO_CHAR (m.mld_melding_key)
|
||
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
;
|
||
|
||
-- BHV rapportages en notificaties.
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_bhv_per_bedrijf
|
||
(
|
||
--disciplineomschrijving,
|
||
--groepsoortomschrijving,
|
||
--objectsoortcode,
|
||
--objectsoortomschrijving,
|
||
bedrijf,
|
||
afdeling,
|
||
persoon,
|
||
bhv_diplomanummer, --objectomschrijving,
|
||
--objectopmerking,
|
||
vervaldatum,
|
||
locatiecode,
|
||
locatieomschrijving,
|
||
etage,
|
||
bouwdeel,
|
||
sectie,
|
||
geboortedatum,
|
||
datum_indienst,
|
||
profiel,
|
||
dienstjaren,
|
||
inzetmaanden,
|
||
datum_jubileum,
|
||
verlengingsdatum,
|
||
leverancier,
|
||
bhv_per,
|
||
ehbo_per,
|
||
ehbo_diplomanummer,
|
||
basis_herhaling_op,
|
||
allround1_herhaling_op,
|
||
allround2_herhaling_op,
|
||
ploegleider_herhaling_op,
|
||
hbhv_herhaling_op
|
||
)
|
||
AS
|
||
SELECT --x.ins_discipline_omschrijving,
|
||
--x.ins_srtgroep_omschrijving,
|
||
--x.ins_srtdeel_code,
|
||
--x.ins_srtdeel_omschrijving,
|
||
x.prs_bedrijf_naam,
|
||
x.prs_afdeling_naam,
|
||
x.prs_perslid_naam_full,
|
||
x.ins_deel_omschrijving,
|
||
--x.ins_deel_opmerking,
|
||
x.ins_deel_vervaldatum,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
eta_ud.fac_usrdata_omschr etage,
|
||
bd.ins_kenmerkdeel_waarde bouwdeel,
|
||
sec_ud.fac_usrdata_omschr sectie,
|
||
gbd.ins_kenmerkdeel_waarde geboortedatum,
|
||
did.ins_kenmerkdeel_waarde datum_indienst,
|
||
pro_ud.fac_usrdata_omschr profiel,
|
||
dj.ins_kenmerkdeel_waarde dienstjaren,
|
||
im.ins_kenmerkdeel_waarde inzetmaanden,
|
||
dju.ins_kenmerkdeel_waarde datum_jubileum,
|
||
vld.ins_kenmerkdeel_waarde verlengingsdatum,
|
||
lev_ud.fac_usrdata_omschr leverancier,
|
||
bp.ins_kenmerkdeel_waarde bhv_per,
|
||
ep.ins_kenmerkdeel_waarde ehbo_per,
|
||
ed.ins_kenmerkdeel_waarde ehbo_diplomanummer,
|
||
bho.ins_kenmerkdeel_waarde basis_herhaling_op,
|
||
a1ho.ins_kenmerkdeel_waarde allround1_herhaling_op,
|
||
a2ho.ins_kenmerkdeel_waarde allround2_herhaling_op,
|
||
plho.ins_kenmerkdeel_waarde ploegleider_herhaling_op,
|
||
hho.ins_kenmerkdeel_waarde hbhv_herhaling_op
|
||
FROM (SELECT d.ins_deel_key,
|
||
--td.ins_discipline_omschrijving,
|
||
--sg.ins_srtgroep_omschrijving,
|
||
--sd.ins_srtdeel_code,
|
||
--sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_omschrijving,
|
||
--d.ins_deel_opmerking,
|
||
d.ins_deel_vervaldatum,
|
||
pf.prs_perslid_naam_full,
|
||
a.prs_afdeling_naam,
|
||
b.prs_bedrijf_naam
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
prs_afdeling a
|
||
WHERE d.ins_alg_ruimte_type = 'P'
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key = 761 -- BHV
|
||
AND d.ins_alg_ruimte_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key) x
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel loc
|
||
ON x.ins_deel_key = loc.ins_deel_key
|
||
AND loc.ins_kenmerk_key = 61 -- BHV-er voor locatie
|
||
LEFT JOIN alg_locatie l
|
||
ON fac.safe_to_number (loc.ins_kenmerkdeel_waarde) = l.alg_locatie_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel eta
|
||
ON x.ins_deel_key = eta.ins_deel_key
|
||
AND eta.ins_kenmerk_key = 62 -- Etage
|
||
LEFT JOIN fac_v_aanwezigusrdata eta_ud
|
||
ON fac.safe_to_number (eta.ins_kenmerkdeel_waarde) = eta_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bd
|
||
ON x.ins_deel_key = bd.ins_deel_key
|
||
AND bd.ins_kenmerk_key = 63 -- Bouwdeel
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel sec
|
||
ON x.ins_deel_key = sec.ins_deel_key
|
||
AND sec.ins_kenmerk_key = 64 -- Sectie
|
||
LEFT JOIN fac_v_aanwezigusrdata sec_ud
|
||
ON fac.safe_to_number (sec.ins_kenmerkdeel_waarde) = sec_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel gbd
|
||
ON x.ins_deel_key = gbd.ins_deel_key
|
||
AND gbd.ins_kenmerk_key = 65 -- Geboortedatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel did
|
||
ON x.ins_deel_key = did.ins_deel_key
|
||
AND did.ins_kenmerk_key = 66 -- Datum indienst
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel pro
|
||
ON x.ins_deel_key = pro.ins_deel_key
|
||
AND pro.ins_kenmerk_key = 67 -- Profiel
|
||
LEFT JOIN fac_v_aanwezigusrdata pro_ud
|
||
ON fac.safe_to_number (pro.ins_kenmerkdeel_waarde) = pro_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dj
|
||
ON x.ins_deel_key = dj.ins_deel_key
|
||
AND dj.ins_kenmerk_key = 68 -- Dienstjaren
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel im
|
||
ON x.ins_deel_key = im.ins_deel_key
|
||
AND im.ins_kenmerk_key = 69 -- Inzetmaanden
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dju
|
||
ON x.ins_deel_key = dju.ins_deel_key
|
||
AND dju.ins_kenmerk_key = 70 -- Datum jubileum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel vld
|
||
ON x.ins_deel_key = vld.ins_deel_key
|
||
AND vld.ins_kenmerk_key = 71 -- Verlengingsdatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel lev
|
||
ON x.ins_deel_key = lev.ins_deel_key
|
||
AND lev.ins_kenmerk_key = 72 -- Leverancier
|
||
LEFT JOIN fac_v_aanwezigusrdata lev_ud
|
||
ON fac.safe_to_number (lev.ins_kenmerkdeel_waarde) = lev_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bp
|
||
ON x.ins_deel_key = bp.ins_deel_key
|
||
AND bp.ins_kenmerk_key = 73 -- BHV-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ep
|
||
ON x.ins_deel_key = ep.ins_deel_key
|
||
AND ep.ins_kenmerk_key = 74 -- EHBO-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ed
|
||
ON x.ins_deel_key = ed.ins_deel_key
|
||
AND ed.ins_kenmerk_key = 75 -- EHBO-diplomanummer
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bho
|
||
ON x.ins_deel_key = bho.ins_deel_key
|
||
AND bho.ins_kenmerk_key = 76 -- Basis herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a1ho
|
||
ON x.ins_deel_key = a1ho.ins_deel_key
|
||
AND a1ho.ins_kenmerk_key = 77 -- Allround1 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a2ho
|
||
ON x.ins_deel_key = a2ho.ins_deel_key
|
||
AND a2ho.ins_kenmerk_key = 78 -- Allround2 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel plho
|
||
ON x.ins_deel_key = plho.ins_deel_key
|
||
AND plho.ins_kenmerk_key = 79 -- Ploegleider herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel hho
|
||
ON x.ins_deel_key = hho.ins_deel_key
|
||
AND hho.ins_kenmerk_key = 80 -- HBHV herhaling op
|
||
;
|
||
|
||
/*
|
||
- Object ? <20>BHV-er voor locatie<69> zoals geregistreerd als specifiek kenmerkveld (zie Hoofdstuk 2.2.3).
|
||
- Personeelsnummer ? Personeelsnummer zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Volledige naam ? Voornaam+Tussenvoegsel+Achternaam zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Email ? Email zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Profiel ? Profiel zoals geregistreerd als specifiek kenmerkveld (zie Hoofdstuk 2.2.3).
|
||
- Diplomanummer
|
||
- Afdeling ? Afdeling zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Toestel ? Telefoon zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Mobiel ? Mobiel zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>.
|
||
- Departement ? Ministerie zoals geregistreerd bij de persoon ingevuld bij het standaard veld <20>Naam<61>
|
||
- Gratificatie ? Afgeleid van gevolgde opleidingen/herhalingen in relatie tot profiel en rekening houdend met eventueel jubileum. Dit is het bedrag zoals in januari uitbetaald.
|
||
|
||
Basishulpverlener <09> 253,07
|
||
Allround BHV-er <09> 506,11
|
||
BHV-er met leidinggevende taken <09> 759,18
|
||
*/
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_bhv_gratificatie
|
||
(
|
||
locatiecode,
|
||
locatieomschrijving,
|
||
personeelsnummer,
|
||
naam,
|
||
email,
|
||
profiel,
|
||
bhv_diplomanummer, --objectomschrijving,
|
||
afdeling,
|
||
toestel,
|
||
mobiel,
|
||
departement,
|
||
gratificatie
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_code locatiecode,
|
||
l.alg_locatie_omschrijving locatieomschrijving,
|
||
SUBSTR (x.prs_perslid_externid, 3) personeelsnummer,
|
||
x.prs_perslid_naam_full naam,
|
||
x.prs_perslid_email email,
|
||
pro_ud.fac_usrdata_omschr profiel,
|
||
x.ins_deel_omschrijving bhv_diplomanummer,
|
||
x.prs_afdeling_naam afdeling,
|
||
x.prs_perslid_telefoonnr toestel,
|
||
x.prs_perslid_mobiel mobiel,
|
||
x.prs_bedrijf_naam departement,
|
||
DECODE (pro_ud.fac_usrdata_key,
|
||
943, 759.18, -- Hoofd
|
||
944, 759.18, -- Ploegleider
|
||
945, 506.11, -- Allround
|
||
946, 253.07, -- Basis
|
||
0) -- 947=Aspirant
|
||
gratificatie
|
||
FROM (SELECT d.ins_deel_key,
|
||
d.ins_deel_omschrijving,
|
||
d.ins_deel_vervaldatum,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_externid, -- Of uit kenmerkveld?
|
||
pf.prs_perslid_naam_full,
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_email,
|
||
a.prs_afdeling_naam,
|
||
b.prs_bedrijf_naam
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
prs_afdeling a
|
||
WHERE d.ins_alg_ruimte_type = 'P'
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key = 761 -- BHV
|
||
AND d.ins_alg_ruimte_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key) x
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel loc
|
||
ON x.ins_deel_key = loc.ins_deel_key
|
||
AND loc.ins_kenmerk_key = 61 -- BHV-er voor locatie
|
||
LEFT JOIN alg_locatie l
|
||
ON fac.safe_to_number (loc.ins_kenmerkdeel_waarde) = l.alg_locatie_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel eta
|
||
ON x.ins_deel_key = eta.ins_deel_key
|
||
AND eta.ins_kenmerk_key = 62 -- Etage
|
||
LEFT JOIN fac_v_aanwezigusrdata eta_ud
|
||
ON fac.safe_to_number (eta.ins_kenmerkdeel_waarde) = eta_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bd
|
||
ON x.ins_deel_key = bd.ins_deel_key
|
||
AND bd.ins_kenmerk_key = 63 -- Bouwdeel
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel sec
|
||
ON x.ins_deel_key = sec.ins_deel_key
|
||
AND sec.ins_kenmerk_key = 64 -- Sectie
|
||
LEFT JOIN fac_v_aanwezigusrdata sec_ud
|
||
ON fac.safe_to_number (sec.ins_kenmerkdeel_waarde) = sec_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel gbd
|
||
ON x.ins_deel_key = gbd.ins_deel_key
|
||
AND gbd.ins_kenmerk_key = 65 -- Geboortedatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel did
|
||
ON x.ins_deel_key = did.ins_deel_key
|
||
AND did.ins_kenmerk_key = 66 -- Datum indienst
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel pro
|
||
ON x.ins_deel_key = pro.ins_deel_key
|
||
AND pro.ins_kenmerk_key = 67 -- Profiel
|
||
LEFT JOIN fac_v_aanwezigusrdata pro_ud
|
||
ON fac.safe_to_number (pro.ins_kenmerkdeel_waarde) = pro_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dj
|
||
ON x.ins_deel_key = dj.ins_deel_key
|
||
AND dj.ins_kenmerk_key = 68 -- Dienstjaren
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel im
|
||
ON x.ins_deel_key = im.ins_deel_key
|
||
AND im.ins_kenmerk_key = 69 -- Inzetmaanden
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dju
|
||
ON x.ins_deel_key = dju.ins_deel_key
|
||
AND dju.ins_kenmerk_key = 70 -- Datum jubileum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel vld
|
||
ON x.ins_deel_key = vld.ins_deel_key
|
||
AND vld.ins_kenmerk_key = 71 -- Verlengingsdatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel lev
|
||
ON x.ins_deel_key = lev.ins_deel_key
|
||
AND lev.ins_kenmerk_key = 72 -- Leverancier
|
||
LEFT JOIN fac_v_aanwezigusrdata lev_ud
|
||
ON fac.safe_to_number (lev.ins_kenmerkdeel_waarde) = lev_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bp
|
||
ON x.ins_deel_key = bp.ins_deel_key
|
||
AND bp.ins_kenmerk_key = 73 -- BHV-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ep
|
||
ON x.ins_deel_key = ep.ins_deel_key
|
||
AND ep.ins_kenmerk_key = 74 -- EHBO-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ed
|
||
ON x.ins_deel_key = ed.ins_deel_key
|
||
AND ed.ins_kenmerk_key = 75 -- EHBO-diplomanummer
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bho
|
||
ON x.ins_deel_key = bho.ins_deel_key
|
||
AND bho.ins_kenmerk_key = 76 -- Basis herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a1ho
|
||
ON x.ins_deel_key = a1ho.ins_deel_key
|
||
AND a1ho.ins_kenmerk_key = 77 -- Allround1 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a2ho
|
||
ON x.ins_deel_key = a2ho.ins_deel_key
|
||
AND a2ho.ins_kenmerk_key = 78 -- Allround2 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel plho
|
||
ON x.ins_deel_key = plho.ins_deel_key
|
||
AND plho.ins_kenmerk_key = 79 -- Ploegleider herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel hho
|
||
ON x.ins_deel_key = hho.ins_deel_key
|
||
AND hho.ins_kenmerk_key = 80 -- HBHV herhaling op
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_rap_bhv_lesoverzicht
|
||
(
|
||
--disciplineomschrijving,
|
||
--groepsoortomschrijving,
|
||
--objectsoortcode,
|
||
--objectsoortomschrijving,
|
||
bedrijf,
|
||
afdeling,
|
||
persoon,
|
||
bhv_diplomanummer, --objectomschrijving,
|
||
--objectopmerking,
|
||
vervaldatum,
|
||
locatiecode,
|
||
locatieomschrijving,
|
||
etage,
|
||
bouwdeel,
|
||
sectie,
|
||
geboortedatum,
|
||
datum_indienst,
|
||
profiel,
|
||
dienstjaren,
|
||
inzetmaanden,
|
||
datum_jubileum,
|
||
verlengingsdatum,
|
||
leverancier,
|
||
bhv_per,
|
||
ehbo_per,
|
||
ehbo_diplomanummer,
|
||
basis_herhaling_op,
|
||
allround1_herhaling_op,
|
||
allround2_herhaling_op,
|
||
ploegleider_herhaling_op,
|
||
hbhv_herhaling_op
|
||
)
|
||
AS
|
||
SELECT --x.ins_discipline_omschrijving,
|
||
--x.ins_srtgroep_omschrijving,
|
||
--x.ins_srtdeel_code,
|
||
--x.ins_srtdeel_omschrijving,
|
||
x.prs_bedrijf_naam,
|
||
x.prs_afdeling_naam,
|
||
x.prs_perslid_naam_full,
|
||
x.ins_deel_omschrijving,
|
||
--x.ins_deel_opmerking,
|
||
x.ins_deel_vervaldatum,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
eta_ud.fac_usrdata_omschr etage,
|
||
bd.ins_kenmerkdeel_waarde bouwdeel,
|
||
sec_ud.fac_usrdata_omschr sectie,
|
||
gbd.ins_kenmerkdeel_waarde geboortedatum,
|
||
did.ins_kenmerkdeel_waarde datum_indienst,
|
||
pro_ud.fac_usrdata_omschr profiel,
|
||
dj.ins_kenmerkdeel_waarde dienstjaren,
|
||
im.ins_kenmerkdeel_waarde inzetmaanden,
|
||
dju.ins_kenmerkdeel_waarde datum_jubileum,
|
||
vld.ins_kenmerkdeel_waarde verlengingsdatum,
|
||
lev_ud.fac_usrdata_omschr leverancier,
|
||
bp.ins_kenmerkdeel_waarde bhv_per,
|
||
ep.ins_kenmerkdeel_waarde ehbo_per,
|
||
ed.ins_kenmerkdeel_waarde ehbo_diplomanummer,
|
||
bho.ins_kenmerkdeel_waarde basis_herhaling_op,
|
||
a1ho.ins_kenmerkdeel_waarde allround1_herhaling_op,
|
||
a2ho.ins_kenmerkdeel_waarde allround2_herhaling_op,
|
||
plho.ins_kenmerkdeel_waarde ploegleider_herhaling_op,
|
||
hho.ins_kenmerkdeel_waarde hbhv_herhaling_op
|
||
FROM (SELECT d.ins_deel_key,
|
||
--td.ins_discipline_omschrijving,
|
||
--sg.ins_srtgroep_omschrijving,
|
||
--sd.ins_srtdeel_code,
|
||
--sd.ins_srtdeel_omschrijving,
|
||
d.ins_deel_omschrijving,
|
||
--d.ins_deel_opmerking,
|
||
d.ins_deel_vervaldatum,
|
||
pf.prs_perslid_naam_full,
|
||
a.prs_afdeling_naam,
|
||
b.prs_bedrijf_naam
|
||
FROM ins_v_aanwezigdeel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_tab_discipline td,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_afdeling_boom ab,
|
||
prs_bedrijf b,
|
||
prs_afdeling a
|
||
WHERE d.ins_alg_ruimte_type = 'P'
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND sg.ins_discipline_key = td.ins_discipline_key
|
||
AND td.ins_discipline_key = 761 -- BHV
|
||
AND d.ins_alg_ruimte_key = p.prs_perslid_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_bedrijf_key = b.prs_bedrijf_key) x
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel loc
|
||
ON x.ins_deel_key = loc.ins_deel_key
|
||
AND loc.ins_kenmerk_key = 61 -- BHV-er voor locatie
|
||
LEFT JOIN alg_locatie l
|
||
ON fac.safe_to_number (loc.ins_kenmerkdeel_waarde) = l.alg_locatie_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel eta
|
||
ON x.ins_deel_key = eta.ins_deel_key
|
||
AND eta.ins_kenmerk_key = 62 -- Etage
|
||
LEFT JOIN fac_v_aanwezigusrdata eta_ud
|
||
ON fac.safe_to_number (eta.ins_kenmerkdeel_waarde) = eta_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bd
|
||
ON x.ins_deel_key = bd.ins_deel_key
|
||
AND bd.ins_kenmerk_key = 63 -- Bouwdeel
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel sec
|
||
ON x.ins_deel_key = sec.ins_deel_key
|
||
AND sec.ins_kenmerk_key = 64 -- Sectie
|
||
LEFT JOIN fac_v_aanwezigusrdata sec_ud
|
||
ON fac.safe_to_number (sec.ins_kenmerkdeel_waarde) = sec_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel gbd
|
||
ON x.ins_deel_key = gbd.ins_deel_key
|
||
AND gbd.ins_kenmerk_key = 65 -- Geboortedatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel did
|
||
ON x.ins_deel_key = did.ins_deel_key
|
||
AND did.ins_kenmerk_key = 66 -- Datum indienst
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel pro
|
||
ON x.ins_deel_key = pro.ins_deel_key
|
||
AND pro.ins_kenmerk_key = 67 -- Profiel
|
||
LEFT JOIN fac_v_aanwezigusrdata pro_ud
|
||
ON fac.safe_to_number (pro.ins_kenmerkdeel_waarde) = pro_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dj
|
||
ON x.ins_deel_key = dj.ins_deel_key
|
||
AND dj.ins_kenmerk_key = 68 -- Dienstjaren
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel im
|
||
ON x.ins_deel_key = im.ins_deel_key
|
||
AND im.ins_kenmerk_key = 69 -- Inzetmaanden
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel dju
|
||
ON x.ins_deel_key = dju.ins_deel_key
|
||
AND dju.ins_kenmerk_key = 70 -- Datum jubileum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel vld
|
||
ON x.ins_deel_key = vld.ins_deel_key
|
||
AND vld.ins_kenmerk_key = 71 -- Verlengingsdatum
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel lev
|
||
ON x.ins_deel_key = lev.ins_deel_key
|
||
AND lev.ins_kenmerk_key = 72 -- Leverancier
|
||
LEFT JOIN fac_v_aanwezigusrdata lev_ud
|
||
ON fac.safe_to_number (lev.ins_kenmerkdeel_waarde) = lev_ud.fac_usrdata_key
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bp
|
||
ON x.ins_deel_key = bp.ins_deel_key
|
||
AND bp.ins_kenmerk_key = 73 -- BHV-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ep
|
||
ON x.ins_deel_key = ep.ins_deel_key
|
||
AND ep.ins_kenmerk_key = 74 -- EHBO-er per
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel ed
|
||
ON x.ins_deel_key = ed.ins_deel_key
|
||
AND ed.ins_kenmerk_key = 75 -- EHBO-diplomanummer
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel bho
|
||
ON x.ins_deel_key = bho.ins_deel_key
|
||
AND bho.ins_kenmerk_key = 76 -- Basis herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a1ho
|
||
ON x.ins_deel_key = a1ho.ins_deel_key
|
||
AND a1ho.ins_kenmerk_key = 77 -- Allround1 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel a2ho
|
||
ON x.ins_deel_key = a2ho.ins_deel_key
|
||
AND a2ho.ins_kenmerk_key = 78 -- Allround2 herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel plho
|
||
ON x.ins_deel_key = plho.ins_deel_key
|
||
AND plho.ins_kenmerk_key = 79 -- Ploegleider herhaling op
|
||
LEFT JOIN ins_v_aanwezigkenmerkdeel hho
|
||
ON x.ins_deel_key = hho.ins_deel_key
|
||
AND hho.ins_kenmerk_key = 80 -- HBHV herhaling op
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW FMHN_V_NOTI_BHV
|
||
(
|
||
CODE,
|
||
SENDER,
|
||
RECEIVER,
|
||
TEXT,
|
||
KEY,
|
||
PAR1,
|
||
PAR2,
|
||
XKEY
|
||
--XEMAIL,
|
||
--XMOBILE,
|
||
--FAC_SRTNOTIFICATIE_KEY,
|
||
--ATTACHMENTS,
|
||
--XSENDER,
|
||
--PRS_BEDRIJFADRES_KEY
|
||
)
|
||
AS -- Op 14 dagen voor jubileum naar Adviseurs Veiligheid voor locatie van jubilaris!
|
||
SELECT sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
padv.prs_perslid_key,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##NAAM##', pbhv.prs_perslid_naam_full),
|
||
d.ins_deel_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
--NULL xemail,
|
||
--NULL xmobile,
|
||
--NULL fac_srtnotificatie_key,
|
||
--NULL attachments,
|
||
--NULL xsender,
|
||
--NULL prs_bedrijfadres_key
|
||
FROM ins_v_aanwezigkenmerkdeel dju,
|
||
ins_v_aanwezigdeel d,
|
||
prs_v_perslid_fullnames pbhv,
|
||
ins_v_aanwezigkenmerkdeel loc,
|
||
alg_locatie l,
|
||
prs_v_aanwezigperslid padv,
|
||
fac_srtnotificatie sn
|
||
WHERE dju.ins_kenmerk_key = 70 -- TODO:Datum jubileum
|
||
AND fac.safe_to_date (dju.ins_kenmerkdeel_waarde, 'dd-mm-yyyy') - 14 = TRUNC (SYSDATE) -- Jubileum over 14 dagen!
|
||
AND dju.ins_deel_key = d.ins_deel_key
|
||
AND d.ins_alg_ruimte_key = pbhv.prs_perslid_key
|
||
AND d.ins_deel_key = loc.ins_deel_key
|
||
AND loc.ins_kenmerk_key = 61 -- TODO:BHV-er voor locatie
|
||
AND fac.safe_to_number (loc.ins_kenmerkdeel_waarde) = l.alg_locatie_key
|
||
AND padv.prs_perslid_key IN
|
||
(SELECT DISTINCT gg.prs_perslid_key
|
||
FROM fac_gebruikersgroep gg,
|
||
prs_perslidwerkplek pw,
|
||
prs_v_werkplek_gegevens wg
|
||
WHERE gg.fac_groep_key IN (461, 462) -- TODO:BHV-ers/Inzage
|
||
AND gg.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw.prs_werkplek_key = wg.prs_werkplek_key
|
||
AND wg.alg_locatie_key = l.alg_locatie_key)
|
||
AND sn.fac_srtnotificatie_code = 'CUST01'
|
||
UNION -- De dag nadat profiel van Aspirant BHV-er is gezet op ander profiel naar Adviseurs Veiligheid voor betreffende locatie!
|
||
SELECT sn.fac_srtnotificatie_code,
|
||
NULL,
|
||
padv.prs_perslid_key,
|
||
REPLACE (sn.fac_srtnotificatie_oms, '##NAAM##', pbhv.prs_perslid_naam_full),
|
||
d.ins_deel_key,
|
||
NULL,
|
||
NULL,
|
||
NULL
|
||
--NULL xemail,
|
||
--NULL xmobile,
|
||
--NULL fac_srtnotificatie_key,
|
||
--NULL attachments,
|
||
--NULL xsender,
|
||
--NULL prs_bedrijfadres_key
|
||
FROM fac_tracking t,
|
||
ins_v_aanwezigdeel d,
|
||
prs_v_perslid_fullnames pbhv,
|
||
ins_v_aanwezigkenmerkdeel loc,
|
||
alg_locatie l,
|
||
prs_v_aanwezigperslid padv,
|
||
fac_srtnotificatie sn
|
||
WHERE t.fac_srtnotificatie_key = 128 -- TODO:INSUPD
|
||
AND INSTR (UPPER (t.fac_tracking_oms), 'ASPIRANT BHV -->') > 0 -- Profiel van Aspirant BHV gezet op ander profiel!
|
||
AND TRUNC (t.fac_tracking_datum) + 1 = TRUNC (SYSDATE) -- Gisteren gewijzigd=gestart!
|
||
AND t.fac_tracking_refkey = d.ins_deel_key
|
||
AND d.ins_alg_ruimte_key = pbhv.prs_perslid_key
|
||
AND d.ins_deel_key = loc.ins_deel_key
|
||
AND loc.ins_kenmerk_key = 61 -- TODO:BHV-er voor locatie
|
||
AND fac.safe_to_number (loc.ins_kenmerkdeel_waarde) = l.alg_locatie_key
|
||
AND padv.prs_perslid_key IN
|
||
(SELECT DISTINCT gg.prs_perslid_key
|
||
FROM fac_gebruikersgroep gg,
|
||
prs_perslidwerkplek pw,
|
||
prs_v_werkplek_gegevens wg
|
||
WHERE gg.fac_groep_key IN (461, 462) -- TODO:BHV-ers/Inzage
|
||
AND gg.prs_perslid_key = pw.prs_perslid_key
|
||
AND pw.prs_werkplek_key = wg.prs_werkplek_key
|
||
AND wg.alg_locatie_key = l.alg_locatie_key)
|
||
AND sn.fac_srtnotificatie_code = 'CUST02';
|
||
|
||
-- TODO:KTO
|
||
CREATE OR REPLACE VIEW fmhn_v_udr_mld_kto
|
||
AS
|
||
SELECT x.meldingnummer,
|
||
x.melding_start_key,
|
||
x.melding_regio,
|
||
x.melding_district,
|
||
x.melding_locatiecode,
|
||
x.melding_locatie,
|
||
x.melding_locatieplaats,
|
||
x.melding_gebouwcode,
|
||
x.melding_gebouw,
|
||
x.melding_verdieping,
|
||
x.melding_ruimtenr,
|
||
x.melding_ruimte,
|
||
x.kostensoortgroep,
|
||
x.kostensoort,
|
||
x.kostenplaats,
|
||
x.kostenplaats_oms,
|
||
x.melder,
|
||
x.afdeling,
|
||
x.afdeling_omschrijving afdeling_oms,
|
||
x.invoerder,
|
||
x.meldbron,
|
||
x.soortmelding vakgroeptype,
|
||
x.productgroep vakgroep,
|
||
x.subproductgroep soortmelding,
|
||
x.behandelgroep,
|
||
x.behandelaar,
|
||
x.actieve_behandelgroep,
|
||
x.actieve_behandelaar,
|
||
x.melding_status,
|
||
x.sla_nvt,
|
||
x.sla_accptdgn,
|
||
x.sla_accpturen,
|
||
x.sla_werkdgn,
|
||
x.sla_werkuren,
|
||
x.plan_uitvoertijd_sla,
|
||
x.melding_datum,
|
||
x.melding_einddatum,
|
||
x.melding_einddatum_std,
|
||
x.melding_acceptdatum,
|
||
x.melding_afgemeld,
|
||
x.melding_accepted,
|
||
x.doorlooptijd_werkdgn,
|
||
x.doorlooptijd_werkuren,
|
||
x.onderwerp,
|
||
x.vomschrijving omschrijving,
|
||
x.melding_opmerking,
|
||
x.prioriteit,
|
||
x.rating,
|
||
x.rating_opmerking rating_opm,
|
||
x.actiecode,
|
||
x.accept_sla_dagen,
|
||
x.accept_sla_uren,
|
||
x.uitvoering_sla_dagen,
|
||
x.uitvoering_sla_uren,
|
||
x.afspraak_sla_dagen,
|
||
x.afspraak_sla_uren,
|
||
DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_optijd,
|
||
1 - DECODE (UPPER (x.accept_sla_optijd), 'JA', 1, 0) accept_sla_telaat,
|
||
DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_optijd,
|
||
1 - DECODE (UPPER (x.uitvoering_sla_optijd), 'JA', 1, 0) uitvoering_sla_telaat,
|
||
DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_optijd,
|
||
1 - DECODE (UPPER (x.afspraak_sla_optijd), 'JA', 1, 0) afspraak_sla_telaat,
|
||
x.selfservice,
|
||
TO_CHAR (x.melding_afgemeld, 'yyyy-mm') maand,
|
||
COALESCE (x.actieve_behandelaar, x.actieve_behandelgroep, x.behandelaar, '*Onbekend') in_behandeling_bij
|
||
FROM mld_v_udr_melding x,
|
||
mld_melding m,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab
|
||
WHERE x.melding_datum < SYSDATE -- Niet in de toekomst!
|
||
AND x.melding_afgemeld IS NULL -- Niet afgemeld, dus lopend!
|
||
--AND x.sla_nvt = 0
|
||
--AND INSTR (UPPER (x.subproductgroep), 'KLACHT') = 0
|
||
--AND x.prioriteit IN (1, 2)
|
||
AND SUBSTR (x.meldingnummer, REGEXP_INSTR (x.meldingnummer, '\d')) = TO_CHAR (m.mld_melding_key)
|
||
AND fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key) = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
;
|
||
|
||
CREATE OR REPLACE VIEW BES_V_UDR_BESTELLING_OPM
|
||
(
|
||
BESTELLING_KEY,
|
||
BESTELAANVRAAGNR,
|
||
BESTELDATUM,
|
||
LEVERANCIER,
|
||
BESTELLER,
|
||
INVOERDER,
|
||
KOSTENSOORTGROEP,
|
||
KOSTENSOORT,
|
||
KPN,
|
||
KPN_OMSCHRIJVING,
|
||
FCLT_3D_AFDELING_KEY,
|
||
AFDELING_CODE,
|
||
AFDELING_OMSCHRIJVING,
|
||
FCLT_3D_LOCATIE_KEY,
|
||
LOCATIE_CODE,
|
||
REGIO_OMSCHRIJVING,
|
||
DISTRICT_OMSCHRIJVING,
|
||
AFLEVERADRES,
|
||
AFLEVERPLAATS,
|
||
MANDAAT,
|
||
FCLT_3D_DISCIPLINE_KEY,
|
||
CATALOGUS,
|
||
GROEP,
|
||
PRODUCTOMSCHRIJVING,
|
||
PRODUCTCODE,
|
||
AFLEVERDATUM,
|
||
DOORLOOPTIJD_WERKDGN,
|
||
SLA_TIJD,
|
||
PRIJS,
|
||
INKOOPPRIJS,
|
||
STATUS,
|
||
GEFIATTEERDDOOR,
|
||
BESTELOPDRACHTNUMMER,
|
||
AANTAL,
|
||
ITEMPRIJS,
|
||
ITEMINKOOPPRIJS,
|
||
ITEMPOSNR,
|
||
OPMERKING
|
||
)
|
||
AS
|
||
SELECT bes_bestelling_key,
|
||
bestelaanvraagnr,
|
||
besteldatum,
|
||
bedrijf_naam,
|
||
besteller,
|
||
invoerder,
|
||
kostensoortgroep,
|
||
kostensoort,
|
||
kpn,
|
||
kpn_omschrijving,
|
||
prs_afdeling_key,
|
||
afdeling_code,
|
||
afdeling_omschrijving,
|
||
alg_locatie_key,
|
||
locatie_code,
|
||
regio_omschrijving,
|
||
district_omschijving,
|
||
afleveradres,
|
||
afleverplaats,
|
||
mandaat,
|
||
ins_discipline_key,
|
||
catalogus,
|
||
groep,
|
||
productomschrijving,
|
||
productcode,
|
||
afleverdatum,
|
||
doorlooptijd_werkdgn,
|
||
sla_tijd,
|
||
prijs,
|
||
inkoopprijs,
|
||
status,
|
||
gefiatteerddoor,
|
||
bestelopdrachtnummer,
|
||
aantal,
|
||
itemprijs,
|
||
iteminkoopprijs,
|
||
itemposnr,
|
||
opmerking
|
||
FROM (SELECT b.bes_bestelling_key bes_bestelling_key,
|
||
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
||
b.bes_bestelling_datum besteldatum,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = p.prs_perslid_key)
|
||
besteller,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key =
|
||
COALESCE (
|
||
fac.gettrackinguserkey ('BESNEW',
|
||
b.bes_bestelling_key),
|
||
fac.gettrackinguserkey ('BESAP2',
|
||
b.bes_bestelling_key)))
|
||
invoerder,
|
||
(SELECT ksg.prs_kostensoortgrp_oms
|
||
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
|
||
WHERE ksg.prs_kostensoortgrp_key =
|
||
ks.prs_kostensoortgrp_key
|
||
AND ks.prs_kostensoort_key =
|
||
(SELECT MAX(COALESCE (
|
||
bsg.prs_kostensoort_key,
|
||
disc.prs_kostensoort_key))
|
||
FROM bes_discipline disc, bes_srtgroep bsg
|
||
WHERE disc.ins_discipline_key =
|
||
d.ins_discipline_key))
|
||
kostensoortgroep,
|
||
(SELECT ks.prs_kostensoort_oms
|
||
FROM prs_kostensoort ks
|
||
WHERE ks.prs_kostensoort_key =
|
||
(SELECT MAX(COALESCE (bsg.prs_kostensoort_key,
|
||
disc.prs_kostensoort_key))
|
||
FROM bes_discipline disc, bes_srtgroep bsg
|
||
WHERE disc.ins_discipline_key =
|
||
bsg.ins_discipline_key
|
||
AND disc.ins_discipline_key =
|
||
d.ins_discipline_key))
|
||
kostensoort,
|
||
k.prs_kostenplaats_nr kpn,
|
||
k.prs_kostenplaats_omschrijving kpn_omschrijving,
|
||
(SELECT b.prs_bedrijf_naam
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = sd.prs_bedrijf_key)
|
||
bedrijf_naam,
|
||
a.prs_afdeling_key,
|
||
a.prs_afdeling_naam afdeling_code,
|
||
a.prs_afdeling_omschrijving afdeling_omschrijving,
|
||
ma.alg_locatie_key alg_locatie_key,
|
||
(SELECT alg_locatie_code
|
||
FROM alg_locatie l
|
||
WHERE l.alg_locatie_key = ma.alg_locatie_key)
|
||
locatie_code,
|
||
(SELECT alg_regio_omschrijving
|
||
FROM alg_locatie l, alg_district d, alg_regio r
|
||
WHERE r.alg_regio_key = d.alg_regio_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND l.alg_locatie_key = ma.alg_locatie_key)
|
||
regio_omschrijving,
|
||
(SELECT alg_district_omschrijving
|
||
FROM alg_locatie l, alg_district d
|
||
WHERE l.alg_district_key = d.alg_district_key
|
||
AND l.alg_locatie_key = ma.alg_locatie_key)
|
||
district_omschijving,
|
||
ma.mld_adres_naam afleveradres,
|
||
b.bes_bestelling_plaats afleverplaats,
|
||
NVL ( (SELECT pr.fac_profiel_limiet
|
||
FROM fac_profiel pr
|
||
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
|
||
mandaat,
|
||
d.ins_discipline_key ins_discipline_key,
|
||
d.ins_discipline_omschrijving catalogus,
|
||
sg.bes_srtgroep_omschrijving groep,
|
||
b.bes_bestelling_leverdatum afleverdatum,
|
||
fac.count_work_days (
|
||
b.bes_bestelling_datum,
|
||
NVL (
|
||
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key),
|
||
SYSDATE))
|
||
doorlooptijd_werkdgn,
|
||
NVL (
|
||
(SELECT bdp.bes_disc_params_leverdagen
|
||
FROM bes_disc_params bdp
|
||
WHERE d.ins_discipline_key =
|
||
bdp.bes_ins_discipline_key),
|
||
0)
|
||
sla_tijd,
|
||
sd.bes_srtdeel_nr productcode,
|
||
bi.bes_bestelling_item_prijs
|
||
* bi.bes_bestelling_item_aantal
|
||
prijs,
|
||
NVL (
|
||
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
|
||
bes_bestelling_datum),
|
||
bi.bes_bestelling_item_prijs)
|
||
* bi.bes_bestelling_item_aantal
|
||
inkoopprijs,
|
||
(SELECT bes_bestellingstatuses_omschr
|
||
FROM bes_bestellingstatuses bs
|
||
WHERE bs.bes_bestellingstatuses_key =
|
||
b.bes_bestelling_status)
|
||
status,
|
||
(SELECT prs_perslid_naam_full
|
||
FROM prs_v_perslid_fullnames_all pf
|
||
WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user)
|
||
gefiatteerddoor,
|
||
'O-' || bo.bes_bestelopdr_id bestelopdrachtnummer,
|
||
bi.bes_bestelling_item_aantal aantal,
|
||
bi.bes_bestelling_item_prijs itemprijs,
|
||
NVL (
|
||
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
|
||
bes_bestelling_datum),
|
||
bi.bes_bestelling_item_prijs)
|
||
iteminkoopprijs,
|
||
sd.bes_srtdeel_omschrijving productomschrijving,
|
||
boi.bes_bestelopdr_item_posnr itemposnr,
|
||
b.bes_bestelling_opmerking opmerking
|
||
FROM bes_bestelling b,
|
||
prs_perslid p,
|
||
prs_kostenplaats k,
|
||
prs_afdeling a,
|
||
mld_adres ma,
|
||
bes_bestelling_item bi,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
ins_tab_discipline d
|
||
WHERE b.prs_perslid_key = p.prs_perslid_key
|
||
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND b.mld_adres_key_lev = ma.mld_adres_key
|
||
AND b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_bestelopdr_item_key =
|
||
boi.bes_bestelopdr_item_key(+)
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key);
|
||
|
||
|
||
--FMHN#69317 Tijdelijke view tbv bezoekers met parkeerplaats
|
||
CREATE OR REPLACE VIEW FMHN_V_UDR_BEZOEKERSPARK
|
||
(
|
||
KEY,
|
||
AFSPRAAK_KEY,
|
||
RESERVERING_KEY,
|
||
HOST,
|
||
CONTACT,
|
||
INVOERDER,
|
||
PLAATS_CODE,
|
||
PLAATS_OMSCHRIJVING,
|
||
REGIO,
|
||
DISTRICT,
|
||
LOCATIE_CODE,
|
||
LOCATIE_NAAM,
|
||
LOCATIE_PLAATS,
|
||
GEBOUW_CODE,
|
||
GEBOUW_NAAM,
|
||
VERDIEPING_CODE,
|
||
VERDIEPING_NAAM,
|
||
RUIMTE_CODE,
|
||
RUIMTE_NAAM,
|
||
AFSPRAAK_RUIMTE,
|
||
AFSPRAAK_OPMERKING,
|
||
BEZOEKER_NAAM,
|
||
BEZOEKER_BEDRIJF,
|
||
BEZOEK_VAN,
|
||
WEEKDAG_BEZOEK_VAN,
|
||
BEZOEK_TOT,
|
||
ACTIE,
|
||
BEZOEKER_OPMERKING,
|
||
BEZOEKER_BINNEN,
|
||
BEZOEKER_BUITEN,
|
||
PASNR,
|
||
PARKEERPLAATS,
|
||
FCLT_3D_LOCATIE_KEY,
|
||
SELFSERVICE,
|
||
TERREIN_OMSCHRIJVING,
|
||
TERREIN_CODE
|
||
)
|
||
AS
|
||
SELECT b.bez_bezoekers_key,
|
||
a.bez_afspraak_key,
|
||
a.res_rsv_ruimte_key,
|
||
a.bez_afspraak_gastheer
|
||
bez_afspraak_host,
|
||
p2.prs_perslid_naam_full
|
||
bez_afspraak_contact,
|
||
p3.prs_perslid_naam_full
|
||
bez_afspraak_invoerder,
|
||
og.alg_onroerendgoed_code,
|
||
og.alg_onroerendgoed_omschrijving,
|
||
r.alg_regio_omschrijving,
|
||
d.alg_district_omschrijving,
|
||
l.alg_locatie_code,
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_plaats,
|
||
og.alg_gebouw_code,
|
||
og.alg_gebouw_naam,
|
||
og.alg_verdieping_code,
|
||
og.alg_verdieping_omschrijving,
|
||
og.alg_ruimte_nr,
|
||
og.alg_ruimte_omschrijving,
|
||
a.bez_afspraak_ruimte,
|
||
a.bez_afspraak_opmerking,
|
||
b.bez_afspraak_naam
|
||
bezoeker_naam,
|
||
b.bez_afspraak_bedrijf
|
||
bezoeker_bedrijf,
|
||
a.bez_afspraak_datum,
|
||
TO_CHAR (a.bez_afspraak_datum, 'D')
|
||
weekdag_bezoek_van,
|
||
a.bez_afspraak_eind,
|
||
ba.bez_actie_omschrijving,
|
||
b.bez_bezoekers_opmerking
|
||
bezoeker_opmerking,
|
||
b.bez_bezoekers_done,
|
||
b.bez_bezoekers_out,
|
||
b.bez_bezoekers_pasnr,
|
||
rd.res_deel_omschrijving,
|
||
a.alg_locatie_key,
|
||
DECODE (p2.prs_perslid_naam_full,
|
||
p3.prs_perslid_naam_full, lcl.l ('lcl_yes'),
|
||
lcl.l ('lcl_no'))
|
||
selfservice,
|
||
(SELECT ts.alg_terreinsector_omschrijving
|
||
FROM alg_terreinsector ts
|
||
WHERE id.ins_alg_ruimte_type = 'T'
|
||
AND ts.alg_terreinsector_key = id.ins_alg_ruimte_key)
|
||
AS terrein_omschrijving,
|
||
(SELECT ts.alg_terreinsector_code
|
||
FROM alg_terreinsector ts
|
||
WHERE id.ins_alg_ruimte_type = 'T'
|
||
AND ts.alg_terreinsector_key = id.ins_alg_ruimte_key)
|
||
AS terrein_code
|
||
FROM bez_afspraak a,
|
||
bez_bezoekers b,
|
||
prs_v_perslid_fullnames_all p2,
|
||
prs_v_perslid_fullnames_all p3,
|
||
alg_v_allonrgoed_gegevens og,
|
||
alg_locatie l,
|
||
alg_district d,
|
||
alg_regio r,
|
||
bez_actie ba,
|
||
res_rsv_deel rrd,
|
||
res_deel rd,
|
||
ins_deel id
|
||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||
AND p2.prs_perslid_key = a.bez_afspraak_contact_key
|
||
AND p3.prs_perslid_key(+) = a.prs_perslid_key
|
||
AND a.bez_actie_key = ba.bez_actie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND d.alg_regio_key = r.alg_regio_key
|
||
AND l.alg_locatie_key = a.alg_locatie_key
|
||
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+)
|
||
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key(+)
|
||
AND rrd.res_deel_key = rd.res_deel_key(+)
|
||
AND rd.res_deel_omschrijving IS NOT NULL
|
||
AND a.bez_afspraak_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
|
||
AND id.ins_deel_key = rd.res_ins_deel_key
|
||
ORDER BY bez_bezoekers_key;
|
||
|
||
|
||
/* FALLBACK-SCENARIO!!!
|
||
CREATE OR REPLACE PROCEDURE fmhn_import_mld (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';'; -- Field seperator
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (1000) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_imp NUMBER (10) := 0;
|
||
-- De importvelden
|
||
planonnr VARCHAR2 (4000);
|
||
parentnr VARCHAR2 (4000);
|
||
gebruikerstype VARCHAR2 (4000);
|
||
status VARCHAR2 (4000);
|
||
standaardorder VARCHAR2 (4000);
|
||
omschrijving VARCHAR2 (4000);
|
||
kostenexcl VARCHAR2 (4000);
|
||
kostenincl VARCHAR2 (4000);
|
||
vakgroep VARCHAR2 (4000);
|
||
melder VARCHAR2 (4000);
|
||
afdeling VARCHAR2 (4000);
|
||
aanvraagvoor VARCHAR2 (4000);
|
||
gebouw VARCHAR2 (4000);
|
||
ruimtenr VARCHAR2 (4000);
|
||
plaats VARCHAR2 (4000);
|
||
inventaris VARCHAR2 (4000);
|
||
toelichting VARCHAR2 (4000); -- Echt 40000
|
||
toelichtingintern VARCHAR2 (4000); -- Echt 40000
|
||
oplosgroep VARCHAR2 (4000);
|
||
uitvoerderint VARCHAR2 (4000);
|
||
uitvoerderext VARCHAR2 (4000);
|
||
prioriteit VARCHAR2 (4000);
|
||
gereeddatum VARCHAR2 (4000);
|
||
startdatumtijd VARCHAR2 (4000);
|
||
vraagnpq VARCHAR2 (4000);
|
||
einddatumtijd VARCHAR2 (4000);
|
||
melddatum VARCHAR2 (4000);
|
||
archiefdatum VARCHAR2 (4000);
|
||
aangemaaktdoor VARCHAR2 (4000);
|
||
pdcnr VARCHAR2 (4000);
|
||
facturatiewijze VARCHAR2 (4000);
|
||
aandachtsgebied VARCHAR2 (4000);
|
||
kostenexclbestel VARCHAR2 (4000);
|
||
kosteninclbestel VARCHAR2 (4000);
|
||
aantalpersonen VARCHAR2 (4000);
|
||
opstelling VARCHAR2 (4000);
|
||
syncdate DATE;
|
||
spare1 VARCHAR2 (256);
|
||
spare2 VARCHAR2 (256);
|
||
spare3 VARCHAR2 (256);
|
||
spare4 VARCHAR2 (256);
|
||
spare5 VARCHAR2 (256);
|
||
spare6 VARCHAR2 (4000);
|
||
spare7 VARCHAR2 (4000);
|
||
spare8 VARCHAR2 (4000);
|
||
spare9 VARCHAR2 (4000);
|
||
spare10 VARCHAR2 (4000);
|
||
spare11 VARCHAR2 (256);
|
||
spare12 VARCHAR2 (256);
|
||
spare13 VARCHAR2 (256);
|
||
spare14 VARCHAR2 (256);
|
||
spare15 VARCHAR2 (256);
|
||
spare16 VARCHAR2 (256);
|
||
spare17 VARCHAR2 (256);
|
||
spare18 VARCHAR2 (256);
|
||
spare19 VARCHAR2 (256);
|
||
spare20 VARCHAR2 (256);
|
||
spare21 VARCHAR2 (256);
|
||
spare22 VARCHAR2 (256);
|
||
spare23 VARCHAR2 (256);
|
||
spare24 VARCHAR2 (256);
|
||
spare25 VARCHAR2 (256);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_line, LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, ''))) regellengte
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fmhn_tmp_mldmigratie;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen importregel';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, planonnr);
|
||
fac.imp_getfield (v_newline, c_delim, parentnr);
|
||
fac.imp_getfield (v_newline, c_delim, gebruikerstype);
|
||
fac.imp_getfield (v_newline, c_delim, status);
|
||
fac.imp_getfield (v_newline, c_delim, standaardorder);
|
||
fac.imp_getfield (v_newline, c_delim, omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, kostenexcl);
|
||
fac.imp_getfield (v_newline, c_delim, kostenincl);
|
||
fac.imp_getfield (v_newline, c_delim, vakgroep);
|
||
fac.imp_getfield (v_newline, c_delim, melder);
|
||
fac.imp_getfield (v_newline, c_delim, afdeling);
|
||
fac.imp_getfield (v_newline, c_delim, aanvraagvoor);
|
||
fac.imp_getfield (v_newline, c_delim, gebouw);
|
||
fac.imp_getfield (v_newline, c_delim, ruimtenr);
|
||
fac.imp_getfield (v_newline, c_delim, plaats);
|
||
fac.imp_getfield (v_newline, c_delim, inventaris);
|
||
fac.imp_getfield (v_newline, c_delim, toelichting);
|
||
fac.imp_getfield (v_newline, c_delim, toelichtingintern);
|
||
fac.imp_getfield (v_newline, c_delim, oplosgroep);
|
||
fac.imp_getfield (v_newline, c_delim, uitvoerderint);
|
||
fac.imp_getfield (v_newline, c_delim, uitvoerderext);
|
||
fac.imp_getfield (v_newline, c_delim, prioriteit);
|
||
fac.imp_getfield (v_newline, c_delim, gereeddatum);
|
||
fac.imp_getfield (v_newline, c_delim, startdatumtijd);
|
||
fac.imp_getfield (v_newline, c_delim, vraagnpq);
|
||
fac.imp_getfield (v_newline, c_delim, einddatumtijd);
|
||
fac.imp_getfield (v_newline, c_delim, melddatum);
|
||
fac.imp_getfield (v_newline, c_delim, archiefdatum);
|
||
fac.imp_getfield (v_newline, c_delim, aangemaaktdoor);
|
||
fac.imp_getfield (v_newline, c_delim, pdcnr);
|
||
fac.imp_getfield (v_newline, c_delim, facturatiewijze);
|
||
fac.imp_getfield (v_newline, c_delim, aandachtsgebied);
|
||
fac.imp_getfield (v_newline, c_delim, kostenexclbestel);
|
||
fac.imp_getfield (v_newline, c_delim, kosteninclbestel);
|
||
fac.imp_getfield (v_newline, c_delim, aantalpersonen);
|
||
fac.imp_getfield (v_newline, c_delim, opstelling);
|
||
|
||
v_aanduiding := '[' || planonnr || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste
|
||
-- kolommen de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (planonnr) = 'PLANONNUMMER'
|
||
AND UPPER (parentnr) = 'BOVENLIGGENDE ORDER/MELDING'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF (rec1.regellengte > 0) -- Lege regels overslaan
|
||
THEN
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Direct wegschrijven; controleer alle veldwaarden maar niet.
|
||
v_errormsg := 'Fout wegschrijven importregel';
|
||
INSERT INTO fmhn_tmp_mldmigratie (planonnr,
|
||
parentnr,
|
||
gebruikerstype,
|
||
status,
|
||
standaardorder,
|
||
omschrijving,
|
||
kostenexcl,
|
||
kostenincl,
|
||
vakgroep,
|
||
melder,
|
||
afdeling,
|
||
aanvraagvoor,
|
||
gebouw,
|
||
ruimtenr,
|
||
plaats,
|
||
inventaris,
|
||
toelichting,
|
||
toelichtingintern,
|
||
oplosgroep,
|
||
uitvoerderint,
|
||
uitvoerderext,
|
||
prioriteit,
|
||
gereeddatum,
|
||
startdatumtijd,
|
||
vraagnpq,
|
||
einddatumtijd,
|
||
melddatum,
|
||
archiefdatum,
|
||
aangemaaktdoor,
|
||
pdcnr,
|
||
facturatiewijze,
|
||
aandachtsgebied,
|
||
kostenexclbestel,
|
||
kosteninclbestel,
|
||
aantalpersonen,
|
||
opstelling)
|
||
VALUES (planonnr,
|
||
parentnr,
|
||
gebruikerstype,
|
||
status,
|
||
standaardorder,
|
||
omschrijving,
|
||
kostenexcl,
|
||
kostenincl,
|
||
vakgroep,
|
||
melder,
|
||
afdeling,
|
||
aanvraagvoor,
|
||
gebouw,
|
||
ruimtenr,
|
||
plaats,
|
||
inventaris,
|
||
toelichting,
|
||
toelichtingintern,
|
||
oplosgroep,
|
||
uitvoerderint,
|
||
uitvoerderext,
|
||
prioriteit,
|
||
gereeddatum,
|
||
startdatumtijd,
|
||
vraagnpq,
|
||
einddatumtijd,
|
||
melddatum,
|
||
archiefdatum,
|
||
aangemaaktdoor,
|
||
pdcnr,
|
||
facturatiewijze,
|
||
aandachtsgebied,
|
||
kostenexclbestel,
|
||
kosteninclbestel,
|
||
aantalpersonen,
|
||
opstelling);
|
||
|
||
v_count_imp := v_count_imp + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens afspraak!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Meldingen/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Meldingen/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces Relaties afgebroken!');
|
||
END fmhn_import_mld;
|
||
/
|
||
*/
|
||
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_select_reservering
|
||
AS
|
||
SELECT DISTINCT(rrr.res_rsv_ruimte_key),
|
||
rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking
|
||
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
||
AND fac_srtnotificatie_key = 108) last_upd,
|
||
rrr.res_rsv_ruimte_externsyncdate last_export,
|
||
rrr.res_rsv_ruimte_verwijder verw_datum,
|
||
alg.alg_ruimte_nr,
|
||
(SELECT prs_perslid_externid
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
|
||
rrr.RES_RSV_RUIMTE_VAN datum_van,
|
||
rrr.RES_RSV_RUIMTE_TOT datum_tot,
|
||
rrr.res_rsv_ruimte_omschrijving oms,
|
||
rrr.res_rsv_ruimte_bezoekers aantal,
|
||
alg.alg_locatie_code locatie_code
|
||
FROM res_rsv_ruimte rrr,
|
||
res_ruimte_opstelling rop,
|
||
res_ruimte rer,
|
||
res_alg_ruimte rarm,
|
||
alg_v_ruimte_gegevens_all alg
|
||
WHERE rrr.res_status_bo_key = 2
|
||
--AND rrr.res_status_fo_key = 2
|
||
--AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
|
||
AND rer.res_ruimte_key = rop.res_ruimte_key
|
||
AND rarm.res_ruimte_key = rer.res_ruimte_key
|
||
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
|
||
AND alg.alg_locatie_key= 11; -- allen voor Rijnstraat 8 (key=18)
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_select_objects(p_res_rsv_ruimte_key IN NUMBER,p_counter in NUMBER)
|
||
AS
|
||
CURSOR sel_art(v_res_rsv_ruimte_key NUMBER)
|
||
IS
|
||
SELECT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr, res_oms, last_upd, last_export, verw_datum, alg_ruimte_nr, besteller, datum_van, datum_tot,
|
||
artikel_nr, art_omschrijving,aantal, rra_key, ra_key, locatie_code, lever_datum
|
||
FROM fmhn_v_select_res_artikel
|
||
WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key;
|
||
|
||
|
||
CURSOR sel_del(v_res_rsv_ruimte_key NUMBER)
|
||
IS
|
||
SELECT ra.res_artikel_omschrijving art_omschrijving, fne.aantal aantal, rrr.RES_RSV_RUIMTE_VAN lever_datum, ra.res_artikel_opmerking artikel_nr, rra.res_rsv_artikel_key rra_key
|
||
FROM fmhn_npq_export fne, res_rsv_ruimte rrr, res_artikel ra, res_rsv_artikel rra
|
||
WHERE rrr.res_rsv_ruimte_key = v_res_rsv_ruimte_key
|
||
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND fne.res_artikel_key = ra.res_artikel_key
|
||
AND fne.res_rsv_artikel_key NOT IN (select rra_key from fmhn_v_select_res_artikel WHERE res_rsv_ruimte_key = v_res_rsv_ruimte_key);
|
||
|
||
|
||
v_base VARCHAR2 (10);
|
||
v_bestand VARCHAR2(50);
|
||
v_counter NUMBER;
|
||
v_artcounter NUMBER;
|
||
v_status VARCHAR2(20);
|
||
BEGIN
|
||
-- Nu gaan we kijken of er ook artikelen zijn die we moeten exporteren
|
||
v_base := 'ITM_NEW';
|
||
v_artcounter := 1;
|
||
v_counter:=p_counter;
|
||
v_status:='ND';
|
||
FOR rec_art IN sel_art(p_res_rsv_ruimte_key)
|
||
LOOP
|
||
|
||
|
||
IF rec_art.last_export IS NULL
|
||
THEN
|
||
v_status:= 'Opened';
|
||
ELSIF rec_art.last_export IS NOT NULL AND rec_art.last_upd>rec_art.last_export AND rec_art.verw_datum IS NULL THEN
|
||
v_status := 'Opened';
|
||
v_base := 'ITM_UPD';
|
||
ELSIF rec_art.last_export IS NOT NULL AND rec_art.verw_datum IS NOT NULL and rec_art.verw_datum>rec_art.last_export THEN
|
||
v_status :='Cancelled';
|
||
v_base := 'ITM_DEL';
|
||
END IF;
|
||
-- DBMS_OUTPUT.PUT_LINE('Status -'||v_status||'-');
|
||
|
||
v_bestand := v_base || '-' || v_counter || '-';
|
||
|
||
IF v_status != 'ND'
|
||
THEN
|
||
|
||
IF v_artcounter=1 THEN
|
||
|
||
fmhn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
fmhn.add_xml_row (v_bestand, '<Facilitor>');
|
||
-- Chewck inbouwen of het catering is of iets anders
|
||
fmhn.add_xml_row (v_bestand, '<Reservering type="Catering">');
|
||
fmhn.add_xml_element (v_bestand, 'Status', v_status);
|
||
fmhn.add_xml_element (v_bestand, 'Key', rec_art.res_rsv_ruimte_key);
|
||
fmhn.add_xml_element (v_bestand, 'ReserveringNr', rec_art.res_reservering_key||'/'||rec_art.res_rsv_ruimte_volgnr);
|
||
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec_art.alg_ruimte_nr);
|
||
fmhn.add_xml_element (v_bestand, 'LocatieCode', rec_art.locatie_Code);
|
||
fmhn.add_xml_element (v_bestand, 'DatumVan', TO_CHAR(rec_art.datum_van,'YYYY-MM-DD"T"hh24:mi:ss'));
|
||
fmhn.add_xml_element (v_bestand, 'DatumTot', TO_CHAR(rec_art.datum_tot,'YYYY-MM-DD"T"hh24:mi:ss'));
|
||
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art.res_oms);
|
||
--fmhn_add_xml_element (v_bestand, 'Aantal', rec.aantal);
|
||
fmhn.add_xml_element (v_bestand, 'Besteller', rec_art.besteller);
|
||
fmhn.add_xml_row (v_bestand, '<Items>');
|
||
END IF;
|
||
|
||
fmhn.add_xml_row (v_bestand, '<Item>');
|
||
fmhn.add_xml_element (v_bestand, 'ArtikelKey', rec_art.rra_key);
|
||
fmhn.add_xml_element (v_bestand, 'Artikelnr', rec_art.artikel_nr);
|
||
fmhn.add_xml_element (v_bestand, 'Status', v_status);
|
||
fmhn.add_xml_element (v_bestand, 'Aantal', rec_art.aantal);
|
||
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art.art_omschrijving);
|
||
fmhn.add_xml_element (v_bestand, 'LeverDatum', rec_art.lever_datum);
|
||
|
||
fmhn.add_xml_row (v_bestand, '</Item>');
|
||
|
||
|
||
|
||
v_artcounter:=v_artcounter+1;
|
||
|
||
-- insert artikel into fmhn_npq_export
|
||
fmhn.insert_npq(rec_art.res_rsv_ruimte_key,rec_art.rra_key,rec_art.aantal,rec_art.lever_datum, rec_art.ra_key);
|
||
|
||
END IF;
|
||
END LOOP;
|
||
v_status := 'Cancelled';
|
||
-- check of er artikelen zijn verwijderd
|
||
FOR rec_art_del IN sel_del(p_res_rsv_ruimte_key)
|
||
LOOP
|
||
fmhn.add_xml_row (v_bestand, '<Item>');
|
||
fmhn.add_xml_element (v_bestand, 'Artikelnr', rec_art_del.artikel_nr);
|
||
fmhn.add_xml_element (v_bestand, 'Status', v_status);
|
||
fmhn.add_xml_element (v_bestand, 'Aantal', rec_art_del.aantal);
|
||
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec_art_del.art_omschrijving);
|
||
fmhn.add_xml_element (v_bestand, 'LeverDatum', rec_art_del.lever_datum);
|
||
fmhn.add_xml_row (v_bestand, '</Item>');
|
||
fmhn.delete_npq(p_res_rsv_ruimte_key, rec_art_del.rra_key);
|
||
END LOOP;
|
||
|
||
|
||
|
||
|
||
fmhn.add_xml_row (v_bestand, '</Items>');
|
||
fmhn.add_xml_row (v_bestand, '</Reservering>');
|
||
fmhn.add_xml_row (v_bestand, '</Facilitor>');
|
||
|
||
|
||
UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE
|
||
WHERE res_rsv_ruimte_key = p_res_rsv_ruimte_key;
|
||
commit;
|
||
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_select_res_artikel
|
||
AS
|
||
SELECT rrr.res_rsv_ruimte_key,
|
||
rrr.res_reservering_key,
|
||
rrr.res_rsv_ruimte_volgnr,
|
||
rrr.res_rsv_ruimte_van datum_van,
|
||
rrr.res_rsv_ruimte_tot datum_tot,
|
||
rrr.res_rsv_ruimte_omschrijving res_oms,
|
||
rra.RES_RSV_ARTIKEL_EXTERNSYNCDATE last_export,
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking
|
||
WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key
|
||
AND fac_srtnotificatie_key = 108) last_upd,
|
||
rra.res_rsv_artikel_verwijder verw_datum,
|
||
(SELECT prs_perslid_externid
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller,
|
||
alg.alg_locatie_code locatie_code,
|
||
alg.alg_ruimte_nr,
|
||
rra.res_rsv_artikel_aantal aantal,
|
||
rra.res_rsv_artikel_key rra_key,
|
||
ra.res_artikel_key ra_key,
|
||
ra.res_artikel_opmerking artikel_nr,
|
||
ra.res_artikel_omschrijving art_omschrijving,
|
||
rra.res_rsv_artikel_levering lever_datum
|
||
FROM res_rsv_artikel rra,
|
||
res_rsv_ruimte rrr,
|
||
res_artikel ra,
|
||
res_ruimte_opstelling rop,
|
||
res_ruimte rer,
|
||
res_alg_ruimte rarm,
|
||
alg_v_ruimte_gegevens_all alg
|
||
WHERE rra.res_status_bo_key = 2
|
||
-- AND rra.res_rsv_artikel_verwijder IS NULL
|
||
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
|
||
AND ra.res_artikel_key = rra.res_artikel_key
|
||
-- AND rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key
|
||
AND rer.res_ruimte_key = rop.res_ruimte_key
|
||
AND rarm.res_ruimte_key = rer.res_ruimte_key
|
||
AND alg.alg_ruimte_key = rarm.alg_ruimte_key
|
||
AND alg.alg_locatie_key= 11 -- RS8 = 18
|
||
ORDER BY rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr;
|
||
|
||
CREATE OR REPLACE PROCEDURE fmhn_select_reservering(
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2)
|
||
AS
|
||
CURSOR sel_res
|
||
IS
|
||
SELECT res_rsv_ruimte_key, res_reservering_key, res_rsv_ruimte_volgnr, last_upd, last_export, verw_datum, alg_ruimte_nr, besteller, datum_van, datum_tot, oms, aantal, locatie_code
|
||
FROM fmhn_v_select_reservering;
|
||
--WHERE last_export IS NULL;
|
||
|
||
|
||
v_base VARCHAR2 (10);
|
||
v_bestand VARCHAR2(50);
|
||
v_counter NUMBER;
|
||
v_status VARCHAR2(20);
|
||
BEGIN
|
||
v_base := 'RES_NEW';
|
||
v_counter:=1;
|
||
|
||
DELETE FROM fac_rapport -- Opschonen oude Reserevering exports
|
||
WHERE fac_rapport_node LIKE 'RES_NEW%' OR fac_rapport_node LIKE 'ITM_NEW%';
|
||
FOR rec IN sel_res
|
||
LOOP
|
||
v_status := 'ND';
|
||
-- Maar eerst gaan bepalen of we wat moeten doen voor dit record.
|
||
IF rec.last_export IS NULL
|
||
THEN
|
||
v_status:= 'Opened';
|
||
ELSIF rec.last_export IS NOT NULL AND rec.last_upd>rec.last_export AND rec.verw_datum IS NULL THEN
|
||
v_status := 'Opened'; -- NPQ kent geen update status
|
||
v_base := 'RES_UPD';
|
||
ELSIF rec.last_export IS NOT NULL AND rec.verw_datum IS NOT NULL and rec.verw_datum>rec.last_export THEN
|
||
v_status :='Cancelled';
|
||
v_base := 'RES_DEL';
|
||
END IF;
|
||
|
||
IF v_status != 'ND' -- we gaan allee XML maken als er ook een status is anders dan 'ND';
|
||
THEN
|
||
v_bestand := v_base || '-' || v_counter || '-';
|
||
fmhn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
|
||
fmhn.add_xml_row (v_bestand, '<Facilitor>');
|
||
fmhn.add_xml_row (v_bestand, '<Reservering type="Zaalreservering">');
|
||
fmhn.add_xml_element (v_bestand, 'Status', v_status);
|
||
fmhn.add_xml_element (v_bestand, 'Key', rec.res_rsv_ruimte_key);
|
||
fmhn.add_xml_element (v_bestand, 'ReserveringNr', rec.res_reservering_key||'/'||rec.res_rsv_ruimte_volgnr);
|
||
fmhn.add_xml_element (v_bestand, 'RuimteNr', rec.alg_ruimte_nr);
|
||
fmhn.add_xml_element (v_bestand, 'LocatieCode', rec.locatie_Code);
|
||
fmhn.add_xml_element (v_bestand, 'DatumVan', TO_CHAR(rec.datum_van,'YYYY-MM-DD"T"hh24:mi:ss'));
|
||
fmhn.add_xml_element (v_bestand, 'DatumTot', TO_CHAR(rec.datum_tot,'YYYY-MM-DD"T"hh24:mi:ss'));
|
||
fmhn.add_xml_element (v_bestand, 'Omschrijving', rec.oms);
|
||
fmhn.add_xml_element (v_bestand, 'Aantal', rec.aantal);
|
||
fmhn.add_xml_element (v_bestand, 'Besteller', rec.besteller);
|
||
|
||
|
||
|
||
fmhn.add_xml_row (v_bestand, '</Reservering>');
|
||
fmhn.add_xml_row (v_bestand, '</Facilitor>');
|
||
v_counter:=v_counter+1;
|
||
|
||
UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE
|
||
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
|
||
fmhn_select_objects(rec.res_rsv_ruimte_key, v_counter); -- Kijken iof deze reserverig ook evt catering artikelen heeft
|
||
END IF;
|
||
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE VIEW fmhn_v_export_reservering (
|
||
result,
|
||
result_order,
|
||
exp_res
|
||
)
|
||
AS
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node LIKE 'RES_%'
|
||
UNION
|
||
SELECT fac_rapport_regel, fac_rapport_volgnr, fac_rapport_node
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node LIKE 'ITM_%';
|
||
|
||
------ payload end ------
|
||
|
||
SET DEFINE OFF
|
||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||
/
|
||
|
||
COMMIT;
|
||
SET ECHO OFF
|
||
SPOOL OFF
|
||
SET DEFINE ON
|
||
PROMPT Logfile of this upgrade is: &fcltlogfile
|