From 02d8b03cc6164fa39eaf206c9bac17fb8adaba33 Mon Sep 17 00:00:00 2001 From: Robin Stoker Date: Fri, 5 Apr 2019 15:14:28 +0000 Subject: [PATCH] DJIN#57267 -- Voorraad rapportage herschreven + duplicaten verwijderd + objectuitleen export fix svn path=/Customer/trunk/; revision=41983 --- DVON/dvon.sql | 2533 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 2297 insertions(+), 236 deletions(-) diff --git a/DVON/dvon.sql b/DVON/dvon.sql index 18328458d..da2171b9b 100644 --- a/DVON/dvon.sql +++ b/DVON/dvon.sql @@ -1061,7 +1061,7 @@ IS v_ongeldig NUMBER (1) := 0; -- De importvelden - v_key_objsrtkey VARCHAR2 (255); -- Key van bestaande objectsoort (alleen bij exports) + v_key_objsrtkey VARCHAR2 (255); -- Key van bestaande objectsoort (alleen bij exports) v_discipline_omschrijving VARCHAR2 (255); -- Discipline omschrijving (moet al bestaan) v_srtgroep_omschrijving VARCHAR2 (255); -- Objectgroep naam (moet al bestaan) v_srtdeel_code VARCHAR2 (255); -- Objectcode @@ -2498,14 +2498,14 @@ BEGIN v_errorhint := 'Fout bij toevoegen afdeling'; IF (v_count = 0) THEN - insert into PRS_AFDELING + INSERT INTO PRS_AFDELING (prs_afdeling_naam ,prs_afdeling_omschrijving ,prs_bedrijf_key ,prs_afdeling_parentkey ,prs_kostenplaats_key ) - values + VALUES (recAfdeling1.prs_afdeling_naam ,recAfdeling1.prs_afdeling_omschrijving ,v_bedrijf_key @@ -2513,7 +2513,7 @@ BEGIN ,v_kostenplaats_key ); - commit; + COMMIT; v_count_update := v_count_update + 1; END IF; @@ -2729,196 +2729,1944 @@ EXCEPTION END DVON_UPDATE_ORGKOST; / +CREATE OR REPLACE PROCEDURE fac_import_extrains (p_import_key IN NUMBER) +IS + c_delim VARCHAR2 (1) := ';'; + v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + header_is_valid NUMBER; + v_count_tot NUMBER (10); + v_count_import NUMBER (10); + v_ongeldig NUMBER (1); + v_aanduiding VARCHAR (400); + 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); -- C60 + v_ins_discipline_kostensoort VARCHAR2 (255); --C60 + v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 + v_ins_srtdeel_code VARCHAR2 (255); -- C10 + v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 + v_ins_deel_omschrijving VARCHAR2 (255); -- C60 + v_ins_deel_opmerking VARCHAR2 (1000); -- C320 + v_reserveerbaar VARCHAR2 (255); -- C1 + v_reserveerbaar_n NUMBER (1); -- N1 + v_res_deel_eenheid VARCHAR2 (255); -- C10 + v_res_deel_prijs VARCHAR2 (255); -- N7,2 + v_res_deel_prijs_n NUMBER (7, 2); -- N7,2 + v_alg_locatie_code VARCHAR2 (255); -- C10 + v_alg_gebouw_code VARCHAR2 (255); -- C12 + v_alg_verdieping_volgnr VARCHAR2 (255); -- N3 + v_alg_verdieping_volgnr_n NUMBER (3); -- N3 + v_alg_ruimte_nr VARCHAR2 (255); -- 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); -- C60 + v_res_discipline_kostensoort VARCHAR2 (255); -- C60 + v_prs_perslid_matchcode VARCHAR2 (255); + v_prs_perslid_matchwaarde VARCHAR2 (255); + v_ins_kenmerkwaarde1 VARCHAR2 (4000); + v_ins_kenmerkwaarde2 VARCHAR2 (4000); + v_ins_kenmerkwaarde3 VARCHAR2 (4000); + v_ins_kenmerkwaarde4 VARCHAR2 (4000); + v_ins_kenmerkwaarde5 VARCHAR2 (4000); + v_ins_kenmerkwaarde6 VARCHAR2 (4000); + v_ins_kenmerkwaarde7 VARCHAR2 (4000); + v_ins_kenmerkwaarde8 VARCHAR2 (4000); + v_ins_kenmerkwaarde9 VARCHAR2 (4000); + v_ins_kenmerkwaarde10 VARCHAR2 (4000); + v_ins_kenmerkwaarde11 VARCHAR2 (4000); + v_ins_kenmerkwaarde12 VARCHAR2 (4000); + v_ins_kenmerkwaarde13 VARCHAR2 (4000); + v_ins_kenmerkwaarde14 VARCHAR2 (4000); + v_ins_kenmerkwaarde15 VARCHAR2 (4000); + v_ins_kenmerkwaarde16 VARCHAR2 (4000); + v_ins_kenmerkwaarde17 VARCHAR2 (4000); + v_ins_kenmerkwaarde18 VARCHAR2 (4000); + v_ins_kenmerkwaarde19 VARCHAR2 (4000); + v_ins_kenmerkwaarde20 VARCHAR2 (4000); + v_file_index NUMBER; + + -- Overige velden: + CURSOR c1 + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; + + -- 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)! + -- + -- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit + -- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3 + -- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep) + FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR) + RETURN VARCHAR + IS + v_srtkenmerk_key NUMBER; + v_kenmerk_groep NUMBER; + v_kw VARCHAR(250); + BEGIN + v_kenmerk_groep := 0; + v_kw := p_kw; + IF INSTR (v_kw, '|') > 1 + THEN + v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); + v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); + END IF; + + IF p_kw LIKE 'maat' + THEN -- maat, dus maar even wegzetten (wordt later gesplitst) + SELECT 9999 + INTO v_srtkenmerk_key + FROM DUAL; + + ELSE -- kenmerkwaarde is alfanumeriek (dus omschrijving)! + SELECT ins_srtkenmerk_key + INTO v_srtkenmerk_key + FROM ins_v_aanwezigsrtkenmerk + WHERE ins_srtkenmerk_upper = UPPER (v_kw) + AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B'); + END IF; + + RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep); + EXCEPTION + WHEN NO_DATA_FOUND + THEN + IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' + THEN + RETURN NULL; + ELSE + fac.imp_writelog (p_import_key, + 'W', + 'Fout bij bepalen kenmerksoort [' || p_kw || ']', + 'Bestaat niet of type ongeldig'); + COMMIT; + RETURN NULL; + END IF; + END; +BEGIN + -- Eerst opruiming + DELETE FROM fac_imp_ins; + + COMMIT; + + v_count_tot := 0; + v_count_import := 0; + header_is_valid := 0; + v_prs_perslid_matchcode := ''; + + FOR rec1 IN c1 + LOOP + BEGIN + v_newline := rec1.fac_imp_file_line; + v_file_index := rec1.fac_imp_file_index; + v_errormsg := 'Fout bij opvragen importregel'; + v_aanduiding := ''; + v_ongeldig := 0; + -- Lees alle veldwaarden + 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_ins_deel_opmerking); + 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_ins_deel_opmerking) = 'OBJECTOPMERKING' + AND UPPER (v_reserveerbaar) = 'RESERVEERBAAR' + AND UPPER (v_res_deel_eenheid) = 'EENHEID' + AND UPPER (v_res_deel_prijs) = 'PRIJS' + AND UPPER (v_alg_locatie_code) = 'LOCATIECODE' + AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE' + AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER' + AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER' + AND UPPER (v_res_deel_alg_level) = 'RESERVERINGSCOPE' + AND UPPER (v_res_discipline_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) > 60 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen'); + v_ongeldig := 1; + END IF; + + -- + v_errormsg := 'Kostensoort ongeldig'; + v_ins_discipline_kostensoort := + TRIM (v_ins_discipline_kostensoort); + + IF LENGTH (v_ins_discipline_kostensoort) > 60 + THEN + v_ins_discipline_kostensoort := + SUBSTR (v_ins_discipline_kostensoort, 1, 60); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Disciplinekostensoort wordt afgebroken tot [' + || v_ins_discipline_kostensoort + || ']' + ); + END IF; + + -- + v_errormsg := 'Groepsoortomschrijving ongeldig'; + v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving); + + IF v_ins_srtgroep_omschrijving IS NULL + OR LENGTH (v_ins_srtgroep_omschrijving) > 60 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen'); + v_ongeldig := 1; + END IF; + + -- + v_errormsg := 'Objectsoortcode ongeldig'; + v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code); + + IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen'); + v_ongeldig := 1; + END IF; + + -- + v_errormsg := 'Objectsoortomschrijving ongeldig'; + v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving); + + IF v_ins_srtdeel_omschrijving IS NULL + OR LENGTH (v_ins_srtdeel_omschrijving) > 100 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen'); + v_ongeldig := 1; + END IF; + + -- + v_errormsg := 'Objectomschrijving ongeldig'; + v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); + + IF v_ins_deel_omschrijving IS NULL + OR LENGTH (v_ins_deel_omschrijving) > 60 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen'); + v_ongeldig := 1; + END IF; + + v_errormsg := 'Objectopmerking ongeldig'; + v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking); + + IF LENGTH (v_ins_deel_opmerking) > 320 + THEN + v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Objectopmerking wordt afgebroken tot [' + || v_ins_deel_opmerking + || ']' + ); + END IF; + + -- Verder geen foutdetectie; kan dus stricter? + SELECT DECODE (SUBSTR (TRIM (UPPER (v_reserveerbaar)), 1, 1), + 'J', 1, + 0) + INTO v_reserveerbaar_n + FROM DUAL; + + -- + v_errormsg := 'Eenheid ongeldig'; + v_res_deel_eenheid := TRIM (v_res_deel_eenheid); + + IF LENGTH (v_res_deel_eenheid) > 10 + THEN + v_res_deel_eenheid := SUBSTR (v_res_deel_eenheid, 1, 10); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Eenheid wordt afgebroken tot [' + || v_res_deel_eenheid + || ']' + ); + END IF; + + -- + v_errormsg := 'Prijs ongeldig; maximale grootte 99999.99'; + v_res_deel_prijs := TRIM (v_res_deel_prijs); + v_res_deel_prijs_n := NULL; + + IF (v_res_deel_prijs IS NOT NULL) + THEN + IF (fac.safe_to_number (v_res_deel_prijs) IS NULL) + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + ELSE + v_res_deel_prijs_n := fac.safe_to_number (v_res_deel_prijs); + END IF; + END IF; + + -- + v_errormsg := 'Locatiecode ongeldig'; + v_alg_locatie_code := TRIM (v_alg_locatie_code); + + IF LENGTH (v_alg_locatie_code) > 10 + THEN + v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Locatiecode wordt afgebroken tot [' + || v_alg_locatie_code + || ']' + ); + END IF; + + -- + v_errormsg := 'Gebouwcode ongeldig'; + v_alg_gebouw_code := TRIM (v_alg_gebouw_code); + + IF LENGTH (v_alg_gebouw_code) > 12 + THEN + v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Gebouwcode wordt afgebroken tot [' + || v_alg_gebouw_code + || ']' + ); + END IF; + + -- + v_errormsg := 'Bouwlaagvolgnummer ongeldig'; + v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr); + v_alg_verdieping_volgnr_n := NULL; + + IF (v_alg_verdieping_volgnr IS NOT NULL) + THEN + v_alg_verdieping_volgnr_n := + ROUND (fac.safe_to_number (v_alg_verdieping_volgnr)); + + IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999 + THEN + v_ongeldig := 1; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Regel wordt overgeslagen!'); + ELSE + v_alg_verdieping_volgnr_n := + fac.safe_to_number (v_alg_verdieping_volgnr); + END IF; + END IF; + + -- + v_errormsg := 'Ruimtenummer ongeldig'; + v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr); + + IF LENGTH (v_alg_ruimte_nr) > 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) > 60 + THEN + v_res_discipline_omschrijving := + SUBSTR (TRIM (v_res_discipline_omschrijving), 1, 60); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Catalogusnaam wordt afgebroken tot [' + || v_res_discipline_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Cataloguskostensoort ongeldig'; + v_res_discipline_kostensoort := + TRIM (v_res_discipline_kostensoort); + + IF LENGTH (v_res_discipline_kostensoort) > 60 + THEN + v_res_discipline_kostensoort := + SUBSTR (TRIM (v_res_discipline_kostensoort), 1, 60); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Cataloguskostensoort wordt afgebroken tot [' + || v_res_discipline_kostensoort + || ']' + ); + END IF; + + -- 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 gevuld met =; zoniet, + -- dan is kenmerkwaarde gevuld met ! + -- NB. Een NULL-waarde resulteert NIET in het wissen van een + -- kenmerkveld (bijwerken kan wel, maar wissen dus niet)! + INSERT INTO fac_imp_ins ( + ins_discipline_omschrijving, + ins_discipline_kostensoort, + ins_srtgroep_omschrijving, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_deel_omschrijving, + ins_deel_opmerking, + reserveerbaar, + res_deel_eenheid, + res_deel_prijs, + alg_locatie_code, + alg_gebouw_code, + alg_verdieping_volgnr, + alg_ruimte_nr, + res_deel_alg_level, + res_discipline_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_ins_deel_opmerking, + v_reserveerbaar_n, + v_res_deel_eenheid, + v_res_deel_prijs_n, + v_alg_locatie_code, + v_alg_gebouw_code, + v_alg_verdieping_volgnr_n, + v_alg_ruimte_nr, + v_res_deel_alg_level_n, + v_res_discipline_omschrijving, + v_res_discipline_kostensoort, + v_prs_perslid_matchcode, + v_prs_perslid_matchwaarde, + DECODE (v_ins_srtkenmerk_key1, + NULL, v_ins_kenmerkwaarde1, + '9999|0', + (SELECT i.ins_srtkenmerk_key || '|0' + FROM ins_v_aanwezigsrtkenmerk i, ins_v_srtdeel_kenmerk ik + WHERE i.ins_srtkenmerk_key = ik.ins_srtkenmerk_key + AND i.ins_srtkenmerk_upper LIKE '%MAAT%' + AND ik.ins_srtdeel_upper = UPPER (v_ins_srtdeel_omschrijving)) + || '=' + || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900), + TO_CHAR (v_ins_srtkenmerk_key1) + || '=' + || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key2, + NULL, v_ins_kenmerkwaarde2, + TO_CHAR (v_ins_srtkenmerk_key2) + || '=' + || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key3, + NULL, v_ins_kenmerkwaarde3, + TO_CHAR (v_ins_srtkenmerk_key3) + || '=' + || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key4, + NULL, v_ins_kenmerkwaarde4, + TO_CHAR (v_ins_srtkenmerk_key4) + || '=' + || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key5, + NULL, v_ins_kenmerkwaarde5, + TO_CHAR (v_ins_srtkenmerk_key5) + || '=' + || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key6, + NULL, v_ins_kenmerkwaarde6, + TO_CHAR (v_ins_srtkenmerk_key6) + || '=' + || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key7, + NULL, v_ins_kenmerkwaarde7, + TO_CHAR (v_ins_srtkenmerk_key7) + || '=' + || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key8, + NULL, v_ins_kenmerkwaarde8, + TO_CHAR (v_ins_srtkenmerk_key8) + || '=' + || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key9, + NULL, v_ins_kenmerkwaarde9, + TO_CHAR (v_ins_srtkenmerk_key9) + || '=' + || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key10, + NULL, v_ins_kenmerkwaarde10, + TO_CHAR (v_ins_srtkenmerk_key10) + || '=' + || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key11, + NULL, v_ins_kenmerkwaarde11, + TO_CHAR (v_ins_srtkenmerk_key11) + || '=' + || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key12, + NULL, v_ins_kenmerkwaarde12, + TO_CHAR (v_ins_srtkenmerk_key12) + || '=' + || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key13, + NULL, v_ins_kenmerkwaarde13, + TO_CHAR (v_ins_srtkenmerk_key13) + || '=' + || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key14, + NULL, v_ins_kenmerkwaarde14, + TO_CHAR (v_ins_srtkenmerk_key14) + || '=' + || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key15, + NULL, v_ins_kenmerkwaarde15, + TO_CHAR (v_ins_srtkenmerk_key15) + || '=' + || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key16, + NULL, v_ins_kenmerkwaarde16, + TO_CHAR (v_ins_srtkenmerk_key16) + || '=' + || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key17, + NULL, v_ins_kenmerkwaarde17, + TO_CHAR (v_ins_srtkenmerk_key17) + || '=' + || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key18, + NULL, v_ins_kenmerkwaarde18, + TO_CHAR (v_ins_srtkenmerk_key18) + || '=' + || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key19, + NULL, v_ins_kenmerkwaarde19, + TO_CHAR (v_ins_srtkenmerk_key19) + || '=' + || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900) + ), + DECODE ( + v_ins_srtkenmerk_key20, + NULL, v_ins_kenmerkwaarde20, + TO_CHAR (v_ins_srtkenmerk_key20) + || '=' + || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900) + ) + ); + + COMMIT; + v_count_import := v_count_import + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END IF; + END IF; + END; + END LOOP; + + IF (header_is_valid = 0) + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Ongeldig importbestand', + 'Geen header of header niet volgens specificatie!'); + ELSE + fac.imp_writelog ( + p_import_key, + 'S', + 'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'Objecten/aantal ongeldige niet ingelezen importregels: ' + || TO_CHAR (v_count_tot - v_count_import), + '' + ); + END IF; + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces objecten afgebroken! regel:' || v_file_index); +END fac_import_extrains; +/ + + +CREATE OR REPLACE PROCEDURE fac_update_extrains (p_import_key IN NUMBER) +AS + v_errormsg VARCHAR2 (1000) := '-'; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_aanduiding VARCHAR2 (200); + + -- SUBPROC + -- Conversie naar bruikbare objectomschrijvingen + PROCEDURE dvon_import_ins (p_import_key IN NUMBER) + AS + + CURSOR c1 + IS + SELECT DISTINCT + objectomschrijving, + disciplineomschrijving, + disciplinekostensoort, + groepsoortomschrijving, + objectsoortcode, + to_char (regexp_replace(substr (nummer, -7), '[^0-9]', '') + + ROW_NUMBER() OVER (PARTITION BY objectsoortcode ORDER BY objectsoortcode)) calc + FROM dvon_v_expbestelling_data; + + BEGIN + FOR rec IN c1 + LOOP + BEGIN + v_errormsg :='Fout bij converteren objectomschrijving object [' || rec.objectsoortcode || ']'; + + UPDATE fac_imp_ins + SET ins_deel_omschrijving = to_char (rec.objectsoortcode) || to_char (LPAD(rec.calc, 3, '0')) + WHERE ins_srtdeel_code = rec.objectsoortcode + AND ins_deel_omschrijving = to_char (rec.objectomschrijving); + END; + END LOOP; + COMMIT; + END; + + -- 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 + || ' (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, 60), + 1, + 0, + v_kostensoort_key) + RETURNING ins_discipline_key + INTO v_discipline_key; + + INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type) + VALUES (v_discipline_key, 0); + + v_count_update := v_count_update + 1; + END IF; + + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'INS-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'INS-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update), + ''); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_resdiscipline (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT 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, 60), + 1, + 0, + v_kostensoort_key) + RETURNING ins_discipline_key + INTO v_discipline_key; + + INSERT INTO res_disc_params (res_ins_discipline_key) + VALUES (v_discipline_key); + + v_count_update := v_count_update + 1; + END IF; + + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'RES-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'RES-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update), + ''); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_srtgroep (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, + UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper, + MAX (ins_discipline_omschrijving) ins_discipline_omschrijving, + MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving + FROM fac_imp_ins + GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving); + + v_discipline_key NUMBER (10); + ccount NUMBER (10); + v_count_tot NUMBER (10); + v_count_update NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_update := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := 'Fout bij bepalen discipline'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper; + + v_errormsg := + 'Fout bij toevoegen groepsoort [' || rec.ins_srtgroep_omschrijving || '] '; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper; + + IF ccount = 0 + THEN + INSERT INTO ins_srtgroep (ins_discipline_key, + ins_srtgroep_module, + ins_srtgroep_omschrijving) + VALUES (v_discipline_key, + 'INS', + SUBSTR (TRIM (rec.ins_srtgroep_omschrijving), 1, 60)); + + v_count_update := v_count_update + 1; + END IF; + + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Groepsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update), + ''); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_srtdeel (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, + UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper, + UPPER (ins_srtdeel_code) ins_srtdeel_code_upper, + UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper, + MAX (ins_discipline_omschrijving) ins_discipline_omschrijving, + MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving, + MAX (ins_srtdeel_code) ins_srtdeel_code, + MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving + FROM fac_imp_ins + GROUP BY UPPER (ins_discipline_omschrijving), + UPPER (ins_srtgroep_omschrijving), + UPPER (ins_srtdeel_code), + UPPER (ins_srtdeel_omschrijving); + + v_discipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + ccount NUMBER (10); + v_count_tot NUMBER (10); + v_count_update NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_update := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := 'Fout bij bepalen discipline'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper; + + v_errormsg := 'Fout bij bepalen groepsoort'; + + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper; + + v_errormsg := + 'Fout bij toevoegen objectsoort [' || rec.ins_srtdeel_omschrijving || ']'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper; + + IF ccount = 0 + THEN + -- binding 17 betekent ruimtegebonden of persoonsgebonden + INSERT INTO ins_srtdeel (ins_srtgroep_key, + ins_srtdeel_module, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_srtdeel_binding) + VALUES (v_srtgroep_key, + 'INS', + rec.ins_srtdeel_code, + rec.ins_srtdeel_omschrijving, + 17); + + v_count_update := v_count_update + 1; + END IF; + + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update), + ''); + COMMIT; + END; + + -- SUBPROC + -- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR' + -- Ofwel: srtkenmerk_key|groep=waarde + PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER, + p_srtkenmerkgroepwaarde IN VARCHAR2) + AS + v_kenmerk_key NUMBER; + v_srtkenmerk_key NUMBER; + v_groep NUMBER; + v_waarde VARCHAR(255); + v_srtkenmerk_type VARCHAR2 (1); + ccount NUMBER; + v_objectnaam VARCHAR2 (30); + v_kolomnaam VARCHAR2 (30); + v_kolomtxt VARCHAR2 (30); + sql_stmt VARCHAR2 (1000); + v_kenmerkdeel_key NUMBER; + l_cursor_1 INTEGER; + l_rowsprocessed NUMBER DEFAULT 0; + BEGIN + IF p_srtkenmerkgroepwaarde IS NOT NULL + THEN + v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']'; + + v_srtkenmerk_key := fac.safe_to_number ( + SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1)); + v_groep := fac.safe_to_number ( + SUBSTR (p_srtkenmerkgroepwaarde, + INSTR (p_srtkenmerkgroepwaarde, '|') + 1, + INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|'))); + v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1); + + 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 = v_srtkenmerk_key + AND k.ins_kenmerk_groep = v_groep + AND ( (k.ins_srtinstallatie_key = sd.ins_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = sg.ins_discipline_key + AND k.ins_kenmerk_niveau = 'D')) + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key; + + IF v_waarde IS NOT NULL + THEN + 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 = v_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NOT NULL; + + v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_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 = v_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key = ud.fac_usrtab_key + AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde); + ELSE -- FACILITOR view/tabel + SELECT d.fac_kenmerkdomein_objectnaam, + d.fac_kenmerkdomein_kolomnaam, + d.fac_kenmerkdomein_kolomtxt + INTO v_objectnaam, v_kolomnaam, v_kolomtxt + FROM ins_srtkenmerk sk, fac_kenmerkdomein d + WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key + AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key + AND d.fac_usrtab_key IS NULL; + + sql_stmt := + 'SELECT MAX (' + || v_kolomnaam + || ') FROM ' + || v_objectnaam + || ' WHERE UPPER (TRIM (' + || v_kolomtxt + || ')) = UPPER (:pwaarde)'; + l_cursor_1 := DBMS_SQL.open_cursor; + DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native); + DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde); + DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255); + l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1); + DBMS_SQL.column_value (l_cursor_1, 1, v_waarde); + DBMS_SQL.close_cursor(l_cursor_1); + END IF; + ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam) + NULL; -- v_waarde := p_waarde; + END IF; + + v_errormsg := 'Fout bij bepalen huidige waarde'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = p_deel_key AND ins_kenmerk_key = v_kenmerk_key; + + IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt. + THEN + v_waarde := REPLACE (v_waarde, ',', '.'); + END IF; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen waarde [' || 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; + ELSE + -- Verwijder kenmerken die als bestaan maar met de nieuwe import leeg zijn. + DELETE ins_kenmerkdeel + WHERE ins_kenmerk_key = v_kenmerk_key + AND ins_deel_key = p_deel_key; + END IF; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'upsert_inskenmerk'); + END; + + -- SUBPROC + PROCEDURE add_deel (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT ins_discipline_omschrijving, + ins_srtgroep_omschrijving, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_deel_omschrijving, + ins_deel_opmerking, + alg_locatie_code, + alg_gebouw_code, + alg_verdieping_volgnr, + alg_ruimte_nr, + reserveerbaar, + res_discipline_omschrijving, + res_deel_eenheid, + res_deel_prijs, + res_deel_alg_level, + prs_perslid_matchcode, + prs_perslid_matchwaarde, + ins_kenmerkwaarde1, + ins_kenmerkwaarde2, + ins_kenmerkwaarde3, + ins_kenmerkwaarde4, + ins_kenmerkwaarde5, + ins_kenmerkwaarde6, + ins_kenmerkwaarde7, + ins_kenmerkwaarde8, + ins_kenmerkwaarde9, + ins_kenmerkwaarde10, + ins_kenmerkwaarde11, + ins_kenmerkwaarde12, + ins_kenmerkwaarde13, + ins_kenmerkwaarde14, + ins_kenmerkwaarde15, + ins_kenmerkwaarde16, + ins_kenmerkwaarde17, + ins_kenmerkwaarde18, + ins_kenmerkwaarde19, + ins_kenmerkwaarde20 + FROM fac_imp_ins; + + v_discipline_key NUMBER (10); + v_rdiscipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + v_srtdeel_key NUMBER (10); + v_locatie_key NUMBER (10); + v_gebouw_key NUMBER (10); + v_verdieping_key NUMBER (10); + v_ruimte_key NUMBER (10); + v_matchkolom VARCHAR2 (255); + sql_stmt VARCHAR2 (1000); + v_ruimte_type VARCHAR2 (10); + v_deel_key NUMBER (10); + ccount NUMBER (10); + pcount NUMBER (10); + v_count_tot NUMBER (10); + v_count_insnew NUMBER (10); + v_count_insupd NUMBER (10); + v_count_resnew NUMBER (10); + v_srtnoti_code VARCHAR2 (6); + l_cursor_1 INTEGER; + l_rowsprocessed NUMBER DEFAULT 0; + 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 (UPPER(ins_srtdeel_code)) = UPPER (rec.ins_srtdeel_code) + AND TRIM (ins_srtdeel_upper) = UPPER (rec.ins_srtdeel_omschrijving); + + v_locatie_key := NULL; + + IF rec.alg_locatie_code IS NOT NULL + THEN -- ruimtegebonden object + v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']'; + + SELECT alg_locatie_key + INTO v_locatie_key + FROM alg_v_aanweziglocatie + WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code); + + v_errormsg := 'Fout bij bepalen gebouw [' || rec.alg_gebouw_code || ']'; + + SELECT alg_gebouw_key + INTO v_gebouw_key + FROM alg_v_aanweziggebouw + WHERE alg_locatie_key = v_locatie_key + AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code); + + v_errormsg := + 'Fout bij bepalen verdieping [' || rec.alg_verdieping_volgnr || ']'; + + SELECT alg_verdieping_key + INTO v_verdieping_key + FROM alg_v_aanwezigverdieping + WHERE alg_gebouw_key = v_gebouw_key + AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr; + + v_errormsg := 'Fout bij bepalen ruimte [' || rec.alg_ruimte_nr || ']'; + + SELECT alg_ruimte_key + INTO v_ruimte_key + FROM alg_v_aanwezigruimte + WHERE alg_verdieping_key = v_verdieping_key + AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr); + + v_ruimte_type := 'R'; + + -- ruimtegebonden objecten hebben een unieke ID binnen locatie + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigdeel + WHERE ins_deel_module = 'INS' + AND ins_srtdeel_key = v_srtdeel_key + AND ins_alg_ruimte_type = v_ruimte_type -- R + AND ins_alg_locatie_key = v_locatie_key + AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving); + ELSE -- persoonsgebonden object + v_matchkolom := ''; + + CASE rec.prs_perslid_matchcode + WHEN '1' + THEN + v_matchkolom := 'PRS_PERSLID_EMAIL'; + WHEN '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 (:pwaarde) ' + || 'GROUP BY prs_perslid_key'; + --dbms_output.put_line(rec.prs_perslid_matchwaarde); + l_cursor_1 := DBMS_SQL.open_cursor; + DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native); + DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', rec.prs_perslid_matchwaarde); + DBMS_SQL.define_column(l_cursor_1, 1, v_ruimte_key); + DBMS_SQL.define_column(l_cursor_1, 2, pcount); + l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1); + -- Bij no rows gaat-ie naar de exception. Moet daar dan nog een cursor dicht?? + DBMS_SQL.column_value (l_cursor_1, 1, v_ruimte_key); + DBMS_SQL.column_value (l_cursor_1, 2, pcount); + DBMS_SQL.close_cursor(l_cursor_1); + --dbms_output.put_line(pcount); + + IF pcount != 1 + THEN + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Kan persoon niet 1-duidig bepalen'); + END IF; + + v_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_deel_opmerking, + ins_alg_ruimte_key, + ins_alg_ruimte_type, + ins_alg_locatie_key) + VALUES (v_discipline_key, + v_srtdeel_key, + 'INS', + rec.ins_deel_omschrijving, + rec.ins_deel_opmerking, + v_ruimte_key, + v_ruimte_type, + v_locatie_key) + RETURNING ins_deel_key + INTO v_deel_key; + + -- Overslaan als reserveerbaar en geen RES-discipline of andersom, + -- dus verder geen controle op eventuele inconsistentie! + IF (rec.reserveerbaar = 1 AND rec.res_discipline_omschrijving IS NOT NULL) + THEN + v_errormsg := + 'Fout bij bepalen RES-discipline [' + || rec.res_discipline_omschrijving + || ']'; + + SELECT ins_discipline_key + INTO v_rdiscipline_key + FROM res_discipline + WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'RES' + AND UPPER (TRIM (ins_discipline_omschrijving)) = + UPPER (rec.res_discipline_omschrijving); + + v_errormsg := 'Fout bij toevoegen RES-object'; + + INSERT INTO res_deel (res_ins_deel_key, + res_deel_omschrijving, + res_deel_opmerking, + res_deel_eenheid, + res_deel_prijs, + res_discipline_key, + res_deel_alg_level) + VALUES (v_deel_key, + rec.ins_deel_omschrijving, + rec.ins_deel_opmerking, + rec.res_deel_eenheid, + rec.res_deel_prijs, + v_rdiscipline_key, + rec.res_deel_alg_level); + + v_count_resnew := v_count_resnew + 1; + END IF; + + v_srtnoti_code := 'INSNEW'; + v_count_insnew := v_count_insnew + 1; + ELSE -- bijwerken object! + v_errormsg := 'Fout bij bepalen INS-object'; + + SELECT ins_deel_key + INTO v_deel_key + FROM ins_v_aanwezigdeel + WHERE ins_deel_module = 'INS' + AND ins_srtdeel_key = v_srtdeel_key + AND ins_alg_ruimte_type = v_ruimte_type -- R/P + AND COALESCE (ins_alg_locatie_key, -1) = COALESCE (v_locatie_key, -1) -- gevuld/NULL + AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving); + + v_srtnoti_code := 'INSUPD'; + v_count_insupd := v_count_insupd + 1; + END IF; + + -- NULL-waarden resulteren NIET in het wissen van kenmerkvelden + -- (bijwerken kan wel, maar wissen dus niet)! ins_kenmerkwaarde1 + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde1); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde2); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde3); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde4); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde5); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde6); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde7); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde8); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde9); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde10); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde11); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde12); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde13); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde14); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde15); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde16); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde17); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde18); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde19); + upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde20); + + fac.trackaction (v_srtnoti_code, + v_deel_key, + sys_context('USERENV', 'CLIENT_IDENTIFIER'), + NULL, + NULL); + COMMIT; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog (p_import_key, + 'S', + 'INS-objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'INS-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_insnew), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'INS-objecten/aantal bijgewerkt: ' || TO_CHAR (v_count_insupd), + ''); + fac.imp_writelog (p_import_key, + 'S', + 'RES-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_resnew), + ''); + COMMIT; + END; +-- MAIN +BEGIN + dvon_import_ins (p_import_key); + add_kostensoort (p_import_key); + add_insdiscipline (p_import_key); + add_resdiscipline (p_import_key); + add_srtgroep (p_import_key); + add_srtdeel (p_import_key); + add_deel (p_import_key); +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + 'Importproces objecten afgebroken!'); +END fac_update_extrains; +/ + -- Ingelezen objecten in bulk uitleenbaar maken via export CREATE OR REPLACE PROCEDURE DVON_EXPORT_LEENMAARUIT (p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2) AS - CURSOR dvon_obj_uitleen - IS - SELECT ins_srtdeel_key - FROM ins_srtdeel - WHERE ins_srtdeel_uitleenbaar IS NULL - AND ins_srtdeel_verwijder IS NULL; - - v_srtdeel_key NUMBER (10); - BEGIN - FOR rec IN dvon_obj_uitleen - LOOP - BEGIN - UPDATE ins_srtdeel - SET ins_srtdeel_uitleenbaar = 1 - WHERE ins_srtdeel_key = rec.ins_srtdeel_key - AND ins_srtdeel_verwijder IS NULL - RETURNING ins_srtdeel_key INTO v_srtdeel_key; + UPDATE ins_srtdeel + SET ins_srtdeel_uitleenbaar = 1 + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_uitleenbaar != 1; - UPDATE ins_deel - SET ins_alg_ruimte_key_org = 201, - ins_alg_ruimte_type_org = 'R' - WHERE - ins_alg_ruimte_type = 'P' - AND ins_alg_ruimte_key_org IS NULL - AND ins_srtdeel_key = v_srtdeel_key; - END; - END LOOP; + UPDATE ins_deel + SET ins_alg_ruimte_key_org = 201, + ins_alg_ruimte_type_org = 'R' + WHERE ins_alg_ruimte_type = 'P' + AND ins_alg_ruimte_key_org IS NULL; END; / -- Vanaf hier rapportages --- Exporteer bestellingen in het formaat van de FIP objecten -CREATE OR REPLACE VIEW dvon_v_rap_expbestelling -( - bestelling_key, - disciplineomschrijving, - disciplinekostensoort, - groepsoortomschrijving, - objectsoortcode, - objectsoortomschrijving, - objectidentificatie, - objectopmerking, - reserveerbaar, - eenheid, - prijs, - locatiecode, - gebouwcode, - bouwlaagvolgnummer, - ruimtenummer, - reserveringscope, - catalogusnaam, - cataloguskostensoort, - persoonmatchcode, - persoonmatchwaarde, - ingangsdatum, - vervaldatum, - aantal, - maat, - kenmerk2, - kenmerk3, - kenmerk4, - kenmerk5, - kenmerk6, - kenmerk7, - kenmerk8, - kenmerk9, - kenmerk10, - kenmerk11, - kenmerk12, - kenmerk13, - kenmerk14, - kenmerk15, - kenmerk16, - kenmerk17, - kenmerk18, - kenmerk19, - kenmerk20 -) -AS - SELECT - sub.bes_bestelling_key, - d.ins_discipline_omschrijving, - NULL, - sg.ins_srtgroep_omschrijving, - sd.ins_srtdeel_code, - sd.ins_srtdeel_omschrijving, - MAX (I.INS_DEEL_OMSCHRIJVING), - NULL, -- geen opmerking - NULL, -- reserveerbaar is nvt - NULL, -- eenheid is nvt - NULL, -- prijs is nvt - 'DVO-ASSEN3', -- locatiecode - 'DVO-ASS-MA', -- gebouwcode - '0', -- bouwlaag - 'MAGAZIJN', --ruimtenummer - NULL, -- reserveringscope - NULL, -- catalogusnaam - NULL, -- cataloguskostensoort - NULL, -- persoonmatchcode - NULL, -- persoonmatchwaarde - NULL, -- ingangsdatum - NULL, -- vervaldatum - sub.aantal, -- aantal, moet nog omgebogen worden - sub.maat, -- kenmerk 1 - -- en hieronder kenmerk 2 tm 20 - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL - -- (SELECT ins.get_description('LPN_INS_DEEL' ,6 , ins_srtdeel_code_upper) FROM ins_srtdeel WHERE ins_srtdeel_key = sd.ins_srtdeel_key) omschrijving - FROM ( SELECT - b.bes_bestelling_key, - sd.ins_srtdeel_key, - sd.bes_srtdeel_omschrijving productomschrijving, - COALESCE (maat.fac_usrdata_omschr, 'NVT') maat, - SUM (bi.bes_bestelling_item_aantal) aantal - FROM bes_bestelling b, - bes_bestelling_item bi, - bes_bestelopdr_item boi, - bes_bestelopdr bo, - bes_kenmerkbesteli bki, - bes_kenmerk bk, - ins_tab_discipline d, - bes_srtdeel sd, - bes_srtgroep sg, - (SELECT f.fac_usrdata_omschr, - f.fac_usrdata_key, - bsk.bes_srtkenmerk_key - FROM fac_usrdata f, bes_srtkenmerk bsk - WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat - WHERE b.bes_bestelling_key = bi.bes_bestelling_key - AND bi.bes_bestelopdr_item_key = - boi.bes_bestelopdr_item_key - AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key - AND bki.bes_bestelling_item_key(+) = - bi.bes_bestelling_item_key - AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+) - AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_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 maat.fac_usrdata_key(+) = - fac.safe_to_number (bki.bes_kenmerkbesteli_waarde) - GROUP BY ( - b.bes_bestelling_key, - sd.ins_srtdeel_key, - sd.bes_srtdeel_omschrijving, - -- bi.bes_bestelling_item_aantal, - COALESCE (maat.fac_usrdata_omschr, 'NVT'))) sub, - ins_tab_discipline d, - ins_deel i, - ins_srtdeel sd, - ins_srtgroep sg - WHERE sub.ins_srtdeel_key = sd.ins_srtdeel_key - AND sd.ins_srtdeel_key = i.ins_srtdeel_key - AND sd.ins_srtgroep_key = sg.ins_srtgroep_key - AND sg.ins_discipline_key = d.ins_discipline_key - AND sub.ins_srtdeel_key IS NOT NULL - GROUP BY ( - sub.bes_bestelling_key, - d.ins_discipline_omschrijving, - sg.ins_srtgroep_omschrijving, - sd.ins_srtdeel_code, - sd.ins_srtdeel_omschrijving, - sub.aantal, - sub.maat); - CREATE OR REPLACE VIEW dvon_v_rap_voorraad ( srtdeel_key, @@ -2932,18 +4680,22 @@ CREATE OR REPLACE VIEW dvon_v_rap_voorraad ruimtenr ) AS - SELECT - sub.ins_srtdeel_key, - iv.groep, - iv.soort, + SELECT i.ins_srtdeel_key, + ig.ins_srtgroep_omschrijving, + srt.ins_srtdeel_omschrijving, maat.fac_usrdata_omschr, COALESCE (COUNT (maat.fac_usrdata_omschr), 0), - iv.locatie_omschrijving, - iv.gebouw, - iv.verdiepingcode, - iv.ruimtenr - FROM ins_v_udr_deel iv, - (SELECT ins_deel_key, ins_srtdeel_key from ins_deel) sub, + al.alg_locatie_omschrijving, + ag.alg_gebouw_omschrijving, + av.alg_verdieping_volgnr, + ar.alg_ruimte_nr + FROM ins_deel i, + ins_srtdeel srt, + ins_srtgroep ig, + alg_ruimte ar, + alg_locatie al, + alg_gebouw ag, + alg_verdieping av, (SELECT f.fac_usrdata_omschr, iv.ins_deel_key FROM fac_usrdata f, ins_v_srtdeel_kenmerkdeel iv, @@ -2953,51 +4705,60 @@ AS AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND iv.ins_kenmerk_key = ik.ins_kenmerk_key AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat - WHERE iv.deel_key = maat.ins_deel_key(+) + WHERE i.ins_srtdeel_key = srt.ins_srtdeel_key + AND i.ins_alg_ruimte_key = ar.alg_ruimte_key + AND srt.ins_srtgroep_key = ig.ins_srtgroep_key + AND ar.alg_verdieping_key = av.alg_verdieping_key + AND av.alg_gebouw_key = ag.alg_gebouw_key + AND ag.alg_locatie_key = al.alg_locatie_key + AND i.ins_deel_key = maat.ins_deel_key(+) AND maat.fac_usrdata_omschr IS NOT NULL - AND iv.uitgeleend NOT LIKE 'ja' - AND sub.ins_deel_key = iv.deel_key - GROUP BY - sub.ins_srtdeel_key, - maat.fac_usrdata_omschr, - iv.groep, - iv.soort, - iv.locatie_omschrijving, - iv.gebouw, - iv.verdiepingcode, - iv.ruimtenr + AND i.ins_alg_ruimte_key_org IS NULL + GROUP BY i.ins_srtdeel_key, + ig.ins_srtgroep_omschrijving, + srt.ins_srtdeel_omschrijving, + maat.fac_usrdata_omschr, + al.alg_locatie_omschrijving, + ag.alg_gebouw_omschrijving, + av.alg_verdieping_volgnr, + ar.alg_ruimte_nr UNION ALL - SELECT sub.ins_srtdeel_key, - iv.groep, - iv.soort, + SELECT i.ins_srtdeel_key, + ig.ins_srtgroep_omschrijving, + srt.ins_srtdeel_omschrijving, 'NVT', - COUNT (iv.deel_key), - iv.locatie_omschrijving, - iv.gebouw, - iv.verdiepingcode, - iv.ruimtenr - FROM ins_v_udr_deel iv, (SELECT ins_deel_key, ins_srtdeel_key from ins_deel) sub + COUNT (i.ins_deel_key), + al.alg_locatie_omschrijving, + ag.alg_gebouw_omschrijving, + av.alg_verdieping_volgnr, + ar.alg_ruimte_nr + FROM ins_deel i, + ins_srtdeel srt, + ins_srtgroep ig, + alg_ruimte ar, + alg_locatie al, + alg_gebouw ag, + alg_verdieping av WHERE NOT EXISTS (SELECT 1 - FROM ins_kenmerk ik, - ins_srtkenmerk isk, - ins_kenmerkdeel ikd, - ins_srtdeel isd - WHERE isd.ins_srtdeel_code_upper = iv.soortcode - AND iv.deel_key = ikd.ins_deel_key - AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + FROM ins_kenmerk ik, ins_srtkenmerk isk + WHERE i.ins_srtdeel_key = ik.ins_srtinstallatie_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') - AND iv.uitgeleend NOT LIKE 'ja' - AND sub.ins_deel_key = iv.deel_key - GROUP BY - sub.ins_srtdeel_key, - iv.groep, - iv.soort, - iv.locatie_omschrijving, - iv.gebouw, - iv.verdiepingcode, - iv.ruimtenr; + AND i.ins_srtdeel_key = srt.ins_srtdeel_key + AND i.ins_alg_ruimte_key = ar.alg_ruimte_key + AND srt.ins_srtgroep_key = ig.ins_srtgroep_key + AND ar.alg_verdieping_key = av.alg_verdieping_key + AND av.alg_gebouw_key = ag.alg_gebouw_key + AND ag.alg_locatie_key = al.alg_locatie_key + AND i.ins_alg_ruimte_key_org IS NULL + GROUP BY i.ins_srtdeel_key, + ig.ins_srtgroep_omschrijving, + srt.ins_srtdeel_omschrijving, + al.alg_locatie_omschrijving, + ag.alg_gebouw_omschrijving, + av.alg_verdieping_volgnr, + ar.alg_ruimte_nr; CREATE OR REPLACE VIEW dvon_v_rap_voorraad_auth ( @@ -3067,12 +4828,9 @@ AS WHERE NOT EXISTS (SELECT 1 FROM ins_kenmerk ik, - ins_srtkenmerk isk, - ins_kenmerkdeel ikd, - ins_srtdeel isd - WHERE isd.ins_srtdeel_code_upper = iv.soortcode - AND iv.deel_key = ikd.ins_deel_key - AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key + ins_srtkenmerk isk + WHERE + sub.ins_srtdeel_key = ik.ins_srtinstallatie_key AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') AND iv.uitgeleend NOT LIKE 'ja' @@ -3666,6 +5424,310 @@ AS AND pk.prs_kostenplaats_verwijder IS NULL AND pa.prs_afdeling_verwijder IS NULL; + -- t.b.v. de import CATARTIKEL, IN TESTFASE!! +CREATE OR REPLACE VIEW dvon_v_rap_impcatartikel +( + catalogusnaam, + leverancier, + artikelnr, + groep, + omschrijving, + prijs, + eenheid, + picture, + wijzigdagen, + annuleerdagen, + duedate, + minimumvoorraad, + maximumvoorraad, + opmerking, + objectsoortcode, + kenmerksoort, + volgnummer, + verplicht, + kenmerkgroep +) +AS + SELECT DISTINCT + i.ins_discipline_omschrijving, + pb.prs_bedrijf_naam, + b.bes_srtdeel_nr, + bg.bes_srtgroep_omschrijving, + b.bes_srtdeel_omschrijving, + NULL ,--prijs is altijd leeg + b.bes_srtdeel_eenheid, + b.bes_srtdeel_image, + b.bes_srtdeel_wijzigdagen, + b.bes_srtdeel_annuleerdagen, + b.bes_srtdeel_vervaldatum, + b.bes_srtdeel_voorraadmin, + b.bes_srtdeel_voorraadmax, + b.bes_srtdeel_opmerking, + sd.ins_srtdeel_code, + bsk.bes_srtkenmerk_omschrijving, + bk.bes_kenmerk_volgnummer, + bk.bes_kenmerk_verplicht, + bk.bes_kenmerk_groep + FROM + bes_srtdeel b, + bes_srtgroep bg, + bes_kenmerk bk, + bes_srtkenmerk bsk, + prs_bedrijf pb, + bes_discipline i, + ins_srtdeel sd + WHERE + b.prs_bedrijf_key = pb.prs_bedrijf_key + AND b.bes_srtgroep_key = bg.bes_srtgroep_key(+) + AND bg.ins_discipline_key = i.ins_discipline_key(+) + AND b.ins_srtdeel_key = sd.ins_srtdeel_key + AND bk.bes_srtkenmerk_key = bsk.bes_srtkenmerk_key + AND bk.bes_srtinstallatie_key = b.bes_srtdeel_key + AND b.bes_srtdeel_verwijder IS NULL; + +-- Voor het exporteren van bestelde artikelen om later in te lezen via de objectenimport +CREATE OR REPLACE VIEW dvon_v_rap_expbestelling +( + bestelling_key, + disciplineomschrijving, + disciplinekostensoort, + groepsoortomschrijving, + objectsoortcode, + objectsoortomschrijving, + objectidentificatie, + objectopmerking, + reserveerbaar, + eenheid, + prijs, + locatiecode, + gebouwcode, + bouwlaagvolgnummer, + ruimtenummer, + reserveringscope, + catalogusnaam, + cataloguskostensoort, + persoonmatchcode, + persoonmatchwaarde, + ingangsdatum, + vervaldatum, + aantal, + maat, + kenmerk2, + kenmerk3, + kenmerk4, + kenmerk5, + kenmerk6, + kenmerk7, + kenmerk8, + kenmerk9, + kenmerk10, + kenmerk11, + kenmerk12, + kenmerk13, + kenmerk14, + kenmerk15, + kenmerk16, + kenmerk17, + kenmerk18, + kenmerk19, + kenmerk20 +) +AS + SELECT sub.bes_bestelling_key, + d.ins_discipline_omschrijving, + NULL, + sg.ins_srtgroep_omschrijving, + sd.ins_srtdeel_code, + sd.ins_srtdeel_omschrijving, + MAX (I.INS_DEEL_OMSCHRIJVING), + NULL, -- geen opmerking + NULL, -- reserveerbaar is nvt + NULL, -- eenheid is nvt + NULL, -- prijs is nvt + 'DVO-ASSEN3', -- locatiecode + 'DVO-ASS-MA', -- gebouwcode + '0', -- bouwlaag + 'MAGAZIJN', --ruimtenummer + NULL, -- reserveringscope + NULL, -- catalogusnaam + NULL, -- cataloguskostensoort + NULL, -- persoonmatchcode + NULL, -- persoonmatchwaarde + NULL, -- ingangsdatum + NULL, -- vervaldatum + sub.aantal, -- aantal, moet nog omgebogen worden + sub.maat, -- kenmerk 1 + -- en hieronder kenmerk 2 tm 20 + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + FROM ( SELECT b.bes_bestelling_key, + sd.ins_srtdeel_key, + sd.bes_srtdeel_omschrijving productomschrijving, + maat.fac_usrdata_omschr maat, + SUM (bi.bes_bestelling_item_aantal) aantal + FROM bes_bestelling b, + bes_bestelling_item bi, + bes_bestelopdr_item boi, + bes_bestelopdr bo, + bes_kenmerkbesteli bki, + bes_kenmerk bk, + ins_tab_discipline d, + bes_srtdeel sd, + bes_srtgroep sg, + (SELECT f.fac_usrdata_omschr, + f.fac_usrdata_key, + bsk.bes_srtkenmerk_key + FROM fac_usrdata f, bes_srtkenmerk bsk + WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat + WHERE b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_bestelopdr_item_key = + boi.bes_bestelopdr_item_key + AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key + AND bki.bes_bestelling_item_key(+) = + bi.bes_bestelling_item_key + AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+) + AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_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 maat.fac_usrdata_key(+) = + fac.safe_to_number (bki.bes_kenmerkbesteli_waarde) + GROUP BY (b.bes_bestelling_key, + sd.ins_srtdeel_key, + sd.bes_srtdeel_omschrijving, + -- bi.bes_bestelling_item_aantal, + maat.fac_usrdata_omschr)) sub, + ins_tab_discipline d, + ins_deel i, + ins_srtdeel sd, + ins_srtgroep sg + WHERE sub.ins_srtdeel_key = sd.ins_srtdeel_key + AND sd.ins_srtdeel_key = i.ins_srtdeel_key + AND sd.ins_srtgroep_key = sg.ins_srtgroep_key + AND sg.ins_discipline_key = d.ins_discipline_key + AND sub.ins_srtdeel_key IS NOT NULL + GROUP BY (sub.bes_bestelling_key, + d.ins_discipline_omschrijving, + sg.ins_srtgroep_omschrijving, + sd.ins_srtdeel_code, + sd.ins_srtdeel_omschrijving, + sub.aantal, + sub.maat); + +-- Bovenstaande view maar dan in formaat voor import EXTRAINS +CREATE OR REPLACE VIEW dvon_v_expbestelling_data + ( + bestelling_key, + disciplineomschrijving, + disciplinekostensoort, + groepsoortomschrijving, + objectsoortcode, + objectsoortomschrijving, + objectomschrijving, + nummer, + objectopmerking, + reserveerbaar, + eenheid, + prijs, + locatiecode, + gebouwcode, + bouwlaagvolgnummer, + ruimtenummer, + reserveringscope, + catalogusnaam, + cataloguskostensoort, + persoonmatchcode, + persoonmatchwaarde, + maat, + kenmerk2, + kenmerk3, + kenmerk4, + kenmerk5, + kenmerk6, + kenmerk7, + kenmerk8, + kenmerk9, + kenmerk10, + kenmerk11, + kenmerk12, + kenmerk13, + kenmerk14, + kenmerk15, + kenmerk16, + kenmerk17, + kenmerk18, + kenmerk19, + kenmerk20 + ) + AS + SELECT bestelling_key, + disciplineomschrijving, + disciplinekostensoort, + groepsoortomschrijving, + objectsoortcode, + objectsoortomschrijving, + ROWNUM, + objectidentificatie, + objectopmerking, + reserveerbaar, + eenheid, + prijs, + locatiecode, + gebouwcode, + bouwlaagvolgnummer, + ruimtenummer, + reserveringscope, + catalogusnaam, + cataloguskostensoort, + persoonmatchcode, + persoonmatchwaarde, + maat, + kenmerk2, + kenmerk3, + kenmerk4, + kenmerk5, + kenmerk6, + kenmerk7, + kenmerk8, + kenmerk9, + kenmerk10, + kenmerk11, + kenmerk12, + kenmerk13, + kenmerk14, + kenmerk15, + kenmerk16, + kenmerk17, + kenmerk18, + kenmerk19, + kenmerk20 + FROM dvon_v_rap_expbestelling d + CROSS JOIN + ( SELECT ROWNUM n + FROM DUAL + CONNECT BY LEVEL <= + (SELECT MAX (aantal) + FROM dvon_v_rap_expbestelling)) + WHERE n <= aantal +ORDER BY objectsoortcode; + CREATE OR REPLACE VIEW dvon_v_noti_bes_deel ( code, @@ -3709,7 +5771,6 @@ AS FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'DVON_V_NOTI_BES_DEEL'); - ------ payload end ------