FLEX#62812 -- Flex werkplekreserveringen Import functie
svn path=/Customer/trunk/; revision=47568
This commit is contained in:
398
FLEX/flex.sql
Normal file
398
FLEX/flex.sql
Normal file
@@ -0,0 +1,398 @@
|
||||
--
|
||||
-- $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 ------
|
||||
|
||||
-- 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_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_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_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_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_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_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_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_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_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_errormsg := 'Controleer reserveerbaar ' || v_deel_reserveerbaar;
|
||||
IF NOT (UPPER(v_deel_reserveerbaar) = 'J' OR v_deel_reserveerbaar IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'W', 'Reserveerbaar is ongeldig: ' || v_aanduiding, v_errormsg);
|
||||
v_ongeldig := 1;
|
||||
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;
|
||||
/
|
||||
|
||||
------ 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
|
||||
Reference in New Issue
Block a user