18282 lines
742 KiB
Plaintext
18282 lines
742 KiB
Plaintext
/* $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
|
||
*/
|
||
|
||
-- Procedures om catalogi in te lezen en te verwerken
|
||
/* Formatted on 25-7-2011 10:40:10 (QP5 v5.115.810.9015) */
|
||
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 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- 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);
|
||
|
||
-- 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);
|
||
|
||
-- 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!
|
||
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;
|
||
|
||
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
|
||
)
|
||
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)
|
||
);
|
||
|
||
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;
|
||
/
|
||
|
||
/* Formatted on 19-7-2011 17:34:34 (QP5 v5.115.810.9015) */
|
||
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 VARCHAR2 (100);
|
||
v_bedr_naam VARCHAR2 (100);
|
||
|
||
// 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;
|
||
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;
|
||
|
||
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;
|
||
|
||
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
|
||
INTO l_omschrijving,
|
||
l_prijs,
|
||
l_inkprijs,
|
||
l_veelvoud,
|
||
l_minimum,
|
||
l_wijzigdagen,
|
||
l_annuleerdagen
|
||
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
|
||
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;
|
||
|
||
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)
|
||
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)
|
||
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;
|
||
/
|
||
|
||
/* Formatted on 13/08/2008 09:46 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_oprognose (
|
||
p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_fielddelimitor VARCHAR2 (1);
|
||
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 := ';';
|
||
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;
|
||
/
|
||
|
||
|
||
/* Formatted on 13/08/2008 12:46 (Formatter Plus v4.8.7) */
|
||
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 (30) := '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;
|
||
|
||
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_uitvoertijd,
|
||
mld_stdmelding_planbaar
|
||
)
|
||
VALUES (stdmelding_key,
|
||
discipline_key,
|
||
SUBSTR (rec1.ELEMENT, 1, 60),
|
||
c_stdmelding_notfrontend,
|
||
c_stdmelding_uitvoertijd,
|
||
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;
|
||
|
||
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_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
|
||
)
|
||
VALUES (melding_key,
|
||
meldbron_key,
|
||
stdmelding_key,
|
||
locatie_key,
|
||
gebouw_key,
|
||
v_melding_uitvoertijd,
|
||
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')
|
||
);
|
||
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
|
||
/* Formatted on 9-7-2013 10:22:36 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed1 (p_import_key IN NUMBER)
|
||
AS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_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_gebouw_code VARCHAR2 (255); -- 10
|
||
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); -- 35
|
||
v_locatie_postcode VARCHAR2 (255); -- 12
|
||
v_locatie_plaats VARCHAR2 (255); -- 30
|
||
v_locatie_land VARCHAR2 (255); -- 30
|
||
v_locatie_post_adres VARCHAR2 (255); -- 35
|
||
v_locatie_post_postcode VARCHAR2 (255); -- 12
|
||
v_locatie_post_plaats VARCHAR2 (255); -- 30
|
||
v_locatie_post_land VARCHAR2 (255); -- 30
|
||
v_alg_kenmerkwaarde1 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde2 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde3 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde4 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde5 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde6 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde7 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde8 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde9 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde10 VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
-- Controleer tijdens import-fase 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', 'S');
|
||
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', 'S');
|
||
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_gebouw_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouw_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_srtgebouw_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_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) LIKE 'REGIO%'
|
||
AND UPPER (v_district_omschrijving) LIKE 'DISTRICT%'
|
||
AND UPPER (v_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_locatie_adres) = 'BEZOEKADRES'
|
||
AND UPPER (v_locatie_post_adres) = 'POSTADRES'
|
||
AND UPPER (v_locatie_post_land) LIKE 'LAND%'
|
||
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,
|
||
'W',
|
||
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,
|
||
'W',
|
||
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,
|
||
'W',
|
||
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,
|
||
'W',
|
||
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 := '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,
|
||
'W',
|
||
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,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Regel overgeslagen');
|
||
ELSIF LENGTH (v_gebouw_naam) > 30
|
||
THEN
|
||
v_gebouw_naam := SUBSTR (v_gebouw_naam, 1, 30);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Gebouwnaam afgebroken tot [' || v_gebouw_naam || ']'
|
||
);
|
||
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 := '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) > 15
|
||
THEN
|
||
v_locatie_verantw_tel := SUBSTR (v_locatie_verantw_tel, 1, 15);
|
||
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) > 35
|
||
THEN
|
||
v_locatie_adres := SUBSTR (v_locatie_adres, 1, 35);
|
||
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) > 35
|
||
THEN
|
||
v_locatie_post_adres := SUBSTR (v_locatie_post_adres, 1, 35);
|
||
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;
|
||
|
||
-- 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_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_srtgebouw_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_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_gebouw_code,
|
||
v_gebouw_naam,
|
||
v_srtgebouw_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,
|
||
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;
|
||
/
|
||
|
||
/* Formatted on 9-7-2013 11:48:12 (QP5 v5.115.810.9015) */
|
||
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(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 VARCHAR2 (1);
|
||
v_kenmerk_type VARCHAR2 (1);
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam VARCHAR2 (30);
|
||
v_kolomnaam VARCHAR2 (30);
|
||
v_kolomtxt VARCHAR2 (30);
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_onrgoedkenmerk_key NUMBER;
|
||
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', '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 [' || p_waarde || ']';
|
||
|
||
IF ccount = 1
|
||
THEN -- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM alg_kenmerk k,
|
||
fac_kenmerkdomein d,
|
||
fac_v_aanwezigusrdata ud
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.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 ('''
|
||
|| p_waarde
|
||
|| ''')';
|
||
|
||
EXECUTE IMMEDIATE sql_stmt INTO v_waarde;
|
||
END IF;
|
||
ELSE -- C(haracter)/D(ate)/N(umeric)
|
||
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 [' || v_waarde || ']';
|
||
|
||
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 [' || v_waarde || ']';
|
||
|
||
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***
|
||
-- ***********
|
||
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***
|
||
-- **************
|
||
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 object!
|
||
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_gebouw_code,
|
||
alg_gebouw_naam,
|
||
alg_srtgebouw_key)
|
||
VALUES (v_locatie_key,
|
||
recGebouw.alg_gebouw_code,
|
||
recGebouw.alg_gebouw_naam,
|
||
v_srtgebouw_key)
|
||
RETURNING alg_gebouw_key INTO v_gebouw_key;
|
||
|
||
v_srtnoti_code := 'ALGGNE';
|
||
v_count_new := v_count_new + 1;
|
||
ELSE -- bijwerken object!
|
||
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;
|
||
/
|
||
|
||
|
||
|
||
/* Formatted on 11-3-2010 16:19:44 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_onrgoed2 (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_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); -- 30
|
||
v_res_ruimte_prijs VARCHAR2 (255); -- 7,2
|
||
v_res_ruimte_prijs_n NUMBER (7, 2); -- 7,2
|
||
v_res_opstelling_omschrijving VARCHAR2 (255); -- 30
|
||
v_res_ruimte_opstel_bezoekers VARCHAR2 (255); -- 5,0
|
||
v_res_ruimte_opstel_bez_n NUMBER (5, 0); -- 5,0
|
||
v_res_ruimte_nr VARCHAR2 (255); -- 40
|
||
v_res_ruimte_omschrijving VARCHAR2 (255); -- 255
|
||
v_alg_kenmerkwaarde1 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde2 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde3 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde4 VARCHAR2 (255);
|
||
v_alg_kenmerkwaarde5 VARCHAR2 (255);
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
-- Controleer tijdens import-fase op bestaan van kenmerk
|
||
FUNCTION bepaal_kenmerk_key (kw IN VARCHAR)
|
||
RETURN NUMBER
|
||
IS
|
||
v_kenmerk_key NUMBER;
|
||
BEGIN
|
||
IF fac.safe_to_number (kw) IS NULL
|
||
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_upper = UPPER (kw)
|
||
AND alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau = 'R'
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S');
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT alg_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_key = fac.safe_to_number (kw)
|
||
AND alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_niveau = 'R'
|
||
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S');
|
||
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';
|
||
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_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 || ']';
|
||
|
||
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 || ']';
|
||
|
||
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 || ']';
|
||
|
||
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 || ']';
|
||
|
||
IF LENGTH (v_ruimte_nr) > 10
|
||
THEN
|
||
v_ruimte_nr := SUBSTR (v_ruimte_nr, 1, 10);
|
||
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 || ']';
|
||
|
||
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) = ''
|
||
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 || ']';
|
||
|
||
IF LENGTH (v_afdeling_naam) > 10
|
||
THEN
|
||
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10);
|
||
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) = ''
|
||
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 || ']';
|
||
|
||
IF LENGTH (v_res_discipline_omschrijving) > 30
|
||
THEN
|
||
v_res_discipline_omschrijving := SUBSTR (v_res_discipline_omschrijving, 1, 30);
|
||
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 prijs reserveerbare ruimte [' || v_res_ruimte_prijs || ']';
|
||
v_errorhint := 'Maximaal grootte getal is 99999.99 ';
|
||
|
||
IF (TRIM (v_res_ruimte_prijs) = '')
|
||
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 || ']';
|
||
|
||
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) = ''
|
||
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 || ']';
|
||
|
||
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 || ']';
|
||
|
||
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_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_ruimte_prijs_n,
|
||
v_res_opstelling_omschrijving,
|
||
v_res_ruimte_opstel_bez_n,
|
||
v_res_ruimte_nr,
|
||
v_res_ruimte_omschrijving,
|
||
DECODE (v_alg_kenmerk_key1,
|
||
NULL, v_alg_kenmerkwaarde1,
|
||
TO_CHAR (v_alg_kenmerk_key1)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde1, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key2,
|
||
NULL, v_alg_kenmerkwaarde2,
|
||
TO_CHAR (v_alg_kenmerk_key2)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde2, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key3,
|
||
NULL, v_alg_kenmerkwaarde3,
|
||
TO_CHAR (v_alg_kenmerk_key3)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde3, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key4,
|
||
NULL, v_alg_kenmerkwaarde4,
|
||
TO_CHAR (v_alg_kenmerk_key4)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde4, 1, 200)
|
||
),
|
||
DECODE (v_alg_kenmerk_key5,
|
||
NULL, v_alg_kenmerkwaarde5,
|
||
TO_CHAR (v_alg_kenmerk_key5)
|
||
|| '='
|
||
|| SUBSTR (v_alg_kenmerkwaarde5, 1, 200)
|
||
)
|
||
);
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Ongeldig importbestand',
|
||
'Geen geldige headerregel aanwezig'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key, 'S', 'Ruimte: aantal ingelezen regels: ' || TO_CHAR (v_count), '');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := v_errormsg || ' Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Eventeel resterende regels worden niet meer ingelezen!'
|
||
);
|
||
END fac_import_onrgoed2;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_onrgoed2 (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
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); -- 35
|
||
v_locatie_postcode VARCHAR2(255); -- 12
|
||
v_locatie_plaats VARCHAR2(255); -- 30
|
||
v_locatie_land VARCHAR2(255); -- 30
|
||
v_locatie_post_adres VARCHAR2(255); -- 35
|
||
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);
|
||
|
||
|
||
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
|
||
FROM FAC_IMP_ONRGOED2
|
||
WHERE reserveerbaar in ('Y','y','J','j')
|
||
GROUP BY upper(res_discipline_omschrijving);
|
||
|
||
recCategorie cCategorie%ROWTYPE;
|
||
|
||
CURSOR cResRuimte
|
||
IS
|
||
SELECT *
|
||
FROM FAC_IMP_ONRGOED2
|
||
WHERE RESERVEERBAAR in ('J','j','Y','y');
|
||
|
||
recResRuimte cResRuimte%ROWTYPE;
|
||
|
||
-- SUBPROC
|
||
PROCEDURE upsert_algkenmerk (p_ruimte_key IN NUMBER,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_type VARCHAR2 (1);
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam VARCHAR2 (30);
|
||
v_kolomnaam VARCHAR2 (30);
|
||
v_kolomtxt VARCHAR2 (30);
|
||
sql_stmt VARCHAR2 (1000);
|
||
BEGIN
|
||
IF (p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerktype';
|
||
SELECT alg_kenmerk_kenmerktype
|
||
INTO v_kenmerk_type
|
||
FROM alg_kenmerk
|
||
WHERE alg_kenmerk_verwijder IS NULL
|
||
AND alg_kenmerk_key = p_kenmerk_key
|
||
AND alg_kenmerk_niveau = 'R';
|
||
|
||
IF v_kenmerk_type IN ('R', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO ccount
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NOT NULL;
|
||
|
||
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']';
|
||
|
||
IF ccount = 1
|
||
THEN -- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
||
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (p_waarde);
|
||
ELSE -- FACILITOR view/tabel
|
||
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
|
||
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
||
FROM alg_kenmerk k, fac_kenmerkdomein d
|
||
WHERE k.alg_kenmerk_key = p_kenmerk_key
|
||
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
||
AND d.fac_usrtab_key IS NULL;
|
||
|
||
sql_stmt := 'SELECT MAX (' || v_kolomnaam
|
||
|| ') FROM ' || v_objectnaam
|
||
|| ' WHERE UPPER (TRIM (' || v_kolomtxt || ')) = UPPER (''' || p_waarde || ''')';
|
||
|
||
EXECUTE IMMEDIATE sql_stmt INTO v_waarde;
|
||
END IF;
|
||
ELSE -- C(haracter)/D(ate)/N(umeric)
|
||
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);
|
||
|
||
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;
|
||
|
||
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(*)
|
||
INTO v_count
|
||
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;
|
||
|
||
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)
|
||
VALUES
|
||
(v_discipline_key);
|
||
|
||
END IF;
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Fout tijdens verwerken catalogus ['||recCategorie.res_discipline_omschrijving||']';
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
commit;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Categorie: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Categorie: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cCategorie;
|
||
|
||
-- ***************
|
||
-- ***RESRUIMTE***
|
||
-- ***************
|
||
OPEN cResRuimte;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
IF cResRuimte%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_aanduiding := '';
|
||
|
||
FETCH cResRuimte INTO recResRuimte;
|
||
EXIT WHEN cResRuimte%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recResRuimte.ALG_LOCATIE_CODE||'|'||recResRuimte.ALG_GEBOUW_CODE||'|'||recResRuimte.ALG_VERDIEPING_VOLGNR||'|'||recResRuimte.ALG_RUIMTE_NR||'| ';
|
||
|
||
v_errorhint := ' Fout bij bepalen locatie';
|
||
|
||
SELECT ALG_LOCATIE_KEY
|
||
INTO v_locatie_key
|
||
FROM ALG_LOCATIE
|
||
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recResRuimte.ALG_LOCATIE_CODE)
|
||
AND alg_locatie_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen gebouw';
|
||
|
||
SELECT ALG_GEBOUW_KEY
|
||
INTO v_gebouw_key
|
||
FROM ALG_GEBOUW
|
||
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recResRuimte.ALG_GEBOUW_CODE)
|
||
AND ALG_LOCATIE_KEY = v_locatie_key
|
||
AND alg_gebouw_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij bepalen verdieping';
|
||
|
||
SELECT ALG_VERDIEPING_KEY, ALG_VERDIEPING_VOLGNR
|
||
INTO v_verdieping_key, v_verdieping_volgnr
|
||
FROM ALG_VERDIEPING
|
||
WHERE ALG_GEBOUW_KEY = v_gebouw_key
|
||
AND ALG_VERDIEPING_VOLGNR = recResRuimte.ALG_VERDIEPING_VOLGNR;
|
||
|
||
v_errorhint := ' Fout bij bepalen ruimte';
|
||
|
||
SELECT ALG_RUIMTE_KEY
|
||
INTO v_ruimte_key
|
||
FROM ALG_V_AANWEZIGRUIMTE
|
||
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
|
||
AND ALG_RUIMTE_UPPER_NR = UPPER(recResRuimte.ALG_RUIMTE_NR);
|
||
|
||
v_errorhint := ' Fout bij bepalen catalogus ['||recResRuimte.res_discipline_omschrijving||']';
|
||
|
||
SELECT ins_discipline_key
|
||
INTO v_discipline_key
|
||
FROM RES_V_RES_CATALOGUS
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND ins_discipline_min_level = 3
|
||
AND upper(trim(ins_discipline_omschrijving)) = upper(trim(recResRuimte.res_discipline_omschrijving));
|
||
|
||
v_errorhint := ' Fout bij bepalen opstelling ['||recResRuimte.RES_OPSTELLING_OMSCHRIJVING||']';
|
||
|
||
SELECT RES_OPSTELLING_KEY
|
||
INTO v_opstelling_key
|
||
FROM RES_OPSTELLING
|
||
WHERE UPPER(trim(RES_OPSTELLING_OMSCHRIJVING)) = UPPER(trim(recResRuimte.RES_OPSTELLING_OMSCHRIJVING))
|
||
AND RES_OPSTELLING_verwijder is null;
|
||
|
||
v_errorhint := ' Fout bij samenstellen ruimte-omschrijving';
|
||
|
||
IF (recResRuimte.RES_RUIMTE_NR IS NULL) THEN
|
||
v_ruimte_omschrijving := SUBSTR( recResRuimte.ALG_LOCATIE_CODE || '-' || recResRuimte.ALG_GEBOUW_CODE || '-' || TO_CHAR(recResRuimte.ALG_VERDIEPING_VOLGNR) || '-' || recResRuimte.ALG_RUIMTE_NR,1,40);
|
||
ELSE
|
||
v_ruimte_omschrijving := recResRuimte.RES_RUIMTE_NR;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen reserveerbare ruimte';
|
||
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM RES_RUIMTE
|
||
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
|
||
AND res_ruimte_verwijder is null;
|
||
|
||
IF v_count = 0 THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen reserveerbare ruimte';
|
||
|
||
INSERT INTO RES_RUIMTE
|
||
(RES_RUIMTE_NR
|
||
,RES_RUIMTE_UPPER
|
||
,RES_RUIMTE_PRIJS
|
||
,RES_RUIMTE_OMSCHRIJVING
|
||
,RES_DISCIPLINE_KEY
|
||
)
|
||
VALUES
|
||
(v_ruimte_omschrijving
|
||
,upper(v_ruimte_omschrijving)
|
||
,recResRuimte.RES_RUIMTE_PRIJS
|
||
,recResRuimte.RES_RUIMTE_OMSCHRIJVING
|
||
,v_discipline_key
|
||
)
|
||
RETURNING RES_RUIMTE_KEY
|
||
INTO v_res_ruimte_key;
|
||
|
||
v_errorhint := 'Fout bij koppelen ruimte en reserveerbare ruimte';
|
||
|
||
insert into RES_ALG_RUIMTE
|
||
(RES_RUIMTE_KEY
|
||
,ALG_RUIMTE_KEY
|
||
)
|
||
values
|
||
(v_res_ruimte_key
|
||
,v_ruimte_key
|
||
);
|
||
|
||
ELSE
|
||
|
||
SELECT RES_RUIMTE_KEY
|
||
INTO v_res_ruimte_key
|
||
FROM RES_RUIMTE
|
||
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
|
||
AND res_ruimte_verwijder IS NULL;
|
||
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij koppelen opstelling en reserveerbare ruimte';
|
||
|
||
insert into RES_RUIMTE_OPSTELLING
|
||
(RES_RUIMTE_KEY
|
||
,RES_OPSTELLING_KEY
|
||
,RES_RUIMTE_OPSTEL_BEZOEKERS
|
||
)
|
||
values
|
||
(v_res_ruimte_key
|
||
,v_opstelling_key
|
||
,NVL(recResRuimte.RES_RUIMTE_OPSTEL_BEZOEKERS, 0)
|
||
);
|
||
|
||
commit;
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := 'Reserveerbare ruimte ['||recResRuimte.RES_RUIMTE_OMSCHRIJVING||']';
|
||
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
commit;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Res. ruimte: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Res. ruimte: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
|
||
''
|
||
);
|
||
END IF;
|
||
CLOSE cResRuimte;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Fout tijdens importeren van onroerend goed (verdieping en ruimte) ',
|
||
''
|
||
);
|
||
END 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 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count 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);
|
||
|
||
-- 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);
|
||
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) > 10
|
||
THEN
|
||
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10);
|
||
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) > 10
|
||
THEN
|
||
v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10);
|
||
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_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
|
||
)
|
||
VALUES (
|
||
v_bedrijf_naam,
|
||
v_afdeling_naam,
|
||
v_afdeling_naam_parent,
|
||
v_afdeling_omschrijving,
|
||
v_kostenplaats_nr
|
||
);
|
||
|
||
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 (1) := ';';
|
||
|
||
v_newline VARCHAR2 (1000); -- 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
|
||
,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
|
||
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
|
||
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
|
||
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
|
||
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
|
||
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 = '') 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: <b>'||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 = '') 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: <b>'||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
|
||
)
|
||
values
|
||
(recAfdeling1.prs_afdeling_naam
|
||
,recAfdeling1.prs_afdeling_omschrijving
|
||
,v_bedrijf_key
|
||
,v_prs_afdeling_parentkey
|
||
,v_kostenplaats_key
|
||
);
|
||
|
||
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 = '') 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: <b>'||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;
|
||
/
|
||
|
||
/* Formatted on 11-3-2010 15:37:18 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_perslid (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count NUMBER;
|
||
v_ongeldig NUMBER (1);
|
||
v_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_alg_locatie_code VARCHAR2 (256);
|
||
v_alg_gebouw_code VARCHAR2 (256);
|
||
v_alg_verdieping_volgnr VARCHAR2 (256);
|
||
v_alg_verdieping_volgnr_num NUMBER (3);
|
||
v_alg_ruimte_nr VARCHAR2 (256);
|
||
v_prs_werkplek_volgnr VARCHAR2 (256);
|
||
v_prs_werkplek_volgnr_num NUMBER (3);
|
||
v_prs_werkplek_omschrijving VARCHAR2 (256);
|
||
v_prs_afdeling_naam VARCHAR2 (256);
|
||
v_prs_perslid_naam VARCHAR2 (256);
|
||
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
||
v_prs_perslid_voorletters VARCHAR2 (256);
|
||
v_prs_perslid_voornaam VARCHAR2 (256);
|
||
v_prs_perslid_titel VARCHAR2 (256);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
||
v_prs_perslid_nr VARCHAR2 (256);
|
||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||
v_prs_perslid_wachtwoord VARCHAR2 (256);
|
||
|
||
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_perslid;
|
||
|
||
COMMIT;
|
||
v_count_error := 0;
|
||
header_is_valid := 0;
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
v_aanduiding := '';
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_errormsg := '';
|
||
v_errorhint := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
v_ongeldig := 0;
|
||
|
||
-- Lees alle veldwaarden
|
||
-- 01
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
|
||
-- 02
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
|
||
-- 03
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_verdieping_volgnr);
|
||
-- 04
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_ruimte_nr);
|
||
-- 05
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_werkplek_volgnr);
|
||
-- 06
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_werkplek_omschrijving);
|
||
-- 07
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
|
||
-- 08
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
||
-- 09
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
|
||
-- 10
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
|
||
-- 11
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
|
||
-- 12
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_titel);
|
||
-- 13
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
|
||
-- 14
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
|
||
-- 15
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||
-- 16
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
|
||
-- 17
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
|
||
-- 18
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
||
-- 19
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_wachtwoord);
|
||
--
|
||
v_aanduiding := v_prs_perslid_naam || '|' || v_prs_perslid_voornaam || '| ';
|
||
|
||
-- Controleer alle veldwaarde
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
||
AND UPPER (v_prs_perslid_oslogin) = 'LOGINNAAM'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errorhint := 'Ongeldige locatiecode';
|
||
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 || 'Locatie-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_alg_locatie_code || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige gebouw code';
|
||
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 || 'Gebouw-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_alg_gebouw_code || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig verdieping volgnummer';
|
||
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
||
|
||
IF (v_alg_verdieping_volgnr IS NULL)
|
||
THEN
|
||
v_alg_verdieping_volgnr_num := TO_NUMBER (v_alg_verdieping_volgnr);
|
||
ELSE
|
||
BEGIN
|
||
v_alg_verdieping_volgnr_num := TO_NUMBER (v_alg_verdieping_volgnr);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
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_aanduiding || v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige ruimte nr';
|
||
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
||
|
||
IF LENGTH (v_alg_ruimte_nr) > 10
|
||
THEN
|
||
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Ruimtenr-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_alg_ruimte_nr || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig werkplek volgnummer';
|
||
v_prs_werkplek_volgnr := TRIM (v_prs_werkplek_volgnr);
|
||
|
||
IF (v_prs_werkplek_volgnr IS NULL)
|
||
THEN
|
||
v_prs_werkplek_volgnr_num := TO_NUMBER (v_prs_werkplek_volgnr);
|
||
ELSE
|
||
BEGIN
|
||
v_alg_verdieping_volgnr_num := TO_NUMBER (v_alg_verdieping_volgnr);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_ongeldig := 1;
|
||
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_aanduiding || v_errormsg, v_errorhint);
|
||
END;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige werkplek omschrijving';
|
||
v_prs_werkplek_omschrijving := TRIM (v_prs_werkplek_omschrijving);
|
||
|
||
IF LENGTH (v_prs_werkplek_omschrijving) > 30
|
||
THEN
|
||
v_prs_werkplek_omschrijving := SUBSTR (v_prs_werkplek_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Werkplek-aanduiding is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_werkplek_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige afdelingscode';
|
||
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
|
||
|
||
IF LENGTH (v_prs_afdeling_naam) > 10
|
||
THEN
|
||
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingscode is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_afdeling_naam || ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_afdeling_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Afdelingscode onbekend',
|
||
'Afdelingscode moet worden opgegeven'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige naam persoon';
|
||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||
|
||
IF LENGTH (v_prs_perslid_naam) > 60
|
||
THEN
|
||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Naam persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_naam || ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Naam persoon onbekend',
|
||
'Naam persoon moet worden opgegeven'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige tussenvoegsel persoon';
|
||
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
||
|
||
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
|
||
THEN
|
||
v_prs_perslid_tussenvoegsel := SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Tussenvoegsel persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_tussenvoegsel || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige voorletters persoon';
|
||
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
|
||
|
||
IF LENGTH (v_prs_perslid_voorletters) > 10
|
||
THEN
|
||
v_prs_perslid_voorletters := SUBSTR (v_prs_perslid_voorletters, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voorletters persoon zijn te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_voorletters || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Voornaam persoon';
|
||
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
|
||
|
||
IF LENGTH (v_prs_perslid_voornaam) > 30
|
||
THEN
|
||
v_prs_perslid_voornaam := SUBSTR (v_prs_perslid_voornaam, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voornaam persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_voornaam || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige titel persoon';
|
||
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
|
||
|
||
IF LENGTH (v_prs_perslid_titel) > 15
|
||
THEN
|
||
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Titel persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_titel || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige titel persoon';
|
||
v_prs_perslid_titel := TRIM (v_prs_perslid_titel);
|
||
|
||
IF LENGTH (v_prs_perslid_titel) > 15
|
||
THEN
|
||
v_prs_perslid_titel := SUBSTR (v_prs_perslid_titel, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Titel persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_titel || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige telefoonnr. persoon';
|
||
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
|
||
|
||
IF LENGTH (v_prs_perslid_telefoonnr) > 15
|
||
THEN
|
||
v_prs_perslid_telefoonnr := SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Telefoonnr. persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_telefoonnr || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige mobielnr. persoon';
|
||
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
||
|
||
IF LENGTH (v_prs_perslid_mobiel) > 15
|
||
THEN
|
||
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Mobielnr. persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_mobiel || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige email persoon';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 200
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Email persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_email || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige functie persoon';
|
||
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
|
||
|
||
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
|
||
THEN
|
||
v_prs_srtperslid_omschrijving := SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Functie-aanduiding persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_srtperslid_omschrijving || ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_srtperslid_omschrijving IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Functie persoon onbekend',
|
||
'Functie persoon moet worden opgegeven'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige persoonnr.';
|
||
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
||
|
||
IF LENGTH (v_prs_perslid_nr) > 16
|
||
THEN
|
||
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Persoonnr. persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_nr || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige loginnaam';
|
||
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
||
|
||
IF LENGTH (v_prs_perslid_oslogin) > 30
|
||
THEN
|
||
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Loginnaam persoon is te lang',
|
||
'Aanduiding wordt afgebroken tot [' || v_prs_perslid_oslogin || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_prs_afdeling_naam || ']';
|
||
|
||
INSERT INTO fac_imp_perslid (
|
||
alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr,
|
||
prs_werkplek_volgnr,
|
||
prs_werkplek_omschrijving,
|
||
prs_afdeling_naam,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_titel,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_srtperslid_omschrijving,
|
||
prs_perslid_nr,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_wachtwoord
|
||
)
|
||
VALUES (
|
||
v_alg_locatie_code,
|
||
v_alg_gebouw_code,
|
||
v_alg_verdieping_volgnr,
|
||
v_alg_ruimte_nr,
|
||
v_prs_werkplek_volgnr,
|
||
v_prs_werkplek_omschrijving,
|
||
v_prs_afdeling_naam,
|
||
v_prs_perslid_naam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_voorletters,
|
||
v_prs_perslid_voornaam,
|
||
v_prs_perslid_titel,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_mobiel,
|
||
v_prs_perslid_email,
|
||
v_prs_srtperslid_omschrijving,
|
||
v_prs_perslid_nr,
|
||
v_prs_perslid_oslogin,
|
||
v_prs_perslid_wachtwoord
|
||
);
|
||
|
||
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', 'Persoon: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: 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_aanduiding || v_errormsg, v_errorhint);
|
||
END fac_import_perslid;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_perslid_del (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
BEGIN
|
||
|
||
fac_import_perslid(p_import_key);
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_perslid (
|
||
p_import_key IN NUMBER
|
||
) IS
|
||
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
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_perslid_key NUMBER(10);
|
||
v_afdeling_key NUMBER(10);
|
||
v_srtperslid_key NUMBER(10);
|
||
v_werkplek_volgnr NUMBER(3);
|
||
v_werkplek_omschrijving VARCHAR2(30);
|
||
v_ruimte_key NUMBER(10);
|
||
v_locatie_key NUMBER(10);
|
||
v_gebouw_key NUMBER(10);
|
||
v_verdieping_key NUMBER(10);
|
||
v_prs_werkplek_key NUMBER(10);
|
||
|
||
CURSOR cSPERSLID
|
||
IS
|
||
SELECT min(PRS_PERSLID_NAAM) PRS_PERSLID_NAAM,
|
||
min(PRS_PERSLID_VOORNAAM) PRS_PERSLID_VOORNAAM,
|
||
min(PRS_SRTPERSLID_OMSCHRIJVING) PRS_SRTPERSLID_OMSCHRIJVING
|
||
FROM FAC_IMP_PERSLID
|
||
GROUP BY UPPER(prs_srtperslid_omschrijving);
|
||
|
||
recSPersLid cSPersLid%ROWTYPE;
|
||
|
||
CURSOR cPERSLID
|
||
IS
|
||
SELECT *
|
||
FROM FAC_IMP_PERSLID;
|
||
|
||
recPersLid cPersLid%ROWTYPE;
|
||
|
||
CURSOR cWP
|
||
IS
|
||
SELECT *
|
||
FROM FAC_IMP_PERSLID
|
||
WHERE ((alg_locatie_code IS NOT NULL) OR
|
||
(alg_gebouw_code IS NOT NULL) OR
|
||
(alg_verdieping_volgnr IS NOT NULL) OR
|
||
(alg_ruimte_nr IS NOT NULL));
|
||
|
||
recWP cWP%ROWTYPE;
|
||
|
||
BEGIN
|
||
OPEN cSPersLid;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cSPersLid%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
FETCH cSPersLid INTO recSPersLid;
|
||
EXIT WHEN cSPersLid%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recSPersLid.PRS_PERSLID_NAAM||'|'||recSPersLid.PRS_PERSLID_VOORNAAM||'|'||recSPersLid.PRS_SRTPERSLID_OMSCHRIJVING||'| ';
|
||
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM PRS_SRTPERSLID
|
||
WHERE UPPER(prs_srtperslid_omschrijving) = UPPER(recSPersLid.prs_srtperslid_omschrijving)
|
||
AND prs_srtperslid_verwijder is null;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
insert into PRS_SRTPERSLID
|
||
(prs_srtperslid_omschrijving
|
||
)
|
||
values
|
||
(recSPersLid.prs_srtperslid_omschrijving
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || 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',
|
||
'Personeelsfunctie: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Personeelsfunctie: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
||
''
|
||
);
|
||
COMMIT; -- logging
|
||
|
||
CLOSE cSPersLid;
|
||
|
||
END IF;
|
||
|
||
|
||
OPEN cPersLid;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cPersLid%ISOPEN THEN
|
||
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
FETCH cPersLid INTO recPersLid;
|
||
EXIT WHEN cPersLid%NOTFOUND;
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recPersLid.PRS_PERSLID_NAAM||'|'||recPersLid.PRS_PERSLID_NAAM||'| ';
|
||
v_errormsg := '';
|
||
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder is null
|
||
AND UPPER(PRS_SRTPERSLID_OMSCHRIJVING) = UPPER(recPersLid.PRS_SRTPERSLID_OMSCHRIJVING);
|
||
|
||
v_errorhint := 'Afdeling niet gevonden ['||recPersLid.PRS_AFDELING_NAAM||']';
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE UPPER(PRS_AFDELING_NAAM) = UPPER(recPersLid.PRS_AFDELING_NAAM)
|
||
AND prs_afdeling_verwijder is null;
|
||
|
||
v_errorhint := 'Kijken of de persoon al bestaat';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder is null
|
||
AND upper(prs_perslid_naam) = upper(recPersLid.prs_perslid_naam)
|
||
AND upper(prs_perslid_voornaam) = upper(recPersLid.prs_perslid_voornaam);
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
insert into PRS_PERSLID
|
||
(PRS_PERSLID_MODULE
|
||
,PRS_SRTPERSLID_KEY
|
||
,PRS_AFDELING_KEY
|
||
,PRS_PERSLID_NAAM
|
||
,PRS_PERSLID_VOORLETTERS
|
||
,PRS_PERSLID_TUSSENVOEGSEL
|
||
,PRS_PERSLID_VOORNAAM
|
||
,PRS_PERSLID_TELEFOONNR
|
||
,PRS_PERSLID_MOBIEL
|
||
,PRS_PERSLID_EMAIL
|
||
,PRS_PERSLID_NR
|
||
,PRS_PERSLID_TITEL
|
||
,PRS_PERSLID_OSLOGIN
|
||
)
|
||
values
|
||
('PRS'
|
||
,v_srtperslid_key
|
||
,v_afdeling_key
|
||
,recPersLid.PRS_PERSLID_NAAM
|
||
,recPersLid.PRS_PERSLID_VOORLETTERS
|
||
,recPersLid.PRS_PERSLID_TUSSENVOEGSEL
|
||
,recPersLid.PRS_PERSLID_VOORNAAM
|
||
,recPersLid.PRS_PERSLID_TELEFOONNR
|
||
,recPersLid.PRS_PERSLID_MOBIEL
|
||
,recPersLid.PRS_PERSLID_EMAIL
|
||
,recPersLid.PRS_PERSLID_NR
|
||
,recPersLid.PRS_PERSLID_TITEL
|
||
,recPersLid.PRS_PERSLID_OSLOGIN
|
||
) RETURNING prs_perslid_key INTO v_perslid_key;
|
||
|
||
prs.setpassword(v_perslid_key, recPersLid.PRS_PERSLID_WACHTWOORD);
|
||
|
||
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);
|
||
v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || 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',
|
||
'Persoon: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
||
''
|
||
);
|
||
CLOSE cPersLid;
|
||
|
||
END IF;
|
||
|
||
OPEN cWP;
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
IF cWP%ISOPEN THEN
|
||
|
||
COMMIT;
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
|
||
FETCH cWP INTO recWP;
|
||
EXIT WHEN cWP%NOTFOUND; -- Geen werkplekken meer?
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recWP.PRS_PERSLID_NAAM||'|'||recWP.PRS_PERSLID_VOORNAAM||'|'||recWP.alg_locatie_code||'|'||recWP.alg_gebouw_code||'|'||recWP.alg_verdieping_volgnr||'|'||recWP.alg_ruimte_nr||'| ';
|
||
v_errormsg := '';
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon ['||recWP.PRS_PERSLID_VOORNAAM||'|'||recWP.PRS_PERSLID_NAAM||']';
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder is null
|
||
AND upper(prs_perslid_naam) = upper(recWP.prs_perslid_naam)
|
||
AND upper(prs_perslid_voornaam) = upper(recWP.prs_perslid_voornaam);
|
||
|
||
v_errorhint := 'Fout bij bepalen of persoon al een werkplek heeft';
|
||
select count(*)
|
||
into v_count
|
||
from prs_perslid p, prs_perslidwerkplek w
|
||
where p.PRS_PERSLID_KEY = v_perslid_key
|
||
and p.PRS_PERSLID_KEY = w.prs_perslid_key;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij bepalen locatie';
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_locatie
|
||
WHERE UPPER(alg_locatie_code) = UPPER(recWP.alg_locatie_code)
|
||
AND alg_locatie_verwijder is null;
|
||
|
||
v_errorhint := 'Fout bij bepalen gebouw ['||recWP.alg_gebouw_code||']';
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE upper(alg_gebouw_code) = upper(recWP.alg_gebouw_code)
|
||
and alg_locatie_key = v_locatie_key;
|
||
|
||
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 = recWP.alg_verdieping_volgnr
|
||
AND alg_verdieping_verwijder is null;
|
||
|
||
v_errorhint := 'Fout bij bepalen ruimte ['||to_char(recWP.alg_ruimte_nr)||']';
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_verdieping_key = v_verdieping_key
|
||
AND UPPER(alg_ruimte_nr) = UPPER(recWP.alg_ruimte_nr);
|
||
|
||
v_errorhint := 'Fout bij bepalen werkplekvolgnr.';
|
||
IF (recWP.prs_werkplek_volgnr IS NULL) THEN
|
||
|
||
SELECT COALESCE(MAX(prs_werkplek_volgnr),0)+1
|
||
INTO v_werkplek_volgnr
|
||
FROM prs_werkplek
|
||
WHERE prs_alg_ruimte_key = v_ruimte_key;
|
||
|
||
IF recWP.prs_werkplek_omschrijving IS NULL THEN
|
||
v_werkplek_omschrijving := recWP.alg_ruimte_nr||'/'||to_char(v_werkplek_volgnr);
|
||
ELSE
|
||
v_werkplek_omschrijving := recWP.prs_werkplek_omschrijving;
|
||
END IF;
|
||
|
||
ELSE
|
||
|
||
v_werkplek_volgnr := recWP.prs_werkplek_volgnr;
|
||
v_werkplek_omschrijving := recWP.prs_werkplek_omschrijving;
|
||
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen of de persoon in de opgegeven ruimte een werkplek heeft';
|
||
SELECT count(*)
|
||
INTO v_count
|
||
FROM prs_perslidwerkplek pw, prs_werkplek wp
|
||
WHERE wp.prs_alg_ruimte_key = v_ruimte_key
|
||
AND wp.prs_werkplek_key = pw.prs_werkplek_key
|
||
AND pw.prs_perslid_key = v_perslid_key;
|
||
|
||
IF (v_count = 0) THEN
|
||
|
||
v_errorhint := 'Fout bij toevoegen werkplek';
|
||
SELECT prs_s_prs_werkplek_key.NEXTVAL
|
||
INTO v_prs_werkplek_key
|
||
FROM DUAL;
|
||
|
||
INSERT INTO prs_werkplek
|
||
(PRS_WERKPLEK_KEY
|
||
,PRS_WERKPLEK_MODULE
|
||
,PRS_WERKPLEK_VOLGNR
|
||
,PRS_WERKPLEK_OMSCHRIJVING
|
||
,PRS_ALG_RUIMTE_KEY
|
||
) VALUES (
|
||
v_prs_werkplek_key
|
||
,'PRR'
|
||
,v_werkplek_volgnr
|
||
,v_werkplek_omschrijving
|
||
,v_ruimte_key
|
||
);
|
||
|
||
v_errorhint := 'Fout bij werkplek';
|
||
INSERT INTO prs_perslidwerkplek
|
||
(prs_perslid_key
|
||
,prs_werkplek_key)
|
||
VALUES
|
||
(v_perslid_key
|
||
,v_prs_werkplek_key);
|
||
|
||
END IF;
|
||
|
||
END IF;
|
||
|
||
COMMIT; -- Alles OK, bewaren dan maar
|
||
|
||
EXCEPTION WHEN OTHERS THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
||
v_errormsg := ' (ORACLE error number = <' || ORACLE_err_num || '> ORACLE error message = <' || ORACLE_err_mes || '>)';
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding||v_errormsg,
|
||
v_errorhint
|
||
);
|
||
|
||
COMMIT; -- tbv logging
|
||
|
||
END;
|
||
|
||
END LOOP; -- Volgende werkplek ...
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Werkplek: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
||
''
|
||
);
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Werkplek: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
||
''
|
||
);
|
||
|
||
END IF;
|
||
CLOSE cWP;
|
||
|
||
|
||
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;
|
||
/
|
||
|
||
|
||
|
||
|
||
//////////////////////////////////////////////////MLD IMPORT STUFF///////////////////////////////////////////
|
||
/* Formatted on 20-7-2010 16:49:23 (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_mld (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden:
|
||
v_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); -- C30
|
||
v_stdmelding_omschrijving VARCHAR2 (255); -- C30
|
||
v_stdmelding_groep VARCHAR2 (255); -- C30
|
||
v_stdmelding_kostensoort VARCHAR2 (255); -- C60
|
||
v_stdmelding_urgentie VARCHAR2 (255); -- N4,2
|
||
v_stdmelding_uitvoertijd VARCHAR2 (255); -- N3
|
||
v_stdmelding_uitvoertijd1 VARCHAR2 (255); -- N3
|
||
v_stdmelding_uitvoertijd2 VARCHAR2 (255); -- N3
|
||
v_stdmelding_uitvoertijd4 VARCHAR2 (255); -- N3
|
||
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
|
||
-- Overige velden:
|
||
v_stdmelding_urgentie_n mld_stdmelding.mld_stdmelding_urgentie%TYPE;
|
||
v_stdmelding_uitvoertijd_n mld_stdmelding.mld_stdmelding_uitvoertijd%TYPE;
|
||
v_stdmelding_uitvoertijd1_n mld_stdmelding.mld_stdmelding_uitvoertijd_pr1%TYPE;
|
||
v_stdmelding_uitvoertijd2_n mld_stdmelding.mld_stdmelding_uitvoertijd_pr2%TYPE;
|
||
v_stdmelding_uitvoertijd4_n mld_stdmelding.mld_stdmelding_uitvoertijd_pr4%TYPE;
|
||
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_urgentie); -- acceptatietijd
|
||
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
|
||
|
||
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_kostensoort
|
||
|| '|'
|
||
|| v_stdmelding_urgentie
|
||
|| '|'
|
||
|| v_stdmelding_uitvoertijd
|
||
|| '|'
|
||
|| v_discipline_directklaar
|
||
|| '| ';
|
||
|
||
-- 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_srtdiscipline_omschrijving) = 'VAKGROEPTYPE'
|
||
AND UPPER (v_discipline_omschrijving) = 'VAKGROEP'
|
||
AND UPPER (v_stdmelding_omschrijving) = 'STANDAARDMELDING'
|
||
AND UPPER (v_stdmelding_uitvoertijd4) = 'UITVOERTIJD LAAG'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarde
|
||
v_srtdiscipline_omschrijving := TRIM (v_srtdiscipline_omschrijving);
|
||
|
||
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;
|
||
|
||
--
|
||
v_srtdiscipline_prefix := TRIM (v_srtdiscipline_prefix);
|
||
|
||
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) > 30
|
||
THEN
|
||
v_discipline_omschrijving := SUBSTR (v_discipline_omschrijving, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Vakgroep wordt afgebroken tot [' || v_discipline_omschrijving || ']'
|
||
);
|
||
END IF;
|
||
|
||
--
|
||
v_stdmelding_omschrijving := TRIM (v_stdmelding_omschrijving);
|
||
|
||
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;
|
||
|
||
--
|
||
v_stdmelding_kostensoort := TRIM (v_stdmelding_kostensoort);
|
||
|
||
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_urgentie_n := fac.safe_to_number (v_stdmelding_urgentie);
|
||
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_urgentie
|
||
|| ']'
|
||
);
|
||
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 ('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;
|
||
|
||
-- Insert geformatteerde import record
|
||
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_urgentie,
|
||
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
|
||
)
|
||
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_urgentie,
|
||
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_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;
|
||
/
|
||
|
||
/* Formatted on 2008/08/25 23:56 (Formatter Plus v4.8.5) */
|
||
CREATE OR REPLACE PROCEDURE fac_update_mld (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
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);
|
||
|
||
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,
|
||
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);
|
||
|
||
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
|
||
)
|
||
VALUES ('MLD',
|
||
SUBSTR (rec.ins_discipline_omschrijving, 1, 30),
|
||
1, srtdiscipline_key
|
||
) 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_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);
|
||
|
||
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;
|
||
|
||
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;
|
||
|
||
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;
|
||
|
||
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;
|
||
|
||
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 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;
|
||
|
||
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_urgentie), NULL) = '
|
||
|| TO_CHAR (NVL (TO_NUMBER (rec.mld_stdmelding_urgentie), 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_urgentie,
|
||
mld_stdmelding_uitvoertijd,
|
||
mld_stdmelding_uitvoertijd_pr1,
|
||
mld_stdmelding_uitvoertijd_pr2,
|
||
mld_stdmelding_uitvoertijd_pr4,
|
||
prs_dienst_key,
|
||
mld_stdmelding_notfrontend,
|
||
alg_onrgoed_niveau,
|
||
mld_typeopdr_key
|
||
)
|
||
VALUES (discipline_key,
|
||
rec.mld_stdmelding_omschrijving,
|
||
stdmeldinggroep_key,
|
||
kostensoort_key,
|
||
rec.mld_stdmelding_urgentie,
|
||
COALESCE(rec.mld_stdmelding_uitvoertijd, 2),
|
||
rec.mld_stdmelding_uitvoertijd1,
|
||
rec.mld_stdmelding_uitvoertijd2,
|
||
rec.mld_stdmelding_uitvoertijd4,
|
||
dienst_key,
|
||
rec.mld_stdmelding_notfrontend,
|
||
rec.alg_onrgoed_niveau,
|
||
typeopdr_key
|
||
);
|
||
|
||
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_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;
|
||
/
|
||
|
||
|
||
//////////////////////////////////////////////////INS IMPORT STUFF///////////////////////////////////////////
|
||
/* Formatted on 2008/08/29 13:45 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_ins (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR (200);
|
||
v_ins_srtkenmerk_key1 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key2 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key3 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key4 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key5 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key6 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key7 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key8 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key9 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key10 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key11 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key12 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key13 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key14 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key15 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key16 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key17 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key18 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key19 VARCHAR2 (255);
|
||
v_ins_srtkenmerk_key20 VARCHAR2 (255);
|
||
-- De importvelden
|
||
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
|
||
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_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); -- C10
|
||
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_omschrijving VARCHAR2 (255); -- C30
|
||
v_res_discipline_kostensoort VARCHAR2 (255); -- C60
|
||
v_prs_perslid_matchcode VARCHAR2 (255);
|
||
v_prs_perslid_matchwaarde VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde1 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde2 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde3 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde4 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde5 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde6 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde7 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde8 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde9 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde10 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde11 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde12 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde13 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde14 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde15 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde16 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde17 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde18 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde19 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde20 VARCHAR2 (255);
|
||
|
||
-- 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 bestaan van kenmerksoort (of
|
||
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende object-
|
||
-- discipline/groep/soort, volgt pas tijdens de update-fase)!
|
||
FUNCTION bepaal_srtkenmerk_key (kw IN VARCHAR)
|
||
RETURN NUMBER
|
||
IS
|
||
v_srtkenmerk_key NUMBER;
|
||
BEGIN
|
||
IF fac.safe_to_number (kw) IS NULL
|
||
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
||
SELECT ins_srtkenmerk_key
|
||
INTO v_srtkenmerk_key
|
||
FROM ins_v_aanwezigsrtkenmerk
|
||
WHERE ins_srtkenmerk_upper = UPPER (kw)
|
||
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S');
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT ins_srtkenmerk_key
|
||
INTO v_srtkenmerk_key
|
||
FROM ins_v_aanwezigsrtkenmerk
|
||
WHERE ins_srtkenmerk_key = fac.safe_to_number (kw)
|
||
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S');
|
||
END IF;
|
||
|
||
RETURN v_srtkenmerk_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 kenmerksoort [' || 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 := '';
|
||
|
||
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_ins_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_kostensoort);
|
||
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_srtdeel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_reserveerbaar);
|
||
fac.imp_getfield (v_newline, c_delim, v_res_deel_eenheid);
|
||
fac.imp_getfield (v_newline, c_delim, v_res_deel_prijs);
|
||
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_volgnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_res_deel_alg_level);
|
||
fac.imp_getfield (v_newline, c_delim, v_res_discipline_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_res_discipline_kostensoort);
|
||
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_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);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
|
||
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
|
||
fac.imp_getfield (v_newline, c_delim, 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) = 'OBJECTOMSCHRIJVING'
|
||
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_omschrijving) = 'CATALOGUSNAAM'
|
||
AND UPPER (v_res_discipline_kostensoort) =
|
||
'CATALOGUSKOSTENSOORT'
|
||
AND UPPER (v_prs_perslid_matchcode) = 'PERSOONMATCHCODE'
|
||
AND UPPER (v_prs_perslid_matchwaarde) = 'PERSOONMATCHWAARDE'
|
||
THEN
|
||
v_ins_srtkenmerk_key1 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde1);
|
||
v_ins_srtkenmerk_key2 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde2);
|
||
v_ins_srtkenmerk_key3 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde3);
|
||
v_ins_srtkenmerk_key4 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde4);
|
||
v_ins_srtkenmerk_key5 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde5);
|
||
v_ins_srtkenmerk_key6 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde6);
|
||
v_ins_srtkenmerk_key7 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde7);
|
||
v_ins_srtkenmerk_key8 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde8);
|
||
v_ins_srtkenmerk_key9 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde9);
|
||
v_ins_srtkenmerk_key10 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde10);
|
||
v_ins_srtkenmerk_key11 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde11);
|
||
v_ins_srtkenmerk_key12 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde12);
|
||
v_ins_srtkenmerk_key13 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde13);
|
||
v_ins_srtkenmerk_key14 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde14);
|
||
v_ins_srtkenmerk_key15 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde15);
|
||
v_ins_srtkenmerk_key16 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde16);
|
||
v_ins_srtkenmerk_key17 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde17);
|
||
v_ins_srtkenmerk_key18 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde18);
|
||
v_ins_srtkenmerk_key19 :=
|
||
bepaal_srtkenmerk_key (v_ins_kenmerkwaarde19);
|
||
v_ins_srtkenmerk_key20 :=
|
||
bepaal_srtkenmerk_key (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) > 30
|
||
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;
|
||
|
||
-- 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) > 10
|
||
THEN
|
||
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
|
||
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 := 'Catalogusnaam ongeldig';
|
||
v_res_discipline_omschrijving :=
|
||
TRIM (v_res_discipline_omschrijving);
|
||
|
||
IF LENGTH (v_res_discipline_omschrijving) > 30
|
||
THEN
|
||
v_res_discipline_omschrijving :=
|
||
SUBSTR (TRIM (v_res_discipline_omschrijving), 1, 30);
|
||
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;
|
||
|
||
-- 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,
|
||
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_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
|
||
)
|
||
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_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_omschrijving,
|
||
v_res_discipline_kostensoort,
|
||
v_prs_perslid_matchcode,
|
||
v_prs_perslid_matchwaarde,
|
||
DECODE (v_ins_srtkenmerk_key1,
|
||
NULL, v_ins_kenmerkwaarde1,
|
||
TO_CHAR (v_ins_srtkenmerk_key1)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde1, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key2,
|
||
NULL, v_ins_kenmerkwaarde2,
|
||
TO_CHAR (v_ins_srtkenmerk_key2)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde2, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key3,
|
||
NULL, v_ins_kenmerkwaarde3,
|
||
TO_CHAR (v_ins_srtkenmerk_key3)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde3, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key4,
|
||
NULL, v_ins_kenmerkwaarde4,
|
||
TO_CHAR (v_ins_srtkenmerk_key4)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde4, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key5,
|
||
NULL, v_ins_kenmerkwaarde5,
|
||
TO_CHAR (v_ins_srtkenmerk_key5)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde5, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key6,
|
||
NULL, v_ins_kenmerkwaarde6,
|
||
TO_CHAR (v_ins_srtkenmerk_key6)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde6, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key7,
|
||
NULL, v_ins_kenmerkwaarde7,
|
||
TO_CHAR (v_ins_srtkenmerk_key7)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde7, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key8,
|
||
NULL, v_ins_kenmerkwaarde8,
|
||
TO_CHAR (v_ins_srtkenmerk_key8)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde8, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key9,
|
||
NULL, v_ins_kenmerkwaarde9,
|
||
TO_CHAR (v_ins_srtkenmerk_key9)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde9, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key10,
|
||
NULL, v_ins_kenmerkwaarde10,
|
||
TO_CHAR (v_ins_srtkenmerk_key10)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde10, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key11,
|
||
NULL, v_ins_kenmerkwaarde11,
|
||
TO_CHAR (v_ins_srtkenmerk_key11)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde11, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key12,
|
||
NULL, v_ins_kenmerkwaarde12,
|
||
TO_CHAR (v_ins_srtkenmerk_key12)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde12, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key13,
|
||
NULL, v_ins_kenmerkwaarde13,
|
||
TO_CHAR (v_ins_srtkenmerk_key13)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde13, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key14,
|
||
NULL, v_ins_kenmerkwaarde14,
|
||
TO_CHAR (v_ins_srtkenmerk_key14)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde14, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key15,
|
||
NULL, v_ins_kenmerkwaarde15,
|
||
TO_CHAR (v_ins_srtkenmerk_key15)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde15, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key16,
|
||
NULL, v_ins_kenmerkwaarde16,
|
||
TO_CHAR (v_ins_srtkenmerk_key16)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde16, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key17,
|
||
NULL, v_ins_kenmerkwaarde17,
|
||
TO_CHAR (v_ins_srtkenmerk_key17)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde17, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key18,
|
||
NULL, v_ins_kenmerkwaarde18,
|
||
TO_CHAR (v_ins_srtkenmerk_key18)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde18, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key19,
|
||
NULL, v_ins_kenmerkwaarde19,
|
||
TO_CHAR (v_ins_srtkenmerk_key19)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde19, 1, 200)
|
||
),
|
||
DECODE (
|
||
v_ins_srtkenmerk_key20,
|
||
NULL, v_ins_kenmerkwaarde20,
|
||
TO_CHAR (v_ins_srtkenmerk_key20)
|
||
|| '='
|
||
|| SUBSTR (v_ins_kenmerkwaarde20, 1, 200)
|
||
)
|
||
);
|
||
|
||
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!');
|
||
END fac_import_ins;
|
||
/
|
||
|
||
|
||
/* Formatted on 1-3-2013 17:27:29 (QP5 v5.136.908.31019) */
|
||
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;
|
||
|
||
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
|
||
|| ' ORACLE (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;
|
||
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, 30),
|
||
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
|
||
|| ' ORACLE (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 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);
|
||
|
||
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;
|
||
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, 30),
|
||
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
|
||
|| ' ORACLE (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
|
||
|| ' ORACLE (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_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
|
||
|| ' ORACLE (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
|
||
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
||
p_srtkenmerk_key IN NUMBER,
|
||
p_waarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_key NUMBER;
|
||
v_srtkenmerk_type VARCHAR2 (1);
|
||
ccount NUMBER;
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam VARCHAR2 (30);
|
||
v_kolomnaam VARCHAR2 (30);
|
||
v_kolomtxt VARCHAR2 (30);
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_kenmerkdeel_key NUMBER;
|
||
BEGIN
|
||
IF p_srtkenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerk_key || ']';
|
||
|
||
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key, v_srtkenmerk_type
|
||
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 = p_srtkenmerk_key
|
||
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 k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
||
|
||
IF v_srtkenmerk_type IN ('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 = p_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 [' || p_waarde || ']';
|
||
|
||
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 = p_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 (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 ins_srtkenmerk sk, fac_kenmerkdomein d
|
||
WHERE sk.ins_srtkenmerk_key = p_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 ('''
|
||
|| p_waarde
|
||
|| ''')';
|
||
|
||
EXECUTE IMMEDIATE sql_stmt INTO v_waarde;
|
||
END IF;
|
||
ELSE -- C(haracter)/D(ate)/N(umeric)
|
||
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 ccount = 0
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
|
||
|
||
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 [' || v_waarde || ']';
|
||
|
||
UPDATE ins_kenmerkdeel
|
||
SET ins_kenmerkdeel_waarde = v_waarde
|
||
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_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_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,
|
||
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,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde1, 1, INSTR (ins_kenmerkwaarde1, '=') - 1))
|
||
srtkenmerk_key1,
|
||
SUBSTR (ins_kenmerkwaarde1, INSTR (ins_kenmerkwaarde1, '=') + 1) waarde1,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde2, 1, INSTR (ins_kenmerkwaarde2, '=') - 1))
|
||
srtkenmerk_key2,
|
||
SUBSTR (ins_kenmerkwaarde2, INSTR (ins_kenmerkwaarde2, '=') + 1) waarde2,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde3, 1, INSTR (ins_kenmerkwaarde3, '=') - 1))
|
||
srtkenmerk_key3,
|
||
SUBSTR (ins_kenmerkwaarde3, INSTR (ins_kenmerkwaarde3, '=') + 1) waarde3,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde4, 1, INSTR (ins_kenmerkwaarde4, '=') - 1))
|
||
srtkenmerk_key4,
|
||
SUBSTR (ins_kenmerkwaarde4, INSTR (ins_kenmerkwaarde4, '=') + 1) waarde4,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde5, 1, INSTR (ins_kenmerkwaarde5, '=') - 1))
|
||
srtkenmerk_key5,
|
||
SUBSTR (ins_kenmerkwaarde5, INSTR (ins_kenmerkwaarde5, '=') + 1) waarde5,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde6, 1, INSTR (ins_kenmerkwaarde6, '=') - 1))
|
||
srtkenmerk_key6,
|
||
SUBSTR (ins_kenmerkwaarde6, INSTR (ins_kenmerkwaarde6, '=') + 1) waarde6,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde7, 1, INSTR (ins_kenmerkwaarde7, '=') - 1))
|
||
srtkenmerk_key7,
|
||
SUBSTR (ins_kenmerkwaarde7, INSTR (ins_kenmerkwaarde7, '=') + 1) waarde7,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde8, 1, INSTR (ins_kenmerkwaarde8, '=') - 1))
|
||
srtkenmerk_key8,
|
||
SUBSTR (ins_kenmerkwaarde8, INSTR (ins_kenmerkwaarde8, '=') + 1) waarde8,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde9, 1, INSTR (ins_kenmerkwaarde9, '=') - 1))
|
||
srtkenmerk_key9,
|
||
SUBSTR (ins_kenmerkwaarde9, INSTR (ins_kenmerkwaarde9, '=') + 1) waarde9,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde10, 1, INSTR (ins_kenmerkwaarde10, '=') - 1))
|
||
srtkenmerk_key10,
|
||
SUBSTR (ins_kenmerkwaarde10, INSTR (ins_kenmerkwaarde10, '=') + 1) waarde10,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde11, 1, INSTR (ins_kenmerkwaarde11, '=') - 1))
|
||
srtkenmerk_key11,
|
||
SUBSTR (ins_kenmerkwaarde11, INSTR (ins_kenmerkwaarde11, '=') + 1) waarde11,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde12, 1, INSTR (ins_kenmerkwaarde12, '=') - 1))
|
||
srtkenmerk_key12,
|
||
SUBSTR (ins_kenmerkwaarde12, INSTR (ins_kenmerkwaarde12, '=') + 1) waarde12,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde13, 1, INSTR (ins_kenmerkwaarde13, '=') - 1))
|
||
srtkenmerk_key13,
|
||
SUBSTR (ins_kenmerkwaarde13, INSTR (ins_kenmerkwaarde13, '=') + 1) waarde13,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde14, 1, INSTR (ins_kenmerkwaarde14, '=') - 1))
|
||
srtkenmerk_key14,
|
||
SUBSTR (ins_kenmerkwaarde14, INSTR (ins_kenmerkwaarde14, '=') + 1) waarde14,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde15, 1, INSTR (ins_kenmerkwaarde15, '=') - 1))
|
||
srtkenmerk_key15,
|
||
SUBSTR (ins_kenmerkwaarde15, INSTR (ins_kenmerkwaarde15, '=') + 1) waarde15,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde16, 1, INSTR (ins_kenmerkwaarde16, '=') - 1))
|
||
srtkenmerk_key16,
|
||
SUBSTR (ins_kenmerkwaarde16, INSTR (ins_kenmerkwaarde16, '=') + 1) waarde16,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde17, 1, INSTR (ins_kenmerkwaarde17, '=') - 1))
|
||
srtkenmerk_key17,
|
||
SUBSTR (ins_kenmerkwaarde17, INSTR (ins_kenmerkwaarde17, '=') + 1) waarde17,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde18, 1, INSTR (ins_kenmerkwaarde18, '=') - 1))
|
||
srtkenmerk_key18,
|
||
SUBSTR (ins_kenmerkwaarde18, INSTR (ins_kenmerkwaarde18, '=') + 1) waarde18,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde19, 1, INSTR (ins_kenmerkwaarde19, '=') - 1))
|
||
srtkenmerk_key19,
|
||
SUBSTR (ins_kenmerkwaarde19, INSTR (ins_kenmerkwaarde19, '=') + 1) waarde19,
|
||
fac.safe_to_number (
|
||
SUBSTR (ins_kenmerkwaarde20, 1, INSTR (ins_kenmerkwaarde20, '=') - 1))
|
||
srtkenmerk_key20,
|
||
SUBSTR (ins_kenmerkwaarde20, INSTR (ins_kenmerkwaarde20, '=') + 1) waarde20
|
||
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);
|
||
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);
|
||
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_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 (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 '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 := 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 ('''
|
||
|| rec.prs_perslid_matchwaarde
|
||
|| ''') '
|
||
|| 'GROUP BY prs_perslid_key';
|
||
|
||
EXECUTE IMMEDIATE sql_stmt INTO v_ruimte_key, ccount;
|
||
|
||
IF ccount != 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
'Kan persoon niet 1-duidig bepalen');
|
||
END IF;
|
||
|
||
v_ruimte_type := 'P';
|
||
|
||
-- 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 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_alg_ruimte_key,
|
||
ins_alg_ruimte_type,
|
||
ins_alg_locatie_key)
|
||
VALUES (v_discipline_key,
|
||
v_srtdeel_key,
|
||
'INS',
|
||
rec.ins_deel_omschrijving,
|
||
v_ruimte_key,
|
||
v_ruimte_type,
|
||
v_locatie_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_eenheid,
|
||
res_deel_prijs,
|
||
res_discipline_key,
|
||
res_deel_alg_level)
|
||
VALUES (v_deel_key,
|
||
rec.ins_deel_omschrijving,
|
||
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)!
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key1, rec.waarde1);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key2, rec.waarde2);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key3, rec.waarde3);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key4, rec.waarde4);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key5, rec.waarde5);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key6, rec.waarde6);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key7, rec.waarde7);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key8, rec.waarde8);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key9, rec.waarde9);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key10, rec.waarde10);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key11, rec.waarde11);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key12, rec.waarde12);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key13, rec.waarde13);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key14, rec.waarde14);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key15, rec.waarde15);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key16, rec.waarde16);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key17, rec.waarde17);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key18, rec.waarde18);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key19, rec.waarde19);
|
||
upsert_inskenmerk (v_deel_key, rec.srtkenmerk_key20, rec.waarde20);
|
||
|
||
fac.trackaction (v_srtnoti_code,
|
||
v_deel_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',
|
||
'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 || ' ORACLE (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
|
||
/* Formatted on 16-7-2012 16:30:00 (QP5 v5.115.810.9015) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_sle (p_import_key IN NUMBER)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding 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); -- C10
|
||
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 (255);
|
||
v_ins_kenmerkwaarde2 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde3 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde4 VARCHAR2 (255);
|
||
v_ins_kenmerkwaarde5 VARCHAR2 (255);
|
||
|
||
-- 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) > 10
|
||
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;
|
||
/
|
||
|
||
/* Formatted on 26-7-2012 16:28:16 (QP5 v5.115.810.9015) */
|
||
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.GET_DESCRIPTION ('LPN_INS_DEEL',
|
||
NULL,
|
||
UPPER (rec.ins_srtdeel_code),
|
||
v_srtdeel_key)
|
||
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.GET_DESCRIPTION (
|
||
'LPN_INS_DEEL',
|
||
NULL,
|
||
UPPER (rec.ins_srtdeel_code),
|
||
v_srtdeel_key
|
||
)
|
||
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.
|
||
*/
|
||
/* Formatted on 12/09/2008 13:30 (Formatter Plus v4.8.7) */
|
||
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 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden:
|
||
v_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);
|
||
-- 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);
|
||
v_aanduiding :=
|
||
'importregel: ('
|
||
|| v_res_artikel_key
|
||
|| '|'
|
||
|| v_res_discipline_oms
|
||
|| '|'
|
||
|| v_res_artikel_nr
|
||
|| '|'
|
||
|| v_res_artikel_omschrijving
|
||
|| ')';
|
||
|
||
-- 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
|
||
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'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarde
|
||
IF LTRIM (RTRIM (v_res_artikel_key)) <> ''
|
||
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 niet gevonden'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
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 is nieuw'
|
||
);
|
||
END;
|
||
|
||
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;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
v_aanduiding,
|
||
'Kostensoort is nieuw'
|
||
);
|
||
END;
|
||
END IF;
|
||
|
||
IF LENGTH (v_res_artikel_nr) > 10
|
||
THEN
|
||
v_res_artikel_nr := SUBSTR (TRIM (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;
|
||
|
||
IF LENGTH (v_res_artikel_omschrijving) > 30
|
||
THEN
|
||
v_res_artikel_omschrijving :=
|
||
SUBSTR (TRIM (v_res_artikel_omschrijving), 1, 30);
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Artikelomschrijving wordt afgebroken tot ['
|
||
|| v_res_artikel_omschrijving
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
|
||
IF LENGTH (v_res_artikel_eenheid) > 10
|
||
THEN
|
||
v_res_artikel_omschrijving :=
|
||
SUBSTR (TRIM (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 <> '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;
|
||
|
||
IF LENGTH (v_res_artikel_opmerking) > 2000
|
||
THEN
|
||
v_res_artikel_opmerking :=
|
||
SUBSTR (TRIM (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;
|
||
|
||
IF LENGTH (v_res_artikel_groep) > 10
|
||
THEN
|
||
v_res_artikel_groep :=
|
||
SUBSTR (TRIM (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;
|
||
|
||
-- 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
|
||
)
|
||
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_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: <b>'
|
||
|| 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, 30)
|
||
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;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
SELECT prs_s_prs_kostensoort_key.NEXTVAL
|
||
INTO v_res_kostensoort_key
|
||
FROM DUAL;
|
||
|
||
INSERT INTO prs_kostensoort
|
||
(prs_kostensoort_key,
|
||
prs_kostensoort_oms
|
||
)
|
||
VALUES (v_res_kostensoort_key,
|
||
rec.res_kostensoort_oms
|
||
);
|
||
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_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
|
||
SELECT ins_s_ins_discipline_key.NEXTVAL
|
||
INTO v_res_discipline_key
|
||
FROM DUAL;
|
||
|
||
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
|
||
)
|
||
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
|
||
);
|
||
|
||
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
|
||
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;
|
||
|
||
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;
|
||
/
|
||
|
||
|
||
/* Formatted on 19/09/2008 17:52 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_groep (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- 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, 30),
|
||
SUBSTR (v_functiecode, 1, 10),
|
||
SUBSTR (v_srtdiscipline, 1, 30),
|
||
SUBSTR (v_discipline, 1, 30),
|
||
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;
|
||
/
|
||
|
||
|
||
/*/* Formatted on 16/10/2008 17:08 (Formatter Plus v4.8.7) */
|
||
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;
|
||
/
|
||
|
||
--------------------------------
|
||
|
||
|
||
/* Formatted on 19/09/2008 17:52 (Formatter Plus v4.8.7) */
|
||
CREATE OR REPLACE PROCEDURE fac_import_fac_gebruikersgroep (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- 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;
|
||
/
|
||
|
||
/*/* Formatted on 16/10/2008 17:08 (Formatter Plus v4.8.7) */
|
||
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;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_import_ext_bedrijf (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_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); -- C35
|
||
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); -- C35
|
||
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); -- C20
|
||
v_prs_overeenkomst_datum VARCHAR2 (256); -- DATE
|
||
v_prs_bedrijf_email VARCHAR2 (256); -- C100
|
||
v_prs_bedrijf_opmerking VARCHAR2 (512); -- C320
|
||
v_prs_dienst_omschrijving VARCHAR2 (256); -- C60
|
||
v_alg_locatie_code VARCHAR2 (256); -- C10
|
||
v_alg_gebouw_code VARCHAR2 (256); -- C12
|
||
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
|
||
|
||
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;
|
||
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
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJFSNAAM';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LEVERANCIERNUMMER';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_leverancier_nr);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK_ADRES';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_bezoek_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK_POSTCODE';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_bezoek_postcode);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK_PLAATS';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_bezoek_plaats);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEZOEK_LAND';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_bezoek_land);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST_ADRES';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_post_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST_POSTCODE';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_post_postcode);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST_PLAATS';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_post_plaats);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: POST_LAND';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_post_land);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF_TELEFOON';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_telefoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF_FAX';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_fax);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF_EMAIL';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_email);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACTPERSOON';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_contact_persoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACT_TELEFOON';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_contact_telefoon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTACT_FAX';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_contact_fax);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF_XSL';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_xsl);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: BEDRIJF_MLD_ORDER_ADRES';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_mldorder_adres);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LEVERANCIER';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_leverancier);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: UITVOERENDE';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_uitvoerende);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: CONTRACTANT';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_contract);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: HUURDER';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_huurder);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: TOONINGIDS';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_ingids);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: UURLOON';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_uurloon);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVEREENKOMSTNUMMER';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_overeenkomst_nr);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVEREENKOMSTDATUM';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_overeenkomst_datum);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OPMERKING';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_opmerking);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: DIENST';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_dienst_omschrijving);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: LOCATIECODE';
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: GEBOUWCODE';
|
||
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG1';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_overig1);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG2';
|
||
fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_overig2);
|
||
v_aanduiding := '[' || v_prs_bedrijf_naam || '] veld: OVERIG3';
|
||
fac.imp_getfield (v_newline, c_delim, 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 UPPER (v_prs_bedrijf_naam) = 'BEDRIJFSNAAM'
|
||
AND UPPER (v_prs_leverancier_nr) = 'LEVERANCIERNUMMER'
|
||
AND UPPER (v_prs_bedrijf_bezoek_adres) = 'BEZOEK_ADRES'
|
||
AND UPPER (v_prs_bedrijf_bezoek_postcode) = 'BEZOEK_POSTCODE'
|
||
AND UPPER (v_prs_bedrijf_bezoek_plaats) = 'BEZOEK_PLAATS'
|
||
AND UPPER (v_prs_bedrijf_bezoek_land) = 'BEZOEK_LAND'
|
||
AND UPPER (v_prs_bedrijf_post_adres) = 'POST_ADRES'
|
||
AND UPPER (v_prs_bedrijf_post_postcode) = 'POST_POSTCODE'
|
||
AND UPPER (v_prs_bedrijf_post_plaats) = 'POST_PLAATS'
|
||
AND UPPER (v_prs_bedrijf_post_land) = 'POST_LAND'
|
||
AND UPPER (v_prs_bedrijf_telefoon) = 'BEDRIJF_TELEFOON'
|
||
AND UPPER (v_prs_bedrijf_fax) = 'BEDRIJF_FAX'
|
||
AND UPPER (v_prs_bedrijf_email) = 'BEDRIJF_EMAIL'
|
||
AND UPPER (v_prs_bedrijf_contact_persoon) = 'CONTACTPERSOON'
|
||
AND UPPER (v_prs_bedrijf_contact_telefoon) = 'CONTACT_TELEFOON'
|
||
AND UPPER (v_prs_bedrijf_contact_fax) = 'CONTACT_FAX'
|
||
AND UPPER (v_prs_bedrijf_xsl) = 'BEDRIJF_XSL'
|
||
AND UPPER (v_prs_bedrijf_mldorder_adres) = 'BEDRIJF_ORDER_ADRES'
|
||
AND UPPER (v_prs_bedrijf_leverancier) = 'LEVERANCIER'
|
||
AND UPPER (v_prs_bedrijf_uitvoerende) = 'UITVOERENDE'
|
||
AND UPPER (v_prs_bedrijf_contract) = 'CONTRACTANT'
|
||
AND UPPER (v_prs_bedrijf_huurder) = 'HUURDER'
|
||
AND UPPER (v_prs_bedrijf_ingids) = 'TOONINGIDS'
|
||
AND UPPER (v_prs_bedrijf_uurloon) = 'UURLOON'
|
||
AND UPPER (v_prs_overeenkomst_nr) = 'OVEREENKOMSTNUMMER'
|
||
AND UPPER (v_prs_overeenkomst_datum) = 'OVEREENKOMSTDATUM'
|
||
AND UPPER (v_prs_bedrijf_opmerking) = 'OPMERKING'
|
||
AND UPPER (v_prs_dienst_omschrijving) = 'DIENST'
|
||
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
||
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
||
|
||
THEN
|
||
header_is_valid := 1;
|
||
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) > 35
|
||
THEN
|
||
v_prs_bedrijf_bezoek_adres :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_bezoek_adres), 1, 35);
|
||
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) > 35
|
||
THEN
|
||
v_prs_bedrijf_post_adres :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_post_adres), 1, 35);
|
||
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) > 20
|
||
THEN
|
||
v_prs_overeenkomst_nr :=
|
||
SUBSTR (TRIM (v_prs_overeenkomst_nr), 1, 20);
|
||
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) > 320
|
||
THEN
|
||
v_prs_bedrijf_opmerking :=
|
||
SUBSTR (TRIM (v_prs_bedrijf_opmerking), 1, 320);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || v_errorhint,
|
||
'Opmerking wordt afgebroken tot ['
|
||
|| v_prs_bedrijf_opmerking
|
||
|| ']'
|
||
);
|
||
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;
|
||
|
||
-- 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_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_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_ext_bedrijf;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE fac_update_ext_bedrijf (p_import_key IN NUMBER
|
||
)
|
||
AS
|
||
CURSOR c_bedrijf
|
||
IS
|
||
SELECT 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
|
||
FROM fac_imp_ext_bedrijf
|
||
GROUP BY 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;
|
||
|
||
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_errormsg VARCHAR2 (1000);
|
||
v_error_hint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_tot NUMBER (10);
|
||
v_count_update NUMBER (10);
|
||
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_update := 0;
|
||
|
||
FOR rec1 IN c_bedrijf
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Kan relatie niet wegschrijven [' || rec1.prs_bedrijf_naam || '] ';
|
||
|
||
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_xsl,
|
||
prs_bedrijf_mldorder_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
|
||
)
|
||
VALUES (
|
||
rec1.prs_bedrijf_naam,
|
||
rec1.prs_leverancier_nr,
|
||
rec1.prs_bedrijf_bezoek_adres,
|
||
rec1.prs_bedrijf_bezoek_postcode,
|
||
rec1.prs_bedrijf_bezoek_plaats,
|
||
rec1.prs_bedrijf_bezoek_land,
|
||
rec1.prs_bedrijf_post_adres,
|
||
rec1.prs_bedrijf_post_postcode,
|
||
rec1.prs_bedrijf_post_plaats,
|
||
rec1.prs_bedrijf_post_land,
|
||
rec1.prs_bedrijf_telefoon,
|
||
rec1.prs_bedrijf_fax,
|
||
rec1.prs_bedrijf_email,
|
||
rec1.prs_bedrijf_contact_persoon,
|
||
rec1.prs_bedrijf_contact_telefoon,
|
||
rec1.prs_bedrijf_contact_fax,
|
||
rec1.prs_bedrijf_xsl,
|
||
rec1.prs_bedrijf_order_adres,
|
||
DECODE(rec1.prs_bedrijf_leverancier,1,1,NULL),
|
||
DECODE(rec1.prs_bedrijf_uitvoerende,1,1,NULL),
|
||
DECODE(rec1.prs_bedrijf_contract,1,1,NULL),
|
||
DECODE(rec1.prs_bedrijf_huurder,1,1,NULL),
|
||
DECODE(rec1.prs_bedrijf_ingids,1,1,NULL),
|
||
rec1.prs_bedrijf_uurloon,
|
||
rec1.prs_overeenkomst_nr,
|
||
rec1.prs_overeenkomst_datum,
|
||
rec1.prs_bedrijf_opmerking
|
||
);
|
||
|
||
v_count_update := v_count_update + 1;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_error_hint := 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_error_hint
|
||
);
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Relaties: aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Relaties: aantal toegevoegd: '
|
||
|| TO_CHAR (v_count_update),
|
||
''
|
||
);
|
||
|
||
|
||
v_count_tot := 0;
|
||
v_count_update := 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_update := v_count_update + 1;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_error_hint := 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_error_hint
|
||
);
|
||
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_update),
|
||
''
|
||
);
|
||
|
||
v_count_tot := 0;
|
||
v_count_update := 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_update := v_count_update + 1;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_error_hint := 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_error_hint
|
||
);
|
||
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_update),
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
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 relaties afgebroken!',
|
||
v_errormsg
|
||
);
|
||
END fac_update_ext_bedrijf;
|
||
/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- 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_kenmerk1: 17
|
||
-- v_kenmerk1: 18
|
||
-- v_kenmerk1: 19
|
||
-- v_kenmerk1: 20
|
||
-- 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);
|
||
|
||
-- 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(50);
|
||
|
||
|
||
-- 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 blift 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';
|
||
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 (1);
|
||
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 (100);
|
||
v_opmerking VARCHAR2 (250);
|
||
v_btw_verlegd VARCHAR2 (255);
|
||
v_kenmerk1 VARCHAR2 (255);
|
||
v_kenmerk2 VARCHAR2 (255);
|
||
v_kenmerk3 VARCHAR2 (255);
|
||
v_kenmerk4 VARCHAR2 (255);
|
||
v_kenmerk5 VARCHAR2 (255);
|
||
v_check_dec_sign NUMBER (5, 2);
|
||
|
||
v_seq_of_columns VARCHAR2(100);
|
||
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;
|
||
|
||
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
|
||
BEGIN
|
||
|
||
v_errorhint := 'Verwijderen vorige import';
|
||
DELETE FROM fac_imp_factuur
|
||
WHERE fac_import_key <> p_import_key;
|
||
|
||
SELECT COALESCE(MAX(fac_imp_file_index), 0)+1
|
||
INTO v_count
|
||
FROM fac_imp_factuur;
|
||
|
||
-- Init
|
||
v_fielddelimitor := ';';
|
||
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);
|
||
|
||
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);
|
||
|
||
|
||
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)
|
||
VALUES ( v_rec.fac_import_key,
|
||
v_count,
|
||
UPPER (SUBSTR (v_leveranciernr, 1, 20)),
|
||
SUBSTR (REPLACE(v_ordernr,' ',''), 1, 15),
|
||
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, 10),
|
||
SUBSTR (v_afleverdatum, 1, 10),
|
||
v_btw_bedrag,
|
||
SUBSTR (v_docid, 1, 255),
|
||
SUBSTR (v_omschrijving, 1, 60),
|
||
SUBSTR (v_opmerking, 1, 250),
|
||
SUBSTR (v_btw_verlegd, 1, 3),
|
||
SUBSTR (v_kenmerk1, 1, 255),
|
||
SUBSTR (v_kenmerk2, 1, 255),
|
||
SUBSTR (v_kenmerk3, 1, 255),
|
||
SUBSTR (v_kenmerk4, 1, 255),
|
||
SUBSTR (v_kenmerk5, 1, 255)
|
||
);
|
||
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,
|
||
fac_import_key,
|
||
fac_imp_file_index
|
||
FROM fac_imp_factuur
|
||
ORDER BY factuurnr, ordernr DESC;
|
||
|
||
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_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;
|
||
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)
|
||
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
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_nummer_intern = c_contract_nr;
|
||
ELSE
|
||
SELECT cnt_contract_key
|
||
INTO p_broc_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_nummer_intern || '.' || cnt_contract_versie = 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
|
||
c_broc_s1 VARCHAR2 (20);
|
||
-- Opdrachtnr na de slash
|
||
c_broc_s2 VARCHAR2 (20);
|
||
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
|
||
WHERE o.mld_melding_key = fac.safe_to_number (c_broc_s1)
|
||
AND 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 try_getbestelling_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_slash_index NUMBER;
|
||
-- Opdrachtnr voor de slash
|
||
c_broc_s1 VARCHAR2 (20);
|
||
-- Opdrachtnr na de slash
|
||
c_broc_s2 VARCHAR2 (20);
|
||
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_ckey IN OUT NUMBER, p_okey IN OUT NUMBER, p_bkey IN OUT NUMBER)
|
||
IS
|
||
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);
|
||
IF p_ckey IS NULL
|
||
THEN
|
||
p_okey := try_getopdracht_id (p_broc_nr, p_leverancier_nr);
|
||
IF p_okey IS NULL
|
||
THEN
|
||
p_bkey := try_getbestelling_id (p_broc_nr, p_leverancier_nr);
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
|
||
|
||
-- Default wordt de user als "invoerder" van een te importeren factuur als volgt bepaald:
|
||
-- A) Eerst (indien aanwezig) de in fac_setting geregistreerde persoon
|
||
-- B) En anders (persoon niet in fac_setting aanwezig) als volgt:
|
||
---- 1) personen met FINFOF rechten
|
||
---- 2) indien meer personen met FO, dan diegene met de hoogste FO-rechten
|
||
---- 3) indien meer personen met FO en dezelfde hoogste rechten, dan de persoon die ook BO-rechten heeft
|
||
---- 4) indien meer personen met FO hoogste rechten + BO rechten, dan een willekeurige persoon (maakt niet meer uit)
|
||
-- C) En anders (indien bij B ook niets aanwezig) de persoon 'Facilitor' (soort van system-user).
|
||
-- D) En anders (indien bij C niets) een willekeurige persoon (de laatste persoon die is toegevoegd -> met de hoogste key)
|
||
|
||
FUNCTION get_factuur_key_user
|
||
RETURN NUMBER
|
||
IS
|
||
|
||
CURSOR fin_fof IS
|
||
SELECT p.prs_perslid_key, MAX (fac_functie_code) fo, MIN(gr.fac_gebruiker_prs_level_write) rechten, count(*) aantal
|
||
FROM prs_perslid p, fac_groeprechten gr, fac_gebruikersgroep gg, fac_functie f
|
||
WHERE p.prs_perslid_key = gg.prs_perslid_key
|
||
AND gr.fac_groep_key = gg.fac_groep_key
|
||
AND gr.fac_functie_key = f.fac_functie_key
|
||
AND (f.fac_functie_code = 'WEB_FINFOF' OR f.fac_functie_code = 'WEB_FINBOF')
|
||
AND gr.fac_gebruiker_prs_level_write < 9
|
||
AND p.prs_perslid_oslogin <> '_FACILITOR'
|
||
GROUP BY p.prs_perslid_key
|
||
ORDER BY aantal DESC, fo, rechten, p.prs_perslid_key DESC;
|
||
|
||
p_prs_perslid_key_user NUMBER(10);
|
||
|
||
BEGIN
|
||
p_prs_perslid_key_user:=NULL;
|
||
BEGIN
|
||
SELECT fac.getSetting('fin_import_perslid_key')
|
||
INTO p_prs_perslid_key_user
|
||
FROM DUAL;
|
||
|
||
IF (p_prs_perslid_key_user IS NULL OR p_prs_perslid_key_user = -1)
|
||
THEN
|
||
FOR rc IN fin_fof
|
||
LOOP
|
||
p_prs_perslid_key_user := rc.prs_perslid_key;
|
||
EXIT WHEN p_prs_perslid_key_user IS NOT NULL;
|
||
END LOOP;
|
||
|
||
IF p_prs_perslid_key_user IS NULL
|
||
THEN
|
||
SELECT MAX(prs_perslid_key)
|
||
INTO p_prs_perslid_key_user
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_FACILITOR'
|
||
AND prs_perslid_verwijder IS NULL;
|
||
|
||
IF p_prs_perslid_key_user IS NULL
|
||
THEN
|
||
SELECT MAX(prs_perslid_key)
|
||
INTO p_prs_perslid_key_user
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
p_prs_perslid_key_user := NULL;
|
||
END;
|
||
RETURN p_prs_perslid_key_user;
|
||
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 itd.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 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;
|
||
|
||
|
||
-- 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_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) || '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 bij regel ' || c_factuurregel || ': kon niet worden toegevoegd';
|
||
ELSE
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-percentage bij regel ' || c_factuurregel || ': 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 ROUND(l_btwbedrag,2) <> ROUND(c_btw_bedrag,2)
|
||
THEN
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW-bedrag bij regel ' || c_factuurregel || ': is op ' || l_btwbedrag || ' gezet';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
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)
|
||
VALUES (c_factuur_key, c_factuurregel, l_kostprijs, l_btwbedrag, c_omschrijving, c_locatie, c_btwtabelwaarde_key)
|
||
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, 'Factuur ge<67>mporteerd met fouten');
|
||
l_opmerking := 'Ge<47>mporteerde factuur op ' || TO_CHAR(SYSDATE,'dd-mm-yyyy') || ' heeft fouten.' || CHR(13) || '----' || l_opmerking;
|
||
ELSE
|
||
fac.trackaction ('FINNEW', c_factuur_key, NULL, NULL, 'Factuur korrekt ge<67>mporteerd');
|
||
-- l_opmerking := 'Succesvol ge<67>mporteerde factuur op ' || TO_CHAR(SYSDATE,'dd-mm-yyyy');
|
||
END IF;
|
||
|
||
SELECT SUM (fin_factuurregel_btw)
|
||
INTO l_factuur_totaal_btw
|
||
FROM fin_factuurregel
|
||
WHERE fin_factuur_key = c_factuur_key;
|
||
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = c_factuur_statuses_key,
|
||
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)
|
||
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;
|
||
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,
|
||
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;
|
||
|
||
IF UPPER(rc.btw_verlegd) = 'JA'
|
||
THEN
|
||
c_btw_verlegd := 1;
|
||
ELSIF rc.btw_verlegd IS NULL OR UPPER(rc.btw_verlegd) = 'NEE'
|
||
THEN
|
||
c_btw_verlegd := 0;
|
||
ELSE
|
||
c_btw_verlegd := 0;
|
||
c_opmerking := c_opmerking || CHR(13) || 'BTW verlegd is onbekend ('|| rc.btw_verlegd ||')';
|
||
c_factuur_statuses_key := 3; -- Incompleet
|
||
END IF;
|
||
|
||
get_fin_factuur_referentie (rc.ordernr, rc.leveranciernr, c_cnt_contract_key, c_mld_opdr_key, c_bes_bestelopdr_key);
|
||
c_fin_factuur_datum:=try_getdatum (rc.factuurdatum, FALSE);
|
||
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 (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;
|
||
|
||
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;
|
||
|
||
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
|
||
)
|
||
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_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;
|
||
|
||
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,
|
||
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
|
||
);
|
||
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;
|
||
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 (1) := ';'; -- 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 (255);
|
||
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, 255),
|
||
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 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding 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_volgnr VARCHAR2 (256); -- N3
|
||
v_fac_usrdata_prijs VARCHAR2 (256); -- N8,2
|
||
v_fac_usrdata_vervaldatum VARCHAR2 (256); -- DATE
|
||
-- Overig:
|
||
v_fac_usrdata_volgnr_n NUMBER (3); -- N3
|
||
v_fac_usrdata_prijs_n NUMBER (8, 2); -- N8,2
|
||
v_fac_usrdata_vervaldatum_d DATE; -- 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_volgnr);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_prijs);
|
||
fac.imp_getfield (v_newline, c_delim, v_fac_usrdata_vervaldatum);
|
||
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_volgnr) = 'VOLGNR'
|
||
AND UPPER (v_fac_usrdata_prijs) = 'PRIJS'
|
||
AND UPPER (v_fac_usrdata_vervaldatum) = 'VERVALDATUM'
|
||
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 := '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;
|
||
|
||
-- 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_volgnr,
|
||
fac_usrdata_prijs,
|
||
fac_usrdata_vervaldatum)
|
||
VALUES (v_fac_usrtab_naam,
|
||
v_fac_usrdata_code,
|
||
v_fac_usrdata_omschr,
|
||
v_fac_usrdata_volgnr_n,
|
||
v_fac_usrdata_prijs_n,
|
||
v_fac_usrdata_vervaldatum_d);
|
||
|
||
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_volgnr,
|
||
fac_usrdata_prijs,
|
||
fac_usrdata_vervaldatum
|
||
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;
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_upd := 0;
|
||
|
||
v_errormsg := 'Fout bij bepalen eigen tabel [' || p_tabname || '] ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_naam = p_tabname;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen eigen tabel [' || p_tabname || '] ';
|
||
|
||
INSERT INTO fac_usrtab (fac_usrtab_naam, fac_usrtab_omschrijving)
|
||
VALUES (p_tabname, p_tabname)
|
||
RETURNING fac_usrtab_key INTO v_tab_key;
|
||
|
||
COMMIT;
|
||
ELSE
|
||
SELECT fac_usrtab_key
|
||
INTO v_tab_key
|
||
FROM fac_usrtab
|
||
WHERE fac_usrtab_naam = p_tabname;
|
||
END IF;
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_errormsg :=
|
||
'Fout bij bepalen bestaan waarde-code ['
|
||
|| rec.fac_usrdata_code
|
||
|| '] ';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM fac_usrdata
|
||
WHERE 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_volgnr,
|
||
fac_usrdata_vervaldatum,
|
||
fac_usrdata_prijs)
|
||
VALUES (v_tab_key,
|
||
rec.fac_usrdata_code,
|
||
rec.fac_usrdata_omschr,
|
||
rec.fac_usrdata_volgnr,
|
||
rec.fac_usrdata_vervaldatum,
|
||
rec.fac_usrdata_prijs);
|
||
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_volgnr = rec.fac_usrdata_volgnr,
|
||
fac_usrdata_vervaldatum = rec.fac_usrdata_vervaldatum,
|
||
fac_usrdata_prijs = rec.fac_usrdata_prijs
|
||
WHERE 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;
|
||
-- 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
|
||
-- autorisatiegroep-import (transport), volgens UWVA#20708
|
||
CREATE OR REPLACE PROCEDURE fac_import_flex (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 (1) := ';'; -- 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_kenmerk_type VARCHAR2 (300);
|
||
v_kenmerk_niveau VARCHAR2 (300);
|
||
v_kenmerk_verplicht 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_verwijder VARCHAR2 (300);
|
||
v_deflevel1 VARCHAR2 (300); /* res_srtactiviteit, mld_srtdiscipline of bes_discipline */
|
||
v_deflevel2 VARCHAR2 (300); /* res_activiteit, mld_discipline of bes_srtgroep */
|
||
v_deflevel3 VARCHAR2 (300); /* niks, mld_stdmelding of bes_srtdeel */
|
||
v_deflevel4 VARCHAR2 (300); /* niks, mld_typeopdr of niks */
|
||
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);
|
||
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);
|
||
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_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);
|
||
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_volgnummer);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_kenmerk_default);
|
||
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_verwijder);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel1);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel2);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel3);
|
||
fac.imp_getfield (v_newline, v_fielddelimitor, v_deflevel4);
|
||
|
||
-- 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_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_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_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';
|
||
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;
|
||
END IF;
|
||
INSERT INTO fac_imp_flex (
|
||
fac_kenmerkdomein_omschrijving,
|
||
fac_kenmerkdomein_objectnaam,
|
||
fac_kenmerkdomein_kolomnaam,
|
||
fac_kenmerkdomein_kolomtxt,
|
||
fac_usrtab_naam,
|
||
srtkenmerk_omschrijving,
|
||
srtkenmerk_kenmerktype,
|
||
srtkenmerk_systeem,
|
||
srtkenmerk_lengte,
|
||
srtkenmerk_dec,
|
||
srtkenmerk_nmin,
|
||
srtkenmerk_nmax,
|
||
srtkenmerk_dimensie,
|
||
kenmerk_niveau,
|
||
kenmerk_verplicht,
|
||
kenmerk_volgnummer,
|
||
kenmerk_default,
|
||
kenmerk_type,
|
||
kenmerk_toonbaar,
|
||
kenmerk_uniek,
|
||
kenmerk_hint,
|
||
kenmerk_regexp,
|
||
kenmerk_verwijder,
|
||
res_srtactiviteit,
|
||
res_activiteit,
|
||
mld_srtdiscipline,
|
||
mld_discipline,
|
||
mld_stdmelding,
|
||
mld_typeopdr,
|
||
bes_discipline,
|
||
bes_srtgroep,
|
||
bes_srtdeel
|
||
)
|
||
VALUES (
|
||
SUBSTR (v_fac_kenmerkdomein_omschr, 1, 255),
|
||
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_omschrijving, 1, 255),
|
||
SUBSTR (v_srtkenmerk_kenmerktype, 1, 255),
|
||
SUBSTR (v_srtkenmerk_systeem, 1, 255),
|
||
SUBSTR (v_srtkenmerk_lengte, 1, 255),
|
||
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_volgnummer, 1, 255),
|
||
SUBSTR (v_kenmerk_default, 1, 4000),
|
||
SUBSTR (v_kenmerk_type, 1, 255),
|
||
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_verwijder, 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,
|
||
v_bes_srtdeel
|
||
);
|
||
|
||
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
|
||
-- 3. Dan de verdere handling in fac_update_flex
|
||
|
||
-- flexkenmerken-import (transport) voor RES, volgens UWVA#20706
|
||
CREATE OR REPLACE PROCEDURE fac_update_flex (p_import_key IN NUMBER)
|
||
AS
|
||
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';
|
||
ELSE
|
||
flexmodule := 'MLD';
|
||
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;
|
||
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_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_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_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_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_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_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;
|
||
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_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_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_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;
|
||
END CASE;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Kenmerksoort aangepast',
|
||
v_desc || ' (' || v_srtkenmerk_key || ')'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Kenmerken
|
||
-- 1) bepaal key activiteit (via activiteitsoort + activiteit)
|
||
-- 2a) voeg toe
|
||
-- 2b) update
|
||
|
||
v_activiteit_key := NULL;
|
||
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;
|
||
|
||
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_volgnummer,
|
||
bes_kenmerk_default,
|
||
bes_kenmerk_verwijder,
|
||
bes_kenmerk_toonbaar,
|
||
bes_kenmerk_uniek,
|
||
bes_kenmerk_hint,
|
||
bes_kenmerk_regexp
|
||
)
|
||
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_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
|
||
)
|
||
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_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
|
||
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 srtdiscipline / vakgroep / stdmelding
|
||
v_srtdiscipline_key := NULL;
|
||
v_typeopdr_key := NULL;
|
||
v_stdmelding_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;
|
||
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
v_desc := rec.srtkenmerk_omschrijving || '[' || v_srtkenmerk_key || '] (' || rec.mld_srtdiscipline || '/' || rec.mld_discipline || '/' || rec.mld_stdmelding || ' - ' || rec.mld_typeopdr || ')';
|
||
|
||
|
||
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_stdmelding_key = v_stdmelding_key
|
||
OR mld_typeopdr_key = v_typeopdr_key
|
||
);
|
||
|
||
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_volgnummer,
|
||
mld_kenmerk_default,
|
||
mld_kenmerk_verwijder,
|
||
mld_kenmerk_toonbaar,
|
||
mld_kenmerk_uniek,
|
||
mld_kenmerk_hint,
|
||
mld_kenmerk_regexp
|
||
)
|
||
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_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
|
||
)
|
||
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_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
|
||
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_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;
|
||
|
||
-- Bestaat dit kenmerk al?
|
||
v_errormsg := 'Fout bij bepalen kenmerk ' || v_desc;
|
||
v_desc := rec.srtkenmerk_omschrijving || ' (' || rec.res_srtactiviteit || '/' || rec.res_activiteit || ')';
|
||
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;
|
||
|
||
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_volgnummer,
|
||
res_kenmerk_default,
|
||
res_kenmerk_verwijder,
|
||
res_kenmerk_toonbaar,
|
||
res_kenmerk_uniek,
|
||
res_kenmerk_hint,
|
||
res_kenmerk_regexp
|
||
)
|
||
VALUES (
|
||
v_srtkenmerk_key,
|
||
v_activiteit_key,
|
||
rec.kenmerk_niveau,
|
||
fac.safe_to_number (rec.kenmerk_verplicht),
|
||
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
|
||
)
|
||
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_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
|
||
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;
|
||
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 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER;
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_aanduiding VARCHAR2 (200);
|
||
-- De importvelden
|
||
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
|
||
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); -- N4
|
||
|
||
|
||
-- 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);
|
||
|
||
v_aanduiding :=
|
||
'|'
|
||
|| v_ins_discipline_omschrijving
|
||
|| '|'
|
||
|| v_ins_srtgroep_omschrijving
|
||
|| '|'
|
||
|| v_ins_srtdeel_code
|
||
|| '|'
|
||
|| v_ins_srtcontrole_omschrijving
|
||
|| '|'
|
||
|| v_ins_srtcontrole_periode
|
||
|| '| ';
|
||
|
||
-- 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_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
|
||
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
|
||
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
|
||
AND UPPER (v_ins_srtcontrole_omschrijving) = 'CONTROLE OMSCHRIJVING'
|
||
AND UPPER (v_ins_srtcontrole_info) = 'CONTROLE INFORMATIE'
|
||
AND UPPER (v_ins_srtcontrole_periode) = 'CONTROLE PERIODE'
|
||
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) > 30
|
||
THEN
|
||
v_ins_discipline_omschrijving :=
|
||
SUBSTR (TRIM (v_ins_discipline_omschrijving), 1, 30);
|
||
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 LENGTH (v_ins_srtcontrole_periode) > 4
|
||
THEN
|
||
v_ins_srtcontrole_periode := SUBSTR (TRIM (v_ins_srtcontrole_periode), 1, 4);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
v_aanduiding,
|
||
'Controle periode wordt afgebroken tot ['
|
||
|| v_ins_srtcontrole_periode
|
||
|| ']');
|
||
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)
|
||
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_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);
|
||
header_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);
|
||
|
||
|
||
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;
|
||
v_errorhint := 'Fout bij bepalen discipline';
|
||
|
||
IF rec_ins.ins_discipline_omschrijving IS NULL
|
||
THEN
|
||
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
|
||
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;
|
||
|
||
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;
|
||
|
||
IF rec_ins.ins_srtcontrole_omschrijving IS NOT NULL
|
||
AND rec_ins.ins_srtcontrole_periode IS NOT NULL
|
||
THEN
|
||
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
|
||
ins_srtcontrole_niveau,
|
||
ins_srtcontrole_omschrijving,
|
||
ins_srtcontrole_info,
|
||
ins_srtcontrole_periode)
|
||
VALUES (v_ins_srtinstallatie_key,
|
||
v_ins_srtcontrole_niveau,
|
||
rec_ins.ins_srtcontrole_omschrijving,
|
||
rec_ins.ins_srtcontrole_info,
|
||
rec_ins.ins_srtcontrole_periode);
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_aanduiding,
|
||
'Controle omschrijving en/of Controle Periode mag niet leeg zijn: inspectie wordt niet toegevoegd.');
|
||
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 (1) := ';';
|
||
v_newline VARCHAR2 (4000); -- 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 (Voor import tot 2500 beperkt)
|
||
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)
|
||
-- 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_datum_d DATE; -- DATE
|
||
newkey NUMBER (10);
|
||
|
||
-- 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_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);
|
||
|
||
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_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'
|
||
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 2500 tekens';
|
||
v_fac_faq_answer := TRIM (v_fac_faq_answer);
|
||
|
||
IF v_fac_faq_answer IS NULL OR LENGTH (v_fac_faq_answer) > 2500 -- 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 := '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 := '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,
|
||
'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;
|
||
|
||
-- 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_level,
|
||
fac_faq_source,
|
||
fac_faq_url,
|
||
fac_faq_datum,
|
||
fac_faq_lang,
|
||
fac_faq_hint)
|
||
VALUES (v_fac_faq_question,
|
||
v_fac_faq_answer,
|
||
v_fac_faq_level,
|
||
v_fac_faq_source,
|
||
v_fac_faq_url,
|
||
v_fac_faq_datum_d,
|
||
v_fac_faq_lang,
|
||
v_fac_faq_hint)
|
||
RETURNING fac_faq_key
|
||
INTO newkey;
|
||
|
||
IF v_ins_discipline_key_n IS NOT NULL
|
||
THEN
|
||
INSERT INTO mld_stdmeldingfaq
|
||
(ins_discipline_key,
|
||
mld_stdmelding_key,
|
||
fac_faq_key
|
||
)
|
||
VALUES (v_ins_discipline_key_n,
|
||
v_mld_stdmelding_key_n,
|
||
newkey
|
||
);
|
||
END IF;
|
||
|
||
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);
|
||
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;
|
||
|
||
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 (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_level,
|
||
fac_faq_source,
|
||
fac_faq_url,
|
||
fac_faq_datum,
|
||
fac_faq_lang,
|
||
fac_faq_hint
|
||
)
|
||
VALUES (rec_faq.fac_faq_question,
|
||
rec_faq.fac_faq_answer,
|
||
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
|
||
)
|
||
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
|
||
c_delim VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (4000); -- 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_nummer_intern VARCHAR2 (100); -- cnt_contract_nummer_intern
|
||
v_nummer_extern VARCHAR2 (100); -- cnt_contract_nummer
|
||
v_cnt_soort VARCHAR2 (100); -- ins_discipline_omschrijving
|
||
v_beschrijving VARCHAR2 (1000); -- cnt_contract_omschrijving
|
||
v_mantel_nr VARCHAR2 (100); -- cnt_contract_nummer_intern
|
||
v_omschrijving VARCHAR2 (1000); -- cnt_contract_document
|
||
v_afdeling VARCHAR2 (100); -- prs_afdeling_upper
|
||
v_perslid_eig VARCHAR2 (100); -- prs_perslid_oslogin
|
||
v_perslid_beh VARCHAR2 (100); -- prs_perslid_oslogin
|
||
v_opmerking VARCHAR2 (1000); -- cnt_contract_opmerking
|
||
v_datum_ingang VARCHAR2 (100);
|
||
v_d_datum_ingang DATE; -- cnt_contract_looptijd_van
|
||
v_datum_eind VARCHAR2 (100);
|
||
v_d_datum_eind DATE; -- cnt_contract_looptijd_tot
|
||
v_datum_opzeg VARCHAR2 (100);
|
||
v_d_datum_opzeg VARCHAR2 (100); -- cnt_termijn_omschrijving
|
||
v_datum_rappel VARCHAR2 (100);
|
||
v_d_datum_rappel VARCHAR2 (100); -- cnt_termijn_omschrijving
|
||
v_bedrijf_naam VARCHAR2 (100); -- prs_bedrijf_naam_upper
|
||
v_contact_naam VARCHAR2 (100); -- prs_contactpersoon_naam
|
||
v_kpn_code VARCHAR2 (100); -- prs_kostenplaats_nr
|
||
v_bedrag VARCHAR2 (100);
|
||
v_n_bedrag NUMBER (11,2); -- cnt_contract_kosten
|
||
v_bedrag_termijn VARCHAR2 (100);
|
||
v_n_bedrag_termijn NUMBER (11,2); -- cnt_contract_termijnkosten
|
||
v_uurtarief VARCHAR2 (100);
|
||
v_n_uurtarief NUMBER (6,2); -- cnt_contract_uurloon
|
||
v_korting VARCHAR2 (100);
|
||
v_n_korting NUMBER (4,2); -- cnt_contract_korting
|
||
v_gebouwcode VARCHAR2 (100); -- alg_gebouw_code
|
||
v_verlengen VARCHAR2 (100); -- cnt_contract_verlenging
|
||
v_flex1 VARCHAR2 (1000); -- cnt_kenmerkcontract_waarde
|
||
v_flex2 VARCHAR2 (1000); -- cnt_kenmerkcontract_waarde
|
||
v_flex3 VARCHAR2 (1000); -- cnt_kenmerkcontract_waarde
|
||
v_flex4 VARCHAR2 (1000); -- cnt_kenmerkcontract_waarde
|
||
v_flex5 VARCHAR2 (1000); -- cnt_kenmerkcontract_waarde
|
||
|
||
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_cnt;
|
||
|
||
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_nummer_intern);
|
||
fac.imp_getfield (v_newline, c_delim, v_nummer_extern);
|
||
fac.imp_getfield (v_newline, c_delim, v_cnt_soort);
|
||
fac.imp_getfield (v_newline, c_delim, v_beschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_mantel_nr);
|
||
fac.imp_getfield (v_newline, c_delim, v_omschrijving);
|
||
fac.imp_getfield (v_newline, c_delim, v_afdeling);
|
||
fac.imp_getfield (v_newline, c_delim, v_perslid_eig);
|
||
fac.imp_getfield (v_newline, c_delim, v_perslid_beh);
|
||
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
||
fac.imp_getfield (v_newline, c_delim, v_datum_ingang);
|
||
fac.imp_getfield (v_newline, c_delim, v_datum_rappel);
|
||
fac.imp_getfield (v_newline, c_delim, v_datum_opzeg);
|
||
fac.imp_getfield (v_newline, c_delim, v_datum_eind);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrijf_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_contact_naam);
|
||
fac.imp_getfield (v_newline, c_delim, v_kpn_code);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrag);
|
||
fac.imp_getfield (v_newline, c_delim, v_bedrag_termijn);
|
||
fac.imp_getfield (v_newline, c_delim, v_uurtarief);
|
||
fac.imp_getfield (v_newline, c_delim, v_korting);
|
||
fac.imp_getfield (v_newline, c_delim, v_gebouwcode);
|
||
fac.imp_getfield (v_newline, c_delim, v_verlengen);
|
||
fac.imp_getfield (v_newline, c_delim, v_flex1);
|
||
fac.imp_getfield (v_newline, c_delim, v_flex2);
|
||
fac.imp_getfield (v_newline, c_delim, v_flex3);
|
||
fac.imp_getfield (v_newline, c_delim, v_flex4);
|
||
fac.imp_getfield (v_newline, c_delim, v_flex5);
|
||
|
||
v_aanduiding := v_cnt_soort || ' [' || v_nummer_intern || '] ';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Controleer alle veldwaarden
|
||
v_errormsg := 'Fout inlezen (intern) contractnummer';
|
||
v_nummer_intern := SUBSTR(TRIM (v_nummer_intern),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen extern contractnummer';
|
||
v_nummer_extern := SUBSTR(TRIM (v_nummer_extern),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen contractsoort';
|
||
v_cnt_soort := SUBSTR(TRIM (v_cnt_soort),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen beschrijving';
|
||
v_beschrijving := SUBSTR(TRIM (v_beschrijving),1, 50);
|
||
|
||
v_errormsg := 'Fout inlezen mantelcontract';
|
||
v_mantel_nr := SUBSTR(TRIM (v_mantel_nr),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen omschrijving';
|
||
v_omschrijving := SUBSTR(TRIM (v_omschrijving),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen contractafdeling';
|
||
v_afdeling := SUBSTR(TRIM (v_afdeling),1, 10);
|
||
|
||
v_errormsg := 'Fout inlezen contactpersoon (contracteigenaar)';
|
||
v_perslid_eig := SUBSTR(TRIM (v_perslid_eig),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen contractbeheerder';
|
||
v_perslid_beh := SUBSTR(TRIM (v_perslid_beh),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen opmerking';
|
||
v_opmerking := SUBSTR(TRIM (v_opmerking),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen ingansdatum';
|
||
v_d_datum_ingang := fac.safe_to_date(TRIM (v_datum_ingang), 'dd-mm-yyyy');
|
||
|
||
v_errormsg := 'Fout inlezen rappeldatum';
|
||
v_d_datum_rappel := fac.safe_to_date(TRIM (v_datum_rappel), 'dd-mm-yyyy');
|
||
|
||
v_errormsg := 'Fout inlezen opzegdatum';
|
||
v_d_datum_opzeg := fac.safe_to_date(TRIM (v_datum_opzeg), 'dd-mm-yyyy');
|
||
|
||
v_errormsg := 'Fout inlezen einddatum';
|
||
v_d_datum_eind := fac.safe_to_date(TRIM (v_datum_eind), 'dd-mm-yyyy');
|
||
|
||
v_errormsg := 'Fout inlezen bedrijf';
|
||
v_bedrijf_naam := SUBSTR(TRIM (v_bedrijf_naam),1, 60);
|
||
|
||
v_errormsg := 'Fout inlezen contactpersoon bedrijf';
|
||
v_contact_naam := SUBSTR(TRIM (v_contact_naam),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen kostenplaatscode';
|
||
v_kpn_code := SUBSTR(TRIM (v_kpn_code),1, 30);
|
||
|
||
v_errormsg := 'Fout inlezen contractbedrag';
|
||
v_n_bedrag := fac.safe_to_number(v_bedrag);
|
||
|
||
v_errormsg := 'Fout inlezen termijnbedrag';
|
||
v_n_bedrag_termijn := fac.safe_to_number(v_bedrag_termijn);
|
||
|
||
v_errormsg := 'Fout inlezen uurtarief';
|
||
v_n_uurtarief := fac.safe_to_number(v_uurtarief);
|
||
|
||
v_errormsg := 'Fout inlezen kortingspercentage';
|
||
v_n_korting := fac.safe_to_number(v_korting);
|
||
|
||
v_errormsg := 'Fout inlezen gebouwcode';
|
||
v_gebouwcode := SUBSTR(TRIM (v_gebouwcode),1, 12);
|
||
|
||
v_errormsg := 'Fout inlezen verlenging';
|
||
v_verlengen := SUBSTR(TRIM (v_verlengen),1, 1);
|
||
|
||
v_errormsg := 'Fout inlezen flexveld 1';
|
||
v_flex1 := SUBSTR(TRIM (v_flex1),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen flexveld 2';
|
||
v_flex2 := SUBSTR(TRIM (v_flex2),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen flexveld 3';
|
||
v_flex3 := SUBSTR(TRIM (v_flex3),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen flexveld 4';
|
||
v_flex4 := SUBSTR(TRIM (v_flex4),1, 1000);
|
||
|
||
v_errormsg := 'Fout inlezen flexveld 5';
|
||
v_flex5 := SUBSTR(TRIM (v_flex5),1, 1000);
|
||
|
||
v_ongeldig := 0;
|
||
|
||
-- Headerregel overslaan
|
||
IF (UPPER(v_nummer_intern) = 'CONTRACTNR')
|
||
THEN
|
||
v_count_tot := v_count_tot - 1;
|
||
ELSIF (v_ongeldig = 0)
|
||
THEN
|
||
-- Datatypes checken (string-to-date/number conversie)
|
||
IF (v_d_datum_ingang IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldige ingangsdatum "'|| v_datum_ingang || '"');
|
||
END IF;
|
||
IF (v_datum_rappel IS NOT NULL AND v_d_datum_rappel IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldige rappeldatum "'|| v_datum_rappel || '"');
|
||
END IF;
|
||
IF (v_datum_opzeg IS NOT NULL AND v_d_datum_opzeg IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldige opzegdatum "'|| v_datum_opzeg || '"');
|
||
END IF;
|
||
IF (v_d_datum_eind IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldige einddatum "'|| v_datum_eind || '"');
|
||
END IF;
|
||
|
||
IF (v_bedrag IS NOT NULL AND v_n_bedrag IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldig getal "'|| v_bedrag || '"');
|
||
END IF;
|
||
IF (v_bedrag_termijn IS NOT NULL AND v_n_bedrag_termijn IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldig getal"'|| v_bedrag_termijn || '"');
|
||
END IF;
|
||
IF (v_uurtarief IS NOT NULL AND v_n_uurtarief IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldig getal"'|| v_uurtarief || '"');
|
||
END IF;
|
||
IF (v_korting IS NOT NULL AND v_n_korting IS NULL)
|
||
THEN
|
||
fac.imp_writelog ( p_import_key, 'W',
|
||
'Inleesproces: Contract ' || v_nummer_intern || '.',
|
||
'Ongeldig getal"'|| v_korting || '"');
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout toevoegen contract';
|
||
INSERT INTO fac_imp_cnt
|
||
( nummer_intern,
|
||
nummer_extern,
|
||
cnt_soort,
|
||
beschrijving,
|
||
mantel_nr,
|
||
omschrijving,
|
||
afdeling,
|
||
perslid_eig,
|
||
perslid_beh,
|
||
opmerking,
|
||
datum_ingang,
|
||
datum_eind,
|
||
datum_opzeg,
|
||
datum_rappel,
|
||
bedrijf_naam,
|
||
contact_naam,
|
||
kpn_code,
|
||
bedrag,
|
||
bedrag_termijn,
|
||
uurtarief,
|
||
korting,
|
||
gebouwcode,
|
||
verlengen,
|
||
flex1,
|
||
flex2,
|
||
flex3,
|
||
flex4,
|
||
flex5)
|
||
VALUES
|
||
( v_nummer_intern,
|
||
v_nummer_extern,
|
||
v_cnt_soort,
|
||
v_beschrijving,
|
||
v_mantel_nr,
|
||
v_omschrijving,
|
||
v_afdeling,
|
||
v_perslid_eig,
|
||
v_perslid_beh,
|
||
v_opmerking,
|
||
v_d_datum_ingang,
|
||
v_d_datum_eind,
|
||
v_d_datum_opzeg,
|
||
v_d_datum_rappel,
|
||
v_bedrijf_naam,
|
||
v_contact_naam,
|
||
v_kpn_code,
|
||
v_n_bedrag,
|
||
v_n_bedrag_termijn,
|
||
v_n_uurtarief,
|
||
v_n_korting,
|
||
v_gebouwcode,
|
||
v_verlengen,
|
||
v_flex1,
|
||
v_flex2,
|
||
v_flex3,
|
||
v_flex4,
|
||
v_flex5);
|
||
|
||
v_count_import := v_count_import + 1;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := 'Fout bij toevoegen regel aan importtabel! Contract:' || v_aanduiding || ' [' || v_errormsg || ']';
|
||
v_errormsg :=
|
||
v_errormsg
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Inleesproces: aantal ingelezen importregels (exclusief headerregel): '
|
||
|| 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),
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint := 'Inleesproces contracten afgebroken! contract: ' || v_aanduiding || ' [' || v_errormsg || ']';
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
/
|
||
|
||
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
|
||
SELECT a.nummer_intern,
|
||
a.nummer_extern,
|
||
a.cnt_soort,
|
||
a.ins_discipline_key,
|
||
a.beschrijving,
|
||
a.mantel_nr,
|
||
a.mantel_key,
|
||
a.omschrijving,
|
||
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.bedrijf_naam,
|
||
a.prs_bedrijf_key,
|
||
a.contact_naam,
|
||
b.prs_contactpersoon_key,
|
||
a.kpn_code,
|
||
a.prs_kostenplaats_key,
|
||
a.bedrag,
|
||
a.bedrag_termijn,
|
||
a.uurtarief,
|
||
a.korting,
|
||
a.gebouwcode,
|
||
a.alg_gebouw_key,
|
||
a.verlengen,
|
||
a.flex1,
|
||
a.flex2,
|
||
a.flex3,
|
||
a.flex4,
|
||
a.flex5
|
||
FROM
|
||
(
|
||
SELECT i.nummer_intern,
|
||
i.nummer_extern,
|
||
i.cnt_soort,
|
||
disc.ins_discipline_key,
|
||
i.beschrijving,
|
||
i.mantel_nr,
|
||
mntl.cnt_contract_key mantel_key,
|
||
i.omschrijving,
|
||
i.afdeling,
|
||
afd.prs_afdeling_key,
|
||
i.perslid_eig,
|
||
eig.prs_perslid_key prs_perslid_key_eig,
|
||
eig.prs_afdeling_key prs_afdeling_key_eig,
|
||
i.perslid_beh,
|
||
beh.prs_perslid_key prs_perslid_key_beh,
|
||
i.opmerking,
|
||
i.datum_ingang,
|
||
i.datum_eind,
|
||
i.datum_opzeg,
|
||
i.datum_rappel,
|
||
i.bedrijf_naam,
|
||
bedr.prs_bedrijf_key,
|
||
i.contact_naam,
|
||
i.kpn_code,
|
||
kpn.prs_kostenplaats_key,
|
||
i.bedrag,
|
||
i.bedrag_termijn,
|
||
i.uurtarief,
|
||
i.korting,
|
||
i.gebouwcode,
|
||
g.alg_gebouw_key,
|
||
-- NULL --> Onbekend
|
||
-- J --> Ja (verlengen), nog wel te wijzigen
|
||
-- N --> Nee (niet verlengen), nog wel te wijzigen
|
||
DECODE(i.verlengen,
|
||
NULL, NULL,
|
||
'J', 1,
|
||
'N', 0,
|
||
NULL) verlengen,
|
||
i.flex1,
|
||
i.flex2,
|
||
i.flex3,
|
||
i.flex4,
|
||
i.flex5
|
||
FROM fac_imp_cnt i,
|
||
(SELECT * FROM cnt_discipline WHERE ins_discipline_verwijder IS NULL) disc,
|
||
cnt_v_aanwezigcontract mntl,
|
||
(SELECT * FROM prs_v_aanwezigbedrijf WHERE prs_bedrijf_contract IS NOT NULL) bedr,
|
||
(SELECT * FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL) afd,
|
||
prs_v_aanwezigperslid eig,
|
||
prs_v_aanwezigperslid beh,
|
||
prs_v_aanwezigkostenplaats kpn,
|
||
alg_v_aanweziggebouw g
|
||
WHERE UPPER(cnt_soort) = UPPER(disc.ins_discipline_omschrijving(+))
|
||
AND UPPER(mantel_nr) = UPPER(mntl.cnt_contract_nummer_intern(+))
|
||
AND UPPER(afdeling) = afd.prs_afdeling_upper(+)
|
||
AND UPPER(perslid_eig) = eig.prs_perslid_oslogin(+)
|
||
AND UPPER(perslid_beh) = beh.prs_perslid_oslogin(+)
|
||
AND UPPER(bedrijf_naam) = bedr.prs_bedrijf_naam_upper(+)
|
||
AND UPPER(kpn_code) = kpn.prs_kostenplaats_upper(+)
|
||
AND UPPER(gebouwcode) = g.alg_gebouw_upper(+)
|
||
) a
|
||
LEFT OUTER JOIN
|
||
(
|
||
SELECT prs_contactpersoon_key, prs_contactpersoon_naam, prs_bedrijf_key
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL
|
||
) b
|
||
ON b.prs_bedrijf_key = a.prs_bedrijf_key
|
||
AND UPPER(a.contact_naam) = UPPER(b.prs_contactpersoon_naam);
|
||
|
||
-- Constanten
|
||
c_contract_type NUMBER := 5; -- Leverancier (met scope)
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_count_tot NUMBER;
|
||
v_count NUMBER;
|
||
v_count_chg NUMBER;
|
||
v_geldig NUMBER (1);
|
||
v_actie VARCHAR2 (10);
|
||
v_facilitor_key NUMBER;
|
||
|
||
v_typecontract_key NUMBER;
|
||
v_cnt_discipline_key NUMBER;
|
||
v_perslid_key_eig NUMBER;
|
||
v_perslid_key_beh NUMBER;
|
||
v_bedrijf_key NUMBER;
|
||
v_contactpersoon_key NUMBER;
|
||
v_termijn_type VARCHAR2 (1);
|
||
v_termijn_aantal NUMBER;
|
||
v_termijn_key_opzeg NUMBER;
|
||
v_termijn_key_rappel NUMBER;
|
||
v_nummer_intern VARCHAR2 (30);
|
||
v_contract_key NUMBER;
|
||
|
||
PROCEDURE bepaal_termijn (
|
||
p_start IN DATE,
|
||
p_eind IN DATE)
|
||
AS
|
||
v_num_months NUMBER;
|
||
BEGIN
|
||
v_termijn_type := 'D';
|
||
v_termijn_aantal := 0;
|
||
|
||
IF p_start IS NOT NULL
|
||
AND p_eind > p_start
|
||
THEN
|
||
-- Kijk of het verschil een jaar is
|
||
IF (TO_CHAR (p_eind, 'ddmm') = TO_CHAR (p_start, 'ddmm') )
|
||
THEN
|
||
-- Verschil is aantal jaren.
|
||
v_termijn_type := 'Y';
|
||
v_termijn_aantal :=
|
||
TO_NUMBER (TO_CHAR (p_eind, 'yyyy'))
|
||
- TO_NUMBER (TO_CHAR (p_start, 'yyyy'));
|
||
ELSE
|
||
v_num_months := ROUND( (p_eind - p_start) / 30);
|
||
IF (ADD_MONTHS( p_eind, -v_num_months) = p_start)
|
||
--IF (TO_CHAR (p_eind, 'dd') = TO_CHAR (p_start, 'dd') )
|
||
THEN
|
||
-- Verschil is aantal maanden.
|
||
v_termijn_type := 'M';
|
||
v_termijn_aantal :=
|
||
( TO_NUMBER (TO_CHAR (p_eind, 'yyyy')) * 12
|
||
+ TO_NUMBER (TO_CHAR (p_eind, 'mm')) )
|
||
- ( TO_NUMBER (TO_CHAR (p_start, 'yyyy')) * 12
|
||
+ TO_NUMBER (TO_CHAR (p_start, 'mm')) );
|
||
ELSE
|
||
-- Verschil is aantal dagen.
|
||
v_termijn_type := 'D';
|
||
v_termijn_aantal := p_eind - p_start;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_termijn_aantal < 0
|
||
THEN
|
||
v_termijn_aantal := 0;
|
||
-- 0 weken = termijn 'Geen'
|
||
v_termijn_type := 'W';
|
||
END IF;
|
||
|
||
IF v_termijn_aantal > 999
|
||
THEN
|
||
v_termijn_aantal := 999;
|
||
END IF;
|
||
|
||
END;
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_chg := 0;
|
||
|
||
v_errormsg := '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_aanduiding := rec.nummer_intern||' ('||rec.nummer_extern||': '||rec.beschrijving||')';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
-- Eerst controleren of de ingevulde gegevens wel zinning/geldig zijn.
|
||
-- Voor ontbrekende verplichte gegevens proberen we wat zinnigs (en
|
||
-- geldigs!) te bedenken.
|
||
-- Aanmaken wordt pas gedaan als alles zinnig bevonden is.
|
||
|
||
-- Verplichte velden: deze velden zijn in de interface verplicht, dus
|
||
-- in de import ook.
|
||
IF ( rec.beschrijving IS NULL
|
||
OR rec.cnt_soort IS NULL
|
||
OR rec.afdeling IS NULL
|
||
OR rec.perslid_beh IS NULL
|
||
OR rec.bedrijf_naam IS NULL
|
||
OR rec.kpn_code IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '. ('
|
||
|| rec.beschrijving || '/'
|
||
|| rec.cnt_soort || '/'
|
||
|| rec.afdeling || '/'
|
||
|| rec.perslid_beh || '/'
|
||
|| rec.bedrijf_naam || '/'
|
||
|| rec.kpn_code||')',
|
||
'E<>n of meer verplichte gegevens (beschrijving/soort/afdeling/beheerder/bedrijf/kostenplaats) ontbreken. Contract wordt overgeslagen.'
|
||
);
|
||
-- Contract niet verder behandelen
|
||
v_geldig := 0;
|
||
ELSIF (rec.datum_ingang IS NULL OR rec.datum_eind IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Ongeldige of ontbrekende ingangs- of einddatum. Contract wordt overgeslagen.'
|
||
);
|
||
-- Contract niet verder behandelen
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
IF (v_geldig = 1)
|
||
THEN
|
||
-- Afdeling: moet bestaan
|
||
IF (rec.prs_afdeling_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Onbekende afdeling "' || rec.afdeling || '". Contract wordt overgeslagen.'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Eigenaar (als meegegeven): backup _FACILITOR.
|
||
-- In geval van abonnement verplicht
|
||
-- *niet gevonden, wel meegegeven
|
||
IF (rec.perslid_eig IS NOT NULL AND rec.prs_perslid_key_eig IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Onbekende eigenaar "' || rec.perslid_eig || '", _FACILITOR gebruikt'
|
||
);
|
||
v_perslid_key_eig := v_facilitor_key;
|
||
|
||
-- *wel gevonden (impliceert meegegeven)
|
||
ELSIF (rec.prs_perslid_key_eig IS NOT NULL)
|
||
THEN
|
||
v_perslid_key_eig := rec.prs_perslid_key_eig;
|
||
|
||
-- Een bestaand persoon moet matchen met afdeling
|
||
-- (we gaan niet zoeken naar de afdeling van _FACILITOR)
|
||
IF (rec.prs_afdeling_key_eig != rec.prs_afdeling_key)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Eigenaar "' || rec.perslid_eig || '" niet in afdeling "' || rec.afdeling || '"'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
-- *niet meegegeven, dus niet gevonden
|
||
-- Speciaal geval abonnementen: abonnee (eigenaar) is dan verplicht
|
||
-- Contract is een abonnement, als de contractsoort aan een catalogus
|
||
-- gekoppeld is.
|
||
ELSIF (rec.ins_discipline_key IS NOT NULL)
|
||
THEN
|
||
-- 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
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Abonnee is verplicht. Contract wordt overgeslagen.'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Beheerder: backup _FACILITOR.
|
||
IF (rec.prs_perslid_key_beh IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Onbekende beheerder "' || rec.perslid_beh || '", _FACILITOR gebruikt'
|
||
);
|
||
v_perslid_key_beh := v_facilitor_key;
|
||
|
||
ELSE
|
||
v_perslid_key_beh := rec.prs_perslid_key_beh;
|
||
END IF;
|
||
|
||
-- Kostenplaats: moet bestaan
|
||
-- TODO: moet de beheerder hier rechten op hebben? (en welke dan?)
|
||
IF (rec.prs_kostenplaats_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Onbekende kostenplaats "' || rec.kpn_code || '". Contract wordt overgeslagen.'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Gebouwscope: gebouw moet bestaan en
|
||
-- contracttype moet gebouwscope hebben (type_key 3 en 5)
|
||
IF (rec.gebouwcode IS NOT NULL)
|
||
THEN
|
||
-- Geen gebouw gevonden
|
||
IF (rec.alg_gebouw_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Onbekend gebouw "' || rec.gebouwcode || '". Contract wordt overgeslagen.'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Als een bestaande contractsoort is opgegeven, moet deze type_key
|
||
-- 3 (Ondersteuning) of 5 (Leverancier) hebben (want anders geen scope).
|
||
IF (rec.ins_discipline_key IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen contracttype.';
|
||
SELECT cnt_srtcontract_type
|
||
INTO v_typecontract_key
|
||
FROM cnt_disc_params
|
||
WHERE cnt_ins_discipline_key = rec.ins_discipline_key;
|
||
|
||
-- Ander type, dus geen gebouwscope toegestaan
|
||
IF (v_typecontract_key != 3 AND v_typecontract_key != 5)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || ' op gebouw "' || rec.gebouwcode || '".',
|
||
'Contractsoort "' || rec.cnt_soort || '" kent geen scope. Contract wordt overgeslagen.'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
END IF; -- v_geldig = 1
|
||
|
||
-- Alleen verder gaan als alles zinnig bevonden is.
|
||
IF (v_geldig = 1)
|
||
THEN
|
||
-- Contractsoort: aanmaken (type Leverancier)
|
||
IF (rec.ins_discipline_key IS NULL)
|
||
THEN
|
||
-- Misschien is de contractsoort tijdens deze import al toegevoegd? (dan was 'ie er
|
||
-- voor de cursor nog niet)
|
||
BEGIN
|
||
v_errormsg := 'Zoeken 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; aanmaken
|
||
v_errormsg := 'Fout bij toevoegen contractsoort.';
|
||
|
||
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',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Contractsoort "' || rec.cnt_soort || '" aangemaakt'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_cnt_discipline_key := rec.ins_discipline_key;
|
||
END IF;
|
||
|
||
-- Mantel: niet verplicht, wel rapporteren als niets gevonden
|
||
IF (rec.mantel_nr IS NOT NULL AND rec.mantel_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'W',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Mantelcontract "' || rec.mantel_nr || '" niet gevonden'
|
||
);
|
||
END IF;
|
||
|
||
-- Bedrijf: aanmaken (kan alleen als de naam het matchingscriterium is)
|
||
-- moet uiteraard contractant zijn (en geen uitvoerende wat wel default is)
|
||
IF (rec.prs_bedrijf_key IS NULL)
|
||
THEN
|
||
-- Misschien is het bedrijf tijdens deze import al toegevoegd? (dan was 'ie er voor
|
||
-- de cursor nog niet)
|
||
BEGIN
|
||
v_errormsg := 'Zoeken bedrijf';
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_v_aanwezigbedrijf
|
||
WHERE prs_bedrijf_contract IS NOT NULL
|
||
AND prs_bedrijf_naam_upper = UPPER(rec.bedrijf_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Bedrijf bestaat gewoon niet; aanmaken
|
||
v_errormsg := 'Fout bij toevoegen bedrijf.';
|
||
|
||
INSERT INTO prs_bedrijf (
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_contract,
|
||
prs_bedrijf_uitvoerende)
|
||
VALUES (
|
||
rec.bedrijf_naam,
|
||
1,
|
||
NULL)
|
||
RETURNING prs_bedrijf_key INTO v_bedrijf_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Bedrijf "' || rec.bedrijf_naam || '" aangemaakt'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_bedrijf_key := rec.prs_bedrijf_key;
|
||
END IF;
|
||
|
||
-- Contactpersoon: aanmaken bij bedrijf
|
||
IF (rec.prs_contactpersoon_key IS NULL AND rec.contact_naam IS NOT NULL)
|
||
THEN
|
||
-- Misschien is de contactpersoon tijdens deze import al toegevoegd? (dan was 'ie er
|
||
-- voor de cursor nog niet)
|
||
BEGIN
|
||
v_errormsg := 'Zoeken contactpersoon';
|
||
SELECT prs_contactpersoon_key
|
||
INTO v_contactpersoon_key
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL
|
||
AND prs_bedrijf_key = v_bedrijf_key
|
||
AND UPPER(prs_contactpersoon_naam) = UPPER(rec.contact_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- Contactpersoon bestaat gewoon niet; aanmaken
|
||
v_errormsg := 'Fout bij toevoegen contactpersoon bedrijf.';
|
||
|
||
INSERT INTO prs_contactpersoon (
|
||
prs_contactpersoon_naam,
|
||
prs_bedrijf_key)
|
||
VALUES (
|
||
rec.contact_naam,
|
||
v_bedrijf_key)
|
||
RETURNING prs_contactpersoon_key INTO v_contactpersoon_key;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Contact "' || rec.contact_naam || '" aangemaakt bij bedrijf "'
|
||
|| rec.bedrijf_naam || '"'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_contactpersoon_key := rec.prs_contactpersoon_key;
|
||
END IF;
|
||
|
||
-- Opzegtermijn: bepalen en toevoegen
|
||
-- Als geen opzegtermijn ingevuld, dan is er geen opzegtermijn
|
||
IF (rec.datum_opzeg IS NULL)
|
||
THEN
|
||
-- Opzegtermijn 'Geen' = 0 weken
|
||
v_termijn_aantal := 0;
|
||
v_termijn_type := 'W';
|
||
ELSE
|
||
v_errormsg := 'Bepalen lengte opzegtermijn';
|
||
bepaal_termijn(rec.datum_opzeg, rec.datum_eind);
|
||
END IF;
|
||
-- Bestaat de termijn al?
|
||
BEGIN
|
||
v_errormsg := '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 := 'Toevoegen opzegtermijn';
|
||
INSERT INTO cnt_termijn (
|
||
cnt_termijn_omschrijving,
|
||
cnt_termijn_type,
|
||
cnt_termijn_aantal)
|
||
VALUES (
|
||
TO_CHAR (v_termijn_aantal)
|
||
|| DECODE (v_termijn_type,
|
||
'Y', ' Jaar',
|
||
'M', ' Maand(en)',
|
||
'D', ' Dag(en)'),
|
||
v_termijn_type,
|
||
v_termijn_aantal)
|
||
RETURNING cnt_termijn_key INTO v_termijn_key_opzeg;
|
||
END;
|
||
|
||
-- Rappeltermijn: bepalen en toevoegen
|
||
-- Als geen rappeltermijn ingevuld, dan is er geen rappeltermijn
|
||
IF (rec.datum_rappel IS NULL)
|
||
THEN
|
||
-- Rappeltermijn 'Geen' = 0 weken
|
||
v_termijn_aantal := 0;
|
||
v_termijn_type := 'W';
|
||
ELSE
|
||
v_errormsg := 'Bepalen lengte rappeltermijn';
|
||
-- Als geen opzegdatum, dan einddatum
|
||
bepaal_termijn(rec.datum_rappel,
|
||
COALESCE(rec.datum_opzeg, rec.datum_eind) );
|
||
END IF;
|
||
-- 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)
|
||
|| DECODE (v_termijn_type,
|
||
'Y', ' Jaar',
|
||
'M', ' Maand(en)',
|
||
'D', ' Dag(en)'),
|
||
v_termijn_type,
|
||
v_termijn_aantal)
|
||
RETURNING cnt_termijn_key INTO v_termijn_key_rappel;
|
||
END;
|
||
|
||
-- Als geen intern contractnummer is opgegeven, dan is dit een nieuw
|
||
-- contract. Dan moeten we een nieuw contractnummer verzinnen (en
|
||
-- zijn er altijd 0 contracten met dit nummer).
|
||
IF (rec.nummer_intern IS NULL)
|
||
THEN
|
||
v_count := 0;
|
||
SELECT COALESCE( MAX(fac.safe_to_number(cnt_contract_nummer_intern) ), 0) + 1
|
||
INTO v_nummer_intern
|
||
FROM cnt_contract;
|
||
ELSE
|
||
-- Controleren of er al een contract met hetzelfde nummer bestaat;
|
||
-- aanmaken vs. bijwerken
|
||
v_errormsg := 'Check bestaand contract';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_nummer_intern = rec.nummer_intern
|
||
AND cnt_contract_verwijder IS NULL;
|
||
v_nummer_intern := rec.nummer_intern;
|
||
END IF;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
-- Contract bestaat nog niet --> aanmaken
|
||
v_errormsg := 'Fout bij toevoegen contract.';
|
||
|
||
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_looptijd_van,
|
||
prs_kostenplaats_key,
|
||
cnt_contract_termijnkosten,
|
||
cnt_contract_opmerking,
|
||
cnt_contract_mantel_key,
|
||
cnt_contract_opzegtermijn,
|
||
cnt_contract_rappeltermijn,
|
||
cnt_contract_verlenging)
|
||
VALUES (
|
||
rec.nummer_extern,
|
||
rec.beschrijving,
|
||
rec.datum_eind,
|
||
rec.bedrag,
|
||
rec.uurtarief,
|
||
v_bedrijf_key,
|
||
v_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,
|
||
rec.datum_ingang,
|
||
rec.prs_kostenplaats_key,
|
||
rec.bedrag_termijn,
|
||
rec.opmerking,
|
||
rec.mantel_key,
|
||
v_termijn_key_opzeg,
|
||
v_termijn_key_rappel,
|
||
rec.verlengen
|
||
)
|
||
RETURNING cnt_contract_key INTO v_contract_key;
|
||
|
||
-- Track toevoeging
|
||
fac.trackaction ('CNTNEW',
|
||
v_contract_key,
|
||
v_facilitor_key,
|
||
NULL,
|
||
NULL);
|
||
|
||
v_actie := 'INSERT';
|
||
|
||
ELSE
|
||
-- Contract bestaat al --> bijwerken
|
||
v_errormsg := 'Fout bij bepalen bestaand contract.';
|
||
SELECT cnt_contract_key
|
||
INTO v_contract_key
|
||
FROM cnt_contract
|
||
WHERE cnt_contract_nummer_intern = rec.nummer_intern
|
||
AND cnt_contract_verwijder IS NULL;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'I',
|
||
'Contract ' || v_aanduiding || '.',
|
||
'Bestaand contract met dit nummer wordt bijgewerkt'
|
||
);
|
||
|
||
v_errormsg := 'Fout bij aanpassen 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 = v_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,
|
||
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_verlenging = rec.verlengen
|
||
WHERE cnt_contract_key = v_contract_key;
|
||
|
||
-- Track aanpassing
|
||
fac.trackaction ('CNTUPD',
|
||
v_contract_key,
|
||
v_facilitor_key,
|
||
NULL,
|
||
NULL);
|
||
|
||
v_actie := 'UPDATE';
|
||
|
||
END IF;
|
||
|
||
-- Upsert gebouwscope: bij UPDATE eerst kijken of deze 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 (rec.alg_gebouw_key IS NOT NULL)
|
||
THEN
|
||
-- 'Teller op nul'
|
||
v_count := 0;
|
||
|
||
IF (v_actie = 'UPDATE')
|
||
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 = rec.alg_gebouw_key
|
||
AND cnt_alg_plaats_code = 'G';
|
||
END IF;
|
||
|
||
-- Scope komt nog niet voor (INSERT of (UPDATE met v_count = 0) ),
|
||
-- dus aanmaken
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errormsg := 'Fout bij vastleggen scope.';
|
||
INSERT INTO cnt_contract_plaats (
|
||
cnt_contract_key,
|
||
cnt_alg_plaats_key,
|
||
cnt_alg_plaats_code)
|
||
VALUES (
|
||
v_contract_key,
|
||
rec.alg_gebouw_key,
|
||
'G');
|
||
END IF;
|
||
END IF;
|
||
--TODO: voor contracttypes zonder scope de gebouwscope leeg maken?
|
||
|
||
COMMIT;
|
||
|
||
-- Succesvol toegevoegd/bijgewerkt
|
||
v_count_chg := v_count_chg + 1;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint :=
|
||
'Fout bij toevoegen contract! contract:'
|
||
|| v_aanduiding
|
||
|| ' ['
|
||
|| v_errormsg
|
||
|| ']';
|
||
v_errormsg :=
|
||
'ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Updateproces: aantal verwerkte updateregels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Updateproces: aantal ongeldige niet verwerkte updateregels: '
|
||
|| TO_CHAR (v_count_tot - v_count_chg),
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errorhint :=
|
||
'Updateproces contracten afgebroken! contract: '
|
||
|| v_aanduiding
|
||
|| ' ['
|
||
|| v_errormsg
|
||
|| ']';
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
-------------------------------- 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 COALESCE(MAX(res_rsv_ruimte_kto_verstuurd), 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 COALESCE(MAX(res_rsv_ruimte_kto_verstuurd), 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 COALESCE(MAX(mld_melding_kto_verstuurd), 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 COALESCE(MAX(mld_melding_kto_verstuurd), 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 COALESCE(MAX(bes_bestelling_kto_verstuurd), 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 COALESCE(MAX(bes_bestelling_kto_verstuurd), 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;
|
||
/
|
||
|
||
|
||
|
||
REGISTERRUN('$Workfile: FAC_PACF.SRC $','$Revision$')
|