24062 lines
1.0 MiB
24062 lines
1.0 MiB
/* $Revision$
|
||
* $Id$
|
||
*/
|
||
|
||
/* FAC_PACF.SRC, (F means FIP) to be included from fac_pac.src, isolated for convenience only
|
||
*
|
||
* Facilitor Import (en Export) routines. Verplichte richtlijnen:
|
||
*
|
||
* Voor Importfunctie XXXX moeten (uitsluitend) worden gedefinieerd
|
||
* tabel fac_imp_XXXX
|
||
* procedure fac_import_XXXX vult die tabel
|
||
* procedure fac_update_XXXX vult de database op basis van die tabel
|
||
*
|
||
* evt nodige functies en procedures moeten lokaal of generiek toepasbaar worden gedefinieerd
|
||
*/
|
||
|
||
-- Generieke procedure om csv-regels uit FAC_IMP_FILE
|
||
-- te splitsen naar losse kolommen in FAC_IMP_CSV
|
||
CREATE OR REPLACE PROCEDURE fac_import_file2csv (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_file_index, fac_imp_file_line
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
c_delim VARCHAR2 (1);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errorhint VARCHAR2 (1000);
|
||
|
||
TYPE array_t IS VARRAY (100) OF VARCHAR2 (4000);
|
||
|
||
a_fields array_t := array_t ();
|
||
|
||
rec_count fac_imp_csv.fac_imp_csv_index%TYPE;
|
||
collist VARCHAR2 (4000);
|
||
fldlist VARCHAR2 (4000);
|
||
|
||
l_cursor INTEGER DEFAULT DBMS_SQL.open_cursor;
|
||
l_sql VARCHAR2 (4000);
|
||
returnValue PLS_INTEGER;
|
||
BEGIN
|
||
SELECT COALESCE (fac_import_app_delimiter, ';')
|
||
INTO c_delim
|
||
FROM fac_import fi, fac_import_app fia
|
||
WHERE fi.fac_import_key = p_import_key AND fi.fac_import_app_key = fia.fac_import_app_key;
|
||
|
||
rec_count := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
v_errorhint := 'Fout bij splitsen csv regel';
|
||
v_newline := rec.fac_imp_file_line;
|
||
|
||
IF TRIM (REPLACE (v_newline, c_delim, '')) IS NULL -- geen lege regels
|
||
THEN
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
rec_count := rec_count + 1;
|
||
|
||
FOR f IN 1 .. a_fields.COUNT
|
||
LOOP
|
||
a_fields (f) := NULL;
|
||
END LOOP;
|
||
|
||
FOR f IN 1 .. 100
|
||
LOOP
|
||
IF (rec_count = 1) -- eerste (header) regel bepaalt het aantal kolommen
|
||
THEN
|
||
IF (a_fields.COUNT = 100)
|
||
THEN
|
||
raise_application_error(-20001, 'More than ' || a_fields.COUNT || ' columns in csv');
|
||
END IF;
|
||
|
||
a_fields.EXTEND;
|
||
collist := collist || ', fac_imp_csv_col' || CASE WHEN f < 10 THEN '0' ELSE '' END || f;
|
||
fldlist := fldlist || ', :a_fields' || f;
|
||
ELSIF f > a_fields.COUNT
|
||
THEN
|
||
CONTINUE;
|
||
END IF;
|
||
|
||
fac.imp_getfield (v_newline, c_delim, a_fields (f));
|
||
|
||
IF v_newline IS NULL -- klaar met deze regel
|
||
THEN
|
||
EXIT;
|
||
END IF;
|
||
END LOOP;
|
||
|
||
IF (rec_count = 1)
|
||
THEN
|
||
DBMS_OUTPUT.Put_line ('Detected ' || a_fields.COUNT || ' columns in csv');
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Detected ' || a_fields.COUNT || ' columns in csv',
|
||
'');
|
||
l_sql :=
|
||
'INSERT INTO fac_imp_csv (fac_import_key, fac_imp_csv_index'
|
||
|| collist
|
||
|| ') VALUES (:import_key, :rec_count'
|
||
|| fldlist
|
||
|| ')';
|
||
--DBMS_OUTPUT.put_line (l_sql);
|
||
DBMS_SQL.parse (l_cursor, l_sql, DBMS_SQL.native);
|
||
DBMS_SQL.bind_variable (l_cursor, ':import_key', p_import_key);
|
||
END IF;
|
||
DBMS_SQL.bind_variable (l_cursor, ':rec_count', rec.fac_imp_file_index);
|
||
|
||
FOR f IN 1 .. a_fields.COUNT
|
||
LOOP
|
||
DBMS_SQL.bind_variable (l_cursor, ':a_fields' || f, a_fields (f));
|
||
END LOOP;
|
||
|
||
returnValue := DBMS_SQL.execute (l_cursor);
|
||
END LOOP;
|
||
|
||
IF (rec_count > 0)
|
||
THEN
|
||
DBMS_SQL.close_cursor (l_cursor);
|
||
END IF;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Converted ' || rec_count || ' csv lines',
|
||
'');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'ORACLE (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 200) || ')',
|
||
v_errorhint);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_genericcsv (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
-- Het import csv-bestand wordt nu ingelezen met /imp/imp_inlezen.asp (en imp/imp_shared.js).
|
||
-- Van daaruit worden de gegevens in de tabel fac_imp_csv gezet.
|
||
-- fac_import_file2csv(p_import_key);
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE FUNCTION fac_check_import_header(p_field IN VARCHAR2, p_value IN VARCHAR2) RETURN BOOLEAN
|
||
IS
|
||
v_result BOOLEAN := False;
|
||
BEGIN
|
||
IF ( UPPER (REPLACE(p_field, '_',' ')) = p_value)
|
||
THEN
|
||
v_result := True;
|
||
END IF;
|
||
RETURN v_result;
|
||
END;
|
||
/
|
||
|
||
-- Geen PROCEDURE fac_update_genericcsv, dat gebeurt in de praktijk met een custom once script
|
||
|
||
-- Procedures om catalogi in te lezen en te verwerken
|
||
CREATE OR REPLACE PROCEDURE fac_import_catalogus (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
p_discipline_key NUMBER(10);
|
||
p_bedrijf_key NUMBER(10);
|
||
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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);
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1) := 0;
|
||
|
||
-- De importvelden
|
||
v_discipline_omschrijving VARCHAR2 (255);
|
||
v_bedrijf_naam VARCHAR2 (255);
|
||
v_catalogus_datum VARCHAR2 (255);
|
||
v_srtdeel_nr VARCHAR2 (255);
|
||
v_srtgroep_omschrijving VARCHAR2 (255);
|
||
v_srtdeel_omschrijving VARCHAR2 (255);
|
||
v_srtdeel_prijs VARCHAR2 (255);
|
||
v_srtdeel_eenheid VARCHAR2 (255);
|
||
v_srtdeel_image VARCHAR2 (255);
|
||
v_srtdeel_veelvoud VARCHAR2 (255);
|
||
v_srtdeel_btw VARCHAR2 (255);
|
||
v_srtdeel_vervaldatum VARCHAR2 (255);
|
||
v_srtdeel_inkprijs VARCHAR2 (255);
|
||
v_srtdeel_minimum VARCHAR2 (255);
|
||
v_bes_staffeltabel_naam VARCHAR2 (255);
|
||
v_srtdeel_wijzigdagen VARCHAR2 (255);
|
||
v_srtdeel_annuleerdagen VARCHAR2 (255);
|
||
v_srtdeel_opmerking VARCHAR2 (4000); -- straks afgekapt op 2000
|
||
|
||
-- Overige velden:
|
||
v_discipline_key NUMBER (10);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_bes_staffeltabel_key NUMBER (10);
|
||
|
||
|
||
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
|
||
SELECT ins_discipline_key, prs_bedrijf_key
|
||
INTO p_discipline_key, p_bedrijf_key
|
||
FROM fac_import fi, fac_import_app fia
|
||
WHERE fi.fac_import_key = p_import_key
|
||
AND fi.fac_import_app_key = fia.fac_import_app_key;
|
||
|
||
-- Eerst opruiming
|
||
-- LET OP: we ondersteunen geen multi-variant meer
|
||
DELETE FROM fac_imp_catalogus;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout inlezen importregel';
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_catalogus_datum);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtgroep_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_prijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_eenheid);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_image);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_veelvoud);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_btw);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_vervaldatum);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_inkprijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_minimum);
|
||
fac.imp_getfield (v_newline, c_delim, v_bes_staffeltabel_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_wijzigdagen);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_annuleerdagen);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtdeel_opmerking);
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij - sinds UWVA#21562 - bijna alle
|
||
-- kolommen (spaties in kolomheaders zijn onhandig bij "round-trip syncen").
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (TRIM (v_discipline_omschrijving)) LIKE 'CATALOGUS%'
|
||
AND UPPER (TRIM (v_bedrijf_naam)) = 'LEVERANCIER'
|
||
--AND UPPER (TRIM (v_catalogus_datum)) = 'CAT DATUM' -- Laat maar!
|
||
AND UPPER (TRIM (v_srtdeel_nr)) = 'ARTIKELNR'
|
||
AND UPPER (TRIM (v_srtgroep_omschrijving)) = 'GROEP'
|
||
AND UPPER (TRIM (v_srtdeel_omschrijving)) = 'OMSCHRIJVING'
|
||
AND UPPER (TRIM (v_srtdeel_prijs)) = 'PRIJS'
|
||
AND UPPER (TRIM (v_srtdeel_eenheid)) = 'EENHEID'
|
||
AND UPPER (TRIM (v_srtdeel_image)) = 'PICTURE'
|
||
AND UPPER (TRIM (v_srtdeel_veelvoud)) = 'ORDERAANTAL'
|
||
AND UPPER (TRIM (v_srtdeel_btw)) = 'TAX'
|
||
AND UPPER (TRIM (v_srtdeel_vervaldatum)) = 'DUEDATE'
|
||
AND UPPER (TRIM (v_srtdeel_inkprijs)) = 'INKOOPPRIJS'
|
||
AND UPPER (TRIM (v_srtdeel_minimum)) = 'MINIMUM'
|
||
AND UPPER (TRIM (v_bes_staffeltabel_naam)) = 'STAFFELTABEL'
|
||
--AND UPPER (TRIM (v_srtdeel_wijzigdagen)) = 'WIJZIGDAGEN' -- Laat maar!
|
||
--AND UPPER (TRIM (v_srtdeel_annuleerdagen)) = 'ANNULEERDAGEN' -- Laat maar!
|
||
AND UPPER (TRIM (v_srtdeel_opmerking)) = 'OPMERKING'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF rec.regellengte > 1 -- Lege regels overslaan!
|
||
THEN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| TRIM (v_discipline_omschrijving)
|
||
|| '|'
|
||
|| TRIM (v_bedrijf_naam)
|
||
|| '|'
|
||
|| TRIM (v_srtdeel_nr)
|
||
|| '] ';
|
||
|
||
v_discipline_omschrijving := TRIM (v_discipline_omschrijving);
|
||
v_errorhint :=
|
||
'Catalogus onbekend/ongeldig; regel wordt niet ingelezen';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM INS_TAB_DISCIPLINE
|
||
WHERE UPPER (ins_discipline_omschrijving) =
|
||
UPPER (v_discipline_omschrijving)
|
||
AND COALESCE (p_discipline_key, ins_discipline_key) =
|
||
ins_discipline_key -- CONN#20934/Import bedoelt voor catalogus?
|
||
AND ins_discipline_module = 'BES'
|
||
AND ins_discipline_verwijder IS NULL;
|
||
|
||
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
||
v_errorhint :=
|
||
'Bedrijf onbekend/ongeldig; regel wordt niet ingelezen';
|
||
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM PRS_BEDRIJF
|
||
WHERE UPPER (prs_bedrijf_naam) = UPPER (v_bedrijf_naam)
|
||
AND COALESCE (p_bedrijf_key, prs_bedrijf_key) =
|
||
prs_bedrijf_key -- Import bedoelt voor bedrijf?
|
||
AND prs_bedrijf_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Fout bij controleren importregel';
|
||
|
||
-- Indien leeg, dan catalogusdatum=SYSDATE gebruiken!
|
||
v_catalogus_datum :=
|
||
COALESCE (TRIM (v_catalogus_datum),
|
||
TO_CHAR (SYSDATE, 'yyyymmdd'));
|
||
|
||
IF fac.safe_to_date (v_catalogus_datum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige catalogusdatum',
|
||
'Regel wordt niet ingelezen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_nr := TRIM (v_srtdeel_nr);
|
||
|
||
IF LENGTH (v_srtdeel_nr) > 32
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Artikelnummer te lang',
|
||
'Nummer wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtgroep_omschrijving := TRIM (v_srtgroep_omschrijving);
|
||
|
||
IF LENGTH (v_srtgroep_omschrijving) > 60
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Groepomschrijving te lang',
|
||
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtdeel_omschrijving := TRIM (v_srtdeel_omschrijving);
|
||
|
||
IF LENGTH (v_srtdeel_omschrijving) > 100
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Artikelomschrijving te lang',
|
||
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt prijs=ongedefinieerd=NULL!
|
||
v_srtdeel_prijs := TRIM (v_srtdeel_prijs);
|
||
|
||
IF v_srtdeel_prijs IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_prijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige prijs',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_eenheid := TRIM (v_srtdeel_eenheid);
|
||
|
||
IF LENGTH (v_srtdeel_eenheid) > 30
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Eenheid te lang',
|
||
'Eenheid wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
v_srtdeel_image := TRIM (v_srtdeel_image);
|
||
|
||
IF LENGTH (v_srtdeel_image) > 255
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Imagenaam te lang',
|
||
'Naam wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
-- Veelvoud mag niet negatief of meer zijn dan 6 posities lang.
|
||
-- Indien leeg, dan veelvoud=1!
|
||
v_srtdeel_veelvoud := COALESCE (TRIM (v_srtdeel_veelvoud), '1');
|
||
|
||
IF fac.safe_to_number (v_srtdeel_veelvoud) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_veelvoud) < 0
|
||
OR fac.safe_to_number (v_srtdeel_veelvoud) > 999999
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig veelvoud',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt BTW-tarief=ongedefinieerd=NULL!
|
||
v_srtdeel_btw := TRIM (v_srtdeel_btw);
|
||
|
||
IF v_srtdeel_btw IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_btw) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig BTW-tarief',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt vervaldatum=ongedefinieerd=NULL!
|
||
v_srtdeel_vervaldatum := TRIM (v_srtdeel_vervaldatum);
|
||
|
||
IF v_srtdeel_vervaldatum IS NOT NULL
|
||
AND fac.safe_to_date (v_srtdeel_vervaldatum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige vervaldatum',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Indien leeg, dan blijft/wordt inkoopprijs=ongedefinieerd=NULL!
|
||
v_srtdeel_inkprijs := TRIM (v_srtdeel_inkprijs);
|
||
|
||
IF v_srtdeel_inkprijs IS NOT NULL
|
||
AND fac.safe_to_number (v_srtdeel_inkprijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige inkoopprijs',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Minimum mag niet negatief of meer zijn dan 6 posities lang.
|
||
-- Indien leeg, dan blijft/wordt minimum=ongedefinieerd=NULL!
|
||
v_srtdeel_minimum := TRIM (v_srtdeel_minimum);
|
||
|
||
IF v_srtdeel_minimum IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_minimum) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_minimum) < 0
|
||
OR fac.safe_to_number (v_srtdeel_minimum) > 999999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig minimum',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_bes_staffeltabel_naam := TRIM (v_bes_staffeltabel_naam);
|
||
v_errorhint :=
|
||
'Fout bij bepalen staffeltabel; regel wordt niet ingelezen';
|
||
|
||
IF v_bes_staffeltabel_naam IS NOT NULL
|
||
THEN
|
||
SELECT bes_staffeltabel_key
|
||
INTO v_bes_staffeltabel_key
|
||
FROM bes_staffeltabel
|
||
WHERE UPPER (bes_staffeltabel_naam) =
|
||
UPPER (v_bes_staffeltabel_naam);
|
||
END IF;
|
||
|
||
-- Wijzigdagen mag niet negatief of meer zijn dan 3 posities lang.
|
||
-- Indien leeg, dan blijft/wordt wijzigdagen=ongedefinieerd=NULL!
|
||
v_srtdeel_wijzigdagen := TRIM (v_srtdeel_wijzigdagen);
|
||
|
||
IF v_srtdeel_wijzigdagen IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_wijzigdagen) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_wijzigdagen) < 0
|
||
OR fac.safe_to_number (v_srtdeel_wijzigdagen) > 999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig aantal wijzigdagen',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Annuleerdagen mag niet negatief of meer zijn dan 3 posities lang.
|
||
-- Indien leeg, dan blijft/wordt annuleerdagen=ongedefinieerd=NULL!
|
||
v_srtdeel_annuleerdagen := TRIM (v_srtdeel_annuleerdagen);
|
||
|
||
IF v_srtdeel_annuleerdagen IS NOT NULL
|
||
AND ( fac.safe_to_number (v_srtdeel_annuleerdagen) IS NULL
|
||
OR fac.safe_to_number (v_srtdeel_annuleerdagen) < 0
|
||
OR fac.safe_to_number (v_srtdeel_annuleerdagen) > 999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig aantal annuleerdagen',
|
||
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_srtdeel_opmerking := TRIM (v_srtdeel_opmerking);
|
||
|
||
IF LENGTH (v_srtdeel_opmerking) > 2000
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Opmerking te lang',
|
||
'Opmerking wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
||
);
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errorhint := 'Fout toevoegen importregel';
|
||
|
||
INSERT INTO FAC_IMP_CATALOGUS (
|
||
fac_import_key,
|
||
ins_discipline_key,
|
||
prs_bedrijf_key,
|
||
fac_imp_catalogus_datum,
|
||
ins_srtdeel_nr,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_prijs,
|
||
ins_srtdeel_inkprijs,
|
||
ins_srtdeel_eenheid,
|
||
ins_srtdeel_image,
|
||
ins_srtdeel_veelvoud,
|
||
ins_srtdeel_btw,
|
||
ins_srtdeel_vervaldatum,
|
||
ins_srtdeel_minimum,
|
||
bes_staffeltabel_key,
|
||
ins_srtdeel_wijzigdagen,
|
||
ins_srtdeel_annuleerdagen,
|
||
ins_srtdeel_opmerking
|
||
)
|
||
VALUES (
|
||
p_import_key,
|
||
v_discipline_key,
|
||
v_bedrijf_key,
|
||
fac.safe_to_date (v_catalogus_datum,
|
||
'yyyymmdd'),
|
||
SUBSTR (v_srtdeel_nr, 1, 32),
|
||
SUBSTR (v_srtgroep_omschrijving, 1, 60),
|
||
SUBSTR (v_srtdeel_omschrijving, 1, 100),
|
||
fac.safe_to_number (v_srtdeel_prijs),
|
||
fac.safe_to_number (v_srtdeel_inkprijs),
|
||
SUBSTR (v_srtdeel_eenheid, 1, 30),
|
||
SUBSTR (v_srtdeel_image, 1, 255),
|
||
fac.safe_to_number (v_srtdeel_veelvoud),
|
||
fac.safe_to_number (v_srtdeel_btw),
|
||
fac.safe_to_date (v_srtdeel_vervaldatum,
|
||
'yyyymmdd'),
|
||
fac.safe_to_number (v_srtdeel_minimum),
|
||
v_bes_staffeltabel_key,
|
||
fac.safe_to_number (v_srtdeel_wijzigdagen),
|
||
fac.safe_to_number (v_srtdeel_annuleerdagen),
|
||
SUBSTR (v_srtdeel_opmerking, 1, 2000)
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
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',
|
||
'Inleesproces: aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces: aantal 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 :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Inlezen catalogus afgebroken!');
|
||
END fac_import_catalogus;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_catalogus (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_disc_oms ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
||
v_bedr_naam prs_bedrijf.prs_bedrijf_naam%TYPE;
|
||
|
||
-- Voor <20><>n catalogus
|
||
PROCEDURE l_update_catalogus (pdisc_key IN NUMBER, pbedr_key IN NUMBER)
|
||
AS
|
||
CURSOR c_delsrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT sd.bes_srtdeel_key,
|
||
sd.bes_srtdeel_nr,
|
||
sd.bes_srtdeel_omschrijving
|
||
FROM bes_srtdeel sd, bes_srtgroep sg
|
||
WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = cdisc_key
|
||
AND sd.prs_bedrijf_key = cbedr_key
|
||
AND sd.bes_srtdeel_verwijder IS NULL
|
||
AND NOT EXISTS -- Niet meer in importbestand irt. cat/bedrijf!
|
||
(SELECT 1
|
||
FROM fac_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND UPPER (f.ins_srtdeel_nr) =
|
||
UPPER (sd.bes_srtdeel_nr));
|
||
|
||
CURSOR c_delsrtgroep (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT sg.bes_srtgroep_key, sg.bes_srtgroep_omschrijving
|
||
FROM bes_srtgroep sg
|
||
WHERE sg.ins_discipline_key = cdisc_key
|
||
AND sg.bes_srtgroep_verwijder IS NULL
|
||
AND NOT EXISTS -- Niet meer in importbestand irt. alleen cat!
|
||
(SELECT 1
|
||
FROM fac_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND UPPER (f.ins_srtgroep_omschrijving) =
|
||
UPPER (sg.bes_srtgroep_omschrijving))
|
||
AND NOT EXISTS -- Waaronder geen artikelen van ander bedrijf!
|
||
(SELECT 1
|
||
FROM bes_srtdeel sd
|
||
WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sd.prs_bedrijf_key <> cbedr_key);
|
||
|
||
CURSOR c_inssrtgroep (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT DISTINCT f.ins_srtgroep_omschrijving
|
||
FROM fac_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_srtgroep_omschrijving IS NOT NULL
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_srtgroep sg
|
||
WHERE sg.ins_discipline_key = cdisc_key
|
||
AND UPPER (sg.bes_srtgroep_omschrijving) =
|
||
UPPER (f.ins_srtgroep_omschrijving)
|
||
AND sg.bes_srtgroep_verwijder IS NULL);
|
||
|
||
CURSOR c_updsrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT s.bes_srtdeel_key, f.*
|
||
FROM fac_imp_catalogus f, bes_srtgroep g, bes_srtdeel s
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND g.ins_discipline_key = cdisc_key
|
||
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
||
AND UPPER (s.bes_srtdeel_nr) = UPPER (f.ins_srtdeel_nr)
|
||
AND s.prs_bedrijf_key = cbedr_key
|
||
AND s.bes_srtdeel_verwijder IS NULL;
|
||
|
||
CURSOR c_inssrtdeel (
|
||
cdisc_key IN NUMBER,
|
||
cbedr_key IN NUMBER
|
||
)
|
||
IS
|
||
SELECT f.*
|
||
FROM fac_imp_catalogus f
|
||
WHERE fac_import_key = p_import_key
|
||
AND f.ins_discipline_key = cdisc_key
|
||
AND f.prs_bedrijf_key = cbedr_key
|
||
AND NOT EXISTS
|
||
(SELECT 1
|
||
FROM bes_srtgroep g, bes_srtdeel s
|
||
WHERE g.ins_discipline_key = cdisc_key
|
||
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
||
AND UPPER (s.bes_srtdeel_nr) =
|
||
UPPER (f.ins_srtdeel_nr)
|
||
AND s.prs_bedrijf_key = cbedr_key
|
||
AND s.bes_srtdeel_verwijder IS NULL);
|
||
|
||
ccount NUMBER (10);
|
||
l_srtgroep_key NUMBER (10);
|
||
l_bes_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
|
||
l_omschrijving bes_srtdeel.bes_srtdeel_omschrijving%TYPE;
|
||
l_prijs bes_srtdeel_prijs.bes_srtdeel_prijs_prijs%TYPE;
|
||
l_inkprijs bes_srtdeel_prijs.bes_srtdeel_prijs_inkprijs%TYPE;
|
||
l_veelvoud bes_srtdeel.bes_srtdeel_veelvoud%TYPE;
|
||
l_minimum bes_srtdeel.bes_srtdeel_minimum%TYPE;
|
||
l_wijzigdagen bes_srtdeel.bes_srtdeel_wijzigdagen%TYPE;
|
||
l_annuleerdagen bes_srtdeel.bes_srtdeel_annuleerdagen%TYPE;
|
||
l_opmerking bes_srtdeel.bes_srtdeel_opmerking%TYPE;
|
||
BEGIN
|
||
-- DELETE SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_delsrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
v_errormsg := 'Fout bij verwijderen artikel ' || rec.bes_srtdeel_nr;
|
||
|
||
UPDATE bes_srtdeel
|
||
SET bes_srtdeel_verwijder = SYSDATE
|
||
WHERE bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij verwijderen artikelkenmerken ' || rec.bes_srtdeel_nr;
|
||
UPDATE bes_kenmerk
|
||
SET bes_kenmerk_verwijder = SYSDATE
|
||
WHERE bes_kenmerk_niveau = 'S'
|
||
AND bes_srtinstallatie_key = rec.bes_srtdeel_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Artikel '
|
||
|| rec.bes_srtdeel_nr
|
||
|| '/'
|
||
|| rec.bes_srtdeel_omschrijving
|
||
|| ' is verwijderd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen verwijderd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- DELETE SRTGROEP
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_delsrtgroep (pdisc_key, pbedr_key)
|
||
LOOP
|
||
v_errormsg := 'Fout bij verwijderen groep ' || rec.bes_srtgroep_omschrijving;
|
||
|
||
UPDATE bes_srtgroep
|
||
SET bes_srtgroep_verwijder = SYSDATE
|
||
WHERE bes_srtgroep_key = rec.bes_srtgroep_key;
|
||
|
||
v_errormsg := 'Fout bij verwijderen groepskenmerken ' || rec.bes_srtgroep_omschrijving;
|
||
UPDATE bes_kenmerk
|
||
SET bes_kenmerk_verwijder = SYSDATE
|
||
WHERE bes_kenmerk_niveau = 'G'
|
||
AND bes_srtinstallatie_key = rec.bes_srtgroep_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Groep '
|
||
|| rec.bes_srtgroep_omschrijving
|
||
|| ' is verwijderd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' groepen verwijderd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- INSERT SRTGROEP
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_inssrtgroep (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
INSERT INTO bes_srtgroep (
|
||
ins_discipline_key,
|
||
bes_srtgroep_omschrijving
|
||
)
|
||
VALUES (pdisc_key, rec.ins_srtgroep_omschrijving);
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Groep '
|
||
|| rec.ins_srtgroep_omschrijving
|
||
|| ' is toegevoegd',
|
||
''
|
||
);
|
||
ccount := ccount + 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 LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' groepen toegevoegd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- UPDATE SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_updsrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
SELECT bes_srtgroep_key
|
||
INTO l_srtgroep_key
|
||
FROM bes_srtgroep
|
||
WHERE bes_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = pdisc_key
|
||
AND UPPER (bes_srtgroep_omschrijving) =
|
||
UPPER (rec.ins_srtgroep_omschrijving);
|
||
|
||
v_errormsg :=
|
||
'Fout bij bepalen huidige artikel-velden '
|
||
|| rec.ins_srtdeel_nr;
|
||
|
||
-- Tbv. logging de oude waarden opzoeken.
|
||
SELECT bes_srtdeel_omschrijving,
|
||
bes.getsrtdeelprijs (rec.bes_srtdeel_key, NULL),
|
||
bes.getsrtdeelinkprijs (rec.bes_srtdeel_key, NULL),
|
||
bes_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum,
|
||
bes_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking
|
||
INTO l_omschrijving,
|
||
l_prijs,
|
||
l_inkprijs,
|
||
l_veelvoud,
|
||
l_minimum,
|
||
l_wijzigdagen,
|
||
l_annuleerdagen,
|
||
l_opmerking
|
||
FROM bes_srtdeel
|
||
WHERE bes_srtdeel_verwijder IS NULL
|
||
AND bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij bijwerken artikel ' || rec.ins_srtdeel_nr;
|
||
|
||
-- Codetechnisch zou hier bes.upsert_srtdeel() passen, maar die doet bv nog geen inkprijs.
|
||
-- Later nog eens TODO
|
||
UPDATE bes_srtdeel
|
||
SET bes_srtgroep_key = l_srtgroep_key,
|
||
bes_srtdeel_omschrijving = rec.ins_srtdeel_omschrijving,
|
||
bes_srtdeel_image = rec.ins_srtdeel_image,
|
||
bes_srtdeel_btw = rec.ins_srtdeel_btw,
|
||
bes_srtdeel_eenheid = rec.ins_srtdeel_eenheid,
|
||
bes_srtdeel_vervaldatum = rec.ins_srtdeel_vervaldatum,
|
||
bes_srtdeel_veelvoud = rec.ins_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum = rec.ins_srtdeel_minimum,
|
||
bes_staffeltabel_key = rec.bes_staffeltabel_key,
|
||
bes_srtdeel_wijzigdagen = rec.ins_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen = rec.ins_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking = rec.ins_srtdeel_opmerking
|
||
WHERE bes_srtdeel_verwijder IS NULL
|
||
AND bes_srtdeel_key = rec.bes_srtdeel_key;
|
||
|
||
IF l_omschrijving <> rec.ins_srtdeel_omschrijving
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Omschrijving '
|
||
|| l_omschrijving
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_omschrijving
|
||
);
|
||
END IF;
|
||
|
||
bes.upsert_srtdeel_prijs (rec.bes_srtdeel_key, rec.ins_srtdeel_prijs, rec.ins_srtdeel_inkprijs);
|
||
|
||
IF l_prijs <> rec.ins_srtdeel_prijs
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Prijs ' || l_prijs || ' -> ' || rec.ins_srtdeel_prijs
|
||
);
|
||
END IF;
|
||
|
||
IF l_inkprijs <> rec.ins_srtdeel_inkprijs
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Inkoopprijs '
|
||
|| l_inkprijs
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_inkprijs
|
||
);
|
||
END IF;
|
||
|
||
IF l_veelvoud <> rec.ins_srtdeel_veelvoud
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Bestelveelvoud '
|
||
|| l_veelvoud
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_veelvoud
|
||
);
|
||
END IF;
|
||
|
||
IF l_minimum <> rec.ins_srtdeel_minimum
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Bestelminimum '
|
||
|| l_minimum
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_minimum
|
||
);
|
||
END IF;
|
||
|
||
IF l_wijzigdagen <> rec.ins_srtdeel_wijzigdagen
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Wijzigdagen '
|
||
|| l_wijzigdagen
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_wijzigdagen
|
||
);
|
||
END IF;
|
||
|
||
IF l_annuleerdagen <> rec.ins_srtdeel_annuleerdagen
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is gewijzigd',
|
||
'Annuleerdagen '
|
||
|| l_annuleerdagen
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_annuleerdagen
|
||
);
|
||
END IF;
|
||
|
||
IF l_opmerking <> rec.ins_srtdeel_opmerking
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_opmerking
|
||
|| ' is gewijzigd',
|
||
'Opmerking '
|
||
|| l_opmerking
|
||
|| ' -> '
|
||
|| rec.ins_srtdeel_opmerking
|
||
);
|
||
END IF;
|
||
|
||
ccount := ccount + 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 LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen bijgewerkt',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
-- INSERT SRTDEEL
|
||
ccount := 0;
|
||
|
||
FOR rec IN c_inssrtdeel (pdisc_key, pbedr_key)
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg :=
|
||
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
||
|
||
SELECT bes_srtgroep_key
|
||
INTO l_srtgroep_key
|
||
FROM bes_srtgroep
|
||
WHERE bes_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = pdisc_key
|
||
AND UPPER (bes_srtgroep_omschrijving) =
|
||
UPPER (rec.ins_srtgroep_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij toevoegen artikel ' || rec.ins_srtdeel_nr;
|
||
|
||
INSERT INTO bes_srtdeel (bes_srtgroep_key,
|
||
bes_srtdeel_nr,
|
||
bes_srtdeel_omschrijving,
|
||
bes_srtdeel_image,
|
||
bes_srtdeel_btw,
|
||
bes_srtdeel_eenheid,
|
||
bes_srtdeel_dimensie,
|
||
prs_bedrijf_key,
|
||
bes_srtdeel_vervaldatum,
|
||
bes_srtdeel_veelvoud,
|
||
bes_srtdeel_minimum,
|
||
bes_staffeltabel_key,
|
||
bes_srtdeel_wijzigdagen,
|
||
bes_srtdeel_annuleerdagen,
|
||
bes_srtdeel_opmerking)
|
||
VALUES (l_srtgroep_key,
|
||
rec.ins_srtdeel_nr,
|
||
rec.ins_srtdeel_omschrijving,
|
||
rec.ins_srtdeel_image,
|
||
rec.ins_srtdeel_btw,
|
||
rec.ins_srtdeel_eenheid,
|
||
0,
|
||
pbedr_key,
|
||
rec.ins_srtdeel_vervaldatum,
|
||
rec.ins_srtdeel_veelvoud,
|
||
rec.ins_srtdeel_minimum,
|
||
rec.bes_staffeltabel_key,
|
||
rec.ins_srtdeel_wijzigdagen,
|
||
rec.ins_srtdeel_annuleerdagen,
|
||
rec.ins_srtdeel_opmerking)
|
||
RETURNING bes_srtdeel_key INTO l_bes_srtdeel_key;
|
||
|
||
bes.upsert_srtdeel_prijs (l_bes_srtdeel_key, rec.ins_srtdeel_prijs, rec.ins_srtdeel_inkprijs);
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
v_aanduiding
|
||
|| 'Artikel '
|
||
|| rec.ins_srtdeel_nr
|
||
|| '/'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| ' is toegevoegd',
|
||
''
|
||
);
|
||
ccount := ccount + 1;
|
||
EXCEPTION
|
||
WHEN DUP_VAL_ON_INDEX
|
||
THEN
|
||
v_errormsg := 'Artikelnummer dubbel in importbestand';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
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 LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
v_aanduiding
|
||
|| 'Er zijn '
|
||
|| TO_CHAR (ccount)
|
||
|| ' artikelen toegevoegd',
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
END;
|
||
BEGIN
|
||
-- Doorloop alle catalogi/ bedrijven. Er kunnen er in theorie meerdere tegelijk zijn
|
||
FOR rec IN
|
||
(SELECT DISTINCT ins_discipline_key, prs_bedrijf_key
|
||
FROM fac_imp_catalogus
|
||
WHERE fac_import_key = p_import_key)
|
||
LOOP
|
||
BEGIN
|
||
-- Puur voor logging toch even catalogus- en bedrijfsnaam bepalen!
|
||
v_aanduiding := '[' || TO_CHAR (rec.ins_discipline_key) || '] ';
|
||
v_errormsg := 'Fout bepalen catalogus';
|
||
|
||
SELECT ins_discipline_omschrijving
|
||
INTO v_disc_oms
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_key = rec.ins_discipline_key;
|
||
|
||
v_aanduiding := '[' || TO_CHAR (rec.prs_bedrijf_key) || '] ';
|
||
v_errormsg := 'Fout bepalen bedrijf';
|
||
|
||
SELECT prs_bedrijf_naam
|
||
INTO v_bedr_naam
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Import van catalogus ' || v_disc_oms || '/' || v_bedr_naam,
|
||
'discipline: '
|
||
|| rec.ins_discipline_key
|
||
|| ', bedrijf: '
|
||
|| rec.prs_bedrijf_key
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
v_aanduiding := '[' || v_disc_oms || '|' || v_bedr_naam || '] ';
|
||
l_update_catalogus (rec.ins_discipline_key, rec.prs_bedrijf_key);
|
||
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;
|
||
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,
|
||
'Verwerken catalogus afgebroken!');
|
||
END fac_update_catalogus;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_oprognose (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_fielddelimitor VARCHAR2 (2);
|
||
v_errormsg VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
--
|
||
v_objectcode VARCHAR2 (128);
|
||
v_ele_ondbouw VARCHAR2 (128);
|
||
v_han_pk VARCHAR2 (128);
|
||
v_element VARCHAR2 (128);
|
||
v_locatie VARCHAR2 (128);
|
||
v_handeling VARCHAR2 (1024);
|
||
v_gebrek VARCHAR2 (1024);
|
||
v_hoeveelheid VARCHAR2 (128);
|
||
v_eenheid VARCHAR2 (128);
|
||
v_prijs VARCHAR2 (128);
|
||
v_startjaar VARCHAR2 (128);
|
||
--
|
||
v_ongeldig NUMBER;
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
rec1 c1%ROWTYPE;
|
||
BEGIN
|
||
v_fielddelimitor := fac.import_delimiter(p_import_key);
|
||
header_is_valid := 0;
|
||
|
||
-- Clear old importdata
|
||
DELETE FROM fac_imp_oprognose;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_ongeldig := 0;
|
||
|
||
IF header_is_valid = 0
|
||
THEN
|
||
-- de eerste regel vinden we wel best
|
||
header_is_valid := 1;
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
v_errormsg := 'Fout bij opvragen te importeren rij';
|
||
v_newline := rec1.fac_imp_file_line;
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_objectcode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_ele_ondbouw);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_han_pk);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_element);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_handeling);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebrek);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_hoeveelheid);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_eenheid);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_prijs);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_startjaar);
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij inlezen te importeren rij';
|
||
|
||
INSERT INTO fac_imp_oprognose
|
||
(objectcode,
|
||
ele_ondbouw,
|
||
han_pk,
|
||
ELEMENT,
|
||
locatie,
|
||
handeling,
|
||
gebrek,
|
||
hoeveelheid,
|
||
eenheid,
|
||
prijs,
|
||
startjaar
|
||
)
|
||
VALUES (v_objectcode,
|
||
v_ele_ondbouw,
|
||
v_han_pk,
|
||
v_element,
|
||
v_locatie,
|
||
v_handeling,
|
||
v_gebrek,
|
||
v_hoeveelheid,
|
||
v_eenheid,
|
||
REPLACE (v_prijs, ',', '.'),
|
||
v_startjaar
|
||
);
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 1000);
|
||
v_errormsg := oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Regel:' || v_newline);
|
||
END fac_import_oprognose;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_oprognose (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
-- Constanten tbv bepalen mld_kenmerk_key
|
||
c_han_pk VARCHAR2 (30) := 'OPROGNOSE_ID';
|
||
c_hoeveelheid VARCHAR2 (30) := 'HOEVEELHEID';
|
||
c_eenheid VARCHAR2 (30) := 'EENHEID';
|
||
c_prijs VARCHAR2 (30) := 'PRIJS';
|
||
-- Constanten overig
|
||
c_discipline_omschrijving VARCHAR2 (60) := 'Planmatig onderhoud';
|
||
c_stdmelding_notfrontend NUMBER (1) := 1;
|
||
c_meldbron_upper VARCHAR2 (30) := 'SYSTEM';
|
||
c_stdmelding_uitvoertijd NUMBER (3) := 260; -- Aantal werkdagen ongeveer
|
||
c_melding_planbaar NUMBER (1) := 1; -- Planbaar
|
||
c_melding_module VARCHAR2 (3) := 'MLD';
|
||
c_kosten_klant NUMBER (1) := TO_NUMBER (NULL);
|
||
c_melding_status NUMBER (10) := 2; -- Ingevoerd
|
||
c_mmddstart VARCHAR2 (4) := '0101';
|
||
c_mmddeind VARCHAR2 (4) := '1231';
|
||
c_melder_setting fac_usrdata.fac_usrdata_upper%TYPE := 'OP_MELDERKEY';
|
||
-- Logging
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errormsg2 VARCHAR2 (1024);
|
||
v_melding_datum DATE;
|
||
v_melding_uitvoertijd NUMBER (3);
|
||
|
||
-- Cursor
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_oprognose;
|
||
|
||
rec1 c1%ROWTYPE;
|
||
-- Overig
|
||
stdmelding_key NUMBER (10);
|
||
discipline_key NUMBER (10);
|
||
meldbron_key NUMBER (10);
|
||
locatie_key NUMBER (10);
|
||
gebouw_key NUMBER (10);
|
||
kenmerk_key NUMBER (10);
|
||
kenmerk_key_han_pk NUMBER (10);
|
||
kenmerk_key_hoeveelheid NUMBER (10);
|
||
kenmerk_key_eenheid NUMBER (10);
|
||
kenmerk_key_prijs NUMBER (10);
|
||
melding_key NUMBER (10);
|
||
perslid_key NUMBER (10);
|
||
kostenplaats_key NUMBER (10);
|
||
perslid_naam VARCHAR2 (30);
|
||
melding_new BOOLEAN;
|
||
v_count_success NUMBER (10) := 0;
|
||
v_count_fail NUMBER (10) := 0;
|
||
stdm_default_disc mld_stdmelding.mld_stdmelding_default_disc%TYPE;
|
||
|
||
FUNCTION lgetusrsetting (str VARCHAR2)
|
||
RETURN VARCHAR2
|
||
IS
|
||
lresult fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
BEGIN
|
||
SELECT fac_usrdata_omschr
|
||
INTO lresult
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = (SELECT fac_usrtab_key
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_object = 'USR_INSTELLINGEN') AND fac_usrdata_upper = UPPER (str);
|
||
|
||
RETURN lresult;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
RETURN '';
|
||
END;
|
||
|
||
--
|
||
-- Geeft de kenmerkkey van kenmerk met UPPER-naam (label) pkenmerkkid
|
||
FUNCTION lgetkenmerkkey (pkenmerkid IN VARCHAR2)
|
||
RETURN NUMBER
|
||
AS
|
||
v_result mld_kenmerk.mld_kenmerk_key%TYPE;
|
||
BEGIN
|
||
BEGIN
|
||
SELECT MIN (mld_kenmerk_key)
|
||
INTO v_result
|
||
FROM mld_srtkenmerk sk, mld_kenmerk k
|
||
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND sk.mld_srtkenmerk_upper = UPPER (pkenmerkid);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_result := -1;
|
||
END;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
|
||
--
|
||
-- Geeft de meldingkey van dit OPrognose record obv ID, -1 als die niet bestaat
|
||
FUNCTION lgetmeldingkey (poprognoseid IN VARCHAR2, pidkey IN NUMBER)
|
||
RETURN NUMBER
|
||
AS
|
||
v_result mld_kenmerkmelding.mld_melding_key%TYPE;
|
||
BEGIN
|
||
BEGIN
|
||
SELECT mld_melding_key
|
||
INTO v_result
|
||
FROM mld_kenmerkmelding km
|
||
WHERE km.mld_kenmerkmelding_verwijder IS NULL
|
||
AND UPPER (km.mld_kenmerkmelding_waarde) = UPPER (poprognoseid)
|
||
AND km.mld_kenmerk_key = pidkey;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_result := -1;
|
||
END;
|
||
|
||
RETURN v_result;
|
||
END;
|
||
BEGIN
|
||
SELECT MAX (fac_module_version)
|
||
INTO currentversion
|
||
FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Facilitor OPROGNOSE import version ' || currentversion,
|
||
'$Revision$'
|
||
);
|
||
v_errormsg := 'Opvragen discipline_key adhv ins_discipline_omschrijving = [' || c_discipline_omschrijving || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
|
||
-- Wat is de planmatigonderhoud discipline
|
||
SELECT ins_discipline_key
|
||
INTO discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_omschrijving = c_discipline_omschrijving
|
||
AND ins_discipline_module = 'MLD';
|
||
|
||
v_errormsg := 'Opvragen meldbron_key adhv mld_meldbron_upper = [' || c_meldbron_upper || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
SELECT mld_meldbron_key
|
||
INTO meldbron_key
|
||
FROM mld_meldbron
|
||
WHERE mld_meldbron_upper = c_meldbron_upper;
|
||
|
||
perslid_key := lgetusrsetting (c_melder_setting);
|
||
kenmerk_key_han_pk := lgetkenmerkkey (c_han_pk);
|
||
kenmerk_key_hoeveelheid := lgetkenmerkkey (c_hoeveelheid);
|
||
kenmerk_key_eenheid := lgetkenmerkkey (c_eenheid);
|
||
kenmerk_key_prijs := lgetkenmerkkey (c_prijs);
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Opvragen mld_stdmelding_key adhv mld_stdmelding_upper = [' || rec1.ELEMENT || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
SELECT MAX (mld_stdmelding_key)
|
||
INTO stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_upper = UPPER (SUBSTR (rec1.ELEMENT, 1, 60));
|
||
|
||
IF stdmelding_key IS NULL
|
||
THEN -- Bestaat de MLD_STDMELDING?
|
||
SELECT mld_s_mld_stdmelding_key.NEXTVAL
|
||
INTO stdmelding_key
|
||
FROM DUAL;
|
||
|
||
v_errormsg :=
|
||
'Aanmaak nieuwe MLD_STD_MELDING met mld_stdmelding_omschrijving = [' || SUBSTR (rec1.ELEMENT, 1, 60)
|
||
|| ']';
|
||
|
||
--DBMS_OUTPUT.put_line (v_errormsg);
|
||
|
||
-- Aanmaak nieuwe MLD_STDMELDING
|
||
BEGIN
|
||
INSERT INTO mld_stdmelding
|
||
(mld_stdmelding_key,
|
||
mld_ins_discipline_key,
|
||
mld_stdmelding_omschrijving,
|
||
mld_stdmelding_notfrontend,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_planbaar
|
||
)
|
||
VALUES (stdmelding_key,
|
||
discipline_key,
|
||
SUBSTR (rec1.ELEMENT, 1, 60),
|
||
c_stdmelding_notfrontend,
|
||
MLD_T_UITVOERTIJD(c_stdmelding_uitvoertijd, 'D'),
|
||
c_melding_planbaar
|
||
);
|
||
--DBMS_OUTPUT.put_line ('inserted ' || TO_CHAR (stdmelding_key));
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (NVL (SQLERRM, 'SQLERRM=NULL!!!'), 1, 100);
|
||
v_errormsg2 := '(XORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Import_oprognose: ' || v_errormsg, v_errormsg2);
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
|
||
v_errormsg := 'Gebouw [' || rec1.objectcode || '] kan niet worden gevonden';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL AND alg_gebouw_upper = UPPER (rec1.objectcode);
|
||
|
||
-- springt naar exception als niet gevonden
|
||
v_errormsg := 'Fout bij bepalen locatie van gebouw met key = [' || TO_CHAR (gebouw_key) || ']';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO locatie_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_key = gebouw_key;
|
||
|
||
SELECT MAX (prs_kostenplaats_key)
|
||
INTO kostenplaats_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_key = gebouw_key;
|
||
|
||
melding_key := lgetmeldingkey (rec1.han_pk, kenmerk_key_han_pk);
|
||
melding_new := (melding_key = -1);
|
||
|
||
IF melding_new
|
||
THEN
|
||
v_errormsg := 'Bepalen melding datum voor startjaar [' || rec1.startjaar || ']';
|
||
|
||
--Testers pas op: vereist goede nls_territory!
|
||
SELECT fac.count_work_days (TO_DATE (rec1.startjaar || c_mmddstart, 'YYYYMMDD'),
|
||
TO_DATE (rec1.startjaar || c_mmddeind, 'YYYYMMDD')
|
||
)
|
||
INTO v_melding_uitvoertijd
|
||
FROM DUAL;
|
||
|
||
-- DBMS_OUTPUT.put_line (v_melding_uitvoertijd);
|
||
SELECT TO_DATE (rec1.startjaar || c_mmddstart, 'YYYYMMDD')
|
||
INTO v_melding_datum
|
||
FROM DUAL;
|
||
|
||
stdm_default_disc := fac.getDefaultBehandelteam(stdmelding_key);
|
||
|
||
v_errormsg := 'Bepalen mld_melding_key voor nieuwe melding';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
SELECT mld_s_mld_melding_key.NEXTVAL
|
||
INTO melding_key
|
||
FROM DUAL;
|
||
|
||
v_errormsg := 'Toevoegen MELDING [' || rec1.handeling || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
|
||
-- Invoeren melding
|
||
INSERT INTO mld_melding
|
||
(mld_melding_key,
|
||
mld_meldbron_key,
|
||
mld_stdmelding_key,
|
||
mld_alg_locatie_key,
|
||
mld_alg_onroerendgoed_keys,
|
||
mld_melding_t_uitvoertijd,
|
||
mld_melding_module,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
mld_kosten_klant,
|
||
prs_perslid_key,
|
||
mld_melding_datum,
|
||
prs_kostenplaats_key,
|
||
mld_melding_status,
|
||
mld_melding_einddatum,
|
||
mld_ins_discipline_key
|
||
)
|
||
VALUES (melding_key,
|
||
meldbron_key,
|
||
stdmelding_key,
|
||
locatie_key,
|
||
gebouw_key,
|
||
MLD_T_UITVOERTIJD(v_melding_uitvoertijd, 'D'),
|
||
c_melding_module,
|
||
rec1.handeling,
|
||
rec1.gebrek,
|
||
c_kosten_klant,
|
||
perslid_key,
|
||
v_melding_datum,
|
||
kostenplaats_key,
|
||
c_melding_status,
|
||
TO_DATE (rec1.startjaar || c_mmddeind, 'YYYYMMDD'),
|
||
stdm_default_disc
|
||
);
|
||
ELSE
|
||
v_errormsg := 'Bijwerken MELDING [' || rec1.handeling || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
UPDATE mld_melding
|
||
SET mld_melding_omschrijving = rec1.handeling,
|
||
mld_melding_opmerking = rec1.gebrek
|
||
WHERE mld_melding_key = melding_key;
|
||
END IF;
|
||
|
||
-- c_han_pk
|
||
IF melding_new
|
||
THEN
|
||
v_errormsg := 'OPROGNOSE_ID van melding [' || TO_CHAR (melding_key) || '] = [' || rec1.han_pk || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
|
||
-- v_errormsg := 'Insert FlexProp OPROGNOSE_ID met waarde = <'||rec1.han_pk||'>';
|
||
INSERT INTO mld_kenmerkmelding
|
||
(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (melding_key, kenmerk_key_han_pk, rec1.han_pk);
|
||
END IF;
|
||
|
||
-- c_hoeveelheid
|
||
DELETE FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = melding_key AND mld_kenmerk_key = kenmerk_key_hoeveelheid;
|
||
|
||
IF rec1.hoeveelheid IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'HOEVEELHEID = [' || rec1.hoeveelheid || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
INSERT INTO mld_kenmerkmelding
|
||
(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (melding_key,
|
||
kenmerk_key_hoeveelheid,
|
||
TO_CHAR (fac.safe_to_number (REPLACE (rec1.hoeveelheid, ',', '.')))
|
||
);
|
||
END IF;
|
||
|
||
-- c_eenheid
|
||
DELETE FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = melding_key AND mld_kenmerk_key = kenmerk_key_eenheid;
|
||
|
||
IF rec1.eenheid IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'EENHEID = [' || rec1.eenheid || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
INSERT INTO mld_kenmerkmelding
|
||
(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (melding_key, kenmerk_key_eenheid, rec1.eenheid);
|
||
END IF;
|
||
|
||
-- c_prijs
|
||
DELETE FROM mld_kenmerkmelding
|
||
WHERE mld_melding_key = melding_key AND mld_kenmerk_key = kenmerk_key_prijs;
|
||
|
||
IF rec1.eenheid IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'PRIJS = [' || rec1.prijs || ']';
|
||
|
||
-- DBMS_OUTPUT.put_line (v_errormsg);
|
||
INSERT INTO mld_kenmerkmelding
|
||
(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||
VALUES (melding_key, kenmerk_key_prijs, TO_CHAR (fac.safe_to_number (rec1.prijs)));
|
||
END IF;
|
||
|
||
-- Alles goed? Dan deze regel committen!
|
||
COMMIT;
|
||
v_count_success := v_count_success + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- Foutje? Deze regel terugdraaien
|
||
v_count_fail := v_count_fail + 1;
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (NVL (SQLERRM, 'SQLERRM=NULL!!!'), 1, 100);
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, oracle_err_mes);
|
||
-- de logging wel committen
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Import gereed, ' || v_count_success || ' regels ingelezen, ' || v_count_fail
|
||
|| ' regels geweigerd',
|
||
''
|
||
);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (NVL (SQLERRM, 'SQLERRM=NULL!!!'), 1, 100);
|
||
v_errormsg := '(' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Onverwachte fout', v_errormsg);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
|
||
|
||
|
||
--// 1. ALG
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed1 (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- 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_imp NUMBER (10);
|
||
v_ongeldig 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_alg_kenmerk_key6 VARCHAR2 (255);
|
||
v_alg_kenmerk_key7 VARCHAR2 (255);
|
||
v_alg_kenmerk_key8 VARCHAR2 (255);
|
||
v_alg_kenmerk_key9 VARCHAR2 (255);
|
||
v_alg_kenmerk_key10 VARCHAR2 (255);
|
||
-- 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_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_srtgebouw_omschrijving VARCHAR2 (255); -- 30
|
||
v_gebouw_code VARCHAR2 (255); -- 10
|
||
v_gebouw_naam VARCHAR2 (255); -- 30
|
||
v_gebouw_adres VARCHAR2 (255); -- 50
|
||
v_gebouw_postcode VARCHAR2 (255); -- 12
|
||
v_alg_kenmerkwaarde1 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde2 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde3 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde4 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde5 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde6 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde7 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde8 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde9 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde10 VARCHAR2 (4000);
|
||
|
||
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 alleen op (uniek) bestaan van kenmerk (of
|
||
-- deze is gedefinieerd voor gebouw/locatie, volgt tijdens de update-fase)!
|
||
FUNCTION bepaal_kenmerk_key (ok IN VARCHAR)
|
||
RETURN NUMBER
|
||
IS
|
||
v_kenmerk_key NUMBER;
|
||
BEGIN
|
||
IF fac.safe_to_number (ok) IS NULL
|
||
THEN -- Kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau IN ('L', 'G')
|
||
AND alg_kenmerk_upper = UPPER (ok)
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V');
|
||
ELSE -- Kenmerkwaarde is numeriek (dus key)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau IN ('L', 'G')
|
||
AND alg_kenmerk_key = fac.safe_to_number (ok)
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V');
|
||
END IF;
|
||
|
||
RETURN v_kenmerk_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
IF ok IS NULL OR UPPER (ok) LIKE 'KENMERK%'
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Fout bij bepalen kenmerk [' || ok || ']',
|
||
'Bestaat niet of type ongeldig');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END IF;
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Fout bij bepalen kenmerk [' || ok || ']',
|
||
'Kan kenmerk niet 1-duidig bepalen');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_onrgoed1;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_imp := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH importregel';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_regio_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_district_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_verantw);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_verantw_tel);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_adres);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_postcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_plaats);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_land);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_post_adres);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_post_postcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_post_plaats);
|
||
fac.imp_getfield (v_newline, c_delim, v_locatie_post_land);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtgebouw_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw_adres);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw_postcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde1);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde2);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde3);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde4);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde5);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde6);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde7);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde8);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde9);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_kenmerkwaarde10);
|
||
|
||
v_aanduiding := '[' || v_locatie_code || '|' || v_gebouw_code || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_regio_omschrijving) = 'REGIO'
|
||
AND UPPER (v_district_omschrijving) = 'DISTRICT'
|
||
AND UPPER (v_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_locatie_omschrijving) = 'LOCATIEOMSCHRIJVING'
|
||
AND UPPER (v_locatie_verantw) = 'CONTACTPERSOON'
|
||
AND UPPER (v_locatie_verantw_tel) = 'TELEFOONNUMMER'
|
||
AND UPPER (v_locatie_adres) = 'BEZOEKADRES'
|
||
AND UPPER (v_locatie_postcode) = 'POSTCODE'
|
||
AND UPPER (v_locatie_plaats) = 'PLAATS'
|
||
AND UPPER (v_locatie_land) = 'LAND'
|
||
AND UPPER (v_locatie_post_adres) = 'POSTADRES'
|
||
AND UPPER (v_locatie_post_postcode) = 'POSTPOSTCODE'
|
||
AND UPPER (v_locatie_post_plaats) = 'POSTPLAATS'
|
||
AND UPPER (v_locatie_post_land) LIKE 'POSTLAND'
|
||
AND UPPER (v_srtgebouw_omschrijving) = 'GEBOUWFUNCTIE'
|
||
AND UPPER (v_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_gebouw_naam) = 'GEBOUWNAAM'
|
||
AND UPPER (v_gebouw_adres) = 'GEBOUWADRES'
|
||
AND UPPER (v_gebouw_postcode) = 'GEBOUWPOSTCODE'
|
||
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);
|
||
v_alg_kenmerk_key6 := bepaal_kenmerk_key (v_alg_kenmerkwaarde6);
|
||
v_alg_kenmerk_key7 := bepaal_kenmerk_key (v_alg_kenmerkwaarde7);
|
||
v_alg_kenmerk_key8 := bepaal_kenmerk_key (v_alg_kenmerkwaarde8);
|
||
v_alg_kenmerk_key9 := bepaal_kenmerk_key (v_alg_kenmerkwaarde9);
|
||
v_alg_kenmerk_key10 := bepaal_kenmerk_key (v_alg_kenmerkwaarde10);
|
||
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Regio-omschrijving leeg of te lang';
|
||
v_regio_omschrijving := TRIM (v_regio_omschrijving);
|
||
IF v_regio_omschrijving IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
ELSIF LENGTH (v_regio_omschrijving) > 30
|
||
THEN
|
||
v_regio_omschrijving := SUBSTR (v_regio_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Regio-omschrijving afgebroken tot [' || v_regio_omschrijving || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'District-omschrijving leeg of te lang';
|
||
v_district_omschrijving := TRIM (v_district_omschrijving);
|
||
IF v_district_omschrijving IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
ELSIF LENGTH (v_district_omschrijving) > 30
|
||
THEN
|
||
v_district_omschrijving := SUBSTR (v_district_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'District-omschrijving afgebroken tot [' || v_district_omschrijving || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatiecode leeg of te lang';
|
||
v_locatie_code := TRIM (v_locatie_code);
|
||
IF v_locatie_code IS NULL OR LENGTH (v_locatie_code) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatie-omschrijving leeg of te lang';
|
||
v_locatie_omschrijving := TRIM (v_locatie_omschrijving);
|
||
IF v_locatie_omschrijving IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
ELSIF LENGTH (v_locatie_omschrijving) > 60
|
||
THEN
|
||
v_locatie_omschrijving := SUBSTR (v_locatie_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Locatie-omschrijving afgebroken tot [' || v_locatie_omschrijving || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Naam te lang (contactpersoon)';
|
||
v_locatie_verantw := TRIM (v_locatie_verantw);
|
||
IF LENGTH (v_locatie_verantw) > 30
|
||
THEN
|
||
v_locatie_verantw := SUBSTR (v_locatie_verantw, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Naam afgebroken tot [' || v_locatie_verantw || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Telefoonnummer te lang (contactpersoon)';
|
||
v_locatie_verantw_tel := TRIM (v_locatie_verantw_tel);
|
||
IF LENGTH (v_locatie_verantw_tel) > 20
|
||
THEN
|
||
v_locatie_verantw_tel := SUBSTR (v_locatie_verantw_tel, 1, 20);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Telefoonnummer afgebroken tot [' || v_locatie_verantw_tel || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Adres te lang (bezoekadres)';
|
||
v_locatie_adres := TRIM (v_locatie_adres);
|
||
IF LENGTH (v_locatie_adres) > 50
|
||
THEN
|
||
v_locatie_adres := SUBSTR (v_locatie_adres, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Adres afgebroken tot ]' || v_locatie_adres || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Postcode te lang (bezoekadres)';
|
||
v_locatie_postcode := TRIM (v_locatie_postcode);
|
||
IF LENGTH (v_locatie_postcode) > 12
|
||
THEN
|
||
v_locatie_postcode := SUBSTR (v_locatie_postcode, 1, 12);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Postcode afgebroken tot [' || v_locatie_postcode || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Plaatsnaam te lang (bezoekadres)';
|
||
v_locatie_plaats := TRIM (v_locatie_plaats);
|
||
IF LENGTH (v_locatie_plaats) > 30
|
||
THEN
|
||
v_locatie_plaats := SUBSTR (v_locatie_plaats, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Plaatsnaam afgebroken tot [' || v_locatie_plaats || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Landnaam te lang (bezoekadres)';
|
||
v_locatie_land := TRIM (v_locatie_land);
|
||
IF LENGTH (v_locatie_land) > 30
|
||
THEN
|
||
v_locatie_land := SUBSTR (v_locatie_land, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Landnaam afgebroken tot [' || v_locatie_land || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Adres te lang (postadres)';
|
||
v_locatie_post_adres := TRIM (v_locatie_post_adres);
|
||
IF LENGTH (v_locatie_post_adres) > 50
|
||
THEN
|
||
v_locatie_post_adres := SUBSTR (v_locatie_post_adres, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Adres afgebroken tot [' || v_locatie_post_adres || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Postcode te lang (postadres)';
|
||
v_locatie_post_postcode := TRIM (v_locatie_post_postcode);
|
||
IF LENGTH (v_locatie_post_postcode) > 12
|
||
THEN
|
||
v_locatie_post_postcode := SUBSTR (v_locatie_post_postcode, 1, 12);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Postcode afgebroken tot [' || v_locatie_post_postcode || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Plaatsnaam te lang (postadres)';
|
||
v_locatie_post_plaats := TRIM (v_locatie_post_plaats);
|
||
IF LENGTH (v_locatie_post_plaats) > 30
|
||
THEN
|
||
v_locatie_post_plaats := SUBSTR (v_locatie_post_plaats, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Plaatsnaam afgebroken tot [' || v_locatie_post_plaats || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Landnaam te lang (postadres)';
|
||
v_locatie_post_land := TRIM (v_locatie_post_land);
|
||
IF LENGTH (v_locatie_post_land) > 30
|
||
THEN
|
||
v_locatie_post_land := SUBSTR (v_locatie_post_land, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
,'Landnaam afgebroken tot [' || v_locatie_post_land || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwfunctie te lang';
|
||
v_srtgebouw_omschrijving := TRIM (v_srtgebouw_omschrijving);
|
||
IF LENGTH (v_srtgebouw_omschrijving) > 30
|
||
THEN
|
||
v_srtgebouw_omschrijving := SUBSTR (v_srtgebouw_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Gebouwfunctie afgebroken tot [' || v_srtgebouw_omschrijving || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwcode leeg of te lang';
|
||
v_gebouw_code := TRIM (v_gebouw_code);
|
||
IF v_gebouw_code IS NULL OR LENGTH (v_gebouw_code) > 12
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwnaam leeg of te lang';
|
||
v_gebouw_naam := TRIM (v_gebouw_naam);
|
||
IF v_gebouw_naam IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel overgeslagen');
|
||
ELSIF LENGTH (v_gebouw_naam) > 60
|
||
THEN
|
||
v_gebouw_naam := SUBSTR (v_gebouw_naam, 1, 60);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Gebouwnaam afgebroken tot [' || v_gebouw_naam || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwadres te lang';
|
||
v_gebouw_adres := TRIM (v_gebouw_adres);
|
||
IF LENGTH (v_gebouw_adres) > 50
|
||
THEN
|
||
v_gebouw_adres := SUBSTR (v_gebouw_adres, 1, 50);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Gebouwadres afgebroken tot [' || v_gebouw_adres || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwpostcode te lang';
|
||
v_gebouw_postcode := TRIM (v_gebouw_postcode);
|
||
IF LENGTH (v_gebouw_postcode) > 12
|
||
THEN
|
||
v_gebouw_postcode := SUBSTR (v_gebouw_postcode, 1, 12);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg
|
||
, 'Gebouw postcode afgebroken tot [' || v_gebouw_postcode || ']');
|
||
END IF;
|
||
|
||
-- De rest alleen ff trimmen.
|
||
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);
|
||
v_alg_kenmerkwaarde6 := TRIM (v_alg_kenmerkwaarde6);
|
||
v_alg_kenmerkwaarde7 := TRIM (v_alg_kenmerkwaarde7);
|
||
v_alg_kenmerkwaarde8 := TRIM (v_alg_kenmerkwaarde8);
|
||
v_alg_kenmerkwaarde9 := TRIM (v_alg_kenmerkwaarde9);
|
||
v_alg_kenmerkwaarde10 := TRIM (v_alg_kenmerkwaarde10);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
INSERT INTO fac_imp_onrgoed1
|
||
( alg_regio_omschrijving,
|
||
alg_district_omschrijving,
|
||
alg_locatie_code,
|
||
alg_locatie_omschrijving,
|
||
alg_locatie_verantw,
|
||
alg_locatie_verantw_tel,
|
||
alg_locatie_adres,
|
||
alg_locatie_postcode,
|
||
alg_locatie_plaats,
|
||
alg_locatie_land,
|
||
alg_locatie_post_adres,
|
||
alg_locatie_post_postcode,
|
||
alg_locatie_post_plaats,
|
||
alg_locatie_post_land,
|
||
alg_srtgebouw_omschrijving,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_gebouw_adres,
|
||
alg_gebouw_postcode,
|
||
alg_kenmerkwaarde1,
|
||
alg_kenmerkwaarde2,
|
||
alg_kenmerkwaarde3,
|
||
alg_kenmerkwaarde4,
|
||
alg_kenmerkwaarde5,
|
||
alg_kenmerkwaarde6,
|
||
alg_kenmerkwaarde7,
|
||
alg_kenmerkwaarde8,
|
||
alg_kenmerkwaarde9,
|
||
alg_kenmerkwaarde10
|
||
)
|
||
VALUES ( v_regio_omschrijving,
|
||
v_district_omschrijving,
|
||
v_locatie_code,
|
||
v_locatie_omschrijving,
|
||
v_locatie_verantw,
|
||
v_locatie_verantw_tel,
|
||
v_locatie_adres,
|
||
v_locatie_postcode,
|
||
v_locatie_plaats,
|
||
v_locatie_land,
|
||
v_locatie_post_adres,
|
||
v_locatie_post_postcode,
|
||
v_locatie_post_plaats,
|
||
v_locatie_post_land,
|
||
v_srtgebouw_omschrijving,
|
||
v_gebouw_code,
|
||
v_gebouw_naam,
|
||
v_gebouw_adres,
|
||
v_gebouw_postcode,
|
||
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)
|
||
),
|
||
DECODE (v_alg_kenmerk_key5
|
||
, NULL, v_alg_kenmerkwaarde5
|
||
, TO_CHAR (v_alg_kenmerk_key5) || '=' || SUBSTR (v_alg_kenmerkwaarde5, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key6
|
||
, NULL, v_alg_kenmerkwaarde6
|
||
, TO_CHAR (v_alg_kenmerk_key6) || '=' || SUBSTR (v_alg_kenmerkwaarde6, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key7
|
||
, NULL, v_alg_kenmerkwaarde7
|
||
, TO_CHAR (v_alg_kenmerk_key7) || '=' || SUBSTR (v_alg_kenmerkwaarde7, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key8
|
||
, NULL, v_alg_kenmerkwaarde8
|
||
, TO_CHAR (v_alg_kenmerk_key8) || '=' || SUBSTR (v_alg_kenmerkwaarde8, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key9
|
||
, NULL, v_alg_kenmerkwaarde9
|
||
, TO_CHAR (v_alg_kenmerk_key9) || '=' || SUBSTR (v_alg_kenmerkwaarde9, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key10
|
||
, NULL, v_alg_kenmerkwaarde10
|
||
, TO_CHAR (v_alg_kenmerk_key10) || '=' || SUBSTR (v_alg_kenmerkwaarde10, 1, 200)
|
||
)
|
||
);
|
||
|
||
COMMIT;
|
||
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, '');
|
||
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', 'Locatie-Gebouw/#ingelezen regels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Locatie-Gebouw/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||
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 locaties/gebouwen afgebroken!');
|
||
END fac_import_onrgoed1;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_onrgoed1 (p_import_key IN NUMBER)
|
||
IS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_new NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
v_count NUMBER (10);
|
||
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_srtnoti_code VARCHAR2 (6);
|
||
|
||
CURSOR cRegio -- Regioomschrijving uniek!
|
||
IS
|
||
SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving
|
||
FROM fac_imp_onrgoed1
|
||
GROUP BY UPPER (alg_regio_omschrijving)
|
||
ORDER BY 1;
|
||
|
||
CURSOR cDistrict -- Districtomschrijving uniek binnen regio!
|
||
IS
|
||
SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving,
|
||
MIN (alg_district_omschrijving) alg_district_omschrijving
|
||
FROM fac_imp_onrgoed1
|
||
GROUP BY UPPER (alg_regio_omschrijving),
|
||
UPPER (alg_district_omschrijving)
|
||
ORDER BY 1, 2;
|
||
|
||
CURSOR cLocatie -- Locatiecode uniek (omschrijving niet)!
|
||
IS
|
||
SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving,
|
||
MIN (alg_district_omschrijving) alg_district_omschrijving,
|
||
MIN (alg_locatie_code) alg_locatie_code,
|
||
MIN (alg_locatie_omschrijving) alg_locatie_omschrijving,
|
||
MIN (alg_locatie_verantw) alg_locatie_verantw,
|
||
MIN (alg_locatie_verantw_tel) alg_locatie_verantw_tel,
|
||
MIN (alg_locatie_adres) alg_locatie_adres,
|
||
MIN (alg_locatie_postcode) alg_locatie_postcode,
|
||
MIN (alg_locatie_plaats) alg_locatie_plaats,
|
||
MIN (alg_locatie_land) alg_locatie_land,
|
||
MIN (alg_locatie_post_adres) alg_locatie_post_adres,
|
||
MIN (alg_locatie_post_postcode) alg_locatie_post_postcode,
|
||
MIN (alg_locatie_post_plaats) alg_locatie_post_plaats,
|
||
MIN (alg_locatie_post_land) alg_locatie_post_land,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1,
|
||
MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2,
|
||
MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3,
|
||
MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4,
|
||
MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5,
|
||
MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6,
|
||
MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7,
|
||
MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8,
|
||
MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9,
|
||
MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10,
|
||
MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10
|
||
FROM fac_imp_onrgoed1
|
||
GROUP BY UPPER (alg_regio_omschrijving),
|
||
UPPER (alg_district_omschrijving),
|
||
UPPER (alg_locatie_code)
|
||
ORDER BY 1, 2, 3;
|
||
|
||
CURSOR cSrtGebouw -- Gebouwfunctie uniek!
|
||
IS
|
||
SELECT MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving
|
||
FROM fac_imp_onrgoed1
|
||
WHERE alg_srtgebouw_omschrijving IS NOT NULL
|
||
GROUP BY UPPER (alg_srtgebouw_omschrijving)
|
||
ORDER BY 1;
|
||
|
||
CURSOR cGebouw -- Gebouwcode uniek binnen locatie (naam niet)!
|
||
IS
|
||
SELECT MIN (alg_regio_omschrijving) alg_regio_omschrijving,
|
||
MIN (alg_district_omschrijving) alg_district_omschrijving,
|
||
MIN (alg_locatie_code) alg_locatie_code,
|
||
MIN (alg_gebouw_code) alg_gebouw_code,
|
||
MIN (alg_gebouw_naam) alg_gebouw_naam,
|
||
MIN (alg_srtgebouw_omschrijving) alg_srtgebouw_omschrijving,
|
||
MIN (alg_gebouw_adres) alg_gebouw_adres,
|
||
MIN (alg_gebouw_postcode) alg_gebouw_postcode,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))) kenmerk_key1,
|
||
MIN(SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1)) waarde1,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))) kenmerk_key2,
|
||
MIN(SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1)) waarde2,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))) kenmerk_key3,
|
||
MIN(SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1)) waarde3,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))) kenmerk_key4,
|
||
MIN(SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1)) waarde4,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))) kenmerk_key5,
|
||
MIN(SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1)) waarde5,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde6, 1, INSTR (alg_kenmerkwaarde6, '=') - 1))) kenmerk_key6,
|
||
MIN(SUBSTR (alg_kenmerkwaarde6, INSTR (alg_kenmerkwaarde6, '=') + 1)) waarde6,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde7, 1, INSTR (alg_kenmerkwaarde7, '=') - 1))) kenmerk_key7,
|
||
MIN(SUBSTR (alg_kenmerkwaarde7, INSTR (alg_kenmerkwaarde7, '=') + 1)) waarde7,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde8, 1, INSTR (alg_kenmerkwaarde8, '=') - 1))) kenmerk_key8,
|
||
MIN(SUBSTR (alg_kenmerkwaarde8, INSTR (alg_kenmerkwaarde8, '=') + 1)) waarde8,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde9, 1, INSTR (alg_kenmerkwaarde9, '=') - 1))) kenmerk_key9,
|
||
MIN(SUBSTR (alg_kenmerkwaarde9, INSTR (alg_kenmerkwaarde9, '=') + 1)) waarde9,
|
||
MIN(fac.safe_to_number(SUBSTR (alg_kenmerkwaarde10, 1, INSTR (alg_kenmerkwaarde10, '=') - 1))) kenmerk_key10,
|
||
MIN(SUBSTR (alg_kenmerkwaarde10, INSTR (alg_kenmerkwaarde10, '=') + 1)) waarde10
|
||
FROM fac_imp_onrgoed1
|
||
GROUP BY UPPER (alg_regio_omschrijving),
|
||
UPPER (alg_district_omschrijving),
|
||
UPPER (alg_locatie_code),
|
||
UPPER (alg_gebouw_code)
|
||
ORDER BY 1, 2, 3, 4;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE upsert_algkenmerk (p_alg_key IN NUMBER,
|
||
p_alg_niv IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_niveau alg_kenmerk.alg_kenmerk_niveau%TYPE;
|
||
v_kenmerk_type alg_kenmerk.alg_kenmerk_kenmerktype%TYPE;
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (4000);
|
||
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
|
||
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
|
||
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_onrgoedkenmerk_key alg_onrgoedkenmerk.alg_onrgoedkenmerk_key%TYPE;
|
||
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 kenmerk [' || p_kenmerk_key || ']';
|
||
|
||
SELECT alg_kenmerk_niveau, alg_kenmerk_kenmerktype
|
||
INTO v_kenmerk_niveau, v_kenmerk_type
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_kenmerk_niveau IN ('L', 'G');
|
||
|
||
IF (v_kenmerk_niveau = p_alg_niv) -- Alleen op juiste niveau doen!
|
||
THEN
|
||
IF v_kenmerk_type IN ('R', '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.alg_kenmerk_niveau = p_alg_niv
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg :=
|
||
'Fout bij bepalen nieuwe waarde [' || SUBSTR(p_waarde, 1, 200) || ']';
|
||
|
||
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.alg_kenmerk_niveau = p_alg_niv
|
||
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.alg_kenmerk_niveau = p_alg_niv
|
||
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 bepalen huidige waarde';
|
||
|
||
SELECT COUNT ( * ), MAX (alg_onrgoedkenmerk_key)
|
||
INTO ccount, v_onrgoedkenmerk_key
|
||
FROM alg_v_aanwezigonrgoedkenmerk
|
||
WHERE alg_onrgoed_key = p_alg_key
|
||
AND alg_onrgoed_niveau = p_alg_niv
|
||
AND alg_kenmerk_key = p_kenmerk_key;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
|
||
INSERT INTO alg_onrgoedkenmerk (alg_onrgoed_key,
|
||
alg_onrgoed_niveau,
|
||
alg_kenmerk_key,
|
||
alg_onrgoedkenmerk_waarde)
|
||
VALUES (p_alg_key,
|
||
p_alg_niv,
|
||
p_kenmerk_key,
|
||
v_waarde);
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
|
||
UPDATE alg_onrgoedkenmerk
|
||
SET alg_onrgoedkenmerk_waarde = v_waarde
|
||
WHERE alg_onrgoedkenmerk_key = v_onrgoedkenmerk_key;
|
||
END IF;
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'upsert_algkenmerk');
|
||
END;
|
||
BEGIN
|
||
-- ***********
|
||
-- ***REGIO***
|
||
-- ***********
|
||
-- Alleen ontbrekende regio's worden toegevoegd
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
|
||
FOR recRegio IN cRegio
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || recRegio.alg_regio_omschrijving || '] ';
|
||
v_errormsg := 'Fout bij toevoegen regio';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_v_aanwezigregio
|
||
WHERE TRIM (alg_regio_upper) = UPPER (recRegio.alg_regio_omschrijving);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO alg_regio
|
||
( alg_regio_omschrijving)
|
||
VALUES ( recRegio.alg_regio_omschrijving);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
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, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Regio/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Regio/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
COMMIT;
|
||
|
||
-- **************
|
||
-- ***DISTRICT***
|
||
-- **************
|
||
-- Alleen ontbrekende districten worden toegevoegd
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
|
||
FOR recDistrict IN cDistrict
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || recDistrict.alg_regio_omschrijving
|
||
|| '|' || recDistrict.alg_district_omschrijving
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen regio';
|
||
|
||
SELECT alg_regio_key
|
||
INTO v_regio_key
|
||
FROM alg_v_aanwezigregio
|
||
WHERE alg_regio_upper = UPPER (recDistrict.alg_regio_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij toevoegen district';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_v_aanwezigdistrict
|
||
WHERE alg_regio_key = v_regio_key
|
||
AND TRIM (alg_district_upper) = UPPER (recDistrict.alg_district_omschrijving);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO alg_district
|
||
( alg_regio_key,
|
||
alg_district_omschrijving
|
||
)
|
||
VALUES ( v_regio_key,
|
||
recDistrict.alg_district_omschrijving
|
||
);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
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, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'District/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'District/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
COMMIT;
|
||
|
||
-- **************
|
||
-- ***LOCATIE****
|
||
-- **************
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR recLocatie IN cLocatie
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || recLocatie.alg_regio_omschrijving
|
||
|| '|' || recLocatie.alg_district_omschrijving
|
||
|| '|' || recLocatie.alg_locatie_code
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen regio';
|
||
|
||
SELECT alg_regio_key
|
||
INTO v_regio_key
|
||
FROM alg_v_aanwezigregio
|
||
WHERE alg_regio_upper = UPPER (recLocatie.alg_regio_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij bepalen district';
|
||
|
||
SELECT alg_district_key
|
||
INTO v_district_key
|
||
FROM alg_v_aanwezigdistrict
|
||
WHERE alg_regio_key = v_regio_key
|
||
AND TRIM (alg_district_upper) = UPPER (recLocatie.alg_district_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij toevoegen locatie';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE alg_district_key = v_district_key
|
||
AND UPPER (alg_locatie_code) = UPPER (recLocatie.alg_locatie_code);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO alg_locatie
|
||
( alg_district_key,
|
||
alg_locatie_code,
|
||
alg_locatie_omschrijving,
|
||
alg_locatie_verantw,
|
||
alg_locatie_verantw_tel,
|
||
alg_locatie_adres,
|
||
alg_locatie_postcode,
|
||
alg_locatie_plaats,
|
||
alg_locatie_land,
|
||
alg_locatie_post_adres,
|
||
alg_locatie_post_postcode,
|
||
alg_locatie_post_plaats,
|
||
alg_locatie_post_land
|
||
)
|
||
VALUES ( v_district_key,
|
||
recLocatie.alg_locatie_code,
|
||
recLocatie.alg_locatie_omschrijving,
|
||
recLocatie.alg_locatie_verantw,
|
||
recLocatie.alg_locatie_verantw_tel,
|
||
recLocatie.alg_locatie_adres,
|
||
recLocatie.alg_locatie_postcode,
|
||
recLocatie.alg_locatie_plaats,
|
||
recLocatie.alg_locatie_land,
|
||
recLocatie.alg_locatie_post_adres,
|
||
recLocatie.alg_locatie_post_postcode,
|
||
recLocatie.alg_locatie_post_plaats,
|
||
recLocatie.alg_locatie_post_land
|
||
)
|
||
RETURNING alg_locatie_key
|
||
INTO v_locatie_key;
|
||
|
||
v_srtnoti_code := 'ALGLNE';
|
||
v_count_new := v_count_new + 1;
|
||
ELSE -- bijwerken kenmerken!
|
||
v_errormsg := 'Fout bij bepalen locatie';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (recLocatie.alg_locatie_code);
|
||
|
||
v_srtnoti_code := 'ALGLUP';
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
|
||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key1, recLocatie.waarde1);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key2, recLocatie.waarde2);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key3, recLocatie.waarde3);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key4, recLocatie.waarde4);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key5, recLocatie.waarde5);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key6, recLocatie.waarde6);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key7, recLocatie.waarde7);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key8, recLocatie.waarde8);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key9, recLocatie.waarde9);
|
||
upsert_algkenmerk (v_locatie_key, 'L', recLocatie.kenmerk_key10, recLocatie.waarde10);
|
||
fac.trackaction (v_srtnoti_code, v_locatie_key, NULL, NULL, NULL);
|
||
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, 'W', v_aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Locatie/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Locatie/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Locatie/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
|
||
COMMIT;
|
||
|
||
-- ********************
|
||
-- ***GEBOUWFUNCTIE****
|
||
-- ********************
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
|
||
FOR recSrtGebouw IN cSrtGebouw
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || recSrtGebouw.alg_srtgebouw_omschrijving || '] ';
|
||
v_errormsg := 'Fout bij toevoegen gebouwfunctie';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_v_aanwezigsrtgebouw
|
||
WHERE TRIM (alg_srtgebouw_upper) = UPPER (recSrtGebouw.alg_srtgebouw_omschrijving);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO alg_srtgebouw
|
||
( alg_srtgebouw_omschrijving)
|
||
VALUES ( recSrtGebouw.alg_srtgebouw_omschrijving);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
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, '');
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Gebouwfunctie/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Gebouwfunctie/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
COMMIT;
|
||
|
||
-- ************
|
||
-- ***GEBOUW***
|
||
-- ************
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR recGebouw IN cGebouw
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || recGebouw.alg_regio_omschrijving
|
||
|| '|' || recGebouw.alg_district_omschrijving
|
||
|| '|' || recGebouw.alg_locatie_code
|
||
|| '|' || recGebouw.alg_gebouw_code
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen regio';
|
||
|
||
SELECT alg_regio_key
|
||
INTO v_regio_key
|
||
FROM alg_v_aanwezigregio
|
||
WHERE alg_regio_upper = UPPER (recGebouw.alg_regio_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij bepalen district';
|
||
|
||
SELECT alg_district_key
|
||
INTO v_district_key
|
||
FROM alg_v_aanwezigdistrict
|
||
WHERE alg_regio_key = v_regio_key
|
||
AND TRIM (alg_district_upper) = UPPER (recGebouw.alg_district_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij bepalen locatie';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE alg_district_key = v_district_key
|
||
AND UPPER (TRIM (alg_locatie_code)) = UPPER (recGebouw.alg_locatie_code);
|
||
|
||
IF (recGebouw.alg_srtgebouw_omschrijving IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen gebouwfunctie';
|
||
|
||
SELECT alg_srtgebouw_key
|
||
INTO v_srtgebouw_key
|
||
FROM alg_v_aanwezigsrtgebouw
|
||
WHERE TRIM (alg_srtgebouw_upper) = UPPER (recGebouw.alg_srtgebouw_omschrijving);
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij toevoegen gebouw';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (recGebouw.alg_gebouw_code);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO alg_gebouw
|
||
( alg_locatie_key,
|
||
alg_srtgebouw_key,
|
||
alg_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_gebouw_adres,
|
||
alg_gebouw_postcode
|
||
)
|
||
VALUES ( v_locatie_key,
|
||
v_srtgebouw_key,
|
||
recGebouw.alg_gebouw_code,
|
||
recGebouw.alg_gebouw_naam,
|
||
recGebouw.alg_gebouw_adres,
|
||
recGebouw.alg_gebouw_postcode
|
||
)
|
||
RETURNING alg_gebouw_key
|
||
INTO v_gebouw_key;
|
||
|
||
v_srtnoti_code := 'ALGGNE';
|
||
v_count_new := v_count_new + 1;
|
||
ELSE -- bijwerken kenmerken!
|
||
v_errormsg := 'Fout bij bepalen gebouw';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (recGebouw.alg_gebouw_code);
|
||
|
||
v_srtnoti_code := 'ALGGUP';
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
|
||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key1, recGebouw.waarde1);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key2, recGebouw.waarde2);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key3, recGebouw.waarde3);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key4, recGebouw.waarde4);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key5, recGebouw.waarde5);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key6, recGebouw.waarde6);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key7, recGebouw.waarde7);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key8, recGebouw.waarde8);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key9, recGebouw.waarde9);
|
||
upsert_algkenmerk (v_gebouw_key, 'G', recGebouw.kenmerk_key10, recGebouw.waarde10);
|
||
|
||
fac.trackaction (v_srtnoti_code, v_gebouw_key, NULL, NULL, NULL);
|
||
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, 'W', v_aanduiding || v_errormsg, '');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S', 'Gebouw/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Gebouw/#toegevoegd: ' || TO_CHAR (v_count_new), '');
|
||
fac.imp_writelog (p_import_key, 'S', 'Gebouw/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
|
||
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 locaties/gebouwen afgebroken!');
|
||
END fac_update_onrgoed1;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed1_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac_import_onrgoed1(p_import_key);
|
||
|
||
END fac_import_onrgoed1_del;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_onrgoed1_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac.imp_alg_delete_onrgoed(p_import_key,1);
|
||
fac_update_onrgoed1(p_import_key);
|
||
|
||
END fac_update_onrgoed1_del;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed2 (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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);
|
||
-- 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 (4000); -- 255
|
||
v_alg_kenmerkwaarde1 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde2 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde3 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde4 VARCHAR2 (4000);
|
||
v_alg_kenmerkwaarde5 VARCHAR2 (4000);
|
||
|
||
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', 'r', 'S', 'X', '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', 'r', 'S', 'X', '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;
|
||
|
||
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 met index ' || TO_CHAR (rec1.fac_imp_file_index);
|
||
v_aanduiding := '';
|
||
v_errorhint := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
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_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_afdeling_naam);
|
||
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, 1, 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, 3980)
|
||
),
|
||
DECODE (v_alg_kenmerk_key2,
|
||
NULL, v_alg_kenmerkwaarde2,
|
||
TO_CHAR (v_alg_kenmerk_key2)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde2, 1, 3980)
|
||
),
|
||
DECODE (v_alg_kenmerk_key3,
|
||
NULL, v_alg_kenmerkwaarde3,
|
||
TO_CHAR (v_alg_kenmerk_key3)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde3, 1, 3980)
|
||
),
|
||
DECODE (v_alg_kenmerk_key4,
|
||
NULL, v_alg_kenmerkwaarde4,
|
||
TO_CHAR (v_alg_kenmerk_key4)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde4, 1, 3980)
|
||
),
|
||
DECODE (v_alg_kenmerk_key5,
|
||
NULL, v_alg_kenmerkwaarde5,
|
||
TO_CHAR (v_alg_kenmerk_key5)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde5, 1, 3980)
|
||
)
|
||
);
|
||
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 fac_import_onrgoed2;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_onrgoed2 (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
|
||
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);
|
||
|
||
-- 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
|
||
FROM fac_imp_onrgoed2
|
||
GROUP BY upper(alg_locatie_code), upper(alg_gebouw_code), alg_verdieping_volgnr;
|
||
|
||
|
||
recVerdieping cVerdieping%ROWTYPE;
|
||
|
||
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 alg_kenmerk.alg_kenmerk_kenmerktype%TYPE;
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (4000);
|
||
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
|
||
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
|
||
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
|
||
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', '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 [' || SUBSTR(p_waarde, 1, 200) || ']';
|
||
|
||
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
|
||
-- ****************
|
||
-- ***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
|
||
,to_char(recVerdieping.ALG_VERDIEPING_VOLGNR)
|
||
,'Verdieping '||to_char(recVerdieping.ALG_VERDIEPING_VOLGNR)
|
||
);
|
||
|
||
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;
|
||
|
||
|
||
-- *******************
|
||
-- ***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
|
||
AND alg_verdieping_verwijder is null;
|
||
|
||
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 fac_update_onrgoed2;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_onrgoed2_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac.imp_alg_delete_onrgoed(p_import_key,2);
|
||
fac_update_onrgoed2(p_import_key);
|
||
|
||
END fac_update_onrgoed2_del;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed2_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac_import_onrgoed2(p_import_key);
|
||
|
||
END fac_import_onrgoed2_del;
|
||
/
|
||
|
||
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
--// PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports - PROCEDURES VOOR FIP imports
|
||
--// 2. PRS
|
||
|
||
--//////////////////////////////////////////////////PRS IMPORT STUFF///////////////////////////////////////////
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_organisatie (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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 NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_mode NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_all_null BOOLEAN;
|
||
v_count_error NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
-- De importvelden:
|
||
v_bedrijf_naam VARCHAR2 (256);
|
||
v_afdeling_naam VARCHAR2 (256);
|
||
v_afdeling_naam_parent VARCHAR2 (256);
|
||
v_afdeling_omschrijving VARCHAR2 (256);
|
||
v_kostenplaats_nr VARCHAR2 (256);
|
||
v_externid VARCHAR2 (256);
|
||
|
||
-- PRS_BEDRIJF
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_organisatie;
|
||
|
||
COMMIT;
|
||
v_count_error := 0;
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
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_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_externid);
|
||
v_aanduiding := v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| ';
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT'
|
||
AND UPPER (v_kostenplaats_nr) = 'KOSTENPLAATS'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
--fac.imp_writelog (p_import_key, 'I', v_aanduiding, '');
|
||
-- Controleer alle veldwaarde
|
||
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
||
|
||
IF LENGTH (v_bedrijf_naam) > 60
|
||
THEN
|
||
v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Bedrijf-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
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 || 'Afdeling-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);
|
||
|
||
IF LENGTH (v_afdeling_naam_parent) > 15
|
||
THEN
|
||
v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdeling-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);
|
||
|
||
IF LENGTH (v_afdeling_omschrijving) > 60
|
||
THEN
|
||
v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingsomschrijving is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaats_nr := TRIM (v_kostenplaats_nr);
|
||
|
||
IF LENGTH (v_kostenplaats_nr) > 30
|
||
THEN
|
||
v_kostenplaats_nr := SUBSTR (v_kostenplaats_nr, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostenplaats-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_kostenplaats_nr || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_externid := TRIM(v_externid);
|
||
|
||
IF LENGTH (v_externid) > 256
|
||
THEN
|
||
v_externid := SUBSTR(v_externid, 1, 256);
|
||
fac.imp_writelog ( p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Extern Id is te lang',
|
||
'Extern Id wort afgebroken tot [' || v_externid || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_all_null :=
|
||
(v_bedrijf_naam IS NULL)
|
||
AND (v_afdeling_naam IS NULL)
|
||
AND (v_afdeling_naam_parent IS NULL)
|
||
AND (v_afdeling_omschrijving IS NULL)
|
||
AND (v_kostenplaats_nr IS NULL);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']';
|
||
|
||
INSERT INTO fac_imp_organisatie (
|
||
prs_bedrijf_naam,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_naam_parent,
|
||
prs_afdeling_omschrijving,
|
||
prs_kostenplaats_nr,
|
||
prs_afdeling_externid
|
||
)
|
||
VALUES (
|
||
v_bedrijf_naam,
|
||
v_afdeling_naam,
|
||
v_afdeling_naam_parent,
|
||
v_afdeling_omschrijving,
|
||
v_kostenplaats_nr,
|
||
v_externid
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
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', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: aantal ongeldige 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, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
|
||
END fac_import_organisatie;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_organisatie_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac_import_organisatie(p_import_key);
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_organisatie (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
|
||
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_ongeldig NUMBER(1);
|
||
v_count_update NUMBER(10);
|
||
v_count_error NUMBER(10);
|
||
v_count_tot NUMBER(10);
|
||
|
||
--
|
||
v_bedrijf_key NUMBER(10);
|
||
v_kostenplaats_key NUMBER(10);
|
||
v_prs_afdeling_parentkey NUMBER(10);
|
||
|
||
CURSOR cBedrijf
|
||
IS
|
||
SELECT min(prs_bedrijf_naam) prs_bedrijf_naam
|
||
FROM fac_imp_organisatie
|
||
WHERE prs_bedrijf_naam is not null
|
||
GROUP BY upper(prs_bedrijf_naam);
|
||
|
||
recBedrijf cBedrijf%ROWTYPE;
|
||
|
||
-- Bij 1-op-1 relatie tussen kostenplaats en afdeling de kostenplaatsomschrijving zetten op
|
||
-- de afdelingsomschrijving, ander de kostenplaatsomschrijving leeg laten.
|
||
CURSOR cKPN
|
||
IS
|
||
SELECT MIN(prs_kostenplaats_nr) prs_kostenplaats_nr,
|
||
DECODE(COUNT(*),1,MAX(prs_afdeling_omschrijving),'') prs_kostenplaats_omschrijving,
|
||
'PRS' prs_kostenplaats_module
|
||
FROM FAC_IMP_ORGANISATIE
|
||
WHERE prs_kostenplaats_nr IS NOT NULL
|
||
GROUP BY UPPER(prs_kostenplaats_nr);
|
||
|
||
recKPN cKpn%ROWTYPE;
|
||
|
||
CURSOR cAfdeling1
|
||
IS
|
||
SELECT MIN(prs_bedrijf_naam) prs_bedrijf_naam
|
||
,UPPER(prs_bedrijf_naam) prs_bedrijf_naam_upper
|
||
,MIN(prs_afdeling_naam) prs_afdeling_naam
|
||
,UPPER(prs_afdeling_naam) prs_afdeling_upper
|
||
,MAX(prs_afdeling_omschrijving) prs_afdeling_omschrijving
|
||
,MIN(prs_afdeling_naam_parent) prs_afdeling_naam_parent
|
||
,MIN(UPPER(prs_afdeling_naam_parent)) prs_afdeling_naam_parent_upper
|
||
,MAX(prs_kostenplaats_nr) prs_kostenplaats_nr
|
||
,MAX(UPPER(prs_kostenplaats_nr)) prs_kostenplaats_upper
|
||
,MAX(prs_afdeling_externid) prs_afdeling_externid
|
||
,NIVEAU
|
||
FROM (SELECT 1 NIVEAU,
|
||
a1.prs_bedrijf_naam,
|
||
a1.prs_afdeling_naam,
|
||
a1.prs_afdeling_omschrijving,
|
||
a1.prs_kostenplaats_nr,
|
||
'' PRS_AFDELING_NAAM_PARENT,
|
||
a1.prs_afdeling_externid
|
||
FROM FAC_IMP_ORGANISATIE a1
|
||
WHERE a1.prs_afdeling_naam_parent IS NULL
|
||
UNION ALL
|
||
SELECT 2,
|
||
a2.prs_bedrijf_naam,
|
||
a2.prs_afdeling_naam,
|
||
a2.prs_afdeling_omschrijving,
|
||
a2.prs_kostenplaats_nr,
|
||
a1.prs_afdeling_naam,
|
||
a2.prs_afdeling_externid
|
||
FROM FAC_IMP_ORGANISATIE a1, FAC_IMP_ORGANISATIE a2
|
||
WHERE a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
||
AND a1.prs_afdeling_naam_parent IS NULL
|
||
UNION ALL
|
||
SELECT 3,
|
||
a3.prs_bedrijf_naam,
|
||
a3.prs_afdeling_naam,
|
||
a3.prs_afdeling_omschrijving,
|
||
a3.prs_kostenplaats_nr,
|
||
a2.prs_afdeling_naam,
|
||
a3.prs_afdeling_externid
|
||
FROM FAC_IMP_ORGANISATIE a1, FAC_IMP_ORGANISATIE a2, FAC_IMP_ORGANISATIE a3
|
||
WHERE a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
||
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
||
AND a1.prs_afdeling_naam_parent IS NULL
|
||
UNION ALL
|
||
SELECT 4,
|
||
a4.prs_bedrijf_naam,
|
||
a4.prs_afdeling_naam,
|
||
a4.prs_afdeling_omschrijving,
|
||
a4.prs_kostenplaats_nr,
|
||
a3.prs_afdeling_naam,
|
||
a4.prs_afdeling_externid
|
||
FROM FAC_IMP_ORGANISATIE a1, FAC_IMP_ORGANISATIE a2, FAC_IMP_ORGANISATIE a3, FAC_IMP_ORGANISATIE a4
|
||
WHERE a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
||
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
||
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
||
AND a1.prs_afdeling_naam_parent IS NULL
|
||
UNION ALL
|
||
SELECT 5,
|
||
a5.prs_bedrijf_naam,
|
||
a5.prs_afdeling_naam,
|
||
a5.prs_afdeling_omschrijving,
|
||
a5.prs_kostenplaats_nr,
|
||
a4.prs_afdeling_naam,
|
||
a5.prs_afdeling_externid
|
||
FROM FAC_IMP_ORGANISATIE a1, FAC_IMP_ORGANISATIE a2, FAC_IMP_ORGANISATIE a3, FAC_IMP_ORGANISATIE a4, FAC_IMP_ORGANISATIE a5
|
||
WHERE a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
||
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
||
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
||
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
||
AND a1.prs_afdeling_naam_parent IS NULL)
|
||
WHERE ((prs_bedrijf_naam IS NOT NULL) AND (prs_afdeling_naam IS NOT NULL)) -- geen lege regels
|
||
GROUP BY UPPER(prs_bedrijf_naam), UPPER(prs_afdeling_naam), NIVEAU
|
||
ORDER BY NIVEAU;
|
||
|
||
recAfdeling1 cAfdeling1%ROWTYPE;
|
||
|
||
BEGIN
|
||
|
||
OPEN cBedrijf;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cBedrijf%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
|
||
FETCH cBedrijf INTO recBedrijf;
|
||
EXIT WHEN cBedrijf%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recBedrijf.PRS_BEDRIJF_NAAM||'| ';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
v_errorhint := 'Kijken of bedrijf al bestaat';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_bedrijf
|
||
WHERE upper(prs_bedrijf_naam_upper) = upper(recBedrijf.prs_bedrijf_naam)
|
||
AND prs_bedrijf_verwijder is null;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen bedrijf';
|
||
INSERT INTO PRS_BEDRIJF (
|
||
prs_bedrijf_naam
|
||
,prs_bedrijf_intern
|
||
) VALUES (
|
||
recBedrijf.prs_bedrijf_naam
|
||
,1
|
||
);
|
||
|
||
commit;
|
||
v_count_update := v_count_update + 1;
|
||
|
||
END IF;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
IF (v_errormsg IS NULL) THEN
|
||
v_errormsg := 'Fout tijdens verwerken van bedrijf ['||recBedrijf.PRS_BEDRIJF_NAAM||']';
|
||
END IF;
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
commit; -- tbv logging
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: verwerkte regels met foutmelding: '||to_char(v_count_error),
|
||
''
|
||
);
|
||
|
||
END IF;
|
||
|
||
OPEN cKPN;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cKPN%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := recKPN.PRS_KOSTENPLAATS_NR||'| ';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
FETCH cKPN INTO recKPN;
|
||
EXIT WHEN cKPN%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recBedrijf.PRS_BEDRIJF_NAAM||'| ';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
v_errorhint := 'Kijken of de kostenplaats al bestaat';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder is null
|
||
AND upper(prs_kostenplaats_upper) = upper(recKPN.prs_kostenplaats_nr);
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen kostenplaats';
|
||
INSERT INTO PRS_KOSTENPLAATS
|
||
(PRS_KOSTENPLAATS_NR
|
||
,PRS_KOSTENPLAATS_OMSCHRIJVING
|
||
,PRS_KOSTENPLAATS_MODULE)
|
||
VALUES
|
||
(recKPN.prs_kostenplaats_nr
|
||
,recKPN.prs_kostenplaats_omschrijving
|
||
,recKPN.prs_kostenplaats_module);
|
||
|
||
commit;
|
||
v_count_update := v_count_update + 1;
|
||
|
||
END IF;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
IF (v_errormsg IS NULL) THEN
|
||
v_errormsg := 'Fout tijdens verwerken van kostenplaats ['||recKPN.PRS_KOSTENPLAATS_NR||']';
|
||
END IF;
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
commit; -- tbv logging
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kostenplaats: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kostenplaats: verwerkte regels met foutmelding: '||to_char(v_count_error),
|
||
''
|
||
);
|
||
|
||
END IF;
|
||
|
||
|
||
OPEN cAfdeling1;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cAfdeling1%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
|
||
FETCH cAfdeling1 INTO recAfdeling1;
|
||
EXIT WHEN cAfdeling1%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recAfdeling1.prs_bedrijf_naam||'|'||recAfdeling1.prs_afdeling_naam||'|'||recAfdeling1.prs_afdeling_naam_parent ||'| ';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
IF (recAfdeling1.niveau = 1) THEN
|
||
v_errorhint := 'Bedrijf niet gevonden bij afdeling';
|
||
v_prs_afdeling_parentkey := to_number(NULL);
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_naam_upper = recAfdeling1.prs_bedrijf_naam_upper;
|
||
ELSE
|
||
v_errorhint := 'Parent van de afdeling niet gevonden';
|
||
v_bedrijf_key := to_number(NULL);
|
||
SELECT prs_afdeling_key
|
||
INTO v_prs_afdeling_parentkey
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper = recAfdeling1.prs_afdeling_naam_parent_upper;
|
||
END IF;
|
||
|
||
v_errorhint := 'Bepalen of afdeling bestaat';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_afdeling
|
||
WHERE upper(rtrim(prs_afdeling_omschrijving)) = upper(rtrim(recAfdeling1.prs_afdeling_omschrijving))
|
||
AND prs_afdeling_verwijder is null;
|
||
|
||
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
||
SELECT COUNT(*), NVL(MAX(prs_kostenplaats_key),to_number(NULL))
|
||
INTO v_count, v_kostenplaats_key
|
||
FROM PRS_KOSTENPLAATS
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_upper = UPPER(trim(recAfdeling1.prs_kostenplaats_upper))
|
||
AND UPPER(prs_kostenplaats_module) = 'PRS';
|
||
|
||
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM PRS_AFDELING
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_upper = UPPER(trim(recAfdeling1.prs_afdeling_upper));
|
||
|
||
v_errorhint := 'Fout bij toevoegen afdeling';
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO prs_afdeling
|
||
( prs_afdeling_naam
|
||
, prs_afdeling_omschrijving
|
||
, prs_bedrijf_key
|
||
, prs_afdeling_parentkey
|
||
, prs_kostenplaats_key
|
||
, prs_afdeling_externid
|
||
) VALUES
|
||
( recAfdeling1.prs_afdeling_naam
|
||
, recAfdeling1.prs_afdeling_omschrijving
|
||
, v_bedrijf_key
|
||
, v_prs_afdeling_parentkey
|
||
, v_kostenplaats_key
|
||
, recAfdeling1.prs_afdeling_externid
|
||
);
|
||
|
||
COMMIT;
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
IF (v_errormsg IS NULL) THEN
|
||
v_errormsg := 'Fout tijdens verwerken van afdeling ['||recAfdeling1.PRS_AFDELING_NAAM||']';
|
||
END IF;
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
commit; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afdeling: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afdeling: verwerkte regels met foutmelding: '||to_char(v_count_error),
|
||
''
|
||
);
|
||
|
||
END IF;
|
||
CLOSE cAfdeling1;
|
||
|
||
|
||
|
||
END fac_update_organisatie;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_organisatie_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac.imp_prs_delete_organisatie(p_import_key,1);
|
||
fac_update_organisatie(p_import_key);
|
||
|
||
END;
|
||
/
|
||
|
||
-- FIP routine voor kostenplaatsen. Indien een niet verwijderde kostenplaats met hetzelfde
|
||
-- nummer gevonden kan worden dan zal deze aangepast worden. Anders wordt een nieuwe kostenplaats
|
||
-- aangemaakt.
|
||
CREATE OR REPLACE PROCEDURE fac_import_kpn (p_import_key IN NUMBER)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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 NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_mode NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_all_null BOOLEAN;
|
||
v_count_error NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
-- De importvelden:
|
||
v_kostenplaats_nr VARCHAR2 (255);
|
||
v_kostenplaats_omschrijving VARCHAR2 (255);
|
||
v_kostenplaats_module VARCHAR2 (255);
|
||
v_kostenplaats_begin VARCHAR2 (255);
|
||
v_kostenplaats_begin_d DATE;
|
||
v_kostenplaats_eind VARCHAR2 (255);
|
||
v_kostenplaats_eind_d DATE;
|
||
v_kostenplaatsgrp_oms VARCHAR2 (255);
|
||
v_kostenplaatsgrp_key NUMBER;
|
||
v_perslid VARCHAR2 (255);
|
||
v_perslid_key NUMBER (10);
|
||
v_kostenplaats_limiet VARCHAR2 (255);
|
||
v_kostenplaats_limietperiode VARCHAR2 (255);
|
||
v_kostenplaats_extern VARCHAR2 (255);
|
||
v_kostenplaats_fiat VARCHAR2 (255);
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_kpn;
|
||
|
||
COMMIT;
|
||
v_count_error := 0;
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_module);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_begin);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_eind);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaatsgrp_oms);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_perslid);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_limiet);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_limietperiode);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_extern);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_fiat);
|
||
|
||
v_aanduiding := v_kostenplaats_nr || '|' || v_kostenplaats_omschrijving;
|
||
|
||
IF v_kostenplaats_nr IS NOT NULL
|
||
THEN
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_kostenplaats_nr) = 'KOSTENPLAATS'
|
||
AND UPPER (v_perslid) = 'BUDGETHOUDER'
|
||
AND UPPER (v_kostenplaats_fiat) = 'OPDRACHTENFIATTEREN'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
--fac.imp_writelog (p_import_key, 'I', v_aanduiding, '');
|
||
-- Controleer alle veldwaarde
|
||
v_kostenplaats_nr := TRIM (v_kostenplaats_nr);
|
||
|
||
IF LENGTH (v_kostenplaats_nr) > 30
|
||
THEN
|
||
v_kostenplaats_nr := SUBSTR (v_kostenplaats_nr, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostenplaatsnummer is te lang',
|
||
'Kostenplaatsnummer wordt afgebroken tot [' || v_kostenplaats_nr || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaats_omschrijving := TRIM (v_kostenplaats_omschrijving);
|
||
|
||
IF LENGTH (v_kostenplaats_omschrijving) > 60
|
||
THEN
|
||
v_kostenplaats_omschrijving := SUBSTR (v_kostenplaats_omschrijving, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostenpaatsomschrijving is te lang',
|
||
'Kostenpaatsomschrijving wordt afgebroken tot ['
|
||
|| v_kostenplaats_omschrijving
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaats_module := UPPER (TRIM (v_kostenplaats_module));
|
||
|
||
IF v_kostenplaats_module NOT IN ('ALG', 'PRS', 'PRJ')
|
||
THEN
|
||
v_kostenplaats_module := 'PRS';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Ongelding kostenplaatstype',
|
||
'Kostenplaatstype wordt aangepast naar [' || v_kostenplaats_module || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaats_begin := TRIM (v_kostenplaats_begin);
|
||
v_kostenplaats_begin_d := fac.safe_to_date (v_kostenplaats_begin, 'dd-mm-yyyy');
|
||
|
||
IF v_kostenplaats_begin IS NOT NULL AND v_kostenplaats_begin_d IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostenplaatsbegin is ongeldig',
|
||
'Kostenplaatsbegin wordt leeg gemaakt');
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaats_eind := TRIM (v_kostenplaats_eind);
|
||
v_kostenplaats_eind_d := fac.safe_to_date (v_kostenplaats_eind, 'dd-mm-yyyy');
|
||
|
||
IF v_kostenplaats_eind IS NOT NULL AND v_kostenplaats_eind_d IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostenplaatseind is ongeldig',
|
||
'Kostenplaatseind wordt leeg gemaakt');
|
||
END IF;
|
||
|
||
--
|
||
v_kostenplaatsgrp_oms := TRIM (v_kostenplaatsgrp_oms);
|
||
|
||
IF v_kostenplaatsgrp_oms IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostenplaatsgrp_key
|
||
INTO v_kostenplaatsgrp_key
|
||
FROM prs_kostenplaatsgrp
|
||
WHERE UPPER (prs_kostenplaatsgrp_oms) = UPPER (v_kostenplaatsgrp_oms);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_kostenplaatsgrp_key := NULL;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostenplaatsgroep-aanduiding kan niet gevonden worden',
|
||
'Kostenplaatsgroep wordt leeg gemaakt [' || v_kostenplaatsgrp_oms || ']');
|
||
END;
|
||
ELSE
|
||
v_kostenplaatsgrp_key := NULL;
|
||
END IF;
|
||
|
||
--
|
||
v_perslid := TRIM (v_perslid);
|
||
|
||
IF v_perslid IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = UPPER (v_perslid)
|
||
OR prs_perslid_oslogin = UPPER (v_perslid);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_perslid_key := NULL;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Budgethouder-aanduiding kan niet gevonden worden',
|
||
'Budgethouder wordt leeg gemaakt [' || v_perslid || ']');
|
||
END;
|
||
ELSE
|
||
v_perslid_key := NULL;
|
||
END IF;
|
||
|
||
v_kostenplaats_limiet := TRIM (v_kostenplaats_limiet);
|
||
|
||
v_kostenplaats_limietperiode := UPPER (TRIM (v_kostenplaats_limietperiode));
|
||
|
||
IF v_kostenplaats_limietperiode IS NOT NULL
|
||
AND v_kostenplaats_limietperiode NOT IN ('J', 'M')
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Budgetperiode-aanduiding kan niet gevonden worden',
|
||
'Budgetperiode wordt leeg gemaakt [' || v_kostenplaats_limietperiode || ']');
|
||
END IF;
|
||
|
||
v_kostenplaats_extern := TRIM (v_kostenplaats_extern);
|
||
|
||
IF v_kostenplaats_extern IS NOT NULL AND v_kostenplaats_extern NOT IN ('0', '1')
|
||
THEN
|
||
v_kostenplaats_extern := NULL;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostenplaats extern-aanduiding kan niet gevonden worden',
|
||
'Kostenplaats_extern-aanduiding wordt leeg gemaakt');
|
||
END IF;
|
||
|
||
v_kostenplaats_fiat := TRIM (v_kostenplaats_fiat);
|
||
|
||
IF v_kostenplaats_fiat IS NOT NULL AND v_kostenplaats_fiat NOT IN ('0', '1')
|
||
THEN
|
||
v_kostenplaats_fiat := NULL;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Opdrachtfiatteren-aanduiding kan niet gevonden worden',
|
||
'Opdrachtfiatteren-aanduiding wordt leeg gemaakt');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen te impoteren kostenplaats [' || v_aanduiding || ']';
|
||
|
||
INSERT INTO fac_imp_kpn (prs_kostenplaats_nr,
|
||
prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module,
|
||
prs_kostenplaats_begin,
|
||
prs_kostenplaats_eind,
|
||
prs_kostenplaatsgrp_key,
|
||
prs_perslid_key,
|
||
prs_kostenplaats_limiet,
|
||
prs_kostenplaats_limietperiode,
|
||
prs_kostenplaats_extern,
|
||
prs_kostenplaats_fiat)
|
||
VALUES (v_kostenplaats_nr,
|
||
v_kostenplaats_omschrijving,
|
||
v_kostenplaats_module,
|
||
v_kostenplaats_begin_d,
|
||
v_kostenplaats_eind_d,
|
||
v_kostenplaatsgrp_key,
|
||
v_perslid_key,
|
||
fac.safe_to_number (v_kostenplaats_limiet),
|
||
DECODE (v_kostenplaats_limietperiode, 'M', 1, 'J', 2, 0),
|
||
fac.safe_to_number (v_kostenplaats_extern),
|
||
fac.safe_to_number (v_kostenplaats_fiat));
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
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',
|
||
'Kostenplaats: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kostenplaats: aantal ongeldige 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, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'');
|
||
END fac_import_kpn;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_kpn (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT * FROM fac_imp_kpn;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
v_kostenplaats_key prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
BEGIN
|
||
v_aanduiding := rec.prs_kostenplaats_nr || '|' || rec.prs_kostenplaats_omschrijving;
|
||
|
||
v_errorhint := 'Opzoeken kostenplaats';
|
||
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND prs_kostenplaats_upper = UPPER (rec.prs_kostenplaats_nr);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Toevoegen kostenplaats';
|
||
|
||
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
||
prs_kostenplaats_module,
|
||
prs_kostenplaats_omschrijving)
|
||
VALUES (rec.prs_kostenplaats_nr,
|
||
rec.prs_kostenplaats_module,
|
||
rec.prs_kostenplaats_omschrijving)
|
||
RETURNING prs_kostenplaats_key
|
||
INTO v_kostenplaats_key;
|
||
END;
|
||
|
||
-- We hebben nu een kostenplaats record aangemaakt of gevonden.
|
||
-- Dan gaan we deze nu updaten.
|
||
v_errorhint := 'Aanpassen kostenplaats';
|
||
|
||
UPDATE prs_kostenplaats k
|
||
SET prs_kostenplaats_omschrijving = rec.prs_kostenplaats_omschrijving,
|
||
prs_kostenplaats_module = rec.prs_kostenplaats_module,
|
||
prs_kostenplaats_begin = rec.prs_kostenplaats_begin,
|
||
prs_kostenplaats_eind = rec.prs_kostenplaats_eind,
|
||
prs_kostenplaatsgrp_key = rec.prs_kostenplaatsgrp_key,
|
||
prs_perslid_key = rec.prs_perslid_key,
|
||
prs_kostenplaats_limiet = rec.prs_kostenplaats_limiet,
|
||
prs_kostenplaats_limietperiode = rec.prs_kostenplaats_limietperiode,
|
||
prs_kostenplaats_extern =
|
||
COALESCE (rec.prs_kostenplaats_extern, prs_kostenplaats_extern),
|
||
prs_kostenplaats_fiat = COALESCE (rec.prs_kostenplaats_fiat, prs_kostenplaats_fiat)
|
||
WHERE k.prs_kostenplaats_key = v_kostenplaats_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || ' | ' || v_aanduiding);
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || ' | ' || v_aanduiding);
|
||
END fac_update_kpn;
|
||
/
|
||
|
||
-- FIP routine voor kostensoorten. Indien een niet verwijderde kostensoort met dezelfde
|
||
-- omschrijving (GUI:code) gevonden kan worden dan zal deze aangepast worden. Anders wordt een nieuwe kostensoort
|
||
-- aangemaakt.
|
||
CREATE OR REPLACE PROCEDURE fac_import_kostensoort (p_import_key IN NUMBER)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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 NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_mode NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_all_null BOOLEAN;
|
||
v_count_error NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
-- De importvelden:
|
||
v_kostensoort_oms VARCHAR2 (255); -- VARCHAR2 (60), code
|
||
v_kostensoort_opmerking VARCHAR2 (255); -- VARCHAR2 (255), omschrijving
|
||
v_kostensoort_refcode VARCHAR2 (255); -- VARCHAR2 (60), financiele waarde
|
||
v_kostensoort_doorbelasten VARCHAR2 (255); -- NUMBER (1), 1=Ja
|
||
v_kostensoort_btw VARCHAR2 (255); -- NUMBER (1),
|
||
v_kostenplaats_nr VARCHAR2 (255);
|
||
v_kostenplaats_key NUMBER (10); -- leverende kostenplaats
|
||
v_kostensoortgrp_oms VARCHAR2 (255);
|
||
v_kostensoortgrp_key NUMBER (10); -- bestaande kostenplaatsgrp
|
||
v_kostensoort_altcode VARCHAR2 (255); -- VARCHAR2 (60), alternatieve code
|
||
v_kostensoort_eind_txt VARCHAR2 (255);
|
||
v_kostensoort_eind DATE;
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_kpn;
|
||
|
||
COMMIT;
|
||
v_count_error := 0;
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoortgrp_oms);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_oms);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_opmerking);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_altcode);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_refcode);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_doorbelasten);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_btw);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_nr); -- leverende kostenplaats
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostensoort_eind_txt);
|
||
|
||
v_aanduiding := v_kostensoort_oms || '|' || v_kostensoort_opmerking;
|
||
|
||
IF v_kostensoort_oms IS NOT NULL
|
||
THEN
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_kostensoort_oms) = 'KOSTENSOORTCODE'
|
||
AND UPPER (v_kostensoort_refcode) = 'FINANCIELEWAARDE'
|
||
AND UPPER (v_kostenplaats_nr) = 'LEVERENDEKOSTENPLAATS'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
--fac.imp_writelog (p_import_key, 'I', v_aanduiding, '');
|
||
-- Controleer alle veldwaarde
|
||
|
||
v_kostensoortgrp_oms := TRIM (v_kostensoortgrp_oms);
|
||
BEGIN
|
||
SELECT prs_kostensoortgrp_key
|
||
INTO v_kostensoortgrp_key
|
||
FROM prs_kostensoortgrp
|
||
WHERE UPPER (prs_kostensoortgrp_oms) = UPPER (v_kostensoortgrp_oms);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_kostensoortgrp_key := NULL;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostensoortgroep-aanduiding kan niet gevonden worden',
|
||
'Kostensoortgroep wordt leeg gemaakt [' || v_kostensoortgrp_oms || ']');
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
v_kostensoort_oms := TRIM (v_kostensoort_oms);
|
||
IF LENGTH (v_kostensoort_oms) > 60
|
||
THEN
|
||
v_kostensoort_oms := SUBSTR (v_kostensoort_oms, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostensoortcode is te lang',
|
||
'Kostensoortcode wordt afgebroken tot [' || v_kostensoort_oms || ']');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_opmerking := TRIM (v_kostensoort_opmerking);
|
||
IF LENGTH (v_kostensoort_opmerking) > 255
|
||
THEN
|
||
v_kostensoort_opmerking := SUBSTR (v_kostensoort_opmerking, 1, 255);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostensoortomschrijving is te lang',
|
||
'Kostensoortomschrijving wordt afgebroken tot ['
|
||
|| v_kostensoort_opmerking
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_altcode := UPPER (TRIM (v_kostensoort_altcode));
|
||
IF LENGTH(v_kostensoort_altcode) > 60
|
||
THEN
|
||
v_kostensoort_altcode := SUBSTR (v_kostensoort_altcode, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostensoort alternatieve code is te lang',
|
||
'Kostensoort alternatieve code wordt afgebroken tot ['
|
||
|| v_kostensoort_altcode
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_refcode := UPPER (TRIM (v_kostensoort_refcode));
|
||
IF LENGTH(v_kostensoort_refcode) > 60
|
||
THEN
|
||
v_kostensoort_refcode := SUBSTR (v_kostensoort_refcode, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Kostensoort financiele waarde is te lang',
|
||
'Kostensoort financiele waarde wordt afgebroken tot ['
|
||
|| v_kostensoort_refcode
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_doorbelasten := UPPER (TRIM (v_kostensoort_doorbelasten));
|
||
IF UPPER(v_kostensoort_doorbelasten) NOT IN ('J', 'N')
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige doorbelastingsindicatie',
|
||
'Doorbelastingsindicatie ['
|
||
|| v_kostensoort_doorbelasten
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_btw := UPPER (TRIM (v_kostensoort_btw));
|
||
IF UPPER(v_kostensoort_btw) NOT IN ('J', 'N')
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldige BTW indicatie',
|
||
'BTW indicatie ['
|
||
|| v_kostensoort_btw
|
||
|| ']');
|
||
END IF;
|
||
|
||
v_kostenplaats_nr := TRIM (v_kostenplaats_nr);
|
||
IF v_kostenplaats_nr IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND UPPER (prs_kostenplaats_nr) = UPPER (v_kostenplaats_nr);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_kostenplaats_key := NULL;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Leverende kostenplaats kan niet gevonden worden',
|
||
'Kostenplaats wordt leeg gemaakt [' || v_kostenplaats_nr || ']');
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
--
|
||
v_kostensoort_eind_txt := TRIM (v_kostensoort_eind_txt);
|
||
v_kostensoort_eind := fac.safe_to_date (v_kostensoort_eind_txt, 'dd-mm-yyyy');
|
||
|
||
IF v_kostensoort_eind_txt IS NOT NULL AND v_kostensoort_eind IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Kostensoorteind is ongeldig',
|
||
'Kostensoorteind wordt leeg gemaakt');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
dbms_output.put_line ('v_ongeldig:' || v_ongeldig);
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen te impoteren kostensoort [' || v_aanduiding || ']';
|
||
|
||
INSERT INTO fac_imp_kostensoort (prs_kostensoort_oms,
|
||
prs_kostensoort_opmerking,
|
||
prs_kostensoort_refcode,
|
||
prs_kostensoort_doorbelasten,
|
||
prs_kostensoort_btw,
|
||
prs_kostenplaats_key,
|
||
prs_kostensoortgrp_key,
|
||
prs_kostensoort_eind,
|
||
prs_kostensoort_altcode
|
||
)
|
||
VALUES (v_kostensoort_oms,
|
||
v_kostensoort_opmerking,
|
||
v_kostensoort_refcode,
|
||
DECODE(v_kostensoort_doorbelasten, 'J', 1, 0),
|
||
DECODE(v_kostensoort_btw, 'J', 1, 0),
|
||
v_kostenplaats_key,
|
||
v_kostensoortgrp_key,
|
||
v_kostensoort_eind,
|
||
v_kostensoort_altcode
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
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',
|
||
'Kostensoort: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kostensoort: aantal ongeldige 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, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'');
|
||
END fac_import_kostensoort;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_kostensoort (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT * FROM fac_imp_kostensoort;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
v_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
BEGIN
|
||
v_aanduiding := rec.prs_kostensoort_oms || '|' || rec.prs_kostensoort_opmerking;
|
||
|
||
v_errorhint := 'Opzoeken kostensoort';
|
||
|
||
SELECT prs_kostensoort_key
|
||
INTO v_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE 1=1 -- prs_kostensoort_verwijder IS NULL
|
||
AND prs_kostensoort_upper = UPPER (rec.prs_kostensoort_oms);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Toevoegen kostensoort';
|
||
|
||
INSERT INTO prs_kostensoort (prs_kostensoort_oms,
|
||
prs_kostensoort_opmerking,
|
||
prs_kostensoortgrp_key)
|
||
VALUES (rec.prs_kostensoort_oms,
|
||
rec.prs_kostensoort_opmerking,
|
||
rec.prs_kostensoortgrp_key)
|
||
RETURNING prs_kostensoort_key
|
||
INTO v_kostensoort_key;
|
||
END;
|
||
|
||
-- We hebben nu een kostensoort record aangemaakt of gevonden.
|
||
-- Dan gaan we deze nu updaten.
|
||
v_errorhint := 'Aanpassen kostensoort';
|
||
|
||
UPDATE prs_kostensoort k
|
||
SET prs_kostensoort_opmerking = rec.prs_kostensoort_opmerking,
|
||
prs_kostensoort_altcode = rec.prs_kostensoort_altcode,
|
||
prs_kostensoort_refcode = rec.prs_kostensoort_refcode,
|
||
prs_kostensoort_eind = rec.prs_kostensoort_eind,
|
||
prs_kostensoortgrp_key = rec.prs_kostensoortgrp_key,
|
||
prs_kostensoort_doorbelasten = rec.prs_kostensoort_doorbelasten,
|
||
prs_kostensoort_btw = rec.prs_kostensoort_btw
|
||
WHERE k.prs_kostensoort_key = v_kostensoort_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || ' | ' || v_aanduiding);
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint || ' | ' || v_aanduiding);
|
||
END fac_update_kostensoort;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_perslid (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_seq_of_columns VARCHAR(255);
|
||
BEGIN
|
||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;11;10;0;0;0;0;13;14;15;0;17;16;18;19;12;0;20;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47';
|
||
prs.import_perslid(p_import_key, v_seq_of_columns, 'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Werkplekvolgnummer;Omschrijving;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;TitelAanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password;Kostenplaatsnr%');
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_perslid (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
prs.update_perslid (p_import_key, 'NR', 'A', 1);
|
||
END fac_update_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_perslid_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
fac.imp_prs_delete_organisatie(p_import_key,2);
|
||
fac_update_perslid(p_import_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_contactpersoon (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR (400);
|
||
|
||
-- De importvelden
|
||
v_prs_bedrijf_naam VARCHAR2 (255); -- C60
|
||
v_prs_leverancier_nr VARCHAR2 (255); -- C50
|
||
v_prs_perslid_matchcode VARCHAR2 (4000); -- N1
|
||
v_prs_perslid_matchwaarde VARCHAR2 (4000);
|
||
v_prs_contactpersoon_naam VARCHAR2 (255); -- C30
|
||
v_prs_contactpersoon_tussenv VARCHAR2 (255); -- C15
|
||
v_prs_contactpersoon_voorletters VARCHAR2 (255); -- C10
|
||
v_prs_contactpersoon_voornaam VARCHAR2 (255); -- C30
|
||
v_prs_contactpersoon_aanhef VARCHAR2 (255); -- C30
|
||
v_prs_contactpersoon_titel VARCHAR2 (255); -- C10
|
||
v_prs_contactpersoon_telefoon_1 VARCHAR2 (255); -- C30
|
||
v_prs_contactpersoon_telefoon_2 VARCHAR2 (255); -- C30
|
||
v_prs_contactpersoon_email VARCHAR2 (255); -- C200
|
||
v_prs_contactpersoon_functie VARCHAR2 (255); -- C60
|
||
v_prs_contactpersoon_opmerking VARCHAR2 (255); -- C255
|
||
v_alg_locatie_code VARCHAR2 (255); -- C10
|
||
|
||
v_matchkolom VARCHAR2 (255);
|
||
sql_stmt VARCHAR2 (1000);
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
pcount NUMBER;
|
||
|
||
v_prs_bedrijf_key NUMBER;
|
||
v_prs_perslid_key NUMBER;
|
||
v_alg_locatie_key NUMBER;
|
||
v_file_index NUMBER;
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_contactpersoon;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
v_prs_perslid_matchcode := '';
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_file_index := rec1.fac_imp_file_index;
|
||
v_errorhint := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_leverancier_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchwaarde);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_tussenv);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_voorletters);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_voornaam);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_titel);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_aanhef);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_telefoon_1);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_telefoon_2);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_email);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_functie);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_contactpersoon_opmerking);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_bedrijf_naam
|
||
|| '|'
|
||
|| v_prs_leverancier_nr
|
||
|| '|'
|
||
|| v_prs_contactpersoon_naam
|
||
|| '|'
|
||
|| v_prs_contactpersoon_voornaam
|
||
|| '|'
|
||
|| v_prs_perslid_matchwaarde
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop.
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_prs_bedrijf_naam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_prs_leverancier_nr) = 'LEVERANCIERNUMMER'
|
||
AND UPPER (v_prs_perslid_matchcode) = 'PERSOONMATCHCODE'
|
||
AND UPPER (v_prs_perslid_matchwaarde) = 'PERSOONMATCHWAARDE'
|
||
AND UPPER (v_prs_contactpersoon_naam) = 'CONTACTPERSOONACHTERNAAM'
|
||
AND UPPER (v_prs_contactpersoon_tussenv) = 'TUSSENVOEGSEL'
|
||
AND UPPER (v_prs_contactpersoon_voorletters) = 'VOORLETTERS'
|
||
AND UPPER (v_prs_contactpersoon_voornaam) = 'VOORNAAM'
|
||
AND UPPER (v_prs_contactpersoon_titel) = 'TITEL'
|
||
AND UPPER (v_prs_contactpersoon_aanhef) = 'AANHEF'
|
||
AND UPPER (v_prs_contactpersoon_telefoon_1) = 'TELEFOONNUMMER'
|
||
AND UPPER (v_prs_contactpersoon_telefoon_2) = 'MOBIEL'
|
||
AND UPPER (v_prs_contactpersoon_email) = 'EMAIL'
|
||
AND UPPER (v_prs_contactpersoon_functie) = 'FUNCTIE'
|
||
AND UPPER (v_prs_contactpersoon_opmerking) = 'OPMERKING'
|
||
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errorhint := 'Bedrijfsnaam ongeldig';
|
||
v_prs_bedrijf_naam := TRIM (v_prs_bedrijf_naam);
|
||
|
||
v_errorhint := 'Leveranciersnr ongeldig';
|
||
v_prs_leverancier_nr := TRIM (v_prs_leverancier_nr);
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
SELECT MIN (prs_bedrijf_key)
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE TRIM(prs_bedrijf_naam_upper) = UPPER (v_prs_bedrijf_naam)
|
||
OR UPPER(TRIM(prs_leverancier_nr)) = UPPER (v_prs_leverancier_nr);
|
||
|
||
IF v_prs_bedrijf_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan bedrijf niet 1-duidig bepalen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon [' || v_prs_perslid_matchwaarde || ']';
|
||
v_prs_perslid_matchcode := TRIM(v_prs_perslid_matchcode);
|
||
v_prs_perslid_matchwaarde := TRIM(v_prs_perslid_matchwaarde);
|
||
v_prs_perslid_key := NULL;
|
||
IF v_prs_perslid_matchcode IS NOT NULL AND v_prs_perslid_matchwaarde IS NOT NULL
|
||
THEN
|
||
|
||
v_matchkolom := '';
|
||
CASE v_prs_perslid_matchcode
|
||
WHEN '1'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
||
WHEN '2'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
||
WHEN '3'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_KEY';
|
||
WHEN '4'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_NR';
|
||
WHEN '5'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
||
ELSE
|
||
-- voor developers only: indien geen code wordt gebruikt,
|
||
-- kan als persoonmatchcode een kolom uit de perslid-tabel
|
||
-- worden ingevoerd, bijvoorbeeld: prs_perslid_oslogin2
|
||
v_matchkolom := v_prs_perslid_matchcode;
|
||
END CASE;
|
||
|
||
sql_stmt :=
|
||
'SELECT MIN (prs_perslid_key), COUNT (prs_perslid_key) '
|
||
|| ' FROM prs_v_aanwezigperslid '
|
||
|| ' WHERE UPPER ('
|
||
|| v_matchkolom
|
||
|| ') = UPPER (:pwaarde) ';
|
||
--dbms_output.put_line(v_prs_perslid_matchwaarde);
|
||
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', v_prs_perslid_matchwaarde);
|
||
DBMS_SQL.define_column(l_cursor_1, 1, v_prs_perslid_key);
|
||
DBMS_SQL.define_column(l_cursor_1, 2, pcount);
|
||
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
||
-- Bij no rows gaat-ie naar de exception. Moet daar dan nog een cursor dicht??
|
||
DBMS_SQL.column_value (l_cursor_1, 1, v_prs_perslid_key);
|
||
DBMS_SQL.column_value (l_cursor_1, 2, pcount);
|
||
DBMS_SQL.close_cursor(l_cursor_1);
|
||
--dbms_output.put_line(pcount);
|
||
|
||
IF pcount != 1
|
||
THEN
|
||
IF pcount = 0
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Persoon niet (meer) aanwezig');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan persoon niet 1-duidig bepalen');
|
||
END IF;
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
SELECT prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email
|
||
INTO v_prs_contactpersoon_naam,
|
||
v_prs_contactpersoon_tussenv,
|
||
v_prs_contactpersoon_voorletters,
|
||
v_prs_contactpersoon_voornaam,
|
||
v_prs_contactpersoon_telefoon_1,
|
||
v_prs_contactpersoon_telefoon_2,
|
||
v_prs_contactpersoon_email
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_key = v_prs_perslid_key;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon naam ongeldig';
|
||
v_prs_contactpersoon_naam := TRIM (v_prs_contactpersoon_naam);
|
||
IF v_prs_perslid_key IS NULL
|
||
THEN
|
||
IF v_prs_contactpersoon_naam IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
IF LENGTH (v_prs_contactpersoon_naam) > 30
|
||
THEN
|
||
v_prs_contactpersoon_naam := SUBSTR(v_prs_contactpersoon_naam, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon naam wordt afgebroken tot: ' || v_prs_contactpersoon_naam);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon tussenvoegsels ongeldig';
|
||
v_prs_contactpersoon_tussenv := TRIM (v_prs_contactpersoon_tussenv);
|
||
IF LENGTH (v_prs_contactpersoon_tussenv) > 30
|
||
THEN
|
||
v_prs_contactpersoon_tussenv := SUBSTR(v_prs_contactpersoon_tussenv, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon tussenvoegsels wordt afgebroken tot: ' || v_prs_contactpersoon_tussenv);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon voorletters ongeldig';
|
||
v_prs_contactpersoon_voorletters := TRIM (v_prs_contactpersoon_voorletters);
|
||
IF LENGTH (v_prs_contactpersoon_voorletters) > 10
|
||
THEN
|
||
v_prs_contactpersoon_voorletters := SUBSTR(v_prs_contactpersoon_voorletters, 1,10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon voorletters wordt afgebroken tot: ' || v_prs_contactpersoon_voorletters);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon voornaam ongeldig';
|
||
v_prs_contactpersoon_voornaam := TRIM (v_prs_contactpersoon_voornaam);
|
||
IF LENGTH (v_prs_contactpersoon_voornaam) > 30
|
||
THEN
|
||
v_prs_contactpersoon_voornaam := SUBSTR(v_prs_contactpersoon_voornaam, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon voornaam wordt afgebroken tot: ' || v_prs_contactpersoon_voornaam);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon aanhef ongeldig';
|
||
v_prs_contactpersoon_aanhef := TRIM (v_prs_contactpersoon_aanhef);
|
||
IF LENGTH (v_prs_contactpersoon_aanhef) > 30
|
||
THEN
|
||
v_prs_contactpersoon_aanhef := SUBSTR(v_prs_contactpersoon_aanhef, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon aanhef wordt afgebroken tot: ' || v_prs_contactpersoon_aanhef);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon titel ongeldig';
|
||
v_prs_contactpersoon_titel := TRIM (v_prs_contactpersoon_titel);
|
||
IF LENGTH (v_prs_contactpersoon_titel) > 10
|
||
THEN
|
||
v_prs_contactpersoon_titel := SUBSTR(v_prs_contactpersoon_titel, 1,10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon titel wordt afgebroken tot: ' || v_prs_contactpersoon_titel);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon telefoonnr ongeldig';
|
||
v_prs_contactpersoon_telefoon_1 := TRIM (v_prs_contactpersoon_telefoon_1);
|
||
IF LENGTH (v_prs_contactpersoon_telefoon_1) > 30
|
||
THEN
|
||
v_prs_contactpersoon_telefoon_1 := SUBSTR(v_prs_contactpersoon_telefoon_1, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon telefoonnr wordt afgebroken tot: ' || v_prs_contactpersoon_telefoon_1);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon mobiel ongeldig';
|
||
v_prs_contactpersoon_telefoon_2 := TRIM (v_prs_contactpersoon_telefoon_2);
|
||
IF LENGTH (v_prs_contactpersoon_telefoon_2) > 30
|
||
THEN
|
||
v_prs_contactpersoon_telefoon_2 := SUBSTR(v_prs_contactpersoon_telefoon_2, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon mobiel wordt afgebroken tot: ' || v_prs_contactpersoon_telefoon_2);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon email ongeldig';
|
||
v_prs_contactpersoon_email := TRIM (v_prs_contactpersoon_email);
|
||
IF LENGTH (v_prs_contactpersoon_email) > 200
|
||
THEN
|
||
v_prs_contactpersoon_email := SUBSTR(v_prs_contactpersoon_email, 1,200);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon email wordt afgebroken tot: ' || v_prs_contactpersoon_email);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon functie ongeldig';
|
||
v_prs_contactpersoon_functie := TRIM (v_prs_contactpersoon_functie);
|
||
IF LENGTH (v_prs_contactpersoon_functie) > 30
|
||
THEN
|
||
v_prs_contactpersoon_functie := SUBSTR(v_prs_contactpersoon_functie, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon functie wordt afgebroken tot: ' || v_prs_contactpersoon_functie);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon opmerking ongeldig';
|
||
v_prs_contactpersoon_opmerking := TRIM (v_prs_contactpersoon_opmerking);
|
||
IF LENGTH (v_prs_contactpersoon_opmerking) > 30
|
||
THEN
|
||
v_prs_contactpersoon_opmerking := SUBSTR(v_prs_contactpersoon_opmerking, 1,30);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errorhint, 'Contactpersoon opmerking wordt afgebroken tot: ' || v_prs_contactpersoon_opmerking);
|
||
END IF;
|
||
|
||
v_errorhint := 'Locatiecode ongeldig';
|
||
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
||
|
||
v_alg_locatie_key := NULL;
|
||
|
||
v_errorhint := 'Fout bij bepalen locatie';
|
||
IF v_alg_locatie_code IS NOT NULL
|
||
THEN
|
||
SELECT MIN(alg_locatie_key)
|
||
INTO v_alg_locatie_key
|
||
FROM alg_v_aanweziglocatie l
|
||
WHERE UPPER(alg_locatie_code) = UPPER(v_alg_locatie_code);
|
||
|
||
IF v_alg_locatie_key IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint := 'Fout bij wegschrijven importregel';
|
||
INSERT INTO fac_imp_contactpersoon (prs_contactpersoon_naam,
|
||
prs_contactpersoon_tussenv,
|
||
prs_contactpersoon_voorletters,
|
||
prs_contactpersoon_voornaam,
|
||
prs_contactpersoon_aanhef,
|
||
prs_contactpersoon_titel,
|
||
prs_contactpersoon_telefoon_1,
|
||
prs_contactpersoon_telefoon_2,
|
||
prs_contactpersoon_email,
|
||
prs_contactpersoon_functie,
|
||
prs_contactpersoon_opmerking,
|
||
prs_bedrijf_key,
|
||
prs_perslid_key,
|
||
alg_locatie_key,
|
||
fac_import_key
|
||
)
|
||
VALUES ( v_prs_contactpersoon_naam,
|
||
v_prs_contactpersoon_tussenv,
|
||
v_prs_contactpersoon_voorletters,
|
||
v_prs_contactpersoon_voornaam,
|
||
v_prs_contactpersoon_aanhef,
|
||
v_prs_contactpersoon_titel,
|
||
v_prs_contactpersoon_telefoon_1,
|
||
v_prs_contactpersoon_telefoon_2,
|
||
v_prs_contactpersoon_email,
|
||
v_prs_contactpersoon_functie,
|
||
v_prs_contactpersoon_opmerking,
|
||
v_prs_bedrijf_key,
|
||
v_prs_perslid_key,
|
||
v_alg_locatie_key,
|
||
p_import_key
|
||
);
|
||
|
||
COMMIT;
|
||
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,
|
||
v_errorhint);
|
||
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',
|
||
'Contactpersonen/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Objecten/aantal 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 contactpersonen afgebroken! regel:' || v_file_index);
|
||
END fac_import_contactpersoon;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_contactpersoon (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT DISTINCT prs_contactpersoon_naam,
|
||
prs_contactpersoon_tussenv,
|
||
prs_contactpersoon_voorletters,
|
||
prs_contactpersoon_voornaam,
|
||
prs_contactpersoon_aanhef,
|
||
prs_contactpersoon_titel,
|
||
prs_contactpersoon_telefoon_1,
|
||
prs_contactpersoon_telefoon_2,
|
||
prs_contactpersoon_email,
|
||
prs_contactpersoon_functie,
|
||
prs_contactpersoon_opmerking,
|
||
prs_bedrijf_key,
|
||
prs_perslid_key,
|
||
fac_import_key
|
||
FROM fac_imp_contactpersoon
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
CURSOR c_loc
|
||
IS
|
||
SELECT prs_contactpersoon_naam,
|
||
prs_contactpersoon_tussenv,
|
||
prs_contactpersoon_voorletters,
|
||
prs_contactpersoon_voornaam,
|
||
prs_perslid_key,
|
||
prs_bedrijf_key,
|
||
alg_locatie_key
|
||
FROM fac_imp_contactpersoon
|
||
WHERE fac_import_key = p_import_key
|
||
AND alg_locatie_key IS NOT NULL;
|
||
|
||
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_ongeldig NUMBER (1);
|
||
v_count_update NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
|
||
v_prs_contactpersoon_key NUMBER;
|
||
|
||
BEGIN
|
||
FOR rec in c
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec.prs_contactpersoon_naam || ' - ' || rec.prs_contactpersoon_tussenv || ' - ' || rec.prs_contactpersoon_voornaam || ' - ' || rec.prs_perslid_key;
|
||
v_errorhint := 'Fout bij wegschrijven contactpersoon';
|
||
INSERT INTO prs_contactpersoon (prs_contactpersoon_naam,
|
||
prs_contactpersoon_tussenv,
|
||
prs_contactpersoon_voorletters,
|
||
prs_contactpersoon_voornaam,
|
||
prs_contactpersoon_aanhef,
|
||
prs_contactpersoon_titel,
|
||
prs_contactpersoon_telefoon_1,
|
||
prs_contactpersoon_telefoon_2,
|
||
prs_contactpersoon_email,
|
||
prs_contactpersoon_functie,
|
||
prs_contactpersoon_opmerking,
|
||
prs_perslid_key,
|
||
prs_bedrijf_key)
|
||
VALUES (rec.prs_contactpersoon_naam,
|
||
rec.prs_contactpersoon_tussenv,
|
||
rec.prs_contactpersoon_voorletters,
|
||
rec.prs_contactpersoon_voornaam,
|
||
rec.prs_contactpersoon_aanhef,
|
||
rec.prs_contactpersoon_titel,
|
||
rec.prs_contactpersoon_telefoon_1,
|
||
rec.prs_contactpersoon_telefoon_2,
|
||
rec.prs_contactpersoon_email,
|
||
rec.prs_contactpersoon_functie,
|
||
rec.prs_contactpersoon_opmerking,
|
||
rec.prs_perslid_key,
|
||
rec.prs_bedrijf_key);
|
||
|
||
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',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec1 IN c_loc
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := rec1.prs_contactpersoon_naam || ' - ' || rec1.prs_contactpersoon_tussenv || ' - ' || rec1.prs_contactpersoon_voornaam || ' - ' || rec1.prs_perslid_key || ' - ' || rec1.alg_locatie_key;
|
||
v_errorhint := 'Fout bij opzoeken contactpersoon';
|
||
v_prs_contactpersoon_key := NULL;
|
||
-- zoek de contactpersoon
|
||
SELECT prs_contactpersoon_key
|
||
INTO v_prs_contactpersoon_key
|
||
FROM prs_contactpersoon c
|
||
WHERE c.prs_bedrijf_key = rec1.prs_bedrijf_key
|
||
AND ( c.prs_perslid_key = rec1.prs_perslid_key
|
||
OR ( c.prs_contactpersoon_naam = rec1.prs_contactpersoon_naam
|
||
AND c.prs_contactpersoon_tussenv = rec1.prs_contactpersoon_tussenv
|
||
AND c.prs_contactpersoon_voorletters = rec1.prs_contactpersoon_voorletters
|
||
AND c.prs_contactpersoon_voornaam = rec1.prs_contactpersoon_voornaam
|
||
)
|
||
);
|
||
|
||
v_errorhint := 'Fout bij toevoegen locatie';
|
||
INSERT INTO prs_contactpersoon_locatie (prs_contactpersoon_key, alg_locatie_key)
|
||
VALUES (v_prs_contactpersoon_key, rec1.alg_locatie_key);
|
||
|
||
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',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
END;
|
||
END LOOP;
|
||
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',
|
||
v_aanduiding || v_errormsg,
|
||
'Importproces meldingen afgebroken!'
|
||
);
|
||
END fac_update_contactpersoon;
|
||
/
|
||
|
||
--//////////////////////////////////////////////////MLD IMPORT STUFF///////////////////////////////////////////
|
||
CREATE OR REPLACE PROCEDURE fac_import_mld (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline VARCHAR2(2000); -- 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(1000);
|
||
-- De importvelden:
|
||
v_srtdiscipline_omschrijving VARCHAR2(255); -- C30
|
||
v_srtdiscipline_prefix VARCHAR2(255); -- C3
|
||
v_srtdiscipline_alg VARCHAR2(255); -- N1
|
||
v_srtdiscipline_ins VARCHAR2(255); -- N1
|
||
v_srtdiscipline_bes VARCHAR2(255); -- N1
|
||
v_discipline_omschrijving VARCHAR2(255); -- C60
|
||
v_stdmelding_omschrijving VARCHAR2(255); -- C30
|
||
v_stdmelding_groep VARCHAR2(255); -- C30
|
||
v_stdmelding_kostensoort VARCHAR2(255); -- C60
|
||
v_stdmelding_accepttijd VARCHAR2(255); -- N12,5
|
||
v_stdmelding_accepttijd1 VARCHAR2(255); -- N12,5
|
||
v_stdmelding_accepttijd2 VARCHAR2(255); -- N12,5
|
||
v_stdmelding_accepttijd4 VARCHAR2(255); -- N12,5
|
||
v_stdmelding_uitvoertijd VARCHAR2(255); -- N12,5
|
||
v_stdmelding_uitvoertijd1 VARCHAR2(255); -- N12,5
|
||
v_stdmelding_uitvoertijd2 VARCHAR2(255); -- N12,5
|
||
v_stdmelding_uitvoertijd4 VARCHAR2(255); -- N12,5
|
||
v_discipline_directklaar VARCHAR2(255); -- N1
|
||
v_dienst VARCHAR2(255);
|
||
v_stdmelding_notfrontend VARCHAR2(255); -- N1
|
||
v_onrgoed_niveau VARCHAR2(255); -- C1
|
||
v_typeopdr_omschrijving VARCHAR2(255); -- C30
|
||
v_stdmelding_hint VARCHAR2(1000); -- C1000
|
||
v_stdmelding_kopieerbaar VARCHAR2(255); -- N1
|
||
v_stdmelding_afmeldtext VARCHAR2(255); -- N1
|
||
v_stdmelding_doublecheck VARCHAR2(255); -- N4
|
||
v_stdmelding_slabewaken VARCHAR2(255); -- N1
|
||
v_stdmelding_maxobjecten VARCHAR2(255); -- N1
|
||
v_discipline_image VARCHAR2(255); -- C255
|
||
v_stdmelding_image VARCHAR2(255); -- C255
|
||
-- Gebruikt voor numeriek-validatie en conversie
|
||
v_stdmelding_accepttijd_n mld_stdmelding.mld_stdmelding_t_accepttijd.tijdsduur%TYPE;
|
||
v_stdmelding_accepttijd1_n mld_stdmelding.mld_stdmelding_t_accept_pr1.tijdsduur%TYPE;
|
||
v_stdmelding_accepttijd2_n mld_stdmelding.mld_stdmelding_t_accept_pr2.tijdsduur%TYPE;
|
||
v_stdmelding_accepttijd4_n mld_stdmelding.mld_stdmelding_t_accept_pr4.tijdsduur%TYPE;
|
||
v_stdmelding_uitvoertijd_n mld_stdmelding.mld_stdmelding_t_uitvoertijd.tijdsduur%TYPE;
|
||
v_stdmelding_uitvoertijd1_n mld_stdmelding.mld_stdmelding_t_uitvtijd_pr1.tijdsduur%TYPE;
|
||
v_stdmelding_uitvoertijd2_n mld_stdmelding.mld_stdmelding_t_uitvtijd_pr2.tijdsduur%TYPE;
|
||
v_stdmelding_uitvoertijd4_n mld_stdmelding.mld_stdmelding_t_uitvtijd_pr4.tijdsduur%TYPE;
|
||
-- Overige velden (alleen gebruikt voor numeriek-validatie)
|
||
v_typeopdr_key mld_stdmelding.mld_typeopdr_key%TYPE;
|
||
--
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_mld;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
COMMIT;
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline_prefix);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline_alg);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline_ins);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline_bes);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_groep);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_kostensoort);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_accepttijd);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_accepttijd1);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_accepttijd2);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_accepttijd4);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_uitvoertijd);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_uitvoertijd1);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_uitvoertijd2);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_uitvoertijd4);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_discipline_directklaar);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_dienst);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_notfrontend); -- N1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_onrgoed_niveau); -- C1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_typeopdr_omschrijving); -- C30
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_hint); -- C1000
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_kopieerbaar); -- N1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_afmeldtext); -- N1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_doublecheck); -- N4
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_slabewaken); -- N1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_maxobjecten); -- N1
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_discipline_image);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_stdmelding_image);
|
||
--
|
||
-- Spaties ervoor en erachter verwijderen.
|
||
v_srtdiscipline_omschrijving := TRIM(v_srtdiscipline_omschrijving);
|
||
v_srtdiscipline_prefix := TRIM(v_srtdiscipline_prefix);
|
||
v_srtdiscipline_alg := TRIM(v_srtdiscipline_alg);
|
||
v_srtdiscipline_ins := TRIM(v_srtdiscipline_ins);
|
||
v_srtdiscipline_bes := TRIM(v_srtdiscipline_bes);
|
||
v_discipline_omschrijving := TRIM(v_discipline_omschrijving);
|
||
v_stdmelding_omschrijving := TRIM(v_stdmelding_omschrijving);
|
||
v_stdmelding_groep := TRIM(v_stdmelding_groep);
|
||
v_stdmelding_kostensoort := TRIM(v_stdmelding_kostensoort);
|
||
v_stdmelding_accepttijd := TRIM(v_stdmelding_accepttijd);
|
||
v_stdmelding_accepttijd1 := TRIM(v_stdmelding_accepttijd1);
|
||
v_stdmelding_accepttijd2 := TRIM(v_stdmelding_accepttijd2);
|
||
v_stdmelding_accepttijd4 := TRIM(v_stdmelding_accepttijd4);
|
||
v_stdmelding_uitvoertijd := TRIM(v_stdmelding_uitvoertijd);
|
||
v_stdmelding_uitvoertijd1 := TRIM(v_stdmelding_uitvoertijd1);
|
||
v_stdmelding_uitvoertijd2 := TRIM(v_stdmelding_uitvoertijd2);
|
||
v_stdmelding_uitvoertijd4 := TRIM(v_stdmelding_uitvoertijd4);
|
||
v_discipline_directklaar := TRIM(v_discipline_directklaar);
|
||
v_dienst := TRIM(v_dienst);
|
||
v_stdmelding_notfrontend := TRIM(v_stdmelding_notfrontend);
|
||
v_onrgoed_niveau := TRIM(v_onrgoed_niveau);
|
||
v_typeopdr_omschrijving := TRIM(v_typeopdr_omschrijving);
|
||
v_stdmelding_hint := TRIM(v_stdmelding_hint);
|
||
v_stdmelding_kopieerbaar := TRIM(v_stdmelding_kopieerbaar);
|
||
v_stdmelding_afmeldtext := TRIM(v_stdmelding_afmeldtext);
|
||
v_stdmelding_doublecheck := TRIM(v_stdmelding_doublecheck);
|
||
v_stdmelding_slabewaken := TRIM(v_stdmelding_slabewaken);
|
||
v_stdmelding_maxobjecten := TRIM(v_stdmelding_maxobjecten);
|
||
v_discipline_image := TRIM(v_discipline_image);
|
||
v_stdmelding_image := TRIM(v_stdmelding_image);
|
||
--
|
||
v_aanduiding := '|'
|
||
|| v_srtdiscipline_omschrijving || '|'
|
||
|| v_srtdiscipline_prefix || '|'
|
||
|| v_srtdiscipline_alg || '|'
|
||
|| v_srtdiscipline_ins || '|'
|
||
|| v_srtdiscipline_bes || '|'
|
||
|| v_discipline_omschrijving || '|'
|
||
|| v_stdmelding_omschrijving || '|'
|
||
|| v_stdmelding_groep || '|'
|
||
|| v_stdmelding_kostensoort || '|'
|
||
|| v_stdmelding_accepttijd || '|'
|
||
|| v_stdmelding_accepttijd1 || '|'
|
||
|| v_stdmelding_accepttijd2 || '|'
|
||
|| v_stdmelding_accepttijd4 || '|'
|
||
|| v_stdmelding_uitvoertijd || '|'
|
||
|| v_stdmelding_uitvoertijd1 || '|'
|
||
|| v_stdmelding_uitvoertijd2 || '|'
|
||
|| v_stdmelding_uitvoertijd4 || '|'
|
||
|| v_discipline_directklaar || '|'
|
||
|| v_dienst || '|'
|
||
|| v_stdmelding_notfrontend || '|'
|
||
|| v_onrgoed_niveau || '|'
|
||
|| v_typeopdr_omschrijving || '|'
|
||
|| v_stdmelding_hint || '|'
|
||
|| v_stdmelding_kopieerbaar || '|'
|
||
|| v_stdmelding_afmeldtext || '|'
|
||
|| v_stdmelding_doublecheck || '|'
|
||
|| v_stdmelding_slabewaken || '|'
|
||
|| v_stdmelding_maxobjecten || '|'
|
||
|| v_discipline_image || '|'
|
||
|| v_stdmelding_image;
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer alleen de verplichte kolommen, ik zou ze ook
|
||
-- allemaal kunnen doen..
|
||
-- Ik negeer alles totdat ik een geldige header gepasseerd ben
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF fac_check_import_header(v_srtdiscipline_omschrijving, 'VAKGROEPTYPE')
|
||
AND fac_check_import_header(v_discipline_omschrijving, 'VAKGROEP')
|
||
AND fac_check_import_header(v_stdmelding_omschrijving, 'STANDAARDMELDING')
|
||
AND fac_check_import_header(v_stdmelding_uitvoertijd4, 'UITVOERTIJD LAAG')
|
||
AND fac_check_import_header(v_stdmelding_slabewaken, 'SLA BEWAKEN')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarde
|
||
IF LENGTH (v_srtdiscipline_omschrijving) > 30
|
||
THEN
|
||
v_srtdiscipline_omschrijving := SUBSTR (TRIM (v_srtdiscipline_omschrijving), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Vakgroeptype wordt afgebroken tot [' || v_srtdiscipline_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_srtdiscipline_prefix) > 3
|
||
THEN
|
||
v_srtdiscipline_prefix := SUBSTR (v_srtdiscipline_prefix, 1, 3);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Prefix wordt afgebroken tot [' || v_srtdiscipline_prefix || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_srtdiscipline_alg), 1, '1', '0') INTO v_srtdiscipline_alg FROM DUAL;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_srtdiscipline_ins), 1, '1', '0') INTO v_srtdiscipline_ins FROM DUAL;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_srtdiscipline_bes), 1, '1', '0') INTO v_srtdiscipline_bes FROM DUAL;
|
||
--
|
||
v_discipline_omschrijving := TRIM (v_discipline_omschrijving);
|
||
IF LENGTH (v_discipline_omschrijving) > 60
|
||
THEN
|
||
v_discipline_omschrijving := SUBSTR (v_discipline_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Vakgroep wordt afgebroken tot [' || v_discipline_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_stdmelding_omschrijving) > 60
|
||
THEN
|
||
v_stdmelding_omschrijving := SUBSTR (v_stdmelding_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Standaardmelding wordt afgebroken tot [' || v_stdmelding_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_stdmelding_kostensoort) > 60
|
||
THEN
|
||
v_stdmelding_kostensoort := SUBSTR (v_stdmelding_kostensoort, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Melding herkenningstekst wordt afgebroken tot [' || v_stdmelding_kostensoort || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
BEGIN
|
||
v_stdmelding_accepttijd_n := fac.safe_to_number (v_stdmelding_accepttijd);
|
||
v_stdmelding_accepttijd1_n := fac.safe_to_number (v_stdmelding_accepttijd1);
|
||
v_stdmelding_accepttijd2_n := fac.safe_to_number (v_stdmelding_accepttijd2);
|
||
v_stdmelding_accepttijd4_n := fac.safe_to_number (v_stdmelding_accepttijd4);
|
||
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,
|
||
'W',
|
||
v_aanduiding,
|
||
'Importregel kan niet worden ingelezen. Ongeldige acceptatietijd ['
|
||
|| v_stdmelding_accepttijd || '/'
|
||
|| v_stdmelding_accepttijd1 || '/'
|
||
|| v_stdmelding_accepttijd2 || '/'
|
||
|| v_stdmelding_accepttijd4 || ']'
|
||
);
|
||
END;
|
||
--
|
||
BEGIN
|
||
v_stdmelding_uitvoertijd_n := fac.safe_to_number (v_stdmelding_uitvoertijd);
|
||
v_stdmelding_uitvoertijd1_n := fac.safe_to_number (v_stdmelding_uitvoertijd1);
|
||
v_stdmelding_uitvoertijd2_n := fac.safe_to_number (v_stdmelding_uitvoertijd2);
|
||
v_stdmelding_uitvoertijd4_n := fac.safe_to_number (v_stdmelding_uitvoertijd4);
|
||
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,
|
||
'W',
|
||
v_aanduiding,
|
||
'Importregel kan niet worden ingelezen. Ongeldige uitvoertijd(en) ['
|
||
|| v_stdmelding_uitvoertijd || '/'
|
||
|| v_stdmelding_uitvoertijd1 || '/'
|
||
|| v_stdmelding_uitvoertijd2 || '/'
|
||
|| v_stdmelding_uitvoertijd4 || ']'
|
||
);
|
||
END;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_discipline_directklaar), 1, '1', '0')
|
||
INTO v_discipline_directklaar
|
||
FROM DUAL;
|
||
--
|
||
v_dienst := SUBSTR (v_dienst, 1, 60);
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_stdmelding_notfrontend), 1, '1', '0') INTO v_stdmelding_notfrontend FROM DUAL;
|
||
--
|
||
IF v_onrgoed_niveau IS NULL THEN
|
||
v_onrgoed_niveau := 'L';
|
||
END IF;
|
||
IF v_onrgoed_niveau NOT IN ('H', 'L', 'G', 'V', 'R') THEN
|
||
v_onrgoed_niveau := 'L';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Importregel kan niet worden ingelezen. Ongeldig onrgoedniveau [' || v_onrgoed_niveau || ']'
|
||
);
|
||
END IF;
|
||
IF v_typeopdr_omschrijving IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr
|
||
WHERE mld_typeopdr_upper = UPPER(v_typeopdr_omschrijving);
|
||
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,
|
||
'W',
|
||
v_aanduiding,
|
||
'Importregel kan niet worden ingelezen. Ongeldige opdrachttype ['
|
||
|| v_typeopdr_omschrijving
|
||
|| ']'
|
||
);
|
||
END;
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_stdmelding_hint) > 1000
|
||
THEN
|
||
v_stdmelding_hint := SUBSTR (v_stdmelding_hint, 1, 1000);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Standaardmelding hint wordt afgebroken op 1000 tekens'
|
||
);
|
||
END IF;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_stdmelding_kopieerbaar), 1, '1', '0') INTO v_stdmelding_kopieerbaar FROM DUAL;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_stdmelding_afmeldtext), 1, '2', '1') INTO v_stdmelding_afmeldtext FROM DUAL; -- waarden: [1,2]
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_stdmelding_slabewaken), 1, '1', '0') INTO v_stdmelding_slabewaken FROM DUAL;
|
||
--
|
||
SELECT DECODE (fac.safe_to_number (v_stdmelding_maxobjecten), 0, '0', 1, '1', '2') INTO v_stdmelding_maxobjecten FROM DUAL;
|
||
--
|
||
IF UPPER(v_stdmelding_doublecheck) NOT IN ('N', 'I', 'A', 'B') THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Importregel kan niet worden ingelezen. Ongeldig doublecheck waarde [' || v_stdmelding_doublecheck || ']'
|
||
);
|
||
ELSE
|
||
SELECT DECODE (UPPER(v_stdmelding_doublecheck), 'I', '1', 'A', '2', 'B', '3', '0') INTO v_stdmelding_doublecheck FROM DUAL; -- waarden: [0,1,2,3]
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_discipline_image) > 255
|
||
THEN
|
||
v_discipline_image := SUBSTR (v_discipline_image, 1, 255);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Discipline image wordt afgebroken tot [' || v_discipline_image || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
IF LENGTH (v_stdmelding_image) > 255
|
||
THEN
|
||
v_stdmelding_image := SUBSTR (v_stdmelding_image, 1, 255);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Standaardmelding image wordt afgebroken tot [' || v_stdmelding_image || ']'
|
||
);
|
||
END IF;
|
||
--
|
||
-- Insert geformatteerde import record
|
||
-- We hebben hier vooralsnog de oude uitvoertijden, zonder type
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO fac_imp_mld (
|
||
ins_srtdiscipline_omschrijving,
|
||
ins_srtdiscipline_prefix,
|
||
ins_srtdiscipline_alg,
|
||
ins_srtdiscipline_ins,
|
||
ins_srtdiscipline_bes,
|
||
ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
mld_stdmelding_groep,
|
||
mld_stdmelding_kostensoort,
|
||
mld_stdmelding_accepttijd,
|
||
mld_stdmelding_accepttijd1,
|
||
mld_stdmelding_accepttijd2,
|
||
mld_stdmelding_accepttijd4,
|
||
mld_stdmelding_uitvoertijd,
|
||
mld_stdmelding_uitvoertijd1,
|
||
mld_stdmelding_uitvoertijd2,
|
||
mld_stdmelding_uitvoertijd4,
|
||
mld_discipline_directklaar,
|
||
prs_dienst,
|
||
mld_stdmelding_notfrontend,
|
||
alg_onrgoed_niveau,
|
||
mld_typeopdr_omschrijving,
|
||
mld_stdmelding_hint,
|
||
mld_stdmelding_afmeldtext,
|
||
mld_stdmelding_kopieerbaar,
|
||
mld_stdmelding_slabewaken,
|
||
mld_stdmelding_doublecheck,
|
||
mld_stdmelding_objects_allowed,
|
||
ins_discipline_image,
|
||
mld_stdmelding_image
|
||
)
|
||
VALUES (
|
||
v_srtdiscipline_omschrijving,
|
||
v_srtdiscipline_prefix,
|
||
v_srtdiscipline_alg,
|
||
v_srtdiscipline_ins,
|
||
v_srtdiscipline_bes,
|
||
v_discipline_omschrijving,
|
||
v_stdmelding_omschrijving,
|
||
v_stdmelding_groep,
|
||
v_stdmelding_kostensoort,
|
||
v_stdmelding_accepttijd_n,
|
||
v_stdmelding_accepttijd1_n,
|
||
v_stdmelding_accepttijd2_n,
|
||
v_stdmelding_accepttijd4_n,
|
||
v_stdmelding_uitvoertijd_n,
|
||
v_stdmelding_uitvoertijd1_n,
|
||
v_stdmelding_uitvoertijd2_n,
|
||
v_stdmelding_uitvoertijd4_n,
|
||
v_discipline_directklaar,
|
||
v_dienst,
|
||
v_stdmelding_notfrontend,
|
||
v_onrgoed_niveau,
|
||
v_typeopdr_omschrijving,
|
||
v_stdmelding_hint,
|
||
v_stdmelding_afmeldtext,
|
||
v_stdmelding_kopieerbaar,
|
||
v_stdmelding_slabewaken,
|
||
v_stdmelding_doublecheck,
|
||
v_stdmelding_maxobjecten,
|
||
v_discipline_image,
|
||
v_stdmelding_image
|
||
);
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_MLD. ' || v_errormsg
|
||
);
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... ');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal 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, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces meldingen afgebroken!');
|
||
END fac_import_mld;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_mld (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_ongeldig NUMBER (1);
|
||
v_count_update NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_srtdiscipline (p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT MAX (ins_srtdiscipline_omschrijving) ins_srtdiscipline_omschrijving,
|
||
UPPER (ins_srtdiscipline_omschrijving) ins_srtdiscipline_upper,
|
||
MAX (ins_srtdiscipline_prefix) ins_srtdiscipline_prefix,
|
||
MAX (ins_srtdiscipline_alg) ins_srtdiscipline_alg,
|
||
MAX (ins_srtdiscipline_ins) ins_srtdiscipline_ins,
|
||
MAX (ins_srtdiscipline_bes) ins_srtdiscipline_bes
|
||
FROM fac_imp_mld
|
||
WHERE UPPER (ins_srtdiscipline_omschrijving) IS NOT NULL
|
||
GROUP BY UPPER (ins_srtdiscipline_omschrijving)
|
||
ORDER BY 1;
|
||
|
||
teller INTEGER;
|
||
const_max_inserts INTEGER := 100;
|
||
ccount NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_var VARCHAR2 (100);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
teller := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM ins_srtdiscipline
|
||
WHERE ins_srtdiscipline_verwijder IS NULL
|
||
AND UPPER (TRIM (ins_srtdiscipline_omschrijving)) =
|
||
TRIM (rec.ins_srtdiscipline_upper);
|
||
|
||
IF (ccount = 0)
|
||
THEN
|
||
INSERT INTO ins_srtdiscipline
|
||
(ins_srtdiscipline_module,
|
||
ins_srtdiscipline_omschrijving,
|
||
ins_srtdiscipline_prefix,
|
||
ins_srtdiscipline_alg,
|
||
ins_srtdiscipline_ins,
|
||
ins_srtdiscipline_bes
|
||
)
|
||
VALUES ('MLD',
|
||
rec.ins_srtdiscipline_omschrijving,
|
||
rec.ins_srtdiscipline_prefix,
|
||
fac.safe_to_number (rec.ins_srtdiscipline_alg),
|
||
fac.safe_to_number (rec.ins_srtdiscipline_ins),
|
||
fac.safe_to_number (rec.ins_srtdiscipline_bes)
|
||
);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
'Vakgroeptype ['
|
||
|| rec.ins_srtdiscipline_omschrijving
|
||
|| ']',
|
||
'Kan vakgroeptype niet wegschrijven (module = MLD)'
|
||
|| ' '
|
||
|| 'Oracle fout: '
|
||
|| oracle_err_var
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal vakgroeptyperegels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal vakgroeptyperegels toegevoegd: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_discipline (p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT MAX (ins_srtdiscipline_omschrijving) ins_srtdiscipline_omschrijving,
|
||
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
||
MAX (mld_discipline_directklaar) mld_discipline_directklaar,
|
||
MAX (ins_discipline_image) ins_discipline_image,
|
||
UPPER (ins_srtdiscipline_omschrijving) ins_srtdiscipline_upper,
|
||
UPPER (ins_discipline_omschrijving) ins_discipline_upper
|
||
FROM fac_imp_mld
|
||
GROUP BY UPPER (ins_srtdiscipline_omschrijving),
|
||
UPPER (ins_discipline_omschrijving)
|
||
ORDER BY 1, 2;
|
||
|
||
teller INTEGER;
|
||
const_max_inserts INTEGER := 100;
|
||
v_errmes VARCHAR2 (1024);
|
||
srtdiscipline_key NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_var VARCHAR2 (100);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
teller := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errmes := 'Bepalen of de srtdiscipline';
|
||
|
||
IF (rec.ins_srtdiscipline_omschrijving IS NOT NULL)
|
||
THEN
|
||
SELECT ins_srtdiscipline_key
|
||
INTO srtdiscipline_key
|
||
FROM ins_srtdiscipline sd
|
||
WHERE sd.ins_srtdiscipline_verwijder IS NULL
|
||
AND UPPER (TRIM (sd.ins_srtdiscipline_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdiscipline_omschrijving));
|
||
ELSE
|
||
SELECT TO_NUMBER (NULL)
|
||
INTO srtdiscipline_key
|
||
FROM DUAL;
|
||
END IF;
|
||
|
||
v_errmes := 'Bepalen of de discipline bestaat';
|
||
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM ins_tab_discipline d
|
||
WHERE d.ins_discipline_verwijder IS NULL
|
||
AND d.ins_discipline_module = 'MLD'
|
||
AND UPPER (TRIM (d.ins_discipline_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_discipline_omschrijving))
|
||
AND d.ins_srtdiscipline_key = srtdiscipline_key;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
SELECT ins_srtdiscipline_key
|
||
INTO srtdiscipline_key
|
||
FROM ins_srtdiscipline sd
|
||
WHERE sd.ins_srtdiscipline_verwijder IS NULL
|
||
AND sd.ins_srtdiscipline_module = 'MLD'
|
||
AND UPPER (TRIM (sd.ins_srtdiscipline_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdiscipline_omschrijving));
|
||
|
||
SELECT ins_s_ins_discipline_key.NEXTVAL
|
||
INTO v_discipline_key
|
||
FROM DUAL;
|
||
|
||
INSERT INTO ins_tab_discipline
|
||
(ins_discipline_module,
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_min_level, ins_srtdiscipline_key,
|
||
ins_discipline_image
|
||
)
|
||
VALUES ('MLD',
|
||
SUBSTR (rec.ins_discipline_omschrijving, 1, 60),
|
||
1, srtdiscipline_key,
|
||
rec.ins_discipline_image
|
||
) RETURNING ins_discipline_key INTO v_discipline_key;
|
||
|
||
INSERT INTO mld_disc_params
|
||
(mld_ins_discipline_key,
|
||
mld_disc_params_factuurappr,
|
||
mld_disc_params_noti_dagen,
|
||
mld_disc_params_notify,
|
||
mld_disc_params_opdr_kosten,
|
||
mld_disc_params_directklaar
|
||
)
|
||
VALUES (v_discipline_key,
|
||
0,
|
||
NULL,
|
||
0,
|
||
0,
|
||
rec.mld_discipline_directklaar
|
||
);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Vakgroep ['
|
||
|| rec.ins_srtdiscipline_omschrijving
|
||
|| ']',
|
||
'Kan vakgroep niet wegschrijven'
|
||
|| ' '
|
||
|| 'Oracle error: '
|
||
|| oracle_err_var
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal vakgroepregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal vakgroepregels toegevoegd: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_stdmeldinggroep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT mld_stdmelding_groep
|
||
FROM fac_imp_mld
|
||
WHERE mld_stdmelding_groep IS NOT NULL
|
||
ORDER BY 1;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || rec.mld_stdmelding_groep || '] ';
|
||
|
||
v_errorhint := 'Fout bij bepalen meldinggroep';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_stdmeldinggroep
|
||
WHERE UPPER (mld_stdmeldinggroep_naam) =
|
||
UPPER (rec.mld_stdmelding_groep);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen meldinggroep';
|
||
|
||
INSERT INTO mld_stdmeldinggroep (mld_stdmeldinggroep_naam)
|
||
VALUES (rec.mld_stdmelding_groep);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| 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',
|
||
'Servicedesk: aantal meldinggroepen: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal meldinggroepen toegevoegd: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_kostensoort (p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT MAX (mld_stdmelding_kostensoort) prs_kostensoort_oms,
|
||
UPPER (mld_stdmelding_kostensoort) prs_kostensoort_upper
|
||
FROM fac_imp_mld
|
||
WHERE mld_stdmelding_kostensoort IS NOT NULL
|
||
GROUP BY UPPER (mld_stdmelding_kostensoort)
|
||
ORDER BY 1;
|
||
|
||
teller INTEGER;
|
||
const_max_inserts INTEGER := 100;
|
||
v_errmes VARCHAR2 (1024);
|
||
srtdiscipline_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_var VARCHAR2 (100);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
teller := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errmes := 'Bepalen of de kostensoort bestaat';
|
||
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = rec.prs_kostensoort_upper
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errmes := 'Toevoegen kostensoort';
|
||
|
||
INSERT INTO prs_kostensoort
|
||
(prs_kostensoort_oms, prs_kostensoort_opmerking
|
||
)
|
||
VALUES (rec.prs_kostensoort_oms, ''
|
||
);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
'Vakgroep [' || rec.prs_kostensoort_oms || ']',
|
||
'Kan PRS_KOSTENSOORT niet wegschrijven (module = MLD)'
|
||
|| ' '
|
||
|| 'Oracle fout: '
|
||
|| oracle_err_var
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal kostensoortregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal kostensoortregels toegevoegd:'
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_dienst (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT prs_dienst
|
||
FROM fac_imp_mld
|
||
WHERE prs_dienst IS NOT NULL
|
||
ORDER BY 1;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || rec.prs_dienst || '] ';
|
||
|
||
v_errorhint := 'Fout bij bepalen dienst';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_dienst
|
||
WHERE UPPER (prs_dienst_omschrijving) =
|
||
UPPER (rec.prs_dienst);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen dienst';
|
||
|
||
INSERT INTO prs_dienst (prs_dienst_omschrijving)
|
||
VALUES (rec.prs_dienst);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_typeopdr (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT mld_typeopdr_omschrijving
|
||
FROM fac_imp_mld
|
||
WHERE mld_typeopdr_omschrijving IS NOT NULL
|
||
ORDER BY 1;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || rec.mld_typeopdr_omschrijving || '] ';
|
||
|
||
v_errorhint := 'Fout bij bepalen opdrachttype';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_typeopdr
|
||
WHERE mld_typeopdr_upper = UPPER (rec.mld_typeopdr_omschrijving);
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen opdrachttype';
|
||
|
||
INSERT INTO mld_typeopdr (mld_typeopdr_omschrijving)
|
||
VALUES (rec.mld_typeopdr_omschrijving);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_stdmelding (p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_mld sm
|
||
ORDER BY ins_srtdiscipline_omschrijving
|
||
, ins_discipline_omschrijving
|
||
, mld_stdmelding_omschrijving;
|
||
|
||
teller INTEGER;
|
||
discipline_key NUMBER (10);
|
||
srtdiscipline_key NUMBER (10);
|
||
kostensoort_key NUMBER (10);
|
||
dienst_key NUMBER (10);
|
||
stdmeldinggroep_key NUMBER (10);
|
||
typeopdr_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_errmes VARCHAR2 (1024);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_var VARCHAR2 (100);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
teller := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
IF (rec.ins_srtdiscipline_omschrijving IS NOT NULL)
|
||
THEN
|
||
v_errmes := 'Bepalen srtdiscipline_key';
|
||
|
||
SELECT ins_srtdiscipline_key
|
||
INTO srtdiscipline_key
|
||
FROM ins_srtdiscipline sd
|
||
WHERE sd.ins_srtdiscipline_module = 'MLD'
|
||
AND UPPER (sd.ins_srtdiscipline_omschrijving) =
|
||
UPPER (TRIM (rec.ins_srtdiscipline_omschrijving))
|
||
AND sd.ins_srtdiscipline_verwijder IS NULL;
|
||
ELSE
|
||
srtdiscipline_key := TO_NUMBER (NULL);
|
||
END IF;
|
||
|
||
v_errmes := 'Bepalen discipline_key';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO discipline_key
|
||
FROM ins_tab_discipline d
|
||
WHERE TRIM (UPPER (d.ins_discipline_omschrijving)) =
|
||
TRIM (UPPER (rec.ins_discipline_omschrijving))
|
||
AND d.ins_discipline_module = 'MLD'
|
||
AND d.ins_srtdiscipline_key = srtdiscipline_key
|
||
AND d.ins_discipline_verwijder IS NULL;
|
||
|
||
v_errmes := 'Kijken mld_stdmelding bestaat';
|
||
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM mld_stdmelding
|
||
WHERE mld_ins_discipline_key = discipline_key
|
||
AND mld_stdmelding_verwijder IS NULL
|
||
AND TRIM (UPPER (mld_stdmelding_omschrijving)) =
|
||
TRIM (UPPER (rec.mld_stdmelding_omschrijving));
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errmes := 'Bepalen of de kostensoort bestaat';
|
||
|
||
SELECT COUNT (*),
|
||
NVL (MAX (prs_kostensoort_key), TO_NUMBER (NULL))
|
||
INTO ccount,
|
||
kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = rec.mld_stdmelding_kostensoort
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
|
||
v_errmes := 'Bepalen of de dienst bestaat';
|
||
dienst_key := NULL;
|
||
IF rec.prs_dienst IS NOT NULL
|
||
THEN
|
||
SELECT prs_dienst_key
|
||
INTO dienst_key
|
||
FROM prs_dienst
|
||
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst);
|
||
END IF;
|
||
|
||
v_errmes := 'Bepalen stdmeldinggroep_key';
|
||
stdmeldinggroep_key := NULL;
|
||
IF rec.mld_stdmelding_groep IS NOT NULL
|
||
THEN
|
||
SELECT mld_stdmeldinggroep_key
|
||
INTO stdmeldinggroep_key
|
||
FROM mld_stdmeldinggroep
|
||
WHERE TRIM (UPPER (mld_stdmeldinggroep_naam)) =
|
||
TRIM (UPPER (rec.mld_stdmelding_groep));
|
||
END IF;
|
||
|
||
v_errmes := 'Bepalen typeopdr_key';
|
||
typeopdr_key := NULL;
|
||
IF rec.mld_typeopdr_omschrijving IS NOT NULL
|
||
THEN
|
||
SELECT mld_typeopdr_key
|
||
INTO typeopdr_key
|
||
FROM mld_typeopdr
|
||
WHERE TRIM (mld_typeopdr_upper) = TRIM (UPPER (rec.mld_typeopdr_omschrijving));
|
||
END IF;
|
||
|
||
v_errmes := 'Toevoegen mld_stdmelding';
|
||
v_errmes := ' (discipline_key = ' || TO_CHAR (discipline_key)
|
||
|| '| rec.mld_stdmelding_omschrijving = ' || rec.mld_stdmelding_omschrijving
|
||
|| '| KOSTENSOORT_KEY' || TO_CHAR (kostensoort_key)
|
||
|| 'NVL (TO_NUMBER (rec.mld_stdmelding_accepttijd), NULL) = ' || TO_CHAR (NVL (TO_NUMBER (rec.mld_stdmelding_accepttijd), 0))
|
||
|| 'NVL (rec.mld_stdmelding_uitvoertijd, 0) = ' || TO_CHAR (NVL (rec.mld_stdmelding_uitvoertijd, 0))
|
||
|| ')';
|
||
|
||
INSERT INTO mld_stdmelding
|
||
(mld_ins_discipline_key,
|
||
mld_stdmelding_omschrijving,
|
||
mld_stdmeldinggroep_key,
|
||
prs_kostensoort_key,
|
||
mld_stdmelding_t_accepttijd,
|
||
mld_stdmelding_t_accept_pr1,
|
||
mld_stdmelding_t_accept_pr2,
|
||
mld_stdmelding_t_accept_pr4,
|
||
mld_stdmelding_t_uitvoertijd,
|
||
mld_stdmelding_t_uitvtijd_pr1,
|
||
mld_stdmelding_t_uitvtijd_pr2,
|
||
mld_stdmelding_t_uitvtijd_pr4,
|
||
prs_dienst_key,
|
||
mld_stdmelding_notfrontend,
|
||
alg_onrgoed_niveau,
|
||
mld_typeopdr_key,
|
||
mld_stdmelding_hint,
|
||
mld_stdmelding_kopieerbaar,
|
||
mld_stdmelding_afmeldtext,
|
||
mld_stdmelding_doublecheck,
|
||
mld_stdmelding_slabewaken,
|
||
mld_stdmelding_image,
|
||
mld_stdmelding_objects_allowed
|
||
)
|
||
VALUES (discipline_key,
|
||
rec.mld_stdmelding_omschrijving,
|
||
stdmeldinggroep_key,
|
||
kostensoort_key,
|
||
MLD_T_UITVOERTIJD(rec.mld_stdmelding_accepttijd, 'U'), -- acceptatietijden vullen we altijd in in uren.
|
||
MLD_T_UITVOERTIJD(rec.mld_stdmelding_accepttijd1, 'U'),
|
||
MLD_T_UITVOERTIJD(rec.mld_stdmelding_accepttijd2, 'U'),
|
||
MLD_T_UITVOERTIJD(rec.mld_stdmelding_accepttijd4, 'U'),
|
||
-- Uitvoertijden worden in de importsheet en exportview altijd ingevuld in dagen.
|
||
-- Is de uitvoertijd kleiner dan 1 dag, dan slaan we het in mld_stdmelding op in uren.
|
||
MLD_T_UITVOERTIJD(CASE
|
||
WHEN COALESCE(rec.mld_stdmelding_uitvoertijd, 2) > 0 AND COALESCE(rec.mld_stdmelding_uitvoertijd, 2) < 1
|
||
THEN COALESCE(rec.mld_stdmelding_uitvoertijd, 2) * 24 -- Uren
|
||
ELSE COALESCE(rec.mld_stdmelding_uitvoertijd, 2) -- Dagen
|
||
END,
|
||
CASE
|
||
WHEN COALESCE(rec.mld_stdmelding_uitvoertijd, 2) > 0 AND COALESCE(rec.mld_stdmelding_uitvoertijd, 2) < 1
|
||
THEN 'U' -- Uren
|
||
ELSE 'D' -- Dagen
|
||
END),
|
||
MLD_T_UITVOERTIJD(CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd1 > 0 AND rec.mld_stdmelding_uitvoertijd1 < 1
|
||
THEN rec.mld_stdmelding_uitvoertijd1 * 24 -- Uren
|
||
ELSE rec.mld_stdmelding_uitvoertijd1 -- Dagen
|
||
END,
|
||
CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd1 > 0 AND rec.mld_stdmelding_uitvoertijd1 < 1
|
||
THEN 'U' -- Uren
|
||
ELSE 'D' -- Dagen
|
||
END),
|
||
MLD_T_UITVOERTIJD(CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd2 > 0 AND rec.mld_stdmelding_uitvoertijd2 < 1
|
||
THEN rec.mld_stdmelding_uitvoertijd2 * 24 -- Uren
|
||
ELSE rec.mld_stdmelding_uitvoertijd2 -- Dagen
|
||
END,
|
||
CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd2 > 0 AND rec.mld_stdmelding_uitvoertijd2 < 1
|
||
THEN 'U' -- Uren
|
||
ELSE 'D' -- Dagen
|
||
END),
|
||
MLD_T_UITVOERTIJD(CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd4 > 0 AND rec.mld_stdmelding_uitvoertijd4 < 1
|
||
THEN rec.mld_stdmelding_uitvoertijd4 * 24 -- Uren
|
||
ELSE rec.mld_stdmelding_uitvoertijd4 -- Dagen
|
||
END,
|
||
CASE
|
||
WHEN rec.mld_stdmelding_uitvoertijd4 > 0 AND rec.mld_stdmelding_uitvoertijd4 < 1
|
||
THEN 'U' -- Uren
|
||
ELSE 'D' -- Dagen
|
||
END),
|
||
dienst_key,
|
||
rec.mld_stdmelding_notfrontend,
|
||
rec.alg_onrgoed_niveau,
|
||
typeopdr_key,
|
||
rec.mld_stdmelding_hint,
|
||
rec.mld_stdmelding_kopieerbaar,
|
||
rec.mld_stdmelding_afmeldtext,
|
||
rec.mld_stdmelding_doublecheck,
|
||
rec.mld_stdmelding_slabewaken,
|
||
rec.mld_stdmelding_image,
|
||
rec.mld_stdmelding_objects_allowed
|
||
);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
'standaardmelding kan niet worden weggeschreven ['
|
||
|| rec.mld_stdmelding_omschrijving
|
||
|| ']',
|
||
v_errmes || ' Oracle fout: ' || oracle_err_var
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal standaardmeldingen: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'S',
|
||
'Servicedesk: aantal standaardmeldingen toegevoegd: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
add_srtdiscipline (p_import_key);
|
||
add_discipline (p_import_key);
|
||
add_stdmeldinggroep (p_import_key);
|
||
add_kostensoort (p_import_key);
|
||
add_dienst (p_import_key);
|
||
add_typeopdr (p_import_key);
|
||
add_stdmelding (p_import_key);
|
||
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',
|
||
'Importproces meldingen afgebroken!',
|
||
''
|
||
);
|
||
END fac_update_mld;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_mld_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
fac_import_mld(p_import_key);
|
||
END fac_import_mld_del;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_mld_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
fac.imp_mld_delete_mld(p_import_key, NULL);
|
||
fac_update_mld(p_import_key);
|
||
END fac_update_mld_del;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_mldafmtxt (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200) := '';
|
||
header_is_valid NUMBER := 0;
|
||
v_count_tot NUMBER (10) := 0;
|
||
v_count_import NUMBER (10) := 0;
|
||
v_ongeldig NUMBER (1);
|
||
-- De importvelden:
|
||
v_afmeldtekst_naam VARCHAR2 (256); -- C60
|
||
v_afmeldtekst_oms VARCHAR2 (4000); -- C1000
|
||
v_discipline_key VARCHAR2 (256); -- N10
|
||
v_stdmelding_key VARCHAR2 (256); -- N10
|
||
v_afmeldtekst_usefor VARCHAR2 (256); -- N1
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fac_imp_mldafmtxt;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_afmeldtekst_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_afmeldtekst_oms);
|
||
fac.imp_getfield (v_newline, c_delim, v_discipline_key);
|
||
fac.imp_getfield (v_newline, c_delim, v_stdmelding_key);
|
||
fac.imp_getfield (v_newline, c_delim, v_afmeldtekst_usefor);
|
||
v_aanduiding := '[' || v_afmeldtekst_naam || '] ';
|
||
|
||
-- 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_afmeldtekst_naam) = 'AFMELDTEKSTNAAM'
|
||
AND UPPER (v_afmeldtekst_oms) = 'AFMELDTEKSTOMSCHRIJVING'
|
||
AND UPPER (v_discipline_key) = 'DISCIPLINE_KEY'
|
||
AND UPPER (v_stdmelding_key) = 'STDMELDING_KEY'
|
||
AND UPPER (v_afmeldtekst_usefor) = 'AFMELDTEKSTUSEFOR'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Afmeldtekstnaam ongeldig/ongedefinieerd of te lang';
|
||
v_afmeldtekst_naam := TRIM (v_afmeldtekst_naam);
|
||
|
||
IF v_afmeldtekst_naam IS NULL OR LENGTH (v_afmeldtekst_naam) > 60
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Afmeldtekstomschrijving ongeldig/ongedefinieerd of te lang';
|
||
v_afmeldtekst_oms := TRIM (v_afmeldtekst_oms);
|
||
|
||
IF v_afmeldtekst_oms IS NULL OR LENGTH (v_afmeldtekst_oms) > 1000
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Discipline-key ongeldig';
|
||
v_discipline_key := TRIM (v_discipline_key);
|
||
|
||
IF (v_discipline_key IS NOT NULL
|
||
AND fac.safe_to_number (v_discipline_key) IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Discipline-key wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Soortmelding-key ongeldig';
|
||
v_stdmelding_key := TRIM (v_stdmelding_key);
|
||
|
||
IF (v_stdmelding_key IS NOT NULL
|
||
AND fac.safe_to_number (v_stdmelding_key) IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Soortmelding-key wordt genegeerd!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'afmeldtekstusefor ongeldig/ongedefinieerd';
|
||
v_afmeldtekst_usefor := TRIM (v_afmeldtekst_usefor);
|
||
IF v_afmeldtekst_usefor IS NULL OR v_afmeldtekst_usefor < 1 OR v_afmeldtekst_usefor > 4
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO fac_imp_mldafmtxt (mld_afmeldtekst_naam,
|
||
mld_afmeldtekst_omschrijving,
|
||
ins_discipline_key,
|
||
mld_stdmelding_key,
|
||
mld_afmeldtekst_usefor)
|
||
VALUES (v_afmeldtekst_naam,
|
||
v_afmeldtekst_oms,
|
||
fac.safe_to_number (v_discipline_key),
|
||
fac.safe_to_number (v_stdmelding_key),
|
||
v_afmeldtekst_usefor);
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
END;
|
||
|
||
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 specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Afmeldteksten: #ingelezen importregels = '
|
||
|| TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Afmeldteksten: #ongeldige 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 afmeldteksten afgebroken!');
|
||
END fac_import_mldafmtxt;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_mldafmtxt (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt over de voorkomende (unieke) tabelnamen.
|
||
CURSOR c1
|
||
IS
|
||
SELECT * FROM fac_imp_mldafmtxt;
|
||
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Fout bij bepalen bestaan afmeldtekst [' || rec.mld_afmeldtekst_naam || '] ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM mld_afmeldtekst
|
||
WHERE UPPER (mld_afmeldtekst_naam) = UPPER (rec.mld_afmeldtekst_naam);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen afmeldtekst [' || rec.mld_afmeldtekst_naam || '] ';
|
||
|
||
INSERT INTO mld_afmeldtekst (mld_afmeldtekst_naam,
|
||
mld_afmeldtekst_omschrijving,
|
||
mld_ins_discipline_key,
|
||
mld_stdmelding_key,
|
||
mld_afmeldtekst_usefor)
|
||
VALUES (rec.mld_afmeldtekst_naam,
|
||
rec.mld_afmeldtekst_omschrijving,
|
||
rec.ins_discipline_key,
|
||
rec.mld_stdmelding_key,
|
||
rec.mld_afmeldtekst_usefor);
|
||
ELSE
|
||
v_errormsg :=
|
||
'Fout bij bijwerken afmeldtekst [' || rec.mld_afmeldtekst_naam || '] ';
|
||
|
||
UPDATE mld_afmeldtekst
|
||
SET mld_afmeldtekst_omschrijving = rec.mld_afmeldtekst_omschrijving,
|
||
mld_ins_discipline_key = rec.ins_discipline_key,
|
||
mld_stdmelding_key = rec.mld_stdmelding_key,
|
||
mld_afmeldtekst_usefor = rec.mld_afmeldtekst_usefor
|
||
WHERE UPPER (mld_afmeldtekst_naam) = UPPER (rec.mld_afmeldtekst_naam);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
v_count_upd := v_count_upd + 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_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afmeldteksten: #ingelezen = ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afmeldteksten: #toegevoegd/bijgewerkt = ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
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 afmeldteksten afgebroken!');
|
||
END fac_update_mldafmtxt;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_ins (p_import_key IN NUMBER)
|
||
AS
|
||
-- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist)
|
||
-- Variabelelijst
|
||
--v_ins_discipline_omschrijving: 1 (VERPLICHT)
|
||
--v_ins_discipline_kostensoort: 2
|
||
--v_ins_srtgroep_omschrijving: 3 (VERPLICHT)
|
||
--v_ins_srtdeel_code: 4 (VERPLICHT)
|
||
--v_ins_srtdeel_omschrijving: 5 (VERPLICHT)
|
||
--v_ins_deel_omschrijving: 6 (VERPLICHT)
|
||
--v_ins_deel_opmerking: 7
|
||
--v_reserveerbaar: 8
|
||
--v_res_deel_eenheid: 9
|
||
--v_res_deel_prijs: 10
|
||
--v_alg_locatie_code: 11
|
||
--v_alg_gebouw_code: 12
|
||
--v_alg_verdieping_volgnr: 13
|
||
--v_alg_ruimte_nr: 14
|
||
--v_res_deel_alg_level: 15
|
||
--v_res_discipline_type: 16
|
||
--v_res_discipline_omschrijving: 17
|
||
--v_res_discipline_kostensoort: 18
|
||
--v_prs_perslid_matchcode: 19
|
||
--v_prs_perslid_matchwaarde: 20
|
||
--v_ins_deel_aanmaak: 21
|
||
--v_ins_deel_vervaldatum: 22
|
||
--v_ins_deel_aantal: 23
|
||
--v_ins_deel_externnr: 24
|
||
--v_ins_srtdeel_omschr_parent 25
|
||
--v_ins_deel_omschr_parent 26
|
||
--v_ins_kenmerkwaarde1: 27
|
||
--v_ins_kenmerkwaarde2: 28
|
||
--v_ins_kenmerkwaarde3: 29
|
||
--v_ins_kenmerkwaarde4: 30
|
||
--v_ins_kenmerkwaarde5: 31
|
||
--v_ins_kenmerkwaarde6: 32
|
||
--v_ins_kenmerkwaarde7: 33
|
||
--v_ins_kenmerkwaarde8: 34
|
||
--v_ins_kenmerkwaarde9: 35
|
||
--v_ins_kenmerkwaarde10: 36
|
||
--v_ins_kenmerkwaarde11: 37
|
||
--v_ins_kenmerkwaarde12: 38
|
||
--v_ins_kenmerkwaarde13: 39
|
||
--v_ins_kenmerkwaarde14: 40
|
||
--v_ins_kenmerkwaarde15: 41
|
||
--v_ins_kenmerkwaarde16: 42
|
||
--v_ins_kenmerkwaarde17: 43
|
||
--v_ins_kenmerkwaarde18: 44
|
||
--v_ins_kenmerkwaarde19: 45
|
||
--v_ins_kenmerkwaarde20: 46
|
||
|
||
-- Via een string, en ook op slimme wijze, nl alsof het een ingelezen deel-record is met p_fielddelimitor
|
||
v_seq_of_columns VARCHAR(255); -- (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46);
|
||
|
||
-- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen.
|
||
|
||
-- Als discipline_omschrijving en discipline_kostensoort b.v. zijn omgedraaid in het CSV-formaat,
|
||
-- dan is de lijst van integers: v_seq_of_columns := "2,1,3,4,5,6,7,8,9,10,11,12.....";
|
||
|
||
-- Als discipline_omschrijving NIET in CSV staat, dan factuurimport v_seq_of_columns := "0,2,3,4,5,6,7,8,9,10,11,12.....";
|
||
-- v_seq_of_columns := "0;2;3;4;5;6;7;8;9;10;11;12.....";
|
||
-- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blijft LEEG.
|
||
|
||
BEGIN
|
||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46';
|
||
fac_import_ins_body(p_import_key, v_seq_of_columns);
|
||
END;
|
||
/
|
||
|
||
|
||
--//////////////////////////////////////////////////INS IMPORT STUFF///////////////////////////////////////////
|
||
CREATE OR REPLACE PROCEDURE fac_import_ins_body (p_import_key IN NUMBER, p_seq_of_columns IN VARCHAR2)
|
||
IS
|
||
v_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR (400);
|
||
v_ins_kenmerk_key1 VARCHAR2 (255);
|
||
v_ins_kenmerk_key2 VARCHAR2 (255);
|
||
v_ins_kenmerk_key3 VARCHAR2 (255);
|
||
v_ins_kenmerk_key4 VARCHAR2 (255);
|
||
v_ins_kenmerk_key5 VARCHAR2 (255);
|
||
v_ins_kenmerk_key6 VARCHAR2 (255);
|
||
v_ins_kenmerk_key7 VARCHAR2 (255);
|
||
v_ins_kenmerk_key8 VARCHAR2 (255);
|
||
v_ins_kenmerk_key9 VARCHAR2 (255);
|
||
v_ins_kenmerk_key10 VARCHAR2 (255);
|
||
v_ins_kenmerk_key11 VARCHAR2 (255);
|
||
v_ins_kenmerk_key12 VARCHAR2 (255);
|
||
v_ins_kenmerk_key13 VARCHAR2 (255);
|
||
v_ins_kenmerk_key14 VARCHAR2 (255);
|
||
v_ins_kenmerk_key15 VARCHAR2 (255);
|
||
v_ins_kenmerk_key16 VARCHAR2 (255);
|
||
v_ins_kenmerk_key17 VARCHAR2 (255);
|
||
v_ins_kenmerk_key18 VARCHAR2 (255);
|
||
v_ins_kenmerk_key19 VARCHAR2 (255);
|
||
v_ins_kenmerk_key20 VARCHAR2 (255);
|
||
-- De importvelden
|
||
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
|
||
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_srtdeel_code VARCHAR2 (255); -- C10
|
||
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
|
||
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
|
||
v_reserveerbaar VARCHAR2 (255); -- C1
|
||
v_reserveerbaar_n NUMBER (1); -- N1
|
||
v_res_deel_eenheid VARCHAR2 (255); -- C10
|
||
v_res_deel_prijs VARCHAR2 (255); -- N7,2
|
||
v_res_deel_prijs_n NUMBER (7, 2); -- N7,2
|
||
v_alg_locatie_code VARCHAR2 (255); -- C10
|
||
v_alg_gebouw_code VARCHAR2 (255); -- C12
|
||
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
|
||
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
|
||
v_alg_ruimte_nr VARCHAR2 (255); -- C20
|
||
v_res_deel_alg_level VARCHAR2 (255); -- C1 (naar -1 t/m 5)
|
||
v_res_deel_alg_level_n NUMBER (1); -- N1
|
||
v_res_discipline_type VARCHAR2 (255); -- C60
|
||
v_res_discipline_omschrijving VARCHAR2 (255); -- C60
|
||
v_res_discipline_kostensoort VARCHAR2 (255); -- C60
|
||
v_prs_perslid_matchcode VARCHAR2 (4000);
|
||
v_prs_perslid_matchwaarde VARCHAR2 (4000);
|
||
v_ins_srtdeel_omschr_parent VARCHAR2 (255); -- C100
|
||
v_ins_deel_omschr_parent VARCHAR2 (255); -- C60
|
||
v_ins_kenmerkwaarde1 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde2 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde3 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde4 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde5 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde6 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde7 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde8 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde9 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde10 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde11 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde12 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde13 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde14 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde15 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde16 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde17 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde18 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde19 VARCHAR2 (4053);
|
||
v_ins_kenmerkwaarde20 VARCHAR2 (4053);
|
||
v_ins_deel_aanmaak VARCHAR2 (255); -- DATE
|
||
v_ins_deel_aanmaak_d DATE;
|
||
v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE
|
||
v_ins_deel_vervaldatum_d DATE;
|
||
v_ins_deel_aantal VARCHAR2 (255); -- N8,2
|
||
v_ins_deel_aantal_n NUMBER(8, 2);
|
||
v_ins_deel_externnr VARCHAR2 (400);
|
||
v_file_index NUMBER;
|
||
|
||
v_seq_of_columns VARCHAR2(255);
|
||
v_colnr VARCHAR2 (2);
|
||
v_colnr1 NUMBER;
|
||
v_colnr2 NUMBER;
|
||
v_colnr3 NUMBER;
|
||
v_colnr4 NUMBER;
|
||
v_colnr5 NUMBER;
|
||
v_colnr6 NUMBER;
|
||
v_colnr7 NUMBER;
|
||
v_colnr8 NUMBER;
|
||
v_colnr9 NUMBER;
|
||
v_colnr10 NUMBER;
|
||
v_colnr11 NUMBER;
|
||
v_colnr12 NUMBER;
|
||
v_colnr13 NUMBER;
|
||
v_colnr14 NUMBER;
|
||
v_colnr15 NUMBER;
|
||
v_colnr16 NUMBER;
|
||
v_colnr17 NUMBER;
|
||
v_colnr18 NUMBER;
|
||
v_colnr19 NUMBER;
|
||
v_colnr20 NUMBER;
|
||
v_colnr21 NUMBER;
|
||
v_colnr22 NUMBER;
|
||
v_colnr23 NUMBER;
|
||
v_colnr24 NUMBER;
|
||
v_colnr25 NUMBER;
|
||
v_colnr26 NUMBER;
|
||
v_colnr27 NUMBER;
|
||
v_colnr28 NUMBER;
|
||
v_colnr29 NUMBER;
|
||
v_colnr30 NUMBER;
|
||
v_colnr31 NUMBER;
|
||
v_colnr32 NUMBER;
|
||
v_colnr33 NUMBER;
|
||
v_colnr34 NUMBER;
|
||
v_colnr35 NUMBER;
|
||
v_colnr36 NUMBER;
|
||
v_colnr37 NUMBER;
|
||
v_colnr38 NUMBER;
|
||
v_colnr39 NUMBER;
|
||
v_colnr40 NUMBER;
|
||
v_colnr41 NUMBER;
|
||
v_colnr42 NUMBER;
|
||
v_colnr43 NUMBER;
|
||
v_colnr44 NUMBER;
|
||
v_colnr45 NUMBER;
|
||
v_colnr46 NUMBER;
|
||
|
||
-- Overige velden:
|
||
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 alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
|
||
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
|
||
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
|
||
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
|
||
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
|
||
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
|
||
--
|
||
-- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten
|
||
-- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3
|
||
-- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep)
|
||
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR)
|
||
RETURN VARCHAR
|
||
IS
|
||
v_kenmerk_key NUMBER;
|
||
v_kenmerk_groep NUMBER;
|
||
v_kw VARCHAR(250);
|
||
BEGIN
|
||
v_kenmerk_groep := 0;
|
||
v_kw := p_kw;
|
||
IF INSTR (v_kw, '|') > 1
|
||
THEN
|
||
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
|
||
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
|
||
END IF;
|
||
|
||
IF fac.safe_to_number (v_kw) IS NULL
|
||
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT MIN(k.ins_kenmerk_key)
|
||
INTO v_kenmerk_key
|
||
FROM ins_v_aanwezigkenmerk k,
|
||
ins_v_aanwezigsrtkenmerk sk
|
||
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
||
AND k.ins_kenmerk_groep = v_kenmerk_groep
|
||
AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw)
|
||
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V');
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT k.ins_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM ins_v_aanwezigkenmerk k,
|
||
ins_v_aanwezigsrtkenmerk sk
|
||
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
||
AND k.ins_kenmerk_groep = v_kenmerk_groep
|
||
AND k.ins_kenmerk_key = fac.safe_to_number (v_kw)
|
||
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V');
|
||
END IF;
|
||
|
||
IF v_kenmerk_key IS NULL
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
|
||
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Fout bij bepalen kenmerk [' || p_kw || ']',
|
||
'Bestaat niet of type ongeldig');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END IF;
|
||
END;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_ins;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
v_prs_perslid_matchcode := '';
|
||
|
||
-- Init
|
||
v_seq_of_columns := p_seq_of_columns;
|
||
v_errorhint := 'Bepalen volgorde kolommen';
|
||
|
||
-- De volgorde van de te importeren kolommen in de CSV uitlezen uit v_seq_of_columns
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr1);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr2);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr3);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr4);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr5);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr6);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr7);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr8);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr9);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr10);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr11);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr12);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr13);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr14);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr15);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr16);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr17);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr18);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr19);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr20);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr21);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr22);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr23);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr24);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr25);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr26);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr27);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr28);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr29);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr30);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr31);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr32);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr33);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr34);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr35);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr36);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr37);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr38);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr39);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr40);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr41);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr42);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr43);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr44);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr45);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr46);
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_file_index := rec1.fac_imp_file_index;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
|
||
v_aanduiding := 'Inlezen ins_discipline_omschrijving kolom:' || v_colnr1;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr1), v_ins_discipline_omschrijving);
|
||
v_aanduiding := 'Inlezen ins_discipline_kostensoort kolom:' || v_colnr2;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr2), v_ins_discipline_kostensoort);
|
||
v_aanduiding := 'Inlezen ins_srtgroep_omschrijving kolom:' || v_colnr3;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr3), v_ins_srtgroep_omschrijving);
|
||
v_aanduiding := 'Inlezen ins_srtdeel_code kolom:' || v_colnr4;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr4), v_ins_srtdeel_code);
|
||
v_aanduiding := 'Inlezen ins_srtdeel_omschrijving kolom:' || v_colnr5;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr5), v_ins_srtdeel_omschrijving);
|
||
v_aanduiding := 'Inlezen ins_deel_omschrijving kolom:' || v_colnr6;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr6), v_ins_deel_omschrijving);
|
||
v_aanduiding := 'Inlezen ins_deel_opmerking kolom:' || v_colnr7;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr7), v_ins_deel_opmerking);
|
||
v_aanduiding := 'Inlezen reserveerbaar kolom:' || v_colnr8;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr8), v_reserveerbaar);
|
||
v_aanduiding := 'Inlezen res_deel_eenheid kolom:' || v_colnr9;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr9), v_res_deel_eenheid);
|
||
v_aanduiding := 'Inlezen res_deel_prijs kolom:' || v_colnr10;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr10), v_res_deel_prijs);
|
||
v_aanduiding := 'Inlezen alg_locatie_code kolom:' || v_colnr11;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr11), v_alg_locatie_code);
|
||
v_aanduiding := 'Inlezen alg_gebouw_code kolom:' || v_colnr12;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr12), v_alg_gebouw_code);
|
||
v_aanduiding := 'Inlezen alg_verdieping_volgnr kolom:' || v_colnr13;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr13), v_alg_verdieping_volgnr);
|
||
v_aanduiding := 'Inlezen alg_ruimte_nr kolom:' || v_colnr14;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr14), v_alg_ruimte_nr);
|
||
v_aanduiding := 'Inlezen res_deel_alg_level kolom:' || v_colnr15;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr15), v_res_deel_alg_level);
|
||
v_aanduiding := 'Inlezen v_res_discipline_type kolom:' || v_colnr16;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr16), v_res_discipline_type);
|
||
v_aanduiding := 'Inlezen v_res_discipline_omschrijving kolom:' || v_colnr17;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr17), v_res_discipline_omschrijving);
|
||
v_aanduiding := 'Inlezen v_res_discipline_kostensoort kolom:' || v_colnr18;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr18), v_res_discipline_kostensoort);
|
||
v_aanduiding := 'Inlezen v_prs_perslid_matchcode kolom:' || v_colnr19;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr19), v_prs_perslid_matchcode);
|
||
v_aanduiding := 'Inlezen v_prs_perslid_matchwaarde kolom:' || v_colnr20;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr20), v_prs_perslid_matchwaarde);
|
||
v_aanduiding := 'Inlezen v_ins_deel_aanmaak kolom:' || v_colnr21;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr21), v_ins_deel_aanmaak);
|
||
v_aanduiding := 'Inlezen v_ins_deel_vervaldatum kolom:' || v_colnr22;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr22), v_ins_deel_vervaldatum);
|
||
v_aanduiding := 'Inlezen v_ins_deel_aantal kolom:' || v_colnr23;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr23), v_ins_deel_aantal);
|
||
v_aanduiding := 'Inlezen v_ins_deel_externnr kolom:' || v_colnr24;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr24), v_ins_deel_externnr);
|
||
v_aanduiding := 'Inlezen parent ins_srtdeel_omschrijving kolom:' || v_colnr25;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr25), v_ins_srtdeel_omschr_parent);
|
||
v_aanduiding := 'Inlezen parent ins_deel_omschrijving kolom:' || v_colnr26;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr26), v_ins_deel_omschr_parent);
|
||
v_aanduiding := 'Inlezen kenmerk1 kolom:' || v_colnr27;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr27), v_ins_kenmerkwaarde1);
|
||
v_aanduiding := 'Inlezen kenmerk2 kolom:' || v_colnr28;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr28), v_ins_kenmerkwaarde2);
|
||
v_aanduiding := 'Inlezen kenmerk3 kolom:' || v_colnr29;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr29), v_ins_kenmerkwaarde3);
|
||
v_aanduiding := 'Inlezen kenmerk4 kolom:' || v_colnr30;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr30), v_ins_kenmerkwaarde4);
|
||
v_aanduiding := 'Inlezen kenmerk5 kolom:' || v_colnr31;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr31), v_ins_kenmerkwaarde5);
|
||
v_aanduiding := 'Inlezen kenmerk6 kolom:' || v_colnr32;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr32), v_ins_kenmerkwaarde6);
|
||
v_aanduiding := 'Inlezen kenmerk7 kolom:' || v_colnr33;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr33), v_ins_kenmerkwaarde7);
|
||
v_aanduiding := 'Inlezen kenmerk8 kolom:' || v_colnr34;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr34), v_ins_kenmerkwaarde8);
|
||
v_aanduiding := 'Inlezen kenmerk9 kolom:' || v_colnr35;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr35), v_ins_kenmerkwaarde9);
|
||
v_aanduiding := 'Inlezen kenmerk10 kolom:' || v_colnr36;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr36), v_ins_kenmerkwaarde10);
|
||
v_aanduiding := 'Inlezen kenmerk11 kolom:' || v_colnr37;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr37), v_ins_kenmerkwaarde11);
|
||
v_aanduiding := 'Inlezen kenmerk12 kolom:' || v_colnr38;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr38), v_ins_kenmerkwaarde12);
|
||
v_aanduiding := 'Inlezen kenmerk13 kolom:' || v_colnr39;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr39), v_ins_kenmerkwaarde13);
|
||
v_aanduiding := 'Inlezen kenmerk14 kolom:' || v_colnr40;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr40), v_ins_kenmerkwaarde14);
|
||
v_aanduiding := 'Inlezen kenmerk15 kolom:' || v_colnr41;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr41), v_ins_kenmerkwaarde15);
|
||
v_aanduiding := 'Inlezen kenmerk16 kolom:' || v_colnr42;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr42), v_ins_kenmerkwaarde16);
|
||
v_aanduiding := 'Inlezen kenmerk17 kolom:' || v_colnr43;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr43), v_ins_kenmerkwaarde17);
|
||
v_aanduiding := 'Inlezen kenmerk18 kolom:' || v_colnr44;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr44), v_ins_kenmerkwaarde18);
|
||
v_aanduiding := 'Inlezen kenmerk19 kolom:' || v_colnr45;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr45), v_ins_kenmerkwaarde19);
|
||
v_aanduiding := 'Inlezen kenmerk20 kolom:' || v_colnr46;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr46), v_ins_kenmerkwaarde20);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_ins_discipline_omschrijving
|
||
|| '|'
|
||
|| v_ins_srtgroep_omschrijving
|
||
|| '|'
|
||
|| v_ins_srtdeel_code
|
||
|| '|'
|
||
|| v_ins_srtdeel_omschrijving
|
||
|| '|'
|
||
|| v_ins_deel_omschrijving
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
|
||
AND UPPER (v_ins_discipline_kostensoort) = 'DISCIPLINEKOSTENSOORT'
|
||
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
|
||
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
|
||
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
|
||
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
|
||
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
|
||
AND UPPER (v_reserveerbaar) = 'RESERVEERBAAR'
|
||
AND UPPER (v_res_deel_eenheid) = 'EENHEID'
|
||
AND UPPER (v_res_deel_prijs) = 'PRIJS'
|
||
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
|
||
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
|
||
AND UPPER (v_res_deel_alg_level) = 'RESERVERINGSCOPE'
|
||
AND UPPER (v_res_discipline_type) = 'CATALOGUSTYPE'
|
||
AND UPPER (v_res_discipline_omschrijving) = 'CATALOGUSNAAM'
|
||
AND UPPER (v_res_discipline_kostensoort) = 'CATALOGUSKOSTENSOORT'
|
||
AND UPPER (v_prs_perslid_matchcode) = 'PERSOONMATCHCODE'
|
||
AND UPPER (v_prs_perslid_matchwaarde) = 'PERSOONMATCHWAARDE'
|
||
AND UPPER (v_ins_deel_aanmaak) = 'INGANGSDATUM'
|
||
AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM'
|
||
AND UPPER (v_ins_deel_aantal) = 'AANTAL'
|
||
AND UPPER (v_ins_deel_externnr) = 'EXTERNNR'
|
||
AND UPPER (v_ins_srtdeel_omschr_parent) = 'PARENTOBJECTSOORTOMSCHR'
|
||
AND UPPER (v_ins_deel_omschr_parent) = 'PARENTOBJECTIDENTIFICATIE'
|
||
THEN
|
||
v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1);
|
||
v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2);
|
||
v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3);
|
||
v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4);
|
||
v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5);
|
||
v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6);
|
||
v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7);
|
||
v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8);
|
||
v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9);
|
||
v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10);
|
||
v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11);
|
||
v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12);
|
||
v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13);
|
||
v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14);
|
||
v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15);
|
||
v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16);
|
||
v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17);
|
||
v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18);
|
||
v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19);
|
||
v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20);
|
||
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Disciplineomschrijving ongeldig';
|
||
v_ins_discipline_omschrijving :=
|
||
TRIM (v_ins_discipline_omschrijving);
|
||
|
||
IF v_ins_discipline_omschrijving IS NULL
|
||
OR LENGTH (v_ins_discipline_omschrijving) > 60
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Kostensoort ongeldig';
|
||
v_ins_discipline_kostensoort :=
|
||
TRIM (v_ins_discipline_kostensoort);
|
||
|
||
IF LENGTH (v_ins_discipline_kostensoort) > 60
|
||
THEN
|
||
v_ins_discipline_kostensoort :=
|
||
SUBSTR (v_ins_discipline_kostensoort, 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Disciplinekostensoort wordt afgebroken tot ['
|
||
|| v_ins_discipline_kostensoort
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Groepsoortomschrijving ongeldig';
|
||
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
|
||
|
||
IF v_ins_srtgroep_omschrijving IS NULL
|
||
OR LENGTH (v_ins_srtgroep_omschrijving) > 60
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Objectsoortcode ongeldig';
|
||
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
|
||
|
||
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Objectsoortomschrijving ongeldig';
|
||
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
|
||
|
||
IF v_ins_srtdeel_omschrijving IS NULL
|
||
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Objectomschrijving ongeldig';
|
||
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
|
||
|
||
IF v_ins_deel_omschrijving IS NULL
|
||
OR LENGTH (v_ins_deel_omschrijving) > 60
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Objectopmerking ongeldig';
|
||
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
|
||
|
||
IF LENGTH (v_ins_deel_opmerking) > 320
|
||
THEN
|
||
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Objectopmerking wordt afgebroken tot ['
|
||
|| v_ins_deel_opmerking
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_reserveerbaar)), 1, 1),
|
||
'J', 1,
|
||
0)
|
||
INTO v_reserveerbaar_n
|
||
FROM DUAL;
|
||
|
||
--
|
||
v_errormsg := 'Eenheid ongeldig';
|
||
v_res_deel_eenheid := TRIM (v_res_deel_eenheid);
|
||
|
||
IF LENGTH (v_res_deel_eenheid) > 10
|
||
THEN
|
||
v_res_deel_eenheid := SUBSTR (v_res_deel_eenheid, 1, 10);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Eenheid wordt afgebroken tot ['
|
||
|| v_res_deel_eenheid
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Prijs ongeldig; maximale grootte 99999.99';
|
||
v_res_deel_prijs := TRIM (v_res_deel_prijs);
|
||
v_res_deel_prijs_n := NULL;
|
||
|
||
IF (v_res_deel_prijs IS NOT NULL)
|
||
THEN
|
||
IF (fac.safe_to_number (v_res_deel_prijs) IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_res_deel_prijs_n := fac.safe_to_number (v_res_deel_prijs);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatiecode ongeldig';
|
||
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
||
|
||
IF LENGTH (v_alg_locatie_code) > 10
|
||
THEN
|
||
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Locatiecode wordt afgebroken tot ['
|
||
|| v_alg_locatie_code
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwcode ongeldig';
|
||
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
||
|
||
IF LENGTH (v_alg_gebouw_code) > 12
|
||
THEN
|
||
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Gebouwcode wordt afgebroken tot ['
|
||
|| v_alg_gebouw_code
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Bouwlaagvolgnummer ongeldig';
|
||
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
||
v_alg_verdieping_volgnr_n := NULL;
|
||
|
||
IF (v_alg_verdieping_volgnr IS NOT NULL)
|
||
THEN
|
||
v_alg_verdieping_volgnr_n :=
|
||
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
|
||
|
||
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_alg_verdieping_volgnr_n :=
|
||
fac.safe_to_number (v_alg_verdieping_volgnr);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Ruimtenummer ongeldig';
|
||
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
||
|
||
IF LENGTH (v_alg_ruimte_nr) > 20
|
||
THEN
|
||
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 20);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Ruimtenummer wordt afgebroken tot ['
|
||
|| v_alg_ruimte_nr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (v_res_deel_alg_level), 1, 1),
|
||
'E', 0,
|
||
'D', 1,
|
||
'L', 2,
|
||
'G', 3,
|
||
'V', 4,
|
||
'R', 5,
|
||
-1)
|
||
INTO v_res_deel_alg_level_n
|
||
FROM DUAL;
|
||
|
||
--
|
||
v_errormsg := 'Catalogustype ongeldig';
|
||
SELECT DECODE (SUBSTR(TRIM(v_res_discipline_type), 1, 1),
|
||
'R', '3',
|
||
'O', '1',
|
||
'V', '2',
|
||
'W', '5',
|
||
'P', '4',
|
||
'')
|
||
INTO v_res_discipline_type
|
||
FROM DUAL;
|
||
--
|
||
v_errormsg := 'Catalogusnaam ongeldig';
|
||
v_res_discipline_omschrijving :=
|
||
TRIM (v_res_discipline_omschrijving);
|
||
|
||
IF LENGTH (v_res_discipline_omschrijving) > 60
|
||
THEN
|
||
v_res_discipline_omschrijving :=
|
||
SUBSTR (TRIM (v_res_discipline_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Catalogusnaam wordt afgebroken tot ['
|
||
|| v_res_discipline_omschrijving
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Cataloguskostensoort ongeldig';
|
||
v_res_discipline_kostensoort :=
|
||
TRIM (v_res_discipline_kostensoort);
|
||
|
||
IF LENGTH (v_res_discipline_kostensoort) > 60
|
||
THEN
|
||
v_res_discipline_kostensoort :=
|
||
SUBSTR (TRIM (v_res_discipline_kostensoort), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Cataloguskostensoort wordt afgebroken tot ['
|
||
|| v_res_discipline_kostensoort
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99';
|
||
v_ins_deel_aantal := TRIM (v_ins_deel_aantal);
|
||
v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.');
|
||
v_ins_deel_aantal_n := NULL;
|
||
|
||
IF v_ins_deel_aantal IS NOT NULL
|
||
THEN
|
||
IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal);
|
||
END IF;
|
||
ELSE
|
||
v_ins_deel_aantal_n := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige aanmaakdatum';
|
||
IF v_ins_deel_aanmaak IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
v_ins_deel_aanmaak_d :=
|
||
TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
ELSE
|
||
v_ins_deel_aanmaak_d := NULL;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige vervaldatum';
|
||
IF v_ins_deel_vervaldatum IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
v_ins_deel_vervaldatum_d :=
|
||
TO_DATE (v_ins_deel_vervaldatum, 'dd-mm-yyyy');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
ELSE
|
||
v_ins_deel_vervaldatum_d := NULL;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Externnr ongeldig';
|
||
v_ins_deel_externnr := TRIM (v_ins_deel_externnr);
|
||
|
||
IF LENGTH (v_ins_deel_externnr) > 255
|
||
THEN
|
||
v_ins_deel_externnr := SUBSTR (TRIM (v_ins_deel_externnr), 1, 255);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Externnr wordt afgebroken tot ['
|
||
|| v_ins_deel_externnr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Parent objectsoortomschrijving ongeldig';
|
||
v_ins_srtdeel_omschr_parent := TRIM (v_ins_srtdeel_omschr_parent);
|
||
|
||
IF LENGTH (v_ins_srtdeel_omschr_parent) > 100
|
||
THEN
|
||
v_ins_srtdeel_omschr_parent := SUBSTR (TRIM (v_ins_srtdeel_omschr_parent), 1, 255);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Parent objectsoortomschrijving wordt afgebroken tot ['
|
||
|| v_ins_srtdeel_omschr_parent
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Parent objectomschrijving ongeldig';
|
||
v_ins_deel_omschr_parent := TRIM (v_ins_deel_omschr_parent);
|
||
|
||
IF LENGTH (v_ins_deel_omschr_parent) > 60
|
||
THEN
|
||
v_ins_deel_omschr_parent := SUBSTR (TRIM (v_ins_deel_omschr_parent), 1, 255);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Parent objectomschrijving wordt afgebroken tot ['
|
||
|| v_ins_deel_omschr_parent
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
-- De rest alleen ff trimmen.
|
||
v_prs_perslid_matchcode := TRIM (v_prs_perslid_matchcode);
|
||
v_prs_perslid_matchwaarde := TRIM (v_prs_perslid_matchwaarde);
|
||
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
|
||
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
|
||
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
|
||
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
|
||
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
|
||
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
|
||
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
|
||
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
|
||
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
|
||
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
|
||
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
|
||
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
|
||
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
|
||
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
|
||
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
|
||
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
|
||
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
|
||
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
|
||
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
|
||
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
|
||
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
|
||
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
|
||
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
|
||
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
|
||
INSERT INTO fac_imp_ins (
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_kostensoort,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
ins_deel_omschrijving,
|
||
ins_deel_opmerking,
|
||
reserveerbaar,
|
||
res_deel_eenheid,
|
||
res_deel_prijs,
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
res_deel_alg_level,
|
||
res_discipline_type,
|
||
res_discipline_omschrijving,
|
||
res_discipline_kostensoort,
|
||
prs_perslid_matchcode,
|
||
prs_perslid_matchwaarde,
|
||
ins_kenmerkwaarde1,
|
||
ins_kenmerkwaarde2,
|
||
ins_kenmerkwaarde3,
|
||
ins_kenmerkwaarde4,
|
||
ins_kenmerkwaarde5,
|
||
ins_kenmerkwaarde6,
|
||
ins_kenmerkwaarde7,
|
||
ins_kenmerkwaarde8,
|
||
ins_kenmerkwaarde9,
|
||
ins_kenmerkwaarde10,
|
||
ins_kenmerkwaarde11,
|
||
ins_kenmerkwaarde12,
|
||
ins_kenmerkwaarde13,
|
||
ins_kenmerkwaarde14,
|
||
ins_kenmerkwaarde15,
|
||
ins_kenmerkwaarde16,
|
||
ins_kenmerkwaarde17,
|
||
ins_kenmerkwaarde18,
|
||
ins_kenmerkwaarde19,
|
||
ins_kenmerkwaarde20,
|
||
ins_deel_aanmaak,
|
||
ins_deel_vervaldatum,
|
||
ins_deel_aantal,
|
||
ins_deel_externnr,
|
||
ins_srtdeel_omschr_parent,
|
||
ins_deel_omschr_parent
|
||
)
|
||
VALUES (
|
||
v_ins_discipline_omschrijving,
|
||
v_ins_discipline_kostensoort,
|
||
v_ins_srtgroep_omschrijving,
|
||
v_ins_srtdeel_code,
|
||
v_ins_srtdeel_omschrijving,
|
||
v_ins_deel_omschrijving,
|
||
v_ins_deel_opmerking,
|
||
v_reserveerbaar_n,
|
||
v_res_deel_eenheid,
|
||
v_res_deel_prijs_n,
|
||
v_alg_locatie_code,
|
||
v_alg_gebouw_code,
|
||
v_alg_verdieping_volgnr_n,
|
||
v_alg_ruimte_nr,
|
||
v_res_deel_alg_level_n,
|
||
v_res_discipline_type,
|
||
v_res_discipline_omschrijving,
|
||
v_res_discipline_kostensoort,
|
||
v_prs_perslid_matchcode,
|
||
v_prs_perslid_matchwaarde,
|
||
DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)),
|
||
DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)),
|
||
v_ins_deel_aanmaak_d,
|
||
v_ins_deel_vervaldatum_d,
|
||
v_ins_deel_aantal_n,
|
||
v_ins_deel_externnr,
|
||
v_ins_srtdeel_omschr_parent,
|
||
v_ins_deel_omschr_parent
|
||
);
|
||
|
||
COMMIT;
|
||
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',
|
||
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Objecten/aantal 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 objecten afgebroken! regel:' || v_file_index);
|
||
END fac_import_ins_body;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_ins (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_kostensoort (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT prs_kostensoort_upper,
|
||
MAX (prs_kostensoort_omschrijving) prs_kostensoort_omschrijving
|
||
FROM ( SELECT UPPER (ins_discipline_kostensoort) prs_kostensoort_upper,
|
||
MAX (ins_discipline_kostensoort) prs_kostensoort_omschrijving
|
||
FROM fac_imp_ins
|
||
WHERE ins_discipline_kostensoort IS NOT NULL
|
||
GROUP BY UPPER (ins_discipline_kostensoort)
|
||
UNION ALL
|
||
SELECT UPPER (res_discipline_kostensoort) prs_kostensoort_upper,
|
||
MAX (res_discipline_kostensoort) prs_kostensoort_omschrijving
|
||
FROM fac_imp_ins
|
||
WHERE reserveerbaar = 1 AND res_discipline_kostensoort IS NOT NULL
|
||
GROUP BY UPPER (res_discipline_kostensoort))
|
||
GROUP BY prs_kostensoort_upper;
|
||
|
||
v_kostensoort_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Fout bij toevoegen kostensoort [' || rec.prs_kostensoort_omschrijving || ']';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM prs_kostensoort
|
||
WHERE TRIM (prs_kostensoort_upper) = rec.prs_kostensoort_upper
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
INSERT INTO prs_kostensoort (prs_kostensoort_oms)
|
||
VALUES (rec.prs_kostensoort_omschrijving);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kostensoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Kostensoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_insdiscipline (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
||
UPPER (ins_discipline_kostensoort) ins_kostensoort_upper,
|
||
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving
|
||
FROM fac_imp_ins
|
||
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_discipline_kostensoort);
|
||
|
||
v_discipline_key NUMBER (10);
|
||
v_kostensoort_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Fout bij toevoegen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'INS'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
IF rec.ins_kostensoort_upper IS NULL
|
||
THEN
|
||
v_kostensoort_key := NULL;
|
||
ELSE
|
||
SELECT prs_kostensoort_key
|
||
INTO v_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE TRIM (prs_kostensoort_upper) = rec.ins_kostensoort_upper
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
END IF;
|
||
|
||
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_min_level,
|
||
ins_discipline_kpnverplicht,
|
||
prs_kostensoort_key)
|
||
VALUES ('INS',
|
||
SUBSTR (rec.ins_discipline_omschrijving, 1, 60),
|
||
1,
|
||
0,
|
||
v_kostensoort_key)
|
||
RETURNING ins_discipline_key
|
||
INTO v_discipline_key;
|
||
|
||
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
|
||
VALUES (v_discipline_key, 0);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'INS-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'INS-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_resdiscipline (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT TO_NUMBER(res_discipline_type) res_discipline_type,
|
||
UPPER (res_discipline_omschrijving) res_discipline_upper,
|
||
UPPER (res_discipline_kostensoort) res_kostensoort_upper,
|
||
MAX (res_discipline_omschrijving) res_discipline_omschrijving
|
||
FROM fac_imp_ins
|
||
WHERE reserveerbaar = 1
|
||
GROUP BY UPPER (res_discipline_omschrijving), UPPER (res_discipline_kostensoort), TO_NUMBER(res_discipline_type);
|
||
|
||
v_discipline_key NUMBER (10);
|
||
v_kostensoort_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Fout bij toevoegen RES-discipline [' || rec.res_discipline_omschrijving || ']';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'RES'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.res_discipline_upper;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
IF rec.res_kostensoort_upper IS NULL
|
||
THEN
|
||
v_kostensoort_key := NULL;
|
||
ELSE
|
||
SELECT prs_kostensoort_key
|
||
INTO v_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE TRIM (prs_kostensoort_upper) = rec.res_kostensoort_upper
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
END IF;
|
||
|
||
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_min_level,
|
||
ins_discipline_kpnverplicht,
|
||
prs_kostensoort_key)
|
||
VALUES ('RES',
|
||
SUBSTR (rec.res_discipline_omschrijving, 1, 60),
|
||
COALESCE(rec.res_discipline_type, 1),
|
||
0,
|
||
v_kostensoort_key)
|
||
RETURNING ins_discipline_key
|
||
INTO v_discipline_key;
|
||
|
||
INSERT INTO res_disc_params (res_ins_discipline_key)
|
||
VALUES (v_discipline_key);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'RES-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'RES-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_srtgroep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
||
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
||
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
||
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
|
||
FROM fac_imp_ins
|
||
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving);
|
||
|
||
v_discipline_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg := 'Fout bij bepalen discipline';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'INS'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
||
|
||
v_errormsg :=
|
||
'Fout bij toevoegen groepsoort [' || rec.ins_srtgroep_omschrijving || '] ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_srtgroep
|
||
WHERE ins_srtgroep_verwijder IS NULL
|
||
AND ins_srtgroep_module = 'INS'
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
INSERT INTO ins_srtgroep (ins_discipline_key,
|
||
ins_srtgroep_module,
|
||
ins_srtgroep_omschrijving)
|
||
VALUES (v_discipline_key,
|
||
'INS',
|
||
SUBSTR (TRIM (rec.ins_srtgroep_omschrijving), 1, 60));
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Groepsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
||
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
||
UPPER (ins_srtdeel_code) ins_srtdeel_code_upper,
|
||
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
||
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
||
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
|
||
MAX (ins_srtdeel_code) ins_srtdeel_code,
|
||
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
|
||
FROM fac_imp_ins
|
||
GROUP BY UPPER (ins_discipline_omschrijving),
|
||
UPPER (ins_srtgroep_omschrijving),
|
||
UPPER (ins_srtdeel_code),
|
||
UPPER (ins_srtdeel_omschrijving);
|
||
|
||
v_discipline_key NUMBER (10);
|
||
v_srtgroep_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg := 'Fout bij bepalen discipline';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'INS'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
||
|
||
v_errormsg := 'Fout bij bepalen groepsoort';
|
||
|
||
SELECT ins_srtgroep_key
|
||
INTO v_srtgroep_key
|
||
FROM ins_srtgroep
|
||
WHERE ins_srtgroep_verwijder IS NULL
|
||
AND ins_srtgroep_module = 'INS'
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
||
|
||
v_errormsg :=
|
||
'Fout bij toevoegen objectsoort [' || rec.ins_srtdeel_omschrijving || ']';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = v_srtgroep_key
|
||
AND TRIM (ins_srtdeel_code_upper) = rec.ins_srtdeel_code_upper
|
||
AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
-- binding 17 betekent ruimtegebonden of persoonsgebonden
|
||
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
||
ins_srtdeel_module,
|
||
ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_binding)
|
||
VALUES (v_srtgroep_key,
|
||
'INS',
|
||
rec.ins_srtdeel_code,
|
||
rec.ins_srtdeel_omschrijving,
|
||
17);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
-- p_kenmerkwaarde = 'Parkeercode|1=37-ZB-DR'. Ofwel: kenmerk_omschrijving|groep=waarde.
|
||
-- p_kenmerkwaarde = '234|1=37-ZB-DR'. Ofwel: kenmerk_key|groep=waarde.
|
||
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
||
p_kenmerkwaarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_key NUMBER;
|
||
v_srtkenmerk_key NUMBER;
|
||
v_groep NUMBER;
|
||
v_kenmerk VARCHAR2 (50);
|
||
v_waarde VARCHAR2 (4053);
|
||
v_srtkenmerk_type ins_srtkenmerk.ins_srtkenmerk_kenmerktype%TYPE;
|
||
ccount NUMBER;
|
||
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
|
||
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
|
||
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_kenmerkdeel_key NUMBER;
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
BEGIN
|
||
IF p_kenmerkwaarde IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerk [' || SUBSTR(p_kenmerkwaarde, 1, 200) || ']';
|
||
|
||
v_kenmerk := SUBSTR (p_kenmerkwaarde, 1, INSTR (p_kenmerkwaarde, '|') - 1);
|
||
v_groep := fac.safe_to_number (
|
||
SUBSTR (p_kenmerkwaarde,
|
||
INSTR (p_kenmerkwaarde, '|') + 1,
|
||
INSTR (p_kenmerkwaarde, '=') - 1 - INSTR (p_kenmerkwaarde, '|')));
|
||
v_waarde := SUBSTR (p_kenmerkwaarde, INSTR (p_kenmerkwaarde, '=') + 1);
|
||
|
||
IF fac.safe_to_number (v_kenmerk) IS NULL
|
||
THEN
|
||
-- Er kunnen drie kenmerken met dezelfde omschrijving gedefinieerd worden voor een object,
|
||
-- namenlijk op drie niveaus discipline (D), 0bjectgroep (G) en objectsoort (S).
|
||
-- Bij meerdere dezelfde kenmerken nemen we het kenmerk met de laagste volgnummer.
|
||
SELECT ins_kenmerk_key,
|
||
ins_srtkenmerk_key,
|
||
ins_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key,
|
||
v_srtkenmerk_key,
|
||
v_srtkenmerk_type
|
||
FROM ( SELECT k.ins_kenmerk_key,
|
||
sk.ins_srtkenmerk_key,
|
||
sk.ins_srtkenmerk_kenmerktype,
|
||
k.ins_kenmerk_volgnummer
|
||
FROM ins_deel d,
|
||
ins_srtdeel sd,
|
||
ins_srtgroep sg,
|
||
ins_v_aanwezigkenmerk k,
|
||
ins_v_aanwezigsrtkenmerk sk
|
||
WHERE d.ins_deel_key = p_deel_key
|
||
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
||
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
||
AND k.ins_kenmerk_groep = v_groep
|
||
AND ((k.ins_srtinstallatie_key = sd.ins_srtdeel_key
|
||
AND k.ins_kenmerk_niveau = 'S')
|
||
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key
|
||
AND k.ins_kenmerk_niveau = 'G')
|
||
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key
|
||
AND k.ins_kenmerk_niveau = 'D'))
|
||
AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kenmerk)
|
||
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
ORDER BY k.ins_kenmerk_volgnummer)
|
||
WHERE ROWNUM = 1;
|
||
ELSE
|
||
SELECT k.ins_kenmerk_key,
|
||
sk.ins_srtkenmerk_key,
|
||
sk.ins_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key,
|
||
v_srtkenmerk_key,
|
||
v_srtkenmerk_type
|
||
FROM ins_v_aanwezigkenmerk k,
|
||
ins_v_aanwezigsrtkenmerk sk
|
||
WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key
|
||
AND k.ins_kenmerk_groep = v_groep
|
||
AND k.ins_kenmerk_key = v_kenmerk
|
||
AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
ORDER BY k.ins_kenmerk_volgnummer;
|
||
END IF;
|
||
|
||
IF v_waarde IS NOT NULL
|
||
THEN
|
||
IF v_srtkenmerk_type IN ('R', 'r', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM ins_srtkenmerk sk,
|
||
fac_kenmerkdomein d
|
||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
|
||
IF ccount = 1
|
||
THEN -- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM ins_srtkenmerk sk,
|
||
fac_kenmerkdomein d,
|
||
fac_v_aanwezigusrdata ud
|
||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_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 ins_srtkenmerk sk,
|
||
fac_kenmerkdomein d
|
||
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.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', v_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)
|
||
NULL; -- v_waarde := p_waarde;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bepalen huidige waarde';
|
||
|
||
SELECT COUNT (*),
|
||
MAX (ins_kenmerkdeel_key)
|
||
INTO ccount,
|
||
v_kenmerkdeel_key
|
||
FROM ins_v_aanwezigkenmerkdeel
|
||
WHERE ins_deel_key = p_deel_key
|
||
AND ins_kenmerk_key = v_kenmerk_key;
|
||
|
||
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
|
||
THEN
|
||
v_waarde := REPLACE (v_waarde, ',', '.');
|
||
END IF;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
|
||
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
||
ins_kenmerk_key,
|
||
ins_kenmerkdeel_waarde)
|
||
VALUES (p_deel_key,
|
||
v_kenmerk_key,
|
||
v_waarde);
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_waarde = v_waarde
|
||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
||
END IF;
|
||
ELSE
|
||
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
|
||
DELETE ins_kenmerkdeel
|
||
WHERE ins_kenmerk_key = v_kenmerk_key
|
||
AND ins_deel_key = p_deel_key;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'upsert_inskenmerk');
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_deel (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT ins_discipline_omschrijving,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
ins_deel_omschrijving,
|
||
ins_deel_opmerking,
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
reserveerbaar,
|
||
res_discipline_omschrijving,
|
||
res_deel_eenheid,
|
||
res_deel_prijs,
|
||
res_deel_alg_level,
|
||
prs_perslid_matchcode,
|
||
prs_perslid_matchwaarde,
|
||
ins_kenmerkwaarde1,
|
||
ins_kenmerkwaarde2,
|
||
ins_kenmerkwaarde3,
|
||
ins_kenmerkwaarde4,
|
||
ins_kenmerkwaarde5,
|
||
ins_kenmerkwaarde6,
|
||
ins_kenmerkwaarde7,
|
||
ins_kenmerkwaarde8,
|
||
ins_kenmerkwaarde9,
|
||
ins_kenmerkwaarde10,
|
||
ins_kenmerkwaarde11,
|
||
ins_kenmerkwaarde12,
|
||
ins_kenmerkwaarde13,
|
||
ins_kenmerkwaarde14,
|
||
ins_kenmerkwaarde15,
|
||
ins_kenmerkwaarde16,
|
||
ins_kenmerkwaarde17,
|
||
ins_kenmerkwaarde18,
|
||
ins_kenmerkwaarde19,
|
||
ins_kenmerkwaarde20,
|
||
ins_deel_aanmaak,
|
||
ins_deel_vervaldatum,
|
||
ins_deel_aantal,
|
||
ins_deel_externnr,
|
||
ins_srtdeel_omschr_parent,
|
||
ins_deel_omschr_parent
|
||
FROM fac_imp_ins;
|
||
|
||
v_discipline_key NUMBER (10);
|
||
v_rdiscipline_key NUMBER (10);
|
||
v_srtgroep_key NUMBER (10);
|
||
v_srtdeel_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_matchkolom VARCHAR2 (255);
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_ruimte_type VARCHAR2 (10);
|
||
v_deel_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
pcount NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_insnew NUMBER (10);
|
||
v_count_insupd NUMBER (10);
|
||
v_count_resnew NUMBER (10);
|
||
v_srtnoti_code VARCHAR2 (6);
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
v_ins_deel_aanmaak_d DATE;
|
||
v_ins_deel_vervaldatum_d DATE;
|
||
v_ins_deel_aantal_n NUMBER(8,2);
|
||
v_ins_deel_externnr VARCHAR2(255);
|
||
v_ins_deel_parent_key NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_insnew := 0;
|
||
v_count_insupd := 0;
|
||
v_count_resnew := 0;
|
||
v_aanduiding := '';
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_ins_deel_aanmaak_d := rec.ins_deel_aanmaak;
|
||
v_ins_deel_vervaldatum_d := rec.ins_deel_vervaldatum;
|
||
v_ins_deel_aantal_n := rec.ins_deel_aantal;
|
||
v_ins_deel_externnr := rec.ins_deel_externnr;
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.ins_discipline_omschrijving
|
||
|| '|'
|
||
|| rec.ins_srtgroep_omschrijving
|
||
|| '|'
|
||
|| rec.ins_srtdeel_code
|
||
|| '|'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| '|'
|
||
|| rec.ins_deel_omschrijving
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen discipline';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'INS'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
||
UPPER (rec.ins_discipline_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij bepalen groepsoort';
|
||
|
||
SELECT ins_srtgroep_key
|
||
INTO v_srtgroep_key
|
||
FROM ins_srtgroep
|
||
WHERE ins_srtgroep_verwijder IS NULL
|
||
AND ins_srtgroep_module = 'INS'
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND TRIM (ins_srtgroep_upper) = UPPER (rec.ins_srtgroep_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij bepalen objectsoort';
|
||
|
||
SELECT ins_srtdeel_key
|
||
INTO v_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = v_srtgroep_key
|
||
AND TRIM (UPPER(ins_srtdeel_code)) = UPPER (rec.ins_srtdeel_code)
|
||
AND TRIM (ins_srtdeel_upper) = UPPER (rec.ins_srtdeel_omschrijving);
|
||
|
||
v_locatie_key := NULL;
|
||
|
||
IF rec.alg_locatie_code IS NOT NULL
|
||
THEN -- ruimtegebonden object
|
||
v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
|
||
|
||
v_errormsg := 'Fout bij bepalen gebouw [' || rec.alg_gebouw_code || ']';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
|
||
|
||
v_errormsg :=
|
||
'Fout bij bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE alg_gebouw_key = v_gebouw_key
|
||
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
|
||
|
||
v_errormsg := 'Fout bij bepalen ruimte [' || rec.alg_ruimte_nr || ']';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_v_aanwezigruimte
|
||
WHERE alg_verdieping_key = v_verdieping_key
|
||
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
|
||
|
||
v_ruimte_type := 'R';
|
||
|
||
-- ruimtegebonden objecten hebben een unieke ID binnen locatie
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_v_aanwezigdeel
|
||
WHERE ins_deel_module = 'INS'
|
||
AND ins_srtdeel_key = v_srtdeel_key
|
||
AND ins_alg_ruimte_type = v_ruimte_type -- R
|
||
AND ins_alg_locatie_key = v_locatie_key
|
||
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
||
ELSE -- persoonsgebonden object
|
||
v_matchkolom := '';
|
||
|
||
CASE rec.prs_perslid_matchcode
|
||
WHEN '1'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
||
WHEN '10'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
||
WHEN '2'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
||
WHEN '20'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
||
WHEN '3'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_KEY';
|
||
WHEN '30'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_KEY';
|
||
WHEN '4'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_NR';
|
||
WHEN '40'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_NR';
|
||
WHEN '5'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
||
WHEN '50'
|
||
THEN
|
||
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
||
ELSE
|
||
-- voor developers only: indien geen code wordt gebruikt,
|
||
-- kan als persoonmatchcode een kolom uit de perslid-tabel
|
||
-- worden ingevoerd, bijvoorbeeld: prs_perslid_oslogin2
|
||
v_matchkolom := rec.prs_perslid_matchcode;
|
||
END CASE;
|
||
|
||
v_errormsg := 'Fout bij bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
|
||
sql_stmt :=
|
||
'SELECT MIN (prs_perslid_key), COUNT (prs_perslid_key) '
|
||
|| ' FROM prs_v_aanwezigperslid '
|
||
|| ' WHERE UPPER ('
|
||
|| v_matchkolom
|
||
|| ') = UPPER (:pwaarde) ';
|
||
--dbms_output.put_line(rec.prs_perslid_matchwaarde);
|
||
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', rec.prs_perslid_matchwaarde);
|
||
DBMS_SQL.define_column(l_cursor_1, 1, v_ruimte_key);
|
||
DBMS_SQL.define_column(l_cursor_1, 2, pcount);
|
||
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
||
-- Bij no rows gaat-ie naar de exception. Moet daar dan nog een cursor dicht??
|
||
DBMS_SQL.column_value (l_cursor_1, 1, v_ruimte_key);
|
||
DBMS_SQL.column_value (l_cursor_1, 2, pcount);
|
||
DBMS_SQL.close_cursor(l_cursor_1);
|
||
--dbms_output.put_line(pcount);
|
||
|
||
IF pcount != 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Kan persoon niet 1-duidig bepalen');
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bepalen type koppeling';
|
||
|
||
IF rec.prs_perslid_matchcode in ('10','20','30','40','50') THEN
|
||
v_ruimte_type := 'A' ;
|
||
|
||
-- Koppeling aan Afdeling van desbetreffende
|
||
SELECT prs_afdeling_key
|
||
INTO v_ruimte_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_key = v_ruimte_key;
|
||
|
||
ELSE
|
||
v_ruimte_type := 'P' ;
|
||
END IF;
|
||
|
||
-- persoonsgebonden objecten hebben een unieke ID
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_v_aanwezigdeel
|
||
WHERE ins_deel_module = 'INS'
|
||
AND ins_srtdeel_key = v_srtdeel_key
|
||
AND ins_alg_ruimte_type = v_ruimte_type -- P
|
||
AND ins_alg_locatie_key IS NULL
|
||
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
||
END IF;
|
||
|
||
IF rec.ins_deel_omschr_parent IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen parent object';
|
||
|
||
SELECT d.ins_deel_key
|
||
INTO v_ins_deel_parent_key
|
||
FROM ins_v_aanwezigdeel d
|
||
, ins_srtdeel sd
|
||
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
|
||
AND TRIM (sd.ins_srtdeel_upper) = UPPER (rec.ins_srtdeel_omschr_parent)
|
||
AND TRIM (d.ins_deel_upper) = UPPER (rec.ins_deel_omschr_parent)
|
||
AND sd.ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS';
|
||
END IF;
|
||
|
||
IF ccount = 0
|
||
THEN -- toevoegen object!
|
||
v_errormsg := 'Fout bij toevoegen INS-object';
|
||
|
||
INSERT INTO ins_deel (ins_discipline_key,
|
||
ins_srtdeel_key,
|
||
ins_deel_module,
|
||
ins_deel_omschrijving,
|
||
ins_deel_opmerking,
|
||
ins_alg_ruimte_key,
|
||
ins_alg_ruimte_type,
|
||
ins_alg_locatie_key,
|
||
ins_deel_aanmaak,
|
||
ins_deel_vervaldatum,
|
||
ins_deel_aantal,
|
||
ins_deel_externnr,
|
||
ins_deel_parent_key)
|
||
VALUES (v_discipline_key,
|
||
v_srtdeel_key,
|
||
'INS',
|
||
rec.ins_deel_omschrijving,
|
||
rec.ins_deel_opmerking,
|
||
v_ruimte_key,
|
||
v_ruimte_type,
|
||
v_locatie_key,
|
||
v_ins_deel_aanmaak_d,
|
||
v_ins_deel_vervaldatum_d,
|
||
v_ins_deel_aantal_n,
|
||
v_ins_deel_externnr,
|
||
v_ins_deel_parent_key)
|
||
RETURNING ins_deel_key
|
||
INTO v_deel_key;
|
||
|
||
-- Overslaan als reserveerbaar en geen RES-discipline of andersom,
|
||
-- dus verder geen controle op eventuele inconsistentie!
|
||
IF (rec.reserveerbaar = 1 AND rec.res_discipline_omschrijving IS NOT NULL)
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij bepalen RES-discipline ['
|
||
|| rec.res_discipline_omschrijving
|
||
|| ']';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_rdiscipline_key
|
||
FROM res_discipline
|
||
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'RES'
|
||
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
||
UPPER (rec.res_discipline_omschrijving);
|
||
|
||
v_errormsg := 'Fout bij toevoegen RES-object';
|
||
|
||
INSERT INTO res_deel (res_ins_deel_key,
|
||
res_deel_omschrijving,
|
||
res_deel_opmerking,
|
||
res_deel_eenheid,
|
||
res_deel_prijs,
|
||
res_discipline_key,
|
||
res_deel_alg_level)
|
||
VALUES (v_deel_key,
|
||
rec.ins_deel_omschrijving,
|
||
rec.ins_deel_opmerking,
|
||
rec.res_deel_eenheid,
|
||
rec.res_deel_prijs,
|
||
v_rdiscipline_key,
|
||
rec.res_deel_alg_level);
|
||
|
||
v_count_resnew := v_count_resnew + 1;
|
||
END IF;
|
||
|
||
v_srtnoti_code := 'INSNEW';
|
||
v_count_insnew := v_count_insnew + 1;
|
||
ELSE -- bijwerken object!
|
||
v_errormsg := 'Fout bij bepalen INS-object';
|
||
|
||
SELECT ins_deel_key
|
||
INTO v_deel_key
|
||
FROM ins_v_aanwezigdeel
|
||
WHERE ins_deel_module = 'INS'
|
||
AND ins_srtdeel_key = v_srtdeel_key
|
||
AND ins_alg_ruimte_type = v_ruimte_type -- R/P
|
||
AND COALESCE (ins_alg_locatie_key, -1) = COALESCE (v_locatie_key, -1) -- gevuld/NULL
|
||
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
||
|
||
v_srtnoti_code := 'INSUPD';
|
||
v_count_insupd := v_count_insupd + 1;
|
||
END IF;
|
||
|
||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||
-- (bijwerken kan wel, maar wissen dus niet)! ins_kenmerkwaarde1
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde1);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde2);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde3);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde4);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde5);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde6);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde7);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde8);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde9);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde10);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde11);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde12);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde13);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde14);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde15);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde16);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde17);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde18);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde19);
|
||
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde20);
|
||
|
||
fac.trackaction (v_srtnoti_code,
|
||
v_deel_key,
|
||
sys_context('USERENV', 'CLIENT_IDENTIFIER'),
|
||
NULL,
|
||
NULL);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'INS-objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'INS-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_insnew),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'INS-objecten/aantal bijgewerkt: ' || TO_CHAR (v_count_insupd),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'RES-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_resnew),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
add_kostensoort (p_import_key);
|
||
add_insdiscipline (p_import_key);
|
||
add_resdiscipline (p_import_key);
|
||
add_srtgroep (p_import_key);
|
||
add_srtdeel (p_import_key);
|
||
add_deel (p_import_key);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Importproces objecten afgebroken!');
|
||
END fac_update_ins;
|
||
/
|
||
|
||
-- UWVA#22765 - SLE: Verfijning sleutelbeheer
|
||
CREATE OR REPLACE PROCEDURE fac_import_sle (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- 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 VARCHAR (200);
|
||
-- De importvelden
|
||
v_ins_srtdeel_code VARCHAR2 (255); -- C10
|
||
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
|
||
v_alg_locatie_code VARCHAR2 (255); -- C10
|
||
v_alg_gebouw_code VARCHAR2 (255); -- C12
|
||
v_alg_verdieping_code VARCHAR2 (255); -- C10
|
||
v_alg_ruimte_nr VARCHAR2 (255); -- C20
|
||
v_cil_gebouw_code VARCHAR2 (255); -- C12
|
||
v_cil_verdieping_code VARCHAR2 (255); -- C10
|
||
v_cil_ruimte_nr VARCHAR2 (255); -- C10
|
||
v_aant_sleutels_in_set VARCHAR2 (255); -- N3
|
||
v_aant_sleutels_in_set_n NUMBER (3); -- N3
|
||
v_ins_kenmerkwaarde1 VARCHAR2 (4000);
|
||
v_ins_kenmerkwaarde2 VARCHAR2 (4000);
|
||
v_ins_kenmerkwaarde3 VARCHAR2 (4000);
|
||
v_ins_kenmerkwaarde4 VARCHAR2 (4000);
|
||
v_ins_kenmerkwaarde5 VARCHAR2 (4000);
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_sle;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_cil_gebouw_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_cil_verdieping_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_cil_ruimte_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_aant_sleutels_in_set);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_ins_srtdeel_code
|
||
|| '|'
|
||
|| v_ins_srtdeel_omschrijving
|
||
|| '|'
|
||
|| v_alg_locatie_code
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop.
|
||
-- Ik controleer daarbij alleen alle CORE-kolommen, dus niet kenmerk1 t/m 5!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_ins_srtdeel_code) = 'SLEUTELSETCODE'
|
||
AND UPPER (v_ins_srtdeel_omschrijving) =
|
||
'SLEUTELSETOMSCHRIJVING'
|
||
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_alg_gebouw_code) = 'STAMGEBOUWCODE'
|
||
AND UPPER (v_alg_verdieping_code) = 'STAMVERDIEPINGCODE'
|
||
AND UPPER (v_alg_ruimte_nr) = 'STAMRUIMTENUMMER'
|
||
AND UPPER (v_cil_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_cil_verdieping_code) = 'VERDIEPINGCODE'
|
||
AND UPPER (v_cil_ruimte_nr) = 'RUIMTENUMMER'
|
||
AND UPPER (v_aant_sleutels_in_set) = 'AANTALEXEMPLAREN'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Soortcode ongeldig';
|
||
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
|
||
|
||
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Soortomschrijving ongeldig';
|
||
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
|
||
|
||
IF v_ins_srtdeel_omschrijving IS NULL
|
||
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Locatiecode ongeldig';
|
||
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
||
|
||
IF v_alg_locatie_code IS NULL OR LENGTH (v_alg_locatie_code) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Stamgebouwcode ongeldig';
|
||
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
||
|
||
IF v_alg_gebouw_code IS NULL OR LENGTH (v_alg_gebouw_code) > 12
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Stamverdiepingcode ongeldig';
|
||
v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
|
||
|
||
IF v_alg_verdieping_code IS NULL
|
||
OR LENGTH (v_alg_verdieping_code) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Stamruimtenummer ongeldig';
|
||
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
||
|
||
IF v_alg_ruimte_nr IS NULL OR LENGTH (v_alg_ruimte_nr) > 20
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Gebouwcode/cilinder ongeldig';
|
||
v_cil_gebouw_code := TRIM (v_cil_gebouw_code);
|
||
|
||
IF v_cil_gebouw_code IS NULL OR LENGTH (v_cil_gebouw_code) > 12
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Verdiepingcode/cilinder ongeldig';
|
||
v_cil_verdieping_code := TRIM (v_cil_verdieping_code);
|
||
|
||
IF v_cil_verdieping_code IS NULL
|
||
OR LENGTH (v_cil_verdieping_code) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Ruimtenummer/cilinder ongeldig';
|
||
v_cil_ruimte_nr := TRIM (v_cil_ruimte_nr);
|
||
|
||
IF v_cil_ruimte_nr IS NULL OR LENGTH (v_cil_ruimte_nr) > 10
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Aantal exemplaren ongeldig';
|
||
v_aant_sleutels_in_set := TRIM (v_aant_sleutels_in_set);
|
||
|
||
IF (COALESCE (
|
||
LENGTH (
|
||
ROUND (fac.safe_to_number (v_aant_sleutels_in_set))
|
||
),
|
||
10
|
||
)) > 3
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_aant_sleutels_in_set_n :=
|
||
ROUND (fac.safe_to_number (v_aant_sleutels_in_set));
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO fac_imp_sle (ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_code,
|
||
alg_ruimte_nr,
|
||
cil_gebouw_code,
|
||
cil_verdieping_code,
|
||
cil_ruimte_nr,
|
||
aant_sleutels_in_set,
|
||
ins_kenmerkwaarde1,
|
||
ins_kenmerkwaarde2,
|
||
ins_kenmerkwaarde3,
|
||
ins_kenmerkwaarde4,
|
||
ins_kenmerkwaarde5)
|
||
VALUES (v_ins_srtdeel_code,
|
||
v_ins_srtdeel_omschrijving,
|
||
v_alg_locatie_code,
|
||
v_alg_gebouw_code,
|
||
v_alg_verdieping_code,
|
||
v_alg_ruimte_nr,
|
||
v_cil_gebouw_code,
|
||
v_cil_verdieping_code,
|
||
v_cil_ruimte_nr,
|
||
v_aant_sleutels_in_set_n,
|
||
TRIM (v_ins_kenmerkwaarde1),
|
||
TRIM (v_ins_kenmerkwaarde2),
|
||
TRIM (v_ins_kenmerkwaarde3),
|
||
TRIM (v_ins_kenmerkwaarde4),
|
||
TRIM (v_ins_kenmerkwaarde5));
|
||
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_SLE.'
|
||
);
|
||
|
||
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',
|
||
'Sleutelsets/aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Sleutelsets/aantal 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 sleutelsets afgebroken!');
|
||
END fac_import_sle;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_sle (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT cs.ins_srtgroep_key cilindergroep_key,
|
||
ss.ins_srtgroep_key sleutelgroep_key,
|
||
UPPER (x.ins_srtdeel_code) ins_srtdeel_code_upper,
|
||
UPPER (x.ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
||
MIN (x.ins_srtdeel_code) ins_srtdeel_code,
|
||
MIN (x.ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
|
||
FROM (SELECT ins_srtgroep_key
|
||
FROM fac_setting s, ins_srtgroep sg
|
||
WHERE UPPER (s.fac_setting_name) =
|
||
'CIL_INS_SRT_GROEP_KEY'
|
||
AND fac.safe_to_number (s.fac_setting_pvalue) =
|
||
sg.ins_srtgroep_key) cs,
|
||
(SELECT ins_srtgroep_key
|
||
FROM fac_setting s, ins_srtgroep sg
|
||
WHERE UPPER (s.fac_setting_name) =
|
||
'SLE_INS_SRT_GROEP_KEY'
|
||
AND fac.safe_to_number (s.fac_setting_pvalue) =
|
||
sg.ins_srtgroep_key) ss,
|
||
fac_imp_sle x
|
||
GROUP BY cs.ins_srtgroep_key,
|
||
ss.ins_srtgroep_key,
|
||
UPPER (x.ins_srtdeel_code),
|
||
UPPER (x.ins_srtdeel_omschrijving)
|
||
ORDER BY 1,
|
||
2,
|
||
3,
|
||
4;
|
||
|
||
v_count_tot NUMBER (10);
|
||
v_count_cs NUMBER (10);
|
||
v_count_ss NUMBER (10);
|
||
v_aanduiding VARCHAR (200);
|
||
v_cilindergroep_key NUMBER (10);
|
||
v_cilinderset_key NUMBER (10);
|
||
v_sleutelgroep_key NUMBER (10);
|
||
v_sleutelset_key NUMBER (10);
|
||
ccount NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_cs := 0;
|
||
v_count_ss := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.ins_srtdeel_code
|
||
|| '|'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_errormsg := 'Fout bij bepalen INS-Cilinderset (tbv. koppeling)';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.cilindergroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen INS-Cilinderset (tbv. koppeling)';
|
||
|
||
-- Binding 5 betekent ruimte=1 of terreingebonden=4
|
||
-- (Ruimte- en Terrein-vinkje gezet)!
|
||
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
||
ins_srtdeel_module,
|
||
ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_binding,
|
||
ins_srtdeel_uitleenbaar)
|
||
VALUES (rec.cilindergroep_key,
|
||
'INS',
|
||
rec.ins_srtdeel_code_upper,
|
||
rec.ins_srtdeel_omschrijving,
|
||
5,
|
||
1)
|
||
RETURNING ins_srtdeel_key INTO v_cilinderset_key;
|
||
|
||
v_count_cs := v_count_cs + 1;
|
||
ELSE
|
||
SELECT ins_srtdeel_key
|
||
INTO v_cilinderset_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.cilindergroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bepalen INS-Sleutelset (tbv. koppeling)';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.sleutelgroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen INS-Sleutelset (tbv. koppeling)';
|
||
|
||
-- Binding 5 betekent ruimte=1 of terreingebonden=4
|
||
-- (Ruimte- en Terrein-vinkje gezet)!
|
||
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
||
ins_srtdeel_module,
|
||
ins_srtdeel_code,
|
||
ins_srtdeel_omschrijving,
|
||
ins_srtdeel_binding,
|
||
ins_srtdeel_uitleenbaar)
|
||
VALUES (rec.sleutelgroep_key,
|
||
'INS',
|
||
rec.ins_srtdeel_code_upper,
|
||
rec.ins_srtdeel_omschrijving,
|
||
5,
|
||
1)
|
||
RETURNING ins_srtdeel_key INTO v_sleutelset_key;
|
||
|
||
v_count_ss := v_count_ss + 1;
|
||
ELSE
|
||
SELECT ins_srtdeel_key
|
||
INTO v_sleutelset_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.sleutelgroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij toevoegen INS-Cilinderset-Sleutelset';
|
||
|
||
INSERT INTO ins_srtdeel_srtdeel (ins_srtdeel_key_1, ins_srtdeel_key_2, ins_module)
|
||
SELECT v_cilinderset_key, v_sleutelset_key, 'SLE'
|
||
FROM DUAL
|
||
WHERE NOT EXISTS
|
||
(SELECT 1
|
||
FROM ins_srtdeel_srtdeel
|
||
WHERE ins_srtdeel_key_1 = v_cilinderset_key
|
||
AND ins_srtdeel_key_2 = v_sleutelset_key
|
||
AND ins_module = 'SLE');
|
||
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,
|
||
'');
|
||
END;
|
||
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'INS-Cilindersets/#toegevoegd: '
|
||
|| TO_CHAR (v_count_cs)
|
||
|| ' (van '
|
||
|| TO_CHAR (v_count_tot)
|
||
|| ')',
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'INS-Sleutelsets/#toegevoegd: '
|
||
|| TO_CHAR (v_count_ss)
|
||
|| ' (van '
|
||
|| TO_CHAR (v_count_tot)
|
||
|| ')',
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_cilinders (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT sg.ins_discipline_key,
|
||
sg.ins_srtgroep_key,
|
||
x.ins_srtdeel_code,
|
||
x.ins_srtdeel_omschrijving,
|
||
x.alg_locatie_code,
|
||
x.alg_gebouw_code,
|
||
x.alg_verdieping_code,
|
||
x.alg_ruimte_nr,
|
||
x.cil_gebouw_code,
|
||
x.cil_verdieping_code,
|
||
x.cil_ruimte_nr
|
||
FROM fac_setting s, ins_srtgroep sg, fac_imp_sle x
|
||
WHERE UPPER (s.fac_setting_name) = 'CIL_INS_SRT_GROEP_KEY'
|
||
AND fac.safe_to_number (s.fac_setting_pvalue) =
|
||
sg.ins_srtgroep_key
|
||
ORDER BY 1,
|
||
2,
|
||
3,
|
||
4,
|
||
5,
|
||
9,
|
||
10,
|
||
11;
|
||
|
||
v_count_tot NUMBER (10);
|
||
v_count_create NUMBER (10);
|
||
v_aanduiding VARCHAR (200);
|
||
v_srtdeel_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_alg_gebouw_key NUMBER (10);
|
||
v_alg_verdieping_key NUMBER (10);
|
||
v_alg_ruimte_key NUMBER (10);
|
||
v_cil_gebouw_key NUMBER (10);
|
||
v_cil_verdieping_key NUMBER (10);
|
||
v_cil_ruimte_key NUMBER (10);
|
||
v_deel_oms VARCHAR2 (60);
|
||
ccount NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_create := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.ins_srtdeel_code
|
||
|| '|'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| '|'
|
||
|| rec.alg_locatie_code
|
||
|| '|'
|
||
|| rec.cil_gebouw_code
|
||
|| '|'
|
||
|| rec.cil_verdieping_code
|
||
|| '|'
|
||
|| rec.cil_ruimte_nr
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen INS-Cilinderset';
|
||
|
||
SELECT ins_srtdeel_key
|
||
INTO v_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.ins_srtgroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
|
||
v_errormsg := 'Fout bij bepalen locatie (tbv. cilinders)';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_verwijder IS NULL
|
||
AND UPPER (TRIM (alg_locatie_code)) =
|
||
UPPER (TRIM (rec.alg_locatie_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamgebouw (tbv. cilinders)';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_alg_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) =
|
||
UPPER (TRIM (rec.alg_gebouw_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamverdieping (tbv. cilinders)';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_alg_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_verwijder IS NULL
|
||
AND alg_gebouw_key = v_alg_gebouw_key
|
||
AND UPPER (TRIM (alg_verdieping_code)) =
|
||
UPPER (TRIM (rec.alg_verdieping_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamruimte (tbv. cilinders)';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_verwijder IS NULL
|
||
AND alg_verdieping_key = v_alg_verdieping_key
|
||
AND UPPER (TRIM (alg_ruimte_nr)) =
|
||
UPPER (TRIM (rec.alg_ruimte_nr));
|
||
|
||
v_errormsg := 'Fout bij bepalen cilindergebouw';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_cil_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) =
|
||
UPPER (TRIM (rec.cil_gebouw_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen cilinderverdieping';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_cil_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_verwijder IS NULL
|
||
AND alg_gebouw_key = v_cil_gebouw_key
|
||
AND UPPER (TRIM (alg_verdieping_code)) =
|
||
UPPER (TRIM (rec.cil_verdieping_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen cilinderruimte';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_cil_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_verwijder IS NULL
|
||
AND alg_verdieping_key = v_cil_verdieping_key
|
||
AND UPPER (TRIM (alg_ruimte_nr)) =
|
||
UPPER (TRIM (rec.cil_ruimte_nr));
|
||
|
||
-- Binnen een dezelfde cilinderset kunnen 1 of meer cilinders zijn
|
||
-- "uitgeleend" aan dezelfde ruimte (ruimte kan >1 deuren hebben).
|
||
v_errormsg := 'Fout bij bepalen default ID (cilinder)';
|
||
|
||
SELECT INS.nextdescription (rec.ins_srtdeel_code, NULL)
|
||
INTO v_deel_oms
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_key = v_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij toevoegen cilinder';
|
||
|
||
INSERT INTO ins_deel (ins_discipline_key,
|
||
ins_srtdeel_key,
|
||
ins_deel_module,
|
||
ins_deel_omschrijving,
|
||
ins_alg_ruimte_key,
|
||
ins_alg_ruimte_type,
|
||
ins_alg_locatie_key,
|
||
ins_alg_ruimte_key_org,
|
||
ins_alg_ruimte_type_org)
|
||
VALUES (rec.ins_discipline_key,
|
||
v_srtdeel_key,
|
||
'INS',
|
||
v_deel_oms,
|
||
v_cil_ruimte_key,
|
||
'R',
|
||
v_locatie_key,
|
||
v_alg_ruimte_key,
|
||
'R');
|
||
|
||
v_count_create := v_count_create + 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;
|
||
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'INS-Cilinders/#toegevoegd: '
|
||
|| TO_CHAR (v_count_create)
|
||
|| ' (van '
|
||
|| TO_CHAR (v_count_tot)
|
||
|| ')',
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_sleutels (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT sg.ins_discipline_key,
|
||
sg.ins_srtgroep_key,
|
||
x.ins_srtdeel_code,
|
||
x.ins_srtdeel_omschrijving,
|
||
x.alg_locatie_code,
|
||
x.alg_gebouw_code,
|
||
x.alg_verdieping_code,
|
||
x.alg_ruimte_nr,
|
||
MAX (x.aant_sleutels_in_set) aant_sleutels_in_set
|
||
FROM fac_setting s, ins_srtgroep sg, fac_imp_sle x
|
||
WHERE UPPER (s.fac_setting_name) = 'SLE_INS_SRT_GROEP_KEY'
|
||
AND fac.safe_to_number (s.fac_setting_pvalue) =
|
||
sg.ins_srtgroep_key
|
||
GROUP BY sg.ins_discipline_key,
|
||
sg.ins_srtgroep_key,
|
||
x.ins_srtdeel_code,
|
||
x.ins_srtdeel_omschrijving,
|
||
x.alg_locatie_code,
|
||
x.alg_gebouw_code,
|
||
x.alg_verdieping_code,
|
||
x.alg_ruimte_nr
|
||
ORDER BY 1,
|
||
2,
|
||
3,
|
||
4,
|
||
5,
|
||
6,
|
||
7,
|
||
8;
|
||
|
||
v_count_tot NUMBER (10);
|
||
v_count_create NUMBER (10);
|
||
v_aanduiding VARCHAR (200);
|
||
v_srtdeel_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_alg_gebouw_key NUMBER (10);
|
||
v_alg_verdieping_key NUMBER (10);
|
||
v_alg_ruimte_key NUMBER (10);
|
||
v_deel_oms VARCHAR2 (60);
|
||
ccount NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_create := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
'['
|
||
|| rec.ins_srtdeel_code
|
||
|| '|'
|
||
|| rec.ins_srtdeel_omschrijving
|
||
|| '|'
|
||
|| rec.alg_locatie_code
|
||
|| '|'
|
||
|| rec.alg_gebouw_code
|
||
|| '|'
|
||
|| rec.alg_verdieping_code
|
||
|| '|'
|
||
|| rec.alg_ruimte_nr
|
||
|| '|'
|
||
|| TO_CHAR (rec.aant_sleutels_in_set)
|
||
|| '] ';
|
||
v_errormsg := 'Fout bij bepalen INS-Sleutelset';
|
||
|
||
SELECT ins_srtdeel_key
|
||
INTO v_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtgroep_key = rec.ins_srtgroep_key
|
||
AND UPPER (TRIM (ins_srtdeel_omschrijving)) =
|
||
UPPER (TRIM (rec.ins_srtdeel_omschrijving));
|
||
|
||
v_errormsg := 'Fout bij bepalen locatie (tbv. sleutels)';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_locatie
|
||
WHERE alg_locatie_verwijder IS NULL
|
||
AND UPPER (TRIM (alg_locatie_code)) =
|
||
UPPER (TRIM (rec.alg_locatie_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamgebouw (tbv. sleutels)';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_alg_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE alg_gebouw_verwijder IS NULL
|
||
AND alg_locatie_key = v_locatie_key
|
||
AND UPPER (TRIM (alg_gebouw_code)) =
|
||
UPPER (TRIM (rec.alg_gebouw_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamverdieping (tbv. sleutels)';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_alg_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_verdieping_verwijder IS NULL
|
||
AND alg_gebouw_key = v_alg_gebouw_key
|
||
AND UPPER (TRIM (alg_verdieping_code)) =
|
||
UPPER (TRIM (rec.alg_verdieping_code));
|
||
|
||
v_errormsg := 'Fout bij bepalen stamruimte (tbv. sleutels)';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_alg_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_verwijder IS NULL
|
||
AND alg_verdieping_key = v_alg_verdieping_key
|
||
AND UPPER (TRIM (alg_ruimte_nr)) =
|
||
UPPER (TRIM (rec.alg_ruimte_nr));
|
||
|
||
v_errormsg := 'Fout bij bepalen huidig aantal sleutels in set';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM ins_deel d
|
||
WHERE ins_deel_verwijder IS NULL
|
||
AND ins_deel_module = 'INS'
|
||
AND ins_srtdeel_key = v_srtdeel_key;
|
||
|
||
IF ccount > 0 -- Sleutelset bevat al sleutels!
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Sleutelset bevat al sleutels',
|
||
''
|
||
);
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
WHILE ccount < rec.aant_sleutels_in_set
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen default ID (sleutel)';
|
||
|
||
SELECT INS.nextdescription (rec.ins_srtdeel_code, NULL)
|
||
INTO v_deel_oms
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_key = v_srtdeel_key;
|
||
|
||
v_errormsg := 'Fout bij toevoegen sleutel';
|
||
|
||
INSERT INTO ins_deel (ins_discipline_key,
|
||
ins_srtdeel_key,
|
||
ins_deel_module,
|
||
ins_deel_omschrijving,
|
||
ins_alg_ruimte_key,
|
||
ins_alg_ruimte_type,
|
||
ins_alg_locatie_key)
|
||
VALUES (rec.ins_discipline_key,
|
||
v_srtdeel_key,
|
||
'INS',
|
||
v_deel_oms,
|
||
v_alg_ruimte_key,
|
||
'R',
|
||
v_locatie_key);
|
||
|
||
v_count_create := v_count_create + 1;
|
||
ccount := ccount + 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 LOOP;
|
||
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,
|
||
'');
|
||
END;
|
||
|
||
COMMIT;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'INS-Sleutels/#toegevoegd: '
|
||
|| TO_CHAR (v_count_create)
|
||
|| ' (bij '
|
||
|| TO_CHAR (v_count_tot)
|
||
|| ')',
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
add_srtdeel (p_import_key); -- Evenveel cilindersets als sleutelsets
|
||
add_cilinders (p_import_key);
|
||
add_sleutels (p_import_key);
|
||
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 sleutelsets afgebroken!');
|
||
END fac_update_sle;
|
||
/
|
||
|
||
/* FSN#13971: adres-import bleek onverhoopt nodig. Klantspecifieke routines gemaakt
|
||
op basis van de standaard fac_imp_adres tabel. Voor consistentie hierom deze
|
||
bijbehorende procedure gedefinieerd, die geduldig op implementatie wachten.
|
||
Afgewogen niet voor fac_import_mld_adres gekozen.
|
||
*/
|
||
CREATE OR REPLACE PROCEDURE fac_import_adres (
|
||
p_import_key IN NUMBER,
|
||
p_discipline_key IN NUMBER
|
||
)
|
||
IS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_adres (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_res_artikel_sync (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- 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_res_artikel_key VARCHAR2 (255);
|
||
v_res_discipline_key NUMBER (10);
|
||
v_res_discipline_oms VARCHAR2 (255);
|
||
v_res_kostensoort_key NUMBER (10);
|
||
v_res_kostensoort_oms VARCHAR2 (255);
|
||
v_res_artikel_nr VARCHAR2 (255);
|
||
v_res_artikel_omschrijving VARCHAR2 (255);
|
||
v_res_artikel_eenheid VARCHAR2 (255);
|
||
v_res_artikel_prijs VARCHAR2 (255);
|
||
v_res_artikel_prijs_vast VARCHAR2 (255);
|
||
v_res_artikel_inkoopprijs VARCHAR2 (255);
|
||
v_res_artikel_kostenpersoneel VARCHAR2 (255);
|
||
v_res_artikel_kostenalgemeen VARCHAR2 (255);
|
||
v_res_artikel_btw VARCHAR2 (255);
|
||
v_res_artikel_opmerking VARCHAR2 (2000);
|
||
v_res_artikel_groep VARCHAR2 (255);
|
||
v_res_artikel_volgnummer VARCHAR2 (255);
|
||
v_res_artikel_ingangsdatum VARCHAR2 (255);
|
||
v_res_artikel_vervaldatum VARCHAR2 (255);
|
||
v_res_artikel_minimum VARCHAR2 (255);
|
||
v_res_artikel_externnr VARCHAR2 (256);
|
||
-- Overige velden:
|
||
v_res_artikel_key2 NUMBER;
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_res_artikel_sync;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_key);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_discipline_oms);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_kostensoort_oms);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_nr);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_eenheid);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_prijs);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_prijs_vast);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_inkoopprijs);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_kostenpersoneel);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_kostenalgemeen);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_btw);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_opmerking);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_groep);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_volgnummer);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_ingangsdatum);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_vervaldatum);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_minimum);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_artikel_externnr);
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer alle kolommen..
|
||
-- Ik negeer alles totdat ik een geldige header gepasseerd ben
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
v_aanduiding := 'importregel: (' || v_res_artikel_key
|
||
|| '|' || v_res_discipline_oms
|
||
|| '|' || v_res_artikel_nr
|
||
|| '|' || v_res_artikel_omschrijving
|
||
|| ')';
|
||
IF UPPER (v_res_artikel_key) = 'ARTIKELKEY'
|
||
AND UPPER (v_res_discipline_oms) = 'CATALOGUSNAAM'
|
||
AND UPPER (v_res_kostensoort_oms) = 'CATALOGUSKOSTENSOORT'
|
||
AND UPPER (v_res_artikel_nr) = 'ARTIKELNUMMER'
|
||
AND UPPER (v_res_artikel_omschrijving) = 'ARTIKELOMSCHRIJVING'
|
||
AND UPPER (v_res_artikel_eenheid) = 'ARTIKELEENHEID'
|
||
AND UPPER (v_res_artikel_prijs) = 'ARTIKELPRIJS'
|
||
AND UPPER (v_res_artikel_prijs_vast) = 'ARTIKELPRIJSVAST'
|
||
AND UPPER (v_res_artikel_inkoopprijs) = 'ARTIKELINKOOPPRIJS'
|
||
AND UPPER (v_res_artikel_kostenpersoneel) = 'ARTIKELPERSONEELKOSTEN'
|
||
AND UPPER (v_res_artikel_kostenalgemeen) = 'ARTIKELALGEMENEKOSTEN'
|
||
AND UPPER (v_res_artikel_btw) = 'ARTIKELBTW'
|
||
AND UPPER (v_res_artikel_opmerking) = 'ARTIKELOPMERKING'
|
||
AND UPPER (v_res_artikel_groep) = 'ARTIKELGROEP'
|
||
AND UPPER (v_res_artikel_volgnummer) = 'ARTIKELVOLGNUMMER'
|
||
AND UPPER (v_res_artikel_ingangsdatum) = 'ARTIKELINGANGSDATUM'
|
||
AND UPPER (v_res_artikel_vervaldatum) = 'ARTIKELVERVALDATUM'
|
||
AND UPPER (v_res_artikel_minimum) = 'ARTIKELMINIMUM'
|
||
AND UPPER (v_res_artikel_externnr) = 'EXTERNNR'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := 'importregel ' || TO_CHAR(v_count_tot) || ': (' || v_res_artikel_key
|
||
|| '|' || v_res_discipline_oms
|
||
|| '|' || v_res_artikel_nr
|
||
|| '|' || v_res_artikel_omschrijving
|
||
|| ')';
|
||
|
||
-- Controleer alle veldwaarde
|
||
IF TRIM (v_res_artikel_key) IS NOT NULL
|
||
THEN
|
||
IF fac.safe_to_number (v_res_artikel_key) IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT res_artikel_key
|
||
INTO v_res_artikel_key2
|
||
FROM res_v_aanwezigartikel
|
||
WHERE res_artikel_key = v_res_artikel_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I',
|
||
v_aanduiding,
|
||
'Catalogus is nieuw'
|
||
);
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding,
|
||
'Artikel key ongeldig'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_res_discipline_oms := TRIM (v_res_discipline_oms);
|
||
IF v_res_discipline_oms IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_res_discipline_key
|
||
FROM res_discipline
|
||
WHERE ins_discipline_omschrijving = v_res_discipline_oms
|
||
AND ins_discipline_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'I',
|
||
v_aanduiding,
|
||
'Catalogus ' || v_res_discipline_oms || ' is nieuw'
|
||
);
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding,
|
||
'Catalogus ontbreekt'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_res_kostensoort_oms := TRIM (v_res_kostensoort_oms);
|
||
IF v_res_kostensoort_oms IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostensoort_key
|
||
INTO v_res_kostensoort_key
|
||
FROM prs_kostensoort k
|
||
WHERE k.prs_kostensoort_oms = v_res_kostensoort_oms
|
||
AND k.prs_kostensoort_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding,
|
||
'Kostensoort ' || v_res_kostensoort_oms || ' niet gevonden'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
v_res_artikel_nr := TRIM (v_res_artikel_nr);
|
||
IF LENGTH (v_res_artikel_nr) > 10
|
||
THEN
|
||
v_res_artikel_nr := SUBSTR (v_res_artikel_nr, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikelnummer wordt afgebroken tot [' || v_res_artikel_nr || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_omschrijving := TRIM (v_res_artikel_omschrijving);
|
||
IF LENGTH (v_res_artikel_omschrijving) > 40
|
||
THEN
|
||
v_res_artikel_omschrijving := SUBSTR (v_res_artikel_omschrijving, 1, 40);
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikelomschrijving wordt afgebroken tot [' || v_res_artikel_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
IF v_res_artikel_omschrijving IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikelomschrijving ontbreekt'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
v_res_artikel_eenheid := TRIM (v_res_artikel_eenheid);
|
||
IF LENGTH (v_res_artikel_eenheid) > 10
|
||
THEN
|
||
v_res_artikel_eenheid := SUBSTR (v_res_artikel_eenheid, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikeleenheid wordt afgebroken tot [' || v_res_artikel_eenheid || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_prijs := REPLACE (v_res_artikel_prijs, ',', '.');
|
||
IF v_res_artikel_prijs IS NOT NULL
|
||
AND fac.safe_to_number (v_res_artikel_prijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige artikelprijs [' || v_res_artikel_prijs || ']'
|
||
);
|
||
END IF;
|
||
|
||
IF ( v_res_artikel_prijs_vast <> '0'
|
||
AND v_res_artikel_prijs_vast <> '1')
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige artikel_prijs_vast [' || v_res_artikel_prijs_vast || '] --> [0|1]'
|
||
);
|
||
END IF;
|
||
-- Doe een poging er de juiste waarde van te maken.
|
||
IF v_res_artikel_prijs_vast IS NULL
|
||
OR v_res_artikel_prijs_vast <> '1'
|
||
THEN
|
||
v_res_artikel_prijs_vast := '0';
|
||
END IF;
|
||
|
||
v_res_artikel_inkoopprijs := REPLACE (v_res_artikel_inkoopprijs, ',', '.');
|
||
IF v_res_artikel_inkoopprijs IS NOT NULL
|
||
AND fac.safe_to_number (v_res_artikel_inkoopprijs) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige inkoopprijs [' || v_res_artikel_inkoopprijs || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_kostenpersoneel := REPLACE (v_res_artikel_kostenpersoneel, ',', '.');
|
||
IF v_res_artikel_kostenpersoneel IS NOT NULL
|
||
AND fac.safe_to_number (v_res_artikel_kostenpersoneel) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige personeelskosten [' || v_res_artikel_kostenpersoneel || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_kostenalgemeen := REPLACE (v_res_artikel_kostenalgemeen, ',', '.');
|
||
IF v_res_artikel_kostenalgemeen IS NOT NULL
|
||
AND fac.safe_to_number (v_res_artikel_kostenalgemeen) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige algemene kosten [' || v_res_artikel_kostenalgemeen || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_btw := REPLACE (v_res_artikel_btw, ',', '.');
|
||
IF v_res_artikel_btw IS NOT NULL
|
||
AND fac.safe_to_number (v_res_artikel_btw) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige BTW tarief [' || v_res_artikel_btw || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_opmerking := TRIM (v_res_artikel_opmerking);
|
||
IF LENGTH (v_res_artikel_opmerking) > 2000
|
||
THEN
|
||
v_res_artikel_opmerking := SUBSTR (v_res_artikel_opmerking, 1, 2000);
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikelopmerking wordt afgebroken tot [' || v_res_artikel_opmerking || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_res_artikel_groep := TRIM (v_res_artikel_groep);
|
||
IF LENGTH (v_res_artikel_groep) > 10
|
||
THEN
|
||
v_res_artikel_groep := SUBSTR (v_res_artikel_groep, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Artikelgroep wordt afgebroken tot [' || v_res_artikel_groep || ']'
|
||
);
|
||
END IF;
|
||
|
||
IF v_res_artikel_volgnummer IS NOT NULL
|
||
THEN
|
||
IF LENGTH (v_res_artikel_volgnummer) > 3
|
||
OR fac.safe_to_number (v_res_artikel_volgnummer) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldig artikelvolgnummer [' || v_res_artikel_volgnummer || ']'
|
||
);
|
||
v_res_artikel_volgnummer := NULL;
|
||
END IF;
|
||
ELSE
|
||
v_res_artikel_volgnummer := NULL;
|
||
END IF;
|
||
|
||
IF v_res_artikel_ingangsdatum IS NOT NULL
|
||
AND fac.safe_to_date (v_res_artikel_ingangsdatum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige ingangsdatum [' || v_res_artikel_ingangsdatum || ']'
|
||
);
|
||
END IF;
|
||
|
||
IF v_res_artikel_vervaldatum IS NOT NULL
|
||
AND fac.safe_to_date (v_res_artikel_vervaldatum, 'yyyymmdd') IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldige vervaldatum [' || v_res_artikel_vervaldatum || ']'
|
||
);
|
||
END IF;
|
||
|
||
IF v_res_artikel_minimum IS NOT NULL
|
||
THEN
|
||
IF LENGTH (v_res_artikel_minimum) > 3
|
||
OR fac.safe_to_number (v_res_artikel_minimum) IS NULL
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W',
|
||
v_aanduiding,
|
||
'Ongeldig artikelminimum [' || v_res_artikel_minimum || ']'
|
||
);
|
||
v_res_artikel_minimum := NULL;
|
||
END IF;
|
||
ELSE
|
||
v_res_artikel_minimum := NULL;
|
||
END IF;
|
||
|
||
v_res_artikel_externnr := TRIM (v_res_artikel_externnr);
|
||
IF LENGTH (v_res_artikel_externnr) > 256
|
||
THEN
|
||
v_res_artikel_externnr := SUBSTR (v_res_artikel_externnr, 1, 256);
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding,
|
||
'Externnr te lang [' || v_res_artikel_externnr || ']'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO fac_imp_res_artikel_sync
|
||
(res_artikel_key,
|
||
res_discipline_oms,
|
||
res_kostensoort_oms,
|
||
res_artikel_nr,
|
||
res_artikel_omschrijving,
|
||
res_artikel_eenheid,
|
||
res_artikel_prijs,
|
||
res_artikel_prijs_vast,
|
||
res_artikel_inkoopprijs,
|
||
res_artikel_kostenpersoneel,
|
||
res_artikel_kostenalgemeen,
|
||
res_artikel_btw,
|
||
res_artikel_opmerking, res_artikel_groep,
|
||
res_artikel_volgnummer,
|
||
res_artikel_ingangsdatum,
|
||
res_artikel_vervaldatum,
|
||
res_artikel_minimum,
|
||
res_artikel_externnr
|
||
)
|
||
VALUES (fac.safe_to_number (v_res_artikel_key),
|
||
v_res_discipline_oms,
|
||
v_res_kostensoort_oms,
|
||
v_res_artikel_nr,
|
||
v_res_artikel_omschrijving,
|
||
v_res_artikel_eenheid,
|
||
fac.safe_to_number (v_res_artikel_prijs),
|
||
fac.safe_to_number (v_res_artikel_prijs_vast),
|
||
fac.safe_to_number (v_res_artikel_inkoopprijs),
|
||
fac.safe_to_number (v_res_artikel_kostenpersoneel),
|
||
fac.safe_to_number (v_res_artikel_kostenalgemeen),
|
||
fac.safe_to_number (v_res_artikel_btw),
|
||
v_res_artikel_opmerking, v_res_artikel_groep,
|
||
fac.safe_to_number (v_res_artikel_volgnummer),
|
||
fac.safe_to_date (v_res_artikel_ingangsdatum, 'yyyymmdd'),
|
||
fac.safe_to_date (v_res_artikel_vervaldatum, 'yyyymmdd'),
|
||
fac.safe_to_number (v_res_artikel_minimum),
|
||
v_res_artikel_externnr
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := ' ORACLE (' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding,
|
||
'Ingelezen regel kan niet weggeschreven worden: fout bij toevoegen regel aan importtabel FAC_IMP_RES_ARTIKEL_SYNC. ' || v_errormsg
|
||
);
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_aanduiding || 'Ongeldig importbestand',
|
||
'Toelichting: ... '
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal ingelezen catering regels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal 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, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E',
|
||
v_errormsg,
|
||
'Inleesproces verbruiksartikelen afgebroken!'
|
||
);
|
||
END fac_import_res_artikel_sync;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_res_artikel_sync (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_res_artikel_sync;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
v_count_ins NUMBER (10);
|
||
v_res_discipline_key NUMBER (10);
|
||
v_artikel_key_count NUMBER (10);
|
||
v_res_kostensoort_key NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
v_count_ins := 0;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_artikel_key_count
|
||
FROM fac_imp_res_artikel_sync
|
||
WHERE res_artikel_key IS NOT NULL;
|
||
|
||
-- markeer bestaande artikelen om verwijderd te worden
|
||
IF v_artikel_key_count > 0
|
||
THEN
|
||
UPDATE res_artikel ra
|
||
SET res_artikel_omschrijving = SUBSTR ('*' || res_artikel_omschrijving, 1, 40)
|
||
WHERE SUBSTR (res_artikel_omschrijving, 1, 1) <> '*'
|
||
AND NOT EXISTS (SELECT res_artikel_key
|
||
FROM fac_imp_res_artikel_sync fip
|
||
WHERE fip.res_artikel_key = ra.res_artikel_key)
|
||
AND res_artikel_verwijder IS NULL;
|
||
END IF;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_res_kostensoort_key := NULL;
|
||
|
||
IF rec.res_kostensoort_oms IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostensoort_key
|
||
INTO v_res_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_oms = rec.res_kostensoort_oms
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Kostensoort [' || rec.res_kostensoort_oms || '] bestaat niet', '');
|
||
END;
|
||
END IF;
|
||
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_res_discipline_key
|
||
FROM res_discipline
|
||
WHERE ins_discipline_omschrijving = rec.res_discipline_oms
|
||
AND ins_discipline_min_level = 2
|
||
AND ins_discipline_verwijder IS NULL;
|
||
|
||
UPDATE ins_tab_discipline
|
||
SET prs_kostensoort_key = v_res_kostensoort_key
|
||
WHERE ins_discipline_key = v_res_discipline_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO ins_tab_discipline
|
||
(ins_discipline_module,
|
||
ins_discipline_omschrijving,
|
||
ins_discipline_min_level,
|
||
prs_kostensoort_key
|
||
)
|
||
VALUES ('RES',
|
||
rec.res_discipline_oms,
|
||
2,
|
||
v_res_kostensoort_key
|
||
)
|
||
RETURNING ins_discipline_key
|
||
INTO v_res_discipline_key;
|
||
|
||
INSERT INTO res_disc_params
|
||
(res_ins_discipline_key
|
||
)
|
||
VALUES (v_res_discipline_key
|
||
);
|
||
END;
|
||
|
||
IF rec.res_artikel_key IS NULL
|
||
THEN
|
||
INSERT INTO res_artikel
|
||
(res_discipline_key, res_artikel_nr,
|
||
res_artikel_omschrijving,
|
||
res_artikel_eenheid, res_artikel_prijs,
|
||
res_artikel_prijs_vast,
|
||
res_artikel_inkoopprijs, res_artikel_btw,
|
||
res_artikel_opmerking, res_artikel_groep,
|
||
res_artikel_kostenpersoneel,
|
||
res_artikel_kostenalgemeen,
|
||
res_artikel_volgnummer,
|
||
res_artikel_ingangsdatum,
|
||
res_artikel_vervaldatum,
|
||
res_artikel_minimum,
|
||
res_artikel_externnr
|
||
)
|
||
VALUES (v_res_discipline_key, rec.res_artikel_nr,
|
||
rec.res_artikel_omschrijving,
|
||
rec.res_artikel_eenheid, rec.res_artikel_prijs,
|
||
rec.res_artikel_prijs_vast,
|
||
rec.res_artikel_inkoopprijs, rec.res_artikel_btw,
|
||
rec.res_artikel_opmerking, rec.res_artikel_groep,
|
||
rec.res_artikel_kostenpersoneel,
|
||
rec.res_artikel_kostenalgemeen,
|
||
rec.res_artikel_volgnummer,
|
||
rec.res_artikel_ingangsdatum,
|
||
rec.res_artikel_vervaldatum,
|
||
rec.res_artikel_minimum,
|
||
rec.res_artikel_externnr
|
||
);
|
||
|
||
v_count_ins := v_count_ins + 1;
|
||
ELSE
|
||
UPDATE res_artikel
|
||
SET res_discipline_key = v_res_discipline_key,
|
||
res_artikel_nr = rec.res_artikel_nr,
|
||
res_artikel_omschrijving = rec.res_artikel_omschrijving,
|
||
res_artikel_eenheid = rec.res_artikel_eenheid,
|
||
res_artikel_prijs = rec.res_artikel_prijs,
|
||
res_artikel_prijs_vast = rec.res_artikel_prijs_vast,
|
||
res_artikel_inkoopprijs = rec.res_artikel_inkoopprijs,
|
||
res_artikel_kostenpersoneel = rec.res_artikel_kostenpersoneel,
|
||
res_artikel_kostenalgemeen = rec.res_artikel_kostenalgemeen,
|
||
res_artikel_btw = rec.res_artikel_btw,
|
||
res_artikel_opmerking = rec.res_artikel_opmerking,
|
||
res_artikel_groep = rec.res_artikel_groep,
|
||
res_artikel_volgnummer = rec.res_artikel_volgnummer,
|
||
res_artikel_ingangsdatum = rec.res_artikel_ingangsdatum,
|
||
res_artikel_vervaldatum = rec.res_artikel_vervaldatum,
|
||
res_artikel_minimum = rec.res_artikel_minimum,
|
||
res_artikel_externnr = rec.res_artikel_externnr
|
||
WHERE res_artikel_key = rec.res_artikel_key;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal artikelregels: ' || TO_CHAR (v_count_tot), ''
|
||
);
|
||
|
||
IF v_count_ins <> 0
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal artikelregels toegevoegd: ' || TO_CHAR (v_count_ins), ''
|
||
);
|
||
END IF;
|
||
|
||
IF v_count_update <> 0
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal artikelregels aangepast: ' || TO_CHAR (v_count_update), ''
|
||
);
|
||
END IF;
|
||
IF (v_count_tot > (v_count_ins + v_count_update))
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'S',
|
||
'Reserveringen: aantal artikelregels overgeslagen: ' || TO_CHAR (v_count_tot - v_count_ins - v_count_update), ''
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 150) || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Importproces verbruiksartikelen afgebroken!' || v_errormsg,
|
||
''
|
||
);
|
||
END fac_update_res_artikel_sync;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_groep (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR (1000);
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_aanduiding VARCHAR (200);
|
||
-- De importvelden:
|
||
v_naam VARCHAR (100);
|
||
v_functiecode VARCHAR2 (100);
|
||
v_srtdiscipline VARCHAR2 (100);
|
||
v_discipline VARCHAR2 (100);
|
||
v_orgread VARCHAR2 (100);
|
||
v_orgwrite VARCHAR2 (100);
|
||
v_algread VARCHAR2 (100);
|
||
v_algwrite VARCHAR2 (100);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_fac_groep;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_naam);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_functiecode);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtdiscipline);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_discipline);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_orgread);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_orgwrite);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_algread);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_algwrite);
|
||
v_aanduiding :=
|
||
'|'
|
||
|| v_naam
|
||
|| '|'
|
||
|| v_functiecode
|
||
|| '|'
|
||
|| v_srtdiscipline
|
||
|| '|'
|
||
|| v_discipline
|
||
|| '|'
|
||
|| v_orgread
|
||
|| '|'
|
||
|| v_orgwrite
|
||
|| '|'
|
||
|| v_algread
|
||
|| '|'
|
||
|| v_algwrite
|
||
|| '| ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer maar een aantal kolommen, ik zou ze ook
|
||
-- allemaal kunnen doen..
|
||
-- Ik negeer alles totdat ik een geldige header gepasseerd ben
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_naam) = 'GROEP' AND UPPER (v_discipline) = 'VAKGROEP' AND UPPER (v_algwrite) = 'PLAATS_SCHRIJVEN'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF header_is_valid = 1
|
||
THEN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
BEGIN
|
||
INSERT INTO fac_imp_fac_groep
|
||
(naam, functiecode, srtdiscipline, discipline, orgread, orgwrite, algread, algwrite)
|
||
VALUES (SUBSTR (v_naam, 1, 60),
|
||
SUBSTR (v_functiecode, 1, 10),
|
||
SUBSTR (v_srtdiscipline, 1, 30),
|
||
SUBSTR (v_discipline, 1, 60),
|
||
fac.safe_to_number (v_orgread),
|
||
fac.safe_to_number (v_orgwrite),
|
||
fac.safe_to_number (v_algread),
|
||
fac.safe_to_number (v_algwrite)
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := ' ORACLE (error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_MLD. ' || v_errormsg
|
||
);
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... ');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Autorisatiegroepen: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Autorisatiegroepen: aantal ongeldige niet ingelezen importregels: <b>'
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
''
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces autorisatiegroepen afgebroken!');
|
||
END fac_import_fac_groep;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_fac_groep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT i.naam
|
||
FROM fac_imp_fac_groep i
|
||
WHERE i.orgread IS NOT NULL
|
||
AND i.orgwrite IS NOT NULL
|
||
AND i.algread IS NOT NULL
|
||
AND i.algwrite IS NOT NULL;
|
||
|
||
CURSOR c2
|
||
IS
|
||
SELECT i.naam, f.fac_functie_key, NULL discipline, i.orgread, i.orgwrite, i.algread, i.algwrite, NULL srtdiscipline
|
||
FROM fac_imp_fac_groep i, fac_functie f
|
||
WHERE functiecode = f.fac_functie_code
|
||
AND f.fac_functie_discipline = 0
|
||
AND i.orgread IS NOT NULL
|
||
AND i.orgwrite IS NOT NULL
|
||
AND i.algread IS NOT NULL
|
||
AND i.algwrite IS NOT NULL
|
||
UNION ALL
|
||
SELECT i.naam, f.fac_functie_key, d.ins_discipline_key, i.orgread, i.orgwrite, i.algread, i.algwrite, sd.ins_srtdiscipline_key
|
||
FROM fac_imp_fac_groep i, fac_functie f, ins_tab_discipline d, ins_srtdiscipline sd
|
||
WHERE functiecode = f.fac_functie_code
|
||
AND f.fac_functie_discipline = 1
|
||
AND i.orgread IS NOT NULL
|
||
AND i.orgwrite IS NOT NULL
|
||
AND i.algread IS NOT NULL
|
||
AND i.algwrite IS NOT NULL
|
||
AND f.fac_functie_module = d.ins_discipline_module
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
|
||
AND UPPER (TRIM(coalesce(sd.ins_srtdiscipline_omschrijving,'###'))) = UPPER (TRIM(coalesce(i.srtdiscipline,'###')))
|
||
AND UPPER (TRIM(d.ins_discipline_omschrijving)) = UPPER (TRIM(i.discipline))
|
||
AND sd.ins_srtdiscipline_verwijder IS NULL
|
||
AND d.ins_discipline_verwijder IS NULL;
|
||
|
||
-- Eventueel niet bestaande vakgroeptypen+vakgroepen of catalogie (BES/RES), die gaan we loggen.
|
||
CURSOR c3
|
||
IS
|
||
SELECT i.naam, i.functiecode, i.srtdiscipline, i.discipline, i.orgread, i.orgwrite, i.algread, i.algwrite
|
||
FROM fac_imp_fac_groep i, fac_functie f
|
||
WHERE functiecode = f.fac_functie_code
|
||
AND f.fac_functie_discipline = 1
|
||
AND NOT EXISTS (SELECT 'x' FROM ins_tab_discipline d, ins_srtdiscipline sd
|
||
WHERE f.fac_functie_module = d.ins_discipline_module
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
|
||
AND UPPER (TRIM(coalesce(sd.ins_srtdiscipline_omschrijving,'###'))) = UPPER (TRIM(coalesce(i.srtdiscipline,'###')))
|
||
AND UPPER (TRIM(d.ins_discipline_omschrijving)) = UPPER (TRIM(i.discipline))
|
||
AND sd.ins_srtdiscipline_verwijder IS NULL
|
||
AND d.ins_discipline_verwijder IS NULL);
|
||
|
||
-- Eventueel foute autorisatiecijfers loggen
|
||
CURSOR c4
|
||
IS
|
||
SELECT i.naam, i.functiecode, i.srtdiscipline, i.discipline, i.orgread, i.orgwrite, i.algread, i.algwrite
|
||
FROM fac_imp_fac_groep i
|
||
WHERE (i.orgread IS NULL
|
||
OR i.orgwrite IS NULL
|
||
OR i.algread IS NULL
|
||
OR i.algwrite IS NULL);
|
||
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
v_count_ins NUMBER (10);
|
||
v_discipline_key NUMBER (10);
|
||
v_groep_key NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_groeprechten_key NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
v_count_ins := 0;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_imp_fac_groep;
|
||
|
||
-- markeer bestaande artikelen om verwijderd te worden
|
||
IF v_count = 0
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Logging van de onbekende vakgroeptypen, vakgroepen en/of catalogi...
|
||
FOR rec3 IN c3
|
||
LOOP
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Onbekend vakgroep(type) / catalogus: bij autorisatiegroep:' || rec3.naam,
|
||
'Functiecode: ' || rec3.functiecode
|
||
|| ', Vakgroeptype: ' || rec3.srtdiscipline
|
||
|| ', Vakgroep: ' || rec3.discipline
|
||
|| ', Autorisaties (O-R/W A-R/W): ' || rec3.orgread || '/' || rec3.orgwrite || '/' || rec3.algread || '/' || rec3.algwrite
|
||
);
|
||
END LOOP;
|
||
|
||
-- Logging van eventuele lege autorisatiegetallen...
|
||
FOR rec4 IN c4
|
||
LOOP
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Lege autorisatie: bij autorisatiegroep:' || rec4.naam,
|
||
'Functiecode: ' || rec4.functiecode
|
||
|| ', Vakgroeptype: ' || rec4.srtdiscipline
|
||
|| ', Vakgroep: ' || rec4.discipline
|
||
|| ', Autorisaties (O-R/W A-R/W): ' || rec4.orgread || '/' || rec4.orgwrite || '/' || rec4.algread || '/' || rec4.algwrite
|
||
);
|
||
END LOOP;
|
||
|
||
-- Maak de groepen aan
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER (fac_groep_omschrijving) = UPPER (rec1.naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO fac_groep
|
||
(fac_groep_omschrijving)
|
||
VALUES (rec1.naam);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Nieuwe autorisatiegroep toegevoegd: ' || rec1.naam,
|
||
''
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Ken de rechten toe
|
||
FOR rec2 IN c2
|
||
LOOP
|
||
BEGIN
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER (fac_groep_omschrijving) = UPPER (rec2.naam);
|
||
|
||
BEGIN
|
||
-- Moet een update of een insert gedaan worden
|
||
IF rec2.discipline IS NULL
|
||
THEN
|
||
SELECT fac_groeprechten_key
|
||
INTO v_groeprechten_key
|
||
FROM fac_groeprechten
|
||
WHERE fac_groep_key = v_groep_key
|
||
AND fac_functie_key = rec2.fac_functie_key
|
||
AND ins_discipline_key IS NULL;
|
||
|
||
UPDATE fac_groeprechten
|
||
SET fac_gebruiker_prs_level_read = rec2.orgread,
|
||
fac_gebruiker_prs_level_write = rec2.orgwrite,
|
||
fac_gebruiker_alg_level_read = rec2.algread,
|
||
fac_gebruiker_alg_level_write = rec2.algwrite
|
||
WHERE fac_groep_key = v_groep_key
|
||
AND fac_functie_key = rec2.fac_functie_key
|
||
AND ins_discipline_key IS NULL;
|
||
ELSE
|
||
SELECT fac_groeprechten_key
|
||
INTO v_groeprechten_key
|
||
FROM fac_groeprechten
|
||
WHERE fac_groep_key = v_groep_key
|
||
AND fac_functie_key = rec2.fac_functie_key
|
||
AND ins_discipline_key = rec2.discipline;
|
||
|
||
UPDATE fac_groeprechten
|
||
SET fac_gebruiker_prs_level_read = rec2.orgread,
|
||
fac_gebruiker_prs_level_write = rec2.orgwrite,
|
||
fac_gebruiker_alg_level_read = rec2.algread,
|
||
fac_gebruiker_alg_level_write = rec2.algwrite
|
||
WHERE fac_groep_key = v_groep_key
|
||
AND fac_functie_key = rec2.fac_functie_key
|
||
AND ins_discipline_key = rec2.discipline;
|
||
END IF;
|
||
|
||
v_count_tot := v_count_tot + 1;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO fac_groeprechten
|
||
(fac_groep_key,
|
||
fac_functie_key,
|
||
ins_discipline_key,
|
||
fac_gebruiker_prs_level_read,
|
||
fac_gebruiker_prs_level_write,
|
||
fac_gebruiker_alg_level_read,
|
||
fac_gebruiker_alg_level_write
|
||
)
|
||
VALUES (v_groep_key,
|
||
rec2.fac_functie_key,
|
||
rec2.discipline,
|
||
rec2.orgread,
|
||
rec2.orgwrite,
|
||
rec2.algread,
|
||
rec2.algwrite
|
||
);
|
||
|
||
v_count_tot := v_count_tot + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Probleem bij het toevoegen van nieuwe fac_groeprecht ' || v_errormsg,
|
||
rec2.naam
|
||
|| ', '
|
||
|| TO_CHAR (v_groep_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.fac_functie_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.srtdiscipline)
|
||
|| '/'
|
||
|| TO_CHAR (rec2.discipline)
|
||
);
|
||
END;
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Probleem bij vinden fac_groeprechten/updaten van fac_groeprecht ' || v_errormsg,
|
||
rec2.naam
|
||
|| ', '
|
||
|| TO_CHAR (v_groep_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.fac_functie_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.srtdiscipline)
|
||
|| '/'
|
||
|| TO_CHAR (rec2.discipline)
|
||
);
|
||
END;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Probleem bij definieren ' || v_errormsg,
|
||
rec2.naam
|
||
|| ', '
|
||
|| TO_CHAR (v_groep_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.fac_functie_key)
|
||
|| ', '
|
||
|| TO_CHAR (rec2.srtdiscipline)
|
||
|| '/'
|
||
|| TO_CHAR (rec2.discipline)
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Importproces autorisatiegroepen afgebroken! ' || v_errormsg, '');
|
||
END fac_update_fac_groep;
|
||
/
|
||
|
||
-- Verwijder eerst de autorisaties van de autorisatiegroepen die voorkomen in bestand (importtabel)
|
||
CREATE OR REPLACE PROCEDURE fac_delete_fac_groep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT i.naam
|
||
FROM fac_imp_fac_groep i
|
||
WHERE i.orgread IS NOT NULL
|
||
AND i.orgwrite IS NOT NULL
|
||
AND i.algread IS NOT NULL
|
||
AND i.algwrite IS NOT NULL;
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_discipline_key NUMBER (10);
|
||
v_groep_key NUMBER (10);
|
||
v_count NUMBER (10);
|
||
BEGIN
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_imp_fac_groep;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Verwijder de rechten van de groep(en( die in het bestand staat(n).
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER (fac_groep_omschrijving) = UPPER (rec1.naam);
|
||
|
||
DELETE fac_groeprechten
|
||
WHERE fac_groep_key = v_groep_key;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Importproces autorisatiegroepen afgebroken! ' || v_errormsg, '');
|
||
END fac_delete_fac_groep;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_groep_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
fac_import_fac_groep(p_import_key);
|
||
END fac_import_fac_groep_del;
|
||
/
|
||
|
||
-- Verwijder eerst de autorisaties van de autorisatiegroepen die voorkomen in bestand (importtabel):fac_delete_fac_groep
|
||
-- En vul daarna de autorisatiegroep opnieuw in: fac_update_fac_groep
|
||
CREATE OR REPLACE PROCEDURE fac_update_fac_groep_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
fac_delete_fac_groep(p_import_key);
|
||
fac_update_fac_groep(p_import_key);
|
||
END fac_update_fac_groep_del;
|
||
/
|
||
|
||
|
||
-- Verwijder eerst de autorisaties van alle vakgroepen die voorkomen in bestand (importtabel)
|
||
CREATE OR REPLACE PROCEDURE fac_delete_fac_vakgroep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT d.ins_discipline_key
|
||
FROM fac_imp_fac_groep i, fac_functie f, ins_tab_discipline d, ins_srtdiscipline sd
|
||
WHERE i.functiecode = f.fac_functie_code
|
||
AND f.fac_functie_discipline = 1
|
||
AND i.orgread IS NOT NULL
|
||
AND i.orgwrite IS NOT NULL
|
||
AND i.algread IS NOT NULL
|
||
AND i.algwrite IS NOT NULL
|
||
AND f.fac_functie_module = d.ins_discipline_module
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
|
||
AND UPPER (TRIM(coalesce(sd.ins_srtdiscipline_omschrijving,'###'))) = UPPER (TRIM(coalesce(i.srtdiscipline,'###')))
|
||
AND UPPER (TRIM(d.ins_discipline_omschrijving)) = UPPER (TRIM(i.discipline))
|
||
AND sd.ins_srtdiscipline_verwijder IS NULL
|
||
AND d.ins_discipline_verwijder IS NULL;
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_discipline_key NUMBER (10);
|
||
v_groep_key NUMBER (10);
|
||
v_count NUMBER (10);
|
||
BEGIN
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_imp_fac_groep;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Verwijder de rechten van de groep(en( die in het bestand staat(n).
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
DELETE fac_groeprechten
|
||
WHERE ins_discipline_key = rec1.ins_discipline_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL; -- bedoelen we dit?
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Importproces autorisatiegroepen afgebroken! ' || v_errormsg, '');
|
||
END fac_delete_fac_vakgroep;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_vakgroep_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
BEGIN
|
||
fac_import_fac_groep(p_import_key);
|
||
END fac_import_fac_vakgroep_del;
|
||
/
|
||
|
||
--Verwijder eerst de autorisaties van de vakgroepen die voorkomen in bestand (importtabel), over alle autorisatiegroepen heen
|
||
--En vul daarna de autorisatiegroep opnieuw in: fac_update_fac_groep
|
||
CREATE OR REPLACE PROCEDURE fac_update_fac_vakgroep_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
fac_delete_fac_vakgroep(p_import_key);
|
||
fac_update_fac_groep(p_import_key);
|
||
END fac_update_fac_vakgroep_del;
|
||
/
|
||
|
||
--------------------------------
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_gebruikersgroep (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR (1000);
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_aanduiding VARCHAR (200);
|
||
-- De importvelden:
|
||
v_groep VARCHAR2 (100);
|
||
v_personeelsnummer VARCHAR2 (100);
|
||
v_login VARCHAR2 (100);
|
||
v_email VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_fac_gebruikersgroep;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_groep);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_personeelsnummer);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_login);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_email);
|
||
v_aanduiding :=
|
||
'|'
|
||
|| v_groep
|
||
|| '|'
|
||
|| v_personeelsnummer
|
||
|| '|'
|
||
|| v_login
|
||
|| '|'
|
||
|| v_email
|
||
|| '| ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer alleen de verplichte kolommen, ik zou ze ook
|
||
-- allemaal kunnen doen..
|
||
-- Ik negeer alles totdat ik een geldige header gepasseerd ben
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_groep) = 'GROEP'
|
||
AND UPPER (v_personeelsnummer) = 'PERSONEELSNUMMER'
|
||
AND UPPER (v_login) = 'LOGIN'
|
||
AND UPPER (v_email) = 'EMAIL'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSIF header_is_valid = 1
|
||
THEN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
BEGIN
|
||
INSERT INTO fac_imp_fac_gebruikersgroep
|
||
(groep, personeelsnummer, login, email)
|
||
VALUES (v_groep,
|
||
v_personeelsnummer,
|
||
v_login,
|
||
v_email
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := ' ORACLE (error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_GEBRUIKERSGROEP. ' || v_errormsg
|
||
);
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Ongeldig importbestand', 'Toelichting: ... ');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Gebruikersgroepen: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Gebruikersgroepen: aantal ongeldige niet ingelezen importregels: <b>'
|
||
|| TO_CHAR (v_count_tot - v_count_import),
|
||
''
|
||
);
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces gebruikersgroepen afgebroken!');
|
||
END fac_import_fac_gebruikersgroep;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_fac_gebruikersgroep (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT i.groep, i.personeelsnummer, i.login, i.email
|
||
FROM fac_imp_fac_gebruikersgroep i;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
v_count_ins NUMBER (10);
|
||
v_perslid_key NUMBER (10);
|
||
v_perslid_count NUMBER (10);
|
||
v_groep_key NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_count2 NUMBER (10);
|
||
v_count_gg NUMBER (10);
|
||
v_hint VARCHAR2 (1000);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
v_count_ins := 0;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM fac_gebruikersgroep;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
RETURN;
|
||
END IF;
|
||
|
||
-- Maak de records aan
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_groep_key := NULL;
|
||
-- bekijk of de groep bestaat
|
||
v_hint := 'Zoek groep: ' || rec1.groep;
|
||
|
||
SELECT fac_groep_key
|
||
INTO v_groep_key
|
||
FROM fac_groep
|
||
WHERE UPPER (fac_groep_omschrijving) = UPPER (rec1.groep);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Gebruikersgroepen: kan groep niet vinden: ' || rec1.groep,
|
||
'Controleer waarom groep niet bestaat of maak nieuwe groep aan.'
|
||
);
|
||
END;
|
||
|
||
BEGIN
|
||
-- bekijk of de persoon bestaat
|
||
v_hint := '';
|
||
v_perslid_key := NULL;
|
||
|
||
IF rec1.personeelsnummer IS NOT NULL
|
||
THEN
|
||
v_hint := 'Zoek personeelsnummer: ' || rec1.personeelsnummer;
|
||
-- controleer personeelsnummer
|
||
SELECT COUNT(prs_perslid_key)
|
||
INTO v_perslid_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (rec1.personeelsnummer);
|
||
|
||
IF v_perslid_count = 1 THEN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (rec1.personeelsnummer);
|
||
ELSE
|
||
-- probeer de match op de nummerieke waarde van het nummer ivm voorloopnullen
|
||
SELECT COUNT(prs_perslid_key)
|
||
INTO v_perslid_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE FAC.SAFE_TO_NUMBER(prs_perslid_nr) = FAC.SAFE_TO_NUMBER (rec1.personeelsnummer);
|
||
|
||
IF v_perslid_count = 1 THEN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE FAC.SAFE_TO_NUMBER(prs_perslid_nr) = FAC.SAFE_TO_NUMBER (rec1.personeelsnummer);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Gebruikersgroepen: kan persoon niet vinden (op basis van nummer): ' || rec1.personeelsnummer,
|
||
'Controleer of persoon voorkomt in Facilitor.'
|
||
);
|
||
END IF;
|
||
|
||
END IF;
|
||
ELSIF rec1.login IS NOT NULL
|
||
THEN
|
||
v_hint := 'Zoek login: ' || rec1.login;
|
||
-- controleer login
|
||
SELECT COUNT(prs_perslid_key)
|
||
INTO v_perslid_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_oslogin) = UPPER (rec1.login);
|
||
|
||
IF v_perslid_count = 1 THEN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_oslogin) = UPPER (rec1.login);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Gebruikersgroepen: kan persoon niet vinden (op basis van login): ' || rec1.login,
|
||
'Controleer of persoon voorkomt in Facilitor.'
|
||
);
|
||
END IF;
|
||
ELSIF rec1.email IS NOT NULL
|
||
THEN
|
||
v_hint := 'Zoek email: ' || rec1.email;
|
||
-- controleer email
|
||
SELECT COUNT(prs_perslid_key)
|
||
INTO v_perslid_count
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE INSTR(UPPER (prs_perslid_email), UPPER (rec1.email)) >0;
|
||
|
||
IF v_perslid_count = 1 THEN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE INSTR(UPPER (prs_perslid_email), UPPER (rec1.email)) >0;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Gebruikersgroepen: kan persoon niet vinden (op basis van email): ' || rec1.email,
|
||
'Controleer of persoon voorkomt in Facilitor.'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_groep_key IS NOT NULL AND v_perslid_key IS NOT NULL
|
||
THEN
|
||
SELECT count(fac_gebruikersgroep_key)
|
||
INTO v_count_gg
|
||
FROM fac_gebruikersgroep
|
||
WHERE fac_groep_key = v_groep_key
|
||
AND prs_perslid_key = v_perslid_key;
|
||
|
||
IF v_count_gg = 0 THEN
|
||
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
|
||
VALUES (v_groep_key, v_perslid_key);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Gebruikersgroepen: persoon-groep toegevoegd: ' || rec1.groep || '-n:' || rec1.personeelsnummer || ' l:' || rec1.login || ' e:' || rec1.email,
|
||
''
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Gebruikersgroepen: persoon-groep relatie bestaat al: ' || rec1.groep || '-n:' || rec1.personeelsnummer || ' l:' || rec1.login || ' e:' || rec1.email,
|
||
''
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Gebruikersgroepen: kan groep niet vinden: ' || rec1.groep,
|
||
'Controleer waarom groep niet bestaat of maak nieuwe groep aan.'
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count2
|
||
FROM fac_gebruikersgroep;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Gebruikersgroepen: aantal records toegevoegd: ' || to_char(v_count2 - v_count),
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errormsg := ' (ORACLE error ' || SUBSTR (SQLERRM, 1, 900) || ')';
|
||
fac.imp_writelog (p_import_key, 'E', 'Importproces gebruikersgroep afgebroken! ' || v_errormsg, v_hint);
|
||
END fac_update_fac_gebruikersgroep;
|
||
/
|
||
|
||
|
||
-- MB 150219, Hieronder de COMMON EXT-bedrijven FIP import / SYNC functie (obv leveranciernummer)
|
||
|
||
-- p_seq_of_columns geeft aan op welke plek in de CVS het bedrijfsnaam staat, leveranciersnummer etc etc.
|
||
-- p_checkheader is 0 of 1, bij 0 bestaat er geen header, bij 1 wordt de header niet gecheckt, bij 2 wordt de header wel gecheckt.
|
||
CREATE OR REPLACE PROCEDURE fac_import_bedrijf_body (
|
||
p_import_key IN NUMBER,
|
||
p_seq_of_columns IN VARCHAR2,
|
||
p_checkheader IN NUMBER
|
||
)
|
||
IS
|
||
----- STANDAARD Variabelelijst met hun volgnummer
|
||
-- 1 BEDRIJFSNAAM';
|
||
-- 2 LEVERANCIERNUMMER';
|
||
-- 3 BEZOEK ADRES';
|
||
-- 4 BEZOEK POSTCODE';
|
||
-- 5 BEZOEK PLAATS';
|
||
-- 6 BEZOEK LAND';
|
||
-- 7 POST ADRES';
|
||
-- 8 POST POSTCODE';
|
||
-- 9 POST PLAATS';
|
||
-- 10 POST LAND';
|
||
-- 11 BEDRIJF TELEFOON';
|
||
-- 12 BEDRIJF FAX';
|
||
-- 13 BEDRIJF EMAIL';
|
||
-- 14 CONTACT PERSOON';
|
||
-- 15 CONTACT TELEFOON';
|
||
-- 16 CONTACT FAX';
|
||
-- 17 BEDRIJF XSL';
|
||
-- 18 BEDRIJF ORDERADRES';
|
||
-- 19 LEVERANCIER';
|
||
-- 20 UITVOERENDE';
|
||
-- 21 CONTRACTANT';
|
||
-- 22 HUURDER';
|
||
-- 23 TOONINGIDS';
|
||
-- 24 UURLOON';
|
||
-- 25 OVEREENKOMSTNUMMER';
|
||
-- 26 OVEREENKOMSTDATUM';
|
||
-- 27 OPMERKING';
|
||
-- 28 DIENST';
|
||
-- 29 LOCATIECODE';
|
||
-- 30 GEBOUWCODE';
|
||
-- 31 RELATIETYPE';
|
||
-- 32 OVERIG1';
|
||
-- 33 OVERIG2';
|
||
-- 34 OVERIG3';
|
||
|
||
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR (200);
|
||
-- De importvelden:
|
||
v_prs_bedrijf_naam VARCHAR2 (256); -- C60
|
||
v_prs_leverancier_nr VARCHAR2 (256); -- C50
|
||
v_prs_bedrijf_bezoek_adres VARCHAR2 (256); -- C50
|
||
v_prs_bedrijf_bezoek_postcode VARCHAR2 (256); -- C12
|
||
v_prs_bedrijf_bezoek_plaats VARCHAR2 (256); -- C30
|
||
v_prs_bedrijf_bezoek_land VARCHAR2 (256); -- C30
|
||
v_prs_bedrijf_telefoon VARCHAR2 (256); -- C20
|
||
v_prs_bedrijf_fax VARCHAR2 (256); -- C20
|
||
v_prs_bedrijf_post_adres VARCHAR2 (256); -- C50
|
||
v_prs_bedrijf_post_postcode VARCHAR2 (256); -- C12
|
||
v_prs_bedrijf_post_plaats VARCHAR2 (256); -- C30
|
||
v_prs_bedrijf_post_land VARCHAR2 (256); -- C30
|
||
v_prs_bedrijf_contact_persoon VARCHAR2 (256); -- C30
|
||
v_prs_bedrijf_contact_telefoon VARCHAR2 (256); -- C20
|
||
v_prs_bedrijf_contact_fax VARCHAR2 (256); -- C20
|
||
v_prs_bedrijf_leverancier VARCHAR2 (256); -- N1
|
||
v_prs_bedrijf_uitvoerende VARCHAR2 (256); -- N1
|
||
v_prs_bedrijf_contract VARCHAR2 (256); -- N1
|
||
v_prs_bedrijf_huurder VARCHAR2 (256); -- N1
|
||
v_prs_bedrijf_ingids VARCHAR2 (256); -- N1
|
||
v_prs_bedrijf_uurloon VARCHAR2 (256); -- N6,2
|
||
v_prs_bedrijf_xsl VARCHAR2 (256); --C256
|
||
v_prs_bedrijf_mldorder_adres VARCHAR2 (256); --C256
|
||
v_prs_overeenkomst_nr VARCHAR2 (256); -- C30
|
||
v_prs_overeenkomst_datum VARCHAR2 (256); -- DATE
|
||
v_prs_bedrijf_email VARCHAR2 (256); -- C100
|
||
v_prs_bedrijf_opmerking VARCHAR2 (4000); -- C4000
|
||
v_prs_dienst_omschrijving VARCHAR2 (256); -- C60
|
||
v_alg_locatie_code VARCHAR2 (256); -- C10
|
||
v_alg_gebouw_code VARCHAR2 (256); -- C12
|
||
v_prs_relatietype VARCHAR2 (256); -- C100
|
||
v_prs_bedrijf_overig1 VARCHAR2 (256); -- C256
|
||
v_prs_bedrijf_overig2 VARCHAR2 (256); -- C256
|
||
v_prs_bedrijf_overig3 VARCHAR2 (256); -- C256
|
||
|
||
-- Overig:
|
||
v_prs_bedrijf_leverancier_n NUMBER (1); -- N1
|
||
v_prs_bedrijf_uitvoerende_n NUMBER (1); -- N1
|
||
v_prs_bedrijf_contract_n NUMBER (1); -- N1
|
||
v_prs_bedrijf_huurder_n NUMBER (1); -- N1
|
||
v_prs_bedrijf_ingids_n NUMBER (1); -- N1
|
||
v_prs_bedrijf_uurloon_n NUMBER (6, 2); -- N6,2
|
||
v_prs_overeenkomst_date DATE; -- DATE
|
||
|
||
-- De kolommen
|
||
v_seq_of_columns VARCHAR2(255);
|
||
v_colnr1 NUMBER;
|
||
v_colnr2 NUMBER;
|
||
v_colnr3 NUMBER;
|
||
v_colnr4 NUMBER;
|
||
v_colnr5 NUMBER;
|
||
v_colnr6 NUMBER;
|
||
v_colnr7 NUMBER;
|
||
v_colnr8 NUMBER;
|
||
v_colnr9 NUMBER;
|
||
v_colnr10 NUMBER;
|
||
v_colnr11 NUMBER;
|
||
v_colnr12 NUMBER;
|
||
v_colnr13 NUMBER;
|
||
v_colnr14 NUMBER;
|
||
v_colnr15 NUMBER;
|
||
v_colnr16 NUMBER;
|
||
v_colnr17 NUMBER;
|
||
v_colnr18 NUMBER;
|
||
v_colnr19 NUMBER;
|
||
v_colnr20 NUMBER;
|
||
v_colnr21 NUMBER;
|
||
v_colnr22 NUMBER;
|
||
v_colnr23 NUMBER;
|
||
v_colnr24 NUMBER;
|
||
v_colnr25 NUMBER;
|
||
v_colnr26 NUMBER;
|
||
v_colnr27 NUMBER;
|
||
v_colnr28 NUMBER;
|
||
v_colnr29 NUMBER;
|
||
v_colnr30 NUMBER;
|
||
v_colnr31 NUMBER;
|
||
v_colnr32 NUMBER;
|
||
v_colnr33 NUMBER;
|
||
v_colnr34 NUMBER;
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_ext_bedrijf;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
IF p_checkheader = 0
|
||
THEN -- Er is geen header, dus header is valid (en direct de waarden lezen)
|
||
header_is_valid := 1;
|
||
END IF;
|
||
|
||
|
||
COMMIT;
|
||
|
||
v_seq_of_columns := p_seq_of_columns;
|
||
v_errorhint := 'Bepalen volgorde kolommen';
|
||
|
||
-- De volgorde de te importeren kolommen in de CSV uitlezen uit v_seq_of_columns
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr1);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr2);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr3);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr4);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr5);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr6);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr7);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr8);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr9);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr10);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr11);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr12);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr13);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr14);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr15);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr16);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr17);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr18);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr19);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr20);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr21);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr22);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr23);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr24);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr25);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr26);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr27);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr28);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr29);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr30);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr31);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr32);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr33);
|
||
fac.imp_getfield (v_seq_of_columns, c_delim, v_colnr34);
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJFSNAAM';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr1), v_prs_bedrijf_naam);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LEVERANCIERNUMMER';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr2), v_prs_leverancier_nr);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK ADRES';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr3), v_prs_bedrijf_bezoek_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK POSTCODE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr4), v_prs_bedrijf_bezoek_postcode);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK PLAATS';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr5), v_prs_bedrijf_bezoek_plaats);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK LAND';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr6), v_prs_bedrijf_bezoek_land);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST ADRES';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr7), v_prs_bedrijf_post_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST POSTCODE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr8), v_prs_bedrijf_post_postcode);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST PLAATS';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr9), v_prs_bedrijf_post_plaats);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST LAND';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr10), v_prs_bedrijf_post_land);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF TELEFOON';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr11), v_prs_bedrijf_telefoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF FAX';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr12), v_prs_bedrijf_fax);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF EMAIL';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr13), v_prs_bedrijf_email);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACT PERSOON';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr14), v_prs_bedrijf_contact_persoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACT TELEFOON';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr15), v_prs_bedrijf_contact_telefoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACT FAX';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr16), v_prs_bedrijf_contact_fax);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF XSL';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr17), v_prs_bedrijf_xsl);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF ORDERADRES';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr18), v_prs_bedrijf_mldorder_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LEVERANCIER';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr19), v_prs_bedrijf_leverancier);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: UITVOERENDE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr20), v_prs_bedrijf_uitvoerende);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTRACTANT';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr21), v_prs_bedrijf_contract);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: HUURDER';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr22), v_prs_bedrijf_huurder);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: TOONINGIDS';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr23), v_prs_bedrijf_ingids);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: UURLOON';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr24), v_prs_bedrijf_uurloon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVEREENKOMSTNUMMER';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr25), v_prs_overeenkomst_nr);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVEREENKOMSTDATUM';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr26), v_prs_overeenkomst_datum);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OPMERKING';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr27), v_prs_bedrijf_opmerking);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: DIENST';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr28), v_prs_dienst_omschrijving);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LOCATIECODE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr29), v_alg_locatie_code);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: GEBOUWCODE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr30), v_alg_gebouw_code);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: RELATIETYPE';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr31), v_prs_relatietype);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG1';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr32), v_prs_bedrijf_overig1);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG2';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr33), v_prs_bedrijf_overig2);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG3';
|
||
fac.imp_getfield_nr (v_newline, c_delim, fac.safe_to_number(v_colnr34), v_prs_bedrijf_overig3);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] ';
|
||
|
||
-- 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 (p_checkheader = 1)
|
||
THEN
|
||
-- De controle op header is niet nodig.
|
||
header_is_valid := 1;
|
||
END IF;
|
||
IF (p_checkheader = 2)
|
||
THEN
|
||
IF fac_check_import_header(v_prs_bedrijf_naam, 'BEDRIJFSNAAM')
|
||
AND fac_check_import_header(v_prs_leverancier_nr, 'LEVERANCIERNUMMER')
|
||
AND fac_check_import_header(v_prs_bedrijf_bezoek_adres, 'BEZOEK ADRES')
|
||
AND fac_check_import_header(v_prs_bedrijf_bezoek_postcode, 'BEZOEK POSTCODE')
|
||
AND fac_check_import_header(v_prs_bedrijf_bezoek_plaats, 'BEZOEK PLAATS')
|
||
AND fac_check_import_header(v_prs_bedrijf_bezoek_land, 'BEZOEK LAND')
|
||
AND fac_check_import_header(v_prs_bedrijf_post_adres, 'POST ADRES')
|
||
AND fac_check_import_header(v_prs_bedrijf_post_postcode, 'POST POSTCODE')
|
||
AND fac_check_import_header(v_prs_bedrijf_post_plaats, 'POST PLAATS')
|
||
AND fac_check_import_header(v_prs_bedrijf_post_land, 'POST LAND')
|
||
AND fac_check_import_header(v_prs_bedrijf_telefoon, 'BEDRIJF TELEFOON')
|
||
AND fac_check_import_header(v_prs_bedrijf_fax, 'BEDRIJF FAX')
|
||
AND fac_check_import_header(v_prs_bedrijf_email, 'BEDRIJF EMAIL')
|
||
AND fac_check_import_header(v_prs_bedrijf_contact_persoon, 'CONTACT PERSOON')
|
||
AND fac_check_import_header(v_prs_bedrijf_contact_telefoon, 'CONTACT TELEFOON')
|
||
AND fac_check_import_header(v_prs_bedrijf_contact_fax, 'CONTACT FAX')
|
||
AND fac_check_import_header(v_prs_bedrijf_xsl, 'BEDRIJF XSL')
|
||
AND fac_check_import_header(v_prs_bedrijf_mldorder_adres, 'BEDRIJF ORDERADRES')
|
||
AND fac_check_import_header(v_prs_bedrijf_leverancier, 'LEVERANCIER')
|
||
AND fac_check_import_header(v_prs_bedrijf_uitvoerende, 'UITVOERENDE')
|
||
AND fac_check_import_header(v_prs_bedrijf_contract, 'CONTRACTANT')
|
||
AND fac_check_import_header(v_prs_bedrijf_huurder, 'HUURDER')
|
||
AND fac_check_import_header(v_prs_bedrijf_ingids, 'TOONINGIDS')
|
||
AND fac_check_import_header(v_prs_bedrijf_uurloon, 'UURLOON')
|
||
AND fac_check_import_header(v_prs_overeenkomst_nr, 'OVEREENKOMSTNUMMER')
|
||
AND fac_check_import_header(v_prs_overeenkomst_datum, 'OVEREENKOMSTDATUM')
|
||
AND fac_check_import_header(v_prs_bedrijf_opmerking, 'OPMERKING')
|
||
AND fac_check_import_header(v_prs_dienst_omschrijving, 'DIENST')
|
||
AND fac_check_import_header(v_alg_locatie_code, 'LOCATIECODE')
|
||
AND fac_check_import_header(v_alg_gebouw_code, 'GEBOUWCODE')
|
||
AND fac_check_import_header(v_prs_relatietype, 'RELATIETYPE')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
v_errorhint := 'Bedrijfsnaam te lang';
|
||
v_prs_bedrijf_naam := TRIM (v_prs_bedrijf_naam);
|
||
IF LENGTH (v_prs_bedrijf_naam) > 60
|
||
THEN
|
||
v_prs_bedrijf_naam :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_naam), 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bedrijfsnaam wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_naam
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Leveranciernummer te lang';
|
||
v_prs_leverancier_nr := TRIM (v_prs_leverancier_nr);
|
||
IF LENGTH (v_prs_leverancier_nr) > 50
|
||
THEN
|
||
v_prs_leverancier_nr :=
|
||
SUBSTR (TRIM (v_prs_leverancier_nr), 1, 50);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Leveranciernummer wordt afgebroken tot ['
|
||
|| v_prs_leverancier_nr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bezoek/adres te lang';
|
||
v_prs_bedrijf_bezoek_adres := TRIM (v_prs_bedrijf_bezoek_adres);
|
||
IF LENGTH (v_prs_bedrijf_bezoek_adres) > 50
|
||
THEN
|
||
v_prs_bedrijf_bezoek_adres :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_bezoek_adres), 1, 50);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bezoek/adres wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_bezoek_adres
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bezoek/postcode te lang';
|
||
v_prs_bedrijf_bezoek_postcode :=
|
||
TRIM (v_prs_bedrijf_bezoek_postcode);
|
||
IF LENGTH (v_prs_bedrijf_bezoek_postcode) > 12
|
||
THEN
|
||
v_prs_bedrijf_bezoek_postcode :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_bezoek_postcode), 1, 12);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bezoek/postcode wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_bezoek_postcode
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bezoek/plaats te lang';
|
||
v_prs_bedrijf_bezoek_plaats := TRIM (v_prs_bedrijf_bezoek_plaats);
|
||
IF LENGTH (v_prs_bedrijf_bezoek_plaats) > 30
|
||
THEN
|
||
v_prs_bedrijf_bezoek_plaats :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_bezoek_plaats), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bezoek/plaats wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_bezoek_plaats
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bezoek/land te lang';
|
||
v_prs_bedrijf_bezoek_land := TRIM (v_prs_bedrijf_bezoek_land);
|
||
IF LENGTH (v_prs_bedrijf_bezoek_land) > 30
|
||
THEN
|
||
v_prs_bedrijf_bezoek_land :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_bezoek_land), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bezoek/land wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_bezoek_land
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Post/adres te lang';
|
||
v_prs_bedrijf_post_adres := TRIM (v_prs_bedrijf_post_adres);
|
||
IF LENGTH (v_prs_bedrijf_post_adres) > 50
|
||
THEN
|
||
v_prs_bedrijf_post_adres :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_post_adres), 1, 50);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Post/adres wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_post_adres
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Post/postcode te lang';
|
||
v_prs_bedrijf_post_postcode := TRIM (v_prs_bedrijf_post_postcode);
|
||
IF LENGTH (v_prs_bedrijf_post_postcode) > 12
|
||
THEN
|
||
v_prs_bedrijf_post_postcode :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_post_postcode), 1, 12);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Post/postcode wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_post_postcode
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Post/plaats te lang';
|
||
v_prs_bedrijf_post_plaats := TRIM (v_prs_bedrijf_post_plaats);
|
||
IF LENGTH (v_prs_bedrijf_post_plaats) > 30
|
||
THEN
|
||
v_prs_bedrijf_post_plaats :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_post_plaats), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Post/plaats wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_post_plaats
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Post/land te lang';
|
||
v_prs_bedrijf_post_land := TRIM (v_prs_bedrijf_post_land);
|
||
IF LENGTH (v_prs_bedrijf_post_land) > 30
|
||
THEN
|
||
v_prs_bedrijf_post_land :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_post_land), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Post/land wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_post_land
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bedrijf/telefoon te lang';
|
||
v_prs_bedrijf_telefoon := TRIM (v_prs_bedrijf_telefoon);
|
||
IF LENGTH (v_prs_bedrijf_telefoon) > 20
|
||
THEN
|
||
v_prs_bedrijf_telefoon :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_telefoon), 1, 20);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bedrijf/telefoon wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_telefoon
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bedrijf/fax te lang';
|
||
v_prs_bedrijf_fax := TRIM (v_prs_bedrijf_fax);
|
||
IF LENGTH (v_prs_bedrijf_fax) > 20
|
||
THEN
|
||
v_prs_bedrijf_fax := SUBSTR (TRIM (v_prs_bedrijf_fax), 1, 20);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bedrijf/fax wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_fax
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Bedrijf/e-mail te lang';
|
||
v_prs_bedrijf_email := TRIM (v_prs_bedrijf_email);
|
||
IF LENGTH (v_prs_bedrijf_email) > 100
|
||
THEN
|
||
v_prs_bedrijf_email :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_email), 1, 100);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Bedrijf/e-mail wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_email
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contactpersoon te lang';
|
||
v_prs_bedrijf_contact_persoon :=
|
||
TRIM (v_prs_bedrijf_contact_persoon);
|
||
IF LENGTH (v_prs_bedrijf_contact_persoon) > 30
|
||
THEN
|
||
v_prs_bedrijf_contact_persoon :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_contact_persoon), 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Contactpersoon wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_contact_persoon
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contact/telefoon te lang';
|
||
v_prs_bedrijf_contact_telefoon :=
|
||
TRIM (v_prs_bedrijf_contact_telefoon);
|
||
|
||
IF LENGTH (v_prs_bedrijf_contact_telefoon) > 20
|
||
THEN
|
||
v_prs_bedrijf_contact_telefoon :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_contact_telefoon), 1, 20);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Contact/telefoon wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_contact_telefoon
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Contact/fax te lang';
|
||
v_prs_bedrijf_contact_fax := TRIM (v_prs_bedrijf_contact_fax);
|
||
IF LENGTH (v_prs_bedrijf_contact_fax) > 20
|
||
THEN
|
||
v_prs_bedrijf_contact_fax :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_contact_fax), 1, 20);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Contact/fax wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_contact_fax
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_prs_bedrijf_leverancier)),
|
||
1,
|
||
1
|
||
),
|
||
'J', 1,
|
||
0
|
||
)
|
||
INTO v_prs_bedrijf_leverancier_n
|
||
FROM DUAL;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_prs_bedrijf_uitvoerende)),
|
||
1,
|
||
1
|
||
),
|
||
'J', 1,
|
||
0
|
||
)
|
||
INTO v_prs_bedrijf_uitvoerende_n
|
||
FROM DUAL;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_prs_bedrijf_contract)), 1,
|
||
1),
|
||
'J', 1,
|
||
0
|
||
)
|
||
INTO v_prs_bedrijf_contract_n
|
||
FROM DUAL;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_prs_bedrijf_huurder)), 1, 1),
|
||
'J', 1,
|
||
0
|
||
)
|
||
INTO v_prs_bedrijf_huurder_n
|
||
FROM DUAL;
|
||
|
||
-- Verder geen foutdetectie; kan dus stricter?
|
||
SELECT DECODE (SUBSTR (TRIM (UPPER (v_prs_bedrijf_ingids)), 1, 1),
|
||
'J', 1,
|
||
0
|
||
)
|
||
INTO v_prs_bedrijf_ingids_n
|
||
FROM DUAL;
|
||
|
||
v_errorhint := 'Ongeldig uurloon; maximale grootte 9999.99';
|
||
BEGIN
|
||
v_prs_bedrijf_uurloon_n :=
|
||
fac.safe_to_number (v_prs_bedrijf_uurloon);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
END;
|
||
|
||
v_errorhint := 'Overeenkomstnummer te lang';
|
||
v_prs_overeenkomst_nr := TRIM (v_prs_overeenkomst_nr);
|
||
IF LENGTH (v_prs_overeenkomst_nr) > 30
|
||
THEN
|
||
v_prs_overeenkomst_nr :=
|
||
SUBSTR (TRIM (v_prs_overeenkomst_nr), 1, 30);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Overeenkomstnummer wordt afgebroken tot ['
|
||
|| v_prs_overeenkomst_nr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldige overeenkomstdatum';
|
||
v_prs_overeenkomst_datum := TRIM (v_prs_overeenkomst_datum);
|
||
IF v_prs_overeenkomst_datum IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
v_prs_overeenkomst_date :=
|
||
TO_DATE (v_prs_overeenkomst_datum, 'dd-mm-yyyy');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
ELSE
|
||
v_prs_overeenkomst_date := NULL;
|
||
END IF;
|
||
|
||
v_errorhint := 'Opmerking te lang';
|
||
v_prs_bedrijf_opmerking := TRIM (v_prs_bedrijf_opmerking);
|
||
IF LENGTH (v_prs_bedrijf_opmerking) > 4000
|
||
THEN
|
||
v_prs_bedrijf_opmerking :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_opmerking), 1, 4000);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Opmerking wordt afgebroken tot ['
|
||
|| SUBSTR(v_prs_bedrijf_opmerking, 1, 1000) -- imp_log_omschrijving is niet groter :)
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Dienst te lang';
|
||
v_prs_dienst_omschrijving := TRIM (v_prs_dienst_omschrijving);
|
||
IF LENGTH (v_prs_dienst_omschrijving) > 60
|
||
THEN
|
||
v_prs_dienst_omschrijving :=
|
||
SUBSTR (TRIM (v_prs_dienst_omschrijving), 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Dienst wordt afgebroken tot ['
|
||
|| v_prs_dienst_omschrijving
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Locatiecode te lang';
|
||
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
||
IF LENGTH (v_alg_locatie_code) > 10
|
||
THEN
|
||
v_alg_locatie_code := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errorhint,
|
||
'Locatiecode is te lang ['
|
||
|| v_alg_locatie_code
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Gebouwcode te lang';
|
||
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
||
IF LENGTH (v_alg_gebouw_code) > 12
|
||
THEN
|
||
v_alg_gebouw_code := NULL;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errorhint,
|
||
'Gebouwcode is te lang ['
|
||
|| v_alg_gebouw_code
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Relatietype omschrijving te lang';
|
||
v_prs_relatietype := TRIM (v_prs_relatietype);
|
||
IF LENGTH (v_prs_relatietype) > 100
|
||
THEN
|
||
v_prs_relatietype := SUBSTR (TRIM (v_prs_relatietype), 1, 100);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Relatietype omschrijving wordt afgebroken tot ['
|
||
|| v_prs_relatietype
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Overig_1 te lang';
|
||
v_prs_bedrijf_overig1 := TRIM (v_prs_bedrijf_overig1);
|
||
IF LENGTH (v_prs_bedrijf_overig1) > 256
|
||
THEN
|
||
v_prs_bedrijf_overig1 := SUBSTR (TRIM (v_prs_bedrijf_overig1), 1, 256);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Overig_1 wordt afgebroken tot [' || v_prs_bedrijf_overig1 || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Overig_2 te lang';
|
||
v_prs_bedrijf_overig2 := TRIM (v_prs_bedrijf_overig2);
|
||
IF LENGTH (v_prs_bedrijf_overig2) > 256
|
||
THEN
|
||
v_prs_bedrijf_overig2 := SUBSTR (TRIM (v_prs_bedrijf_overig2), 1, 256);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Overig_2 wordt afgebroken tot [' || v_prs_bedrijf_overig2 || ']'
|
||
);
|
||
END IF;
|
||
|
||
v_errorhint := 'Overig_3 te lang';
|
||
v_prs_bedrijf_overig3 := TRIM (v_prs_bedrijf_overig3);
|
||
IF LENGTH (v_prs_bedrijf_overig3) > 256
|
||
THEN
|
||
v_prs_bedrijf_overig3 := SUBSTR (TRIM (v_prs_bedrijf_overig3), 1, 256);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Overig_3 wordt afgebroken tot [' || v_prs_bedrijf_overig3 || ']'
|
||
);
|
||
END IF;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO fac_imp_ext_bedrijf
|
||
(prs_bedrijf_naam, prs_leverancier_nr,
|
||
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_telefoon, prs_bedrijf_fax,
|
||
prs_bedrijf_email,
|
||
prs_bedrijf_contact_persoon,
|
||
prs_bedrijf_contact_telefoon,
|
||
prs_bedrijf_contact_fax,
|
||
prs_bedrijf_xsl,
|
||
prs_bedrijf_order_adres,
|
||
prs_bedrijf_leverancier,
|
||
prs_bedrijf_uitvoerende,
|
||
prs_bedrijf_contract,
|
||
prs_bedrijf_huurder,
|
||
prs_bedrijf_ingids,
|
||
prs_bedrijf_uurloon,
|
||
prs_overeenkomst_nr,
|
||
prs_overeenkomst_datum,
|
||
prs_bedrijf_opmerking,
|
||
prs_dienst_omschrijving,
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
prs_relatietype,
|
||
prs_bedrijf_overig1,
|
||
prs_bedrijf_overig2,
|
||
prs_bedrijf_overig3
|
||
)
|
||
VALUES (v_prs_bedrijf_naam, v_prs_leverancier_nr,
|
||
v_prs_bedrijf_bezoek_adres,
|
||
v_prs_bedrijf_bezoek_postcode,
|
||
v_prs_bedrijf_bezoek_plaats,
|
||
v_prs_bedrijf_bezoek_land,
|
||
v_prs_bedrijf_post_adres,
|
||
v_prs_bedrijf_post_postcode,
|
||
v_prs_bedrijf_post_plaats,
|
||
v_prs_bedrijf_post_land,
|
||
v_prs_bedrijf_telefoon, v_prs_bedrijf_fax,
|
||
v_prs_bedrijf_email,
|
||
v_prs_bedrijf_contact_persoon,
|
||
v_prs_bedrijf_contact_telefoon,
|
||
v_prs_bedrijf_contact_fax,
|
||
v_prs_bedrijf_xsl,
|
||
v_prs_bedrijf_mldorder_adres,
|
||
v_prs_bedrijf_leverancier_n,
|
||
v_prs_bedrijf_uitvoerende_n,
|
||
v_prs_bedrijf_contract_n,
|
||
v_prs_bedrijf_huurder_n,
|
||
v_prs_bedrijf_ingids_n,
|
||
v_prs_bedrijf_uurloon_n,
|
||
v_prs_overeenkomst_nr,
|
||
v_prs_overeenkomst_date,
|
||
v_prs_bedrijf_opmerking,
|
||
v_prs_dienst_omschrijving,
|
||
v_alg_locatie_code,
|
||
v_alg_gebouw_code,
|
||
v_prs_relatietype,
|
||
v_prs_bedrijf_overig1,
|
||
v_prs_bedrijf_overig2,
|
||
v_prs_bedrijf_overig3
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_EXT_BEDRIJF.'
|
||
);
|
||
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',
|
||
'Relaties: aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'S',
|
||
'Relaties: aantal 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, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Inleesproces relaties afgebroken! ' || v_aanduiding
|
||
);
|
||
END fac_import_bedrijf_body;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_ext_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_seq_of_columns VARCHAR(255);
|
||
BEGIN
|
||
-- hulpje 1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34
|
||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34';
|
||
fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 2);
|
||
|
||
|
||
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_errormsg,
|
||
'Inleesproces relaties afgebroken!');
|
||
END;
|
||
/
|
||
|
||
-- Parameter p_sync = 0 of 1:
|
||
-- 0 = er wordt niet gesynchroniseerd (op leveranciersnummer), maar gewoon (ala FIP) aangevuld. Elke leverancier wordt toegevoegd.
|
||
-- 1 = er wel wel gesynchroniseerd (op leveranciernummer), dus add + update + delete
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_bedrijf_body (
|
||
p_import_key IN NUMBER,
|
||
p_sync IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
v_errorhint VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_new NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
v_count_del NUMBER (10);
|
||
v_aanduiding VARCHAR2 (200) := '-';
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_relatietype (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT prs_relatietype
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE prs_relatietype IS NOT NULL;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || rec.prs_relatietype || '] ';
|
||
v_errorhint := 'Fout bij bepalen relatietype';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_relatietype
|
||
WHERE UPPER (prs_relatietype_omschrijving) = UPPER (rec.prs_relatietype)
|
||
AND prs_relatietype_verwijder IS NULL;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen relatietype';
|
||
|
||
INSERT INTO prs_relatietype
|
||
(prs_relatietype_omschrijving)
|
||
VALUES (rec.prs_relatietype);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_ext_bedrijf ib;
|
||
--
|
||
v_bedrijf_key NUMBER(10);
|
||
v_relatietype_key NUMBER(10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '[' || rec.prs_bedrijf_naam || '|' || rec.prs_leverancier_nr || '] ';
|
||
v_errorhint := 'Fout bepalen bedrijf';
|
||
|
||
v_relatietype_key := NULL;
|
||
IF rec.prs_relatietype IS NOT NULL
|
||
THEN
|
||
SELECT prs_relatietype_key
|
||
INTO v_relatietype_key
|
||
FROM prs_relatietype
|
||
WHERE UPPER(TRIM(prs_relatietype_omschrijving)) = UPPER(rec.prs_relatietype)
|
||
AND prs_relatietype_verwijder IS NULL;
|
||
END IF;
|
||
|
||
IF rec.prs_leverancier_nr IS NULL AND p_sync = 1
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Leveranciernummer ongedefinieerd!',
|
||
v_errorhint);
|
||
COMMIT;
|
||
ELSE
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr);
|
||
--
|
||
IF v_count = 0 OR p_sync = 0
|
||
THEN
|
||
v_errorhint := 'Fout toevoegen bedrijf';
|
||
|
||
INSERT INTO prs_bedrijf (prs_bedrijf_naam,
|
||
prs_leverancier_nr,
|
||
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_telefoon,
|
||
prs_bedrijf_fax,
|
||
prs_bedrijf_email,
|
||
prs_bedrijf_contact_persoon,
|
||
prs_bedrijf_contact_telefoon,
|
||
prs_bedrijf_contact_fax,
|
||
prs_bedrijf_leverancier,
|
||
prs_bedrijf_uitvoerende,
|
||
prs_bedrijf_contract,
|
||
prs_bedrijf_huurder,
|
||
prs_bedrijf_ingids,
|
||
prs_bedrijf_uurloon,
|
||
prs_overeenkomst_nr,
|
||
prs_overeenkomst_datum,
|
||
prs_bedrijf_opmerking,
|
||
prs_relatietype_key)
|
||
VALUES (rec.prs_bedrijf_naam,
|
||
rec.prs_leverancier_nr,
|
||
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,
|
||
rec.prs_bedrijf_telefoon,
|
||
rec.prs_bedrijf_fax,
|
||
rec.prs_bedrijf_email,
|
||
rec.prs_bedrijf_contact_persoon,
|
||
rec.prs_bedrijf_contact_telefoon,
|
||
rec.prs_bedrijf_contact_fax,
|
||
DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
|
||
DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
|
||
rec.prs_bedrijf_uurloon,
|
||
rec.prs_overeenkomst_nr,
|
||
rec.prs_overeenkomst_datum,
|
||
rec.prs_bedrijf_opmerking,
|
||
v_relatietype_key)
|
||
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_errorhint := '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_telefoon = COALESCE (rec.prs_bedrijf_telefoon, prs_bedrijf_telefoon),
|
||
prs_bedrijf_fax = COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax),
|
||
prs_bedrijf_email = COALESCE (rec.prs_bedrijf_email, prs_bedrijf_email),
|
||
prs_bedrijf_contact_persoon = COALESCE (rec.prs_bedrijf_contact_persoon, prs_bedrijf_contact_persoon),
|
||
prs_bedrijf_contact_telefoon = COALESCE (rec.prs_bedrijf_contact_telefoon, prs_bedrijf_contact_telefoon),
|
||
prs_bedrijf_contact_fax = COALESCE (rec.prs_bedrijf_contact_fax, prs_bedrijf_contact_fax),
|
||
prs_bedrijf_leverancier = DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL),
|
||
prs_bedrijf_uitvoerende = DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
|
||
prs_bedrijf_contract = DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
|
||
prs_bedrijf_huurder = DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
|
||
prs_bedrijf_ingids = DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
|
||
prs_bedrijf_uurloon = COALESCE (rec.prs_bedrijf_uurloon, prs_bedrijf_uurloon),
|
||
prs_overeenkomst_nr = COALESCE (rec.prs_overeenkomst_nr, prs_overeenkomst_nr),
|
||
prs_overeenkomst_datum = COALESCE (rec.prs_overeenkomst_datum, prs_overeenkomst_datum),
|
||
prs_bedrijf_opmerking = COALESCE (rec.prs_bedrijf_opmerking, prs_bedrijf_opmerking),
|
||
prs_relatietype_key = DECODE (rec.prs_relatietype, NULL, prs_relatietype_key, v_relatietype_key) -- kan wel wijzigen, maar niet leeg maken.
|
||
WHERE prs_bedrijf_key = v_bedrijf_key;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF; -- v_count = 0
|
||
END IF; -- rec.prs_leverancier_nr IS NULL
|
||
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,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE del_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
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);
|
||
--
|
||
v_bedrijf_key NUMBER (10);
|
||
BEGIN
|
||
v_count_del := 0;
|
||
--
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '[' || rec.prs_bedrijf_naam || '] ';
|
||
v_errorhint := 'Fout verwijderen bedrijf';
|
||
|
||
UPDATE prs_bedrijf
|
||
SET prs_bedrijf_verwijder = SYSDATE
|
||
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
v_count_del := v_count_del + 1;
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
--
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del),
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE diensten_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_dienst
|
||
IS
|
||
SELECT DISTINCT prs_dienst_omschrijving
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE prs_dienst_omschrijving IS NOT NULL;
|
||
|
||
CURSOR c_dienstlocgebouw
|
||
IS
|
||
SELECT prs_dienst_omschrijving,
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
prs_bedrijf_naam
|
||
FROM fac_imp_ext_bedrijf
|
||
WHERE prs_dienst_omschrijving IS NOT NULL;
|
||
|
||
v_alg_locatie_key NUMBER (10);
|
||
v_alg_gebouw_key NUMBER (10);
|
||
v_prs_dienst_key NUMBER (10);
|
||
v_prs_bedrijf_key NUMBER (10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_upd := 0;
|
||
|
||
FOR rec2 IN c_dienst
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg := 'Kan dienst niet bepalen [' || rec2.prs_dienst_omschrijving || '] ';
|
||
--
|
||
BEGIN
|
||
SELECT prs_dienst_key
|
||
INTO v_prs_dienst_key
|
||
FROM prs_dienst
|
||
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec2.prs_dienst_omschrijving);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errormsg := 'Kan dienst niet wegschrijven [' || rec2.prs_dienst_omschrijving || '] ';
|
||
--
|
||
INSERT INTO prs_dienst
|
||
(prs_dienst_omschrijving)
|
||
VALUES (rec2.prs_dienst_omschrijving);
|
||
END;
|
||
--
|
||
v_count_upd := v_count_upd + 1;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errorhint := v_errormsg;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| 'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
--
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Diensten: aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Diensten: aantal toegevoegd: '
|
||
|| TO_CHAR (v_count_upd),
|
||
''
|
||
);
|
||
--
|
||
v_count_tot := 0;
|
||
v_count_upd := 0;
|
||
--
|
||
FOR rec3 IN c_dienstlocgebouw
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg := 'Kan dienst niet bepalen [' || rec3.prs_dienst_omschrijving || '] ';
|
||
SELECT prs_dienst_key
|
||
INTO v_prs_dienst_key
|
||
FROM prs_dienst
|
||
WHERE prs_dienst_omschrijving = rec3.prs_dienst_omschrijving;
|
||
|
||
v_errormsg := 'Kan locatie niet bepalen [' || rec3.alg_locatie_code || '] ';
|
||
IF rec3.alg_locatie_code IS NOT NULL
|
||
THEN
|
||
SELECT alg_locatie_key
|
||
INTO v_alg_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE alg_locatie_code = rec3.alg_locatie_code;
|
||
ELSE
|
||
v_alg_locatie_key := NULL;
|
||
END IF;
|
||
|
||
v_errormsg := 'Kan gebouw niet bepalen [' || rec3.alg_gebouw_code || '] ';
|
||
IF rec3.alg_gebouw_code IS NOT NULL
|
||
THEN
|
||
SELECT alg_gebouw_key
|
||
INTO v_alg_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_gebouw_code = rec3.alg_gebouw_code
|
||
AND alg_locatie_key = v_alg_locatie_key;
|
||
ELSE
|
||
v_alg_gebouw_key := NULL;
|
||
END IF;
|
||
|
||
v_errormsg := 'Kan bedrijf niet bepalen [' || rec3.prs_bedrijf_naam || '] ';
|
||
SELECT prs_bedrijf_key
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE prs_bedrijf_naam = rec3.prs_bedrijf_naam;
|
||
|
||
v_errormsg := 'Kan bedrijf/dienst/loc/gebouw niet wegschrijven ['
|
||
|| rec3.prs_bedrijf_naam || '/'
|
||
|| rec3.prs_dienst_omschrijving || '/'
|
||
|| rec3.alg_locatie_code || '/'
|
||
|| rec3.alg_gebouw_code || '] ';
|
||
|
||
INSERT INTO prs_bedrijfdienstlocatie
|
||
( prs_dienst_key
|
||
, prs_bedrijf_key
|
||
, alg_locatie_key
|
||
, alg_gebouw_key
|
||
)
|
||
VALUES
|
||
( v_prs_dienst_key
|
||
, v_prs_bedrijf_key
|
||
, decode (v_alg_gebouw_key, null, v_alg_locatie_key, null)
|
||
, v_alg_gebouw_key
|
||
);
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_errorhint := v_errormsg;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| 'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
--
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf/dienst/locatie: aantal ingelezen: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf/dienst/locatie: aantal toegevoegd: '
|
||
|| TO_CHAR (v_count_upd),
|
||
''
|
||
);
|
||
END;
|
||
|
||
--
|
||
-- MAIN
|
||
BEGIN
|
||
IF p_sync = 1
|
||
THEN
|
||
-- Bij aanvullen nooit verwijderen, alleen bij sync-en
|
||
del_bedrijf (p_import_key);
|
||
END IF;
|
||
--
|
||
add_relatietype (p_import_key);
|
||
add_bedrijf (p_import_key);
|
||
--
|
||
IF p_sync = 0
|
||
THEN
|
||
-- Bij aanvullen bedrijven de diensten-locatie-gebouw uitvoeren, bij sync-en (nog) niet
|
||
diensten_bedrijf(p_import_key);
|
||
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,
|
||
'Importproces relaties afgebroken!');
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_ext_bedrijf (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
BEGIN
|
||
fac_update_bedrijf_body(p_import_key, 0);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_bedrijfadres (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR (200);
|
||
|
||
-- De importvelden
|
||
v_prs_bedrijf_naam VARCHAR2 (255); -- VARCHAR2(60),
|
||
v_prs_leverancier_nr VARCHAR2 (255); -- VARCHAR2(50),
|
||
v_prs_bedrijf_key NUMBER(10);
|
||
v_prs_bedrijfadres_type VARCHAR2 (255); -- VARCHAR2(1),
|
||
v_mld_typeopdr_omschrijving VARCHAR2 (255); -- NUMBER(10),
|
||
v_mld_typeopdr_key NUMBER(10);
|
||
v_prs_bedrijfadres_url VARCHAR2 (1000); -- VARCHAR2(512),
|
||
v_prs_bedrijfadres_ordermode VARCHAR2 (255); -- NUMBER(3),
|
||
v_prs_bedrijfadres_certificate VARCHAR2 (1000); -- VARCHAR2(255),
|
||
v_prs_bedrijfadres_xsl VARCHAR2 (1000); -- VARCHAR2(256),
|
||
v_prs_bedrijfadres_ext VARCHAR2 (255); -- VARCHAR2(10),
|
||
v_prs_bedrijfadres_attachfile VARCHAR2 (1000); -- VARCHAR2(256),
|
||
v_prs_bedrijfadres_username VARCHAR2 (255); -- VARCHAR2(128),
|
||
v_prs_bedrijfadres_password VARCHAR2 (1000); -- VARCHAR2(320)),
|
||
v_prs_bedrijfadres_sender VARCHAR2 (1000); -- VARCHAR2(512),
|
||
v_prs_bedrijfadres_replyaddress VARCHAR2 (1000); -- VARCHAR2(512),
|
||
v_prs_bedrijfadres_lockuser VARCHAR2 (255); -- NUMBER(10),
|
||
v_lockuser_key NUMBER (10);
|
||
v_prs_bedrijfadres_lockexpire VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_bedrijfadres;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_leverancier_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_type);
|
||
fac.imp_getfield (v_newline, c_delim, v_mld_typeopdr_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_url);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_ordermode);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_certificate);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_xsl);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_ext);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_attachfile);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_username);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_password);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_sender);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_replyaddress);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_lockuser);
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijfadres_lockexpire);
|
||
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_bedrijf_naam
|
||
|| '|'
|
||
|| v_prs_leverancier_nr
|
||
|| '|'
|
||
|| v_prs_bedrijfadres_type
|
||
|| '|'
|
||
|| v_mld_typeopdr_omschrijving
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF fac_check_import_header(v_prs_bedrijf_naam, 'BEDRIJFSNAAM')
|
||
AND fac_check_import_header(v_prs_leverancier_nr, 'LEVERANCIERNUMMER')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_type, 'KANAAL')
|
||
AND fac_check_import_header(v_mld_typeopdr_omschrijving, 'OPDRACHTTYPE')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_url, 'ADRES')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_ordermode, 'ORDERMODE')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_certificate, 'CERTIFICAAT')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_xsl, 'XSL TEMPLATE')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_ext, 'EXTENSIE')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_attachfile, 'VASTE BIJLAGE')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_username, 'LOGIN')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_password, 'WACHTWOORD')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_sender, 'AFZENDER')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_replyaddress,'REPLY ADRES')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_lockuser, 'VASTE GEBRUIKER')
|
||
AND fac_check_import_header(v_prs_bedrijfadres_lockexpire, 'EXPIRE DAYS')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Bedrijf niet gevonden';
|
||
BEGIN
|
||
SELECT prs_bedrijf_key
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE COALESCE(prs_bedrijf_intern, 0) <> 1
|
||
AND prs_bedrijf_verwijder IS NULL
|
||
AND UPPER(prs_leverancier_nr) = UPPER(v_prs_leverancier_nr);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_bedrijf_key
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE COALESCE(prs_bedrijf_intern, 0) <> 1
|
||
AND prs_bedrijf_verwijder IS NULL
|
||
AND UPPER(prs_bedrijf_naam) = UPPER(v_prs_bedrijf_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_bedrijf_key
|
||
INTO v_prs_bedrijf_key
|
||
FROM prs_bedrijf
|
||
WHERE COALESCE(prs_bedrijf_intern, 0) <> 1
|
||
AND prs_bedrijf_verwijder IS NULL
|
||
AND UPPER(prs_leverancier_nr) = UPPER(v_prs_leverancier_nr)
|
||
AND UPPER(prs_bedrijf_naam) = UPPER(v_prs_bedrijf_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND OR TOO_MANY_ROWS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Leveranciernummer/bedrijf niet gevonden',
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END;
|
||
END;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Opdrachttype niet gevonden';
|
||
v_mld_typeopdr_key := NULL;
|
||
IF UPPER(v_prs_bedrijfadres_type) = 'O' AND v_mld_typeopdr_omschrijving IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT mld_typeopdr_key
|
||
INTO v_mld_typeopdr_key
|
||
FROM mld_typeopdr
|
||
WHERE mld_typeopdr_upper = UPPER(v_mld_typeopdr_omschrijving);
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen');
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Expire days mag niet negatief of meer zijn dan 10 posities lang.
|
||
-- Indien leeg, dan blijft/wordt expire_days=ongedefinieerd=NULL!
|
||
v_prs_bedrijfadres_lockexpire := TRIM (v_prs_bedrijfadres_lockexpire);
|
||
|
||
IF v_prs_bedrijfadres_lockexpire IS NOT NULL
|
||
AND ( fac.safe_to_number (v_prs_bedrijfadres_lockexpire) IS NULL
|
||
OR fac.safe_to_number (v_prs_bedrijfadres_lockexpire) < 0
|
||
OR fac.safe_to_number (v_prs_bedrijfadres_lockexpire) > 9999999999)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ongeldig aantal expire days',
|
||
'Regel wordt niet ingelezen (Expire days:' || v_prs_bedrijfadres_lockexpire || ')'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Controleer kanaal';
|
||
IF LENGTH(v_prs_bedrijfadres_type) > 1
|
||
THEN
|
||
v_prs_bedrijfadres_type := SUBSTR(v_prs_bedrijfadres_type, 1, 1);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Kanaal aangepast naar: ' || v_prs_bedrijfadres_type);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van URL';
|
||
IF LENGTH(v_prs_bedrijfadres_url) > 512
|
||
THEN
|
||
v_prs_bedrijfadres_url := SUBSTR(v_prs_bedrijfadres_url, 1, 512);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'URL aangepast naar: ' || v_prs_bedrijfadres_url);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer ordermode';
|
||
IF LENGTH(v_prs_bedrijfadres_ordermode) > 3
|
||
OR ( fac.safe_to_number(v_prs_bedrijfadres_ordermode) IS NULL
|
||
AND v_prs_bedrijfadres_ordermode IS NOT NULL)
|
||
THEN
|
||
v_prs_bedrijfadres_ordermode := SUBSTR(v_prs_bedrijfadres_ordermode, 1, 3);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Ordermode aangepast naar: ' || fac.safe_to_number(v_prs_bedrijfadres_ordermode));
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van certificaat';
|
||
IF LENGTH(v_prs_bedrijfadres_certificate) > 255
|
||
THEN
|
||
v_prs_bedrijfadres_certificate := SUBSTR(v_prs_bedrijfadres_certificate, 1, 255);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Certificaat aangepast naar: ' || v_prs_bedrijfadres_certificate);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van stylesheet';
|
||
IF LENGTH(v_prs_bedrijfadres_xsl) > 256
|
||
THEN
|
||
v_prs_bedrijfadres_xsl := SUBSTR(v_prs_bedrijfadres_xsl, 1, 256);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Stylesheet aangepast naar: ' || v_prs_bedrijfadres_xsl);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van extensie';
|
||
IF LENGTH(v_prs_bedrijfadres_ext) > 10
|
||
THEN
|
||
v_prs_bedrijfadres_ext := SUBSTR(v_prs_bedrijfadres_ext, 1, 10);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Extensie aangepast naar: ' || v_prs_bedrijfadres_ext);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van vaste bijlage';
|
||
IF LENGTH(v_prs_bedrijfadres_attachfile) > 256
|
||
THEN
|
||
v_prs_bedrijfadres_attachfile := SUBSTR(v_prs_bedrijfadres_attachfile, 1, 256);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Vaste bijlage aangepast naar: ' || v_prs_bedrijfadres_attachfile);
|
||
ELSE
|
||
IF ((LENGTH(v_prs_bedrijfadres_attachfile) > 0) AND (INSTR(v_prs_bedrijfadres_attachfile,'.') < 0))
|
||
THEN
|
||
v_prs_bedrijfadres_attachfile := '';
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Ongeldige vaste bijlage verwijderd: ' || v_prs_bedrijfadres_attachfile);
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van login';
|
||
IF LENGTH(v_prs_bedrijfadres_username) > 128
|
||
THEN
|
||
v_prs_bedrijfadres_username := SUBSTR(v_prs_bedrijfadres_username, 1, 128);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Login aangepast naar: ' || v_prs_bedrijfadres_username);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van wachtwoord';
|
||
IF LENGTH(v_prs_bedrijfadres_password) > 320
|
||
THEN
|
||
v_prs_bedrijfadres_password := SUBSTR(v_prs_bedrijfadres_password, 1, 320);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Wachtwoord aangepast naar: ' || v_prs_bedrijfadres_password);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van afzender';
|
||
IF LENGTH(v_prs_bedrijfadres_sender) > 512
|
||
THEN
|
||
v_prs_bedrijfadres_sender := SUBSTR(v_prs_bedrijfadres_sender, 1, 512);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Afzender aangepast naar: ' || v_prs_bedrijfadres_sender);
|
||
END IF;
|
||
|
||
v_errormsg := 'Controleer lengte van reply adres';
|
||
IF LENGTH(v_prs_bedrijfadres_replyaddress) > 512
|
||
THEN
|
||
v_prs_bedrijfadres_replyaddress := SUBSTR(v_prs_bedrijfadres_replyaddress, 1, 512);
|
||
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg,
|
||
'Reply adres aangepast naar: ' || v_prs_bedrijfadres_replyaddress);
|
||
END IF;
|
||
|
||
-- Vindt de key van de vaste gebruiker.
|
||
v_prs_bedrijfadres_lockuser := TRIM (v_prs_bedrijfadres_lockuser);
|
||
|
||
IF v_prs_bedrijfadres_lockuser IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_lockuser_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = UPPER (v_prs_bedrijfadres_lockuser)
|
||
AND prs_perslid_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_lockuser_key := NULL;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Budgethouder-aanduiding kan niet gevonden worden',
|
||
'Vaste gebruiker wordt leeg gemaakt [' || v_prs_bedrijfadres_lockuser || ']');
|
||
END;
|
||
ELSE
|
||
v_lockuser_key := NULL;
|
||
END IF;
|
||
|
||
BEGIN
|
||
v_errormsg := 'Toevoegen bedrijfadres';
|
||
INSERT INTO fac_imp_bedrijfadres (prs_bedrijf_key,
|
||
prs_bedrijfadres_type,
|
||
mld_typeopdr_key,
|
||
prs_bedrijfadres_url,
|
||
prs_bedrijfadres_ordermode,
|
||
prs_bedrijfadres_certificate,
|
||
prs_bedrijfadres_xsl,
|
||
prs_bedrijfadres_ext,
|
||
prs_bedrijfadres_attachfile,
|
||
prs_bedrijfadres_username,
|
||
prs_bedrijfadres_password,
|
||
prs_bedrijfadres_sender,
|
||
prs_bedrijfadres_replyaddress,
|
||
prs_bedrijfadres_lockuser_key,
|
||
prs_bedrijfadres_lockexpire)
|
||
VALUES (v_prs_bedrijf_key,
|
||
v_prs_bedrijfadres_type,
|
||
v_mld_typeopdr_key,
|
||
v_prs_bedrijfadres_url,
|
||
v_prs_bedrijfadres_ordermode,
|
||
v_prs_bedrijfadres_certificate,
|
||
v_prs_bedrijfadres_xsl,
|
||
v_prs_bedrijfadres_ext,
|
||
v_prs_bedrijfadres_attachfile,
|
||
v_prs_bedrijfadres_username,
|
||
v_prs_bedrijfadres_password,
|
||
v_prs_bedrijfadres_sender,
|
||
v_prs_bedrijfadres_replyaddress,
|
||
v_lockuser_key,
|
||
fac.safe_to_number (v_prs_bedrijfadres_lockexpire));
|
||
|
||
COMMIT;
|
||
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,
|
||
'E',
|
||
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',
|
||
'Adressen/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Adressen/aantal 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 adressen afgebroken!');
|
||
END fac_import_bedrijfadres;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_bedrijfadres (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_bedrijfadres i;
|
||
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
v_errorhint VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_aanduiding VARCHAR2 (200) := '-';
|
||
|
||
v_prs_bedrijf_naam VARCHAR (60);
|
||
-- MAIN
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count := 0;
|
||
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
SELECT prs_bedrijf_naam
|
||
INTO v_prs_bedrijf_naam
|
||
FROM prs_bedrijf
|
||
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
||
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_bedrijf_naam
|
||
|| '|'
|
||
|| rec.prs_bedrijfadres_type
|
||
|| '] ';
|
||
|
||
v_errorhint := 'Fout toevoegen bedrijfadres';
|
||
|
||
INSERT INTO prs_bedrijfadres (prs_bedrijf_key,
|
||
prs_bedrijfadres_type,
|
||
mld_typeopdr_key,
|
||
prs_bedrijfadres_url,
|
||
prs_bedrijfadres_ordermode,
|
||
prs_bedrijfadres_certificate,
|
||
prs_bedrijfadres_xsl,
|
||
prs_bedrijfadres_ext,
|
||
prs_bedrijfadres_attachfile,
|
||
prs_bedrijfadres_username,
|
||
prs_bedrijfadres_password,
|
||
prs_bedrijfadres_sender,
|
||
prs_bedrijfadres_replyaddress,
|
||
prs_bedrijfadres_lockuser_key,
|
||
prs_bedrijfadres_locksecret,
|
||
prs_bedrijfadres_lockexpire)
|
||
VALUES (rec.prs_bedrijf_key,
|
||
rec.prs_bedrijfadres_type,
|
||
rec.mld_typeopdr_key,
|
||
rec.prs_bedrijfadres_url,
|
||
rec.prs_bedrijfadres_ordermode,
|
||
rec.prs_bedrijfadres_certificate,
|
||
rec.prs_bedrijfadres_xsl,
|
||
rec.prs_bedrijfadres_ext,
|
||
rec.prs_bedrijfadres_attachfile,
|
||
rec.prs_bedrijfadres_username,
|
||
rec.prs_bedrijfadres_password,
|
||
rec.prs_bedrijfadres_sender,
|
||
rec.prs_bedrijfadres_replyaddress,
|
||
rec.prs_bedrijfadres_lockuser_key,
|
||
CASE
|
||
WHEN rec.prs_bedrijfadres_lockuser_key IS NOT NULL
|
||
THEN DBMS_RANDOM.string('a', 32)
|
||
ELSE NULL
|
||
END,
|
||
CASE
|
||
WHEN rec.prs_bedrijfadres_lockuser_key IS NOT NULL
|
||
THEN COALESCE(rec.prs_bedrijfadres_lockexpire, 30)
|
||
ELSE NULL
|
||
END);
|
||
|
||
v_count := v_count + 1;
|
||
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,
|
||
v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count),
|
||
'');
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Importproces bedrijfadressen afgebroken!');
|
||
END;
|
||
/
|
||
|
||
|
||
-- FSN#19006: dit is hier ingeplakt, maar moet nog gereviseerd worden naar de laatste stand van zaken
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_factuur (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
|
||
-- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist)
|
||
-- Variabelelijst
|
||
-- v_leveranciernr: 1
|
||
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
|
||
-- v_factuurdatum: 3
|
||
-- v_empty);
|
||
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_locatie: 5
|
||
-- v_afleverdatum: 6
|
||
-- v_omschrijving: 7
|
||
-- v_aantal: 8
|
||
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
|
||
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
|
||
-- v_docid: 12
|
||
-- v_debiteur_nr: 13
|
||
-- v_opmerking: 14
|
||
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
|
||
-- v_kenmerk1: 16
|
||
-- v_kenmerk2: 17
|
||
-- v_kenmerk3: 18
|
||
-- v_kenmerk4: 19
|
||
-- v_kenmerk5: 20
|
||
-- v_boekmaand: 21
|
||
-- v_kenmerk6: 22
|
||
-- v_kenmerk7: 23
|
||
-- v_kenmerk8: 24
|
||
-- v_kenmerk9: 25
|
||
-- v_kenmerk10: 26
|
||
-- v_kenmerk11: 27
|
||
-- v_kenmerk12: 28
|
||
-- v_kenmerk13: 29
|
||
-- v_kenmerk14: 30
|
||
-- v_kenmerk15: 31
|
||
-- v_kenmerk16: 32
|
||
-- v_kenmerk17: 33
|
||
-- v_kenmerk18: 34
|
||
-- v_kenmerk19: 35
|
||
-- v_kenmerk20: 36
|
||
-- v_artikelcode: 37
|
||
-- v_factuurregelaantal: 38
|
||
-- v_eenheid: 39
|
||
-- v_opdrachtregelid: 40
|
||
-- Eerst geprobeerd via nette array, geeft problemen met type buiten package, en in package lukt niet omdat
|
||
-- de import in Facilitor package-loos is (en niet 1-2-3 zo kan worden gemaakt vanwege alle bestaande klanten)
|
||
-- v_seq_of_columns ListOfInteger := (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40);
|
||
|
||
-- Dus dan maar via een string, en ook op slimme wijze, nl alsof het een ingelezen factuur-record is met p_fielddelimitor
|
||
v_seq_of_columns VARCHAR(255);
|
||
|
||
|
||
-- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen.
|
||
|
||
-- Als leveranciersnr en factuurnr b.v. zijn omgedraaid in het CSV-formaat,
|
||
-- dan factuurimport ListOfInteger := (2,1,3,4,5,6,7,8,9,10,11,12);
|
||
-- v_seq_of_columns := '2;1;3;4;5;6;7;8;9;10;11;12';
|
||
|
||
-- Als leveranciersnr NIET in CSV staat, dan factuurimport ListOfInteger := (0,2,3,4,5,6,7,8,9,10,11,12);
|
||
-- v_seq_of_columns := '0;2;3;4;5;6;7;8;9;10;11;12';
|
||
-- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blijft LEEG.
|
||
|
||
BEGIN
|
||
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40';
|
||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_factuur_body (p_import_key IN NUMBER,
|
||
p_seq_of_columns IN VARCHAR2
|
||
)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_field VARCHAR2 (100);
|
||
v_fielddelimitor VARCHAR2 (2);
|
||
v_errormsg VARCHAR (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
v_count NUMBER(10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- De velden op de eerste regel
|
||
v_totbedrfact VARCHAR2 (100);
|
||
v_totbedrfactvalue VARCHAR2 (100);
|
||
-- De importvelden
|
||
v_empty VARCHAR2 (100);
|
||
v_debiteurnr VARCHAR2 (100);
|
||
v_ordernr VARCHAR2 (100);
|
||
v_leveranciernr VARCHAR2 (100);
|
||
v_factuurnr VARCHAR2 (100);
|
||
v_factuurdatum VARCHAR2 (100);
|
||
v_aantal VARCHAR2 (100);
|
||
v_kostprijs VARCHAR2 (100);
|
||
v_btw VARCHAR2 (100);
|
||
v_btw_bedrag VARCHAR2 (100);
|
||
v_docid VARCHAR2 (255);
|
||
v_locatie VARCHAR2 (100);
|
||
v_afleverdatum VARCHAR2 (100);
|
||
v_omschrijving VARCHAR2 (4000);
|
||
v_opmerking VARCHAR2 (250);
|
||
v_btw_verlegd VARCHAR2 (255);
|
||
v_kenmerk1 VARCHAR2 (4000);
|
||
v_kenmerk2 VARCHAR2 (4000);
|
||
v_kenmerk3 VARCHAR2 (4000);
|
||
v_kenmerk4 VARCHAR2 (4000);
|
||
v_kenmerk5 VARCHAR2 (4000);
|
||
v_kenmerk6 VARCHAR2 (4000);
|
||
v_kenmerk7 VARCHAR2 (4000);
|
||
v_kenmerk8 VARCHAR2 (4000);
|
||
v_kenmerk9 VARCHAR2 (4000);
|
||
v_kenmerk10 VARCHAR2 (4000);
|
||
v_kenmerk11 VARCHAR2 (4000);
|
||
v_kenmerk12 VARCHAR2 (4000);
|
||
v_kenmerk13 VARCHAR2 (4000);
|
||
v_kenmerk14 VARCHAR2 (4000);
|
||
v_kenmerk15 VARCHAR2 (4000);
|
||
v_kenmerk16 VARCHAR2 (4000);
|
||
v_kenmerk17 VARCHAR2 (4000);
|
||
v_kenmerk18 VARCHAR2 (4000);
|
||
v_kenmerk19 VARCHAR2 (4000);
|
||
v_kenmerk20 VARCHAR2 (4000);
|
||
v_boekmaand VARCHAR2 (4000);
|
||
v_artikelcode VARCHAR2(255);
|
||
v_factuurregelaantal NUMBER(8,2);
|
||
v_eenheid VARCHAR2(30);
|
||
v_opdrachtregelid NUMBER(10);
|
||
|
||
v_check_dec_sign NUMBER (5, 2);
|
||
|
||
v_seq_of_columns VARCHAR2(255);
|
||
v_colnr VARCHAR2 (2);
|
||
v_colnr1 NUMBER;
|
||
v_colnr2 NUMBER;
|
||
v_colnr3 NUMBER;
|
||
v_colnr4 NUMBER;
|
||
v_colnr5 NUMBER;
|
||
v_colnr6 NUMBER;
|
||
v_colnr7 NUMBER;
|
||
v_colnr8 NUMBER;
|
||
v_colnr9 NUMBER;
|
||
v_colnr10 NUMBER;
|
||
v_colnr11 NUMBER;
|
||
v_colnr12 NUMBER;
|
||
v_colnr13 NUMBER;
|
||
v_colnr14 NUMBER;
|
||
v_colnr15 NUMBER;
|
||
v_colnr16 NUMBER;
|
||
v_colnr17 NUMBER;
|
||
v_colnr18 NUMBER;
|
||
v_colnr19 NUMBER;
|
||
v_colnr20 NUMBER;
|
||
v_colnr21 NUMBER;
|
||
v_colnr22 NUMBER;
|
||
v_colnr23 NUMBER;
|
||
v_colnr24 NUMBER;
|
||
v_colnr25 NUMBER;
|
||
v_colnr26 NUMBER;
|
||
v_colnr27 NUMBER;
|
||
v_colnr28 NUMBER;
|
||
v_colnr29 NUMBER;
|
||
v_colnr30 NUMBER;
|
||
v_colnr31 NUMBER;
|
||
v_colnr32 NUMBER;
|
||
v_colnr33 NUMBER;
|
||
v_colnr34 NUMBER;
|
||
v_colnr35 NUMBER;
|
||
v_colnr36 NUMBER;
|
||
v_colnr37 NUMBER;
|
||
v_colnr38 NUMBER;
|
||
v_colnr39 NUMBER;
|
||
v_colnr40 NUMBER;
|
||
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
BEGIN
|
||
-- Er kunnen al records in fac_imp_factuur zitten als meerdere XML-bestanden
|
||
-- zijn ingelezen door UTILS\gen_import\gen_import.wsf die tegelijk worden
|
||
-- verwerkt
|
||
SELECT COALESCE(MAX(fac_imp_file_index), 0)+1
|
||
INTO v_count
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
-- Init
|
||
v_fielddelimitor := fac.import_delimiter(p_import_key);
|
||
v_seq_of_columns := p_seq_of_columns;
|
||
v_errorhint := 'Bepalen volgorde kolommen';
|
||
|
||
-- De volgorde de te importeren kolommen in de CSV uitlezen uit v_seq_of_columns
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr1);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr2);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr3);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr4);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr5);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr6);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr7);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr8);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr9);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr10);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr11);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr12);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr13);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr14);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr15);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr16);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr17);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr18);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr19);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr20);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr21);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr22);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr23);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr24);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr25);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr26);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr27);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr28);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr29);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr30);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr31);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr32);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr33);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr34);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr35);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr36);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr37);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr38);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr39);
|
||
fac.imp_getfield (v_seq_of_columns, v_fielddelimitor, v_colnr40);
|
||
|
||
v_errorhint := 'Decimaal check';
|
||
|
||
-- check the client decimal settings
|
||
-- we do not convert the , to a . if the client decimal separator is a ,
|
||
SELECT fac.safe_to_number ('2,5') INTO v_check_dec_sign FROM DUAL;
|
||
|
||
FOR v_rec IN cfactuur
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint := 'Inlezen regel';
|
||
v_newline := v_rec.fac_imp_file_line;
|
||
-- we gaan geen regels inlezen die geen informatie bevatten.
|
||
IF LENGTH (v_newline) > 10
|
||
THEN
|
||
v_errorhint := 'Inlezen leveranciernr kolom:' || v_colnr1;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr1), v_leveranciernr);
|
||
v_errorhint := 'Inlezen factuurnr kolom:' || v_colnr2;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr2), v_factuurnr);
|
||
v_errorhint := 'Inlezen factuurdatum kolom:' || v_colnr3;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr3), v_factuurdatum);
|
||
v_errorhint := 'Inlezen ordernr kolom:' || v_colnr4;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr4), v_ordernr);
|
||
v_errorhint := 'Inlezen locatie kolom:' || v_colnr5;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr5), v_locatie);
|
||
v_errorhint := 'Inlezen afleverdatum kolom:' || v_colnr6;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr6), v_afleverdatum);
|
||
v_errorhint := 'Inlezen omschrijving kolom:' || v_colnr7;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr7), v_omschrijving);
|
||
v_errorhint := 'Inlezen aantal kolom:' || v_colnr8;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr8), v_aantal);
|
||
v_errorhint := 'Inlezen kostprijs kolom:' || v_colnr9;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr9), v_kostprijs);
|
||
v_errorhint := 'Inlezen btw_bedrag kolom:' || v_colnr10;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr10), v_btw_bedrag);
|
||
v_errorhint := 'Inlezen btw kolom:' || v_colnr11;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr11), v_btw);
|
||
v_errorhint := 'Inlezen docid kolom:' || v_colnr12;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr12), v_docid);
|
||
v_errorhint := 'Inlezen debiteurnr kolom:' || v_colnr13;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr13), v_debiteurnr);
|
||
v_errorhint := 'Inlezen opmerking kolom:' || v_colnr14;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr14), v_opmerking);
|
||
v_errorhint := 'Inlezen btw_verlegd kolom:' || v_colnr15;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr15), v_btw_verlegd);
|
||
v_errorhint := 'Inlezen kenmerk1 kolom:' || v_colnr16;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr16), v_kenmerk1);
|
||
v_errorhint := 'Inlezen kenmerk2 kolom:' || v_colnr17;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr17), v_kenmerk2);
|
||
v_errorhint := 'Inlezen kenmerk3 kolom:' || v_colnr18;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr18), v_kenmerk3);
|
||
v_errorhint := 'Inlezen kenmerk4 kolom:' || v_colnr19;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr19), v_kenmerk4);
|
||
v_errorhint := 'Inlezen kenmerk5 kolom:' || v_colnr20;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr20), v_kenmerk5);
|
||
v_errorhint := 'Inlezen boekmaand kolom:' || v_colnr21;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr21), v_boekmaand);
|
||
v_errorhint := 'Inlezen kenmerk6 kolom:' || v_colnr22;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr22), v_kenmerk6);
|
||
v_errorhint := 'Inlezen kenmerk7 kolom:' || v_colnr23;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr23), v_kenmerk7);
|
||
v_errorhint := 'Inlezen kenmerk8 kolom:' || v_colnr24;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr24), v_kenmerk8);
|
||
v_errorhint := 'Inlezen kenmerk9 kolom:' || v_colnr25;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr25), v_kenmerk9);
|
||
v_errorhint := 'Inlezen kenmerk10 kolom:' || v_colnr26;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr26), v_kenmerk10);
|
||
v_errorhint := 'Inlezen kenmerk11 kolom:' || v_colnr27;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr27), v_kenmerk11);
|
||
v_errorhint := 'Inlezen kenmerk12 kolom:' || v_colnr28;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr28), v_kenmerk12);
|
||
v_errorhint := 'Inlezen kenmerk13 kolom:' || v_colnr29;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr29), v_kenmerk13);
|
||
v_errorhint := 'Inlezen kenmerk14 kolom:' || v_colnr30;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr30), v_kenmerk14);
|
||
v_errorhint := 'Inlezen kenmerk15 kolom:' || v_colnr31;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr31), v_kenmerk15);
|
||
v_errorhint := 'Inlezen kenmerk16 kolom:' || v_colnr32;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr32), v_kenmerk16);
|
||
v_errorhint := 'Inlezen kenmerk17 kolom:' || v_colnr33;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr33), v_kenmerk17);
|
||
v_errorhint := 'Inlezen kenmerk18 kolom:' || v_colnr34;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr34), v_kenmerk18);
|
||
v_errorhint := 'Inlezen kenmerk19 kolom:' || v_colnr35;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr35), v_kenmerk19);
|
||
v_errorhint := 'Inlezen kenmerk20 kolom:' || v_colnr36;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr36), v_kenmerk20);
|
||
v_errorhint := 'Inlezen factuurregel artikelcode kolom:' || v_colnr37;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr37), v_artikelcode);
|
||
v_errorhint := 'Inlezen factuurregel aantal kolom:' || v_colnr38;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr38), v_factuurregelaantal);
|
||
v_errorhint := 'Inlezen factuurregel eenheid kolom:' || v_colnr39;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr39), v_eenheid);
|
||
v_errorhint := 'Inlezen factuurregel opdrachtregelid kolom:' || v_colnr40;
|
||
fac.imp_getfield_nr (v_newline, v_fielddelimitor, fac.safe_to_number(v_colnr40), v_opdrachtregelid);
|
||
|
||
|
||
IF v_check_dec_sign IS NULL
|
||
THEN
|
||
v_kostprijs := REPLACE (SUBSTR (v_kostprijs, 1, 15), ',', '.');
|
||
v_btw_bedrag := REPLACE (SUBSTR (v_btw_bedrag, 1, 15), ',', '.');
|
||
v_aantal := REPLACE (SUBSTR (v_aantal, 1, 10), ',', '.');
|
||
ELSE
|
||
v_kostprijs := SUBSTR (v_kostprijs, 1, 15);
|
||
v_btw_bedrag := SUBSTR (v_btw_bedrag, 1, 15);
|
||
v_aantal := SUBSTR (v_aantal, 1, 10);
|
||
END IF;
|
||
|
||
-- Een (eventuele) header-regel willen we niet importeren
|
||
-- ORDERNR lijkt een goede maatstaf, want die bevat de verwijzing
|
||
-- naar onze BROC en moet aan conventies voldoen
|
||
IF UPPER (v_ordernr) = 'ORDERNR'
|
||
THEN
|
||
-- de header, dus negeren
|
||
NULL;
|
||
ELSE
|
||
INSERT INTO fac_imp_factuur ( fac_import_key,
|
||
fac_imp_file_index,
|
||
leveranciernr,
|
||
ordernr,
|
||
factuurnr,
|
||
factuurdatum,
|
||
aantal,
|
||
kostprijs,
|
||
btw,
|
||
debiteurnr,
|
||
locatie,
|
||
afleverdatum,
|
||
btw_bedrag,
|
||
docid,
|
||
omschrijving,
|
||
opmerking,
|
||
btw_verlegd,
|
||
kenmerk1,
|
||
kenmerk2,
|
||
kenmerk3,
|
||
kenmerk4,
|
||
kenmerk5,
|
||
kenmerk6,
|
||
kenmerk7,
|
||
kenmerk8,
|
||
kenmerk9,
|
||
kenmerk10,
|
||
kenmerk11,
|
||
kenmerk12,
|
||
kenmerk13,
|
||
kenmerk14,
|
||
kenmerk15,
|
||
kenmerk16,
|
||
kenmerk17,
|
||
kenmerk18,
|
||
kenmerk19,
|
||
kenmerk20,
|
||
boekmaand,
|
||
artikelcode,
|
||
factuurregelaantal,
|
||
eenheid,
|
||
opdrachtregelid)
|
||
VALUES ( v_rec.fac_import_key,
|
||
v_count,
|
||
UPPER (SUBSTR (v_leveranciernr, 1, 20)),
|
||
SUBSTR (REPLACE(v_ordernr,' ',''), 1, 31),
|
||
SUBSTR (v_factuurnr, 1, 30),
|
||
SUBSTR (v_factuurdatum, 1, 10),
|
||
SUBSTR (v_aantal, 1, 10),
|
||
v_kostprijs,
|
||
SUBSTR (v_btw, 1, 2),
|
||
SUBSTR (v_debiteurnr, 1, 30),
|
||
SUBSTR (v_locatie, 1, 30),
|
||
SUBSTR (v_afleverdatum, 1, 10),
|
||
v_btw_bedrag,
|
||
SUBSTR (v_docid, 1, 255),
|
||
SUBSTR (v_omschrijving, 1, 250),
|
||
SUBSTR (v_opmerking, 1, 250),
|
||
SUBSTR (v_btw_verlegd, 1, 3),
|
||
SUBSTR (v_kenmerk1, 1, 4000),
|
||
SUBSTR (v_kenmerk2, 1, 4000),
|
||
SUBSTR (v_kenmerk3, 1, 4000),
|
||
SUBSTR (v_kenmerk4, 1, 4000),
|
||
SUBSTR (v_kenmerk5, 1, 4000),
|
||
SUBSTR (v_kenmerk6, 1, 4000),
|
||
SUBSTR (v_kenmerk7, 1, 4000),
|
||
SUBSTR (v_kenmerk8, 1, 4000),
|
||
SUBSTR (v_kenmerk9, 1, 4000),
|
||
SUBSTR (v_kenmerk10, 1, 4000),
|
||
SUBSTR (v_kenmerk11, 1, 4000),
|
||
SUBSTR (v_kenmerk12, 1, 4000),
|
||
SUBSTR (v_kenmerk13, 1, 4000),
|
||
SUBSTR (v_kenmerk14, 1, 4000),
|
||
SUBSTR (v_kenmerk15, 1, 4000),
|
||
SUBSTR (v_kenmerk16, 1, 4000),
|
||
SUBSTR (v_kenmerk17, 1, 4000),
|
||
SUBSTR (v_kenmerk18, 1, 4000),
|
||
SUBSTR (v_kenmerk19, 1, 4000),
|
||
SUBSTR (v_kenmerk20, 1, 4000),
|
||
SUBSTR (v_boekmaand, 1, 7),
|
||
SUBSTR (v_artikelcode, 1, 30),
|
||
v_factuurregelaantal,
|
||
SUBSTR (v_eenheid, 1, 30),
|
||
v_opdrachtregelid
|
||
);
|
||
v_count := v_count + 1;
|
||
END IF;
|
||
COMMIT;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
DELETE fac_imp_file WHERE fac_import_key = p_import_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := ' ORACLE (error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_factuur (p_import_key IN NUMBER)
|
||
AS
|
||
-- In cursor cfactuur is alles mooi getrimmed. NB: de sortering is cruciaal!
|
||
CURSOR cfactuurregel
|
||
IS
|
||
SELECT leveranciernr,
|
||
ordernr,
|
||
factuurnr,
|
||
factuurdatum,
|
||
fac.safe_to_number (aantal) aantal,
|
||
fac.safe_to_number (kostprijs) kostprijs,
|
||
fac.safe_to_number (btw) btw,
|
||
fac.safe_to_number (btw_bedrag) btw_bedrag,
|
||
debiteurnr,
|
||
locatie,
|
||
afleverdatum,
|
||
docid,
|
||
omschrijving,
|
||
opmerking,
|
||
btw_verlegd,
|
||
boekmaand,
|
||
artikelcode,
|
||
factuurregelaantal,
|
||
eenheid,
|
||
opdrachtregelid,
|
||
fac_import_key,
|
||
fac_imp_file_index
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY factuurnr, ordernr DESC, fac_imp_file_index;
|
||
|
||
c_i NUMBER;
|
||
c_factuur_record_is_added BOOLEAN;
|
||
c_succeeded BOOLEAN;
|
||
c_factuur_key NUMBER;
|
||
c_factuurregel NUMBER;
|
||
c_fac_type VARCHAR2 (1);
|
||
c_prefix VARCHAR2 (3);
|
||
c_ordernr_index NUMBER;
|
||
c_ordernr_s1 VARCHAR2 (20);
|
||
c_ordernr_s2 VARCHAR2 (20);
|
||
c_ordernr_t VARCHAR2 (40);
|
||
c_old_ordernr fac_imp_factuur.ordernr%TYPE;
|
||
c_factuur_nr fac_imp_factuur.factuurnr%TYPE;
|
||
c_old_factuurnr fac_imp_factuur.factuurnr%TYPE;
|
||
c_fin_factuur_datum fin_factuur.fin_factuur_datum%TYPE;
|
||
c_write_ordernr VARCHAR2 (20);
|
||
c_bestelopdr_id VARCHAR2 (20);
|
||
c_totaal NUMBER;
|
||
c_fact_totaal NUMBER;
|
||
c_factuur_totaal NUMBER;
|
||
c_factuur_btw NUMBER;
|
||
c_factuur_statuses_key fin_factuur.fin_factuur_statuses_key%TYPE;
|
||
c_kostprijs fin_factuurregel.fin_factuurregel_totaal%TYPE;
|
||
c_btwtabel_key fin_btwtabel.fin_btwtabel_key%TYPE;
|
||
c_boekmaand fin_factuur.fin_factuur_boekmaand%TYPE;
|
||
c_artikelcode fin_factuurregel.fin_factuurregel_code%TYPE;
|
||
c_factuurregelaantal fin_factuurregel.fin_factuurregel_aantal%TYPE;
|
||
c_eenheid fin_factuurregel.fin_factuurregel_eenheid%TYPE;
|
||
c_opdrachtregelid fin_factuurregel.fin_factuurregel_id%TYPE;
|
||
c_find BOOLEAN;
|
||
c_find_ordernr BOOLEAN;
|
||
c_mld_opdr_key NUMBER (10);
|
||
c_cnt_contract_key NUMBER (10);
|
||
c_bes_bestelopdr_key NUMBER (10);
|
||
c_prs_perslid_key_user NUMBER(10);
|
||
c_prs_kostensoort_key NUMBER(10);
|
||
c_btw_verlegd NUMBER(1);
|
||
c_fin_factuurregel_key NUMBER(10);
|
||
|
||
c_prs_bedrijf_naam VARCHAR2 (100);
|
||
c_opmerking VARCHAR2 (1000); -- maar wordt uiteindelijk getruct naar fin_factuur_opmerking%type (250)
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_mes VARCHAR2 (150);
|
||
|
||
|
||
|
||
-- Het datumformaat mag een van de volgende zijn:
|
||
-- 1) dd-mm-yyyy of dd/mm/yyyy
|
||
-- 2) yyyy-mm-dd of yyyy/mm/dd
|
||
-- 3) ddmmyyyy of (dd-mm-yy of dd/mm/yy)
|
||
-- 4) ddmmyy
|
||
-- Indien geen van bovenstaand datumformaat of ongeldig datumformaat,
|
||
-- dan indien p_wheninvalid_sysdate = TRUE, dan wordt de huidige systeemdatum opgeleverd,
|
||
-- en anders de lege waarde (NULL-value).
|
||
FUNCTION try_getdatum (p_c_datum IN VARCHAR2, p_wheninvalid_sysdate IN BOOLEAN)
|
||
RETURN DATE
|
||
AS
|
||
c_dd VARCHAR2 (2);
|
||
c_mm VARCHAR2 (2);
|
||
c_yyyy VARCHAR2 (4);
|
||
c_yy VARCHAR2 (2);
|
||
v_c_datum VARCHAR2 (10);
|
||
p_d_datum DATE;
|
||
BEGIN
|
||
-- plaats een voorloopnul als deze door Excel verwijderd is.
|
||
IF length(p_c_datum) = 7 THEN
|
||
v_c_datum := '0' || p_c_datum;
|
||
ELSE
|
||
v_c_datum := p_c_datum;
|
||
END IF;
|
||
p_d_datum := NULL;
|
||
IF LENGTH(v_c_datum) = 10
|
||
THEN
|
||
IF ((SUBSTR(v_c_datum,3,1) = '-' AND SUBSTR(v_c_datum,6,1) = '-') OR
|
||
(SUBSTR(v_c_datum,3,1) = '/' AND SUBSTR(v_c_datum,6,1) = '/'))
|
||
THEN
|
||
-- Formaat 1) dd-mm-yyyy of dd/mm/yyyy
|
||
c_dd := SUBSTR(v_c_datum, 1,2);
|
||
c_mm := SUBSTR(v_c_datum, 4,2);
|
||
c_yyyy := SUBSTR(v_c_datum, 7,4);
|
||
ELSIF ((SUBSTR(v_c_datum,5,1) = '-' AND SUBSTR(v_c_datum,8,1) = '-') OR
|
||
(SUBSTR(v_c_datum,5,1) = '/' AND SUBSTR(v_c_datum,8,1) = '/'))
|
||
THEN
|
||
-- Formaat 2) yyyy-mm-dd of yyyy/mm/dd
|
||
c_dd := SUBSTR(v_c_datum, 9,2);
|
||
c_mm := SUBSTR(v_c_datum, 6,2);
|
||
c_yyyy := SUBSTR(v_c_datum, 1,4);
|
||
END IF;
|
||
ELSIF LENGTH(v_c_datum) = 8
|
||
THEN
|
||
-- Formaat 3) ddmmyyyy of dd-mm-yy of dd/mm/yy
|
||
IF ((SUBSTR(v_c_datum,3,1) = '-' AND SUBSTR(v_c_datum,6,1) = '-') OR
|
||
(SUBSTR(v_c_datum,3,1) = '/' AND SUBSTR(v_c_datum,6,1) = '/'))
|
||
THEN
|
||
-- dd-mm-yy of dd/mm/yy
|
||
c_dd := SUBSTR(v_c_datum, 1,2);
|
||
c_mm := SUBSTR(v_c_datum, 4,2);
|
||
c_yyyy := SUBSTR(v_c_datum, 7,2);
|
||
ELSE
|
||
-- Formaat 3) ddmmyyyy
|
||
c_dd := SUBSTR(v_c_datum, 1,2);
|
||
c_mm := SUBSTR(v_c_datum, 3,2);
|
||
c_yyyy := SUBSTR(v_c_datum, 5,4);
|
||
END IF;
|
||
ELSIF LENGTH(v_c_datum) = 6
|
||
THEN
|
||
-- Formaat 4) ddmmyy
|
||
c_dd := SUBSTR(v_c_datum, 1,2);
|
||
c_mm := SUBSTR(v_c_datum, 3,2);
|
||
c_yyyy := SUBSTR(v_c_datum, 5,2);
|
||
END IF;
|
||
|
||
BEGIN
|
||
IF LENGTH(c_yyyy)=2
|
||
THEN
|
||
SELECT SUBSTR(TO_CHAR(SYSDATE,'YYYY'),1,2)
|
||
INTO c_yy
|
||
FROM DUAL;
|
||
c_yyyy := c_yy || c_yyyy;
|
||
END IF;
|
||
|
||
SELECT TO_DATE (c_yyyy || '-' || c_mm || '-' || c_dd || ' 00:00', 'YYYY-MM-DD HH24:MI')
|
||
INTO p_d_datum
|
||
FROM DUAL;
|
||
|
||
-- controleer of we toch een geldige datum hebben. Oracle vind 12-12-0006 ook geldig.
|
||
IF p_d_datum NOT BETWEEN TO_DATE('20000101', 'yyyymmdd') AND TO_DATE('20991231', 'yyyymmdd')
|
||
THEN
|
||
IF p_wheninvalid_sysdate
|
||
THEN
|
||
BEGIN
|
||
SELECT TRUNC(SYSDATE)
|
||
INTO p_d_datum
|
||
FROM DUAL;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_d_datum := NULL;
|
||
END;
|
||
ELSE
|
||
p_d_datum := NULL;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
IF p_wheninvalid_sysdate
|
||
THEN
|
||
BEGIN
|
||
SELECT TRUNC(SYSDATE)
|
||
INTO p_d_datum
|
||
FROM DUAL;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_d_datum := NULL;
|
||
END;
|
||
ELSE
|
||
p_d_datum := NULL;
|
||
END IF;
|
||
END;
|
||
RETURN(p_d_datum);
|
||
END;
|
||
|
||
FUNCTION try_getcontract_id (p_broc_nr IN VARCHAR2, p_leverancier_nr IN VARCHAR2, p_factuur_datum IN DATE)
|
||
RETURN NUMBER
|
||
AS
|
||
c_prefix1 VARCHAR2 (1);
|
||
c_contract_nr VARCHAR2 (20);
|
||
p_broc_key NUMBER(10);
|
||
BEGIN
|
||
p_broc_key := NULL;
|
||
c_prefix1 := SUBSTR (p_broc_nr, 1, 1);
|
||
IF (ASCII (c_prefix1) = 67 OR ASCII (c_prefix1) = 99)
|
||
THEN
|
||
BEGIN
|
||
-- Haal prefix 'C' of 'c' eraf
|
||
c_contract_nr := SUBSTR (p_broc_nr, 2);
|
||
IF INSTR(p_broc_nr, '.') = 0
|
||
THEN
|
||
BEGIN
|
||
-- Het laatste contract met de hoogste versie nummer opvragen.
|
||
-- Er kunnen meerdere contracten zijn met dezelfde contract_key, maar met verschillende versies.
|
||
-- Het contract met de hoogste versie is de laatste.
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern = c_contract_nr;
|
||
EXCEPTION
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
BEGIN
|
||
-- Meerdere versies gevonden; ga specifieker zoeken
|
||
-- Bij overlappende contracten; pak het oudste contract
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM (SELECT cnt_contract_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern = c_contract_nr
|
||
AND p_factuur_datum BETWEEN cnt_contract_looptijd_van AND cnt_contract_looptijd_tot
|
||
ORDER BY cnt_contract_looptijd_van ASC)
|
||
WHERE ROWNUM = 1;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
BEGIN
|
||
-- Geen contract gevonden waarbinnen deze factuurdatum valt
|
||
-- Zoek het contract wat het recentst (mbt de factuurdatum) is afgelopen
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM (SELECT cnt_contract_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern = c_contract_nr
|
||
AND cnt_contract_looptijd_tot <= p_factuur_datum
|
||
ORDER BY cnt_contract_looptijd_tot DESC)
|
||
WHERE ROWNUM = 1;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Geen contract gevonden met een einddatum die ligt voor de factuurdatum
|
||
-- Dan ligt de factuurdatum dus voor de startdatum van de eerste contract-versie; pak het eerste contract
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM (SELECT cnt_contract_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern = c_contract_nr
|
||
ORDER BY cnt_contract_looptijd_van)
|
||
WHERE ROWNUM = 1;
|
||
END;
|
||
END;
|
||
END;
|
||
ELSE
|
||
-- Exact dit contract en versie.
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0
|
||
AND cnt_contract_nummer_intern || '.' || COALESCE(cnt_contract_versie, '0') = c_contract_nr;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_broc_key := NULL;
|
||
END;
|
||
END IF;
|
||
RETURN p_broc_key;
|
||
END;
|
||
|
||
FUNCTION try_getopdracht_id (p_broc_nr IN VARCHAR2, p_leverancier_nr IN VARCHAR2)
|
||
RETURN NUMBER
|
||
AS
|
||
c_prefix1 VARCHAR2 (1);
|
||
-- Ter bepaling van de positie van de slash in bron-nr
|
||
c_index NUMBER;
|
||
c_slash_index NUMBER;
|
||
-- Opdrachtnr voor de slash
|
||
-- 200 is overkill voor een geldige referentie maar voorkomt een ORA -06502 op te lange ongeldige referenties
|
||
c_broc_s1 VARCHAR2 (200);
|
||
-- Opdrachtnr na de slash
|
||
c_broc_s2 VARCHAR2 (200);
|
||
p_broc_key NUMBER(10);
|
||
BEGIN
|
||
p_broc_key := NULL;
|
||
c_index := 1;
|
||
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
|
||
|
||
IF ( ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
|
||
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
|
||
AND ASCII (c_prefix1) != 67
|
||
AND ASCII (c_prefix1) != 99)
|
||
THEN
|
||
-- Eerste karakter is een letter
|
||
-- Heeft opdrachtnr nog meer aan prefix?
|
||
c_index := 2;
|
||
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
|
||
|
||
IF ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
|
||
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
|
||
THEN
|
||
-- Eerste 2 karakter zijn letters
|
||
-- Heeft opdrachtnr nog meer aan prefix?
|
||
c_index := 3;
|
||
c_prefix1 := SUBSTR (p_broc_nr, c_index, 1);
|
||
IF ( (ASCII (c_prefix1) >= 65 AND ASCII (c_prefix1) <= 90)
|
||
OR (ASCII (c_prefix1) >= 97 AND ASCII(c_prefix1) <= 122))
|
||
THEN
|
||
-- Opdracht heeft prefix van 3 letters.
|
||
c_index := 4;
|
||
END IF;
|
||
END IF;
|
||
|
||
c_slash_index := INSTR (p_broc_nr, '/');
|
||
IF c_slash_index = 0
|
||
THEN
|
||
c_broc_s1 := SUBSTR (p_broc_nr, c_index);
|
||
c_broc_s2 := '';
|
||
ELSE
|
||
c_broc_s1 := SUBSTR (p_broc_nr, c_index, c_slash_index - c_index);
|
||
c_broc_s2 := SUBSTR (p_broc_nr, c_slash_index + 1);
|
||
END IF;
|
||
BEGIN
|
||
SELECT o.mld_opdr_key
|
||
INTO p_broc_key
|
||
FROM mld_opdr o, mld_typeopdr mto
|
||
WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key
|
||
AND mto.mld_typeopdr_kosten = 1
|
||
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 10)
|
||
AND o.mld_melding_key = fac.safe_to_number (c_broc_s1)
|
||
AND o.mld_opdr_bedrijfopdr_volgnr = fac.safe_to_number (c_broc_s2);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_broc_key := NULL;
|
||
END;
|
||
END IF;
|
||
RETURN p_broc_key;
|
||
END;
|
||
|
||
-- Function to extract a valid reference from a string by removing any leading or trailing text.
|
||
-- A valid reference consists of:
|
||
-- - An optional prefix of up to 3 letters,
|
||
-- - Followed by 1 to 10 digits,
|
||
-- - Optionally followed by a slash and a sequence number (e.g., ST0123456/2).
|
||
-- Note: NOT used for contract id's. They are freeform.
|
||
-- Examples:
|
||
-- 'M12345 Somecomments' -> 'M12345'
|
||
-- 'Sometext M12345' -> 'M12345'
|
||
-- 'SometextM12345' -> 'xtM12345' (!)
|
||
-- 'ST0123456/2 extra' -> 'ST0123456/2'
|
||
FUNCTION sanitizereferentiestring (p_broc_nr IN VARCHAR2)
|
||
RETURN VARCHAR2
|
||
AS
|
||
cleaner_broc_nr fac_imp_factuur.ordernr%TYPE;
|
||
BEGIN
|
||
-- Extract pattern: up to 3 letters, 1-10 digits, optional /digits
|
||
cleaner_broc_nr := REGEXP_SUBSTR (p_broc_nr, fac.getsetting('fin_factuur_import_sanitize_id'), 1); -- default'([A-Za-z]{0,3}\d{1,10}(\/\d+)?)'
|
||
IF cleaner_broc_nr IS NULL
|
||
THEN
|
||
cleaner_broc_nr := p_broc_nr;
|
||
END IF;
|
||
RETURN cleaner_broc_nr;
|
||
END;
|
||
|
||
FUNCTION try_getbestelling_id (p_broc_nr IN VARCHAR2, p_leverancier_nr IN VARCHAR2)
|
||
RETURN NUMBER
|
||
AS
|
||
p_broc_key NUMBER(10);
|
||
BEGIN
|
||
p_broc_key := NULL;
|
||
BEGIN
|
||
SELECT bes_bestelopdr_key
|
||
INTO p_broc_key
|
||
FROM bes_bestelopdr
|
||
WHERE bes_bestelopdr_id = p_broc_nr;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_broc_key := NULL;
|
||
END;
|
||
RETURN p_broc_key;
|
||
END;
|
||
|
||
|
||
-- Getfactype's levert van een gegevens opdrachtnummer p_broc_nr de key op van:
|
||
-- de bestelopdracht (p_bkey), meldingopdracht (p_okey) of contract (p_ckey).
|
||
-- Deze werking is gebaseerd op volgende randvoorwaarden cq. eisen cq. instellingen:
|
||
-- 1) Contractnummer wordt geprefixed door 'c' (of 'C').
|
||
-- 2) Meldingen worden geprefixed door minimaal 1 letter (let op: dus GEEN!!! cijfer(s)).
|
||
-- 3) De prefix van melding (vakgroeptype) mag geen c (of C) zijn
|
||
-- 4) Bestellingen worden niet geprefixed (we kunnen hier de setting bes_bestelopdr_prefix in default.inc niet uitlezen,
|
||
-- of we moeten die instelling ombuigen tot een DB-setting (fac_setting?)
|
||
-- 5) De prefix-instelling mag tussentijds (nadat een opdracht uitgegeven) niet worden gewijzigd.
|
||
PROCEDURE get_fin_factuur_referentie (p_broc_nr IN VARCHAR2, p_leverancier_nr IN VARCHAR2, p_factuur_datum IN DATE, p_ckey IN OUT NUMBER, p_okey IN OUT NUMBER, p_bkey IN OUT NUMBER)
|
||
IS
|
||
sanitized_broc_nr fac_imp_factuur.ordernr%TYPE;
|
||
BEGIN
|
||
p_ckey:=NULL;
|
||
p_okey:=NULL;
|
||
p_bkey:=NULL;
|
||
IF LENGTH (p_broc_nr) > 0
|
||
THEN
|
||
p_ckey := try_getcontract_id (p_broc_nr, p_leverancier_nr, p_factuur_datum); -- Unsanitized p_broc_nr!
|
||
IF p_ckey IS NULL
|
||
THEN
|
||
sanitized_broc_nr := sanitizereferentiestring (p_broc_nr);
|
||
IF LENGTH (sanitized_broc_nr) > 0
|
||
THEN
|
||
p_okey := try_getopdracht_id (sanitized_broc_nr, p_leverancier_nr);
|
||
IF p_okey IS NULL
|
||
THEN
|
||
p_bkey := try_getbestelling_id (sanitized_broc_nr, p_leverancier_nr);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
FUNCTION try_getkostensoort (p_ckey IN NUMBER, p_okey IN NUMBER, p_bkey IN NUMBER)
|
||
RETURN NUMBER
|
||
IS
|
||
-- Kostensoort bij de bestelling
|
||
-- bestelopdracht->bestelopdritems->bestelitem->srtdeel->srtgroep[->discipline]
|
||
CURSOR c_bes_kostensoort IS
|
||
SELECT DISTINCT COALESCE(isg.prs_kostensoort_key, itd.prs_kostensoort_key) prs_kostensoort_key, count(*) aant_art
|
||
FROM bes_bestelling_item bi,
|
||
bes_srtdeel isd, bes_srtgroep isg, ins_tab_discipline itd, bes_bestelopdr_item boi, bes_bestelopdr bo
|
||
WHERE bi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = itd.ins_discipline_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bo.bes_bestelopdr_key = p_bkey
|
||
GROUP BY COALESCE(isg.prs_kostensoort_key, itd.prs_kostensoort_key)
|
||
ORDER BY aant_art DESC;
|
||
CURSOR c_mld_kostensoort IS
|
||
SELECT COALESCE(std.prs_kostensoort_key, id.prs_kostensoort_key) prs_kostensoort_key
|
||
FROM mld_opdr o, ins_tab_discipline id, mld_stdmelding std, mld_melding m
|
||
WHERE id.ins_discipline_key = std.mld_ins_discipline_key
|
||
AND std.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND m.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_opdr_key = p_okey;
|
||
CURSOR c_cnt_kostensoort IS
|
||
SELECT COALESCE (c.prs_kostensoort_key,id.prs_kostensoort_key) prs_kostensoort_key
|
||
FROM cnt_contract c, ins_tab_discipline id
|
||
WHERE id.ins_discipline_key = c.ins_discipline_key
|
||
AND c.cnt_contract_key = p_ckey;
|
||
p_prs_kostensoort_key NUMBER(10);
|
||
BEGIN
|
||
p_prs_kostensoort_key:=NULL;
|
||
BEGIN
|
||
-- De strategie is om bij de categorie de meeste waarschijnlijke default ks te vinden
|
||
-- kennelijk
|
||
IF p_bkey IS NOT NULL
|
||
THEN
|
||
-- Kostensoort is te zoeken bij de bestelopdracht
|
||
FOR rc IN c_bes_kostensoort
|
||
LOOP
|
||
p_prs_kostensoort_key := rc.prs_kostensoort_key;
|
||
EXIT WHEN p_prs_kostensoort_key IS NOT NULL;
|
||
END LOOP;
|
||
ELSIF p_okey IS NOT NULL
|
||
THEN
|
||
-- Kostensoort is te zoeken bij de meldingopdracht
|
||
FOR rc IN c_mld_kostensoort
|
||
LOOP
|
||
p_prs_kostensoort_key := rc.prs_kostensoort_key;
|
||
EXIT WHEN p_prs_kostensoort_key IS NOT NULL;
|
||
END LOOP;
|
||
ELSIF p_ckey IS NOT NULL
|
||
THEN
|
||
-- Kostensoort is te zoeken bij contract
|
||
FOR rc IN c_cnt_kostensoort
|
||
LOOP
|
||
p_prs_kostensoort_key := rc.prs_kostensoort_key;
|
||
EXIT WHEN p_prs_kostensoort_key IS NOT NULL;
|
||
END LOOP;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
p_prs_kostensoort_key := NULL;
|
||
END;
|
||
RETURN(p_prs_kostensoort_key);
|
||
END;
|
||
|
||
FUNCTION try_getrefdatum (p_fin_defaultboekmaand_opdr IN NUMBER, p_fin_defaultboekmaand_cnt IN NUMBER, p_ckey IN NUMBER, p_okey IN NUMBER, p_bkey IN NUMBER, p_fin_factuur_datum IN DATE)
|
||
RETURN DATE
|
||
IS
|
||
refdatum DATE;
|
||
BEGIN
|
||
refdatum := NULL;
|
||
BEGIN
|
||
IF p_bkey IS NOT NULL AND p_fin_defaultboekmaand_opdr IN (2, 3)
|
||
THEN
|
||
SELECT CASE
|
||
WHEN p_fin_defaultboekmaand_opdr = 2
|
||
THEN
|
||
bes_bestelopdr_datum
|
||
ELSE
|
||
bes_bestelopdr_leverdatum
|
||
END
|
||
INTO refdatum
|
||
FROM bes_bestelopdr bo
|
||
WHERE bo.bes_bestelopdr_key = p_bkey;
|
||
ELSIF p_okey IS NOT NULL AND p_fin_defaultboekmaand_opdr IN (2, 3)
|
||
THEN
|
||
SELECT CASE
|
||
WHEN p_fin_defaultboekmaand_opdr = 2
|
||
THEN
|
||
mld_opdr_datumbegin
|
||
ELSE
|
||
mld_opdr_einddatum
|
||
END
|
||
INTO refdatum
|
||
FROM mld_opdr o
|
||
WHERE o.mld_opdr_key = p_okey;
|
||
ELSIF p_ckey IS NOT NULL AND p_fin_defaultboekmaand_cnt = 2
|
||
THEN
|
||
refdatum := p_fin_factuur_datum;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
refdatum := NULL;
|
||
END;
|
||
RETURN(refdatum);
|
||
END;
|
||
|
||
-- Bepaalt of het BTW-tarief standaard (0), verlegd(1) of vrijgesteld(2) is, of ongeldig
|
||
FUNCTION try_getbtw_verlegd (p_btw_verlegd IN VARCHAR2)
|
||
RETURN NUMBER
|
||
IS
|
||
BEGIN
|
||
IF UPPER(p_btw_verlegd) = 'JA' OR p_btw_verlegd = '1'
|
||
THEN
|
||
RETURN (1);
|
||
ELSIF p_btw_verlegd IS NULL OR UPPER(p_btw_verlegd) = 'NEE' OR p_btw_verlegd = '0'
|
||
THEN
|
||
RETURN (0);
|
||
ELSIF UPPER(p_btw_verlegd) = 'VRI' OR p_btw_verlegd = '2' -- VRIJ, maar de kolom is maar 3 breed
|
||
THEN
|
||
RETURN (2);
|
||
ELSE
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-type is onbekend ('|| p_btw_verlegd ||')';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
RETURN (0);
|
||
END IF;
|
||
END;
|
||
|
||
-- Bepaalt het BTW-tarief (=btwtabelwaarde_key), gegeven (XOR) of het btw-tarief 'p_btw',
|
||
-- of aan de hand de kosten 'pkosten' + het btwbedrag 'p_btwbedrag'
|
||
-- Daarbij wordt de volgende hanteerwijze toegepast:
|
||
-- 1) Als btw-tarief bekend is, is deze leidend. Ook al is btw-bedrag bekend, dan nog is tarief leidend.
|
||
-- Mocht het BTW-tarief niet in de btwtabelwaarde voorkomen, maar wel het BTW-tarief dat wordt afgeleid uit het BTW-bedrag,
|
||
-- dan en alleen in dat geval wordt het btw-bedrag leidend.
|
||
-- Mocht in het uiterste geval ook dan het btw-tarief niet in de tabel voorkomen, dan wordt de lege waarde (NULL) opgeleverd.
|
||
-- 2) Als btw-tarief NIET bekend is, maar btw-bedrag en kosten wel, dan wordt het btw-tarief omgekeerd berekend.
|
||
-- Mocht het btw-tarief niet in de btw-tabel voorkomen, dan wordt de lege waarde (NULL) opgeleverd.
|
||
|
||
FUNCTION try_getbtwtabelwaarde_key (p_btw IN NUMBER, p_kosten IN NUMBER, p_btwbedrag IN NUMBER, p_btwtabel_key IN NUMBER, p_btw_verlegd IN NUMBER)
|
||
RETURN NUMBER
|
||
IS
|
||
p_btwtabelwaarde_key NUMBER(10);
|
||
BEGIN
|
||
p_btwtabelwaarde_key := NULL;
|
||
IF p_btw IS NOT NULL
|
||
THEN
|
||
-- Regel 1): btw-tarief is bekend, dus deze zou leidend moeten zijn (tenzij een niet bestaande)...
|
||
p_btwtabelwaarde_key := fin.getbtwtabelwaardekey_perc(p_btw, p_btwtabel_key, p_btw_verlegd);
|
||
END IF;
|
||
|
||
IF p_btwtabelwaarde_key IS NULL
|
||
THEN
|
||
-- Hier geldt dat: of p_btw is niet meegegeven, of dat
|
||
-- p_btw wel is meegegeven maar dat het BTW-tarief kan niet in de BTW-tabel worden gevonden !!!
|
||
-- Dit laatste zou eigenlijk niet mogen voorkomen, maar tja, dan proberen we het via de kosten en BTW-bedrag.
|
||
IF (p_kosten IS NOT NULL AND p_btwbedrag IS NOT NULL)
|
||
THEN
|
||
-- Regel 2): btw-tarief is NIET bekend of ONGELDIG, dan a.d.h.v. btw-bedrag en kosten...
|
||
p_btwtabelwaarde_key := fin.getbtwtabelwaardekey(p_kosten, p_btwbedrag, p_btwtabel_key, p_btw_verlegd);
|
||
END IF;
|
||
END IF;
|
||
RETURN(p_btwtabelwaarde_key);
|
||
END;
|
||
|
||
-- Retourneert het fin_kenmerk_key van kenmerktype "X" (bestand) als volgt:
|
||
-- 1) Eerst kijken of in fac_setting het kenmerk is geconfigureerd (obv tag 'fin_import_fin_kenmerk_bestand')
|
||
-- 2) Dan via poging 2: via fin_kenmerk met type = "X" (en indien meerdere, het laagste volgnummer)
|
||
FUNCTION try_getbestand_fin_kenmerk_key
|
||
RETURN NUMBER
|
||
IS
|
||
CURSOR curs_fin_kenmerk IS
|
||
SELECT fin_kenmerk_key
|
||
FROM fin_kenmerk k
|
||
WHERE k.fin_kenmerk_kenmerktype = 'X'
|
||
AND fin_kenmerk_verwijder IS NULL
|
||
ORDER BY fin_kenmerk_volgnr;
|
||
|
||
lkey NUMBER(10);
|
||
BEGIN
|
||
BEGIN
|
||
-- Eerst poging 1, via fac_setting
|
||
--SELECT fac.getSetting('fin_import_fin_kenmerk_bestand')
|
||
--INTO lkey
|
||
--FROM DUAL;
|
||
--IF lkey IS NULL
|
||
--THEN
|
||
-- Dan via poging 2: via fin_kenmerk met type = "X" (en indien meerdere, het laagste volgnummer)
|
||
FOR rc IN curs_fin_kenmerk
|
||
LOOP
|
||
lkey := rc.fin_kenmerk_key;
|
||
EXIT WHEN lkey IS NOT NULL;
|
||
END LOOP;
|
||
--END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
lkey := NULL;
|
||
END;
|
||
RETURN lkey;
|
||
END;
|
||
|
||
PROCEDURE try_insert_factuur_docid(p_factuur_key IN NUMBER, p_docid IN VARCHAR2)
|
||
IS
|
||
lkey NUMBER(10);
|
||
BEGIN
|
||
IF p_docid IS NOT NULL
|
||
THEN
|
||
-- Document/bestand is gevuld met een waarde, dus we zetten deze in de flexprop 'Factuurbestand'
|
||
-- Dit flexprop wordt gevonden door de functie try_getbestand_fin_kenmerk_key.
|
||
lkey := try_getbestand_fin_kenmerk_key();
|
||
IF lkey IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
-- Ook is het flexprop gevonden, nu volgt de insert in fin_kenmerkfactuur
|
||
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
|
||
VALUES (p_factuur_key, lkey, p_docid);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
lkey := NULL;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
|
||
PROCEDURE try_insert_factuurregel(c_factuur_key IN NUMBER, c_factuurregel IN NUMBER, c_kostprijs IN NUMBER,
|
||
c_btw IN NUMBER, c_btw_bedrag IN NUMBER, c_btwtabel_key IN NUMBER,
|
||
c_fac_import_key IN NUMBER, c_fac_imp_file_index IN NUMBER,
|
||
c_omschrijving IN VARCHAR2, c_locatie IN VARCHAR2, c_btw_verlegd IN NUMBER,
|
||
c_artikelcode IN VARCHAR2, c_factuurregelaantal IN NUMBER, c_eenheid IN VARCHAR2, c_opdrachtregelid IN NUMBER,
|
||
c_factuur_statuses_key IN OUT NUMBER, c_opmerking IN OUT VARCHAR2, c_succeeded IN OUT BOOLEAN)
|
||
IS
|
||
c_btwtabelwaarde_key NUMBER(10);
|
||
l_btwbedrag fin_factuurregel.fin_factuurregel_btw%TYPE;
|
||
l_kostprijs fin_factuurregel.fin_factuurregel_totaal%TYPE;
|
||
BEGIN
|
||
l_kostprijs := c_kostprijs;
|
||
c_succeeded := FALSE;
|
||
IF l_kostprijs IS NULL
|
||
THEN
|
||
-- Kostprijs is niet gevonden, of er zat een ongeldig karakters in (b.v. letter, of euro-teken).
|
||
c_opmerking := c_opmerking || CHR(13) || 'Leeg of fout bedrag (exBTW) bij regel ' || c_factuurregel || ': is op 0 gezet';
|
||
l_kostprijs := 0;
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
END IF;
|
||
|
||
c_btwtabelwaarde_key := try_getbtwtabelwaarde_key(c_btw, l_kostprijs, c_btw_bedrag, c_btwtabel_key, c_btw_verlegd);
|
||
IF c_btwtabelwaarde_key IS NULL
|
||
THEN
|
||
-- BTW-tarief is onbekend of niet gevonden volgens de BTW-tabel, we hanteren het 0-tarief
|
||
c_btwtabelwaarde_key := fin.getbtwtabelwaardekey_perc(0, c_btwtabel_key, c_btw_verlegd);
|
||
IF c_btwtabelwaarde_key IS NULL
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-percentage ' || c_btw || ' % bij regel ' || c_factuurregel || ': ongeldig en kan niet worden toegevoegd';
|
||
ELSE
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-percentage ' || c_btw || ' % bij regel ' || c_factuurregel || ': ongeldig en is op 0 gezet';
|
||
END IF;
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
END IF;
|
||
|
||
IF (l_kostprijs IS NOT NULL AND c_btwtabelwaarde_key IS NOT NULL)
|
||
THEN
|
||
l_btwbedrag := fin.getbtw_bedrag(l_kostprijs, c_btwtabelwaarde_key);
|
||
IF ABS(ROUND(l_btwbedrag,2) - ROUND(c_btw_bedrag,2)) > fac.safe_to_number(fac.getsetting('fin_import_btwmarge'))
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-bedrag bij regel ' || c_factuurregel || ': is op ' || l_btwbedrag || ' gezet';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
ELSIF c_btw_bedrag IS NOT NULL
|
||
THEN
|
||
l_btwbedrag := c_btw_bedrag; -- wel alle decimalen behouden
|
||
END IF;
|
||
|
||
INSERT INTO fin_factuurregel ( fin_factuur_key,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuurregel_referentie,
|
||
fin_btwtabelwaarde_key,
|
||
fin_factuurregel_code,
|
||
fin_factuurregel_aantal,
|
||
fin_factuurregel_eenheid,
|
||
fin_factuurregel_id)
|
||
VALUES (c_factuur_key, c_factuurregel, l_kostprijs, l_btwbedrag, c_omschrijving, c_locatie, c_btwtabelwaarde_key,
|
||
c_artikelcode, c_factuurregelaantal, c_eenheid, c_opdrachtregelid)
|
||
RETURNING fin_factuurregel_key
|
||
INTO c_fin_factuurregel_key;
|
||
|
||
-- Voor CUST-postprocessing (van de kenmerken) is het handig te onthouden:
|
||
UPDATE fac_imp_factuur
|
||
SET fin_factuurregel_key = c_fin_factuurregel_key
|
||
WHERE fac_import_key = c_fac_import_key
|
||
AND fac_imp_file_index = c_fac_imp_file_index;
|
||
|
||
c_succeeded := TRUE;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
c_factuur_statuses_key := 3;
|
||
c_succeeded := FALSE;
|
||
END;
|
||
|
||
|
||
PROCEDURE fin_factuur_finalupdate(c_factuur_key IN NUMBER, c_opmerking IN VARCHAR2, c_factuur_statuses_key IN NUMBER)
|
||
IS
|
||
l_opmerking VARCHAR2(1000);
|
||
l_factuur_totaal_btw fin_factuur.fin_factuur_totaal_btw%TYPE;
|
||
BEGIN
|
||
l_opmerking := c_opmerking;
|
||
-- De nabewerking op het vorige record kan hier plaatsvinden
|
||
IF c_factuur_statuses_key = 3
|
||
THEN
|
||
fac.trackaction ('FINNEW', c_factuur_key, NULL, NULL, lcl.l('lcl_fin_imp_bad'));
|
||
l_opmerking := lcl.l('lcl_fin_imp_errors') || TO_CHAR(SYSDATE,'dd-mm-yyyy') || CHR(13) || '----' || l_opmerking;
|
||
ELSE
|
||
fac.trackaction ('FINNEW', c_factuur_key, NULL, NULL, lcl.l('lcl_fin_imp_good'));
|
||
-- l_opmerking := lcl.l('lcl_fin_imp_success') || TO_CHAR(SYSDATE,'dd-mm-yyyy');
|
||
END IF;
|
||
|
||
-- Btw tarief kan niet gevonden zijn. In dat geval is 0% genomen. Dan klopt het totaal_btw niet meer.
|
||
-- Daarom wordt totaal_btw opnieuw berekend en gevuld.
|
||
SELECT SUM (fin_factuurregel_btw)
|
||
INTO l_factuur_totaal_btw
|
||
FROM fin_factuurregel
|
||
WHERE fin_factuur_key = c_factuur_key;
|
||
|
||
-- Factuur toevoegen met als bron=1 (Excel/bulk)
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = c_factuur_statuses_key,
|
||
fin_factuur_bron = 1,
|
||
fin_factuur_opmerking = SUBSTR(l_opmerking , 1, 250),
|
||
fin_factuur_totaal_btw = COALESCE(l_factuur_totaal_btw,0)
|
||
WHERE fin_factuur_key = c_factuur_key;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN NULL;
|
||
END;
|
||
|
||
|
||
--- *** START VAN DE HOOFDPROCEDURE *** --- --- *** START VAN DE HOOFDPROCEDURE *** --- --- *** START VAN DE HOOFDPROCEDURE *** ---
|
||
BEGIN
|
||
|
||
c_old_ordernr := '';
|
||
c_old_factuurnr := '';
|
||
|
||
|
||
-- Factuur(regels) stuk voor stuk op volgorde van opdracht en factuurnummer afwerken...
|
||
FOR rc IN cfactuurregel
|
||
LOOP
|
||
-- Check: Nieuwe factuur, dwz eerste regel of overgang naar nieuw factuurnummer+opdrachtnr, of nog dezelfde
|
||
IF (rc.ordernr = c_old_ordernr AND (rc.factuurnr = c_old_factuurnr OR (rc.factuurnr IS NULL AND c_old_factuurnr IS NULL)))
|
||
THEN
|
||
-- Hier dus nog dezelfde factuurnr+opdrachtnr
|
||
-- Voeg alleen nieuwe factuurregel toe, indien de factuur kon worden toegevoegd (c_factuur_record_is_added = TRUE)
|
||
IF c_factuur_record_is_added
|
||
THEN
|
||
-- Er is dus een bijbehorende correcte factuur(record) aangemaakt, dus volgende factuurregel kan erbij...
|
||
-- Waarde van c_factuur_key EN c_btwtabel_key zijn nog steeds actueel...
|
||
c_factuurregel := c_factuurregel + 1;
|
||
c_btw_verlegd := try_getbtw_verlegd (rc.btw_verlegd);
|
||
try_insert_factuurregel(c_factuur_key, c_factuurregel, rc.kostprijs,
|
||
rc.btw, rc.btw_bedrag, c_btwtabel_key, rc.fac_import_key, rc.fac_imp_file_index,
|
||
rc.omschrijving, rc.locatie, c_btw_verlegd,
|
||
rc.artikelcode, rc.factuurregelaantal, rc.eenheid, rc.opdrachtregelid,
|
||
c_factuur_statuses_key, c_opmerking, c_succeeded);
|
||
IF c_succeeded
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Factuur ' || c_factuur_key || ' toegevoegd met factuurregel ' || c_factuurregel,
|
||
rc.ordernr || ' / ' || rc.factuurnr
|
||
);
|
||
ELSE
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Factuur(regel) kan niet toegevoegd worden ' || v_errormsg,
|
||
rc.ordernr || '/' || rc.factuurnr
|
||
);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- Nieuwe factuur, dwz eerste regel of overgang naar nieuw factuurnummer/opdrachtnr.
|
||
|
||
-- Let op: van de vorige factuur nog de laatste nabewerking uitvoeren, nl. de status en de opmerking vullen...
|
||
-- Als c_factuur_record_is_added is TRUE, dan is er al minimaal 1 fin_factuur record toegevoegd,
|
||
-- anders (=FALSE) zijn we hier voor de eerste keer
|
||
IF c_factuur_record_is_added
|
||
THEN
|
||
fin_factuur_finalupdate(c_factuur_key, c_opmerking,c_factuur_statuses_key);
|
||
fin.autoapprovefactuur(c_factuur_key);
|
||
END IF;
|
||
|
||
c_factuur_statuses_key := 2;
|
||
c_opmerking := rc.opmerking;
|
||
c_old_ordernr := rc.ordernr;
|
||
c_old_factuurnr := rc.factuurnr;
|
||
c_factuurregel := 1;
|
||
|
||
c_mld_opdr_key := NULL;
|
||
c_cnt_contract_key := NULL;
|
||
c_bes_bestelopdr_key := NULL;
|
||
c_prs_perslid_key_user := NULL;
|
||
c_fin_factuur_datum := NULL;
|
||
c_prs_kostensoort_key := NULL;
|
||
|
||
c_btw_verlegd := try_getbtw_verlegd (rc.btw_verlegd);
|
||
c_fin_factuur_datum := try_getdatum (rc.factuurdatum, FALSE);
|
||
get_fin_factuur_referentie (rc.ordernr, rc.leveranciernr, c_fin_factuur_datum, c_cnt_contract_key, c_mld_opdr_key, c_bes_bestelopdr_key);
|
||
c_prs_kostensoort_key := try_getkostensoort(c_cnt_contract_key, c_mld_opdr_key, c_bes_bestelopdr_key);
|
||
IF (c_prs_kostensoort_key IS NULL AND fac.getSetting('fin_kostensoort_verplicht') = 1)
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'Kostensoort is verplicht maar leeg';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
END IF;
|
||
|
||
IF (rc.factuurnr IS NULL)
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'Onbekend factuurnr: is op ### gezet';
|
||
c_factuur_nr := '###';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
ELSE
|
||
c_factuur_nr := rc.factuurnr;
|
||
END IF;
|
||
|
||
IF (rc.boekmaand IS NOT NULL)
|
||
THEN -- meegegeven, gebruik die
|
||
IF fac.safe_to_date(rc.boekmaand, 'yyyy-mm') IS NULL
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'Ongeldige boekmaand: ' || rc.boekmaand;
|
||
c_boekmaand := '';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
ELSE
|
||
c_boekmaand := rc.boekmaand;
|
||
END IF;
|
||
ELSE
|
||
c_boekmaand := TO_CHAR(SYSDATE, 'YYYY-MM');
|
||
IF ((fac.getSetting('fin_defaultboekmaand') IN (2, 3) AND c_mld_opdr_key IS NOT NULL) OR
|
||
(fac.getSetting('fin_defaultboekmaand_cnt') = 2 AND c_cnt_contract_key IS NOT NULL))
|
||
THEN
|
||
BEGIN
|
||
c_boekmaand := TO_CHAR(try_getrefdatum(fac.getSetting('fin_defaultboekmaand'), fac.getSetting('fin_defaultboekmaand_cnt'), c_cnt_contract_key, c_mld_opdr_key, c_bes_bestelopdr_key, c_fin_factuur_datum), 'YYYY-MM');
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF (c_cnt_contract_key IS NULL AND c_mld_opdr_key IS NULL AND c_bes_bestelopdr_key IS NULL)
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'Referentienr: is niet gevonden ('|| rc.ordernr ||')';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
END IF;
|
||
IF (c_fin_factuur_datum IS NULL)
|
||
THEN
|
||
BEGIN
|
||
SELECT TRUNC(SYSDATE)
|
||
INTO c_fin_factuur_datum
|
||
FROM DUAL;
|
||
c_opmerking := c_opmerking || CHR(13) || 'Factuurdatum: is op vandaag gezet.';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
c_fin_factuur_datum := NULL;
|
||
END;
|
||
END IF;
|
||
|
||
c_factuur_record_is_added := FALSE;
|
||
IF (LENGTH(c_factuur_nr) > 0 AND (c_fin_factuur_datum IS NOT NULL))
|
||
THEN
|
||
BEGIN
|
||
SELECT fin_s_fin_factuur_key.NEXTVAL INTO c_factuur_key FROM DUAL;
|
||
|
||
-- Ordernummer kan ook leeg zijn.
|
||
IF rc.ordernr IS NULL
|
||
THEN
|
||
SELECT COALESCE(SUM (kostprijs),0) totaal, COALESCE(SUM (btw_bedrag),0) totaal_btw
|
||
INTO c_factuur_totaal, c_factuur_btw
|
||
FROM fac_imp_factuur
|
||
WHERE ordernr IS NULL
|
||
AND factuurnr = rc.factuurnr
|
||
AND fac_import_key = p_import_key;
|
||
ELSE
|
||
SELECT COALESCE(SUM (kostprijs),0) totaal, COALESCE(SUM (btw_bedrag),0) totaal_btw
|
||
INTO c_factuur_totaal, c_factuur_btw
|
||
FROM fac_imp_factuur
|
||
WHERE ordernr = rc.ordernr
|
||
AND factuurnr = rc.factuurnr
|
||
AND fac_import_key = p_import_key;
|
||
END IF;
|
||
|
||
INSERT INTO fin_factuur ( fin_factuur_key,
|
||
fin_factuur_totaal,
|
||
fin_factuur_totaal_btw,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
bes_bestelopdr_key,
|
||
prs_perslid_key_user,
|
||
fin_factuur_datum,
|
||
fin_factuur_statuses_key,
|
||
fin_factuur_nr,
|
||
fin_factuur_debiteur_nr,
|
||
prs_kostensoort_key,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_bron
|
||
)
|
||
VALUES ( c_factuur_key,
|
||
c_factuur_totaal,
|
||
c_factuur_btw,
|
||
c_mld_opdr_key,
|
||
c_cnt_contract_key,
|
||
c_bes_bestelopdr_key,
|
||
c_prs_perslid_key_user,
|
||
c_fin_factuur_datum,
|
||
c_factuur_statuses_key,
|
||
c_factuur_nr,
|
||
rc.debiteurnr,
|
||
c_prs_kostensoort_key,
|
||
c_boekmaand,
|
||
1 -- Excel
|
||
);
|
||
c_factuur_record_is_added := TRUE;
|
||
|
||
-- Voor CUST-postprocessing (van de kenmerken) is het handig te onthouden:
|
||
UPDATE fac_imp_factuur
|
||
SET fin_factuur_key = c_factuur_key
|
||
WHERE fac_import_key = rc.fac_import_key
|
||
AND fac_imp_file_index = rc.fac_imp_file_index
|
||
AND fac_import_key = p_import_key;
|
||
|
||
try_insert_factuur_docid(c_factuur_key,rc.docid);
|
||
|
||
c_btwtabel_key := fin.getbtwtabelkey(c_bes_bestelopdr_key,c_cnt_contract_key, c_mld_opdr_key, TRUE);
|
||
try_insert_factuurregel(c_factuur_key, c_factuurregel, rc.kostprijs,
|
||
rc.btw, rc.btw_bedrag, c_btwtabel_key, rc.fac_import_key, rc.fac_imp_file_index,
|
||
rc.omschrijving, rc.locatie, c_btw_verlegd,
|
||
rc.artikelcode, rc.factuurregelaantal, rc.eenheid, rc.opdrachtregelid,
|
||
c_factuur_statuses_key, c_opmerking, c_succeeded);
|
||
IF c_succeeded
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Factuur ' || c_factuur_key || ' toegevoegd met factuurregel ' || c_factuurregel,
|
||
rc.ordernr || ' / ' || rc.factuurnr
|
||
);
|
||
ELSE
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Factuur(regel) kan niet toegevoegd worden ' || v_errormsg,
|
||
rc.ordernr || '/' || rc.factuurnr
|
||
);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
c_factuur_record_is_added := FALSE;
|
||
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Factuur kan niet toegevoegd worden ' || v_errormsg,
|
||
rc.ordernr || '/' || rc.factuurnr
|
||
);
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Factuur kan niet toegevoegd worden (factuurnummer onbekend) ',
|
||
rc.ordernr || '/' || rc.factuurnr || ':' ||
|
||
rc.leveranciernr || ',' ||
|
||
rc.factuurdatum || ',' ||
|
||
rc.kostprijs || ',' ||
|
||
rc.btw || ',' ||
|
||
rc.btw_bedrag || ',' ||
|
||
rc.debiteurnr || ',' ||
|
||
rc.locatie || ',' ||
|
||
rc.afleverdatum || ',' ||
|
||
rc.docid || ',' ||
|
||
rc.omschrijving || ',' ||
|
||
rc.opmerking || ',' ||
|
||
rc.artikelcode || ',' ||
|
||
rc.factuurregelaantal || ',' ||
|
||
rc.eenheid || ',' ||
|
||
rc.opdrachtregelid
|
||
);
|
||
END IF;
|
||
END IF;
|
||
END LOOP;
|
||
-- Let op: van de vorige (=LAATSTE) factuur nog de laatste nabewerking uitvoeren, nl. de status en de opmerking vullen...
|
||
-- Als c_factuur_record_is_added is TRUE, dan is er al minimaal 1 fin_factuur record toegevoegd,
|
||
-- anders (=FALSE) zijn we hier voor de eerste keer
|
||
IF c_factuur_record_is_added
|
||
THEN
|
||
fin_factuur_finalupdate(c_factuur_key, c_opmerking, c_factuur_statuses_key);
|
||
fin.autoapprovefactuur(c_factuur_key);
|
||
END IF;
|
||
|
||
-- Opruimen fac_imp_factuur gebeurt vanzelf na 7 dagen doordat achteraan
|
||
-- imp_shared.js/impProcessStream de tabel fac_import wordt opgeruimd en
|
||
-- fac_imp_factuur meecascadeert
|
||
END;
|
||
/
|
||
|
||
/* menu-import (transport), volgens UWVA#20707 */
|
||
CREATE OR REPLACE PROCEDURE fac_import_menu (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
v_newline VARCHAR2 (1000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key); -- Field seperator
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_buffercount NUMBER := 0;
|
||
c_commitbuffer NUMBER := 2000; -- om de zoveel committen
|
||
-- De importvelden
|
||
v_menu_volgnr VARCHAR2 (255);
|
||
v_menuitems_label VARCHAR2 (255);
|
||
v_menuitems_groep VARCHAR2 (255);
|
||
v_menuitems_url VARCHAR2 (255);
|
||
v_menu_info VARCHAR2 (255);
|
||
v_menu_altlabel VARCHAR2 (255);
|
||
v_menu_alturl VARCHAR2 (1000);
|
||
v_menu_altgroep VARCHAR2 (255);
|
||
v_functie_code VARCHAR2 (255);
|
||
v_discipline_omschr VARCHAR2 (255);
|
||
v_srtdiscipline_omschr VARCHAR2 (255);
|
||
v_menu_image VARCHAR2 (255);
|
||
v_menu_level VARCHAR2 (255);
|
||
v_menu_portal VARCHAR2 (255);
|
||
header_found BOOLEAN := FALSE;
|
||
BEGIN
|
||
|
||
-- Clear my previous imported rows
|
||
DELETE FROM fac_imp_menu;
|
||
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_volgnr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menuitems_label);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menuitems_groep);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menuitems_url);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_info);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_altlabel);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_alturl);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_altgroep);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_functie_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_discipline_omschr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtdiscipline_omschr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_image);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_level);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_menu_portal);
|
||
|
||
-- Skip until the header is found
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
IF UPPER (v_menu_volgnr) = 'MENU_VOLGNR'
|
||
AND UPPER (v_menuitems_label) = 'MENUITEMS_LABEL'
|
||
AND UPPER (v_menuitems_groep) = 'MENUITEMS_GROEP'
|
||
AND UPPER (v_menuitems_url) = 'MENUITEMS_URL'
|
||
AND UPPER (v_menu_info) = 'MENU_INFO'
|
||
AND UPPER (v_menu_altlabel) = 'MENU_ALTLABEL'
|
||
AND UPPER (v_menu_alturl) = 'MENU_ALTURL'
|
||
AND UPPER (v_menu_altgroep) = 'MENU_ALTGROEP'
|
||
AND UPPER (v_functie_code) = 'FUNCTIE_CODE'
|
||
AND UPPER (v_discipline_omschr) = 'DISCIPLINE_OMSCHR'
|
||
AND UPPER (v_srtdiscipline_omschr) = 'SRTDISCIPLINE_OMSCHR'
|
||
AND UPPER (v_menu_image) = 'MENU_IMAGE'
|
||
AND UPPER (v_menu_level) = 'MENU_LEVEL'
|
||
AND UPPER (v_menu_portal) = 'MENU_PORTAL'
|
||
THEN
|
||
header_found := TRUE;
|
||
END IF;
|
||
ELSE
|
||
INSERT INTO fac_imp_menu (
|
||
menu_volgnr,
|
||
menuitems_label,
|
||
menuitems_groep,
|
||
menuitems_url,
|
||
menu_info,
|
||
menu_altlabel,
|
||
menu_alturl,
|
||
menu_altgroep,
|
||
functie_code,
|
||
discipline_omschr,
|
||
srtdiscipline_omschr,
|
||
menu_image,
|
||
menu_level,
|
||
menu_portal
|
||
)
|
||
VALUES (
|
||
SUBSTR (v_menu_volgnr, 1, 255),
|
||
SUBSTR (v_menuitems_label, 1, 255),
|
||
SUBSTR (v_menuitems_groep, 1, 255),
|
||
SUBSTR (v_menuitems_url, 1, 255),
|
||
SUBSTR (v_menu_info, 1, 255),
|
||
SUBSTR (v_menu_altlabel, 1, 255),
|
||
SUBSTR (v_menu_alturl, 1, 1000),
|
||
SUBSTR (v_menu_altgroep, 1, 255),
|
||
SUBSTR (v_functie_code, 1, 255),
|
||
SUBSTR (v_discipline_omschr, 1, 255),
|
||
SUBSTR (v_srtdiscipline_omschr, 1, 255),
|
||
SUBSTR (v_menu_image, 1, 255),
|
||
SUBSTR (v_menu_level, 1, 255),
|
||
SUBSTR (v_menu_portal, 1, 255)
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen regels: ' || TO_CHAR (v_count_import), '');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_menu (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_menu
|
||
IS
|
||
SELECT * FROM fac_imp_menu;
|
||
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (250);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_count NUMBER;
|
||
v_menuitems_key NUMBER;
|
||
v_functie_key NUMBER;
|
||
v_discipline_key NUMBER;
|
||
v_srtdiscipline_key NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
e_transport EXCEPTION;
|
||
BEGIN
|
||
-- Init
|
||
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Facilitor menustructuur import versie ' || currentversion,
|
||
'$Revision$'
|
||
);
|
||
COMMIT;
|
||
|
||
-- Alle standaard-menuopties bestaan --> gaan met die banaan!
|
||
v_errormsg := 'Verwijderen oude menu';
|
||
|
||
--TODO: remove TEST
|
||
DELETE FROM fac_menu;
|
||
|
||
-- Menu-items uit import <20><>n voor <20><>n toevoegen. Als we ergens onderweg een
|
||
-- fout tegenkomen, doen we een rollback.
|
||
FOR rec IN c_menu
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Volgend item';
|
||
|
||
v_errorhint :=
|
||
COALESCE (rec.menu_altgroep, rec.menuitems_groep)
|
||
|| '/'
|
||
|| rec.menu_volgnr
|
||
|| '/'
|
||
|| rec.menuitems_label
|
||
|| '/'
|
||
|| rec.menu_altlabel;
|
||
|
||
v_menuitems_key := NULL;
|
||
v_functie_key := NULL;
|
||
v_discipline_key := NULL;
|
||
v_srtdiscipline_key := NULL;
|
||
|
||
-- Volgnummer is verplicht
|
||
--TODO: Is dat wel zo?
|
||
IF (rec.menu_volgnr IS NULL)
|
||
THEN
|
||
v_errormsg := 'volgnummer is verplicht!';
|
||
--TODO: throw error
|
||
RAISE e_transport;
|
||
END IF;
|
||
|
||
-- Als gerefereerd wordt naar een standaard-menuoptie, dan moet deze bestaan
|
||
IF (rec.menuitems_label IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Onbekende of dubbele standaard-menuoptie';
|
||
|
||
--TODO: check of label bestaat
|
||
SELECT fac_menuitems_key
|
||
INTO v_menuitems_key
|
||
FROM fac_menuitems
|
||
WHERE fac_menuitems_label = rec.menuitems_label
|
||
AND fac_menuitems_groep = fac.safe_to_number (rec.menuitems_groep)
|
||
AND fac_menuitems_url = rec.menuitems_url;
|
||
ELSE
|
||
-- Als geen standaard-menuoptie gebruikt wordt, dan zijn onderstaande gegevens verplicht
|
||
IF (rec.menu_altlabel IS NULL OR rec.menu_altgroep IS NULL)
|
||
THEN
|
||
v_errormsg := 'altlabel + groep zijn verplicht!';
|
||
--TODO: throw error
|
||
RAISE e_transport;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Gebruikte functiecodes moeten bestaan
|
||
IF (rec.functie_code IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Onbekende of dubbele functiecode';
|
||
|
||
--TODO: check of fac_functie_code bestaat
|
||
SELECT fac_functie_key
|
||
INTO v_functie_key
|
||
FROM fac_functie
|
||
WHERE fac_functie_code = rec.functie_code;
|
||
END IF;
|
||
|
||
-- Als alles ok is, voegen we het menu-item toe.
|
||
INSERT INTO fac_menu (
|
||
fac_menu_volgnr,
|
||
fac_menuitems_key,
|
||
fac_menu_info,
|
||
fac_menu_altlabel,
|
||
fac_menu_alturl,
|
||
fac_menu_altgroep,
|
||
fac_functie_key,
|
||
ins_discipline_key,
|
||
ins_srtdiscipline_key,
|
||
fac_menu_image,
|
||
fac_menu_level,
|
||
fac_menu_portal
|
||
)
|
||
VALUES (
|
||
rec.menu_volgnr,
|
||
v_menuitems_key,
|
||
rec.menu_info,
|
||
rec.menu_altlabel,
|
||
rec.menu_alturl,
|
||
rec.menu_altgroep,
|
||
v_functie_key,
|
||
v_discipline_key,
|
||
v_srtdiscipline_key,
|
||
rec.menu_image,
|
||
rec.menu_level,
|
||
rec.menu_portal
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Als we hier uitkomen, is alles goed gegaan en kunnen we committen
|
||
COMMIT;
|
||
-- Als er ergens een fout optreedt, dan worden alle voorgaande mutaties teruggedraaid en wordt er alleen de logging gecommit
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- TODO: Zoiets?
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_usrdata (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- 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 VARCHAR (200);
|
||
-- De importvelden:
|
||
v_fac_usrtab_naam VARCHAR2 (256); -- C16
|
||
v_fac_usrdata_code VARCHAR2 (256); -- C40
|
||
v_fac_usrdata_omschr VARCHAR2 (256); -- C60
|
||
v_fac_usrdata_omschr2 VARCHAR2 (256); -- C60
|
||
v_fac_usrdata_volgnr VARCHAR2 (256); -- N3
|
||
v_fac_usrdata_prijs VARCHAR2 (256); -- N8,2
|
||
v_fac_usrdata_vervaldatum VARCHAR2 (256); -- DATE
|
||
v_fac_usrdata_reftabel VARCHAR2 (256); -- C16
|
||
v_fac_usrdata_refcode VARCHAR2 (256); -- C40
|
||
-- Overig:
|
||
v_fac_usrdata_volgnr_n fac_imp_usrdata.fac_usrdata_volgnr%TYPE; -- N3
|
||
v_fac_usrdata_prijs_n fac_imp_usrdata.fac_usrdata_prijs%TYPE; -- N15,7
|
||
v_fac_usrdata_vervaldatum_d fac_imp_usrdata.fac_usrdata_vervaldatum%TYPE; -- DATE
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fac_imp_usrdata;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout bij opvragen importregel';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrtab_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_omschr);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_omschr2);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_volgnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_prijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_vervaldatum);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_reftabel);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_refcode);
|
||
v_aanduiding :=
|
||
'[' || v_fac_usrtab_naam || '|' || v_fac_usrdata_code || '] ';
|
||
|
||
-- 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_fac_usrtab_naam) = 'TABELNAAM'
|
||
AND UPPER (v_fac_usrdata_code) = 'WAARDE_CODE'
|
||
AND UPPER (v_fac_usrdata_omschr) = 'WAARDE_OMS'
|
||
AND UPPER (v_fac_usrdata_omschr2) = 'WAARDE_OMS2'
|
||
AND UPPER (v_fac_usrdata_volgnr) = 'VOLGNR'
|
||
AND UPPER (v_fac_usrdata_prijs) = 'PRIJS'
|
||
AND UPPER (v_fac_usrdata_vervaldatum) = 'VERVALDATUM'
|
||
AND UPPER (v_fac_usrdata_reftabel) = 'WAARDETABEL'
|
||
AND UPPER (v_fac_usrdata_refcode) = 'WAARDETABEL_CODE'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Tabelnaam ongeldig; ongedefinieerd of te lang';
|
||
v_fac_usrtab_naam := TRIM (v_fac_usrtab_naam);
|
||
|
||
IF v_fac_usrtab_naam IS NULL OR LENGTH (v_fac_usrtab_naam) > 16
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Waarde-code ongeldig; ongedefinieerd of te lang';
|
||
v_fac_usrdata_code := TRIM (v_fac_usrdata_code);
|
||
|
||
IF v_fac_usrdata_code IS NULL OR LENGTH (v_fac_usrdata_code) > 40
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Waarde-omschrijving te lang';
|
||
v_fac_usrdata_omschr := TRIM (v_fac_usrdata_omschr);
|
||
|
||
IF LENGTH (v_fac_usrdata_omschr) > 60
|
||
THEN
|
||
v_fac_usrdata_omschr :=
|
||
SUBSTR (TRIM (v_fac_usrdata_omschr), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Waarde-omschrijving wordt afgebroken tot ['
|
||
|| v_fac_usrdata_omschr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Waarde-omschrijving2 te lang';
|
||
v_fac_usrdata_omschr2 := TRIM (v_fac_usrdata_omschr2);
|
||
|
||
IF LENGTH (v_fac_usrdata_omschr2) > 60
|
||
THEN
|
||
v_fac_usrdata_omschr2 :=
|
||
SUBSTR (TRIM (v_fac_usrdata_omschr2), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Waarde-omschrijving2 wordt afgebroken tot ['
|
||
|| v_fac_usrdata_omschr2
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Volgnummer ongeldig; maximale grootte 999';
|
||
v_fac_usrdata_volgnr := TRIM (v_fac_usrdata_volgnr);
|
||
v_fac_usrdata_volgnr_n := NULL;
|
||
|
||
IF (v_fac_usrdata_volgnr IS NOT NULL)
|
||
THEN
|
||
IF (fac.safe_to_number (v_fac_usrdata_volgnr) IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_fac_usrdata_volgnr_n :=
|
||
fac.safe_to_number (v_fac_usrdata_volgnr);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Prijs ongeldig; maximale grootte 999999.99';
|
||
v_fac_usrdata_prijs := TRIM (v_fac_usrdata_prijs);
|
||
v_fac_usrdata_prijs_n := NULL;
|
||
|
||
IF (v_fac_usrdata_prijs IS NOT NULL)
|
||
THEN
|
||
IF (fac.safe_to_number (v_fac_usrdata_prijs) IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_fac_usrdata_prijs_n :=
|
||
fac.safe_to_number (v_fac_usrdata_prijs);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Vervaldatum ongeldig';
|
||
v_fac_usrdata_vervaldatum := TRIM (v_fac_usrdata_vervaldatum);
|
||
v_fac_usrdata_vervaldatum_d := NULL;
|
||
|
||
IF (v_fac_usrdata_vervaldatum IS NOT NULL)
|
||
THEN
|
||
IF (fac.safe_to_date (v_fac_usrdata_vervaldatum, 'dd-mm-yyyy') IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_fac_usrdata_vervaldatum_d :=
|
||
fac.safe_to_date (v_fac_usrdata_vervaldatum,
|
||
'dd-mm-yyyy');
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Waardetabelnaam ongeldig; ongedefinieerd of te lang';
|
||
v_fac_usrdata_reftabel := TRIM (v_fac_usrdata_reftabel);
|
||
|
||
IF LENGTH (v_fac_usrdata_reftabel) > 16
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Waardetabelcode ongeldig; ongedefinieerd of te lang';
|
||
v_fac_usrdata_refcode := TRIM(v_fac_usrdata_refcode);
|
||
|
||
IF ( (v_fac_usrdata_reftabel IS NULL AND v_fac_usrdata_refcode IS NOT NULL)
|
||
OR (v_fac_usrdata_reftabel IS NOT NULL AND v_fac_usrdata_refcode IS NULL)
|
||
OR COALESCE(LENGTH (v_fac_usrdata_refcode),0) > 40
|
||
)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO fac_imp_usrdata (fac_usrtab_naam,
|
||
fac_usrdata_code,
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_omschr2,
|
||
fac_usrdata_volgnr,
|
||
fac_usrdata_prijs,
|
||
fac_usrdata_vervaldatum,
|
||
fac_usrdata_reftabel,
|
||
fac_usrdata_refcode)
|
||
VALUES (v_fac_usrtab_naam,
|
||
v_fac_usrdata_code,
|
||
v_fac_usrdata_omschr,
|
||
v_fac_usrdata_omschr2,
|
||
v_fac_usrdata_volgnr_n,
|
||
v_fac_usrdata_prijs_n,
|
||
v_fac_usrdata_vervaldatum_d,
|
||
v_fac_usrdata_reftabel,
|
||
v_fac_usrdata_refcode);
|
||
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'');
|
||
END;
|
||
|
||
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 specificatie!');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Eigen tabellen/aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Eigen tabellen/aantal 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 eigen tabellen afgebroken!');
|
||
END fac_import_usrdata;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_usrdata (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor loopt over de voorkomende (unieke) tabelnamen.
|
||
CURSOR c1
|
||
IS
|
||
SELECT DISTINCT fac_usrtab_naam FROM fac_imp_usrdata;
|
||
|
||
v_errormsg VARCHAR2 (1000) := '';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE add_tabel (p_import_key IN NUMBER,
|
||
p_tabname IN VARCHAR2)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_usrtab_naam,
|
||
fac_usrdata_code,
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_omschr2,
|
||
fac_usrdata_volgnr,
|
||
fac_usrdata_prijs,
|
||
fac_usrdata_vervaldatum,
|
||
fac_usrdata_reftabel,
|
||
fac_usrdata_refcode
|
||
FROM fac_imp_usrdata
|
||
WHERE fac_usrtab_naam = p_tabname;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_upd NUMBER (10);
|
||
v_tab_key NUMBER;
|
||
v_parentkey NUMBER;
|
||
v_parentwaarde_key NUMBER(10);
|
||
v_waardetabel_naam VARCHAR2(16);
|
||
v_waardetabel_key NUMBER(10) := -2;
|
||
v_count_waardetabel NUMBER(10);
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_upd := 0;
|
||
|
||
-- Bepaal de key bij waardetabel.
|
||
SELECT COUNT(*)
|
||
, MIN(fac_usrdata_reftabel)
|
||
INTO v_count_waardetabel
|
||
, v_waardetabel_naam
|
||
FROM (SELECT DISTINCT fac_usrdata_reftabel
|
||
FROM fac_imp_usrdata
|
||
WHERE fac_usrtab_naam = p_tabname
|
||
);
|
||
IF (v_count_waardetabel = 1)
|
||
THEN
|
||
IF (v_waardetabel_naam IS NULL)
|
||
THEN
|
||
v_waardetabel_key := NULL;
|
||
ElSE
|
||
SELECT COALESCE(MIN(fac_usrtab_key), -1)
|
||
INTO v_waardetabel_key
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_naam = v_waardetabel_naam;
|
||
END IF;
|
||
END IF;
|
||
-- v_waardetabel_key: NULL -> usrtab_parentkey NULL
|
||
-- >0 -> usrtab_parentkey
|
||
-- -1 -> tabel bestaat niet
|
||
-- -2 -> voor p_tabname zijn meer dan 1 verschillende parent keys gevonden
|
||
|
||
v_errormsg := 'Fout bij bepalen eigen tabel [' || p_tabname || '] ';
|
||
|
||
SELECT COUNT(*)
|
||
, MIN(fac_usrtab_key)
|
||
, MIN(fac_usrtab_parentkey)
|
||
INTO v_count
|
||
, v_tab_key
|
||
, v_parentkey
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_verwijder IS NULL
|
||
AND fac_usrtab_naam = p_tabname;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen eigen tabel [' || p_tabname || '] '
|
||
|| CASE WHEN v_waardetabel_key IS NULL THEN ''
|
||
ELSE 'met waardetabelkey=' || v_waardetabel_key
|
||
END;
|
||
|
||
INSERT INTO fac_usrtab (fac_usrtab_naam, fac_usrtab_omschrijving, fac_usrtab_parentkey)
|
||
VALUES (p_tabname, p_tabname, v_waardetabel_key)
|
||
RETURNING fac_usrtab_key INTO v_tab_key;
|
||
|
||
v_parentkey := v_waardetabel_key;
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- Voor een bestaande fac_usrtab moet de parentkey gelijk zijn aan v_waardetabel_key.
|
||
IF ((v_parentkey = v_waardetabel_key) OR (v_parentkey IS NULL AND v_waardetabel_key IS NULL))
|
||
THEN
|
||
BEGIN
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Als er een referentietabel is moet de waarde in die tabel bestaan.
|
||
IF (v_parentkey > 0)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen bestaan waardetabel_code ['
|
||
|| v_waardetabel_naam || '.' || rec.fac_usrdata_refcode
|
||
|| '] ' || TO_CHAR(v_parentkey) || ',' || rec.fac_usrdata_refcode;
|
||
SELECT fac_usrdata_key
|
||
INTO v_parentwaarde_key
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = v_parentkey
|
||
AND fac_usrdata_code = rec.fac_usrdata_refcode;
|
||
END IF;
|
||
|
||
-- Toevoegen/wijzigen van tabelwaarde.
|
||
v_errormsg :=
|
||
'Fout bij bepalen bestaan waarde-code ['
|
||
|| rec.fac_usrdata_code
|
||
|| '] ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_verwijder IS NULL
|
||
AND fac_usrtab_key = v_tab_key
|
||
AND fac_usrdata_code = rec.fac_usrdata_code;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg :=
|
||
'Fout bij toevoegen waarde-code ['
|
||
|| rec.fac_usrdata_code
|
||
|| '] ';
|
||
|
||
INSERT INTO fac_usrdata (fac_usrtab_key,
|
||
fac_usrdata_code,
|
||
fac_usrdata_omschr,
|
||
fac_usrdata_omschr2,
|
||
fac_usrdata_volgnr,
|
||
fac_usrdata_vervaldatum,
|
||
fac_usrdata_prijs,
|
||
fac_usrdata_parentkey
|
||
)
|
||
VALUES (v_tab_key,
|
||
rec.fac_usrdata_code,
|
||
rec.fac_usrdata_omschr,
|
||
rec.fac_usrdata_omschr2,
|
||
rec.fac_usrdata_volgnr,
|
||
rec.fac_usrdata_vervaldatum,
|
||
rec.fac_usrdata_prijs,
|
||
v_parentwaarde_key);
|
||
ELSE
|
||
v_errormsg :=
|
||
'Fout bij bijwerken waarde-code ['
|
||
|| rec.fac_usrdata_code
|
||
|| '] ';
|
||
|
||
UPDATE fac_usrdata
|
||
SET fac_usrdata_omschr = rec.fac_usrdata_omschr,
|
||
fac_usrdata_omschr2 = rec.fac_usrdata_omschr2,
|
||
fac_usrdata_volgnr = rec.fac_usrdata_volgnr,
|
||
fac_usrdata_vervaldatum = rec.fac_usrdata_vervaldatum,
|
||
fac_usrdata_prijs = rec.fac_usrdata_prijs,
|
||
fac_usrdata_parentkey = v_parentwaarde_key
|
||
WHERE fac_usrdata_verwijder IS NULL
|
||
AND fac_usrtab_key = v_tab_key
|
||
AND fac_usrdata_code = rec.fac_usrdata_code;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
v_count_upd := v_count_upd + 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_errormsg,
|
||
'');
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
p_tabname || ': #ingelezen = ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
p_tabname || ': #toegevoegd/bijgewerkt = ' || TO_CHAR (v_count_upd),
|
||
''
|
||
);
|
||
COMMIT;
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
p_tabname || ': waardetabel [' || v_waardetabel_naam || '] komt niet overeen met parentkey',
|
||
''
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
END;
|
||
-- MAIN
|
||
BEGIN
|
||
-- Loop door de voorkomende (unieke) tabelnamen en voeg deze toe en/of werk
|
||
-- deze bij.
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
add_tabel (p_import_key, rec.fac_usrtab_naam);
|
||
END;
|
||
END LOOP;
|
||
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 eigen tabellen afgebroken!');
|
||
END fac_update_usrdata;
|
||
/
|
||
|
||
--// FLEX
|
||
-- kenmerken-import (transport), volgens UWVA#20708
|
||
-- UWVA#32742: flexkenmerken transport voor objecten
|
||
CREATE OR REPLACE PROCEDURE fac_import_flex (p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
v_newline VARCHAR2 (10000); -- Import line
|
||
v_field VARCHAR2 (100); -- Import field
|
||
v_fielddelimitor VARCHAR2 (2) := fac.import_delimiter(p_import_key); -- Field seperator
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_fac_kenmerkdomein_omschr VARCHAR2 (300);
|
||
v_fac_kenmerkdomein_objectnaam VARCHAR2 (300);
|
||
v_fac_kenmerkdomein_kolomnaam VARCHAR2 (300);
|
||
v_fac_kenmerkdomein_kolomtxt VARCHAR2 (300);
|
||
v_fac_usrtab_naam VARCHAR2 (300);
|
||
v_srtkenmerk_omschrijving VARCHAR2 (300);
|
||
v_srtkenmerk_kenmerktype VARCHAR2 (300);
|
||
v_srtkenmerk_systeem VARCHAR2 (300);
|
||
v_srtkenmerk_lengte VARCHAR2 (300);
|
||
v_srtkenmerk_dec VARCHAR2 (300);
|
||
v_srtkenmerk_nmin VARCHAR2 (300);
|
||
v_srtkenmerk_nmax VARCHAR2 (300);
|
||
v_srtkenmerk_dimensie VARCHAR2 (300);
|
||
v_srtkenmerk_code VARCHAR2 (300);
|
||
v_kenmerk_type VARCHAR2 (300);
|
||
v_kenmerk_niveau VARCHAR2 (300);
|
||
v_kenmerk_verplicht VARCHAR2 (300);
|
||
v_kenmerk_groep VARCHAR2 (300);
|
||
v_kenmerk_rolcode VARCHAR2 (300);
|
||
v_kenmerk_volgnummer VARCHAR2 (300);
|
||
v_kenmerk_default VARCHAR2 (4000);
|
||
v_kenmerk_toonbaar VARCHAR2 (300);
|
||
v_kenmerk_uniek VARCHAR2 (300);
|
||
v_kenmerk_hint VARCHAR2 (300);
|
||
v_kenmerk_regexp VARCHAR2 (300);
|
||
v_kenmerk_show_expr VARCHAR2 (4000);
|
||
v_kenmerk_omschr VARCHAR2 (300);
|
||
v_kenmerk_verwijder VARCHAR2 (300);
|
||
v_kenmerk_wissen VARCHAR2 (300);
|
||
v_kenmerk_code VARCHAR2 (300);
|
||
v_deflevel1 VARCHAR2 (300); /* res_srtactiviteit, mld_srtdiscipline, bes_discipline of cnt_discipline */
|
||
v_deflevel2 VARCHAR2 (300); /* res_activiteit, mld_discipline, bes_srtgroep of niks */
|
||
v_deflevel3 VARCHAR2 (300); /* niks, mld_stdmelding, bes_srtdeel of niks */
|
||
v_deflevel4 VARCHAR2 (300); /* niks, mld_typeopdr, niks of niks */
|
||
v_kenmerk_extra_1 VARCHAR2 (300); /* extra kolommen voor kenmerk die niet in elke module voorkomen */
|
||
v_kenmerk_extra_2 VARCHAR2 (300); /* check wel of dit veld groot genoeg is voor het betreffende kenmerk */
|
||
v_kenmerk_extra_3 VARCHAR2 (300); /* als er een extra kenmerk wordt gebruikt moeten deflevel1 t/m 4 bestaan, desnoods als null-value */
|
||
v_kenmerk_extra_4 VARCHAR2 (300);
|
||
flexmodule VARCHAR2 (3);
|
||
v_res_srtactiviteit VARCHAR2 (300);
|
||
v_res_activiteit VARCHAR2 (300);
|
||
v_mld_srtdiscipline VARCHAR2 (300);
|
||
v_mld_discipline VARCHAR2 (300);
|
||
v_mld_stdmelding VARCHAR2 (300);
|
||
v_mld_typeopdr VARCHAR2 (300);
|
||
v_bes_discipline VARCHAR2 (300);
|
||
v_bes_srtgroep VARCHAR2 (300);
|
||
v_bes_srtdeel VARCHAR2 (300);
|
||
v_cnt_discipline VARCHAR2 (300);
|
||
v_ins_discipline VARCHAR2 (300);
|
||
v_ins_srtgroep VARCHAR2 (300);
|
||
v_ins_srtdeel VARCHAR2 (300);
|
||
|
||
header_found BOOLEAN := FALSE;
|
||
BEGIN
|
||
|
||
-- Clear my previous imported rows
|
||
DELETE FROM fac_imp_flex;
|
||
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_fac_kenmerkdomein_omschr); --1
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_fac_kenmerkdomein_objectnaam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_fac_kenmerkdomein_kolomnaam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_fac_kenmerkdomein_kolomtxt);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_fac_usrtab_naam);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_omschrijving);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_kenmerktype);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_systeem);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_lengte); -- 10
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_dec);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_nmin);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_nmax);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtkenmerk_dimensie);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_type);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_niveau);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_verplicht);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_groep);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_rolcode);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_volgnummer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_default); -- 20
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_toonbaar);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_uniek);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_hint);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_regexp);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_show_expr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_code);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_omschr);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_verwijder);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel1);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel2); -- 30
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel3);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel4);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_extra_1);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_extra_2);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_extra_3);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_extra_4); -- 36
|
||
|
||
-- Skip until the header is found
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
IF UPPER (v_fac_kenmerkdomein_omschr) = 'FAC_KENMERKDOMEIN_OMSCHRIJVING'
|
||
AND UPPER (v_fac_kenmerkdomein_objectnaam) = 'FAC_KENMERKDOMEIN_OBJECTNAAM'
|
||
AND UPPER (v_fac_kenmerkdomein_kolomnaam) = 'FAC_KENMERKDOMEIN_KOLOMNAAM'
|
||
AND UPPER (v_fac_kenmerkdomein_kolomtxt) = 'FAC_KENMERKDOMEIN_KOLOMTXT'
|
||
AND UPPER (v_fac_usrtab_naam) = 'FAC_USRTAB_NAAM'
|
||
AND UPPER (v_srtkenmerk_code) = 'SRTKENMERK_CODE'
|
||
AND UPPER (v_srtkenmerk_omschrijving) = 'SRTKENMERK_OMSCHRIJVING'
|
||
AND UPPER (v_srtkenmerk_kenmerktype) = 'SRTKENMERK_KENMERKTYPE'
|
||
AND UPPER (v_srtkenmerk_systeem) = 'SRTKENMERK_SYSTEEM'
|
||
AND UPPER (v_srtkenmerk_lengte) = 'SRTKENMERK_LENGTE'
|
||
AND UPPER (v_srtkenmerk_dec) = 'SRTKENMERK_DEC'
|
||
AND UPPER (v_srtkenmerk_nmin) = 'SRTKENMERK_NMIN'
|
||
AND UPPER (v_srtkenmerk_nmax) = 'SRTKENMERK_NMAX'
|
||
AND UPPER (v_srtkenmerk_dimensie) = 'SRTKENMERK_DIMENSIE'
|
||
AND UPPER (v_kenmerk_type) = 'KENMERK_TYPE'
|
||
AND UPPER (v_kenmerk_niveau) = 'KENMERK_NIVEAU'
|
||
AND UPPER (v_kenmerk_verplicht) = 'KENMERK_VERPLICHT'
|
||
AND UPPER (v_kenmerk_groep) = 'KENMERK_GROEP'
|
||
AND UPPER (v_kenmerk_rolcode) = 'KENMERK_ROLCODE'
|
||
AND UPPER (v_kenmerk_volgnummer) = 'KENMERK_VOLGNUMMER'
|
||
AND UPPER (v_kenmerk_default) = 'KENMERK_DEFAULT'
|
||
AND UPPER (v_kenmerk_toonbaar) = 'KENMERK_TOONBAAR'
|
||
AND UPPER (v_kenmerk_uniek) = 'KENMERK_UNIEK'
|
||
AND UPPER (v_kenmerk_hint) = 'KENMERK_HINT'
|
||
AND UPPER (v_kenmerk_regexp) = 'KENMERK_REGEXP'
|
||
AND UPPER (v_kenmerk_show_expr) = 'KENMERK_SHOW_EXPR'
|
||
AND UPPER (v_kenmerk_code) = 'KENMERK_CODE'
|
||
AND UPPER (v_kenmerk_omschr) = 'KENMERK_OMSCHR'
|
||
AND UPPER (v_kenmerk_verwijder) = 'KENMERK_VERWIJDER'
|
||
THEN
|
||
header_found := TRUE;
|
||
-- Wat voor een header is het?
|
||
IF UPPER (v_deflevel1) = 'ACTIVITEITSOORT'
|
||
AND UPPER (v_deflevel2) = 'ACTIVITEIT'
|
||
THEN
|
||
flexmodule := 'RES';
|
||
ELSIF UPPER (v_deflevel1) = 'CATALOGUS'
|
||
AND UPPER (v_deflevel2) = 'GROEP'
|
||
AND UPPER (v_deflevel3) = 'ARTIKEL'
|
||
THEN
|
||
flexmodule := 'BES';
|
||
ELSIF UPPER (v_deflevel1) = 'VAKGROEPTYPE'
|
||
AND UPPER (v_deflevel2) = 'VAKGROEP'
|
||
AND UPPER (v_deflevel3) = 'MELDING'
|
||
AND UPPER (v_deflevel4) = 'OPDRACHTTYPE'
|
||
THEN
|
||
flexmodule := 'MLD';
|
||
ELSIF UPPER (v_deflevel1) = 'CONTRACTSOORT'
|
||
THEN
|
||
flexmodule := 'CNT';
|
||
ELSIF UPPER (v_deflevel1) = 'DISCIPLINE'
|
||
AND UPPER (v_deflevel2) = 'GROEP'
|
||
AND UPPER (v_deflevel3) = 'OBJECTSOORT'
|
||
THEN
|
||
flexmodule := 'INS';
|
||
ELSIF UPPER (v_deflevel1) = 'FACTUUR'
|
||
THEN
|
||
flexmodule := 'FIN';
|
||
ELSIF UPPER (v_deflevel1) = 'DISCIPLINE'
|
||
AND UPPER (v_deflevel2) = 'SRTCONTROLE'
|
||
THEN
|
||
flexmodule := 'CTR';
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
IF flexmodule = 'RES'
|
||
THEN
|
||
v_res_srtactiviteit := v_deflevel1;
|
||
v_res_activiteit := v_deflevel2;
|
||
ELSIF flexmodule = 'BES'
|
||
THEN
|
||
v_bes_discipline := v_deflevel1;
|
||
v_bes_srtgroep := v_deflevel2;
|
||
v_bes_srtdeel := v_deflevel3;
|
||
ELSIF flexmodule = 'MLD'
|
||
THEN
|
||
v_mld_srtdiscipline := v_deflevel1;
|
||
v_mld_discipline := v_deflevel2;
|
||
v_mld_stdmelding := v_deflevel3;
|
||
v_mld_typeopdr := v_deflevel4;
|
||
ELSIF flexmodule = 'CNT'
|
||
THEN
|
||
v_cnt_discipline := v_deflevel1;
|
||
ELSIF flexmodule = 'INS'
|
||
THEN
|
||
-- Hieronder staat telkens de splisting van kenmerk: of op discipline/groep/objectsoort of op inspectiekenmerk.
|
||
-- In de update-procedure wordt deze splitsing bepaald door kenmerk_niveau (D = deel, C = controle)
|
||
|
||
-- Discipline of (voor inspectiekenmerken) een dummy Tekst voor ctr_controle_type (1,2,3), iets als inspectie controle, - vervanging, - certificering
|
||
v_ins_discipline := v_deflevel1;
|
||
-- Groep binnen de discipline, of (voor inspectiekenmerken) de omschrijving van de soortcontrole (ins_srtcontrole_omschrijving)
|
||
v_ins_srtgroep := v_deflevel2;
|
||
-- Objectsoort, of (voor inspectiekenmerken) de (tekst)waarde '1', '2' of '3' (ctr_controle_type).
|
||
v_ins_srtdeel := v_deflevel3;
|
||
ELSIF flexmodule = 'CTR'
|
||
THEN
|
||
v_ins_discipline := v_deflevel1;
|
||
v_ins_srtgroep := v_deflevel2;
|
||
END IF;
|
||
|
||
INSERT INTO fac_imp_flex (
|
||
fac_kenmerkdomein_omschrijving, -- 1
|
||
fac_kenmerkdomein_objectnaam,
|
||
fac_kenmerkdomein_kolomnaam,
|
||
fac_kenmerkdomein_kolomtxt,
|
||
fac_usrtab_naam,
|
||
srtkenmerk_code,
|
||
srtkenmerk_omschrijving,
|
||
srtkenmerk_kenmerktype,
|
||
srtkenmerk_systeem,
|
||
srtkenmerk_lengte, -- 10
|
||
srtkenmerk_dec,
|
||
srtkenmerk_nmin,
|
||
srtkenmerk_nmax,
|
||
srtkenmerk_dimensie,
|
||
kenmerk_niveau,
|
||
kenmerk_verplicht,
|
||
kenmerk_groep,
|
||
kenmerk_rolcode,
|
||
kenmerk_volgnummer,
|
||
kenmerk_default,
|
||
kenmerk_type, -- 20
|
||
kenmerk_toonbaar,
|
||
kenmerk_uniek,
|
||
kenmerk_hint,
|
||
kenmerk_regexp,
|
||
kenmerk_show_expr,
|
||
kenmerk_code,
|
||
kenmerk_omschr,
|
||
kenmerk_verwijder,
|
||
kenmerk_extra_1,
|
||
kenmerk_extra_2, -- 30
|
||
kenmerk_extra_3,
|
||
kenmerk_extra_4,
|
||
res_srtactiviteit,
|
||
res_activiteit,
|
||
mld_srtdiscipline,
|
||
mld_discipline,
|
||
mld_stdmelding,
|
||
mld_typeopdr,
|
||
bes_discipline,
|
||
bes_srtgroep, -- 40
|
||
bes_srtdeel,
|
||
cnt_discipline,
|
||
ins_discipline,
|
||
ins_srtgroep,
|
||
ins_srtdeel, -- 45
|
||
kenmerk_module
|
||
)
|
||
VALUES (
|
||
SUBSTR (v_fac_kenmerkdomein_omschr, 1, 255), -- 1
|
||
SUBSTR (v_fac_kenmerkdomein_objectnaam, 1, 255),
|
||
SUBSTR (v_fac_kenmerkdomein_kolomnaam, 1, 255),
|
||
SUBSTR (v_fac_kenmerkdomein_kolomtxt, 1, 255),
|
||
SUBSTR (v_fac_usrtab_naam, 1, 255),
|
||
SUBSTR (v_srtkenmerk_code, 1, 255),
|
||
SUBSTR (v_srtkenmerk_omschrijving, 1, 255),
|
||
SUBSTR (v_srtkenmerk_kenmerktype, 1, 255),
|
||
SUBSTR (v_srtkenmerk_systeem, 1, 255),
|
||
SUBSTR (v_srtkenmerk_lengte, 1, 255), -- 10
|
||
SUBSTR (v_srtkenmerk_dec, 1, 255),
|
||
SUBSTR (v_srtkenmerk_nmin, 1, 255),
|
||
SUBSTR (v_srtkenmerk_nmax, 1, 255),
|
||
SUBSTR (v_srtkenmerk_dimensie, 1, 255),
|
||
SUBSTR (v_kenmerk_niveau, 1, 255),
|
||
SUBSTR (v_kenmerk_verplicht, 1, 255),
|
||
SUBSTR (v_kenmerk_groep, 1, 255),
|
||
SUBSTR (v_kenmerk_rolcode, 1, 255),
|
||
SUBSTR (v_kenmerk_volgnummer, 1, 255),
|
||
SUBSTR (v_kenmerk_default, 1, 4000),
|
||
SUBSTR (v_kenmerk_type, 1, 255), -- 20
|
||
SUBSTR (v_kenmerk_toonbaar, 1, 255),
|
||
SUBSTR (v_kenmerk_uniek, 1, 255),
|
||
SUBSTR (v_kenmerk_hint, 1, 255),
|
||
SUBSTR (v_kenmerk_regexp, 1, 255),
|
||
SUBSTR (v_kenmerk_show_expr, 1, 4000),
|
||
SUBSTR (v_kenmerk_code, 1, 255),
|
||
SUBSTR (v_kenmerk_omschr, 1, 255),
|
||
SUBSTR (v_kenmerk_verwijder, 1, 255),
|
||
SUBSTR (v_kenmerk_extra_1, 1, 255),
|
||
SUBSTR (v_kenmerk_extra_2, 1, 255), -- 30
|
||
SUBSTR (v_kenmerk_extra_3, 1, 255),
|
||
SUBSTR (v_kenmerk_extra_4, 1, 255),
|
||
v_res_srtactiviteit,
|
||
v_res_activiteit,
|
||
v_mld_srtdiscipline,
|
||
v_mld_discipline,
|
||
v_mld_stdmelding,
|
||
v_mld_typeopdr,
|
||
v_bes_discipline,
|
||
v_bes_srtgroep, -- 40
|
||
v_bes_srtdeel,
|
||
v_cnt_discipline,
|
||
v_ins_discipline,
|
||
v_ins_srtgroep,
|
||
v_ins_srtdeel, -- 45
|
||
flexmodule
|
||
);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_found = FALSE)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen regels ('||flexmodule||'): ' || TO_CHAR (v_count_import), '');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, '');
|
||
END;
|
||
/
|
||
|
||
-- UNDER CONSTRUCTION
|
||
--
|
||
-- Mijn voorstel is om het als volgt te doen:
|
||
-- 1. inlezen van het bestand in fac_imp_flex
|
||
-- 2. Op basis van de header constateren of het res/bes/mld is
|
||
-- res: ACTIVITEITSOORT;ACTIVITEIT
|
||
-- mld: VAKGROEPTYPE;VAKGROEP;MELDING;OPDRACHTTYPE
|
||
-- bes: CATALOGUS;GROEP;ARTIKEL
|
||
-- cnt: CONTRACTSOORT
|
||
-- 3. Dan de verdere handling in fac_update_flex
|
||
|
||
-- flexkenmerken-import (transport) voor RES/MLD/BES, volgens UWVA#20706
|
||
-- en voor CNT, volgens AALB#27395
|
||
-- UWVA#32742: flexkenmerken transport voor objecten
|
||
CREATE OR REPLACE PROCEDURE fac_update_flex (p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c_flex
|
||
IS
|
||
SELECT * FROM fac_imp_flex
|
||
ORDER BY srtkenmerk_omschrijving, kenmerk_volgnummer;
|
||
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (250);
|
||
v_errormsg VARCHAR2 (1024);
|
||
v_errorhint VARCHAR2 (1024);
|
||
v_count NUMBER;
|
||
flexmodule VARCHAR2 (3);
|
||
v_desc VARCHAR2 (255);
|
||
v_usrtab_key NUMBER;
|
||
v_kenmerkdomein_key NUMBER;
|
||
v_srtkenmerk_key NUMBER;
|
||
v_kenmerk_key NUMBER;
|
||
v_srtinstallatie_key NUMBER;
|
||
v_srtgroep_key NUMBER;
|
||
v_srtdeel_key NUMBER;
|
||
v_srtdiscipline_key NUMBER;
|
||
v_discipline_key NUMBER;
|
||
v_stdmelding_key NUMBER;
|
||
v_typeopdr_key NUMBER;
|
||
v_activiteit_key NUMBER;
|
||
currentversion fac_module.fac_module_version%TYPE;
|
||
e_transport EXCEPTION;
|
||
BEGIN
|
||
-- Init
|
||
SELECT MAX (fac_module_version) INTO currentversion FROM fac_module;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Facilitor flexkenmerken import versie ' || currentversion,
|
||
'$Revision$'
|
||
);
|
||
COMMIT;
|
||
|
||
-- Bestaan de gebruikte Eigen tabellen?
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_imp_flex
|
||
WHERE fac_usrtab_naam IS NOT NULL AND fac_usrtab_naam NOT IN (SELECT fac_usrtab_naam FROM fac_usrtab);
|
||
|
||
IF (v_count != 0)
|
||
THEN
|
||
v_errormsg := 'Ontbrekende Eigen tabel(len)';
|
||
RAISE e_transport;
|
||
END IF;
|
||
|
||
-- Proces de importregel. Als we ergens onderweg
|
||
-- een fout tegenkomen, doen we een rollback.
|
||
FOR rec IN c_flex
|
||
LOOP
|
||
-- Kenmerkdomeinen: maak nog-niet-bestaande domeinen aan.
|
||
BEGIN
|
||
-- bepaal de module
|
||
IF rec.res_activiteit IS NOT NULL THEN
|
||
flexmodule := 'RES';
|
||
ELSIF rec.bes_discipline IS NOT NULL THEN
|
||
flexmodule := 'BES';
|
||
ELSIF rec.ins_discipline IS NOT NULL THEN
|
||
flexmodule := 'INS';
|
||
ELSE
|
||
flexmodule := rec.kenmerk_module; -- MLD, FIN, ...
|
||
END IF;
|
||
|
||
v_kenmerkdomein_key := NULL;
|
||
IF rec.fac_kenmerkdomein_omschrijving IS NOT NULL THEN
|
||
v_usrtab_key := NULL;
|
||
v_kenmerkdomein_key := NULL;
|
||
v_desc := rec.fac_kenmerkdomein_omschrijving;
|
||
|
||
v_errormsg := 'Fout bij bepalen kenmerkdomein ' || v_desc;
|
||
|
||
-- Bestaat dit domein al?
|
||
SELECT COUNT ( * ), MIN(fac_kenmerkdomein_key)
|
||
INTO v_count, v_kenmerkdomein_key
|
||
FROM fac_kenmerkdomein kd
|
||
WHERE kd.fac_kenmerkdomein_module = flexmodule
|
||
AND kd.fac_kenmerkdomein_omschrijving = rec.fac_kenmerkdomein_omschrijving
|
||
AND fac_kenmerkdomein_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
v_errormsg := 'Fout bij bepalen Eigen tabel ' || rec.fac_usrtab_naam;
|
||
|
||
-- Gebruikt domein een usrtab?
|
||
IF (rec.fac_usrtab_naam || 'x' != 'x')
|
||
THEN
|
||
SELECT fac_usrtab_key
|
||
INTO v_usrtab_key
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_naam = rec.fac_usrtab_naam;
|
||
END IF;
|
||
|
||
-- Domein toevoegen
|
||
-- (NB: mogelijk bestaat er nog een domein met de goede omschrijving,
|
||
-- maar met een verwijderdatum. Die negeren we en maken een nieuwe)
|
||
v_errormsg := 'Fout bij toevoegen kenmerkdomein ' || v_desc;
|
||
|
||
INSERT INTO fac_kenmerkdomein (
|
||
fac_kenmerkdomein_module,
|
||
fac_kenmerkdomein_omschrijving,
|
||
fac_kenmerkdomein_objectnaam,
|
||
fac_kenmerkdomein_kolomnaam,
|
||
fac_kenmerkdomein_kolomtxt,
|
||
fac_usrtab_key
|
||
)
|
||
VALUES (
|
||
flexmodule,
|
||
rec.fac_kenmerkdomein_omschrijving,
|
||
rec.fac_kenmerkdomein_objectnaam,
|
||
rec.fac_kenmerkdomein_kolomnaam,
|
||
rec.fac_kenmerkdomein_kolomtxt,
|
||
v_usrtab_key
|
||
)
|
||
RETURNING fac_kenmerkdomein_key
|
||
INTO v_kenmerkdomein_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', flexmodule||'-kenmerkdomein toegevoegd', v_desc);
|
||
ELSE
|
||
-- Bestaat al wel
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Kenmerkdomein opgehaald',
|
||
v_desc || ' (' || v_kenmerkdomein_key || ')'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Kenmerksoorten: maak nog-niet-bestaande soorten aan.
|
||
v_srtkenmerk_key := NULL;
|
||
IF rec.srtkenmerk_omschrijving IS NOT NULL
|
||
THEN
|
||
v_desc := rec.srtkenmerk_omschrijving;
|
||
v_errormsg := 'Fout bij bepalen kenmerksoort ' || v_desc;
|
||
|
||
-- Bestaat dit soort al?
|
||
CASE flexmodule
|
||
WHEN 'BES' THEN
|
||
SELECT COUNT ( * ), MIN(bes_srtkenmerk_key)
|
||
INTO v_count, v_srtkenmerk_key
|
||
FROM bes_srtkenmerk
|
||
WHERE bes_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving
|
||
AND bes_srtkenmerk_verwijder IS NULL;
|
||
WHEN 'MLD' THEN
|
||
SELECT COUNT ( * ), MIN(mld_srtkenmerk_key)
|
||
INTO v_count, v_srtkenmerk_key
|
||
FROM mld_srtkenmerk
|
||
WHERE mld_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving
|
||
AND mld_srtkenmerk_verwijder IS NULL;
|
||
WHEN 'RES' THEN
|
||
SELECT COUNT ( * ), MIN(res_srtkenmerk_key)
|
||
INTO v_count, v_srtkenmerk_key
|
||
FROM res_srtkenmerk
|
||
WHERE res_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving
|
||
AND res_srtkenmerk_verwijder IS NULL;
|
||
WHEN 'CNT' THEN
|
||
SELECT COUNT ( * ), MIN(cnt_srtkenmerk_key)
|
||
INTO v_count, v_srtkenmerk_key
|
||
FROM cnt_srtkenmerk
|
||
WHERE cnt_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving
|
||
AND cnt_srtkenmerk_verwijder IS NULL;
|
||
WHEN 'INS' THEN
|
||
SELECT COUNT ( * ), MIN(ins_srtkenmerk_key)
|
||
INTO v_count, v_srtkenmerk_key
|
||
FROM ins_srtkenmerk
|
||
WHERE ins_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving
|
||
AND ins_srtkenmerk_verwijder IS NULL;
|
||
END CASE;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
-- (NB: mogelijk bestaat er nog een soort met de goede omschrijving,
|
||
-- maar met een verwijderdatum. Die negeren we en maken een nieuwe)
|
||
v_errormsg := 'Fout bij toevoegen kenmerksoort ' || v_desc;
|
||
|
||
CASE flexmodule
|
||
WHEN 'BES' THEN
|
||
INSERT INTO bes_srtkenmerk (
|
||
bes_srtkenmerk_omschrijving,
|
||
bes_srtkenmerk_code,
|
||
bes_srtkenmerk_kenmerktype,
|
||
bes_srtkenmerk_systeem,
|
||
bes_srtkenmerk_lengte,
|
||
bes_srtkenmerk_dec,
|
||
bes_srtkenmerk_nmin,
|
||
bes_srtkenmerk_nmax,
|
||
bes_srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_omschrijving,
|
||
rec.srtkenmerk_code,
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
v_kenmerkdomein_key
|
||
)
|
||
RETURNING bes_srtkenmerk_key
|
||
INTO v_srtkenmerk_key;
|
||
|
||
WHEN 'MLD' THEN
|
||
INSERT INTO mld_srtkenmerk (
|
||
mld_srtkenmerk_omschrijving,
|
||
mld_srtkenmerk_code,
|
||
mld_srtkenmerk_kenmerktype,
|
||
mld_srtkenmerk_systeem,
|
||
mld_srtkenmerk_lengte,
|
||
mld_srtkenmerk_dec,
|
||
mld_srtkenmerk_nmin,
|
||
mld_srtkenmerk_nmax,
|
||
mld_srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_omschrijving,
|
||
rec.srtkenmerk_code,
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
v_kenmerkdomein_key
|
||
)
|
||
RETURNING mld_srtkenmerk_key
|
||
INTO v_srtkenmerk_key;
|
||
|
||
WHEN 'RES' THEN
|
||
INSERT INTO res_srtkenmerk (
|
||
res_srtkenmerk_omschrijving,
|
||
res_srtkenmerk_code,
|
||
res_srtkenmerk_kenmerktype,
|
||
res_srtkenmerk_systeem,
|
||
res_srtkenmerk_lengte,
|
||
res_srtkenmerk_dec,
|
||
res_srtkenmerk_nmin,
|
||
res_srtkenmerk_nmax,
|
||
res_srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_omschrijving,
|
||
rec.srtkenmerk_code,
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
v_kenmerkdomein_key
|
||
)
|
||
RETURNING res_srtkenmerk_key
|
||
INTO v_srtkenmerk_key;
|
||
|
||
WHEN 'CNT' THEN
|
||
INSERT INTO cnt_srtkenmerk (
|
||
cnt_srtkenmerk_omschrijving,
|
||
cnt_srtkenmerk_code,
|
||
cnt_srtkenmerk_kenmerktype,
|
||
cnt_srtkenmerk_systeem,
|
||
cnt_srtkenmerk_lengte,
|
||
cnt_srtkenmerk_dec,
|
||
cnt_srtkenmerk_nmin,
|
||
cnt_srtkenmerk_nmax,
|
||
cnt_srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_omschrijving,
|
||
rec.srtkenmerk_code,
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
v_kenmerkdomein_key
|
||
)
|
||
RETURNING cnt_srtkenmerk_key
|
||
INTO v_srtkenmerk_key;
|
||
WHEN 'INS' THEN
|
||
INSERT INTO ins_srtkenmerk (
|
||
ins_srtkenmerk_omschrijving,
|
||
ins_srtkenmerk_code,
|
||
ins_srtkenmerk_kenmerktype,
|
||
ins_srtkenmerk_systeem,
|
||
ins_srtkenmerk_lengte,
|
||
ins_srtkenmerk_dec,
|
||
ins_srtkenmerk_nmin,
|
||
ins_srtkenmerk_nmax,
|
||
ins_srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_omschrijving,
|
||
rec.srtkenmerk_code,
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
v_kenmerkdomein_key
|
||
)
|
||
RETURNING ins_srtkenmerk_key
|
||
INTO v_srtkenmerk_key;
|
||
|
||
END CASE;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmersoort toegevoegd', v_desc);
|
||
ELSE
|
||
-- Bestaat al wel
|
||
|
||
CASE flexmodule
|
||
WHEN 'BES' THEN
|
||
UPDATE bes_srtkenmerk SET
|
||
bes_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving,
|
||
bes_srtkenmerk_code = rec.srtkenmerk_code,
|
||
bes_srtkenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
bes_srtkenmerk_systeem = rec.srtkenmerk_systeem,
|
||
bes_srtkenmerk_lengte = rec.srtkenmerk_lengte,
|
||
bes_srtkenmerk_dec = rec.srtkenmerk_dec,
|
||
bes_srtkenmerk_nmin = rec.srtkenmerk_nmin,
|
||
bes_srtkenmerk_nmax = rec.srtkenmerk_nmax,
|
||
bes_srtkenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key = v_kenmerkdomein_key
|
||
WHERE bes_srtkenmerk_key = v_srtkenmerk_key;
|
||
|
||
WHEN 'MLD' THEN
|
||
UPDATE mld_srtkenmerk SET
|
||
mld_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving,
|
||
mld_srtkenmerk_code = rec.srtkenmerk_code,
|
||
mld_srtkenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
mld_srtkenmerk_systeem = rec.srtkenmerk_systeem,
|
||
mld_srtkenmerk_lengte = rec.srtkenmerk_lengte,
|
||
mld_srtkenmerk_dec = rec.srtkenmerk_dec,
|
||
mld_srtkenmerk_nmin = rec.srtkenmerk_nmin,
|
||
mld_srtkenmerk_nmax = rec.srtkenmerk_nmax,
|
||
mld_srtkenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key = v_kenmerkdomein_key
|
||
WHERE mld_srtkenmerk_key = v_srtkenmerk_key;
|
||
|
||
WHEN 'RES' THEN
|
||
UPDATE res_srtkenmerk SET
|
||
res_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving,
|
||
res_srtkenmerk_code = rec.srtkenmerk_code,
|
||
res_srtkenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
res_srtkenmerk_systeem = rec.srtkenmerk_systeem,
|
||
res_srtkenmerk_lengte = rec.srtkenmerk_lengte,
|
||
res_srtkenmerk_dec = rec.srtkenmerk_dec,
|
||
res_srtkenmerk_nmin = rec.srtkenmerk_nmin,
|
||
res_srtkenmerk_nmax = rec.srtkenmerk_nmax,
|
||
res_srtkenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key = v_kenmerkdomein_key
|
||
WHERE res_srtkenmerk_key = v_srtkenmerk_key;
|
||
|
||
WHEN 'CNT' THEN
|
||
UPDATE cnt_srtkenmerk SET
|
||
cnt_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving,
|
||
cnt_srtkenmerk_code = rec.srtkenmerk_code,
|
||
cnt_srtkenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
cnt_srtkenmerk_systeem = rec.srtkenmerk_systeem,
|
||
cnt_srtkenmerk_lengte = rec.srtkenmerk_lengte,
|
||
cnt_srtkenmerk_dec = rec.srtkenmerk_dec,
|
||
cnt_srtkenmerk_nmin = rec.srtkenmerk_nmin,
|
||
cnt_srtkenmerk_nmax = rec.srtkenmerk_nmax,
|
||
cnt_srtkenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key = v_kenmerkdomein_key
|
||
WHERE cnt_srtkenmerk_key = v_srtkenmerk_key;
|
||
|
||
WHEN 'INS' THEN
|
||
UPDATE ins_srtkenmerk SET
|
||
ins_srtkenmerk_omschrijving = rec.srtkenmerk_omschrijving,
|
||
ins_srtkenmerk_code = rec.srtkenmerk_code,
|
||
ins_srtkenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
ins_srtkenmerk_systeem = rec.srtkenmerk_systeem,
|
||
ins_srtkenmerk_lengte = rec.srtkenmerk_lengte,
|
||
ins_srtkenmerk_dec = rec.srtkenmerk_dec,
|
||
ins_srtkenmerk_nmin = rec.srtkenmerk_nmin,
|
||
ins_srtkenmerk_nmax = rec.srtkenmerk_nmax,
|
||
ins_srtkenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fac_kenmerkdomein_key = v_kenmerkdomein_key
|
||
WHERE ins_srtkenmerk_key = v_srtkenmerk_key;
|
||
|
||
|
||
END CASE;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Kenmerksoort aangepast',
|
||
v_desc || ' (' || v_srtkenmerk_key || ')'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Kenmerken
|
||
-- 1) bepaal keys
|
||
-- 2a) voeg toe
|
||
-- 2b) update
|
||
|
||
v_kenmerk_key := NULL;
|
||
|
||
CASE flexmodule
|
||
WHEN 'BES' THEN
|
||
-- Bepaal catalogus / groep / artikel
|
||
v_errormsg := 'Fout bij bepalen catalogus ' || rec.bes_discipline;
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM bes_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_omschrijving = rec.bes_discipline;
|
||
v_srtinstallatie_key := v_discipline_key;
|
||
|
||
IF rec.bes_srtgroep IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen groep ' || rec.bes_discipline || '/' || rec.bes_srtgroep;
|
||
SELECT bes_srtgroep_key
|
||
INTO v_srtgroep_key
|
||
FROM bes_srtgroep
|
||
WHERE bes_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND bes_srtgroep_omschrijving = rec.bes_srtgroep;
|
||
v_srtinstallatie_key := v_srtgroep_key;
|
||
END IF;
|
||
|
||
IF rec.bes_srtdeel IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen artikel ' || rec.bes_discipline || '/' || rec.bes_srtgroep || '/' || rec.bes_srtdeel;
|
||
SELECT bes_srtdeel_key
|
||
INTO v_srtdeel_key
|
||
FROM bes_srtdeel
|
||
WHERE bes_srtdeel_verwijder IS NULL
|
||
AND bes_srtgroep_key = v_srtgroep_key
|
||
AND bes_srtdeel_omschrijving = rec.bes_srtdeel;
|
||
v_srtinstallatie_key := v_srtdeel_key;
|
||
END IF;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.bes_discipline || '/' || rec.bes_srtgroep || '/' || rec.bes_srtdeel || ')';
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT ( * ), MIN(bes_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM bes_kenmerk
|
||
WHERE bes_srtkenmerk_key = v_srtkenmerk_key
|
||
AND bes_kenmerk_niveau = rec.kenmerk_niveau
|
||
AND bes_kenmerk_type = rec.kenmerk_type
|
||
AND bes_srtinstallatie_key = v_srtinstallatie_key
|
||
AND (bes_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
OR (rec.kenmerk_omschr IS NULL AND bes_kenmerk_omschrijving IS NULL));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO bes_kenmerk (
|
||
bes_srtkenmerk_key,
|
||
bes_srtinstallatie_key,
|
||
bes_kenmerk_niveau,
|
||
bes_kenmerk_type,
|
||
bes_kenmerk_verplicht,
|
||
bes_kenmerk_groep,
|
||
bes_kenmerk_rolcode,
|
||
bes_kenmerk_volgnummer,
|
||
bes_kenmerk_default,
|
||
bes_kenmerk_verwijder,
|
||
bes_kenmerk_toonbaar,
|
||
bes_kenmerk_uniek,
|
||
bes_kenmerk_hint,
|
||
bes_kenmerk_regexp,
|
||
bes_kenmerk_show_expr,
|
||
bes_kenmerk_code,
|
||
bes_kenmerk_omschrijving
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_srtinstallatie_key,
|
||
rec.kenmerk_niveau,
|
||
rec.kenmerk_type,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
rec.kenmerk_default,
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr
|
||
)
|
||
RETURNING bes_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || v_desc;
|
||
UPDATE bes_kenmerk
|
||
SET bes_srtkenmerk_key = v_srtkenmerk_key,
|
||
bes_srtinstallatie_key = v_srtinstallatie_key,
|
||
bes_kenmerk_niveau = rec.kenmerk_niveau,
|
||
bes_kenmerk_type = rec.kenmerk_type,
|
||
bes_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
bes_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
bes_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
bes_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
bes_kenmerk_default = rec.kenmerk_default,
|
||
bes_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
bes_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
bes_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
bes_kenmerk_hint = rec.kenmerk_hint,
|
||
bes_kenmerk_regexp = rec.kenmerk_regexp,
|
||
bes_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
bes_kenmerk_code = rec.kenmerk_code,
|
||
bes_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
WHERE bes_kenmerk_key = v_kenmerk_key
|
||
AND bes_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
WHEN 'MLD' THEN
|
||
-- Bepaal vakgroeptype / vakgroep / stdmelding / opdrachttype
|
||
v_srtdiscipline_key := NULL;
|
||
v_discipline_key := NULL;
|
||
v_stdmelding_key := NULL;
|
||
v_typeopdr_key := NULL;
|
||
|
||
IF rec.mld_srtdiscipline IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen srtdiscipline ' || rec.mld_srtdiscipline;
|
||
SELECT ins_srtdiscipline_key
|
||
INTO v_srtdiscipline_key
|
||
FROM ins_srtdiscipline
|
||
WHERE ins_srtdiscipline_verwijder IS NULL
|
||
AND ins_srtdiscipline_omschrijving = rec.mld_srtdiscipline;
|
||
v_stdmelding_key := v_srtdiscipline_key;
|
||
END IF;
|
||
|
||
IF rec.mld_discipline IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen discipline ' || rec.mld_srtdiscipline || '/' || rec.mld_discipline;
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM mld_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_srtdiscipline_key = v_srtdiscipline_key
|
||
AND ins_discipline_omschrijving = rec.mld_discipline;
|
||
v_stdmelding_key := v_discipline_key;
|
||
END IF;
|
||
|
||
IF rec.mld_stdmelding IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen stdmelding ' || rec.mld_srtdiscipline || '/' || rec.mld_discipline || '/' || rec.mld_stdmelding;
|
||
SELECT mld_stdmelding_key
|
||
INTO v_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_verwijder IS NULL
|
||
AND mld_ins_discipline_key = v_discipline_key
|
||
AND mld_stdmelding_omschrijving = rec.mld_stdmelding;
|
||
END IF;
|
||
|
||
IF rec.mld_typeopdr IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen typeopdr ' || rec.mld_typeopdr;
|
||
SELECT mld_typeopdr_key
|
||
INTO v_typeopdr_key
|
||
FROM mld_typeopdr
|
||
WHERE mld_typeopdr_omschrijving = rec.mld_typeopdr;
|
||
END IF;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' [' || v_srtkenmerk_key || '] (' || rec.mld_srtdiscipline || '/' || rec.mld_discipline || '/' || rec.mld_stdmelding || ' - ' || rec.mld_typeopdr || ')';
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT ( * ), MIN(mld_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM mld_kenmerk
|
||
WHERE mld_srtkenmerk_key = v_srtkenmerk_key
|
||
AND mld_kenmerk_niveau = rec.kenmerk_niveau
|
||
AND mld_kenmerk_groep = rec.kenmerk_groep
|
||
AND (mld_stdmelding_key = v_stdmelding_key
|
||
OR mld_typeopdr_key = v_typeopdr_key
|
||
OR (mld_stdmelding_key IS NULL AND mld_typeopdr_key IS NULL)
|
||
)
|
||
AND (mld_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
OR (rec.kenmerk_omschr IS NULL AND mld_kenmerk_omschrijving IS NULL));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO mld_kenmerk (
|
||
mld_srtkenmerk_key,
|
||
mld_stdmelding_key,
|
||
mld_typeopdr_key,
|
||
mld_kenmerk_niveau,
|
||
mld_kenmerk_verplicht,
|
||
mld_kenmerk_groep,
|
||
mld_kenmerk_rolcode,
|
||
mld_kenmerk_volgnummer,
|
||
mld_kenmerk_default,
|
||
mld_kenmerk_verwijder,
|
||
mld_kenmerk_toonbaar,
|
||
mld_kenmerk_uniek,
|
||
mld_kenmerk_hint,
|
||
mld_kenmerk_regexp,
|
||
mld_kenmerk_show_expr,
|
||
mld_kenmerk_code,
|
||
mld_kenmerk_omschrijving,
|
||
mld_kenmerk_verplicht_status,
|
||
mld_kenmerk_onderbreken,
|
||
mld_kenmerk_obligation_fill
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_stdmelding_key,
|
||
v_typeopdr_key,
|
||
rec.kenmerk_niveau,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
rec.kenmerk_default,
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr,
|
||
fac.safe_to_number (rec.kenmerk_extra_1),
|
||
fac.safe_to_number (rec.kenmerk_extra_2),
|
||
fac.safe_to_number (rec.kenmerk_extra_3)
|
||
)
|
||
RETURNING mld_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || '[' || v_kenmerk_key || ']' || ' Gegevens:' || v_stdmelding_key || ',' || v_srtkenmerk_key || ',' || rec.kenmerk_niveau || ',' || v_desc;
|
||
UPDATE mld_kenmerk
|
||
SET mld_srtkenmerk_key = v_srtkenmerk_key,
|
||
mld_stdmelding_key = v_stdmelding_key,
|
||
mld_typeopdr_key = v_typeopdr_key,
|
||
mld_kenmerk_niveau = rec.kenmerk_niveau,
|
||
mld_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
mld_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
mld_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
mld_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
mld_kenmerk_default = rec.kenmerk_default,
|
||
mld_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
mld_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
mld_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
mld_kenmerk_hint = rec.kenmerk_hint,
|
||
mld_kenmerk_regexp = rec.kenmerk_regexp,
|
||
mld_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
mld_kenmerk_code = rec.kenmerk_code,
|
||
mld_kenmerk_omschrijving = rec.kenmerk_omschr,
|
||
mld_kenmerk_verplicht_status = fac.safe_to_number (rec.kenmerk_extra_1),
|
||
mld_kenmerk_onderbreken = fac.safe_to_number (rec.kenmerk_extra_2),
|
||
mld_kenmerk_obligation_fill = fac.safe_to_number (rec.kenmerk_extra_3)
|
||
WHERE mld_kenmerk_key = v_kenmerk_key
|
||
AND mld_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
WHEN 'RES' THEN
|
||
-- Bepaal activiteit
|
||
v_activiteit_key := NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen activiteit ' || rec.res_srtactiviteit || '/' || rec.res_activiteit;
|
||
SELECT res_activiteit_key
|
||
INTO v_activiteit_key
|
||
FROM res_srtactiviteit rsa, res_activiteit ra
|
||
WHERE res_srtactiviteit_verwijder IS NULL
|
||
AND res_activiteit_verwijder IS NULL
|
||
AND rsa.res_srtactiviteit_key = ra.res_srtactiviteit_key
|
||
AND rsa.res_srtactiviteit_omschrijving = rec.res_srtactiviteit
|
||
AND ra.res_activiteit_omschrijving = rec.res_activiteit;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.res_srtactiviteit || '/' || rec.res_activiteit || ')';
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT ( * ), MIN(res_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM res_kenmerk
|
||
WHERE res_srtkenmerk_key = v_srtkenmerk_key
|
||
AND res_activiteit_key = v_activiteit_key
|
||
AND (res_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
OR (rec.kenmerk_omschr IS NULL AND res_kenmerk_omschrijving IS NULL));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO res_kenmerk (
|
||
res_srtkenmerk_key,
|
||
res_activiteit_key,
|
||
res_kenmerk_niveau,
|
||
res_kenmerk_verplicht,
|
||
res_kenmerk_groep,
|
||
res_kenmerk_rolcode,
|
||
res_kenmerk_volgnummer,
|
||
res_kenmerk_default,
|
||
res_kenmerk_verwijder,
|
||
res_kenmerk_toonbaar,
|
||
res_kenmerk_uniek,
|
||
res_kenmerk_hint,
|
||
res_kenmerk_regexp,
|
||
res_kenmerk_show_expr,
|
||
res_kenmerk_code,
|
||
res_kenmerk_omschrijving
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_activiteit_key,
|
||
rec.kenmerk_niveau,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
rec.kenmerk_default,
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr
|
||
)
|
||
RETURNING res_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || v_desc;
|
||
UPDATE res_kenmerk
|
||
SET res_srtkenmerk_key = v_srtkenmerk_key,
|
||
res_activiteit_key = v_activiteit_key,
|
||
res_kenmerk_niveau = rec.kenmerk_niveau,
|
||
res_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
res_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
res_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
res_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
res_kenmerk_default = rec.kenmerk_default,
|
||
res_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
res_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
res_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
res_kenmerk_hint = rec.kenmerk_hint,
|
||
res_kenmerk_regexp = rec.kenmerk_regexp,
|
||
res_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
res_kenmerk_code = rec.kenmerk_code,
|
||
res_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
WHERE res_kenmerk_key = v_kenmerk_key
|
||
AND res_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
WHEN 'CNT' THEN
|
||
-- Bepaal contractsoort
|
||
v_discipline_key := NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen contractsoort ' || rec.cnt_discipline;
|
||
IF (rec.cnt_discipline IS NOT NULL OR rec.cnt_discipline != '')
|
||
THEN
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_omschrijving = rec.cnt_discipline;
|
||
END IF;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.cnt_discipline || ')';
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT ( * ), MIN(cnt_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM cnt_kenmerk
|
||
WHERE cnt_srtkenmerk_key = v_srtkenmerk_key
|
||
AND ( (cnt_srtcontract_key = v_discipline_key)
|
||
OR (v_discipline_key IS NULL AND cnt_srtcontract_key IS NULL)
|
||
)
|
||
AND ( (cnt_kenmerk_omschrijving = rec.kenmerk_omschr)
|
||
OR (rec.kenmerk_omschr IS NULL AND cnt_kenmerk_omschrijving IS NULL)
|
||
);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO cnt_kenmerk (
|
||
cnt_srtkenmerk_key,
|
||
cnt_srtcontract_key,
|
||
cnt_kenmerk_niveau,
|
||
cnt_kenmerk_verplicht,
|
||
cnt_kenmerk_groep,
|
||
cnt_kenmerk_toonbaar,
|
||
cnt_kenmerk_rolcode,
|
||
cnt_kenmerk_volgnummer,
|
||
cnt_kenmerk_uniek,
|
||
cnt_kenmerk_verwijder,
|
||
cnt_kenmerk_default,
|
||
cnt_kenmerk_hint,
|
||
cnt_kenmerk_regexp,
|
||
cnt_kenmerk_show_expr,
|
||
cnt_kenmerk_code,
|
||
cnt_kenmerk_omschrijving
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_discipline_key,
|
||
rec.kenmerk_niveau,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
rec.kenmerk_default,
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr
|
||
)
|
||
RETURNING cnt_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || v_desc;
|
||
UPDATE cnt_kenmerk
|
||
SET cnt_srtkenmerk_key = v_srtkenmerk_key,
|
||
cnt_srtcontract_key = v_discipline_key,
|
||
cnt_kenmerk_niveau = rec.kenmerk_niveau,
|
||
cnt_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
cnt_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
cnt_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
cnt_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
cnt_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
cnt_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
cnt_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
cnt_kenmerk_default = rec.kenmerk_default,
|
||
cnt_kenmerk_hint = rec.kenmerk_hint,
|
||
cnt_kenmerk_regexp = rec.kenmerk_regexp,
|
||
cnt_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
cnt_kenmerk_code = rec.kenmerk_code,
|
||
cnt_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
WHERE cnt_kenmerk_key = v_kenmerk_key
|
||
AND cnt_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
|
||
|
||
WHEN 'INS' THEN
|
||
|
||
|
||
IF rec.kenmerk_niveau = 'C'
|
||
THEN
|
||
-- Kenmerk is inspectie-gerelateerd (dus via ins_srtcontrole)
|
||
-- Bepalen van soort controle, dat is op basis van de omschrijving van soort controle in kolom ins_srtgroep, icm taakcategorie kolom rec.ins_discipline
|
||
v_errormsg := 'Fout bij bepalen soort controle ' || rec.ins_discipline || ' - ' || rec.ins_srtgroep;
|
||
SELECT ins_srtcontrole_key
|
||
INTO v_srtinstallatie_key
|
||
FROM ins_srtcontrole isc, ctr_discipline cd
|
||
WHERE isc.ins_srtcontrole_omschrijving = rec.ins_srtgroep
|
||
AND isc.ctr_discipline_key = cd.ins_discipline_key
|
||
AND cd.ins_discipline_omschrijving = rec.ins_discipline;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.ins_discipline || '/' || rec.ins_srtgroep || ')';
|
||
ELSE
|
||
-- Kenmerk is object-gerelateerd (dus via ins_discipline, ins_srtgroep of ins_srtdeel)
|
||
|
||
-- Bepaal discipline / (soort)groep / objectsoort
|
||
v_errormsg := 'Fout bij bepalen discipline ' || rec.ins_discipline;
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM ins_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_omschrijving = rec.ins_discipline;
|
||
v_srtinstallatie_key := v_discipline_key;
|
||
|
||
IF rec.ins_srtgroep IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij bepalen groep ' || rec.ins_discipline || '/' || rec.ins_srtgroep;
|
||
SELECT ins_srtgroep_key
|
||
INTO v_srtgroep_key
|
||
FROM ins_srtgroep
|
||
WHERE ins_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = v_discipline_key
|
||
AND ins_srtgroep_omschrijving = rec.ins_srtgroep;
|
||
v_srtinstallatie_key := v_srtgroep_key;
|
||
END IF;
|
||
|
||
IF rec.ins_srtdeel IS NOT NULL THEN
|
||
v_errormsg := 'Fout bij objectsoort ' || rec.ins_discipline || '/' || rec.ins_srtgroep || '/' || rec.ins_srtdeel;
|
||
SELECT ins_srtdeel_key
|
||
INTO v_srtdeel_key
|
||
FROM ins_srtdeel
|
||
WHERE ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtgroep_key = v_srtgroep_key
|
||
AND ins_srtdeel_omschrijving = rec.ins_srtdeel;
|
||
v_srtinstallatie_key := v_srtdeel_key;
|
||
END IF;
|
||
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.ins_discipline || '/' || rec.ins_srtgroep || '/' || rec.ins_srtdeel || ')';
|
||
|
||
END IF;
|
||
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT ( * ), MIN(ins_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM ins_kenmerk
|
||
WHERE ins_srtkenmerk_key = v_srtkenmerk_key
|
||
AND ins_kenmerk_niveau = rec.kenmerk_niveau
|
||
AND ins_kenmerk_bewerkniveau = rec.kenmerk_type
|
||
AND ins_srtinstallatie_key = v_srtinstallatie_key
|
||
AND (ins_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
OR (rec.kenmerk_omschr IS NULL AND ins_kenmerk_omschrijving IS NULL))
|
||
AND ins_kenmerk_verwijder IS NULL; -- MB: Let op, deze verbetering in de vorm van extra conditie bij INS erbij gezet,
|
||
-- Is niet bij de andere (RES,MLD,BES,CNT) takken aangepast. Kan tzt eventueel indien hier meldingen over komen.
|
||
-- Dit zorgt ervoor dat een verwijderd kenmerk in doel met dezelfde kenmerksoort NIET wordt beschouwd als kenmerk bestaat al, want dan wordt een update geprobeerd die faalt.
|
||
-- Nu wordt een nieuw kenmerk van die soort aangemaakt. Zie details in call UWVA#32742
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO ins_kenmerk (
|
||
ins_srtkenmerk_key,
|
||
ins_srtinstallatie_key,
|
||
ins_kenmerk_niveau,
|
||
ins_kenmerk_bewerkniveau,
|
||
ins_kenmerk_verplicht,
|
||
ins_kenmerk_groep,
|
||
ins_kenmerk_rolcode,
|
||
ins_kenmerk_volgnummer,
|
||
ins_kenmerk_default,
|
||
ins_kenmerk_verwijder,
|
||
ins_kenmerk_toonbaar,
|
||
ins_kenmerk_uniek,
|
||
ins_kenmerk_hint,
|
||
ins_kenmerk_regexp,
|
||
ins_kenmerk_show_expr,
|
||
ins_kenmerk_code,
|
||
ins_kenmerk_omschrijving,
|
||
ins_kenmerk_meetwaarde,
|
||
ins_kenmerk_wissen
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_srtinstallatie_key,
|
||
rec.kenmerk_niveau,
|
||
rec.kenmerk_type,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
rec.kenmerk_default,
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr,
|
||
fac.safe_to_number (rec.kenmerk_extra_1),
|
||
fac.safe_to_number (rec.kenmerk_extra_2)
|
||
)
|
||
RETURNING ins_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || v_desc;
|
||
UPDATE ins_kenmerk
|
||
SET ins_srtkenmerk_key = v_srtkenmerk_key,
|
||
ins_srtinstallatie_key = v_srtinstallatie_key,
|
||
ins_kenmerk_niveau = rec.kenmerk_niveau,
|
||
ins_kenmerk_bewerkniveau = rec.kenmerk_type,
|
||
ins_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
ins_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
ins_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
ins_kenmerk_volgnummer = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
ins_kenmerk_default = rec.kenmerk_default,
|
||
ins_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
ins_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
ins_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
ins_kenmerk_hint = rec.kenmerk_hint,
|
||
ins_kenmerk_regexp = rec.kenmerk_regexp,
|
||
ins_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
ins_kenmerk_code = rec.kenmerk_code,
|
||
ins_kenmerk_omschrijving = rec.kenmerk_omschr,
|
||
ins_kenmerk_meetwaarde = fac.safe_to_number (rec.kenmerk_extra_1),
|
||
ins_kenmerk_wissen = fac.safe_to_number (rec.kenmerk_extra_2)
|
||
WHERE ins_kenmerk_key = v_kenmerk_key
|
||
AND ins_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
|
||
WHEN 'FIN' THEN
|
||
-- Bestaat dit kenmerk al?
|
||
v_desc := rec.kenmerk_omschr;
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
SELECT COUNT (*), MIN(fin_kenmerk_key)
|
||
INTO v_count, v_kenmerk_key
|
||
FROM fin_kenmerk
|
||
WHERE (fin_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
OR (rec.kenmerk_omschr IS NULL AND fin_kenmerk_omschrijving IS NULL));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Bestaat nog niet --> aanmaken
|
||
v_errormsg := 'Fout bij toevoegen kenmerk ' || v_desc;
|
||
INSERT INTO fin_kenmerk (
|
||
fin_kenmerk_kenmerktype,
|
||
fin_kenmerk_systeem,
|
||
fin_kenmerk_lengte,
|
||
fin_kenmerk_dec,
|
||
fin_kenmerk_nmin,
|
||
fin_kenmerk_nmax,
|
||
fin_kenmerk_dimensie,
|
||
fin_kenmerk_type,
|
||
fin_kenmerk_verplicht,
|
||
fin_kenmerk_rolcode,
|
||
fin_kenmerk_volgnr,
|
||
fin_kenmerk_groep,
|
||
fin_kenmerk_default,
|
||
fin_kenmerk_verwijder,
|
||
fin_kenmerk_toonbaar,
|
||
fin_kenmerk_uniek,
|
||
fin_kenmerk_hint,
|
||
fin_kenmerk_regexp,
|
||
fin_kenmerk_show_expr,
|
||
fin_kenmerk_code,
|
||
fin_kenmerk_omschrijving
|
||
)
|
||
VALUES (
|
||
rec.srtkenmerk_kenmerktype,
|
||
rec.srtkenmerk_systeem,
|
||
rec.srtkenmerk_lengte,
|
||
rec.srtkenmerk_dec,
|
||
rec.srtkenmerk_nmin,
|
||
rec.srtkenmerk_nmax,
|
||
rec.srtkenmerk_dimensie,
|
||
rec.kenmerk_type,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
fac.safe_to_number (rec.kenmerk_groep),
|
||
rec.kenmerk_default,
|
||
TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fac.safe_to_number (rec.kenmerk_uniek),
|
||
rec.kenmerk_hint,
|
||
rec.kenmerk_regexp,
|
||
rec.kenmerk_show_expr,
|
||
rec.kenmerk_code,
|
||
rec.kenmerk_omschr
|
||
)
|
||
RETURNING fin_kenmerk_key
|
||
INTO v_kenmerk_key;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk toegevoegd', v_desc || ' (' || v_kenmerk_key || ')');
|
||
ELSE
|
||
-- Bestaat al wel --> updaten (dat kan ook verwijderen zijn!)
|
||
v_errormsg := 'Fout bij bijwerken kenmerk ' || v_desc;
|
||
UPDATE fin_kenmerk
|
||
SET fin_kenmerk_kenmerktype = rec.srtkenmerk_kenmerktype,
|
||
fin_kenmerk_systeem = rec.srtkenmerk_systeem,
|
||
fin_kenmerk_lengte = rec.srtkenmerk_lengte,
|
||
fin_kenmerk_dec = rec.srtkenmerk_dec,
|
||
fin_kenmerk_nmin = rec.srtkenmerk_nmin,
|
||
fin_kenmerk_nmax = rec.srtkenmerk_nmax,
|
||
fin_kenmerk_dimensie = rec.srtkenmerk_dimensie,
|
||
fin_kenmerk_type = rec.kenmerk_type,
|
||
fin_kenmerk_verplicht = fac.safe_to_number (rec.kenmerk_verplicht),
|
||
fin_kenmerk_groep = fac.safe_to_number (rec.kenmerk_groep),
|
||
fin_kenmerk_rolcode = fac.safe_to_number (rec.kenmerk_rolcode),
|
||
fin_kenmerk_volgnr = fac.safe_to_number (rec.kenmerk_volgnummer),
|
||
fin_kenmerk_default = rec.kenmerk_default,
|
||
fin_kenmerk_verwijder = TO_DATE (rec.kenmerk_verwijder, 'YYYY-MM-DD HH24:MI:SS'),
|
||
fin_kenmerk_toonbaar = fac.safe_to_number (rec.kenmerk_toonbaar),
|
||
fin_kenmerk_uniek = fac.safe_to_number (rec.kenmerk_uniek),
|
||
fin_kenmerk_hint = rec.kenmerk_hint,
|
||
fin_kenmerk_regexp = rec.kenmerk_regexp,
|
||
fin_kenmerk_show_expr = rec.kenmerk_show_expr,
|
||
fin_kenmerk_code = rec.kenmerk_code,
|
||
fin_kenmerk_omschrijving = rec.kenmerk_omschr
|
||
WHERE fin_kenmerk_key = v_kenmerk_key
|
||
AND fin_kenmerk_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (p_import_key, 'I', 'Kenmerk bijgewerkt', v_desc || ' (' || v_kenmerk_key || ')');
|
||
END IF;
|
||
|
||
|
||
|
||
END CASE;
|
||
END;
|
||
END LOOP;
|
||
|
||
--------------------------------------------------------------------------------
|
||
|
||
-- Als we hier uitkomen, is alles goed gegaan en kunnen we committen
|
||
COMMIT;
|
||
-- Als er ergens een fout optreedt, dan worden alle voorgaande mutaties teruggedraaid en wordt er alleen de logging gecommit
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- TODO: Zoiets?
|
||
ROLLBACK;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
/
|
||
|
||
|
||
------------- INSPECTIEDEFINITIES -------------------
|
||
CREATE OR REPLACE PROCEDURE fac_import_inspectie (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_srtdeel_code VARCHAR2 (255); -- C10
|
||
v_ins_srtcontrole_omschrijving VARCHAR2 (255); -- C60
|
||
v_ins_srtcontrole_info VARCHAR2 (1000); -- C320
|
||
v_ins_srtcontrole_periode VARCHAR2 (255); -- N6,2
|
||
v_ins_srtcontrole_mode VARCHAR2 (255); -- N1: 0=moment-modus of 1=interval-modus
|
||
v_ins_srtcontrole_eenheid VARCHAR2 (255); -- N1: 0=uurlijks, 1=dagelijks, 2=wekelijk, 3=maandelijk, 4=jaarlijks, null=niet
|
||
v_ins_srtcontrole_bits VARCHAR2 (255); -- N4: details, afhankelijk van de mode (mag best null zijn)
|
||
v_ctr_discipline_omschrijving VARCHAR2 (255); -- C60
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_inspectie;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
COMMIT;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_info);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_periode);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_eenheid);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_mode);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_bits);
|
||
fac.imp_getfield (v_newline, c_delim, v_ctr_discipline_omschrijving);
|
||
|
||
v_aanduiding := '|' || v_ins_discipline_omschrijving
|
||
|| '|' || v_ins_srtgroep_omschrijving
|
||
|| '|' || v_ins_srtdeel_code
|
||
|| '|' || v_ins_srtcontrole_omschrijving
|
||
|| '|' || v_ctr_discipline_omschrijving
|
||
|| '| ';
|
||
|
||
-- 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 fac_check_import_header(v_ins_discipline_omschrijving, 'DISCIPLINEOMSCHRIJVING')
|
||
AND fac_check_import_header(v_ins_srtgroep_omschrijving, 'GROEPSOORTOMSCHRIJVING')
|
||
AND fac_check_import_header(v_ins_srtdeel_code, 'OBJECTSOORTCODE')
|
||
AND fac_check_import_header(v_ins_srtcontrole_omschrijving, 'CONTROLE OMSCHRIJVING')
|
||
AND fac_check_import_header(v_ins_srtcontrole_info, 'CONTROLE INFORMATIE')
|
||
AND fac_check_import_header(v_ins_srtcontrole_periode, 'CONTROLE PERIODE')
|
||
AND fac_check_import_header(v_ins_srtcontrole_eenheid, 'EENHEID')
|
||
AND fac_check_import_header(v_ins_srtcontrole_mode, 'CONTROLE MODE')
|
||
AND fac_check_import_header(v_ins_srtcontrole_bits, 'BITS')
|
||
AND fac_check_import_header(v_ctr_discipline_omschrijving, 'TAAKCATEGORIE')
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving);
|
||
|
||
IF LENGTH (v_ins_discipline_omschrijving) > 60
|
||
THEN
|
||
v_ins_discipline_omschrijving :=
|
||
SUBSTR (TRIM (v_ins_discipline_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Disciplineomschrijving wordt afgebroken tot ['
|
||
|| v_ins_discipline_omschrijving
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
|
||
|
||
IF LENGTH (v_ins_srtgroep_omschrijving) > 60
|
||
THEN
|
||
v_ins_srtgroep_omschrijving :=
|
||
SUBSTR (TRIM (v_ins_srtgroep_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Groepsoortomschrijving wordt afgebroken tot ['
|
||
|| v_ins_srtgroep_omschrijving
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
|
||
|
||
IF LENGTH (v_ins_srtdeel_code) > 10
|
||
THEN
|
||
v_ins_srtdeel_code := SUBSTR (TRIM (v_ins_srtdeel_code), 1, 10);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Objectsoortcode wordt afgebroken tot [' || v_ins_srtdeel_code || ']');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_omschrijving := TRIM (v_ins_srtcontrole_omschrijving);
|
||
|
||
IF LENGTH (v_ins_srtcontrole_omschrijving) > 60
|
||
THEN
|
||
v_ins_srtcontrole_omschrijving :=
|
||
SUBSTR (TRIM (v_ins_srtcontrole_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle omschrijving wordt afgebroken tot ['
|
||
|| v_ins_srtcontrole_omschrijving
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_info := TRIM (v_ins_srtcontrole_info);
|
||
|
||
IF LENGTH (v_ins_srtcontrole_info) > 320
|
||
THEN
|
||
v_ins_srtcontrole_info := SUBSTR (TRIM (v_ins_srtcontrole_info), 1, 320);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle informatie wordt afgebroken tot ['
|
||
|| v_ins_srtcontrole_info
|
||
|| ']');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_periode := TRIM (v_ins_srtcontrole_periode);
|
||
|
||
IF ( v_ins_srtcontrole_periode IS NULL
|
||
OR LENGTH (v_ins_srtcontrole_periode) > 7
|
||
OR VALIDATE_CONVERSION(v_ins_srtcontrole_periode AS NUMBER) = 0
|
||
)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle Periode ['
|
||
|| v_ins_srtcontrole_periode
|
||
|| '] is niet ingevuld, te lang of geen getal');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_eenheid := TRIM (v_ins_srtcontrole_eenheid);
|
||
|
||
IF v_ins_srtcontrole_eenheid NOT IN ('0','1','2','3','4')
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle Eenheid ['
|
||
|| v_ins_srtcontrole_eenheid
|
||
|| '] is niet ingevuld of heeft een ongeldige waarde');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_mode := TRIM (v_ins_srtcontrole_mode);
|
||
|
||
IF v_ins_srtcontrole_mode NOT IN ('0','1')
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle Mode ['
|
||
|| v_ins_srtcontrole_mode
|
||
|| '] is niet ingevuld of heeft een ongeldige waarde');
|
||
END IF;
|
||
|
||
--
|
||
v_ins_srtcontrole_bits := TRIM (v_ins_srtcontrole_bits);
|
||
|
||
IF ( LENGTH (v_ins_srtcontrole_bits) > 4
|
||
OR VALIDATE_CONVERSION(v_ins_srtcontrole_bits AS NUMBER) = 0
|
||
)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle Bits ['
|
||
|| v_ins_srtcontrole_bits
|
||
|| '] is te lang of geen getal');
|
||
END IF;
|
||
|
||
v_ctr_discipline_omschrijving := TRIM (v_ctr_discipline_omschrijving);
|
||
IF LENGTH (v_ctr_discipline_omschrijving) > 60
|
||
THEN
|
||
v_ctr_discipline_omschrijving := SUBSTR (TRIM( v_ctr_discipline_omschrijving), 1, 60);
|
||
fac.imp_writelog ( p_import_key, 'W', v_aanduiding
|
||
, 'Taakcategorie wordt afgebroken tot [' || v_ctr_discipline_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
INSERT INTO fac_imp_inspectie (ins_discipline_omschrijving,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_code,
|
||
ins_srtcontrole_omschrijving,
|
||
ins_srtcontrole_info,
|
||
ins_srtcontrole_periode,
|
||
ins_srtcontrole_eenheid,
|
||
ins_srtcontrole_mode,
|
||
ins_srtcontrole_bits,
|
||
ctr_discipline_omschrijving)
|
||
VALUES (v_ins_discipline_omschrijving,
|
||
v_ins_srtgroep_omschrijving,
|
||
v_ins_srtdeel_code,
|
||
v_ins_srtcontrole_omschrijving,
|
||
v_ins_srtcontrole_info,
|
||
v_ins_srtcontrole_periode,
|
||
v_ins_srtcontrole_eenheid,
|
||
v_ins_srtcontrole_mode,
|
||
v_ins_srtcontrole_bits,
|
||
v_ctr_discipline_omschrijving);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_INSPECTIE.');
|
||
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',
|
||
'Inspectie controles: aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inspectie controles: aantal 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, 100);
|
||
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Inleesproces inspecties afgebroken!');
|
||
END fac_import_inspectie;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_inspectie (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
data_is_valid NUMBER;
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
|
||
v_ins_srtinstallatie_key NUMBER (10);
|
||
v_ins_srtcontrole_niveau VARCHAR (1);
|
||
v_week_bits NUMBER (10);
|
||
v_maand_bits NUMBER (10);
|
||
v_ctr_discipline_key NUMBER (10);
|
||
|
||
CURSOR c_inspecties
|
||
IS
|
||
SELECT * FROM fac_imp_inspectie;
|
||
-- MAIN
|
||
BEGIN
|
||
FOR rec_ins IN c_inspecties
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := rec_ins.ins_discipline_omschrijving
|
||
|| ' - ' || rec_ins.ins_srtgroep_omschrijving
|
||
|| '-' || rec_ins.ins_srtdeel_code
|
||
|| ' - ' || rec_ins.ctr_discipline_omschrijving;
|
||
v_errorhint := 'Fout bij bepalen discipline';
|
||
data_is_valid := 1;
|
||
|
||
IF rec_ins.ins_discipline_omschrijving IS NULL
|
||
THEN
|
||
data_is_valid := 0;
|
||
fac.imp_writelog ( p_import_key, 'E'
|
||
, v_aanduiding
|
||
, 'Discipline mag niet leeg zijn: inspectie wordt niet toegevoegd.');
|
||
ELSE
|
||
SELECT ins_discipline_key, 'D'
|
||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||
FROM ins_tab_discipline
|
||
WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec_ins.ins_discipline_omschrijving)
|
||
AND ins_discipline_module = 'INS'
|
||
AND ins_discipline_verwijder IS NULL;
|
||
|
||
IF rec_ins.ins_srtgroep_omschrijving IS NOT NULL
|
||
THEN
|
||
v_errorhint := 'Fout bij bepalen groepsoort';
|
||
SELECT ins_srtgroep_key, 'G'
|
||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||
FROM ins_srtgroep
|
||
WHERE UPPER (ins_srtgroep_omschrijving) = UPPER (rec_ins.ins_srtgroep_omschrijving)
|
||
AND ins_srtgroep_module = 'INS'
|
||
AND ins_srtgroep_verwijder IS NULL
|
||
AND ins_discipline_key = v_ins_srtinstallatie_key;
|
||
|
||
v_errorhint := 'Fout bij bepalen deelsoort';
|
||
IF rec_ins.ins_srtdeel_code IS NOT NULL
|
||
THEN
|
||
SELECT ins_srtdeel_key, 'S'
|
||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||
FROM ins_srtdeel
|
||
WHERE UPPER (ins_srtdeel_code) = UPPER (rec_ins.ins_srtdeel_code)
|
||
AND ins_srtdeel_module = 'INS'
|
||
AND ins_srtdeel_verwijder IS NULL
|
||
AND ins_srtgroep_key = v_ins_srtinstallatie_key;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen bits';
|
||
-- Alleen de gezette bits van de dagen van de week.
|
||
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 127), 0)
|
||
INTO v_week_bits
|
||
FROM DUAL;
|
||
-- Alleen de gezette bits van de y-ste xxxdag van de maand.
|
||
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 256 + 512 + 1024) / 256, 0)
|
||
INTO v_maand_bits
|
||
FROM DUAL;
|
||
|
||
v_errorhint := 'Fout bij bepalen takcategorie';
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_ctr_discipline_key
|
||
FROM ctr_discipline
|
||
WHERE UPPER (ins_discipline_omschrijving) = UPPER(rec_ins.ctr_discipline_omschrijving)
|
||
AND ins_discipline_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
data_is_valid := 0;
|
||
v_errorhint := 'Taakcategorie [' || rec_ins.ctr_discipline_omschrijving || '] bestaat niet';
|
||
END;
|
||
|
||
|
||
IF ( rec_ins.ins_srtcontrole_omschrijving IS NOT NULL
|
||
AND rec_ins.ins_srtcontrole_periode IS NOT NULL
|
||
AND ( (rec_ins.ins_srtcontrole_eenheid = 0)
|
||
OR (rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) = 0)
|
||
)
|
||
AND rec_ins.ins_srtcontrole_eenheid IS NOT NULL
|
||
AND rec_ins.ins_srtcontrole_mode IS NOT NULL
|
||
AND ( (rec_ins.ins_srtcontrole_mode = 1)
|
||
OR (rec_ins.ins_srtcontrole_mode = 0 AND v_week_bits > 0 AND v_maand_bits > 0)
|
||
)
|
||
)
|
||
THEN
|
||
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
|
||
ins_srtcontrole_niveau,
|
||
ins_srtcontrole_omschrijving,
|
||
ins_srtcontrole_info,
|
||
ins_srtcontrole_periode,
|
||
ins_srtcontrole_eenheid,
|
||
ins_srtcontrole_mode,
|
||
ins_srtcontrole_bits,
|
||
ctr_discipline_key)
|
||
VALUES (v_ins_srtinstallatie_key,
|
||
v_ins_srtcontrole_niveau,
|
||
rec_ins.ins_srtcontrole_omschrijving,
|
||
rec_ins.ins_srtcontrole_info,
|
||
rec_ins.ins_srtcontrole_periode,
|
||
rec_ins.ins_srtcontrole_eenheid,
|
||
rec_ins.ins_srtcontrole_mode,
|
||
rec_ins.ins_srtcontrole_bits,
|
||
v_ctr_discipline_key
|
||
);
|
||
ELSE
|
||
IF rec_ins.ins_srtcontrole_mode = 0 AND (v_week_bits = 0 OR v_maand_bits = 0)
|
||
THEN v_errorhint := 'Het verplichte veld "Moment" is niet (goed) ingevuld: inspectie wordt niet toegevoegd.';
|
||
ELSIF rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) > 0
|
||
THEN v_errorhint := 'Periode moet een geheel getal zijn voor dagelijkse, wekelijkse, maandelijkse en jaarlijkse taken: inspectie wordt niet toegevoegd.';
|
||
ELSE v_errorhint := '<27><>n of meerdere van de verplichte velden "Omschrijving", "Period", "Eenheid" of "Mode" zijn niet ingevuld: inspectie wordt niet toegevoegd.';
|
||
END IF;
|
||
fac.imp_writelog ( p_import_key, 'E'
|
||
, v_aanduiding
|
||
, v_errorhint);
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog ( p_import_key, 'E'
|
||
, v_aanduiding || v_errormsg
|
||
, v_errorhint);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog ( p_import_key, 'E'
|
||
, 'Importproces inspecties afgebroken!'
|
||
, v_errormsg);
|
||
END fac_update_inspectie;
|
||
/
|
||
|
||
-- AAIT#25547 - FAQ: Verbeteren kennisbank
|
||
CREATE OR REPLACE PROCEDURE fac_import_faq (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_errormsg VARCHAR2 (100);
|
||
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 VARCHAR (900);
|
||
-- De importvelden
|
||
v_fac_faq_question VARCHAR2 (4000); -- C4000 (Voor import tot 500 beperkt)
|
||
v_fac_faq_answer VARCHAR2 (4000); -- C4000
|
||
v_fac_faq_answer2 VARCHAR2 (4000); -- C4000
|
||
v_fac_faq_level VARCHAR2 (255); -- C1
|
||
v_ins_discipline_key VARCHAR2 (255); -- N10
|
||
v_mld_stdmelding_key VARCHAR2 (255); -- N10
|
||
v_fac_faq_source VARCHAR2 (255); -- C60
|
||
v_fac_faq_url VARCHAR2 (255); -- C250
|
||
v_fac_faq_datum VARCHAR2 (255); -- DATE
|
||
v_fac_faq_lang VARCHAR2 (255); -- C3
|
||
v_fac_faq_hint VARCHAR2 (1000); -- C1000 (Voor import tot 1000 beperkt)
|
||
v_fac_faq_vervaldatum VARCHAR2 (255); -- DATE
|
||
v_faq_discipline_omschrijving VARCHAR2 (255); -- N10
|
||
v_fac_faq_displaymode VARCHAR2 (255); -- N3
|
||
-- Overig:
|
||
v_ins_discipline_key2 VARCHAR2 (255); -- N10
|
||
v_mld_stdmelding_key2 VARCHAR2 (255); -- N10
|
||
v_ins_discipline_key_n NUMBER (10); -- N10
|
||
v_mld_stdmelding_key_n NUMBER (10); -- N10
|
||
v_fac_faq_displaymode_n NUMBER (3); -- N3
|
||
v_fac_faq_datum_d DATE; -- DATE
|
||
v_fac_faq_datum_v DATE; -- DATE
|
||
|
||
-- Overige velden:
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_faq;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_question);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_answer);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_answer2);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_level);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_key);
|
||
fac.imp_getfield (v_newline, c_delim, v_mld_stdmelding_key);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_source);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_url);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_datum);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_lang);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_hint);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_vervaldatum);
|
||
fac.imp_getfield (v_newline, c_delim, v_faq_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_faq_displaymode);
|
||
|
||
v_aanduiding := '['
|
||
|| SUBSTR (v_fac_faq_question, 1, 500)
|
||
|| '|'
|
||
|| v_ins_discipline_key
|
||
|| '|'
|
||
|| v_mld_stdmelding_key
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop.
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_fac_faq_question) LIKE 'VRAAG%'
|
||
AND UPPER (v_fac_faq_answer) LIKE 'ANTWOORD%'
|
||
AND UPPER (v_fac_faq_answer2) LIKE 'MEER ANTWOORD%'
|
||
AND UPPER (v_fac_faq_level) = 'ZICHTBAAR VOOR'
|
||
AND UPPER (v_ins_discipline_key) = 'VAKGROEP'
|
||
AND UPPER (v_mld_stdmelding_key) = 'MELDING'
|
||
AND UPPER (v_fac_faq_source) = 'OORSPRONG'
|
||
AND UPPER (v_fac_faq_url) LIKE 'MEER INFO%'
|
||
AND UPPER (v_fac_faq_datum) = 'PUBLICATIEDATUM'
|
||
AND UPPER (v_fac_faq_lang) = 'TAAL'
|
||
AND UPPER (v_fac_faq_hint) = 'HINT'
|
||
AND UPPER (v_fac_faq_vervaldatum) = 'VERVALDATUM'
|
||
AND UPPER (v_faq_discipline_omschrijving) = 'CATALOGUSNAAM'
|
||
AND UPPER (v_fac_faq_displaymode) = 'DISPLAYMODE'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Vraag ongeldig. Vraag heeft geen waarde of is langer dan 500 tekens';
|
||
v_fac_faq_question := TRIM (v_fac_faq_question);
|
||
|
||
IF v_fac_faq_question IS NULL OR LENGTH (v_fac_faq_question) > 500 -- Import beperking. In fac_faq tabel is dit 4000
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Antwoord ongeldig. Antwoord heeft geen waarde of is langer dan 4000 tekens';
|
||
v_fac_faq_answer := TRIM (v_fac_faq_answer);
|
||
|
||
IF v_fac_faq_answer IS NULL OR LENGTH (v_fac_faq_answer) > 4000
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Meer antwoord ongeldig. Waarde is langer dan 4000 tekens';
|
||
v_fac_faq_answer2 := TRIM(v_fac_faq_answer2);
|
||
|
||
IF LENGTH (v_fac_faq_answer2) > 4000
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Zichtbaar voor ongeldig';
|
||
v_fac_faq_level := TRIM (v_fac_faq_level);
|
||
|
||
IF v_fac_faq_level IS NULL OR
|
||
UPPER(v_fac_faq_level) NOT IN ('ZELFSERVICE', 'PROFESSIONALS', 'BEIDE')
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || '|' || v_fac_faq_level || '|' || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Vakgroep (MLD Discipline) ongeldig';
|
||
v_ins_discipline_key := LTRIM (RTRIM (v_ins_discipline_key));
|
||
v_ins_discipline_key_n := NULL;
|
||
|
||
IF LENGTH(v_ins_discipline_key) != 0
|
||
THEN
|
||
IF fac.safe_to_number (v_ins_discipline_key) IS NOT NULL
|
||
THEN
|
||
v_ins_discipline_key_n := fac.safe_to_number (v_ins_discipline_key);
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_ins_discipline_key2
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_key = v_ins_discipline_key_n
|
||
AND ins_discipline_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Vakgroep (MLD Discipline) is nieuw'
|
||
);
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Melding ongeldig';
|
||
v_mld_stdmelding_key := LTRIM (RTRIM (v_mld_stdmelding_key));
|
||
v_mld_stdmelding_key_n := NULL;
|
||
|
||
IF LENGTH(v_mld_stdmelding_key) != 0
|
||
THEN
|
||
IF fac.safe_to_number (v_mld_stdmelding_key) IS NOT NULL
|
||
THEN
|
||
v_mld_stdmelding_key_n := fac.safe_to_number (v_mld_stdmelding_key);
|
||
BEGIN
|
||
SELECT mld_stdmelding_key
|
||
INTO v_mld_stdmelding_key2
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = v_mld_stdmelding_key_n
|
||
AND mld_stdmelding_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Melding is nieuw'
|
||
);
|
||
END;
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Oorsprong ongeldig. Oorsprong is langer als 60 tekens';
|
||
v_fac_faq_source := TRIM (v_fac_faq_source);
|
||
|
||
IF v_fac_faq_source IS NOT NULL AND LENGTH (v_fac_faq_source) > 60
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Meer info ongeldig. Meer info is langer als 250 tekens';
|
||
v_fac_faq_url := TRIM (v_fac_faq_url);
|
||
|
||
IF v_fac_faq_url IS NOT NULL AND LENGTH (v_fac_faq_url) > 250
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Publicatiedatum ongeldig. Formaat datum is ddmmyyyy';
|
||
v_fac_faq_datum := TRIM (v_fac_faq_datum);
|
||
v_fac_faq_datum_d := NULL;
|
||
|
||
IF v_fac_faq_datum IS NOT NULL AND fac.safe_to_date (v_fac_faq_datum, 'dd-mm-yyyy') IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_fac_faq_datum_d := fac.safe_to_date (v_fac_faq_datum, 'dd-mm-yyyy');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Taal ongeldig. Taal is langer als 3 tekens';
|
||
v_fac_faq_lang := TRIM (v_fac_faq_lang);
|
||
|
||
IF v_fac_faq_lang IS NOT NULL AND LENGTH (v_fac_faq_lang) > 3
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Hint ongeldig. Hint heeft geen waarde of is langer als 500 tekens';
|
||
v_fac_faq_hint := TRIM (v_fac_faq_hint);
|
||
|
||
IF v_fac_faq_hint IS NOT NULL AND LENGTH (v_fac_faq_hint) > 500 -- Import beperking. In fac_faq tabel is dit 1000
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Vervaldatum ongeldig. Formaat datum is ddmmyyyy';
|
||
v_fac_faq_vervaldatum := TRIM (v_fac_faq_vervaldatum);
|
||
v_fac_faq_datum_v := NULL;
|
||
IF v_fac_faq_vervaldatum IS NOT NULL AND fac.safe_to_date (v_fac_faq_vervaldatum, 'dd-mm-yyyy') IS NULL
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!');
|
||
ELSE
|
||
v_fac_faq_datum_v := fac.safe_to_date (v_fac_faq_vervaldatum, 'dd-mm-yyyy');
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Catalogusnaam (FAQ Discipline) ongeldig';
|
||
v_faq_discipline_omschrijving := TRIM (v_faq_discipline_omschrijving);
|
||
|
||
IF LENGTH (v_faq_discipline_omschrijving) > 60
|
||
THEN
|
||
v_faq_discipline_omschrijving := SUBSTR (TRIM (v_faq_discipline_omschrijving), 1, 60);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Catalogusnaam wordt afgebroken tot ['
|
||
|| v_faq_discipline_omschrijving
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Displaymode ongeldig';
|
||
v_fac_faq_displaymode := LTRIM (RTRIM (v_fac_faq_displaymode));
|
||
v_fac_faq_displaymode_n := 3; -- +1=Altijd tonen melding, +2=Pop-up melding, +4=Altijd tonen opdracht, +8=Pop-up opdracht.
|
||
|
||
IF LENGTH(v_fac_faq_displaymode) != 0
|
||
THEN
|
||
v_fac_faq_displaymode_n := fac.safe_to_number (v_fac_faq_displaymode);
|
||
IF v_fac_faq_displaymode_n IS NOT NULL
|
||
THEN
|
||
IF v_fac_faq_displaymode_n < 0 OR v_fac_faq_displaymode_n >= 16
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel wordt overgeslagen!'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
ELSE
|
||
v_fac_faq_displaymode_n := 3;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
INSERT INTO fac_imp_faq (fac_faq_question,
|
||
fac_faq_answer,
|
||
fac_faq_answer2,
|
||
fac_faq_level,
|
||
ins_discipline_key,
|
||
mld_stdmelding_key,
|
||
fac_faq_source,
|
||
fac_faq_url,
|
||
fac_faq_datum,
|
||
fac_faq_lang,
|
||
fac_faq_hint,
|
||
fac_faq_vervaldatum,
|
||
faq_discipline_omschrijving,
|
||
fac_faq_displaymode)
|
||
VALUES (v_fac_faq_question,
|
||
v_fac_faq_answer,
|
||
v_fac_faq_answer2,
|
||
v_fac_faq_level,
|
||
v_ins_discipline_key_n,
|
||
v_mld_stdmelding_key_n,
|
||
v_fac_faq_source,
|
||
v_fac_faq_url,
|
||
v_fac_faq_datum_d,
|
||
v_fac_faq_lang,
|
||
v_fac_faq_hint,
|
||
v_fac_faq_datum_v,
|
||
v_faq_discipline_omschrijving,
|
||
v_fac_faq_displaymode_n);
|
||
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,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Fout bij toevoegen regel aan importtabel FAC_IMP_FAQ.'
|
||
);
|
||
|
||
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',
|
||
'Kennisbank/aantal ingelezen importregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kennisbank/aantal 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 kennisbank afgebroken!');
|
||
END fac_import_faq;
|
||
/
|
||
|
||
-- AAIT#25547 - FAQ: Verbeteren kennisbank
|
||
CREATE OR REPLACE PROCEDURE fac_update_faq (p_import_key IN NUMBER)
|
||
AS
|
||
v_errmes VARCHAR2 (900);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_var VARCHAR2 (100);
|
||
v_count NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
v_aanduiding VARCHAR2 (1000);
|
||
ccount NUMBER (10);
|
||
teller INTEGER;
|
||
v_fac_faq_level NUMBER (3);
|
||
v_ins_discipline_key NUMBER (10);
|
||
v_ins_stdmelding_key NUMBER (10);
|
||
v_fac_faq_discipline_key NUMBER (10);
|
||
newkey NUMBER (10);
|
||
|
||
|
||
CURSOR c_kennisbankitems
|
||
IS
|
||
SELECT * FROM fac_imp_faq;
|
||
-- MAIN
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_update := 0;
|
||
teller := 0;
|
||
|
||
FOR rec_faq IN c_kennisbankitems
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
rec_faq.fac_faq_question
|
||
|| ' - '
|
||
|| rec_faq.ins_discipline_key
|
||
|| '-'
|
||
|| rec_faq.mld_stdmelding_key;
|
||
|
||
v_errmes := 'Fout bij het toevoegen van de catalogus (FAQ ins_discipline)';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'FAQ'
|
||
AND UPPER(TRIM(ins_discipline_omschrijving)) = UPPER(TRIM(rec_faq.faq_discipline_omschrijving));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
INSERT INTO ins_tab_discipline
|
||
(ins_discipline_module,
|
||
ins_discipline_omschrijving
|
||
)
|
||
VALUES ('FAQ',
|
||
TRIM(rec_faq.faq_discipline_omschrijving)
|
||
)
|
||
RETURNING ins_discipline_key
|
||
INTO v_fac_faq_discipline_key;
|
||
ELSE
|
||
SELECT ins_discipline_key
|
||
INTO v_fac_faq_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_module = 'FAQ'
|
||
AND UPPER(TRIM(ins_discipline_omschrijving)) = UPPER(TRIM(rec_faq.faq_discipline_omschrijving));
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
IF rec_faq.fac_faq_question IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Vraag mag niet leeg zijn: kennisbankitem wordt niet toegevoegd.');
|
||
ELSIF rec_faq.fac_faq_answer IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Antwoord mag niet leeg zijn: kennisbankitem wordt niet toegevoegd.');
|
||
ELSIF rec_faq.fac_faq_level IS NULL
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Zichtbaar voor mag niet leeg zijn: kennisbankitem wordt niet toegevoegd.');
|
||
ELSIF UPPER(rec_faq.fac_faq_level) NOT IN ('ZELFSERVICE', 'PROFESSIONALS', 'BEIDE')
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Zichtbaar voor heeft geen geldige waard: kennisbankitem wordt niet toegevoegd.');
|
||
ELSE
|
||
v_errmes := 'Bepalen zichtbaar voor (level)';
|
||
SELECT flevel
|
||
INTO v_fac_faq_level
|
||
FROM (SELECT 1 flevel, 'ZELFSERVICE' ftext FROM DUAL UNION ALL
|
||
SELECT 2 flevel, 'PROFESSIONALS' ftext FROM DUAL UNION ALL
|
||
SELECT 3 flevel, 'BEIDE' ftext FROM DUAL)
|
||
WHERE ftext = UPPER(rec_faq.fac_faq_level);
|
||
|
||
v_errmes := 'Bepalen of de vakgroep (MLD ins_discipline) bestaat';
|
||
IF rec_faq.ins_discipline_key IS NOT NULL
|
||
THEN
|
||
SELECT ins_discipline_key
|
||
INTO v_ins_discipline_key
|
||
FROM ins_tab_discipline
|
||
WHERE ins_discipline_key = rec_faq.ins_discipline_key
|
||
AND ins_discipline_verwijder IS NULL;
|
||
END IF;
|
||
|
||
v_errmes := 'Bepalen of de melding (mld_stdmelding) bestaat';
|
||
IF rec_faq.mld_stdmelding_key IS NOT NULL
|
||
THEN
|
||
SELECT mld_stdmelding_key
|
||
INTO v_ins_stdmelding_key
|
||
FROM mld_stdmelding
|
||
WHERE mld_stdmelding_key = rec_faq.mld_stdmelding_key
|
||
AND mld_ins_discipline_key = rec_faq.ins_discipline_key
|
||
AND mld_stdmelding_verwijder IS NULL;
|
||
END IF;
|
||
|
||
v_errmes := 'Kijken of kennisbankitem bestaat';
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM fac_faq f
|
||
, mld_stdmeldingfaq m
|
||
WHERE f.fac_faq_key = m.fac_faq_key(+)
|
||
AND TRIM (UPPER (f.fac_faq_question)) = TRIM (UPPER (rec_faq.fac_faq_question))
|
||
AND ((m.ins_discipline_key = rec_faq.ins_discipline_key) OR ((m.ins_discipline_key IS NULL) AND (rec_faq.ins_discipline_key IS NULL)))
|
||
AND ((m.mld_stdmelding_key = rec_faq.mld_stdmelding_key) OR ((m.mld_stdmelding_key IS NULL) AND (rec_faq.mld_stdmelding_key IS NULL)));
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errmes := 'Toevoegen kennisbankitem fac_faq'
|
||
|| ' (vraag = '
|
||
|| SUBSTR(rec_faq.fac_faq_question, 1, 100)
|
||
|| '| antwoord = '
|
||
|| SUBSTR(rec_faq.fac_faq_answer, 1, 100)
|
||
|| '| regel'
|
||
|| v_count_tot
|
||
|| ')';
|
||
|
||
INSERT INTO fac_faq
|
||
(fac_faq_question,
|
||
fac_faq_answer,
|
||
fac_faq_answer2,
|
||
fac_faq_level,
|
||
fac_faq_source,
|
||
fac_faq_url,
|
||
fac_faq_datum,
|
||
fac_faq_lang,
|
||
fac_faq_hint,
|
||
fac_faq_vervaldatum,
|
||
faq_ins_discipline_key,
|
||
fac_faq_displaymode
|
||
)
|
||
VALUES (rec_faq.fac_faq_question,
|
||
rec_faq.fac_faq_answer,
|
||
rec_faq.fac_faq_answer2,
|
||
v_fac_faq_level,
|
||
rec_faq.fac_faq_source,
|
||
rec_faq.fac_faq_url,
|
||
rec_faq.fac_faq_datum,
|
||
rec_faq.fac_faq_lang,
|
||
rec_faq.fac_faq_hint,
|
||
rec_faq.fac_faq_vervaldatum,
|
||
v_fac_faq_discipline_key,
|
||
rec_faq.fac_faq_displaymode
|
||
)
|
||
RETURNING fac_faq_key
|
||
INTO newkey;
|
||
|
||
IF rec_faq.ins_discipline_key IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_stdmeldingfaq
|
||
(ins_discipline_key,
|
||
mld_stdmelding_key,
|
||
fac_faq_key
|
||
)
|
||
VALUES (rec_faq.ins_discipline_key,
|
||
rec_faq.mld_stdmelding_key,
|
||
newkey
|
||
);
|
||
END IF;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
'Kennisbankitem kan niet worden weggeschreven ['
|
||
|| rec_faq.fac_faq_question
|
||
|| ']',
|
||
v_errmes || ' Oracle fout: ' || oracle_err_var
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kennisbank/aantal toegevoegde importregels: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Kennisbank/aantal ongeldige niet toegevoegde importregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_update),
|
||
''
|
||
);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_var := SUBSTR (SQLERRM, 1, 150);
|
||
v_errmes :=
|
||
v_errmes || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_var || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Importproces kennisbank afgebroken!',
|
||
v_errmes);
|
||
END fac_update_faq;
|
||
/
|
||
|
||
-- FSN#25952 Contractenimport
|
||
CREATE OR REPLACE PROCEDURE fac_import_cnt (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_csv_index
|
||
, fac_imp_csv_col01 CONTRACTNR
|
||
, fac_imp_csv_col02 VERSIE
|
||
, fac_imp_csv_col03 EXTERNNR
|
||
, fac_imp_csv_col04 CONTRACTSOORT
|
||
, fac_imp_csv_col05 BESCHRIJVING
|
||
, fac_imp_csv_col06 MANTELNR
|
||
, fac_imp_csv_col07 MANTELNR_VERSIE
|
||
, fac_imp_csv_col08 OMSCHRIJVING
|
||
, fac_imp_csv_col09 DIENST
|
||
, fac_imp_csv_col10 EIGENAAR_AFD
|
||
, fac_imp_csv_col11 EIGENAAR_EMAIL
|
||
, fac_imp_csv_col12 BEHEERDER_EMAIL
|
||
, fac_imp_csv_col13 OPMERKING
|
||
, fac_imp_csv_col14 INGANGSDATUM
|
||
, fac_imp_csv_col15 RAPPELDATUM
|
||
, fac_imp_csv_col16 OPZEGDATUM
|
||
, fac_imp_csv_col17 EINDDATUM
|
||
, fac_imp_csv_col18 SOORT_CONTACTPARTIJ
|
||
, fac_imp_csv_col19 BEDRIJFNAAM
|
||
, fac_imp_csv_col20 CONTACTNAAM
|
||
, fac_imp_csv_col21 KOSTENPLAATSCODE
|
||
, fac_imp_csv_col22 KOSTENSOORTCODE
|
||
, fac_imp_csv_col23 CONTRACTBEDRAG
|
||
, fac_imp_csv_col24 TERMIJNBEDRAG
|
||
, fac_imp_csv_col25 UURTARIEF
|
||
, fac_imp_csv_col26 KORTING
|
||
, fac_imp_csv_col27 LOCATIECODE
|
||
, fac_imp_csv_col28 TERREINCODE
|
||
, fac_imp_csv_col29 GEBOUWCODE
|
||
, fac_imp_csv_col30 VERDIEPINGCODE
|
||
, fac_imp_csv_col31 RUIMTECODE
|
||
, fac_imp_csv_col32 VERLENGEN
|
||
, fac_imp_csv_col33 FACTUURBOEKEN
|
||
, fac_imp_csv_col34 flex_01
|
||
, fac_imp_csv_col35 flex_02
|
||
, fac_imp_csv_col36 flex_03
|
||
, fac_imp_csv_col37 flex_04
|
||
, fac_imp_csv_col38 flex_05
|
||
, fac_imp_csv_col39 flex_06
|
||
, fac_imp_csv_col40 flex_07
|
||
, fac_imp_csv_col41 flex_08
|
||
, fac_imp_csv_col42 flex_09
|
||
, fac_imp_csv_col43 flex_10
|
||
, fac_imp_csv_col44 flex_11
|
||
, fac_imp_csv_col45 flex_12
|
||
, fac_imp_csv_col46 flex_13
|
||
, fac_imp_csv_col47 flex_14
|
||
, fac_imp_csv_col48 flex_15
|
||
, fac_imp_csv_col49 flex_16
|
||
, fac_imp_csv_col50 flex_17
|
||
, fac_imp_csv_col51 flex_18
|
||
, fac_imp_csv_col52 flex_19
|
||
, fac_imp_csv_col53 flex_20
|
||
, fac_imp_csv_col54 flex_21
|
||
, fac_imp_csv_col55 flex_22
|
||
, fac_imp_csv_col56 flex_23
|
||
, fac_imp_csv_col57 flex_24
|
||
, fac_imp_csv_col58 flex_25
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index > 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
v_errormsg VARCHAR2(1000);
|
||
v_errorhint VARCHAR2(1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_aanduiding VARCHAR2(200);
|
||
v_header_is_valid NUMBER(1) := 0;
|
||
v_ongeldig NUMBER(1) := 0;
|
||
v_count_rec NUMBER(10) := 0;
|
||
v_count_imp NUMBER(10) := 0;
|
||
v_ref_key NUMBER(10);
|
||
|
||
-- De importvelden
|
||
v_nummer_intern cnt_contract.cnt_contract_nummer_intern%TYPE; --VARCHAR2(30)
|
||
v_versie cnt_contract.cnt_contract_versie%TYPE; --VARCHAR2(10)
|
||
v_nummer_extern cnt_contract.cnt_contract_nummer%TYPE; --VARCHAR2(30)
|
||
v_cnt_soort ins_tab_discipline.ins_discipline_omschrijving%TYPE; --VARCHAR2(60) --> cnt_contract.ins_discipline_key
|
||
v_beschrijving cnt_contract.cnt_contract_omschrijving%TYPE; --VARCHAR2(50)
|
||
v_mantel_nr cnt_contract.cnt_contract_nummer_intern%TYPE; --VARCHAR2(30) |-> cnt_contract.cnt_contract_mantel_key
|
||
v_mantel_nr_versie cnt_contract.cnt_contract_versie%TYPE; --VARCHAR2(10) |
|
||
v_omschrijving cnt_contract.cnt_contract_document%TYPE; --VARCHAR2(2048)
|
||
v_dienst prs_dienst.prs_dienst_omschrijving%TYPE; --VARCHAR2(60) --> cnt_contract.prs_dienst_key
|
||
v_afdeling prs_afdeling.prs_afdeling_naam%TYPE; --VARCHAR2(15) --> cnt_contract.prs_afdeling_key_eig
|
||
v_perslid_eig prs_perslid.prs_perslid_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_perslid_key_eig
|
||
v_perslid_beh prs_perslid.prs_perslid_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_perslid_key_beh
|
||
v_opmerking cnt_contract.cnt_contract_opmerking%TYPE; --VARCHAR2(4000)
|
||
v_ingangsdatum cnt_contract.cnt_contract_looptijd_van%TYPE; --DATE
|
||
v_rappeldatum cnt_contract.cnt_contract_aanmaak%TYPE; --DATE --> cnt_contact.cnt_contract_rappeltermijn
|
||
v_opzegdatum cnt_contract.cnt_contract_aanmaak%TYPE; --DATE --> cnt_contract.cnt_contract_opzegtermijn
|
||
v_einddatum cnt_contract.cnt_contract_looptijd_tot%TYPE; --DATE
|
||
v_srtcontact VARCHAR2 (1); --P of B
|
||
v_bedrijfnaam prs_perslid.prs_perslid_email%TYPE; --VARCHAR (200) --> cnt_contract.cnt_prs_bedrijf_key
|
||
v_contactnaam prs_contactpersoon.prs_contactpersoon_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_contactpersoon_key
|
||
v_kpn_code prs_kostenplaats.prs_kostenplaats_nr%TYPE; --VARCHAR2(30) --> cnt_contract.prs_kostenplaats_key
|
||
v_kostensoort_code prs_kostensoort.prs_kostensoort_oms%TYPE; --VARCHAR2(60) --> cnt_contract.prs_kostensoort_key
|
||
v_bedrag cnt_contract.cnt_contract_kosten%TYPE; --NUMBER(11,2)
|
||
v_bedrag_termijn cnt_contract.cnt_contract_termijnkosten%TYPE; --NUMBER(11,2)
|
||
v_uurtarief cnt_contract.cnt_contract_uurloon%TYPE; --NUMBER(6,2)
|
||
v_korting cnt_contract.cnt_contract_korting%TYPE; --NUMBER(5,2)
|
||
v_locatiecode alg_locatie.alg_locatie_code%TYPE; --VARCHAR2(10)
|
||
v_terreincode alg_terreinsector.alg_terreinsector_code%TYPE; --VARCHAR2(12)
|
||
v_gebouwcode alg_gebouw.alg_gebouw_code%TYPE; --VARCHAR2(12)
|
||
v_verdiepingcode alg_verdieping.alg_verdieping_volgnr%TYPE; --NUMBER(3)
|
||
v_ruimtecode alg_ruimte.alg_ruimte_nr%TYPE; --VARCHAR2(20)
|
||
v_verlengen cnt_contract.cnt_contract_verlenging%TYPE; --NUMBER(1)
|
||
v_factuurboeken cnt_disc_params.cnt_disc_params_factuurboeken%TYPE; --NUMBER(1)
|
||
|
||
v_cnt_kenmerk_01 fac_imp_cnt.flex1%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_02 fac_imp_cnt.flex2%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_03 fac_imp_cnt.flex3%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_04 fac_imp_cnt.flex4%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_05 fac_imp_cnt.flex5%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_06 fac_imp_cnt.flex6%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_07 fac_imp_cnt.flex7%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_08 fac_imp_cnt.flex8%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_09 fac_imp_cnt.flex9%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_10 fac_imp_cnt.flex10%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_11 fac_imp_cnt.flex11%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_12 fac_imp_cnt.flex12%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_13 fac_imp_cnt.flex13%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_14 fac_imp_cnt.flex14%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_15 fac_imp_cnt.flex15%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_16 fac_imp_cnt.flex16%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_17 fac_imp_cnt.flex17%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_18 fac_imp_cnt.flex18%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_19 fac_imp_cnt.flex19%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_20 fac_imp_cnt.flex20%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_21 fac_imp_cnt.flex21%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_22 fac_imp_cnt.flex22%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_23 fac_imp_cnt.flex23%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_24 fac_imp_cnt.flex24%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_25 fac_imp_cnt.flex25%TYPE; --VARCHAR2(255);
|
||
|
||
v_header VARCHAR2(500) := 'CONTRACTNR;VERSIE;EXTERNNR;CONTRACTSOORT;BESCHRIJVING;'
|
||
|| 'MANTELNR;MANTELNR_VERSIE;OMSCHRIJVING;DIENST;EIGENAAR_AFD;'
|
||
|| 'EIGENAAR_EMAIL;BEHEERDER_EMAIL;OPMERKING;INGANGSDATUM;RAPPELDATUM;'
|
||
|| 'OPZEGDATUM;EINDDATUM;SOORT_CONTACTPARTIJ;BEDRIJFSNAAM;CONTACTNAAM;'
|
||
|| 'KOSTENPLAATSCODE;KOSTENSOORTCODE;CONTRACTBEDRAG;TERMIJNBEDRAG;UURTARIEF;'
|
||
|| 'KORTING;LOCATIECODE;TERREINCODE;GEBOUWCODE;VERDIEPINGCODE;'
|
||
|| 'RUIMTECODE;VERLENGEN;FACTUURBOEKEN';
|
||
|
||
v_header_csv VARCHAR2(500);
|
||
v_flex_naam_01 fac_imp_cnt.flex1%TYPE;
|
||
v_flex_naam_02 fac_imp_cnt.flex2%TYPE;
|
||
v_flex_naam_03 fac_imp_cnt.flex3%TYPE;
|
||
v_flex_naam_04 fac_imp_cnt.flex4%TYPE;
|
||
v_flex_naam_05 fac_imp_cnt.flex5%TYPE;
|
||
v_flex_naam_06 fac_imp_cnt.flex6%TYPE;
|
||
v_flex_naam_07 fac_imp_cnt.flex7%TYPE;
|
||
v_flex_naam_08 fac_imp_cnt.flex8%TYPE;
|
||
v_flex_naam_09 fac_imp_cnt.flex9%TYPE;
|
||
v_flex_naam_10 fac_imp_cnt.flex10%TYPE;
|
||
v_flex_naam_11 fac_imp_cnt.flex11%TYPE;
|
||
v_flex_naam_12 fac_imp_cnt.flex12%TYPE;
|
||
v_flex_naam_13 fac_imp_cnt.flex13%TYPE;
|
||
v_flex_naam_14 fac_imp_cnt.flex14%TYPE;
|
||
v_flex_naam_15 fac_imp_cnt.flex15%TYPE;
|
||
v_flex_naam_16 fac_imp_cnt.flex16%TYPE;
|
||
v_flex_naam_17 fac_imp_cnt.flex17%TYPE;
|
||
v_flex_naam_18 fac_imp_cnt.flex18%TYPE;
|
||
v_flex_naam_19 fac_imp_cnt.flex19%TYPE;
|
||
v_flex_naam_20 fac_imp_cnt.flex20%TYPE;
|
||
v_flex_naam_21 fac_imp_cnt.flex21%TYPE;
|
||
v_flex_naam_22 fac_imp_cnt.flex22%TYPE;
|
||
v_flex_naam_23 fac_imp_cnt.flex23%TYPE;
|
||
v_flex_naam_24 fac_imp_cnt.flex24%TYPE;
|
||
v_flex_naam_25 fac_imp_cnt.flex25%TYPE;
|
||
|
||
-- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
|
||
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
|
||
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
|
||
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
|
||
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
|
||
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
|
||
--
|
||
-- p_kw is bijvoorbeeld 'Looptijd Maximaal', 'Looptijd Maximaal|3', 1049 of 1049|3 waarbij de tweede en laatste in groep 3 zitten
|
||
-- het resultaat is NULL (als niet gevonden) of Looptijd Maximaal|3 of 1049|3 voor kenmer_key 1049 in groep 3
|
||
-- Als geen groep is meegegeven dan wordt 'Looptijd Maximaal|0' opgeleverd (de default groep)
|
||
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR2)
|
||
RETURN VARCHAR
|
||
IS
|
||
v_kenmerk_key NUMBER;
|
||
v_kenmerk_groep NUMBER;
|
||
v_kw VARCHAR(250);
|
||
BEGIN
|
||
v_kenmerk_groep := 0;
|
||
v_kw := p_kw;
|
||
IF INSTR (v_kw, '|') > 1
|
||
THEN
|
||
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
|
||
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
|
||
END IF;
|
||
|
||
IF fac.safe_to_number(v_kw) IS NULL
|
||
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT MIN(k.cnt_kenmerk_key)
|
||
INTO v_kenmerk_key
|
||
FROM cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_kenmerk_groep
|
||
AND COALESCE(UPPER(k.cnt_kenmerk_omschrijving), sk.cnt_srtkenmerk_upper) = UPPER(v_kw)
|
||
AND sk.cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL;
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT k.cnt_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_kenmerk_groep
|
||
AND k.cnt_kenmerk_key = fac.safe_to_number(v_kw)
|
||
AND sk.cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
|
||
IF v_kenmerk_key IS NULL
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
|
||
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
fac.imp_writelog ( p_import_key, 'W'
|
||
, 'Fout bij bepalen kenmerk [' || p_kw || ']'
|
||
, 'Bestaat niet of type ongeldig');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END IF;
|
||
END; -- bepaal_kenmerk
|
||
|
||
FUNCTION kenmerk_waarde( p_import_key IN NUMBER
|
||
, p_import_index IN NUMBER
|
||
, p_aanduiding IN VARCHAR2
|
||
, p_flex_naam IN VARCHAR2
|
||
, p_flex_waarde IN VARCHAR2)
|
||
RETURN VARCHAR
|
||
IS
|
||
v_flexval VARCHAR2(200);
|
||
v_flx VARCHAR2(255);
|
||
BEGIN
|
||
v_flx := bepaal_kenmerk(p_flex_naam);
|
||
|
||
IF v_flx IS NULL
|
||
THEN
|
||
v_flexval := SUBSTR(TRIM(p_flex_waarde), 1, 255);
|
||
ELSE
|
||
v_flexval := SUBSTR(TRIM(p_flex_waarde), 1, 200);
|
||
IF LENGTH(TRIM(p_flex_waarde)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, p_aanduiding || p_flex_naam || ' - Aangepast ivm lengte groter dan 255'
|
||
, p_import_index
|
||
);
|
||
END IF;
|
||
v_flexval := TO_CHAR(v_flx) || '=' || v_flexval;
|
||
END IF;
|
||
|
||
RETURN v_flexval;
|
||
END; -- kenmerk_waarde
|
||
|
||
BEGIN
|
||
v_errormsg := 'Fout inlezen header ';
|
||
SELECT REPLACE(UPPER(fac_imp_csv_col01 ||';'|| fac_imp_csv_col02 ||';'|| fac_imp_csv_col03 ||';'|| fac_imp_csv_col04 ||';'|| fac_imp_csv_col05 ||';'||
|
||
fac_imp_csv_col06 ||';'|| fac_imp_csv_col07 ||';'|| fac_imp_csv_col08 ||';'|| fac_imp_csv_col09 ||';'|| fac_imp_csv_col10 ||';'||
|
||
fac_imp_csv_col11 ||';'|| fac_imp_csv_col12 ||';'|| fac_imp_csv_col13 ||';'|| fac_imp_csv_col14 ||';'|| fac_imp_csv_col15 ||';'||
|
||
fac_imp_csv_col16 ||';'|| fac_imp_csv_col17 ||';'|| fac_imp_csv_col18 ||';'|| fac_imp_csv_col19 ||';'|| fac_imp_csv_col20 ||';'||
|
||
fac_imp_csv_col21 ||';'|| fac_imp_csv_col22 ||';'|| fac_imp_csv_col23 ||';'|| fac_imp_csv_col24 ||';'|| fac_imp_csv_col25 ||';'||
|
||
fac_imp_csv_col26 ||';'|| fac_imp_csv_col27 ||';'|| fac_imp_csv_col28 ||';'|| fac_imp_csv_col29 ||';'|| fac_imp_csv_col30 ||';'||
|
||
fac_imp_csv_col31 ||';'|| fac_imp_csv_col32 ||';'|| fac_imp_csv_col33
|
||
), ' ', '')
|
||
, fac_imp_csv_col34, fac_imp_csv_col35, fac_imp_csv_col36, fac_imp_csv_col37, fac_imp_csv_col38
|
||
, fac_imp_csv_col39, fac_imp_csv_col40, fac_imp_csv_col41, fac_imp_csv_col42, fac_imp_csv_col43
|
||
, fac_imp_csv_col44, fac_imp_csv_col45, fac_imp_csv_col46, fac_imp_csv_col47, fac_imp_csv_col48
|
||
, fac_imp_csv_col49, fac_imp_csv_col50, fac_imp_csv_col51, fac_imp_csv_col52, fac_imp_csv_col53
|
||
, fac_imp_csv_col54, fac_imp_csv_col55, fac_imp_csv_col56, fac_imp_csv_col57, fac_imp_csv_col58
|
||
INTO v_header_csv -- standaard header
|
||
, v_flex_naam_01, v_flex_naam_02, v_flex_naam_03, v_flex_naam_04, v_flex_naam_05 -- kenmerk kolom namen
|
||
, v_flex_naam_06, v_flex_naam_07, v_flex_naam_08, v_flex_naam_09, v_flex_naam_10
|
||
, v_flex_naam_11, v_flex_naam_12, v_flex_naam_13, v_flex_naam_14, v_flex_naam_15
|
||
, v_flex_naam_16, v_flex_naam_17, v_flex_naam_18, v_flex_naam_19, v_flex_naam_20
|
||
, v_flex_naam_21, v_flex_naam_22, v_flex_naam_23, v_flex_naam_24, v_flex_naam_25
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index = 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_cnt;
|
||
|
||
IF (v_header LIKE v_header_csv || '%')
|
||
THEN
|
||
v_header_is_valid := 1;
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_rec := v_count_rec + 1;
|
||
v_aanduiding := '[' || rec.contractnr || '|' || rec.versie || '] ';
|
||
|
||
-- CSV-kolom A: Controleer het contractnummer op lengte
|
||
v_nummer_intern := SUBSTR(TRIM(rec.contractnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.contractnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', v_aanduiding || 'ContractRr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.contractnr || ' wordt: ' || v_nummer_intern
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom B: Controleer de versie op lengte
|
||
v_versie := SUBSTR(TRIM(rec.versie), 1, 10);
|
||
IF LENGTH(TRIM(rec.versie)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Versie - Aangepast ivm lengte groter dan 10'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.versie || ' wordt: ' || v_versie
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom C: Controleer het extern contractnummer op lengte
|
||
v_nummer_extern := SUBSTR(TRIM(rec.externnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.externnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'ExternNr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.externnr || ' wordt: ' || v_nummer_extern
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom D: Controleer de lengte van het contractsoort en of het ingevuld is
|
||
v_cnt_soort := SUBSTR(TRIM(rec.contractsoort), 1, 60);
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_ref_key
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_omschrijving = v_cnt_soort
|
||
AND ins_discipline_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contractsoort - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_cnt_soort || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom E: Controleer de lengte van de contract beschrijving
|
||
v_beschrijving := SUBSTR(TRIM(rec.beschrijving),1,50);
|
||
IF LENGTH(TRIM(rec.beschrijving)) > 50
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beschrijving - Aangepast ivm lengte groter dan 50'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.beschrijving || ' wordt: ' || v_beschrijving
|
||
);
|
||
ELSE
|
||
IF v_beschrijving IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beschrijving - Is niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom F: Controleer de lengte van het mantelcontract nummer
|
||
v_mantel_nr := SUBSTR(TRIM(rec.mantelnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.mantelnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'MantelNr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.mantelnr || ' wordt: ' || v_mantel_nr
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom G: Controleer de lengte van het mantelcontract versie
|
||
v_mantel_nr_versie := SUBSTR(TRIM(v_mantel_nr_versie), 1, 10);
|
||
IF LENGTH(TRIM(rec.mantelnr_versie)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'MantelNr_versie - Aangepast ivm lengte groter dan 10'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.mantelnr_versie || ' wordt: ' || v_mantel_nr_versie
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom H: Controleer de lengte van contract omschrijving
|
||
v_omschrijving := SUBSTR(TRIM(rec.omschrijving), 1, 1000);
|
||
IF LENGTH(TRIM(rec.omschrijving)) > 1000
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Omschrijving - Lengte (' || TO_CHAR(LENGTH(TRIM(rec.omschrijving))) || ') aangepast tot 1000'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom I: Controleer of er een geldige dienst is ingevuld (geen dienst is ook goed)
|
||
v_dienst := SUBSTR(TRIM(rec.dienst), 1, 60);
|
||
IF v_dienst IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_dienst_key
|
||
INTO v_ref_key
|
||
FROM prs_dienst
|
||
WHERE prs_dienst_omschrijving = v_dienst;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Dienst - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_dienst || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom J: Controleer of de afdelingscode bestaat
|
||
v_afdeling := SUBSTR(TRIM(rec.eigenaar_afd), 1, 15);
|
||
BEGIN
|
||
SELECT prs_afdeling_key
|
||
INTO v_ref_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_upper = UPPER(v_afdeling)
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Eigenaar_afd - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_afdeling || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom K: Controleer of er een geldig eigenaar mailadres is ingevuld (mag leeg zijn)
|
||
v_perslid_eig := SUBSTR(TRIM(rec.eigenaar_email), 1, 200);
|
||
IF v_perslid_eig IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_ref_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = v_perslid_eig;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Eigenaar_email - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_perslid_eig || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom L: Controleer of er een geldig beheerder mailadres is ingevuld (mag niet leeg zijn)
|
||
v_perslid_beh := SUBSTR(TRIM(rec.beheerder_email), 1, 200);
|
||
IF v_perslid_beh IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beheerder_email - Is niet ingevuld'
|
||
, rec.fac_imp_csv_index || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_ref_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = v_perslid_beh;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beheerder_email - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_perslid_beh || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom M: Controleeer de lengte van contract opmerking
|
||
v_opmerking := SUBSTR(TRIM(rec.opmerking), 1, 1000);
|
||
IF LENGTH(TRIM(rec.opmerking)) > 1000
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Opmerking - Lengte (' || TO_CHAR(LENGTH(TRIM(rec.opmerking))) || ') aangepast tot 1000'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom N: Controleer ingangsdatum op geldig format en aanwezigheid
|
||
v_ingangsdatum := fac.safe_to_date(TRIM(rec.ingangsdatum), 'dd-mm-yyyy');
|
||
IF v_ingangsdatum IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Ingangsdatum - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.ingangsdatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom O: Controleer rappeldatum op geldig format
|
||
v_rappeldatum := fac.safe_to_date(TRIM(rec.rappeldatum), 'dd-mm-yyyy');
|
||
IF v_rappeldatum IS NULL AND rec.rappeldatum IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Rappeldatum - Is ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.rappeldatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom P: Controleer opzegdatum op geldig format
|
||
v_opzegdatum := fac.safe_to_date(TRIM(rec.opzegdatum), 'dd-mm-yyyy');
|
||
IF v_opzegdatum IS NULL AND rec.opzegdatum IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Opzegdatum - Is ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.opzegdatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom Q: Controleer einddatum op geldig format en aanwezigheid
|
||
v_einddatum := fac.safe_to_date(TRIM(rec.einddatum), 'dd-mm-yyyy');
|
||
IF v_einddatum IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Einddatum - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.einddatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom R: Controle soort contractpartij
|
||
v_srtcontact := SUBSTR(TRIM(rec.soort_contactpartij), 1, 1);
|
||
IF v_srtcontact IS NULL OR v_srtcontact NOT IN ('B','P')
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Soort_contactpartij - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.soort_contactpartij || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom S: Controle lengte bedrijfsnaam
|
||
IF v_srtcontact = 'B'
|
||
THEN
|
||
v_bedrijfnaam := SUBSTR(TRIM(rec.bedrijfnaam), 1, 60); -- naam van bedrijf: prs_bedrijf.prs_bedrijf_naam
|
||
IF LENGTH(TRIM(rec.bedrijfnaam)) > 60
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Aangepast ivm lengte groter dan 60'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.bedrijfnaam || ' wordt: ' || v_bedrijfnaam
|
||
);
|
||
END IF;
|
||
ELSE
|
||
v_bedrijfnaam := SUBSTR(TRIM(rec.bedrijfnaam), 1, 200); -- emailadres van persoon: prs_perslid.prs_perslid_email
|
||
IF LENGTH(TRIM(rec.bedrijfnaam)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Aangepast ivm lengte groter dan 200'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.bedrijfnaam
|
||
);
|
||
END IF;
|
||
END IF;
|
||
IF v_bedrijfnaam IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Is niet aanwezig'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom T: Controle contact mailadres
|
||
v_contactnaam := SUBSTR(TRIM(rec.contactnaam), 1, 200);
|
||
IF LENGTH(TRIM(rec.contactnaam)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contactnaam - Aangepast ivm lengte groter dan 200'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom U: Controle Kostenplaatscode
|
||
v_kpn_code := SUBSTR(TRIM(rec.kostenplaatscode), 1, 30);
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_ref_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = v_kpn_code
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'KostenplaatsCode - Is onbekend of niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - ' || v_kpn_code || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom V: Controle Kostensoortcode
|
||
v_kostensoort_code := SUBSTR(TRIM(rec.kostensoortcode), 1, 60);
|
||
IF LENGTH(TRIM(rec.kostensoortcode)) IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostensoort_key
|
||
INTO v_ref_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = UPPER(v_kostensoort_code)
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'KostensoortCode - Is onbekend of niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - ' || v_kostensoort_code || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom W: Controle of contractbedrag geldig is
|
||
v_bedrag := fac.safe_to_number(rec.contractbedrag);
|
||
IF v_bedrag IS NULL AND rec.contractbedrag IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contractbedrag - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.contractbedrag
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom X: Controle of termijnbedrag geldig is
|
||
v_bedrag_termijn := fac.safe_to_number(rec.termijnbedrag);
|
||
IF v_bedrag_termijn IS NULL AND rec.termijnbedrag IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Termijnbedrag - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.termijnbedrag
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom Y: Controle of uurtarief geldig is
|
||
v_uurtarief := fac.safe_to_number(rec.uurtarief);
|
||
IF v_uurtarief IS NULL AND rec.uurtarief IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Uurtrief - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.uurtarief
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom Z: Controle of korting geldig is
|
||
v_korting := fac.safe_to_number(rec.korting);
|
||
IF v_korting IS NULL AND rec.korting IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Korting - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.korting
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom AA: Controle Locatiecode
|
||
v_locatiecode := SUBSTR(TRIM(rec.locatiecode), 1, 10);
|
||
IF LENGTH(TRIM(rec.locatiecode)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Locatiecode - Aangepast ivm lengte groter dan 10 voor locatie'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.locatiecode || ' wordt: ' || v_locatiecode
|
||
);
|
||
END IF;
|
||
-- CSV-kolom AB: Controle Terreincode
|
||
v_terreincode := SUBSTR(TRIM(rec.terreincode), 1, 12);
|
||
IF LENGTH(TRIM(rec.terreincode)) > 12
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Terreincode - Aangepast ivm lengte groter dan 12 voor terrein'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.terreincode || ' wordt: ' || v_terreincode
|
||
);
|
||
END IF;
|
||
-- CSV-kolom AC: Controle Gebouwcode
|
||
v_gebouwcode := SUBSTR(TRIM(rec.gebouwcode), 1, 12);
|
||
IF LENGTH(TRIM(rec.gebouwcode)) > 12
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Gebouwcode - Aangepast ivm lengte groter dan 12 voor gebouw'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.gebouwcode || ' wordt: ' || v_gebouwcode
|
||
);
|
||
END IF;
|
||
-- CSV-kolom AD: Controle Verdiepingcode
|
||
BEGIN
|
||
v_verdiepingcode := fac.safe_to_number(rec.verdiepingcode);
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Verdiepingcode - Aangepast ivm lengte groter dan 3 voor verdieping'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.verdiepingcode || ' wordt: ' || v_verdiepingcode
|
||
);
|
||
END;
|
||
-- CSV-kolom AE: Controle Ruimtecode
|
||
v_ruimtecode := SUBSTR(TRIM(rec.ruimtecode), 1, 20);
|
||
IF LENGTH(TRIM(rec.ruimtecode)) > 20
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Ruimtecode - Aangepast ivm lengte groter dan 20 voor ruimte'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.ruimtecode || ' wordt: ' || v_ruimtecode
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom AF: Controle op geldige waarde voor verlengen
|
||
v_verlengen := fac.safe_to_number(rec.verlengen);
|
||
IF v_verlengen NOT IN (0,1,2,3,5)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Verlengen - Ongeldige waarde'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.verlengen || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom AG: Controle op geldige waarde voor factuurboeken
|
||
v_factuurboeken := fac.safe_to_number(rec.factuurboeken);
|
||
IF v_factuurboeken NOT IN (0,1)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Factuurboeken - Ongeldige waarde'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.factuurboeken || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- De flexkenmerkwaarden
|
||
v_cnt_kenmerk_01 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_01, rec.flex_01);
|
||
v_cnt_kenmerk_02 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_02, rec.flex_02);
|
||
v_cnt_kenmerk_03 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_03, rec.flex_03);
|
||
v_cnt_kenmerk_04 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_04, rec.flex_04);
|
||
v_cnt_kenmerk_05 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_05, rec.flex_05);
|
||
v_cnt_kenmerk_06 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_06, rec.flex_06);
|
||
v_cnt_kenmerk_07 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_07, rec.flex_07);
|
||
v_cnt_kenmerk_08 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_08, rec.flex_08);
|
||
v_cnt_kenmerk_09 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_09, rec.flex_09);
|
||
v_cnt_kenmerk_10 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_10, rec.flex_10);
|
||
v_cnt_kenmerk_11 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_11, rec.flex_11);
|
||
v_cnt_kenmerk_12 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_12, rec.flex_12);
|
||
v_cnt_kenmerk_13 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_13, rec.flex_13);
|
||
v_cnt_kenmerk_14 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_14, rec.flex_14);
|
||
v_cnt_kenmerk_15 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_15, rec.flex_15);
|
||
v_cnt_kenmerk_16 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_16, rec.flex_16);
|
||
v_cnt_kenmerk_17 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_17, rec.flex_17);
|
||
v_cnt_kenmerk_18 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_18, rec.flex_18);
|
||
v_cnt_kenmerk_19 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_19, rec.flex_19);
|
||
v_cnt_kenmerk_20 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_20, rec.flex_20);
|
||
v_cnt_kenmerk_21 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_21, rec.flex_21);
|
||
v_cnt_kenmerk_22 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_22, rec.flex_22);
|
||
v_cnt_kenmerk_23 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_23, rec.flex_23);
|
||
v_cnt_kenmerk_24 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_24, rec.flex_24);
|
||
v_cnt_kenmerk_25 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_25, rec.flex_25);
|
||
|
||
-- Insert geformatteerde import record
|
||
IF (v_ongeldig = 0)
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||
|
||
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
|
||
-- dan is flex<n> gevuld met <key>=<waarde>; zoniet, dan is
|
||
-- flex<n> gevuld met <waarde>!
|
||
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
|
||
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
|
||
INSERT INTO fac_imp_cnt
|
||
( nummer_intern
|
||
, versie
|
||
, nummer_extern
|
||
, cnt_soort
|
||
, beschrijving
|
||
, mantel_nr
|
||
, mantel_nr_versie
|
||
, omschrijving
|
||
, dienst
|
||
, afdeling
|
||
, perslid_eig
|
||
, perslid_beh
|
||
, opmerking
|
||
, datum_ingang
|
||
, datum_rappel
|
||
, datum_opzeg
|
||
, datum_eind
|
||
, soortcontact
|
||
, bedrijf_naam
|
||
, contact_naam
|
||
, kpn_code
|
||
, kostensoort
|
||
, bedrag
|
||
, bedrag_termijn
|
||
, uurtarief
|
||
, korting
|
||
, locatiecode
|
||
, terreincode
|
||
, gebouwcode
|
||
, verdiepingcode
|
||
, ruimtecode
|
||
, verlengen
|
||
, factuurboeken
|
||
, flex1, flex2, flex3, flex4, flex5
|
||
, flex6, flex7, flex8, flex9, flex10
|
||
, flex11, flex12, flex13, flex14, flex15
|
||
, flex16, flex17, flex18, flex19, flex20
|
||
, flex21, flex22, flex23, flex24, flex25
|
||
)
|
||
VALUES ( v_nummer_intern
|
||
, v_versie
|
||
, v_nummer_extern
|
||
, v_cnt_soort
|
||
, v_beschrijving
|
||
, v_mantel_nr
|
||
, v_mantel_nr_versie
|
||
, v_omschrijving
|
||
, v_dienst
|
||
, v_afdeling
|
||
, v_perslid_eig
|
||
, v_perslid_beh
|
||
, v_opmerking
|
||
, v_ingangsdatum
|
||
, v_rappeldatum
|
||
, v_opzegdatum
|
||
, v_einddatum
|
||
, v_srtcontact
|
||
, v_bedrijfnaam
|
||
, v_contactnaam
|
||
, v_kpn_code
|
||
, v_kostensoort_code
|
||
, v_bedrag
|
||
, v_bedrag_termijn
|
||
, v_uurtarief
|
||
, v_korting
|
||
, v_locatiecode
|
||
, v_terreincode
|
||
, v_gebouwcode
|
||
, v_verdiepingcode
|
||
, v_ruimtecode
|
||
, v_verlengen
|
||
, v_factuurboeken
|
||
, v_cnt_kenmerk_01, v_cnt_kenmerk_02, v_cnt_kenmerk_03, v_cnt_kenmerk_04, v_cnt_kenmerk_05
|
||
, v_cnt_kenmerk_06, v_cnt_kenmerk_07, v_cnt_kenmerk_08, v_cnt_kenmerk_09, v_cnt_kenmerk_10
|
||
, v_cnt_kenmerk_11, v_cnt_kenmerk_12, v_cnt_kenmerk_13, v_cnt_kenmerk_14, v_cnt_kenmerk_15
|
||
, v_cnt_kenmerk_16, v_cnt_kenmerk_17, v_cnt_kenmerk_18, v_cnt_kenmerk_19, v_cnt_kenmerk_20
|
||
, v_cnt_kenmerk_21, v_cnt_kenmerk_22, v_cnt_kenmerk_23, v_cnt_kenmerk_24, v_cnt_kenmerk_25
|
||
);
|
||
COMMIT;
|
||
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
|
||
, '');
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
IF (v_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'
|
||
, 'Contracten/#ingelezen importregels: ' || TO_CHAR (v_count_rec)
|
||
, '');
|
||
fac.imp_writelog ( p_import_key, 'S'
|
||
, 'Contracten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_rec - v_count_imp)
|
||
, '');
|
||
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 contracten afgebroken!');
|
||
END fac_import_cnt;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_cnt (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor zoekt direct alle afgeleide gegevens.
|
||
-- Een leeg veld betekent dus: <20>f deze regel overslaan, <20>f nieuwe data toevoegen.
|
||
CURSOR c1
|
||
IS
|
||
WITH imp_cnt AS
|
||
( SELECT i.nummer_intern
|
||
, i.versie
|
||
, i.nummer_extern
|
||
, i.cnt_soort
|
||
, i.beschrijving
|
||
, i.mantel_nr
|
||
, i.mantel_nr_versie
|
||
, i.omschrijving
|
||
, i.dienst
|
||
, i.afdeling
|
||
, i.perslid_eig
|
||
, i.perslid_beh
|
||
, i.opmerking
|
||
, i.datum_ingang
|
||
, i.datum_rappel
|
||
, i.datum_opzeg
|
||
, i.datum_eind
|
||
, i.soortcontact
|
||
, i.bedrijf_naam
|
||
, i.contact_naam
|
||
, i.kpn_code
|
||
, i.kostensoort
|
||
, i.bedrag
|
||
, i.bedrag_termijn
|
||
, i.uurtarief
|
||
, i.korting
|
||
, i.locatiecode
|
||
, i.terreincode
|
||
, i.gebouwcode
|
||
, i.verdiepingcode
|
||
, i.ruimtecode
|
||
, i.verlengen
|
||
, i.factuurboeken
|
||
, disc.ins_discipline_key
|
||
, mntl.cnt_contract_key mantel_key
|
||
, d.prs_dienst_key
|
||
, afd.prs_afdeling_key
|
||
, eig.prs_afdeling_key prs_afdeling_key_eig
|
||
, eig.prs_perslid_key prs_perslid_key_eig
|
||
, beh.prs_perslid_key prs_perslid_key_beh
|
||
, CASE WHEN i.soortcontact = 'P'
|
||
THEN (SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE LOWER(TRIM(prs_perslid_email)) = LOWER(i.bedrijf_naam)
|
||
)
|
||
ELSE (SELECT MIN (prs_bedrijf_key)
|
||
FROM prs_bedrijf
|
||
WHERE (1=1) --prs_bedrijf_contract IS NOT NULL
|
||
AND ( TRIM(prs_bedrijf_naam_upper) = UPPER (i.bedrijf_naam)
|
||
OR UPPER(TRIM(prs_leverancier_nr)) = UPPER (i.bedrijf_naam)
|
||
)
|
||
)
|
||
END prs_bedrijf_key
|
||
, kpn.prs_kostenplaats_key
|
||
, ksr.prs_kostensoort_key
|
||
, i.flex1, i.flex2, i.flex3, i.flex4, i.flex5
|
||
, i.flex6, i.flex7, i.flex8, i.flex9, i.flex10
|
||
, i.flex11, i.flex12, i.flex13, i.flex14, i.flex15
|
||
, i.flex16, i.flex17, i.flex18, i.flex19, i.flex20
|
||
, i.flex21, i.flex22, i.flex23, i.flex24, i.flex25
|
||
FROM fac_imp_cnt i
|
||
, (SELECT *
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
) disc
|
||
, (SELECT c.*
|
||
FROM cnt_v_aanwezigcontract c
|
||
, cnt_disc_params dp
|
||
WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key
|
||
AND dp.cnt_srtcontract_type = 6
|
||
) mntl
|
||
, prs_dienst d
|
||
, (SELECT *
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
) afd
|
||
, prs_v_aanwezigperslid eig
|
||
, prs_v_aanwezigperslid beh
|
||
, prs_v_aanwezigkostenplaats kpn
|
||
, prs_kostensoort ksr
|
||
WHERE UPPER(i.cnt_soort) = UPPER(TRIM(disc.ins_discipline_omschrijving(+)))
|
||
AND UPPER(i.mantel_nr) = UPPER(TRIM(mntl.cnt_contract_nummer_intern(+)))
|
||
AND UPPER(i.dienst) = UPPER(TRIM(d.prs_dienst_omschrijving(+)))
|
||
AND UPPER(i.afdeling) = TRIM(afd.prs_afdeling_upper(+))
|
||
AND UPPER(i.perslid_eig) = UPPER(TRIM(eig.prs_perslid_email(+)))
|
||
AND UPPER(i.perslid_beh) = UPPER(TRIM(beh.prs_perslid_email(+)))
|
||
AND UPPER(i.kpn_code) = TRIM(kpn.prs_kostenplaats_upper(+))
|
||
AND UPPER(i.kostensoort) = TRIM(ksr.prs_kostensoort_upper(+))
|
||
)
|
||
SELECT a.nummer_intern
|
||
, a.nummer_extern
|
||
, a.cnt_soort
|
||
, dp.cnt_srtcontract_type
|
||
, a.ins_discipline_key
|
||
, a.beschrijving
|
||
, a.mantel_nr
|
||
, a.mantel_nr_versie
|
||
, a.mantel_key
|
||
, a.omschrijving
|
||
, a.versie
|
||
, a.dienst
|
||
, a.prs_dienst_key
|
||
, a.afdeling
|
||
, a.prs_afdeling_key
|
||
, a.perslid_eig
|
||
, a.prs_perslid_key_eig
|
||
, a.prs_afdeling_key_eig
|
||
, a.perslid_beh
|
||
, a.prs_perslid_key_beh
|
||
, a.opmerking
|
||
, a.datum_ingang
|
||
, a.datum_eind
|
||
, a.datum_opzeg
|
||
, a.datum_rappel
|
||
, a.soortcontact
|
||
, a.bedrijf_naam
|
||
, a.prs_bedrijf_key
|
||
, a.contact_naam
|
||
, cp.prs_contactpersoon_key
|
||
, a.kpn_code
|
||
, a.prs_kostenplaats_key
|
||
, a.kostensoort
|
||
, a.prs_kostensoort_key
|
||
, a.bedrag
|
||
, a.bedrag_termijn
|
||
, a.uurtarief
|
||
, a.korting
|
||
, a.locatiecode
|
||
, a.terreincode
|
||
, a.gebouwcode
|
||
, a.verdiepingcode
|
||
, a.ruimtecode
|
||
, a.verlengen
|
||
, a.factuurboeken
|
||
, a.flex1 cnt_kenmerkwaarde1
|
||
, a.flex2 cnt_kenmerkwaarde2
|
||
, a.flex3 cnt_kenmerkwaarde3
|
||
, a.flex4 cnt_kenmerkwaarde4
|
||
, a.flex5 cnt_kenmerkwaarde5
|
||
, a.flex6 cnt_kenmerkwaarde6
|
||
, a.flex7 cnt_kenmerkwaarde7
|
||
, a.flex8 cnt_kenmerkwaarde8
|
||
, a.flex9 cnt_kenmerkwaarde9
|
||
, a.flex10 cnt_kenmerkwaarde10
|
||
, a.flex11 cnt_kenmerkwaarde11
|
||
, a.flex12 cnt_kenmerkwaarde12
|
||
, a.flex13 cnt_kenmerkwaarde13
|
||
, a.flex14 cnt_kenmerkwaarde14
|
||
, a.flex15 cnt_kenmerkwaarde15
|
||
, a.flex16 cnt_kenmerkwaarde16
|
||
, a.flex17 cnt_kenmerkwaarde17
|
||
, a.flex18 cnt_kenmerkwaarde18
|
||
, a.flex19 cnt_kenmerkwaarde19
|
||
, a.flex20 cnt_kenmerkwaarde20
|
||
, a.flex21 cnt_kenmerkwaarde21
|
||
, a.flex22 cnt_kenmerkwaarde22
|
||
, a.flex23 cnt_kenmerkwaarde23
|
||
, a.flex24 cnt_kenmerkwaarde24
|
||
, a.flex25 cnt_kenmerkwaarde25
|
||
FROM imp_cnt a
|
||
, cnt_disc_params dp
|
||
, prs_contactpersoon cp
|
||
WHERE a.ins_discipline_key = dp.cnt_ins_discipline_key
|
||
AND UPPER(a.contact_naam) = UPPER(TRIM(cp.prs_contactpersoon_email(+)))
|
||
AND a.prs_bedrijf_key = cp.prs_bedrijf_key(+);
|
||
|
||
-- Constanten
|
||
c_contract_type NUMBER := 5; -- Leverancier (met scope)
|
||
|
||
v_errormsg VARCHAR2(1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_aanduiding VARCHAR2(200);
|
||
v_geldig NUMBER(1);
|
||
v_facilitor_key NUMBER;
|
||
v_perslid_key_eig NUMBER;
|
||
v_perslid_key_beh NUMBER;
|
||
v_typecontract_key NUMBER;
|
||
v_cnt_discipline_key NUMBER;
|
||
v_contactpersoon_key NUMBER;
|
||
v_cnt_status NUMBER;
|
||
v_termijn_type VARCHAR2(1);
|
||
v_termijn_aantal NUMBER;
|
||
v_termijn_key_opzeg NUMBER;
|
||
v_termijn_key_rappel NUMBER;
|
||
v_contract_key NUMBER;
|
||
v_count NUMBER;
|
||
v_count_tot NUMBER;
|
||
v_count_cntnew NUMBER;
|
||
v_count_cntupd NUMBER;
|
||
v_srtnoti_code VARCHAR2(7); -- ook ruimte voor '@' prefix
|
||
v_scope_code VARCHAR2(1);
|
||
v_scope_key NUMBER(10);
|
||
v_scope_err VARCHAR2(100);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE bepaal_termijn( p_start IN DATE
|
||
, p_eind IN DATE
|
||
, p_termijn_type OUT VARCHAR2
|
||
, p_termijn_aantal OUT NUMBER
|
||
, p_afronden IN BOOLEAN
|
||
)
|
||
AS
|
||
v_type VARCHAR2(1) := 'W';
|
||
v_aantal NUMBER := 0;
|
||
v_zelfde_dag BOOLEAN;
|
||
v_zelfde_weekdag BOOLEAN;
|
||
v_zelfde_maand BOOLEAN;
|
||
min_jaar NUMBER := 3; -- Afronden op jaren als het aantal dagen groter is dan dit aantal jaren
|
||
min_maand NUMBER := 3; -- Afronden op maanden als het aantal dagen groter is dan dit aantal maanden.
|
||
min_week NUMBER := 4; -- Afronden op weken als het aantal dagen groter is dan dit aantal weken.
|
||
BEGIN
|
||
IF p_start IS NOT NULL AND p_eind > p_start
|
||
THEN
|
||
v_zelfde_weekdag := (TO_CHAR(p_start, 'D') = TO_CHAR(p_eind, 'D'));
|
||
v_zelfde_dag := (TO_CHAR(p_start, 'dd') = TO_CHAR(p_eind, 'dd'));
|
||
v_zelfde_maand := (TO_CHAR(p_start, 'mm') = TO_CHAR(p_eind, 'mm'));
|
||
CASE WHEN (v_zelfde_dag AND v_zelfde_maand)
|
||
THEN
|
||
v_type := 'Y';
|
||
v_aantal := TO_NUMBER(TO_CHAR(p_eind, 'yyyy')) - TO_NUMBER(TO_CHAR(p_start, 'yyyy'));
|
||
WHEN (v_zelfde_dag AND NOT v_zelfde_maand)
|
||
THEN
|
||
v_type := 'M';
|
||
v_aantal := ROUND(MONTHS_BETWEEN(p_eind, p_start));
|
||
WHEN (v_zelfde_weekdag)
|
||
THEN
|
||
v_type := 'W';
|
||
v_aantal := ROUND((p_eind - p_start) / 7);
|
||
ELSE
|
||
v_type := 'D';
|
||
v_aantal := p_eind - p_start;
|
||
IF p_afronden
|
||
THEN
|
||
CASE WHEN v_aantal > (365 * min_jaar)
|
||
THEN -- afronden op jaren
|
||
v_type := 'Y';
|
||
v_aantal := ROUND(v_aantal / 365);
|
||
WHEN v_aantal > (30 * min_maand)
|
||
THEN -- afronden op maanden
|
||
v_type := 'M';
|
||
v_aantal := ROUND(v_aantal / 30);
|
||
WHEN v_aantal > (7 * min_week)
|
||
THEN -- afronden op weken
|
||
v_type := 'W';
|
||
v_aantal := ROUND(v_aantal / 7);
|
||
END CASE;
|
||
END IF;
|
||
END CASE;
|
||
END IF;
|
||
--
|
||
v_aantal := LEAST(v_aantal, 999);
|
||
IF v_aantal < 0
|
||
THEN
|
||
v_aantal := 0;
|
||
v_type := 'W';
|
||
END IF;
|
||
--
|
||
p_termijn_type := v_type;
|
||
p_termijn_aantal := v_aantal;
|
||
END; -- SUBPROC bepaal_termijn
|
||
|
||
-- SUBPROC
|
||
-- p_kenmerkwaarde = 'Looptijd Maximaal|1=24'. Ofwel: kenmerk_omschrijving|groep=waarde.
|
||
-- p_kenmerkwaarde = '1049|1=24'. Ofwel: kenmerk_key|groep=waarde.
|
||
PROCEDURE upsert_cntkenmerk( p_cnt_key IN NUMBER
|
||
, p_kenmerkwaarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_key NUMBER;
|
||
v_srtkenmerk_type cnt_srtkenmerk.cnt_srtkenmerk_kenmerktype%TYPE;
|
||
ccount NUMBER;
|
||
v_srtkenmerk_key NUMBER;
|
||
v_groep NUMBER;
|
||
v_kenmerk VARCHAR2 (50);
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
|
||
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
|
||
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_kenmerkdeel_key NUMBER;
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
BEGIN
|
||
IF p_kenmerkwaarde IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerk [' || SUBSTR(p_kenmerkwaarde, 1, 200) || ']';
|
||
|
||
v_kenmerk := SUBSTR (p_kenmerkwaarde, 1, INSTR (p_kenmerkwaarde, '|') - 1);
|
||
v_groep := fac.safe_to_number(SUBSTR( p_kenmerkwaarde
|
||
, INSTR(p_kenmerkwaarde, '|') + 1
|
||
, INSTR(p_kenmerkwaarde, '=') - 1 - INSTR(p_kenmerkwaarde, '|')
|
||
)
|
||
);
|
||
v_waarde := SUBSTR(p_kenmerkwaarde, INSTR(p_kenmerkwaarde, '=') + 1);
|
||
|
||
IF fac.safe_to_number(v_kenmerk) IS NULL
|
||
THEN
|
||
-- Er kunnen drie kenmerken met dezelfde omschrijving gedefinieerd worden voor een object,
|
||
-- namenlijk op drie niveaus discipline (D), 0bjectgroep (G) en objectsoort (S).
|
||
-- Bij meerdere dezelfde kenmerken nemen we het kenmerk met de laagste volgnummer.
|
||
SELECT cnt_kenmerk_key
|
||
, cnt_srtkenmerk_key
|
||
, cnt_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key
|
||
, v_srtkenmerk_key
|
||
, v_srtkenmerk_type
|
||
FROM ( SELECT k.cnt_kenmerk_key
|
||
, sk.cnt_srtkenmerk_key
|
||
, sk.cnt_srtkenmerk_kenmerktype
|
||
, k.cnt_kenmerk_volgnummer
|
||
FROM cnt_v_aanwezigcontract c
|
||
, cnt_kenmerk k
|
||
, cnt_srtkenmerk sk
|
||
WHERE ( c.ins_discipline_key = k.cnt_srtcontract_key
|
||
or k.cnt_srtcontract_key IS NULL
|
||
)
|
||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND c.cnt_contract_key = p_cnt_key
|
||
AND k.cnt_kenmerk_groep = v_groep
|
||
AND COALESCE(UPPER(k.cnt_kenmerk_omschrijving), sk.cnt_srtkenmerk_upper) = UPPER(v_kenmerk)
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||
ORDER BY k.cnt_kenmerk_volgnummer
|
||
)
|
||
WHERE ROWNUM = 1;
|
||
ELSE
|
||
SELECT k.cnt_kenmerk_key
|
||
, sk.cnt_srtkenmerk_key
|
||
, sk.cnt_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key
|
||
, v_srtkenmerk_key
|
||
, v_srtkenmerk_type
|
||
FROM cnt_kenmerk k
|
||
, cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_groep
|
||
AND k.cnt_kenmerk_key = v_kenmerk
|
||
ORDER BY k.cnt_kenmerk_volgnummer;
|
||
END IF;
|
||
|
||
IF v_waarde IS NOT NULL
|
||
THEN
|
||
IF v_srtkenmerk_type IN ('R', 'r', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
WHERE sk.cnt_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
IF ccount = 1
|
||
THEN
|
||
-- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
, fac_v_aanwezigusrdata ud
|
||
WHERE sk.cnt_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND UPPER(TRIM(ud.fac_usrdata_omschr)) = UPPER(v_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 cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
WHERE sk.cnt_srtkenmerk_key = v_srtkenmerk_key
|
||
AND sk.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', v_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)
|
||
NULL; -- v_waarde := p_waarde;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij bepalen huidige waarde';
|
||
SELECT COUNT(*)
|
||
, MAX(cnt_kenmerkcontract_key)
|
||
INTO ccount
|
||
, v_kenmerkdeel_key
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_contract_key = p_cnt_key
|
||
AND cnt_kenmerk_key = v_kenmerk_key;
|
||
|
||
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
|
||
THEN
|
||
v_waarde := REPLACE(v_waarde, ',', '.');
|
||
END IF;
|
||
|
||
IF ccount = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
INSERT INTO cnt_kenmerkcontract
|
||
( cnt_contract_key
|
||
, cnt_kenmerk_key
|
||
, cnt_kenmerkcontract_waarde
|
||
)
|
||
VALUES ( p_cnt_key
|
||
, v_kenmerk_key
|
||
, v_waarde
|
||
);
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_waarde = v_waarde
|
||
WHERE cnt_kenmerkcontract_key = v_kenmerkdeel_key;
|
||
END IF;
|
||
ELSE
|
||
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
|
||
DELETE cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = v_kenmerk_key
|
||
AND cnt_contract_key = p_cnt_key;
|
||
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, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'upsert_cntkenmerk'
|
||
);
|
||
END; -- SUBPROC upsert_cntkenmerk
|
||
|
||
-- SUBPROC
|
||
PROCEDURE onroerendgoed_to_scope( loc IN VARCHAR2 DEFAULT NULL
|
||
, ter IN VARCHAR2 DEFAULT NULL
|
||
, bld IN VARCHAR2 DEFAULT NULL
|
||
, flr IN NUMBER DEFAULT NULL
|
||
, room IN VARCHAR2 DEFAULT NULL
|
||
, scope_typ OUT VARCHAR2
|
||
, scope_key OUT NUMBER
|
||
, scope_err OUT VARCHAR2
|
||
)
|
||
AS
|
||
BEGIN
|
||
IF loc IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_locatie_key
|
||
INTO scope_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE alg_locatie_code = loc;
|
||
scope_typ := 'L';
|
||
IF ter IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_terreinsector_key
|
||
INTO scope_key
|
||
FROM alg_v_aanwezigterreinsector
|
||
WHERE alg_locatie_key = scope_key
|
||
AND alg_terreinsector_code = ter;
|
||
scope_typ := 'T';
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
scope_err := 'Onbekende terreinsector: ' || ter || ' in ' || loc;
|
||
END;
|
||
ELSE
|
||
BEGIN
|
||
IF bld IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_gebouw_key
|
||
INTO scope_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = scope_key
|
||
AND alg_gebouw_code = bld;
|
||
scope_typ := 'G';
|
||
IF flr IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_verdieping_key
|
||
INTO scope_key
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE alg_gebouw_key = scope_key
|
||
AND alg_verdieping_volgnr = flr;
|
||
scope_typ := 'V';
|
||
IF room IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT alg_ruimte_key
|
||
INTO scope_key
|
||
FROM alg_v_aanwezigruimte
|
||
WHERE alg_verdieping_key = scope_key
|
||
AND alg_ruimte_nr = room;
|
||
scope_typ := 'R';
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
scope_err := 'Onbekende ruimte: ' || room || ' in ' || loc ||'-'|| bld ||'-'|| TO_CHAR(flr);
|
||
END;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
scope_err := 'Onbekende verdieping: ' || TO_CHAR(flr) || ' in ' || loc ||'-'|| bld;
|
||
END;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
scope_err := 'Onbekend gebouw: ' || bld || ' in ' || loc;
|
||
END;
|
||
END IF;
|
||
END;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
scope_err := 'Onbekende locatie: ' || loc;
|
||
END;
|
||
END IF;
|
||
END; -- SUBPROC onroerendgoed_to_scope
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_cntnew := 0;
|
||
v_count_cntupd := 0;
|
||
v_aanduiding := '';
|
||
|
||
v_errormsg := 'Fout bij bepalen user: _FACILITOR';
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_facilitor_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_FACILITOR';
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_geldig := 1;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '['|| rec.cnt_soort ||'|'|| rec.nummer_intern ||'|'|| rec.nummer_extern ||'|'|| rec.beschrijving ||'] ';
|
||
|
||
-- Eerst controleren of de ingevulde gegevens wel zinning/geldig zijn.
|
||
-- Voor -ontbrekende- verplichte gegevens proberen we wat zinnigs (en
|
||
-- geldigs!) te bedenken.
|
||
-- Toevoegen/bijwerken wordt pas gedaan als alles zinnig is bevonden.
|
||
|
||
-- Verplichte velden (via interface) zijn bij import al gecontroleerd!
|
||
-- Afdeling: moet geldig zijn!
|
||
v_errormsg := 'Fout bij bepalen afdeling: ' || rec.afdeling;
|
||
IF (rec.prs_afdeling_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Eigenaar (als meegegeven)
|
||
-- In geval van abonnement verplicht.
|
||
IF (rec.perslid_eig IS NOT NULL AND rec.prs_perslid_key_eig IS NULL)
|
||
THEN -- *niet gevonden, wel meegegeven
|
||
v_errormsg := 'Fout bij bepalen eigenaar: ' || rec.perslid_eig;
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'leeg gelaten'
|
||
);
|
||
ELSIF (rec.prs_perslid_key_eig IS NOT NULL)
|
||
THEN -- *wel gevonden (impliceert meegegeven)
|
||
v_perslid_key_eig := rec.prs_perslid_key_eig;
|
||
ELSE -- *niet meegegeven, dus niet gevonden
|
||
IF (rec.ins_discipline_key IS NOT NULL)
|
||
THEN -- Speciaal geval abonnementen: abonnee (eigenaar) is dan verplicht.
|
||
-- Contract is een abonnement, als de contractsoort aan een catalogus
|
||
-- gekoppeld is.
|
||
-- Is er een (actuele) catalogus aan deze contractsoort gekoppeld?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM bes_disc_params p
|
||
, bes_discipline b
|
||
WHERE p.bes_disc_params_cnt_disckey = rec.ins_discipline_key
|
||
AND p.bes_ins_discipline_key = b.ins_discipline_key
|
||
AND b.ins_discipline_verwijder IS NULL;
|
||
|
||
IF (v_count > 0)
|
||
THEN -- dit is een abonnement, dus de eigenaar is verplicht
|
||
v_errormsg := 'Fout bij bepalen eigenaar-abonnee';
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Beheerder: backup _FACILITOR.
|
||
v_errormsg := 'Fout bij bepalen beheerder: ' || rec.perslid_beh;
|
||
IF (rec.prs_perslid_key_beh IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, '_FACILITOR gebruikt'
|
||
);
|
||
v_perslid_key_beh := v_facilitor_key;
|
||
ELSE
|
||
v_perslid_key_beh := rec.prs_perslid_key_beh;
|
||
END IF;
|
||
|
||
-- Bedrijf: moet geldig zijn!
|
||
v_errormsg := 'Fout bij bepalen bedrijf: ' || rec.bedrijf_naam;
|
||
IF (rec.prs_bedrijf_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Kostenplaats: moet bestaan.
|
||
v_errormsg := 'Fout bij bepalen kostenplaats: ' || rec.kpn_code;
|
||
IF (rec.prs_kostenplaats_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
onroerendgoed_to_scope( rec.locatiecode, rec.terreincode, rec.gebouwcode, rec.verdiepingcode, rec.ruimtecode
|
||
, v_scope_code, v_scope_key, v_scope_err);
|
||
-- Locatie/gebouw (als meegegeven): moet bestaan en ook passen bij de
|
||
-- contractsoort (type_key 3=Ondersteuning of 5=Leverancier).
|
||
IF (v_scope_code IS NOT NULL)
|
||
THEN
|
||
IF v_scope_err IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen scope: ' || v_scope_err;
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract/scope wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij matchen contractsoort-scope';
|
||
IF (rec.cnt_srtcontract_type NOT IN (3, 5))
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract/scope wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Mantel: niet verplicht, wel rapporteren als niets gevonden.
|
||
v_errormsg := 'Fout bij bepalen mantel: ' || rec.mantel_nr;
|
||
IF (rec.mantel_nr IS NOT NULL AND rec.mantel_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract niet aan mantel gekoppeld'
|
||
);
|
||
END IF;
|
||
|
||
-- Dienst: niet verplicht, wel rapporteren als niets gevonden.
|
||
v_errormsg := 'Fout bij bepalen dienst: ' || rec.dienst;
|
||
IF (rec.dienst IS NOT NULL AND rec.prs_dienst_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract niet aan dienst gekoppeld'
|
||
);
|
||
END IF;
|
||
|
||
-- Alleen verder gaan als alles zinnig bevonden is.
|
||
IF (v_geldig = 1)
|
||
THEN
|
||
-- Contractsoort: toevoegen (type Leverancier).
|
||
IF (rec.ins_discipline_key IS NULL)
|
||
THEN
|
||
-- Misschien is de contractsoort tijdens import al toegevoegd?
|
||
-- (dan was 'ie er voor de cursor nog niet.)
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen contractsoort';
|
||
SELECT ins_discipline_key
|
||
INTO v_cnt_discipline_key
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND UPPER(ins_discipline_omschrijving) = UPPER(rec.cnt_soort);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
-- Contractsoort bestaat gewoon niet; toevoegen.
|
||
v_errormsg := 'Fout bij toevoegen contractsoort:' || rec.cnt_soort;
|
||
INSERT INTO ins_tab_discipline
|
||
( ins_discipline_module
|
||
, ins_discipline_omschrijving
|
||
)
|
||
VALUES ( 'CNT'
|
||
, rec.cnt_soort
|
||
)
|
||
RETURNING ins_discipline_key
|
||
INTO v_cnt_discipline_key;
|
||
|
||
-- Type Leverancier, geen kostensoort, geen factuurmarges.
|
||
INSERT INTO cnt_disc_params
|
||
( cnt_ins_discipline_key
|
||
, cnt_srtcontract_type
|
||
)
|
||
VALUES ( v_cnt_discipline_key
|
||
, c_contract_type
|
||
);
|
||
|
||
fac.imp_writelog( p_import_key, 'I'
|
||
, v_aanduiding || 'Contractsoort "' || rec.cnt_soort || '" aangemaakt'
|
||
, 'Nieuwe contractsoort'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_cnt_discipline_key := rec.ins_discipline_key;
|
||
END IF;
|
||
|
||
-- Nu de contractsoort bekend is kunnen ook de overige gegevens bij het contractsoort worden toegevoegd.
|
||
UPDATE cnt_disc_params
|
||
SET cnt_disc_params_factuurboeken = rec.factuurboeken
|
||
WHERE cnt_ins_discipline_key = v_cnt_discipline_key;
|
||
|
||
-- Contactpersoon (als meegegeven): bepalen/toevoegen bij bedrijf.
|
||
IF (rec.contact_naam IS NOT NULL AND rec.prs_contactpersoon_key IS NULL)
|
||
THEN
|
||
-- Misschien is de contractpersoon tijdens import al toegevoegd?
|
||
-- (dan was 'ie er voor de cursor nog niet.)
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen contactpersoon';
|
||
SELECT prs_contactpersoon_key
|
||
INTO v_contactpersoon_key
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL
|
||
AND prs_bedrijf_key = rec.prs_bedrijf_key
|
||
AND UPPER(prs_contactpersoon_naam) = UPPER(rec.contact_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
-- Contactpersoon bestaat gewoon niet; toevoegen.
|
||
v_errormsg := 'Fout bij toevoegen contactpersoon:' || rec.contact_naam;
|
||
INSERT INTO prs_contactpersoon
|
||
( prs_contactpersoon_naam
|
||
, prs_bedrijf_key
|
||
)
|
||
VALUES ( rec.contact_naam
|
||
, rec.prs_bedrijf_key
|
||
)
|
||
RETURNING prs_contactpersoon_key
|
||
INTO v_contactpersoon_key;
|
||
|
||
fac.imp_writelog( p_import_key, 'I'
|
||
, v_aanduiding || 'Contactpersoon "' || rec.contact_naam || '" aangemaakt'
|
||
, 'Nieuwe contactpersoon'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_contactpersoon_key := rec.prs_contactpersoon_key;
|
||
END IF;
|
||
|
||
-- Opzegtermijn: bepalen/toevoegen.
|
||
-- Als geen opzegtermijn ingevuld, dan is er geen opzegtermijn: 'Geen' = 0 weken.
|
||
v_errormsg := 'Fout bij bepalen opzegtermijn';
|
||
bepaal_termijn(rec.datum_opzeg, rec.datum_eind, v_termijn_type, v_termijn_aantal, true);
|
||
|
||
-- Bestaat de termijn al?
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen opzegtermijn';
|
||
SELECT cnt_termijn_key
|
||
INTO v_termijn_key_opzeg
|
||
FROM cnt_termijn
|
||
WHERE cnt_termijn_type = v_termijn_type
|
||
AND cnt_termijn_aantal = v_termijn_aantal;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
v_errormsg := 'Fout bij toevoegen opzegtermijn';
|
||
INSERT INTO cnt_termijn
|
||
( cnt_termijn_omschrijving
|
||
, cnt_termijn_type
|
||
, cnt_termijn_aantal
|
||
)
|
||
VALUES ( TO_CHAR(v_termijn_aantal) || CASE WHEN v_termijn_type = 'Y' THEN 'Jaar'
|
||
WHEN v_termijn_type = 'M' THEN 'Maand(en)'
|
||
WHEN v_termijn_type = 'D' THEN 'Dage(en)'
|
||
END
|
||
, v_termijn_type
|
||
, v_termijn_aantal
|
||
)
|
||
RETURNING cnt_termijn_key
|
||
INTO v_termijn_key_opzeg;
|
||
END;
|
||
|
||
-- Rappeltermijn: bepalen/toevoegen.
|
||
-- Als geen rappeltermijn ingevuld, dan is er geen rappeltermijn: 'Geen' = 0 weken.
|
||
v_errormsg := 'Fout bij bepalen rappeltermijn';
|
||
-- Als geen opzegdatum, dan einddatum.
|
||
bepaal_termijn(rec.datum_rappel, COALESCE(rec.datum_opzeg, rec.datum_eind), v_termijn_type, v_termijn_aantal, true);
|
||
|
||
-- Bestaat de termijn al?
|
||
BEGIN
|
||
v_errormsg := 'Bepalen rappeltermijn';
|
||
SELECT cnt_termijn_key
|
||
INTO v_termijn_key_rappel
|
||
FROM cnt_termijn
|
||
WHERE cnt_termijn_type = v_termijn_type
|
||
AND cnt_termijn_aantal = v_termijn_aantal;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
v_errormsg := 'Toevoegen rappeltermijn';
|
||
INSERT INTO cnt_termijn
|
||
( cnt_termijn_omschrijving
|
||
, cnt_termijn_type
|
||
, cnt_termijn_aantal
|
||
)
|
||
VALUES ( TO_CHAR(v_termijn_aantal) || CASE WHEN v_termijn_type = 'Y' THEN 'Jaar'
|
||
WHEN v_termijn_type = 'M' THEN 'Maand(en)'
|
||
WHEN v_termijn_type = 'D' THEN 'Dage(en)'
|
||
END
|
||
, v_termijn_type
|
||
, v_termijn_aantal
|
||
)
|
||
RETURNING cnt_termijn_key
|
||
INTO v_termijn_key_rappel;
|
||
END;
|
||
|
||
-- Controleren of er al een contract met hetzelfde nummer en versie;
|
||
-- bestaat; toevoegen vs. bijwerken.
|
||
v_errormsg := 'Fout bij bepalen contract';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM cnt_v_aanwezigcontract
|
||
WHERE TRIM(cnt_contract_nummer_intern) = rec.nummer_intern
|
||
AND COALESCE(cnt_contract_versie, '0') = COALESCE(rec.versie, '0');
|
||
|
||
IF (v_count = 0) -- Contract bestaat nog niet --> toevoegen.
|
||
THEN
|
||
-- Als rec.nummer_intern is NULL, dan wordt door FACILITOR een
|
||
-- nummer bepaald (= cnt_contract_key)!
|
||
v_errormsg := 'Fout bij toevoegen contract.';
|
||
-- Status van nieuwe melding is afhankelijk van of het contract approval mechanisme actief is en
|
||
-- het bedrag moet groter zijn als limiet 1 anders hoeft er <20>berhaupt niet gefiatteerd te worden en kan het contract direct actief (0) worden.
|
||
IF fac.getSetting('cnt_contract_approval') = 1 AND rec.bedrag > fac.getSetting('cnt_contract_limit1')
|
||
THEN
|
||
v_cnt_status := 2;
|
||
v_srtnoti_code := '@CNTNEW'; -- nog niet direct versturen
|
||
ELSE
|
||
v_cnt_status := 0;
|
||
v_srtnoti_code := 'CNTNEW';
|
||
END IF;
|
||
|
||
INSERT INTO cnt_contract
|
||
( cnt_contract_nummer
|
||
, cnt_contract_omschrijving
|
||
, cnt_contract_looptijd_tot
|
||
, cnt_contract_kosten
|
||
, cnt_contract_uurloon
|
||
, cnt_prs_bedrijf_key
|
||
, cnt_contract_nummer_intern
|
||
, cnt_contract_korting
|
||
, prs_contactpersoon_key
|
||
, ins_discipline_key
|
||
, cnt_contract_document
|
||
, prs_perslid_key_eig
|
||
, prs_perslid_key_beh
|
||
, prs_afdeling_key_eig
|
||
, cnt_contract_status
|
||
, cnt_contract_looptijd_van
|
||
, prs_kostenplaats_key
|
||
, prs_kostensoort_key
|
||
, cnt_contract_termijnkosten
|
||
, cnt_contract_opmerking
|
||
, cnt_contract_mantel_key
|
||
, cnt_contract_opzegtermijn
|
||
, cnt_contract_rappeltermijn
|
||
, cnt_contract_versie
|
||
, prs_dienst_key
|
||
, cnt_contract_verlenging
|
||
)
|
||
VALUES ( rec.nummer_extern
|
||
, rec.beschrijving
|
||
, rec.datum_eind
|
||
, rec.bedrag
|
||
, rec.uurtarief
|
||
, rec.prs_bedrijf_key
|
||
, rec.nummer_intern
|
||
, rec.korting
|
||
, v_contactpersoon_key
|
||
, v_cnt_discipline_key
|
||
, rec.omschrijving
|
||
, v_perslid_key_eig
|
||
, v_perslid_key_beh
|
||
, rec.prs_afdeling_key
|
||
, v_cnt_status
|
||
, rec.datum_ingang
|
||
, rec.prs_kostenplaats_key
|
||
, rec.prs_kostensoort_key
|
||
, rec.bedrag_termijn
|
||
, rec.opmerking
|
||
, rec.mantel_key
|
||
, v_termijn_key_opzeg
|
||
, v_termijn_key_rappel
|
||
, rec.versie
|
||
, rec.prs_dienst_key
|
||
, rec.verlengen
|
||
)
|
||
RETURNING cnt_contract_key
|
||
INTO v_contract_key;
|
||
|
||
v_count_cntnew := v_count_cntnew + 1;
|
||
ELSE -- Contract bestaat al --> bijwerken.
|
||
SELECT c.cnt_contract_key
|
||
INTO v_contract_key
|
||
FROM cnt_contract c
|
||
WHERE TRIM(c.cnt_contract_nummer_intern) = rec.nummer_intern
|
||
AND COALESCE(c.cnt_contract_versie, '0') = COALESCE(rec.versie, '0')
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND c.cnt_contract_looptijd_tot = (SELECT MAX(d.cnt_contract_looptijd_tot)
|
||
FROM cnt_contract d
|
||
WHERE d.cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
|
||
AND COALESCE(d.cnt_contract_versie, '0') = COALESCE(c.cnt_contract_versie, '0')
|
||
);
|
||
|
||
v_errormsg := 'Fout bij bijwerken contract.';
|
||
UPDATE cnt_contract
|
||
SET cnt_contract_nummer = rec.nummer_extern
|
||
, cnt_contract_omschrijving = rec.beschrijving
|
||
, cnt_contract_looptijd_tot = rec.datum_eind
|
||
, cnt_contract_kosten = rec.bedrag
|
||
, cnt_contract_uurloon = rec.uurtarief
|
||
, cnt_prs_bedrijf_key = rec.prs_bedrijf_key
|
||
, cnt_contract_korting = rec.korting
|
||
, prs_contactpersoon_key = v_contactpersoon_key
|
||
, ins_discipline_key = v_cnt_discipline_key
|
||
, cnt_contract_document = rec.omschrijving
|
||
, prs_perslid_key_eig = v_perslid_key_eig
|
||
, prs_perslid_key_beh = v_perslid_key_beh
|
||
, prs_afdeling_key_eig = rec.prs_afdeling_key
|
||
, cnt_contract_looptijd_van = rec.datum_ingang
|
||
, prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||
, prs_kostensoort_key = rec.prs_kostensoort_key
|
||
, cnt_contract_termijnkosten = rec.bedrag_termijn
|
||
, cnt_contract_opmerking = rec.opmerking
|
||
, cnt_contract_mantel_key = rec.mantel_key
|
||
, cnt_contract_opzegtermijn = v_termijn_key_opzeg
|
||
, cnt_contract_rappeltermijn = v_termijn_key_rappel
|
||
, cnt_contract_versie = rec.versie
|
||
, prs_dienst_key = rec.prs_dienst_key
|
||
, cnt_contract_verlenging = rec.verlengen
|
||
WHERE cnt_contract_key = v_contract_key;
|
||
|
||
v_srtnoti_code := 'CNTUPD';
|
||
v_count_cntupd := v_count_cntupd + 1;
|
||
END IF;
|
||
|
||
-- Upsert gebouwscope: bij UPDATE eerst kijken of scope al bestaat.
|
||
-- Zo niet, dan toevoegen (bij INSERT altijd toevoegen).
|
||
-- NB. Op deze manier kan een contract meerdere keren voorkomen in
|
||
-- het importbestand, met verschillende gebouwen.
|
||
IF (v_scope_code IS NOT NULL)
|
||
THEN -- Komt deze scope al voor?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM cnt_contract_plaats
|
||
WHERE cnt_contract_key = v_contract_key
|
||
AND cnt_alg_plaats_key = v_scope_key
|
||
AND cnt_alg_plaats_code = v_scope_code;
|
||
|
||
IF (v_count = 0) -- Scope komt nog niet voor, dus toevoegen.
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen scope';
|
||
INSERT INTO cnt_contract_plaats
|
||
( cnt_contract_key
|
||
, cnt_alg_plaats_key
|
||
, cnt_alg_plaats_code
|
||
)
|
||
VALUES ( v_contract_key
|
||
, v_scope_key
|
||
, v_scope_code
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde1);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde2);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde3);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde4);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde5);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde6);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde7);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde8);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde9);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde10);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde11);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde12);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde13);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde14);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde15);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde16);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde17);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde18);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde19);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde20);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde21);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde22);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde23);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde24);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde25);
|
||
|
||
fac.trackaction(v_srtnoti_code, v_contract_key, NULL, NULL, NULL);
|
||
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 || ')';
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#toegevoegd: ' || TO_CHAR (v_count_cntnew), '');
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#bijgewerkt: ' || TO_CHAR (v_count_cntupd), '');
|
||
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 contracten afgebroken!'
|
||
);
|
||
END fac_update_cnt;
|
||
/
|
||
|
||
-------------------------------- Standaard Export Procedures -----------------------------------
|
||
-- JGL: Overigens is bij een ORDER BY DBMS_RANDOM.VALUE niet gegarandeerd dat die voor
|
||
-- elke regel een unieke waarde heeft! Vergelijk 'ORDER BY SYSDATE': dit zou ook niet sorteren.
|
||
-- http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:3181424400346795479
|
||
CREATE OR REPLACE PROCEDURE fac_select_kto_kandidaten (
|
||
p_applname IN VARCHAR2, p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
-- NIET via de koninklijke route fac.gettrackingdate vanwege enorme performance-killer!
|
||
|
||
-- Alle reserveringscatalogi met hun percentage, drempel en het aantal afgemelde reserveringen van de afgelopen periode
|
||
-- tot en met 'gisteren' (dus nog niet die van vandaag), of de afgelopen week als het de eerste keer is
|
||
-- NOOT: Alleen ruimte-reserveringen vooralsnog!
|
||
CURSOR c_cluster_r
|
||
IS
|
||
SELECT d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage perc,
|
||
COALESCE (d.ins_discipline_ktodrempel, 0) drempel,
|
||
COUNT (res_rsv_ruimte_key) aantal
|
||
FROM res_rsv_ruimte rrr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr,
|
||
ins_tab_discipline d
|
||
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = d.ins_discipline_key
|
||
AND rrr.res_rsv_ruimte_tot > (SELECT GREATEST(COALESCE(MAX(res_rsv_ruimte_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM res_rsv_ruimte irrr,
|
||
res_ruimte_opstelling iro,
|
||
res_ruimte irr
|
||
WHERE irrr.res_ruimte_opstel_key = iro.res_ruimte_opstel_key
|
||
AND iro.res_ruimte_key = irr.res_ruimte_key
|
||
AND irr.res_discipline_key = d.ins_discipline_key)
|
||
AND rrr.res_rsv_ruimte_tot < SYSDATE
|
||
AND res_rsv_ruimte_kto_verstuurd IS NULL
|
||
AND ins_discipline_ktopercentage > 0
|
||
GROUP BY d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage,
|
||
d.ins_discipline_ktodrempel;
|
||
|
||
|
||
CURSOR c_lijst_r (
|
||
p_ins_discipline_key NUMBER
|
||
)
|
||
IS
|
||
SELECT rrr.res_rsv_ruimte_key,
|
||
SYSDATE ts
|
||
FROM res_rsv_ruimte rrr,
|
||
res_ruimte_opstelling ro,
|
||
res_ruimte rr,
|
||
res_discipline d,
|
||
prs_perslid p
|
||
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
|
||
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
||
AND ro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rr.res_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_key = p_ins_discipline_key
|
||
-- Contactpersoon van reservering heeft mail-adres
|
||
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
AND rrr.res_rsv_ruimte_tot > (SELECT GREATEST(COALESCE(MAX(res_rsv_ruimte_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM res_rsv_ruimte irrr,
|
||
res_ruimte_opstelling iro,
|
||
res_ruimte irr
|
||
WHERE irrr.res_ruimte_opstel_key = iro.res_ruimte_opstel_key
|
||
AND iro.res_ruimte_key = irr.res_ruimte_key
|
||
AND irr.res_discipline_key = d.ins_discipline_key)
|
||
AND rrr.res_rsv_ruimte_tot < SYSDATE
|
||
AND res_rsv_ruimte_kto_verstuurd IS NULL
|
||
ORDER BY DBMS_RANDOM.VALUE;
|
||
|
||
-- NIET via de koninklijke route fac.gettrackingdate vanwege enorme performance-killer!
|
||
-- Alle vakgroepen met hun percentage, drempel en het aantal afgemelde meldingen van de afgelopen periode
|
||
CURSOR c_cluster_m
|
||
IS
|
||
SELECT d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage perc,
|
||
COALESCE (d.ins_discipline_ktodrempel, 0) drempel,
|
||
COUNT (mld_melding_key) aantal
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline d,
|
||
fac_tracking t,
|
||
fac_srtnotificatie sn
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
-- Afgemelde meldingen van afgelopen periode
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'MLDAFM'
|
||
AND t.fac_tracking_datum > (SELECT GREATEST(COALESCE(MAX(mld_melding_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM mld_melding im,
|
||
mld_stdmelding istd
|
||
WHERE im.mld_stdmelding_key = istd.mld_stdmelding_key
|
||
AND istd.mld_ins_discipline_key = d.ins_discipline_key)
|
||
AND mld_melding_kto_verstuurd IS NULL
|
||
AND ins_discipline_ktopercentage > 0
|
||
GROUP BY d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage,
|
||
d.ins_discipline_ktodrempel;
|
||
|
||
CURSOR c_lijst_m (
|
||
p_ins_discipline_key NUMBER
|
||
)
|
||
IS
|
||
SELECT m.mld_melding_key,
|
||
SYSDATE ts
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline d,
|
||
prs_perslid p,
|
||
fac_tracking t,
|
||
fac_srtnotificatie sn
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_key = p_ins_discipline_key
|
||
-- Persoon van melding heeft mail-adres
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
AND m.mld_melding_kto = 1
|
||
-- Afgemelde meldingen van afgelopen periode
|
||
AND m.mld_melding_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'MLDAFM'
|
||
AND t.fac_tracking_datum > (SELECT GREATEST(COALESCE(MAX(mld_melding_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM mld_melding im,
|
||
mld_stdmelding istd
|
||
WHERE im.mld_stdmelding_key = istd.mld_stdmelding_key
|
||
AND istd.mld_ins_discipline_key = d.ins_discipline_key)
|
||
AND mld_melding_kto_verstuurd IS NULL
|
||
ORDER BY DBMS_RANDOM.VALUE;
|
||
|
||
-- NIET via de koninklijke route fac.gettrackingdate vanwege enorme performance-killer!
|
||
-- Alle bestelcatalogi met hun percentage, drempel en het aantal afgemelde bestellingen van de afgelopen periode
|
||
CURSOR c_cluster_b
|
||
IS
|
||
SELECT d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage perc,
|
||
COALESCE (d.ins_discipline_ktodrempel, 0) drempel,
|
||
COUNT (b.bes_bestelling_key) aantal
|
||
FROM bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
fac_tracking t,
|
||
fac_srtnotificatie sn
|
||
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
-- Afgemelde bestellingen van afgelopen periode
|
||
AND b.bes_bestelling_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'BESOTV'
|
||
AND t.fac_tracking_datum > (SELECT GREATEST(COALESCE(MAX(bes_bestelling_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM bes_bestelling ib,
|
||
bes_bestelling_item ibi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg
|
||
WHERE ib.bes_bestelling_key = ibi.bes_bestelling_key
|
||
AND ibi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = d.ins_discipline_key)
|
||
AND bes_bestelling_kto_verstuurd IS NULL
|
||
AND ins_discipline_ktopercentage > 0
|
||
GROUP BY d.ins_discipline_key,
|
||
d.ins_discipline_ktopercentage,
|
||
d.ins_discipline_ktodrempel;
|
||
|
||
|
||
CURSOR c_lijst_b (
|
||
p_ins_discipline_key NUMBER
|
||
)
|
||
IS
|
||
SELECT DISTINCT b.bes_bestelling_key,
|
||
SYSDATE ts
|
||
FROM bes_bestelling b,
|
||
bes_bestelling_item bi,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
prs_perslid p,
|
||
fac_tracking t,
|
||
fac_srtnotificatie sn
|
||
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_discipline_key = p_ins_discipline_key
|
||
-- Persoon van melding heeft mail-adres
|
||
AND b.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_email IS NOT NULL
|
||
-- Afgemelde bestellingen van afgelopen periode
|
||
AND b.bes_bestelling_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_code = 'BESOTV'
|
||
AND t.fac_tracking_datum > (SELECT GREATEST(COALESCE(MAX(bes_bestelling_kto_verstuurd), SYSDATE-7), SYSDATE-7)
|
||
FROM bes_bestelling ib,
|
||
bes_bestelling_item ibi,
|
||
bes_srtdeel isd,
|
||
bes_srtgroep isg
|
||
WHERE ib.bes_bestelling_key = ibi.bes_bestelling_key
|
||
AND ibi.bes_srtdeel_key = isd.bes_srtdeel_key
|
||
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
|
||
AND isg.ins_discipline_key = d.ins_discipline_key)
|
||
AND bes_bestelling_kto_verstuurd IS NULL
|
||
ORDER BY DBMS_RANDOM.VALUE;
|
||
|
||
v_aantal_kto NUMBER;
|
||
v_count_upd NUMBER;
|
||
v_count NUMBER;
|
||
v_errorhint VARCHAR2(200);
|
||
v_omschrijving VARCHAR2(4000);
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
|
||
-- KTO's op meldingen
|
||
v_errorhint := 'Doorloop de vakgroepen';
|
||
FOR rec1 IN c_cluster_m
|
||
LOOP
|
||
BEGIN
|
||
IF (rec1.perc <> 0 OR rec1.drempel <> 0) AND rec1.aantal > 0
|
||
THEN
|
||
-- Vakgroep heeft afgemelde meldingen in de voorgaande periode,
|
||
-- en het is een vakgroep waarop KTO van toepassing is (volgens ingesteld percentage en/of een drempel)
|
||
v_aantal_kto := TRUNC ( (rec1.perc * rec1.aantal) / 100);
|
||
IF v_aantal_kto < rec1.drempel
|
||
THEN
|
||
v_aantal_kto := rec1.drempel;
|
||
END IF;
|
||
|
||
v_count_upd := 1;
|
||
|
||
FOR rec2 IN c_lijst_m (rec1.ins_discipline_key)
|
||
LOOP
|
||
BEGIN
|
||
IF v_count_upd <= v_aantal_kto
|
||
THEN
|
||
v_errorhint := 'Toevoegen meldingen kto-notificatie';
|
||
UPDATE mld_melding
|
||
SET mld_melding_kto_verstuurd = rec2.ts
|
||
WHERE mld_melding_key = rec2.mld_melding_key;
|
||
fac.trackaction('MLDKTO', rec2.mld_melding_key, NULL, rec2.ts, NULL);
|
||
END IF;
|
||
v_count_upd := v_count_upd + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Exception ' || oracle_err_mes;
|
||
fac.writelog (
|
||
p_applname,
|
||
'W',
|
||
v_errormsg,
|
||
'Aanmaken Melding KTO: ' || rec2.mld_melding_key
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- KTO's op reserveringen
|
||
v_errorhint := 'Doorloop de reserveerbare ruimtecatalogi';
|
||
FOR rec1 IN c_cluster_r
|
||
LOOP
|
||
BEGIN
|
||
IF (rec1.perc <> 0 OR rec1.drempel <> 0) AND rec1.aantal > 0
|
||
THEN
|
||
-- Ruimtecatalogus heeft reserveringen die in de voorgaande periode zijn beeindigd
|
||
-- en het is een catalogus waarop KTO van toepassing is (volgens ingesteld percentage en/of een drempel)
|
||
v_aantal_kto := TRUNC ( (rec1.perc * rec1.aantal) / 100);
|
||
IF v_aantal_kto < rec1.drempel
|
||
THEN
|
||
v_aantal_kto := rec1.drempel;
|
||
END IF;
|
||
|
||
v_count_upd := 1;
|
||
|
||
FOR rec2 IN c_lijst_r (rec1.ins_discipline_key)
|
||
LOOP
|
||
BEGIN
|
||
IF v_count_upd <= v_aantal_kto
|
||
THEN
|
||
v_errorhint := 'Toevoegen reserveringen kto-notificatie';
|
||
UPDATE res_rsv_ruimte
|
||
SET res_rsv_ruimte_kto_verstuurd = rec2.ts
|
||
WHERE res_rsv_ruimte_key = rec2.res_rsv_ruimte_key;
|
||
fac.trackaction('RESKTO', rec2.res_rsv_ruimte_key, NULL, rec2.ts, NULL);
|
||
END IF;
|
||
v_count_upd := v_count_upd + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Exception ' || oracle_err_mes;
|
||
fac.writelog (
|
||
p_applname,
|
||
'W',
|
||
v_errormsg,
|
||
'Aanmaken Reservering KTO: ' || rec2.res_rsv_ruimte_key
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- KTO's op bestellingen
|
||
v_errorhint := 'Doorloop de bestelcatalogi';
|
||
FOR rec1 IN c_cluster_b
|
||
LOOP
|
||
BEGIN
|
||
IF (rec1.perc <> 0 OR rec1.drempel <> 0) AND rec1.aantal > 0
|
||
THEN
|
||
-- Bestelcatalogus heeft geleverde bestellingen in de voorgaande periode,
|
||
-- en het is een catalogus waarop KTO van toepassing is (volgens ingesteld percentage en/of een drempel)
|
||
v_aantal_kto := TRUNC ( (rec1.perc * rec1.aantal) / 100);
|
||
IF v_aantal_kto < rec1.drempel
|
||
THEN
|
||
v_aantal_kto := rec1.drempel;
|
||
END IF;
|
||
|
||
v_count_upd := 1;
|
||
|
||
FOR rec2 IN c_lijst_b (rec1.ins_discipline_key)
|
||
LOOP
|
||
BEGIN
|
||
IF v_count_upd <= v_aantal_kto
|
||
THEN
|
||
v_errorhint := 'Toevoegen bestellingen kto-notificatie';
|
||
UPDATE bes_bestelling
|
||
SET bes_bestelling_kto_verstuurd = rec2.ts
|
||
WHERE bes_bestelling_key = rec2.bes_bestelling_key;
|
||
fac.trackaction('BESKTO', rec2.bes_bestelling_key, NULL, rec2.ts, NULL);
|
||
END IF;
|
||
v_count_upd := v_count_upd + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Exception ' || oracle_err_mes;
|
||
fac.writelog (
|
||
p_applname,
|
||
'W',
|
||
v_errormsg,
|
||
'Aanmaken Bestelling KTO: ' || rec2.bes_bestelling_key
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- Procedure om aan te geven voor welke meldingen een kto verzonden moet worden.
|
||
CREATE OR REPLACE PROCEDURE fac_export_kto_kandidaten (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
END;
|
||
/
|
||
|
||
|
||
-- MS-Exchange sync-import: onthoudt de laatste syncstate van een reserveerbare ruimte
|
||
-- met betekenis: tot die markering ben ik bij.
|
||
-- versie met een CLOB voor de syncstate, omdat die in de praktijk langer
|
||
-- dan 4000 karakters blijkt te kunnen zijn. De XSL-stylesheet knipt de syncstate uit
|
||
-- de XML op in stukken van max 4000 karakters -- deze import plakt die weer aan elkaar.
|
||
CREATE OR REPLACE PROCEDURE fac_import_exchsync (p_import_key IN NUMBER)
|
||
AS
|
||
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
||
v_fielddelimitor VARCHAR2 (2);
|
||
v_errormsg VARCHAR2 (200);
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
--
|
||
v_res_ruimte_key res_ruimte.res_ruimte_key%TYPE;
|
||
v_syncstate VARCHAR2(4000);
|
||
v_len NUMBER;
|
||
v_sync NUMBER;
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
rec1 c1%ROWTYPE;
|
||
BEGIN
|
||
v_fielddelimitor := fac.import_delimiter(p_import_key);
|
||
header_is_valid := 0;
|
||
v_len := 0;
|
||
|
||
-- De res_ruimte_key waar we het over hebben zit in de refkey van de import
|
||
SELECT fac_import_refkey
|
||
INTO v_res_ruimte_key
|
||
FROM fac_import
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
SELECT r.res_ruimte_key - COALESCE(s.res_ruimte_key, 0)
|
||
INTO v_sync
|
||
FROM res_ruimte r
|
||
, res_ruimte_sync s
|
||
WHERE r.res_ruimte_key = s.res_ruimte_key(+)
|
||
AND r.res_ruimte_extern_id IS NOT NULL
|
||
AND r.res_ruimte_key = v_res_ruimte_key;
|
||
--
|
||
-- v_sync: no_data_found --> niet gevonden, niets doen.
|
||
-- 0 --> bestaat in res_ruimte en res_ruimte_sync.
|
||
-- >0 --> bestaat alleen in res_ruimte.
|
||
IF (v_sync = 0)
|
||
THEN
|
||
-- Syncstate leegmaken, zodat we 'n append kunnen doen.
|
||
UPDATE res_ruimte_sync
|
||
SET res_ruimte_syncstate = NULL
|
||
WHERE res_ruimte_key = v_res_ruimte_key;
|
||
ELSE
|
||
-- Voeg een res_ruimte_sync record toe.
|
||
INSERT INTO res_ruimte_sync (res_ruimte_key)
|
||
VALUES (v_res_ruimte_key);
|
||
END IF;
|
||
|
||
FOR rec1 IN c1 LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_syncstate);
|
||
|
||
IF header_is_valid = 0
|
||
THEN
|
||
IF UPPER (TRIM (v_syncstate)) LIKE '%SYNCSTATE%'
|
||
THEN
|
||
header_is_valid := 1;
|
||
DBMS_OUTPUT.put_line ('goeie header');
|
||
END IF;
|
||
ELSE
|
||
v_errormsg := 'Fout bij update van syncstate';
|
||
DBMS_OUTPUT.put_line ('echte data');
|
||
|
||
-- Stylesheet knipt syncstates langer dan 4000 karakters op in meerdere delen
|
||
-- Hier weer aan elkaar plakken.
|
||
UPDATE res_ruimte_sync
|
||
SET res_ruimte_syncstate = res_ruimte_syncstate || TRIM(v_syncstate),
|
||
res_ruimte_syncdate = SYSDATE
|
||
WHERE res_ruimte_key = v_res_ruimte_key;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Lange syncstate? (>4000) Dat even loggen.
|
||
v_errormsg := 'Fout bij bepalen lengte syncstate';
|
||
SELECT LENGTH(res_ruimte_syncstate)
|
||
INTO v_len
|
||
FROM res_ruimte_sync
|
||
WHERE res_ruimte_key = v_res_ruimte_key;
|
||
|
||
IF (v_len > 4000)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Lange syncstate, ' || v_len || ' karakters',
|
||
'res_ruimte_key: ' || v_res_ruimte_key);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 1000);
|
||
v_errormsg := oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'res_ruimte_key: ' || v_res_ruimte_key);
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_exchsync (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_translation (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key);
|
||
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_tot NUMBER (10);
|
||
v_count_imp NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (4000);
|
||
-- De importvelden
|
||
v_label VARCHAR2 (100);
|
||
v_module VARCHAR2 (100);
|
||
v_lang VARCHAR2 (100);
|
||
v_tekst VARCHAR2 (4000);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM fac_imp_translation;
|
||
|
||
COMMIT;
|
||
v_count_tot := 0;
|
||
v_count_imp := 0;
|
||
header_is_valid := 0;
|
||
|
||
FOR rec1 IN c1 LOOP
|
||
BEGIN
|
||
v_errormsg := 'Error fetching record';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_delim, v_label);
|
||
fac.imp_getfield (v_newline, c_delim, v_module);
|
||
fac.imp_getfield (v_newline, c_delim, v_lang);
|
||
fac.imp_getfield (v_newline, c_delim, v_tekst);
|
||
|
||
v_aanduiding := '[' || v_label || '|' || v_lang || '|' || v_tekst || '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop.
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF ( UPPER (v_label) = 'LABEL'
|
||
AND UPPER (v_module) = 'MODULE'
|
||
AND UPPER (SUBSTR(v_lang,1,8)) = 'LANGUAGE' -- er mag best nog wat achter staan
|
||
AND UPPER (SUBSTR(v_tekst,1,11)) = 'TRANSLATION') -- er mag best nog wat achter staan
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Label invalid';
|
||
v_label := SUBSTR (TRIM (v_label), 1, 60);
|
||
|
||
v_errormsg := 'Module invalid';
|
||
v_module := UPPER (SUBSTR (TRIM (v_module), 1, 3));
|
||
|
||
--Opportunity: sanitize the module, currently valid are
|
||
-- ASP, BES, BEZ, CNT,FAC, FIN, INS, MLD, MSG, PRJ, PRS, RES
|
||
|
||
v_errormsg := 'Language invalid';
|
||
v_lang := SUBSTR (TRIM (v_lang), 1, 3);
|
||
|
||
IF (v_lang IS NULL)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Record ignored');
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
--
|
||
v_errormsg := 'Translation invalid';
|
||
-- Assume that spaces are relevant so do not trim here
|
||
v_tekst := SUBSTR (v_tekst, 1, 2000);
|
||
--
|
||
|
||
-- Insert geformatteerde import record
|
||
IF (v_ongeldig = 0)
|
||
THEN
|
||
BEGIN
|
||
v_errormsg := 'Error inserting record';
|
||
|
||
INSERT INTO fac_imp_translation (locale_label, locale_module, locale_lang, locale_tekst)
|
||
VALUES (v_label, v_module, v_lang, v_tekst);
|
||
|
||
COMMIT;
|
||
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_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',
|
||
'Invalid FACILITOR translation file',
|
||
'No valid header [LABEL|MODULE|LANGUAGE|TRANSLATION] found!');
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Translation/#valid lines: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Translation/#invalid lines: ' || TO_CHAR (v_count_tot - v_count_imp),
|
||
'');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Import of translation aborted!');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_translation (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT * FROM fac_imp_translation;
|
||
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (4000);
|
||
v_geldig NUMBER (1);
|
||
v_count_new NUMBER;
|
||
v_count_upd NUMBER;
|
||
v_count_tot NUMBER;
|
||
v_count_skipped NUMBER;
|
||
v_existingkey fac_locale_xsl.fac_locale_xsl_key%TYPE;
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_new := 0;
|
||
v_count_upd := 0;
|
||
v_count_skipped := 0;
|
||
v_aanduiding := '';
|
||
|
||
FOR rec IN c1 LOOP
|
||
BEGIN
|
||
v_geldig := 1;
|
||
v_aanduiding :=
|
||
'[' || rec.locale_label || '|' || rec.locale_module || '|' || rec.locale_lang || '|' || rec.locale_tekst || '] ';
|
||
|
||
v_existingkey := 0;
|
||
|
||
-- Valid label? Prevent injection of non-standard labels
|
||
BEGIN
|
||
SELECT 1
|
||
INTO v_geldig
|
||
FROM fac_locale_xsl
|
||
WHERE fac_locale_xsl_module = rec.locale_module
|
||
AND fac_locale_xsl_label = rec.locale_label;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_geldig := 0;
|
||
v_count_skipped := v_count_skipped + 1;
|
||
WHEN TOO_MANY_ROWS
|
||
THEN
|
||
v_geldig := 1; -- ongewijzigd
|
||
END;
|
||
|
||
IF v_geldig = 1
|
||
THEN
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
--existing translation ?
|
||
SELECT MAX (fac_locale_xsl_key)
|
||
INTO v_existingkey
|
||
FROM fac_locale_xsl
|
||
WHERE fac_locale_xsl_module = rec.locale_module
|
||
AND fac_locale_xsl_label = rec.locale_label
|
||
AND fac_locale_xsl_lang = rec.locale_lang;
|
||
|
||
IF v_existingkey IS NULL
|
||
THEN
|
||
INSERT INTO fac_locale_xsl (fac_locale_xsl_module,
|
||
fac_locale_xsl_label,
|
||
fac_locale_xsl_lang,
|
||
fac_locale_xsl_tekst)
|
||
VALUES (rec.locale_module,
|
||
rec.locale_label,
|
||
rec.locale_lang,
|
||
rec.locale_tekst);
|
||
|
||
v_count_new := v_count_new + 1;
|
||
ELSE
|
||
UPDATE fac_locale_xsl
|
||
SET fac_locale_xsl_tekst = rec.locale_tekst,
|
||
fac_locale_xsl_isvalid = 1
|
||
WHERE fac_locale_xsl_key = v_existingkey;
|
||
|
||
v_count_upd := v_count_upd + 1;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
-- Fallback maar weer bijwerken.
|
||
lcl.fallback_languages;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'#imported: ' || TO_CHAR (v_count_tot),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'#added: ' || TO_CHAR (v_count_new),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'#updated: ' || TO_CHAR (v_count_upd),
|
||
'');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'#ignored: ' || TO_CHAR (v_count_skipped),
|
||
'');
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := v_errormsg || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Import of translation aborted!');
|
||
END;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_vrijedagen(p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_csv_col01 datum
|
||
, fac_imp_csv_col02 calendarid
|
||
FROM fac_imp_csv
|
||
WHERE fac_import_key = p_import_key;
|
||
|
||
v_errormsg VARCHAR2 (1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_new NUMBER := 0;
|
||
v_datum DATE;
|
||
v_calendar_id VARCHAR2 (50);
|
||
|
||
BEGIN
|
||
FOR vrije_dag in c1
|
||
LOOP
|
||
BEGIN
|
||
v_datum := TO_DATE(vrije_dag.datum, 'dd-mm-yyyy');
|
||
INSERT INTO mld_vrije_dagen
|
||
( mld_vrije_dagen_datum
|
||
, mld_vrije_dagen_id
|
||
)
|
||
VALUES (v_datum, COALESCE(vrije_dag.calendarid, 'Default'));
|
||
v_count_new := v_count_new + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg := vrije_dag.calendarid ||' - '|| vrije_dag.datum || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
|
||
END;
|
||
END LOOP;
|
||
fac.imp_writelog (p_import_key, 'S', '#added: ' || TO_CHAR(v_count_new), '');
|
||
COMMIT;
|
||
END fac_update_vrijedagen;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_taak_mjob(p_import_key IN NUMBER)
|
||
IS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_csv_index
|
||
, fac_imp_csv_col01 objectidentificatie
|
||
, fac_imp_csv_col02 objectaanteh
|
||
, fac_imp_csv_col03 objectaantal
|
||
, fac_imp_csv_col04 taakcategorie
|
||
, fac_imp_csv_col05 taakomschrijving
|
||
, fac_imp_csv_col06 taakopmerking
|
||
, fac_imp_csv_col07 taakgroep
|
||
, fac_imp_csv_col08 taakprioriteit
|
||
, fac_imp_csv_col09 taakbtw
|
||
, fac_imp_csv_col10 taakkostenplaatsnr
|
||
, fac_imp_csv_col11 taakkostenplaatsomschrijving
|
||
, fac_imp_csv_col12 taakobjectpercentage
|
||
, fac_imp_csv_col13 taakobjectopmerking
|
||
, fac_imp_csv_col14 taakobjecteenheid
|
||
, fac_imp_csv_col15 taakobjectperiode
|
||
, fac_imp_csv_col16 taakobjectstartjaar
|
||
, fac_imp_csv_col17 taakobjecteindjaar
|
||
, fac_imp_csv_col18 taakobjectmateriaal
|
||
, fac_imp_csv_col19 taakdienst
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index > 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
v_errormsg VARCHAR2(1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_header_is_valid NUMBER(1) := 0;
|
||
v_ongeldig NUMBER(1) := 0;
|
||
v_count_rec NUMBER := 0;
|
||
v_count_verwerk NUMBER;
|
||
v_count_n_taak NUMBER;
|
||
v_count_n_taakobject NUMBER;
|
||
v_count_w_taak NUMBER;
|
||
|
||
v_deel_key ins_deel.ins_deel_key%TYPE; --NUMBER(10);
|
||
v_ins_srtdeel_key ins_srtdeel.ins_srtdeel_key%TYPE; --NUMBER(10);
|
||
v_ins_srtdeel_code ins_srtdeel.ins_srtdeel_code%TYPE; --VARCHAR2(10)
|
||
v_discipline_key ins_tab_discipline.ins_discipline_key%TYPE; --NUMBER(10)
|
||
v_ismjob ctr_disc_params.ctr_disc_params_ismjob%TYPE; --NUMBER(1)
|
||
v_taakomschrijving ins_srtcontrole.ins_srtcontrole_omschrijving%TYPE; --VARCHAR2(60)
|
||
v_srtcontrole_key ins_srtcontrole.ins_srtcontrole_key%TYPE; --NUMBER(10)
|
||
v_taakopmerking ins_srtcontrole.ins_srtcontrole_opmerking%TYPE; --VARCHAR2(320)
|
||
v_taakgroep ins_srtcontrole.ins_srtcontrole_groep%TYPE; --VARCHAR2(60)
|
||
v_taakprioriteit ins_srtcontrole.ins_srtcontrole_level%TYPE; --NUMBER(3)
|
||
v_taakbtw_str VARCHAR2(10);
|
||
v_btwtabelwaarde_key fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE; --NUMBER(10)
|
||
v_kostenplaats_key prs_kostenplaats.prs_kostenplaats_key%TYPE; --NUMBER(10)
|
||
v_taakobjectaantal ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aantal%TYPE; --NUMBER(8,2)
|
||
v_taakobjectaanteh ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aanteh%TYPE; --VARCHAR2(30)
|
||
v_taakobjectpercentage ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_perc%TYPE; --NUMBER(3)
|
||
v_taakobjectopmerking ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_opmerk%TYPE; --VARCHAR2(320)
|
||
v_taakobjecteenheid ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_eenheid%TYPE; --NUMBER(3)
|
||
v_taakobjectperiode ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_periode%TYPE; --NUMBER(6,2)
|
||
v_taakobjectstartjaar_str VARCHAR2(10);
|
||
v_taakobjecteindjaar_str VARCHAR2(10);
|
||
v_taakobjectstartjaar_d ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_startdat%TYPE; --DATE
|
||
v_taakobjecteindjaar_d ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_eind%TYPE; --DATE
|
||
v_taakobjectmateriaal ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_materia%TYPE; --NUMBER(9,2)
|
||
v_taakdienst prs_dienst.prs_dienst_omschrijving%TYPE; --VARCHAR2(60)
|
||
v_ins_srtcontroledl_xcp_key ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_key%TYPE; --NUMBER(10);
|
||
v_taakobject_startjaar_d ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_startdat%TYPE; --DATE;
|
||
v_taak_geschiedenis NUMBER;
|
||
|
||
v_header VARCHAR2(500) := 'OBJECTIDENTIFICATIE;OBJECTAANTEH;OBJECTAANTAL;TAAKCATEGORIE;TAAKOMSCHRIJVING;TAAKOPMERKING;TAAKGROEP;'
|
||
|| 'TAAKPRIORITEIT;TAAKBTW;TAAKKOSTENPLAATSNR;TAAKKOSTENPLAATSOMSCHRIJVING;TAAKOBJECTPERCENTAGE;'
|
||
|| 'TAAKOBJECTOPMERKING;TAAKOBJECTEENHEID;TAAKOBJECTPERIODE;TAAKOBJECTSTARTJAAR;TAAKOBJECTEINDJAAR;'
|
||
|| 'TAAKOBJECTKOSTEN;DIENST';
|
||
v_header_csv VARCHAR2(500);
|
||
|
||
BEGIN
|
||
v_errormsg := 'Fout inlezen header ';
|
||
SELECT REPLACE(UPPER(fac_imp_csv_col01 ||';'|| fac_imp_csv_col02 ||';'|| fac_imp_csv_col03 ||';'|| fac_imp_csv_col04 ||';'|| fac_imp_csv_col05 ||';'||
|
||
fac_imp_csv_col06 ||';'|| fac_imp_csv_col07 ||';'|| fac_imp_csv_col08 ||';'|| fac_imp_csv_col09 ||';'|| fac_imp_csv_col10 ||';'||
|
||
fac_imp_csv_col11 ||';'|| fac_imp_csv_col12 ||';'|| fac_imp_csv_col13 ||';'|| fac_imp_csv_col14 ||';'|| fac_imp_csv_col15 ||';'||
|
||
fac_imp_csv_col16 ||';'|| fac_imp_csv_col17 ||';'|| fac_imp_csv_col18 ||';'|| fac_imp_csv_col19
|
||
), ' ', '')
|
||
INTO v_header_csv
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index = 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
-- Eerst opruimen
|
||
DELETE FROM fac_imp_taak_mjob;
|
||
|
||
IF (v_header LIKE v_header_csv || '%')
|
||
THEN
|
||
v_header_is_valid := 1;
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_rec := v_count_rec + 1;
|
||
-- CSV-kolom A: Controleer of het object bestaat
|
||
-- Controleer of object er meerdere keren in staat (valt terug naar OTHERS, regel 300)
|
||
BEGIN
|
||
v_errormsg := 'Fout bij opzoeken object: ' || rec.objectidentificatie ||' komt vaker dan 1 keer voor';
|
||
SELECT d.ins_deel_key
|
||
, d.ins_srtdeel_key
|
||
, s.ins_srtdeel_code
|
||
INTO v_deel_key
|
||
, v_ins_srtdeel_key
|
||
, v_ins_srtdeel_code
|
||
FROM ins_deel d
|
||
, ins_srtdeel s
|
||
WHERE d.ins_srtdeel_key = s.ins_srtdeel_key
|
||
AND UPPER(d.ins_deel_omschrijving) = UPPER(rec.objectidentificatie)
|
||
AND d.ins_deel_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Object bestaat niet - Regel wordt niet verwerkt '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom B: Controleer de taakobject eenheid op lengte
|
||
v_taakobjectaanteh := SUBSTR(TRIM(rec.objectaanteh), 1, 30);
|
||
IF LENGTH(TRIM(rec.objectaanteh)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'taak aantal eenheid - Aangepast ivm lengte groter dan 30 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.objectaanteh || ' wordt: ' ||v_taakobjectaanteh);
|
||
END IF;
|
||
|
||
-- CSV-kolom C: Controleer de taakobject aantal
|
||
v_errormsg := 'Fout controleren objectaantal ';
|
||
v_taakobjectaantal := fac.safe_to_number(REPLACE(rec.objectaantal, ',', '.'));
|
||
IF rec.objectaantal IS NOT NULL AND v_taakobjectaantal IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Object aantal niet goed ingevuld - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'ObjectAantal csv: ' || rec.objectaantal);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom D: Controleer de taakcategorie
|
||
BEGIN
|
||
v_errormsg := 'Fout bij controleren taakcategorie ' ;
|
||
SELECT d.ins_discipline_key
|
||
, dp.ctr_disc_params_ismjob
|
||
INTO v_discipline_key
|
||
, v_ismjob
|
||
FROM ins_tab_discipline d
|
||
, ctr_disc_params dp
|
||
WHERE dp.ctr_ins_discipline_key = d.ins_discipline_key
|
||
AND UPPER(d.ins_discipline_omschrijving) = TRIM(UPPER(rec.taakcategorie));
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Inspectie discipline niet gevonden - Regel wordt niet verwerkt '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.taakcategorie);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom E: Controleer of taak bestaat
|
||
v_errormsg := 'Fout controleren nieuwe of bestaande taak ' || rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakomschrijving;
|
||
v_taakomschrijving := SUBSTR(v_ins_srtdeel_code || ' - ' || TRIM(rec.taakomschrijving), 1, 60);
|
||
IF (LENGTH(v_ins_srtdeel_code) + 3 + LENGTH(TRIM(rec.taakomschrijving))) > 60
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'Nieuwe taak - Aangepast ivm lengte groter dan 60 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakomschrijving || ' wordt: ' || v_taakomschrijving);
|
||
END IF;
|
||
SELECT MAX(ins_srtcontrole_key)
|
||
INTO v_srtcontrole_key
|
||
FROM ins_srtcontrole
|
||
WHERE LOWER(ins_srtcontrole_omschrijving) = LOWER(v_taakomschrijving);
|
||
-- v_srtcontrole_key = null als de taak nog niet bestaat.
|
||
|
||
-- CSV-kolom F: Controleer taak opmerking
|
||
v_errormsg := 'Fout controleren taak opmerking ';
|
||
v_taakopmerking := SUBSTR(TRIM(rec.taakopmerking), 1, 60);
|
||
IF LENGTH(TRIM(rec.taakopmerking)) > 320
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'taak opmerking - Aangepast ivm lengte groter dan 320 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakopmerking || ' wordt: ' || v_taakopmerking);
|
||
END IF;
|
||
|
||
-- CSV-kolom G: Controleer taakgroep
|
||
v_errormsg := 'Fout controleren taakgroep ';
|
||
v_taakgroep := SUBSTR(TRIM(rec.taakgroep), 1, 60);
|
||
IF LENGTH(TRIM(rec.taakgroep)) > 60
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'taakgroep - Aangepast ivm lengte groter dan 60 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakgroep || ' wordt: ' || v_taakgroep);
|
||
END IF;
|
||
|
||
-- CSV-kolom H: Controleer de taakprioriteit - Leeg of numeriek
|
||
v_errormsg := 'Fout controleren taakprioriteit ';
|
||
IF rec.taakprioriteit IS NOT NULL AND fac.safe_to_number(rec.taakprioriteit) IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Prioriteit taak niet goed ingevuld - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'Kosten csv: ' || rec.taakprioriteit);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
v_taakprioriteit := rec.taakprioriteit;
|
||
END IF;
|
||
|
||
-- CSV-kolom I: Controleer btwtarief
|
||
v_errormsg := 'Fout controleren btw-tarief ';
|
||
v_taakbtw_str := LOWER(TRIM(rec.taakbtw));
|
||
IF v_taakbtw_str IS NOT NULL AND v_taakbtw_str NOT IN ('hoog','laag','nul')
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'BTW-tarief taak niet goed ingevuld - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'Kosten csv: ' || rec.taakbtw);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
IF v_taakbtw_str IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT w.fin_btwtabelwaarde_key
|
||
INTO v_btwtabelwaarde_key
|
||
FROM fin_btwtabel t
|
||
, fin_btwtabelwaarde w
|
||
WHERE t.fin_btwtabel_key = w.fin_btwtabel_key
|
||
AND t.fin_btwtabel_default = 1
|
||
AND t.fin_btwtabel_verwijder is null
|
||
AND w.fin_btwtabelwaarde_verwijder is null
|
||
AND LOWER(w.fin_btwtabelwaarde_oms) = v_taakbtw_str;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'BTW-tarief taak niet gevonden - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'Kosten csv: ' || rec.taakbtw);
|
||
v_ongeldig := 1;
|
||
END;
|
||
ELSE
|
||
-- geen btw-tarief ingevuld: ok
|
||
v_btwtabelwaarde_key := NULL;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom J, K: Controleer kostenplaats
|
||
v_errormsg := 'Fout controleren kostenplaats';
|
||
IF TRIM(rec.taakkostenplaatsnr) IS NOT NULL OR TRIM(rec.taakkostenplaatsomschrijving) IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT MAX(prs_kostenplaats_key)
|
||
INTO v_kostenplaats_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_verwijder IS NULL
|
||
AND UPPER(prs_kostenplaats_nr) = UPPER(TRIM(rec.taakkostenplaatsnr))
|
||
AND UPPER(prs_kostenplaats_omschrijving) = UPPER(TRIM(rec.taakkostenplaatsomschrijving));
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Kostenplaats bestaat niet - Regel wordt niet verwerkt '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.taakkostenplaatsnr || '- ' || rec.taakkostenplaatsomschrijving);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom L: Controleer Percentage
|
||
v_errormsg := 'Fout controleren percentage ';
|
||
v_taakobjectpercentage := ROUND(fac.safe_to_number(REPLACE(rec.taakobjectpercentage, ',','.')));
|
||
IF ((rec.taakobjectpercentage IS NOT NULL AND v_taakobjectpercentage IS NULL) OR (v_taakobjectpercentage IS NOT NULL AND v_taakobjectpercentage NOT BETWEEN 0 AND 100))
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Percentage taak niet goed ingevuld - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'Kosten csv: ' || rec.taakobjectpercentage);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
IF v_taakobjectpercentage IS NULL
|
||
THEN
|
||
v_taakobjectpercentage := 100; -- Default 100 procent.
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom M: Controleer lengte opmerking
|
||
v_errormsg := 'Fout controleren opmerking ';
|
||
v_taakobjectopmerking := SUBSTR(TRIM(rec.taakobjectopmerking), 1, 320);
|
||
IF LENGTH(TRIM(rec.taakobjectopmerking)) > 320
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'taakobject opmerking - Aangepast ivm lengte groter dan 320 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakobjectopmerking || ' wordt: ' || v_taakobjectopmerking);
|
||
END IF;
|
||
|
||
-- CSV-kolom N: Controleer de eenheid
|
||
v_errormsg := 'Fout controleren taakeenheid ';
|
||
IF ((rec.taakobjecteenheid IS NOT NULL AND rec.taakobjecteenheid NOT IN ('1', '2', '3', '4')) OR (rec.taakobjecteenheid IS NULL))
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Eenheid is niet correct gevuld (1,2,3,4) - Regel wordt niet verwerkt '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakobjecteenheid);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
v_taakobjecteenheid := fac.safe_to_number(rec.taakobjecteenheid);
|
||
IF v_ismjob = 1
|
||
THEN
|
||
v_taakobjecteenheid := 4;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom O: Controleer de periode
|
||
v_errormsg := 'Fout controleren taakperiode ';
|
||
IF ((rec.taakobjectperiode IS NOT NULL AND fac.safe_to_number(rec.taakobjectperiode) IS NULL) OR (rec.taakobjectperiode IS NULL))
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Ongeldige taakobjectperiode - Regel wordt niet verwerkt '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakobjectperiode);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
v_taakobjectperiode := fac.safe_to_number(rec.taakobjectperiode);
|
||
END IF;
|
||
|
||
-- CSV-kolom P: Controleer de startdatum; deze is verplicht
|
||
v_errormsg := 'Fout bij controle startdatum ';
|
||
v_taakobjectstartjaar_str := TRIM(rec.taakobjectstartjaar);
|
||
IF LENGTH (v_taakobjectstartjaar_str) = 4
|
||
THEN -- In geval jaar-invoer op datum zetten..
|
||
v_taakobjectstartjaar_str := '01-01-' || v_taakobjectstartjaar_str;
|
||
END IF;
|
||
v_taakobjectstartjaar_d := fac.safe_to_date(v_taakobjectstartjaar_str, 'dd-mm-yyyy');
|
||
IF v_taakobjectstartjaar_d IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Startdatum leeg of ongeldige invoer - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - Datum csv: ' || rec.taakobjectstartjaar);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom Q: Controleer de einddatum
|
||
v_errormsg := 'Fout bij controle einddatum ';
|
||
v_taakobjecteindjaar_str := TRIM(rec.taakobjecteindjaar);
|
||
IF LENGTH (v_taakobjecteindjaar_str) = 4
|
||
THEN -- In geval jaar-invoer op datum zetten..
|
||
v_taakobjecteindjaar_str := '31-12-' || v_taakobjecteindjaar_str;
|
||
END IF;
|
||
v_taakobjecteindjaar_d := fac.safe_to_date(v_taakobjecteindjaar_str, 'dd-mm-yyyy');
|
||
IF v_taakobjecteindjaar_str IS NOT NULL AND v_taakobjecteindjaar_d IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Einddatum ongeldige invoer - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - Datum csv: ' || rec.taakobjecteindjaar);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom R: Controleer de materiaalkosten - leeg of numeriek
|
||
v_errormsg := 'Fout controleren materiaalkosten ';
|
||
v_taakobjectmateriaal := fac.safe_to_number(REPLACE(rec.taakobjectmateriaal, ',', '.'));
|
||
IF rec.taakobjectmateriaal IS NOT NULL AND v_taakobjectmateriaal IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'E', 'Kosten taakobject niet goed ingevuld - Regel wordt niet verwerkt.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || 'Kosten csv: ' || rec.taakobjectmateriaal);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom S: Controleer dienst
|
||
v_errormsg := 'Fout controleren dienst ';
|
||
v_taakdienst := SUBSTR(TRIM(rec.taakdienst), 1, 60);
|
||
IF LENGTH(TRIM(rec.taakdienst)) > 60
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'dienst - Aangepast ivm lengte groter dan 60 '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || rec.taakdienst || ' wordt: ' || v_taakdienst);
|
||
END IF;
|
||
|
||
--
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
-- Controleren of voor de bestaande taak ook de objecttaak al bestaat...
|
||
IF v_deel_key IS NOT NULL AND v_srtcontrole_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout controleren nieuwe of bestaande objecttaak ' || rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || v_taakomschrijving ;
|
||
SELECT MAX(t.ins_srtcontroledl_xcp_key)
|
||
, MAX(t.ins_srtcontroledl_xcp_startdat)
|
||
INTO v_ins_srtcontroledl_xcp_key
|
||
, v_taakobject_startjaar_d
|
||
FROM ins_srtcontroledl_xcp t
|
||
WHERE t.ins_srtcontrole_key = v_srtcontrole_key
|
||
AND t.ins_deel_key = v_deel_key;
|
||
|
||
-- Controleren of er al geschiedenis op de objecttaak zit en de startdatum afwijkt van degene meegegeven in csv
|
||
v_errormsg := 'Fout controleren geschiedenis op objecttaak ';
|
||
IF v_ins_srtcontroledl_xcp_key IS NOT NULL
|
||
THEN
|
||
SELECT COUNT(*)
|
||
INTO v_taak_geschiedenis
|
||
FROM ins_deelsrtcontrole
|
||
WHERE ins_deel_key = v_deel_key
|
||
AND ins_srtcontrole_key = v_srtcontrole_key;
|
||
|
||
IF v_taak_geschiedenis > 0 AND v_taakobjectstartjaar_str IS NOT NULL AND v_taakobjectstartjaar_d <> v_taakobject_startjaar_d
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', 'Op deze objecttaak zit al geschiedenis - afwijkende startdatum zal niet aangepast worden.. '
|
||
, rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || v_taakomschrijving || ' - ' || v_taakobjectstartjaar_d || ' vs. ' || v_taakobject_startjaar_d);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout opslaan in fac_imp_taak_mjob ' || rec.fac_imp_csv_index || ' - ' || rec.objectidentificatie || ' - ' || v_taakomschrijving ;
|
||
INSERT INTO fac_imp_taak_mjob
|
||
( ins_deel_key
|
||
, ctr_discipline_key
|
||
, ismjob
|
||
, ins_srtcontrole_omschrijving
|
||
, ins_srtcontrole_key
|
||
, ins_srtcontrole_opmerking
|
||
, ins_srtcontrole_groep
|
||
, ins_srtcontrole_prioriteit
|
||
, fin_btwtabelwaarde_key
|
||
, prs_kostenplaats_key
|
||
, ins_srtcontroledl_xcp_aantal
|
||
, ins_srtcontroledl_xcp_aanteh
|
||
, ins_srtcontroledl_xcp_perc
|
||
, ins_srtcontroledl_xcp_opmerk
|
||
, ins_srtcontroledl_xcp_eenheid
|
||
, ins_srtcontroledl_xcp_periode
|
||
, ins_srtcontroledl_xcp_start
|
||
, ins_srtcontroledl_xcp_eind
|
||
, ins_srtcontroledl_xcp_materia
|
||
, prs_dienst_omschrijving
|
||
, ins_srtcontroledl_xcp_key
|
||
)
|
||
VALUES
|
||
( v_deel_key
|
||
, v_discipline_key
|
||
, v_ismjob
|
||
, v_taakomschrijving
|
||
, v_srtcontrole_key
|
||
, v_taakopmerking
|
||
, v_taakgroep
|
||
, v_taakprioriteit
|
||
, v_btwtabelwaarde_key
|
||
, v_kostenplaats_key
|
||
, v_taakobjectaantal
|
||
, v_taakobjectaanteh
|
||
, v_taakobjectpercentage
|
||
, v_taakobjectopmerking
|
||
, v_taakobjecteenheid
|
||
, v_taakobjectperiode
|
||
, v_taakobjectstartjaar_d
|
||
, v_taakobjecteindjaar_d
|
||
, v_taakobjectmateriaal
|
||
, v_taakdienst
|
||
, v_ins_srtcontroledl_xcp_key
|
||
);
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
fac.imp_writelog(p_import_key, 'E', 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_errormsg);
|
||
END;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
-- Aantallen tellen voor logging
|
||
v_errormsg := 'Fout bij tellen aantallen voor logging ' ;
|
||
v_count_verwerk := 0 ; -- aantal te verwerken regels
|
||
v_count_n_taak := 0 ; -- aantal nieuw aan te maken basistaken
|
||
v_count_n_taakobject := 0 ; -- aantal nieuw aan te maken objecttaken
|
||
v_count_w_taak := 0 ; -- aantal bestaande (object)taken te wijzigen
|
||
|
||
SELECT count(*) INTO v_count_verwerk FROM fac_imp_taak_mjob ;
|
||
SELECT count(*) INTO v_count_n_taak FROM (SELECT DISTINCT(ins_srtcontrole_omschrijving) FROM fac_imp_taak_mjob WHERE ins_srtcontrole_key IS NULL);
|
||
SELECT count(*) INTO v_count_n_taakobject FROM fac_imp_taak_mjob WHERE ins_srtcontroledl_xcp_key IS NULL ;
|
||
SELECT count(*) INTO v_count_w_taak FROM fac_imp_taak_mjob WHERE ins_srtcontrole_key IS NOT NULL AND ins_srtcontroledl_xcp_key IS NOT NULL ;
|
||
|
||
IF v_header_is_valid = 0
|
||
THEN
|
||
fac.imp_writelog(p_import_key, 'E', 'Ongeldig importbestand', 'Toelichting: Verkeerde header. Niet conform specs. ');
|
||
ELSE
|
||
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: import' || CHR(13) || CHR(10)
|
||
|| 'Aantal te verwerken regels: ' || TO_CHAR (v_count_verwerk) || ' (van de ' || TO_CHAR (v_count_rec) || ' records in csv)' || CHR(13) || CHR(10)
|
||
|| 'Aantal nieuwe taken: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10)
|
||
|| 'Aantal nieuwe objecttaken: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10)
|
||
|| 'Aantal bestaande, te wijzigen (object)taken: ' || TO_CHAR (v_count_w_taak)
|
||
, '');
|
||
END IF;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
fac.imp_writelog (p_import_key, 'E', 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_errormsg);
|
||
END fac_import_taak_mjob;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_taak_mjob (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c_n -- nieuwe taken en objecttaken aanmaken..
|
||
IS
|
||
SELECT i.*
|
||
FROM fac_imp_taak_mjob i
|
||
WHERE (i.ins_srtcontrole_key IS NULL OR i.ins_srtcontrole_key = -1);
|
||
|
||
CURSOR c_no -- nieuwe objecttaken aanmaken..
|
||
IS
|
||
SELECT i.*
|
||
FROM fac_imp_taak_mjob i
|
||
WHERE (i.ins_srtcontrole_key IS NOT NULL OR i.ins_srtcontrole_key > -1)
|
||
AND i.ins_srtcontroledl_xcp_key IS NULL;
|
||
|
||
CURSOR c_m -- bestaande taak en/of objecttaak wijzigen
|
||
IS
|
||
SELECT i.*
|
||
FROM fac_imp_taak_mjob i
|
||
WHERE (i.ins_srtcontrole_key IS NOT NULL OR i.ins_srtcontrole_key > -1)
|
||
AND i.ins_srtcontroledl_xcp_key IS NOT NULL;
|
||
|
||
v_errormsg VARCHAR2(1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_ongeldig NUMBER(1) := 0;
|
||
v_count_rec NUMBER := 0;
|
||
v_count_taak NUMBER := 0 ;
|
||
v_count_taakobject NUMBER := 0 ;
|
||
v_count_verwerk NUMBER := 0; -- aantal verwerkte records
|
||
v_count_n_taak NUMBER := 0; -- aantal nieuw aangemaakte basistaken
|
||
v_count_n_taakobject NUMBER := 0; -- aantal nieuw aangemaakte objecttaken
|
||
v_count_w_taak NUMBER := 0; -- aantal bestaande basistaken gewijzigd
|
||
v_count_w_taakobject NUMBER := 0; -- aantal bestaande object-taken gewijzigd
|
||
|
||
v_aanduiding VARCHAR2 (1000);
|
||
v_aanduiding_objecttaak VARCHAR2 (1000);
|
||
-- Velden
|
||
v_objectidentificatie ins_deel.ins_deel_omschrijving%TYPE;
|
||
v_srtdeel_key ins_deel.ins_srtdeel_key%TYPE;
|
||
v_ctr_discipline_omschrijving ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
||
v_dienst_key prs_dienst.prs_dienst_key%TYPE;
|
||
v_taakdienst_key prs_dienst.prs_dienst_key%TYPE;
|
||
v_taakdienst_oms prs_dienst.prs_dienst_omschrijving%TYPE;
|
||
v_ins_srtcontrole_key ins_srtcontrole.ins_srtcontrole_key%TYPE;
|
||
v_taakopmerking ins_srtcontrole.ins_srtcontrole_opmerking%TYPE;
|
||
v_taakgroep ins_srtcontrole.ins_srtcontrole_groep%TYPE;
|
||
v_taakprioriteit ins_srtcontrole.ins_srtcontrole_level%TYPE;
|
||
v_percentage ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_perc%TYPE;
|
||
v_objecttaakopmerking ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_opmerk%TYPE;
|
||
v_eenheid ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_eenheid%TYPE;
|
||
v_periode ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_periode%TYPE;
|
||
v_eindjaar ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_eind%TYPE;
|
||
v_materiaalkosten ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_materia%TYPE;
|
||
v_aantal ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aantal%TYPE;
|
||
v_aantaleh ins_srtcontroledl_xcp.ins_srtcontroledl_xcp_aanteh%TYPE;
|
||
|
||
|
||
|
||
FUNCTION maakAanduiding_taak(p_deel_key IN NUMBER, p_disc_key IN NUMBER, p_oms IN VARCHAR2, o_srtdeel_key OUT NUMBER) RETURN VARCHAR2
|
||
IS
|
||
v_deel_oms ins_deel.ins_deel_omschrijving%TYPE;
|
||
v_disc_oms ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
||
v_omschrijving VARCHAR2(1000);
|
||
BEGIN
|
||
SELECT ins_deel_omschrijving
|
||
, ins_srtdeel_key
|
||
INTO v_deel_oms
|
||
, o_srtdeel_key
|
||
FROM ins_deel
|
||
WHERE ins_deel_key = p_deel_key;
|
||
|
||
SELECT ins_discipline_omschrijving
|
||
INTO v_disc_oms
|
||
FROM ctr_discipline
|
||
WHERE ins_discipline_key = p_disc_key;
|
||
v_omschrijving := v_deel_oms || ' / ' || v_disc_oms || ' - ' || p_oms;
|
||
RETURN v_omschrijving;
|
||
END;
|
||
|
||
FUNCTION maakAanduiding_taakobject(p_deel_key IN NUMBER, p_disc_key IN NUMBER, p_srtcontrole_oms IN VARCHAR2) RETURN VARCHAR2
|
||
IS
|
||
v_srtdeel_code ins_srtdeel.ins_srtdeel_code%TYPE;
|
||
v_disc_oms ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
||
v_omschrijving VARCHAR2(1000);
|
||
BEGIN
|
||
SELECT s.ins_srtdeel_code
|
||
INTO v_srtdeel_code
|
||
FROM ins_deel d
|
||
, ins_srtdeel s
|
||
WHERE d.ins_srtdeel_key = s.ins_srtdeel_key
|
||
AND d.ins_deel_key = p_deel_key;
|
||
|
||
SELECT ins_discipline_omschrijving
|
||
INTO v_disc_oms
|
||
FROM ctr_discipline
|
||
WHERE ins_discipline_key = p_disc_key;
|
||
v_omschrijving := v_disc_oms || ' - ' || v_srtdeel_code || p_srtcontrole_oms || CHR(13) || CHR(10);
|
||
RETURN v_omschrijving;
|
||
END;
|
||
|
||
PROCEDURE zetDeelStartdatum(p_deel_key IN NUMBER, p_startjaar IN DATE)
|
||
AS
|
||
BEGIN
|
||
-- Aangezien de taken altijd een startdatum hebben, en objecten niet altijd een aanmaakdatum, gaan we die hier gelijk trekken.
|
||
-- Daarna maken we de taak startdatum leeg, zodat de cyclus gaat lopen vanaf de bijgewerkte ins_deel_aanmaak.
|
||
-- Zo blijft het mogelijk om taken in de MJOB console te verslepen naar jaartallen eerder dan het aangegeven startjaar.
|
||
IF p_startjaar < SYSDATE
|
||
THEN
|
||
UPDATE ins_deel
|
||
SET ins_deel_aanmaak = p_startjaar
|
||
WHERE ins_deel_key = p_deel_key;
|
||
END IF;
|
||
END;
|
||
|
||
FUNCTION trackTaak(p_srtcontrole_key IN NUMBER, p_label IN VARCHAR2, p_old IN VARCHAR2, p_new IN VARCHAR2) RETURN NUMBER
|
||
IS
|
||
BEGIN
|
||
fac.trackaction('CTRSUP', p_srtcontrole_key, 4, NULL, p_label || ': ' || p_old || '-->' || p_new);
|
||
RETURN 1;
|
||
END;
|
||
|
||
FUNCTION trackTaakobject(p_deel_key IN NUMBER, p_aanduiding IN VARCHAR2, p_label IN VARCHAR2, p_old IN VARCHAR2, p_new IN VARCHAR2) RETURN NUMBER
|
||
IS
|
||
BEGIN
|
||
fac.trackaction('INSUPD', p_deel_key, sys_context('USERENV', 'CLIENT_IDENTIFIER'), NULL, p_aanduiding || ' ' || p_label || ': ' || p_old || '-->' || p_new);
|
||
RETURN 1;
|
||
END;
|
||
|
||
BEGIN
|
||
BEGIN
|
||
FOR rec IN c_n
|
||
LOOP
|
||
BEGIN
|
||
v_count_verwerk := v_count_verwerk + 1;
|
||
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
|
||
-- Eenzelfde basistaak kan meerdere keren in CSV zitten.
|
||
-- Daarom gaan we in deze cursor eerst kijken of de basistaak er in deze LOOP al ingezet is.
|
||
-- Zo ja, dan kunnen we door naar de Objecttaak. Zo niet, dan gaan we eerst de basis
|
||
v_errormsg := 'Opzoeken basistaak ' || v_aanduiding;
|
||
SELECT MAX(ins_srtcontrole_key)
|
||
INTO v_ins_srtcontrole_key
|
||
FROM ins_srtcontrole
|
||
WHERE ins_srtcontrole_omschrijving = rec.ins_srtcontrole_omschrijving;
|
||
|
||
-- Basistaak aanmaken: geen ins_srtcontrole_key gevonden.
|
||
IF v_ins_srtcontrole_key IS NULL
|
||
THEN
|
||
-- We gaan we eerst op zoek naar de dienst.
|
||
v_errormsg := 'Aanmaken/opzoeken dienst ' || v_aanduiding;
|
||
v_dienst_key := NULL;
|
||
IF rec.prs_dienst_omschrijving IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_dienst_key
|
||
INTO v_dienst_key
|
||
FROM prs_dienst
|
||
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
INSERT INTO prs_dienst
|
||
(prs_dienst_omschrijving)
|
||
VALUES (rec.prs_dienst_omschrijving)
|
||
RETURNING prs_dienst_key
|
||
INTO v_dienst_key;
|
||
END;
|
||
END IF;
|
||
|
||
v_errormsg := 'Aanmaken taak: ' || v_aanduiding;
|
||
INSERT INTO ins_srtcontrole
|
||
( ins_srtinstallatie_key
|
||
, ins_srtcontrole_niveau
|
||
, ins_srtcontrole_omschrijving
|
||
, ctr_discipline_key
|
||
, ins_srtcontrole_info
|
||
, ins_srtcontrole_periode
|
||
, ins_srtcontrole_eenheid
|
||
, ins_srtcontrole_mode
|
||
, ins_srtcontrole_level
|
||
, ins_srtcontrole_opmerking
|
||
, prs_dienst_key
|
||
)
|
||
VALUES
|
||
( v_srtdeel_key
|
||
, 'S'
|
||
, rec.ins_srtcontrole_omschrijving
|
||
, rec.ctr_discipline_key
|
||
, NULL
|
||
, 0
|
||
, rec.ins_srtcontroledl_xcp_eenheid
|
||
, 1
|
||
, COALESCE(rec.ins_srtcontrole_prioriteit, 0)
|
||
, rec.ins_srtcontrole_opmerking
|
||
, v_dienst_key
|
||
)
|
||
RETURNING ins_srtcontrole_key
|
||
INTO v_ins_srtcontrole_key;
|
||
|
||
fac.trackaction('CTRSUP', v_ins_srtcontrole_key, 4, NULL, 'Periodieke taak toegevoegd - Via taakimport ');
|
||
v_count_n_taak := v_count_n_taak + 1;
|
||
END IF;
|
||
|
||
-- Nu kunnen we de objectaak aanmaken
|
||
v_errormsg := 'Aanmaken taak object: ' || v_aanduiding || ' ['
|
||
|| rec.ins_deel_key || '|'
|
||
|| v_ins_srtcontrole_key || '|'
|
||
|| rec.ins_srtcontroledl_xcp_periode || '|'
|
||
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|
||
|| rec.ins_srtcontroledl_xcp_materia || '|'
|
||
|| rec.ins_srtcontroledl_xcp_perc || '|'
|
||
|| rec.ins_srtcontrole_groep || '|'
|
||
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|
||
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|
||
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
|
||
|
||
INSERT INTO ins_srtcontroledl_xcp
|
||
( ins_deel_key
|
||
, ins_srtcontrole_key
|
||
, ins_srtcontroledl_xcp_periode
|
||
, ins_srtcontroledl_xcp_eenheid
|
||
, ins_srtcontroledl_xcp_materia
|
||
, ins_srtcontroledl_xcp_perc
|
||
, ins_srtcontroledl_xcp_groep
|
||
, ins_srtcontroledl_xcp_opmerk
|
||
, ins_srtcontroledl_xcp_aantal
|
||
, ins_srtcontroledl_xcp_aanteh
|
||
)
|
||
VALUES
|
||
( rec.ins_deel_key
|
||
, v_ins_srtcontrole_key
|
||
, rec.ins_srtcontroledl_xcp_periode
|
||
, rec.ins_srtcontroledl_xcp_eenheid
|
||
, rec.ins_srtcontroledl_xcp_materia
|
||
, rec.ins_srtcontroledl_xcp_perc
|
||
, rec.ins_srtcontrole_groep
|
||
, rec.ins_srtcontroledl_xcp_opmerk
|
||
, rec.ins_srtcontroledl_xcp_aantal
|
||
, rec.ins_srtcontroledl_xcp_aanteh
|
||
);
|
||
|
||
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
|
||
v_count_n_taakobject := v_count_n_taakobject + 1;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_aanduiding);
|
||
END;
|
||
v_aanduiding := 'Einde loop ' || v_aanduiding;
|
||
END LOOP;
|
||
|
||
|
||
FOR rec IN c_no
|
||
LOOP
|
||
BEGIN
|
||
v_count_verwerk := v_count_verwerk + 1;
|
||
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
|
||
-- We kunnen direct objectaak aanmaken
|
||
v_errormsg := 'Aanmaken taak object bij taak: ' || v_aanduiding || ' ['
|
||
|| rec.ins_deel_key || '|'
|
||
|| rec.ins_srtcontrole_key || '|'
|
||
|| rec.ins_srtcontroledl_xcp_periode || '|'
|
||
|| rec.ins_srtcontroledl_xcp_eenheid || '|'
|
||
|| rec.ins_srtcontroledl_xcp_materia || '|'
|
||
|| rec.ins_srtcontroledl_xcp_perc || '|'
|
||
|| rec.ins_srtcontrole_groep || '|'
|
||
|| rec.ins_srtcontroledl_xcp_opmerk || '|'
|
||
|| rec.ins_srtcontroledl_xcp_aantal || '|'
|
||
|| rec.ins_srtcontroledl_xcp_aanteh || ']';
|
||
INSERT INTO ins_srtcontroledl_xcp
|
||
( ins_deel_key
|
||
, ins_srtcontrole_key
|
||
, ins_srtcontroledl_xcp_periode
|
||
, ins_srtcontroledl_xcp_eenheid
|
||
, ins_srtcontroledl_xcp_materia
|
||
, ins_srtcontroledl_xcp_perc
|
||
, ins_srtcontroledl_xcp_groep
|
||
, ins_srtcontroledl_xcp_opmerk
|
||
, ins_srtcontroledl_xcp_aantal
|
||
, ins_srtcontroledl_xcp_aanteh
|
||
)
|
||
VALUES
|
||
( rec.ins_deel_key
|
||
, rec.ins_srtcontrole_key
|
||
, rec.ins_srtcontroledl_xcp_periode
|
||
, rec.ins_srtcontroledl_xcp_eenheid
|
||
, rec.ins_srtcontroledl_xcp_materia
|
||
, rec.ins_srtcontroledl_xcp_perc
|
||
, rec.ins_srtcontrole_groep
|
||
, rec.ins_srtcontroledl_xcp_opmerk
|
||
, rec.ins_srtcontroledl_xcp_aantal
|
||
, rec.ins_srtcontroledl_xcp_aanteh
|
||
);
|
||
|
||
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
|
||
v_count_n_taakobject := v_count_n_taakobject + 1;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_aanduiding);
|
||
END;
|
||
v_aanduiding := 'Einde loop ' || v_aanduiding;
|
||
END LOOP;
|
||
|
||
|
||
FOR rec IN c_m
|
||
LOOP
|
||
BEGIN
|
||
v_count_verwerk := v_count_verwerk + 1 ;
|
||
v_aanduiding := maakAanduiding_taak(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving, v_srtdeel_key);
|
||
|
||
SELECT COALESCE(t.ins_srtcontrole_opmerking, '<leeg>')
|
||
, t.ins_srtcontrole_level
|
||
, COALESCE(MAX(t.prs_dienst_key), -1)
|
||
, COALESCE(MAX(d.prs_dienst_omschrijving), '<leeg>')
|
||
INTO v_taakopmerking
|
||
, v_taakprioriteit
|
||
, v_taakdienst_key
|
||
, v_taakdienst_oms
|
||
FROM ins_srtcontrole t
|
||
, prs_dienst d
|
||
WHERE t.prs_dienst_key = d.prs_dienst_key(+)
|
||
AND t.ins_srtcontrole_key = rec.ins_srtcontrole_key
|
||
GROUP BY t.ins_srtcontrole_opmerking
|
||
, t.ins_srtcontrole_level;
|
||
|
||
-- Basis-taak - Taakopmerking
|
||
v_errormsg := 'Fout taakopmerking wijzigen ';
|
||
IF rec.ins_srtcontrole_opmerking IS NOT NULL AND v_taakopmerking <> rec.ins_srtcontrole_opmerking
|
||
THEN
|
||
UPDATE ins_srtcontrole
|
||
SET ins_srtcontrole_opmerking = rec.ins_srtcontrole_opmerking
|
||
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
|
||
|
||
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Taakopmerking', v_taakopmerking, rec.ins_srtcontrole_opmerking);
|
||
END IF;
|
||
|
||
-- Basis-taak - Taakprioriteit
|
||
v_errormsg := 'Fout prioriteit wijzigen ';
|
||
IF rec.ins_srtcontrole_prioriteit IS NOT NULL AND v_taakprioriteit <> rec.ins_srtcontrole_prioriteit
|
||
THEN
|
||
UPDATE ins_srtcontrole
|
||
SET ins_srtcontrole_level = rec.ins_srtcontrole_prioriteit
|
||
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
|
||
|
||
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd Prioriteit', v_taakprioriteit, rec.ins_srtcontrole_prioriteit);
|
||
END IF;
|
||
|
||
-- Basis-taak - Dienst
|
||
v_errormsg := 'Fout dienst wijzigen ' || v_aanduiding;
|
||
-- Dan gaan we kijken of de dienst meegegeven in csv al bestaat
|
||
IF rec.prs_dienst_omschrijving IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_dienst_key
|
||
INTO v_dienst_key
|
||
FROM prs_dienst
|
||
WHERE UPPER(prs_dienst_omschrijving) = UPPER(rec.prs_dienst_omschrijving);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
INSERT INTO prs_dienst
|
||
(prs_dienst_omschrijving)
|
||
VALUES (rec.prs_dienst_omschrijving)
|
||
RETURNING prs_dienst_key
|
||
INTO v_dienst_key;
|
||
END;
|
||
|
||
IF v_taakdienst_key <> v_dienst_key
|
||
THEN
|
||
UPDATE ins_srtcontrole
|
||
SET prs_dienst_key = v_dienst_key
|
||
WHERE ins_srtcontrole_key = rec.ins_srtcontrole_key;
|
||
|
||
v_count_taak := trackTaak(rec.ins_srtcontrole_key, 'Gewijzigd taakdienst', v_taakdienst_oms, rec.prs_dienst_omschrijving);
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_count_taak = 1
|
||
THEN
|
||
v_count_w_taak := v_count_w_taak + 1;
|
||
END IF;
|
||
|
||
-- Gaan nu de object-taken aanpassen
|
||
v_aanduiding_objecttaak := maakAanduiding_taakobject(rec.ins_deel_key, rec.ctr_discipline_key, rec.ins_srtcontrole_omschrijving);
|
||
SELECT COALESCE(ins_srtcontroledl_xcp_perc, 0)
|
||
, COALESCE(ins_srtcontroledl_xcp_opmerk, '<leeg>')
|
||
, COALESCE(ins_srtcontroledl_xcp_eenheid, 0)
|
||
, COALESCE(ins_srtcontroledl_xcp_periode, 0)
|
||
, COALESCE(ins_srtcontroledl_xcp_groep, '<leeg>')
|
||
, ins_srtcontroledl_xcp_eind
|
||
, COALESCE(max(ins_srtcontroledl_xcp_materia), 0)
|
||
INTO v_percentage
|
||
, v_objecttaakopmerking
|
||
, v_eenheid
|
||
, v_periode
|
||
, v_taakgroep
|
||
, v_eindjaar
|
||
, v_materiaalkosten
|
||
FROM ins_srtcontroledl_xcp
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key
|
||
GROUP BY ins_srtcontroledl_xcp_perc
|
||
, ins_srtcontroledl_xcp_opmerk
|
||
, ins_srtcontroledl_xcp_eenheid
|
||
, ins_srtcontroledl_xcp_periode
|
||
, ins_srtcontroledl_xcp_groep
|
||
, ins_srtcontroledl_xcp_eind;
|
||
|
||
-- Object-taak - Percentage
|
||
v_errormsg := 'Fout percentage wijzigen ';
|
||
IF rec.ins_srtcontroledl_xcp_perc IS NOT NULL AND rec.ins_srtcontroledl_xcp_perc <> v_percentage
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_perc = rec.ins_srtcontroledl_xcp_perc
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Percentage', v_percentage, rec.ins_srtcontroledl_xcp_perc);
|
||
END IF;
|
||
|
||
-- Object-taak - Opmerking
|
||
v_errormsg := 'Fout opmerking objecttaak wijzigen ';
|
||
IF rec.ins_srtcontroledl_xcp_opmerk IS NOT NULL AND rec.ins_srtcontroledl_xcp_opmerk <> v_objecttaakopmerking
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_opmerk = rec.ins_srtcontroledl_xcp_opmerk
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakopmerking', v_objecttaakopmerking, rec.ins_srtcontroledl_xcp_opmerk);
|
||
END IF;
|
||
|
||
-- Object-taak - Eenheid
|
||
v_errormsg := 'Fout eenheid wijzigen ';
|
||
IF rec.ins_srtcontroledl_xcp_eenheid IS NOT NULL AND rec.ins_srtcontroledl_xcp_eenheid <> v_eenheid AND rec.ismjob = 0
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_eenheid = rec.ins_srtcontroledl_xcp_eenheid
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eenheid', v_eenheid, rec.ins_srtcontroledl_xcp_eenheid);
|
||
END IF;
|
||
|
||
-- Object-taak - Periode
|
||
v_errormsg := 'Fout periode wijzigen ';
|
||
IF rec.ins_srtcontroledl_xcp_periode IS NOT NULL AND rec.ins_srtcontroledl_xcp_periode <> v_periode
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_periode = rec.ins_srtcontroledl_xcp_periode
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Periode', v_periode, rec.ins_srtcontroledl_xcp_periode);
|
||
END IF;
|
||
|
||
-- Object-taak - Taakgroep
|
||
v_errormsg := 'Fout taakgroep wijzigen ';
|
||
IF rec.ins_srtcontrole_groep IS NOT NULL AND rec.ins_srtcontrole_groep <> v_taakgroep
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_groep = rec.ins_srtcontrole_groep
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Taakgroep', v_taakgroep, rec.ins_srtcontrole_groep);
|
||
END IF;
|
||
|
||
-- Object-taak - Eindjaar
|
||
v_errormsg := 'Fout eindjaar wijzigen ';
|
||
IF ( (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar <> rec.ins_srtcontroledl_xcp_eind AND v_eindjaar IS NOT NULL)
|
||
OR (rec.ins_srtcontroledl_xcp_eind IS NOT NULL AND v_eindjaar IS NULL)
|
||
)
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_eind = rec.ins_srtcontroledl_xcp_eind
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Eindjaar', v_eindjaar, rec.ins_srtcontroledl_xcp_eind);
|
||
END IF;
|
||
|
||
-- Object-taak - Kosten
|
||
v_errormsg := 'Fout kosten wijzigen ';
|
||
IF rec.ins_srtcontroledl_xcp_materia IS NOT NULL AND rec.ins_srtcontroledl_xcp_materia <> v_materiaalkosten
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_materia = rec.ins_srtcontroledl_xcp_materia
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Kosten', v_materiaalkosten, rec.ins_srtcontroledl_xcp_materia);
|
||
END IF;
|
||
|
||
-- Object-taak - aantal
|
||
v_errormsg := 'Fout aantal wijzigen ';
|
||
IF ( (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NOT NULL AND rec.ins_srtcontroledl_xcp_aantal <> v_aantal)
|
||
OR (rec.ins_srtcontroledl_xcp_aantal IS NOT NULL AND v_aantal IS NULL)
|
||
)
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_aantal = rec.ins_srtcontroledl_xcp_aantal
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aantal', v_aantal, rec.ins_srtcontroledl_xcp_aantal);
|
||
END IF;
|
||
|
||
-- Object-taal - aantaleh
|
||
v_errormsg := 'fout aanteh wijzigen ';
|
||
IF ( (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NOT NULL AND rec.ins_srtcontroledl_xcp_aanteh <> v_aantaleh)
|
||
OR (rec.ins_srtcontroledl_xcp_aanteh IS NOT NULL AND v_aantaleh IS NULL)
|
||
)
|
||
THEN
|
||
UPDATE ins_srtcontroledl_xcp
|
||
SET ins_srtcontroledl_xcp_aanteh = rec.ins_srtcontroledl_xcp_aanteh
|
||
WHERE ins_srtcontroledl_xcp_key = rec.ins_srtcontroledl_xcp_key;
|
||
|
||
v_count_taakobject := trackTaakobject(rec.ins_deel_key, v_aanduiding_objecttaak, 'Aanteh', v_aantaleh, rec.ins_srtcontroledl_xcp_aanteh);
|
||
END IF;
|
||
|
||
IF v_count_taakobject = 1
|
||
THEN
|
||
v_count_w_taakobject := v_count_w_taakobject + 1;
|
||
END IF;
|
||
|
||
zetDeelStartdatum(rec.ins_deel_key, rec.ins_srtcontroledl_xcp_start);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_aanduiding);
|
||
END;
|
||
v_aanduiding := 'Einde loop ' || v_aanduiding;
|
||
END LOOP;
|
||
|
||
-- Update zonder fouten. Log verwerkingsoverzicht.
|
||
fac.imp_writelog(p_import_key, 'S', 'IMPORT TAKEN: update' || CHR(13) || CHR(10)
|
||
|| 'Aantal verwerkte regels: ' || TO_CHAR (v_count_verwerk) || CHR(13) || CHR(10)
|
||
|| 'Aantal nieuwe taken ingelezen: ' || TO_CHAR (v_count_n_taak) || CHR(13) || CHR(10)
|
||
|| 'Aantal nieuwe objecttaken ingelezen: ' || TO_CHAR (v_count_n_taakobject) || CHR(13) || CHR(10)
|
||
|| 'Aantal bestaande basistaken gewijzigd: ' || TO_CHAR (v_count_w_taak) || CHR(13) || CHR(10)
|
||
|| 'Aantal bestaande objecttaken gewijzigd: ' || TO_CHAR (v_count_w_taakobject)
|
||
, '');
|
||
EXCEPTION
|
||
WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
fac.imp_writelog (p_import_key, 'E', v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', v_aanduiding_objecttaak);
|
||
END;
|
||
|
||
END fac_update_taak_mjob;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_exchange (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
|
||
IS
|
||
BEGIN
|
||
exc.import_exchange (p_import_key, p_days_from, p_days_to);
|
||
END fac_import_exchange;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_exchange (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
|
||
IS
|
||
BEGIN
|
||
exc.update_exchange (p_import_key, p_days_from, p_days_to);
|
||
END fac_update_exchange;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_exchfull (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
|
||
IS
|
||
BEGIN
|
||
exc.import_exchfull (p_import_key, p_days_from, p_days_to);
|
||
END fac_import_exchfull;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_exchfull (p_import_key IN NUMBER, p_days_from IN NUMBER DEFAULT 0, p_days_to IN NUMBER DEFAULT 90)
|
||
IS
|
||
BEGIN
|
||
exc.update_exchfull (p_import_key, p_days_from, p_days_to);
|
||
END fac_update_exchfull;
|
||
/
|
||
|
||
REGISTERRUN('$Id$')
|