Files
Customer/FMHN/fmhn.sql
Sander Schepers 9862425e8f FMHN#63881 Uitbreiding views & levering NPQ
svn path=/Customer/trunk/; revision=53733
2021-11-16 19:42:07 +00:00

10674 lines
474 KiB
MySQL
Raw Blame History

--
-- $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