572 lines
25 KiB
MySQL
572 lines
25 KiB
MySQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing FLEX specific sql statements for the FACILITOR database
|
|
|
|
|
|
DEFINE thisfile = 'FLEX.SQL'
|
|
DEFINE dbuser = 'FLEX'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
---------------------------------------
|
|
PROMPT &fcltcusttxt
|
|
---------------------------------------
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
|
|
CREATE OR REPLACE PACKAGE FLEX
|
|
AS
|
|
|
|
FUNCTION res_presave (p_user_key IN NUMBER,
|
|
p_rsv_ruimte_key IN NUMBER,
|
|
p_activiteit_key IN NUMBER,
|
|
p_res_deel_key IN NUMBER,
|
|
p_datum_van IN DATE,
|
|
p_datum_tot IN DATE,
|
|
p_volgnr IN NUMBER)
|
|
RETURN VARCHAR2;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY FLEX
|
|
AS
|
|
|
|
FUNCTION res_presave (p_user_key IN NUMBER,
|
|
p_rsv_ruimte_key IN NUMBER,
|
|
p_activiteit_key IN NUMBER,
|
|
p_res_deel_key IN NUMBER,
|
|
p_datum_van IN DATE,
|
|
p_datum_tot IN DATE,
|
|
p_volgnr IN NUMBER)
|
|
RETURN VARCHAR2
|
|
AS
|
|
v_result VARCHAR2 (300);
|
|
v_date DATE;
|
|
v_count NUMBER;
|
|
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
BEGIN
|
|
v_result := 'OK';
|
|
-- op dit moment nog niet in gebruik
|
|
RETURN v_result;
|
|
|
|
IF p_activiteit_key IN (21, 61, 81) -- werkplek, restaurantplek, vergaderplek
|
|
THEN
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM res_rsv_ruimte rrr
|
|
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrr.res_activiteit_key = p_activiteit_key
|
|
AND rrr.res_rsv_ruimte_host_key = p_user_key
|
|
AND rrr.res_rsv_ruimte_key <> p_rsv_ruimte_key
|
|
AND res_rsv_ruimte_van = TRUNC (p_datum_tot);
|
|
-- AND p_datum_tot > rrr.res_rsv_ruimte_van
|
|
-- AND p_datum_van < rrr.res_rsv_ruimte_tot
|
|
|
|
IF v_count > 0
|
|
THEN
|
|
v_result := 'Beste collega,' || CHR(10) ||
|
|
'We hebben deze dag al een reserveringen van je gevonden. Je mag geen overlappende reserveringen boeken.';
|
|
ELSE
|
|
v_errorhint := 'Kijk of de reservering te ver in de toekomst ligt';
|
|
IF p_datum_van > TRUNC(SYSDATE + 28)
|
|
THEN
|
|
v_result := 'Beste collega,' || CHR(10) ||
|
|
'Je mag maximaal 28 dagen in de toekomst boeken.';
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
RETURN v_result;
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
RETURN v_result;
|
|
END;
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
-- Import functie voor het importeren van vastgoed en werkplekgegevens.
|
|
|
|
CREATE OR REPLACE PROCEDURE flex_import_wp (p_import_key IN NUMBER)
|
|
AS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (1000); -- 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_aanduiding VARCHAR2 (200);
|
|
-- De importvelden:
|
|
v_klantcode VARCHAR2(255);
|
|
v_locatie_code VARCHAR2(255);
|
|
v_locatie_omschrijving VARCHAR2(255);
|
|
v_gebouw_code VARCHAR2(255);
|
|
v_gebouw_omschrijving VARCHAR2(255);
|
|
v_verdieping_volgnr VARCHAR2(255);
|
|
v_ruimte_nr VARCHAR2(255);
|
|
v_ruimte_omschrijving VARCHAR2(255);
|
|
v_kenmerkwaarde1 VARCHAR2(255);
|
|
v_kenmerkwaarde2 VARCHAR2(255);
|
|
v_kenmerkwaarde3 VARCHAR2(255);
|
|
v_kenmerkwaarde4 VARCHAR2(255);
|
|
v_kenmerkwaarde5 VARCHAR2(255);
|
|
v_deel_omschrijving VARCHAR2(255);
|
|
v_deel_reserveerbaar VARCHAR2(255);
|
|
|
|
|
|
CURSOR c IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Vorige inlees eerst verwijderen
|
|
DELETE FROM flex_imp_wp;
|
|
|
|
COMMIT;
|
|
|
|
header_is_valid := 0;
|
|
v_ongeldig := 0;
|
|
v_count := 0;
|
|
header_is_valid := 0;
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
|
|
-- Lees alle veldwaarden: Klantcode Locatiecode Locatieomschrijving Gebouwcode Gebouwomschrijving Bouwlaagvolgnummer Ruimtenummer Ruimteomschrijving WPidentificatie reserveerbaar
|
|
v_errormsg := 'Fout opvragen te importeren rij (Klantcode)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_klantcode);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Locatiecode)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_code);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Locatieomschrijving)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_omschrijving);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Gebouwcode)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_code);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Gebouwomschrijving)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_omschrijving);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Bouwlaagvolgnummer)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_verdieping_volgnr);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Ruimtenummer)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_nr);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Ruimteomschrijving)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_omschrijving);
|
|
v_errormsg := 'Fout opvragen te importeren rij (WPidentificatie)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_deel_omschrijving);
|
|
v_errormsg := 'Fout opvragen te importeren rij (WPreserveerbaar)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_deel_reserveerbaar);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Kenmerk1)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerkwaarde1);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Kenmerk2)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerkwaarde2);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Kenmerk3)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerkwaarde3);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Kenmerk4)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerkwaarde4);
|
|
v_errormsg := 'Fout opvragen te importeren rij (Kenmerk5)';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kenmerkwaarde5);
|
|
|
|
v_aanduiding :=
|
|
v_locatie_code
|
|
|| '|'
|
|
|| v_gebouw_code
|
|
|| '|'
|
|
|| v_verdieping_volgnr
|
|
|| '|'
|
|
|| v_ruimte_nr
|
|
|| '|'
|
|
|| v_deel_omschrijving;
|
|
|
|
|
|
-- Skip until the header is found
|
|
IF header_is_valid = 0 OR SUBSTR(rec.fac_imp_file_line,1,4) = ';;;;'
|
|
THEN
|
|
IF UPPER(v_klantcode) = 'KLANTCODE'
|
|
AND UPPER(v_locatie_code) = 'LOCATIECODE'
|
|
AND UPPER(v_locatie_omschrijving) = 'LOCATIEOMSCHRIJVING'
|
|
AND UPPER(v_gebouw_code) = 'GEBOUWCODE'
|
|
AND UPPER(v_gebouw_omschrijving) = 'GEBOUWOMSCHRIJVING'
|
|
AND UPPER(v_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
|
|
AND UPPER(v_ruimte_nr) = 'RUIMTENUMMER'
|
|
AND UPPER(v_ruimte_omschrijving) = 'RUIMTEOMSCHRIJVING'
|
|
AND UPPER(v_deel_omschrijving) = 'WPIDENTIFICATIE'
|
|
AND UPPER(v_deel_reserveerbaar) = 'RESERVEERBAAR'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE -- Header OK. V
|
|
BEGIN
|
|
v_ongeldig := 0;
|
|
|
|
v_klantcode := TRIM(v_klantcode);
|
|
v_errormsg := 'Controleer klantcode ' || v_klantcode;
|
|
IF LENGTH(v_klantcode) > 4 OR v_klantcode IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Klantcode mag NIET leeg zijn of groter dan 4 posities: ' || v_aanduiding, v_errormsg);
|
|
v_klantcode := SUBSTR(v_klantcode, 1, 4);
|
|
END IF;
|
|
|
|
v_locatie_code := TRIM(v_locatie_code);
|
|
v_errormsg := 'Controleer locatiecode ' || v_locatie_code;
|
|
IF LENGTH(v_locatie_code) > 10 OR v_locatie_code IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Locatiecode mag NIET leeg zijn of groter dan 10 posities: ' || v_aanduiding, v_errormsg);
|
|
v_locatie_code := SUBSTR(v_locatie_code, 1, 10);
|
|
END IF;
|
|
|
|
v_locatie_omschrijving := TRIM(v_locatie_omschrijving);
|
|
v_errormsg := 'Controleer locatieomschrijving ' || v_locatie_omschrijving;
|
|
IF LENGTH(v_locatie_omschrijving) > 60 OR v_locatie_omschrijving IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Locatieomschrijving mag NIET leeg zijn of groter dan 60 posities: ' || v_aanduiding, v_errormsg);
|
|
v_locatie_omschrijving := SUBSTR(v_locatie_omschrijving, 1, 60);
|
|
END IF;
|
|
|
|
v_gebouw_code := TRIM(v_gebouw_code);
|
|
v_errormsg := 'Controleer gebouwcode ' || v_gebouw_code;
|
|
IF LENGTH(v_gebouw_code) > 10 OR v_gebouw_code IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Gebouwcode mag NIET leeg zijn of groter dan 12 posities: ' || v_aanduiding, v_errormsg);
|
|
v_gebouw_code := SUBSTR(v_gebouw_code, 1, 12);
|
|
END IF;
|
|
|
|
v_gebouw_omschrijving := TRIM(v_gebouw_omschrijving);
|
|
v_errormsg := 'Controleer gebouwomschrijving ' || v_gebouw_omschrijving;
|
|
IF LENGTH(v_gebouw_omschrijving) > 30 OR v_gebouw_omschrijving IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Gebouwomschrijving mag NIET leeg zijn of groter dan 30 posities: ' || v_aanduiding, v_errormsg);
|
|
v_gebouw_omschrijving := SUBSTR(v_gebouw_omschrijving, 1, 30);
|
|
END IF;
|
|
|
|
v_verdieping_volgnr := TRIM(v_verdieping_volgnr);
|
|
v_errormsg := 'Controleer bouwlaagvolgnummer ' || v_verdieping_volgnr;
|
|
IF FAC.safe_to_number(v_verdieping_volgnr) IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Bouwlaagvolgnummer is geen getal: ' || v_aanduiding, v_errormsg);
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_ruimte_nr := TRIM(v_ruimte_nr);
|
|
v_errormsg := 'Controleer ruimtenummer ' || v_ruimte_nr;
|
|
IF LENGTH(v_ruimte_nr) > 10 OR v_ruimte_nr IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Ruimtenummer mag NIET leeg zijn of groter dan 10 posities: ' || v_aanduiding, v_errormsg);
|
|
v_ruimte_nr := SUBSTR(v_ruimte_nr, 1, 10);
|
|
END IF;
|
|
|
|
v_ruimte_omschrijving := TRIM(v_ruimte_omschrijving);
|
|
v_errormsg := 'Controleer ruimteomschrijving ' || v_ruimte_omschrijving;
|
|
IF LENGTH(v_ruimte_omschrijving) > 30 OR v_ruimte_omschrijving IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Ruimteomschrijving mag NIET leeg zijn of groter dan 30 posities: ' || v_aanduiding, v_errormsg);
|
|
v_ruimte_omschrijving := SUBSTR(v_ruimte_omschrijving, 1, 30);
|
|
END IF;
|
|
|
|
v_deel_omschrijving := TRIM(v_deel_omschrijving);
|
|
v_errormsg := 'Controleer werkplekidentificatie ' || v_deel_omschrijving;
|
|
IF LENGTH(v_deel_omschrijving) > 30 OR v_deel_omschrijving IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Werkplekidentificatie mag NIET leeg zijn of groter dan 30 posities: ' || v_aanduiding, v_errormsg);
|
|
v_deel_omschrijving := SUBSTR(v_deel_omschrijving, 1, 30);
|
|
END IF;
|
|
|
|
v_deel_reserveerbaar := TRIM (v_deel_reserveerbaar);
|
|
v_errormsg := 'Controleer reserveerbaar ' || v_deel_reserveerbaar;
|
|
IF NOT (UPPER(v_deel_reserveerbaar) = 'J' OR UPPER(v_deel_reserveerbaar) = 'N' OR v_deel_reserveerbaar IS NULL)
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'W', 'Reserveerbaar is ongeldig: ' || v_aanduiding, v_errormsg);
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
INSERT INTO flex_imp_wp (klantcode,
|
|
alg_locatie_code,
|
|
alg_locatie_omschrijving,
|
|
alg_gebouw_code,
|
|
alg_gebouw_omschrijving,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
alg_ruimte_omschrijving,
|
|
alg_kenmerkwaarde1,
|
|
alg_kenmerkwaarde2,
|
|
alg_kenmerkwaarde3,
|
|
alg_kenmerkwaarde4,
|
|
alg_kenmerkwaarde5,
|
|
ins_deel_omschrijving,
|
|
ins_deel_reserveerbaar)
|
|
VALUES (v_klantcode,
|
|
v_locatie_code,
|
|
v_locatie_omschrijving,
|
|
v_gebouw_code,
|
|
v_gebouw_omschrijving,
|
|
v_verdieping_volgnr,
|
|
v_ruimte_nr,
|
|
v_ruimte_omschrijving,
|
|
v_kenmerkwaarde1,
|
|
v_kenmerkwaarde2,
|
|
v_kenmerkwaarde3,
|
|
v_kenmerkwaarde4,
|
|
v_kenmerkwaarde5,
|
|
v_deel_omschrijving,
|
|
v_deel_reserveerbaar);
|
|
|
|
v_count := v_count + 1;
|
|
END IF;
|
|
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 specificatie!');
|
|
|
|
END IF;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Aantal ingelezen regels: ' || TO_CHAR (v_count),
|
|
'');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_errorhint := v_errormsg;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg || ' - ' || v_aanduiding,
|
|
v_errorhint);
|
|
END flex_import_wp;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE flex_update_wp (
|
|
p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (150);
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR (100);
|
|
|
|
|
|
BEGIN
|
|
v_errorhint := 'Vullen van de locatie en gebouwgegevens';
|
|
DELETE fac_imp_onrgoed1;
|
|
INSERT INTO fac_imp_onrgoed1 (alg_regio_omschrijving,
|
|
alg_district_omschrijving,
|
|
alg_locatie_code,
|
|
alg_locatie_omschrijving,
|
|
alg_gebouw_code,
|
|
alg_gebouw_naam,
|
|
alg_srtgebouw_omschrijving)
|
|
SELECT klantcode,
|
|
klantcode,
|
|
alg_locatie_code,
|
|
alg_locatie_omschrijving,
|
|
alg_gebouw_code,
|
|
alg_gebouw_omschrijving,
|
|
'Algemeen'
|
|
FROM flex_imp_wp
|
|
GROUP BY klantcode,
|
|
alg_locatie_code,
|
|
alg_locatie_omschrijving,
|
|
alg_gebouw_code,
|
|
alg_gebouw_omschrijving;
|
|
fac_update_onrgoed1(p_import_key);
|
|
|
|
v_errorhint := 'Vullen van de verdieping en ruimtegegevens';
|
|
DELETE fac_imp_onrgoed2;
|
|
INSERT INTO fac_imp_onrgoed2 (alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
alg_ruimte_omschrijving,
|
|
alg_srtruimte_omschrijving
|
|
)
|
|
SELECT alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
alg_ruimte_omschrijving,
|
|
'Algemeen'
|
|
FROM flex_imp_wp
|
|
GROUP BY alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
alg_ruimte_omschrijving;
|
|
fac_update_onrgoed2(p_import_key);
|
|
|
|
v_errorhint := 'Vullen van de werkplekgegevens';
|
|
DELETE fac_imp_ins;
|
|
INSERT INTO fac_imp_ins (ins_discipline_omschrijving,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_deel_omschrijving,
|
|
reserveerbaar,
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
ins_deel_aantal,
|
|
res_deel_alg_level,
|
|
res_discipline_omschrijving)
|
|
SELECT 'Interieur',
|
|
'Werkplekken',
|
|
'WP',
|
|
'Werkplek',
|
|
ins_deel_omschrijving,
|
|
DECODE(UPPER(ins_deel_reserveerbaar), 'J', 1, 0),
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
1,
|
|
2, -- Locatie
|
|
klantcode || '-' || 'Werkplekken'
|
|
FROM flex_imp_wp;
|
|
fac_update_ins (p_import_key);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg || v_aanduiding,
|
|
v_errorhint);
|
|
END flex_update_wp;
|
|
/
|
|
|
|
-- Om overzicht op mobiel met mijn gereserveerde werkplekken te laten zien.
|
|
CREATE OR REPLACE VIEW flex_v_rap_mijn_wp_reservering
|
|
AS
|
|
SELECT rrr.res_rsv_ruimte_host_key,
|
|
rrr.res_rsv_ruimte_van,
|
|
rrr.res_rsv_ruimte_tot,
|
|
rg.alg_locatie_omschrijving,
|
|
rg.alg_gebouw_omschrijving,
|
|
rg.alg_verdieping_omschrijving,
|
|
rg.alg_ruimte_nr,
|
|
rd.res_deel_omschrijving,
|
|
rg.alg_ruimte_aanduiding,
|
|
rrr.res_rsv_ruimte_key
|
|
FROM res_rsv_ruimte rrr,
|
|
res_rsv_deel rrd,
|
|
res_deel rd,
|
|
alg_v_ruimte_gegevens rg
|
|
WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
|
|
AND rrd.res_deel_key = rd.res_deel_key
|
|
AND rrr.alg_ruimte_key = rg.alg_ruimte_key
|
|
AND rrr.res_rsv_ruimte_verwijder IS NULL
|
|
AND rrd.res_rsv_deel_verwijder IS NULL
|
|
AND rrr.res_rsv_ruimte_van > SYSDATE;
|
|
|
|
|
|
CREATE OR REPLACE VIEW flex_v_thema_deel_res_d_1230
|
|
(
|
|
fclt_f_datum,
|
|
ins_deel_key,
|
|
min_van,
|
|
max_tot,
|
|
waarde1,
|
|
waarde,
|
|
waarde3
|
|
)
|
|
AS
|
|
WITH
|
|
datums
|
|
AS
|
|
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
|
|
FROM DUAL
|
|
CONNECT BY LEVEL <= 31)
|
|
SELECT datum
|
|
fclt_f_datum,
|
|
ins_deel_key,
|
|
MIN (res_rsv_deel_van)
|
|
min_van,
|
|
MAX (res_rsv_deel_tot)
|
|
max_tot,
|
|
CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 ELSE 3 -- hele dag
|
|
END
|
|
waarde1,
|
|
CASE
|
|
WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0
|
|
WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24MI') <= '1230' THEN 1 -- ochtend
|
|
WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24MI') >= '1230' THEN 2 -- middag
|
|
ELSE 3 -- hele dag
|
|
END
|
|
waarde,
|
|
COUNT (res_rsv_deel_tot) -- aantal reservering deze dag
|
|
waarde3
|
|
FROM (SELECT datums.datum,
|
|
res_ins_deel_key ins_deel_key,
|
|
res_rsv_deel_van,
|
|
res_rsv_deel_tot
|
|
FROM res_v_aanwezigdeel r,
|
|
ins_deel d,
|
|
datums,
|
|
(SELECT datum,
|
|
res_deel_key,
|
|
res_rsv_deel_van,
|
|
res_rsv_deel_tot
|
|
FROM datums, res_v_aanwezigrsv_deel rrd
|
|
WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso
|
|
AND datum >= TRUNC (res_rsv_deel_van)
|
|
AND datum < TRUNC (res_rsv_deel_tot) + 1) blokkerend -- vandaag en nog niet afgelopen
|
|
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
|
|
AND datums.datum = blokkerend.datum(+)
|
|
AND (r.res_deel_vervaldatum IS NULL or r.res_deel_vervaldatum > datums.datum)
|
|
AND d.ins_deel_key = r.res_ins_deel_key)
|
|
GROUP BY datum, ins_deel_key
|
|
ORDER BY datum, ins_deel_key;
|
|
|
|
------ 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
|