-- -- $Id$ -- -- Script containing customer specific db-configuration for VNOG. DEFINE thisfile = 'VNOG.SQL' DEFINE dbuser = '^VNOG' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PROCEDURE vnog_import_bepakkinglijst (p_import_key IN NUMBER) IS c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key); v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (400); v_ins_kenmerk_key1 VARCHAR2 (255); v_ins_kenmerk_key2 VARCHAR2 (255); v_ins_kenmerk_key3 VARCHAR2 (255); v_ins_kenmerk_key4 VARCHAR2 (255); v_ins_kenmerk_key5 VARCHAR2 (255); v_ins_kenmerk_key6 VARCHAR2 (255); v_ins_kenmerk_key7 VARCHAR2 (255); v_ins_kenmerk_key8 VARCHAR2 (255); v_ins_kenmerk_key9 VARCHAR2 (255); v_ins_kenmerk_key10 VARCHAR2 (255); v_ins_kenmerk_key11 VARCHAR2 (255); v_ins_kenmerk_key12 VARCHAR2 (255); v_ins_kenmerk_key13 VARCHAR2 (255); v_ins_kenmerk_key14 VARCHAR2 (255); v_ins_kenmerk_key15 VARCHAR2 (255); v_ins_kenmerk_key16 VARCHAR2 (255); v_ins_kenmerk_key17 VARCHAR2 (255); v_ins_kenmerk_key18 VARCHAR2 (255); v_ins_kenmerk_key19 VARCHAR2 (255); v_ins_kenmerk_key20 VARCHAR2 (255); -- De importvelden v_ins_discipline_omschrijving VARCHAR2 (255); -- C60 v_ins_discipline_kostensoort VARCHAR2 (255); --C60 v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 v_ins_srtdeel_code VARCHAR2 (255); -- C10 v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 v_ins_deel_omschrijving VARCHAR2 (255); -- C60 v_ins_deel_opmerking VARCHAR2 (1000); -- C320 v_reserveerbaar VARCHAR2 (255); -- C1 v_reserveerbaar_n NUMBER (1); -- N1 v_res_deel_eenheid VARCHAR2 (255); -- C10 v_res_deel_prijs VARCHAR2 (255); -- N7,2 v_res_deel_prijs_n NUMBER (7, 2); -- N7,2 v_alg_locatie_code VARCHAR2 (255); -- C10 v_alg_gebouw_code VARCHAR2 (255); -- C12 v_alg_verdieping_volgnr VARCHAR2 (255); -- N3 v_alg_verdieping_volgnr_n NUMBER (3); -- N3 v_alg_ruimte_nr VARCHAR2 (255); -- C20 v_res_deel_alg_level VARCHAR2 (255); -- C1 (naar -1 t/m 5) v_res_deel_alg_level_n NUMBER (1); -- N1 v_res_discipline_type VARCHAR2 (255); -- C60 v_res_discipline_omschrijving VARCHAR2 (255); -- C60 v_res_discipline_kostensoort VARCHAR2 (255); -- C60 v_prs_perslid_matchcode VARCHAR2 (4000); v_prs_perslid_matchwaarde VARCHAR2 (4000); v_ins_srtdeel_omschr_parent VARCHAR2 (255); -- C100 v_ins_deel_omschr_parent VARCHAR2 (255); -- C60 v_ins_kenmerkwaarde1 VARCHAR2 (4053); v_ins_kenmerkwaarde2 VARCHAR2 (4053); v_ins_kenmerkwaarde3 VARCHAR2 (4053); v_ins_kenmerkwaarde4 VARCHAR2 (4053); v_ins_kenmerkwaarde5 VARCHAR2 (4053); v_ins_kenmerkwaarde6 VARCHAR2 (4053); v_ins_kenmerkwaarde7 VARCHAR2 (4053); v_ins_kenmerkwaarde8 VARCHAR2 (4053); v_ins_kenmerkwaarde9 VARCHAR2 (4053); v_ins_kenmerkwaarde10 VARCHAR2 (4053); v_ins_kenmerkwaarde11 VARCHAR2 (4053); v_ins_kenmerkwaarde12 VARCHAR2 (4053); v_ins_kenmerkwaarde13 VARCHAR2 (4053); v_ins_kenmerkwaarde14 VARCHAR2 (4053); v_ins_kenmerkwaarde15 VARCHAR2 (4053); v_ins_kenmerkwaarde16 VARCHAR2 (4053); v_ins_kenmerkwaarde17 VARCHAR2 (4053); v_ins_kenmerkwaarde18 VARCHAR2 (4053); v_ins_kenmerkwaarde19 VARCHAR2 (4053); v_ins_kenmerkwaarde20 VARCHAR2 (4053); v_ins_deel_aanmaak VARCHAR2 (255); -- DATE v_ins_deel_aanmaak_d DATE; v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE v_ins_deel_vervaldatum_d DATE; v_ins_deel_aantal VARCHAR2 (255); -- N8,2 v_ins_deel_aantal_n NUMBER(8, 2); v_ins_deel_externnr VARCHAR2 (400); v_file_index NUMBER; -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; CURSOR imp_ins IS SELECT * FROM fac_imp_ins; CURSOR loc_ins IS SELECT i.ins_deel_key deel_key, i.ins_srtdeel_upper psrt_deel, i.ins_deel_omschrijving pdeel, l.alg_locatie_code locatie, i.alg_gebouw_code gebouw, i.alg_verdieping_code verdieping, i.alg_ruimte_nr ruimte FROM ins_v_deel_gegevens i, alg_locatie l WHERE i.alg_locatie_key = l.alg_locatie_key AND i.ins_discipline_key = 561; CURSOR image_ins IS SELECT s.ins_srtdeel_omschrijving srtdeel, MAX (i.ins_deel_image) image FROM ins_deel i, ins_srtdeel s, fac_imp_ins f WHERE i.ins_srtdeel_key = s.ins_srtdeel_key AND s.ins_srtdeel_omschrijving = f.ins_srtdeel_omschrijving AND s.ins_srtdeel_verwijder IS NULL GROUP BY (s.ins_srtdeel_omschrijving); CURSOR opm_ins IS SELECT f.ins_deel_omschrijving deel, i.ins_deel_omschrijving opmerking FROM fac_imp_ins f, ins_deel i WHERE fac.safe_to_number (f.ins_kenmerkwaarde19) = i.ins_deel_key; -- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key. -- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk. -- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk. -- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen. -- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende -- object-discipline/groep/soort, volgt pas tijdens de update-fase)! -- -- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten -- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3 -- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep) FUNCTION bepaal_kenmerk (p_kw IN VARCHAR) RETURN VARCHAR IS v_kenmerk_key NUMBER; v_kenmerk_groep NUMBER; v_kw VARCHAR(250); BEGIN v_kenmerk_groep := 0; v_kw := p_kw; IF INSTR (v_kw, '|') > 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT MIN(k.ins_kenmerk_key) INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND k.ins_kenmerk_key = fac.safe_to_number (v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V'); END IF; IF v_kenmerk_key IS NULL THEN RETURN NULL; ELSE -- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw) RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; BEGIN -- Eerst opruiming DELETE FROM fac_imp_ins; COMMIT; v_count_tot := 0; v_count_import := 0; header_is_valid := 0; v_prs_perslid_matchcode := ''; 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_kenmerkwaarde1); fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); 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_kenmerkwaarde7); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); 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); v_aanduiding := '[' || v_ins_discipline_omschrijving || '|' || v_ins_srtgroep_omschrijving || '|' || v_ins_srtdeel_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) = 'DISCIPLINE' AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEP' AND UPPER (v_ins_srtdeel_omschrijving) = 'OMSCHRIJVING' AND UPPER (v_ins_deel_aantal) = 'AANTAL OP TS ' THEN v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1); v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2); v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3); v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4); v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5); v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6); v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7); v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8); v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9); v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10); v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11); v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12); v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13); v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14); v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15); 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 := '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 := '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 := 'Aantal ongeldig; maximale grootte 999999.99'; v_ins_deel_aantal := TRIM (v_ins_deel_aantal); v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.'); v_ins_deel_aantal_n := NULL; IF v_ins_deel_aantal IS NOT NULL THEN IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal); END IF; ELSE v_ins_deel_aantal_n := 1; END IF; -- v_errorhint := 'Ongeldige aanmaakdatum'; IF v_ins_deel_aanmaak IS NOT NULL THEN BEGIN v_ins_deel_aanmaak_d := TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy'); EXCEPTION WHEN OTHERS THEN v_ongeldig := 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!' ); COMMIT; END; ELSE v_ins_deel_aanmaak_d := NULL; END IF; -- De rest alleen ff trimmen. 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); -- 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_type, res_discipline_omschrijving, res_discipline_kostensoort, prs_perslid_matchcode, prs_perslid_matchwaarde, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20, ins_deel_aanmaak, ins_deel_vervaldatum, ins_deel_aantal, ins_deel_externnr, ins_srtdeel_omschr_parent, ins_deel_omschr_parent ) VALUES ( v_ins_discipline_omschrijving, v_ins_discipline_kostensoort, v_ins_srtgroep_omschrijving, v_ins_srtdeel_code, v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_ins_deel_opmerking, v_reserveerbaar_n, v_res_deel_eenheid, v_res_deel_prijs_n, v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr_n, v_alg_ruimte_nr, v_res_deel_alg_level_n, v_res_discipline_type, v_res_discipline_omschrijving, v_res_discipline_kostensoort, v_prs_perslid_matchcode, v_prs_perslid_matchwaarde, DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)), DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)), DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)), DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)), DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)), DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)), DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)), DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)), DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)), DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)), DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)), DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)), DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)), DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)), DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)), DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)), DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)), DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)), DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)), DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)), v_ins_deel_aanmaak_d, v_ins_deel_vervaldatum_d, v_ins_deel_aantal_n, v_ins_deel_externnr, v_ins_srtdeel_omschr_parent, v_ins_deel_omschr_parent ); COMMIT; v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!'); ELSE fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; -- En dan nu de mutatie acties op fac_imp_ins v_ins_srtdeel_code := 'INV'; UPDATE fac_imp_ins SET ins_srtdeel_code = v_ins_srtdeel_code WHERE ins_srtdeel_code IS NULL; COMMIT; UPDATE fac_imp_ins SET ins_kenmerkwaarde20 = ROWNUM; COMMIT; v_count_tot := fac.safe_to_number(substr(ins.nextdescription ('INV', NULL, 'default'), 4)); FOR rec IN imp_ins LOOP BEGIN v_ins_deel_omschrijving := v_ins_srtdeel_code || to_char (v_count_tot); UPDATE fac_imp_ins SET ins_deel_omschrijving = v_ins_deel_omschrijving WHERE ins_kenmerkwaarde20 = rec.ins_kenmerkwaarde20; UPDATE fac_imp_ins SET ins_kenmerkwaarde19 = (select max(i.ins_deel_key) from ins_deel i, fac_imp_ins f where i.ins_deel_omschrijving = f.ins_kenmerkwaarde5 and i.ins_deel_verwijder IS NULL and i.ins_discipline_key = 561) WHERE ins_kenmerkwaarde20 = rec.ins_kenmerkwaarde20; v_count_tot := v_count_tot + 1; END; END LOOP; COMMIT; FOR rec IN loc_ins LOOP BEGIN UPDATE fac_imp_ins SET alg_locatie_code = rec.locatie, alg_gebouw_code = rec.gebouw, alg_verdieping_volgnr = rec.verdieping, alg_ruimte_nr = rec.ruimte, ins_srtdeel_omschr_parent = rec.psrt_deel, -- parent (onderdeel van) ins_deel_omschr_parent = rec.pdeel -- parentdeel WHERE ins_kenmerkwaarde19 = rec.deel_key; END; END LOOP; COMMIT; FOR rec IN image_ins LOOP BEGIN UPDATE fac_imp_ins SET ins_kenmerkwaarde18 = rec.image WHERE UPPER(ins_srtdeel_omschrijving) = UPPER(rec.srtdeel); END; END LOOP; COMMIT; FOR rec IN opm_ins LOOP BEGIN UPDATE fac_imp_ins SET ins_deel_opmerking = rec.opmerking WHERE UPPER(ins_deel_omschrijving) = UPPER(rec.deel); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; 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 vnog_import_bepakkinglijst; / CREATE OR REPLACE PROCEDURE vnog_update_bepakkinglijst (p_import_key IN NUMBER) AS -- Gerelateerd maken van ingelezen items aan voertuig. CURSOR imp_ins IS SELECT i.ins_deel_key asset, f.ins_kenmerkwaarde18 image FROM ins_deel i, fac_imp_ins f WHERE i.ins_deel_omschrijving = f.ins_deel_omschrijving AND i.ins_deel_verwijder IS NULL; -- Kenmerken Beheergroep en Eigenaar overnemen van voertuig. CURSOR kenmerk_ins IS SELECT i.ins_deel_key, DECODE (ikd.ins_kenmerk_key, 342, 341, 382, 381) kkey, ikd.ins_kenmerkdeel_waarde waarde FROM ins_deel i, ins_kenmerkdeel ikd, fac_imp_ins f WHERE ikd.ins_deel_key = fac.safe_to_number (f.ins_kenmerkwaarde19) AND i.ins_deel_omschrijving = f.ins_deel_omschrijving AND ikd.ins_kenmerk_key IN (382, 342) -- Beheergroep, eigenaar AND i.ins_deel_verwijder IS NULL ; BEGIN -- Eerst de objecten verwerken op de normale manier fac_update_ins (p_import_key); -- Dan de zojuist aangemaakte objecten voorzien van een afbeelding. FOR rec IN imp_ins LOOP BEGIN UPDATE ins_deel SET ins_deel_image = rec.image WHERE ins_deel_key = rec.asset; END; END LOOP; FOR rec IN kenmerk_ins LOOP BEGIN INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde, ins_kenmerkdeel_aanmaak) VALUES (rec.ins_deel_key, rec.kkey, rec.waarde, sysdate); END; END LOOP; END vnog_update_bepakkinglijst; / CREATE OR REPLACE PROCEDURE vnog_pre_putorders AS -- VNOG#87348 -- Proces 1: Gefiatteerde reserveringen versturen naar de cateraar CURSOR c1 IS SELECT rr.res_rsv_ruimte_key rkey, MAX (f.fac_tracking_datum) fiatdate, rr.res_rsv_ruimte_van resdate FROM fac_tracking f, res_rsv_ruimte rr, res_rsv_artikel ra WHERE f.fac_srtnotificatie_key = 128 -- RESFOK AND f.fac_tracking_refkey = rr.res_rsv_ruimte_key AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key -- er is catering AND rr.res_rsv_ruimte_verwijder IS NULL -- niet verwijderd AND rr.res_rsv_ruimte_verzonden IS NULL -- nog niet verzonden AND rr.res_rsv_ruimte_van > sysdate GROUP BY rr.res_rsv_ruimte_key, rr.res_rsv_ruimte_van; -- Nog een keer sturen wanneer er geherfiatteerd is CURSOR c2 IS SELECT rr.res_rsv_ruimte_key rkey, MAX (f.fac_tracking_datum) fiatdate, rr.res_rsv_ruimte_van resdate FROM fac_tracking f, res_rsv_ruimte rr, res_rsv_artikel ra WHERE f.fac_srtnotificatie_key = 128 -- RESFOK AND f.fac_tracking_refkey = rr.res_rsv_ruimte_key AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key -- er is catering AND rr.res_rsv_ruimte_verzonden IS NOT NULL -- al eens verzonden AND rr.res_rsv_ruimte_verzonden < f.fac_tracking_datum -- er is fiat tracking na de eerste verzend actie AND rr.res_rsv_ruimte_van > sysdate GROUP BY rr.res_rsv_ruimte_key, rr.res_rsv_ruimte_van; BEGIN FOR rec IN c1 LOOP BEGIN fac.trackaction('RESSND', rec.rkey, NULL, NULL, NULL); END; END LOOP; FOR rec IN c2 LOOP BEGIN fac.trackaction('RESSND', rec.rkey, NULL, NULL, NULL); END; END LOOP; -- VNOG#83941 ORDUPD ontdubbelen -- Proces 2: Dubbele ORDUPD notificaties afvangen DELETE FROM fac_notificatie fn1 WHERE fn1.fac_srtnotificatie_key = 80 --ORDUPD AND EXISTS -- er is een nieuwere (SELECT 1 FROM fac_notificatie fn2 WHERE fn1.fac_notificatie_refkey = fn2.fac_notificatie_refkey AND fn2.fac_srtnotificatie_key = 80 AND fn2.fac_notificatie_key > fn1.fac_notificatie_key); END; / -- QR-code rapportage (objecten / meldingen). CREATE OR REPLACE VIEW vnog_v_rap_qrc AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, o.alg_plaatsaanduiding fclt_f_plaats, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, i.ins_deel_key, s.ins_srtdeel_key, o.alg_gebouw_code, o.alg_verdieping_code, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, b.fac_bookmark_id hide_f_bookmark_id FROM fac_bookmark b, ins_deel i, ins_srtdeel s, ins_srtgroep g, ins_discipline d, ins_v_alg_overzicht o, alg_locatie l WHERE b.fac_bookmark_naam = 'QRC_MELDING' AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE) AND i.ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND i.ins_srtdeel_key = s.ins_srtdeel_key AND s.ins_srtgroep_key = g.ins_srtgroep_key AND g.ins_discipline_key = d.ins_discipline_key AND i.ins_alg_ruimte_type = o.alg_onroerendgoed_type AND i.ins_alg_ruimte_key = o.alg_onroerendgoed_keys AND i.ins_alg_ruimte_type IN ('T', 'R', 'W') AND i.ins_alg_locatie_key = o.alg_locatie_key AND i.ins_alg_locatie_key = l.alg_locatie_key; -- QRCode rapportage voor objecten generiek CREATE OR REPLACE VIEW vnog_v_rap_qr_deel AS SELECT fac_bookmark_naam, fac_bookmark_id, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_deel_omschrijving, alg_locatie_key, alg_gebouw_omschrijving, ins_deel_aanmaak, ins_deel_key FROM fac_bookmark b, ins_v_deel_gegevens d WHERE fac_bookmark_expire IS NULL AND UPPER (fac_bookmark_path) = 'APPL/PDA/INS_DEEL.ASP'; CREATE OR REPLACE VIEW VNOG_V_RAP_ML_OBJ_KOSTEN AS SELECT l.alg_locatie_code locatie_code, l.alg_locatie_omschrijving locatie_naam, COALESCE (aog.alg_gebouw_code, aog.alg_terreinsector_code) gebouw_code, COALESCE (aog.alg_gebouw_naam, aog.alg_terreinsector_naam) gebouw_naam, od.ins_discipline_omschrijving objectdiscipline, sg.ins_srtgroep_omschrijving objectgroep, sd.ins_srtdeel_omschrijving objectsoort, d.ins_deel_key, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, 1, INSTR (d.ins_deel_omschrijving || '/', '/') - 1), NULL)) roepnr, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving || '/', '/') + 1), NULL)) kenteken, d.ins_deel_omschrijving identificatie, m.mld_melding_key melding_key, fac.gettrackingdate ('MLDNEW', m.mld_melding_key) melding_aanmaak, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) melding_nr, --o.mld_opdr_key verpl_key, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) verpl_aanmaak, DECODE (o.mld_opdr_key, NULL, NULL, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)) verpl_nr, os.mld_statusopdr_omschrijving verpl_status, u.prs_bedrijf_naam leverancier, f.fin_factuur_nr fact_nr, fr.fin_factuurregel_omschrijving fact_oms, fs.fin_factuur_statuses_omschr fact_status, (f.fin_factuur_totaal / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) excl_btw, (f.fin_factuur_totaal_btw / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) btw, ((COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) incl_btw, b.fac_bijlagen_key, --b.fac_bijlagen_aanmaak, DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename) fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (ivm. insuffficient memory) DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (LENGTH (TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename))) check_lengte FROM mld_melding_object mo, ins_v_aanwezigdeel d, --ins_deelkoppeling dkn, --ins_deel dv, --ins_srtdeel sdv, --ins_srtgroep sgv, --(SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) odv, -- M+L ins_srtdeel sd, ins_srtgroep sg, (SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) od, -- M+L alg_v_allonrgoed_gegevens aog, alg_locatie l, mld_melding m, ( SELECT mld_melding_key, COUNT (*) aantal FROM mld_melding_object GROUP BY mld_melding_key) m2o, -- Aantal om kosten evenredig te verdelen over gekoppelde objecten! mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, (SELECT * FROM mld_opdr WHERE mld_typeopdr_key != 781) o, -- Alle opdrachten behalve Offerteaanvraag! mld_statusopdr os, prs_bedrijf u, fin_factuur f, (SELECT fin_factuur_key, MIN (fin_factuurregel_omschrijving) fin_factuurregel_omschrijving FROM fin_factuurregel GROUP BY fin_factuur_key) fr, fin_factuur_statuses fs, (SELECT * FROM fac_v_bijlagen WHERE fac_bijlagen_verwijder IS NULL AND fac_bijlagen_module = 'FIN') b WHERE mo.ins_deel_key = d.ins_deel_key --AND d.ins_deel_key = dkn.ins_deelkoppeling_naar_key(+) --AND dkn.ins_deelkoppeling_van_key = dv.ins_deel_key(+) --AND dv.ins_srtdeel_key = sdv.ins_srtdeel_key(+) --AND sdv.ins_srtgroep_key = sgv.ins_srtgroep_key(+) --AND sgv.ins_discipline_key = odv.ins_discipline_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = od.ins_discipline_key AND d.ins_alg_ruimte_type IN ('R', 'T') AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys(+) AND aog.alg_locatie_key = l.alg_locatie_key(+) AND mo.mld_melding_key = m.mld_melding_key AND m.mld_melding_key = m2o.mld_melding_key(+) AND m.mld_meldbron_nr IS NULL -- Niet gemigreerd uit TOPdesk AND m.mld_melding_key > 15795 -- Niet gemigreerd uit Axxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = o.mld_melding_key(+) AND o.mld_statusopdr_key = os.mld_statusopdr_key(+) AND o.mld_uitvoerende_keys = u.prs_bedrijf_key(+) AND o.mld_opdr_key = f.mld_opdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+) AND f.fin_factuur_key = b.fac_bijlagen_refkey(+) UNION ALL SELECT l.alg_locatie_code locatie_code, l.alg_locatie_omschrijving locatie_naam, COALESCE (aog.alg_gebouw_code, aog.alg_terreinsector_code) gebouw_code, COALESCE (aog.alg_gebouw_naam, aog.alg_terreinsector_naam) gebouw_naam, od.ins_discipline_omschrijving objectdiscipline, sg.ins_srtgroep_omschrijving objectgroep, sd.ins_srtdeel_omschrijving objectsoort, d.ins_deel_key, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, 1, INSTR (d.ins_deel_omschrijving || '/', '/') - 1), NULL)) roepnr, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving || '/', '/') + 1), NULL)) kenteken, d.ins_deel_omschrijving identificatie, m.mld_melding_key melding_key, fac.gettrackingdate ('MLDNEW', m.mld_melding_key) melding_aanmaak, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) melding_nr, --bo.bes_bestelopdr_key verpl_key, fac.gettrackingdate ('BES2NE', bo.bes_bestelopdr_key) verpl_aanmaak, DECODE (bo.bes_bestelopdr_key, NULL, NULL, 'B' || COALESCE (bo.bes_bestelopdr_id, TO_CHAR (b.bes_bestelling_key))) verpl_nr, bos.bes_bestelopdrstatuses_omschr verpl_status, COALESCE (l2.prs_bedrijf_naam, l1.prs_bedrijf_naam) leverancier, f.fin_factuur_nr fact_nr, fr.fin_factuurregel_omschrijving fact_oms, fs.fin_factuur_statuses_omschr fact_status, (f.fin_factuur_totaal / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) excl_btw, (f.fin_factuur_totaal_btw / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) btw, ((COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) incl_btw, b.fac_bijlagen_key, --b.fac_bijlagen_aanmaak, DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename) fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (ivm. insuffficient memory) DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (LENGTH (TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename))) check_lengte FROM mld_melding_object mo, ins_v_aanwezigdeel d, --ins_deelkoppeling dkn, --ins_deel dv, --ins_srtdeel sdv, --ins_srtgroep sgv, --(SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) odv, -- M+L ins_srtdeel sd, ins_srtgroep sg, (SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) od, -- M+L alg_v_allonrgoed_gegevens aog, alg_locatie l, mld_melding m, ( SELECT mld_melding_key, COUNT (*) aantal FROM mld_melding_object GROUP BY mld_melding_key) m2o, -- Aantal om kosten evenredig te verdelen over gekoppelde objecten! mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_bestelopdrstatuses bos, prs_bedrijf l1, (SELECT * FROM bes_kenmerkbesteli kbi, bes_kenmerk k WHERE kbi.bes_kenmerkbesteli_verwijder IS NULL AND kbi.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = 1) bik, -- Leverancier prs_bedrijf l2, fin_factuur f, (SELECT fin_factuur_key, MIN (fin_factuurregel_omschrijving) fin_factuurregel_omschrijving FROM fin_factuurregel GROUP BY fin_factuur_key) fr, fin_factuur_statuses fs, (SELECT * FROM fac_v_bijlagen WHERE fac_bijlagen_verwijder IS NULL AND fac_bijlagen_module = 'FIN') b WHERE mo.ins_deel_key = d.ins_deel_key --AND d.ins_deel_key = dkn.ins_deelkoppeling_naar_key(+) --AND dkn.ins_deelkoppeling_van_key = dv.ins_deel_key(+) --AND dv.ins_srtdeel_key = sdv.ins_srtdeel_key(+) --AND sdv.ins_srtgroep_key = sgv.ins_srtgroep_key(+) --AND sgv.ins_discipline_key = odv.ins_discipline_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = od.ins_discipline_key AND d.ins_alg_ruimte_type IN ('R', 'T') AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys(+) AND aog.alg_locatie_key = l.alg_locatie_key(+) AND mo.mld_melding_key = m.mld_melding_key AND m.mld_melding_key = m2o.mld_melding_key(+) AND m.mld_meldbron_nr IS NULL -- Niet gemigreerd uit TOPdesk AND m.mld_melding_key > 15795 -- Niet gemigreerd uit Axxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = b.mld_melding_key(+) AND 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 bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+) AND bo.prs_bedrijf_key = l1.prs_bedrijf_key(+) AND bi.bes_bestelling_item_key = bik.bes_bestelling_item_key(+) AND fac.safe_to_number (bik.bes_kenmerkbesteli_waarde) = l2.prs_bedrijf_key(+) AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+) AND f.fin_factuur_key = b.fac_bijlagen_refkey(+); /* CREATE OR REPLACE VIEW VNOG_V_NOTI_RESREMINDER ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XEMAIL, XMOBILE, FAC_SRTNOTIFICATIE_KEY, ATTACHMENTS, XSENDER, PRS_BEDRIJFADRES_KEY ) AS SELECT 'RESINF', NULL, rsvr.res_rsv_ruimte_contact_key, 'Reservering ' || rsvr.res_reservering_key || ': U heeft op ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM') || ' van ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI') || ' tot ' || TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI') || ' ruimte ' || r.res_ruimte_nr || ' gereserveerd.', rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_ruimte_opstelling opst, res_ruimte r, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_rsv_ruimte_van >= SYSDATE AND rsvr.res_status_fo_key <= 5 --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_ruimte_opstel_key = opst.res_ruimte_opstel_key AND opst.res_ruimte_key = r.res_ruimte_key AND r.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN') UNION ALL SELECT 'RESINF', NULL, res_rsv_ruimte_contact_key, 'Reservering ' || res_reservering_key || ': U heeft op ' || TO_CHAR (MIN (van), 'dd-mm') || DECODE ( MIN (van), MAX (tot), ' om ' || TO_CHAR (MIN (van), 'hh24:mi'), ' van ' || TO_CHAR (MIN (van), 'hh24:mi') || ' tot ' || TO_CHAR (MAX (tot), 'hh24:mi')) || ' in ruimte (' || (SELECT alg_gebouw_code || '-' || alg_verdieping_code || '-' || alg_ruimte_nr FROM alg_v_onroerendgoed_gegevens arg WHERE arg.alg_ruimte_key = ruimte_key) || ') ' || COUNT (res_reservering_key) || ' voorziening(en) gereserveerd.', res_reservering_key, res_rsv_ruimte_key, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM (SELECT rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, rsvr.res_rsv_ruimte_contact_key, rsva.res_rsv_artikel_levering van, rsva.res_rsv_artikel_levering tot, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_rsv_artikel rsva, res_artikel ra, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_status_fo_key <= 5 AND rsvr.res_ruimte_opstel_key IS NULL --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_rsv_ruimte_key = rsva.res_rsv_ruimte_key AND rsva.res_rsv_artikel_verwijder IS NULL AND rsva.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsva.res_rsv_artikel_levering >= SYSDATE AND rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN') UNION ALL SELECT rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, rsvr.res_rsv_ruimte_contact_key, rsvd.res_rsv_deel_van van, rsvd.res_rsv_deel_tot tot, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_rsv_deel rsvd, res_deel rd, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_status_fo_key <= 5 AND rsvr.res_ruimte_opstel_key IS NULL --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_rsv_ruimte_key = rsvd.res_rsv_ruimte_key AND rsvd.res_rsv_deel_verwijder IS NULL AND rsvd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsvd.res_rsv_deel_van >= SYSDATE AND rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN')) GROUP BY res_rsv_ruimte_contact_key, res_reservering_key, res_rsv_ruimte_key, ruimte_key; */ CREATE OR REPLACE VIEW VNOG_V_NOTI_INHUUR ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, DECODE (sn.fac_srtnotificatie_code, 'CUST01', 'inkoop@vnog.nl', 'CUST02', 'financien-beleid@vnog.nl', 'personeelsadministratie@vnog.nl') -- CUST03 xemail, NULL xmobile, NULL attachments FROM fac_tracking t, mld_melding m, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 52 -- MLDNEW AND t.fac_tracking_refkey = m.mld_melding_key AND m.mld_stdmelding_key = 949 -- Goedkeuringsaanvraag inhuur[A=946] AND sn.fac_srtnotificatie_code IN ('CUST01', 'CUST02', 'CUST03') AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_INHUUR' AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL attachments FROM fac_tracking t, mld_melding m, (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 555) kmgi, -- Goedkeuring Inkoop J/N[A=819] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 565) kmgf, -- Goedkeuring Financiën J/N[A=820] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 581) kmgh, -- Goedkeuring HRM J/N[A=821] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 537) kmp, -- Persoonsgegevens bekend J/N[A=827] prs_v_aanwezigperslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 55 -- MLDUPD AND t.fac_tracking_refkey = m.mld_melding_key AND m.mld_stdmelding_key = 949 -- Goedkeuringsaanvraag inhuur[A=946] AND m.mld_melding_key = kmgi.mld_melding_key AND kmgi.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgf.mld_melding_key AND kmgf.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgh.mld_melding_key AND kmgh.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmp.mld_melding_key AND kmp.mld_kenmerkmelding_waarde = '2' -- Nee AND m.prs_perslid_key_voor = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST04' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_INHUUR' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun AND GREATEST (kmgi.mld_kenmerkmelding_aanmaak, kmgf.mld_kenmerkmelding_aanmaak, kmgh.mld_kenmerkmelding_aanmaak) > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) ; -- Notificatie bij het aanmaken van een GMO melding CREATE OR REPLACE VIEW VNOG_V_NOTI_GMO ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT sn.fac_srtnotificatie_code, NULL, m.prs_perslid_key, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, NULL, NULL xmobile, NULL attachments FROM mld_melding m, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key = 951 -- GMO AND m.mld_melding_datum > nj.fac_notificatie_job_lastrun AND sn.fac_srtnotificatie_code = 'CUST06' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_GMO'; CREATE OR REPLACE VIEW VNOG_V_NOTI_CATCHANGE ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, 'Gefiatteerde reservering met catering ' || rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr || ' is verwijderd' text, rr.res_reservering_key, rr.res_rsv_ruimte_key, NULL, 'servicedesk@vnog.nl', NULL xmobile, NULL attachments FROM fac_tracking f, res_rsv_ruimte rr, fac_srtnotificatie sn, fac_notificatie_job nj WHERE f.fac_srtnotificatie_key = 128 -- RESFOK AND f.fac_tracking_refkey = rr.res_rsv_ruimte_key AND rr.res_rsv_ruimte_van > sysdate AND rr.res_rsv_ruimte_verwijder > f.fac_tracking_datum -- verwijderd na fiat AND rr.res_rsv_ruimte_verwijder > nj.fac_notificatie_job_lastrun AND sn.fac_srtnotificatie_code = 'CUST07' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_CATCHANGE'; CREATE OR REPLACE PACKAGE VNOG AS PROCEDURE afmelden_mld; PROCEDURE afmelden_ord; PROCEDURE verstuur_gmo; PROCEDURE post_helloid; FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE; END; / CREATE OR REPLACE PACKAGE BODY VNOG AS FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE AS v_startdatum DATE; BEGIN IF (p_startdatum0) THEN v_startdatum := ADD_MONTHS(p_startdatum, p_cyclus*12); IF (v_startdatum 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT MIN(k.ins_kenmerk_key) INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND k.ins_kenmerk_key = fac.safe_to_number (v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; IF v_kenmerk_key IS NULL THEN RETURN NULL; ELSE -- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw) RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; BEGIN -- Eerst opruiming DELETE FROM fac_imp_ins; COMMIT; v_count_tot := 0; v_count_import := 0; header_is_valid := 0; 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_oprognose_gebouw_code); -- Objectcode fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code); -- Componentcode fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr); -- Element-ID fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking); -- Component omschrijving -- fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); -- Opmerkingen// fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); -- Fabrikant fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); -- Kenmerken fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); -- Type fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); -- Cap fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); -- Eenheid Cap fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); -- Aantal fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); -- Eenheid aantal fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8); -- Bouwjaar fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9); -- Foto 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_alg_gebouw_code || '|' || v_ins_deel_externnr || '|' || v_ins_srtdeel_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_oprognose_gebouw_code) = 'GEBOUW_CODE' AND UPPER (v_ins_srtdeel_code) = 'SRTDEEL_CODE' AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR' AND UPPER (v_ins_deel_opmerking) = 'DEEL_OPMERKING' AND UPPER (v_ins_kenmerkwaarde2) = 'FABRIKANT' AND UPPER (v_ins_kenmerkwaarde3) = 'OPMERKINGEN' AND UPPER (v_ins_kenmerkwaarde4) = 'TYPE' AND UPPER (v_ins_kenmerkwaarde5) = 'CAP' AND UPPER (v_ins_kenmerkwaarde6) = 'EENHEID CAP' AND UPPER (v_ins_deel_aantal) = 'DEEL_AANTAL' AND UPPER (v_ins_kenmerkwaarde7) = 'EENHEID AANTAL' AND UPPER (v_ins_kenmerkwaarde8) = 'BOUWJAAR' AND UPPER (v_ins_kenmerkwaarde9) = 'FOTO' THEN v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1); v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2); v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3); v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4); v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5); v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6); v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7); v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8); v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9); v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10); v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11); v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12); v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13); v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14); v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15); v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16); v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17); v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18); v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19); v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20); header_is_valid := 1; ELSE IF rec1.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldige header aangetroffen:', 'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) || 'SRTDEEL_CODE: ' || UPPER (v_ins_srtdeel_code) || CHR(10) || 'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) || 'DEEL_OPMERKING: ' || UPPER (v_ins_deel_opmerking) || CHR(10) || 'FABRIKANT: ' || UPPER (v_ins_kenmerkwaarde2) || CHR(10) || 'OPMERKINGEN: ' || UPPER (v_ins_kenmerkwaarde3) || CHR(10) || 'TYPE: ' || UPPER (v_ins_kenmerkwaarde4) || CHR(10) || 'CAP: ' || UPPER (v_ins_kenmerkwaarde5) || CHR(10) || 'EENHEID CAP: ' || UPPER (v_ins_kenmerkwaarde6) || CHR(10) || 'DEEL_AANTAL: ' || UPPER (v_ins_deel_aantal) || CHR(10) || 'EENHEID AANTAL: ' || UPPER (v_ins_kenmerkwaarde7) || CHR(10) || 'BOUWJAAR: ' || UPPER (v_ins_kenmerkwaarde8) || CHR(10) || 'FOTO: ' || UPPER (v_ins_kenmerkwaarde9)); END IF; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Gebouwcode kan niet gevonden worden'; v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code); SELECT alg_gebouw_key, alg_gebouw_code, alg_locatie_code INTO v_alg_gebouw_key, v_alg_gebouw_code, v_alg_locatie_code FROM alg_gebouw g, alg_locatie l, alg_onrgoedkenmerk aok, alg_kenmerk ak WHERE g.alg_locatie_key = l.alg_locatie_key AND alg_gebouw_verwijder IS NULL AND aok.alg_onrgoed_key = g.alg_gebouw_key AND aok.alg_onrgoed_niveau='G' AND ak.alg_kenmerk_key = aok.alg_kenmerk_key AND ak.alg_kenmerk_code='OPROGNOSE_CODE' AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code); v_alg_verdieping_volgnr := 0; BEGIN 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 alg_verdieping_volgnr = 0; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_volgnr, alg_verdieping_omschrijving, alg_verdieping_code) VALUES (v_alg_gebouw_key, 0, 'Begane grond', '0') RETURNING alg_verdieping_key INTO v_alg_verdieping_key; fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Verdieping aangemaakt'); END; v_alg_ruimte_nr := '_'; BEGIN 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 alg_ruimte_nr = '_'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_ruimte_omschrijving) VALUES (v_alg_verdieping_key, '_', 'MJOP ruimte') RETURNING alg_ruimte_key INTO v_alg_ruimte_key; fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Ruimte aangemaakt'); END; -- v_errormsg := 'Bepaal objectsoort'; BEGIN v_ins_srtdeel_code := TRIM(v_ins_srtdeel_code); SELECT ins_srtdeel_omschrijving, ins_srtdeel_key, ins_srtgroep_key INTO v_ins_srtdeel_omschrijving, v_ins_srtdeel_key, v_ins_srtgroep_key FROM ins_srtdeel WHERE ins_srtdeel_verwijder IS NULL AND ins_srtdeel_code = SUBSTR(v_ins_srtdeel_code,1,4); v_errormsg := 'Bepaal objectgroep'; SELECT ins_srtgroep_omschrijving, ins_discipline_key INTO v_ins_srtgroep_omschrijving, v_ins_discipline_key FROM ins_srtgroep WHERE ins_srtgroep_key = v_ins_srtgroep_key; v_errormsg := 'Bepaal discipline'; SELECT ins_discipline_omschrijving INTO v_ins_discipline_omschrijving FROM ins_discipline WHERE ins_discipline_key = v_ins_discipline_key; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Nieuwe NL/SfB code'; v_ins_discipline_omschrijving := 'MJOB'; v_ins_srtdeel_omschrijving := SUBSTR(v_ins_srtdeel_code,1,4) || '-Onbekend'; BEGIN SELECT ins_srtgroep_omschrijving INTO v_ins_srtgroep_omschrijving FROM ins_v_srtgroep_gegevens WHERE ins_discipline_omschrijving = 'MJOB' AND SUBSTR(v_ins_srtdeel_code, 1, 2) = SUBSTR(ins_srtgroep_omschrijving, 1,2); EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_srtgroep_omschrijving := SUBSTR(v_ins_srtdeel_code, 1, 2) || '-Onbekend'; END; END; BEGIN v_errormsg := 'Bepaal object id - Kijk of het externnr bestaat'; SELECT d.ins_deel_omschrijving INTO v_ins_deel_omschrijving FROM ins_v_deel_gegevens dg, ins_deel d WHERE dg.ins_deel_key = d.ins_deel_key AND dg.alg_gebouw_upper = v_alg_gebouw_code AND d.ins_deel_externnr = v_ins_deel_externnr; EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_deel_omschrijving := NULL; END; IF v_ins_deel_omschrijving IS NULL THEN v_errormsg := 'Bepaal object id - maak een nieuw nummer aan'; SELECT MAX(FAC.safe_to_number(SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, 100))) INTO v_ins_deel_volgnr FROM ins_v_deel_gegevens WHERE ins_discipline_omschrijving = 'MJOB' AND ins_deel_omschrijving LIKE v_ins_srtdeel_code || '%'; IF v_ins_deel_volgnr IS NULL THEN v_ins_deel_volgnr := 0; END IF; -- v_ins_deel_omschrijving := v_ins_srtdeel_code || LPAD(v_ins_deel_volgnr + 1, 3, '0'); v_ins_deel_omschrijving := v_ins_srtdeel_code||'-'||v_ins_deel_externnr; 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; -- v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99'; v_ins_deel_aantal := TRIM (v_ins_deel_aantal); v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.'); v_ins_deel_aantal_n := NULL; IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0) THEN IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal); END IF; ELSE v_ins_deel_aantal_n := 1; END IF; -- v_errorhint := 'Bepaling registratiedatum'; v_ins_kenmerkwaarde8 := TRIM(v_ins_kenmerkwaarde8); IF v_ins_kenmerkwaarde8 IS NOT NULL AND LENGTH(v_ins_kenmerkwaarde8) = 4 THEN v_ins_deel_aanmaak := '01-01-' || TRIM(v_ins_kenmerkwaarde8); v_ins_deel_aanmaak_d := TO_DATE(v_ins_deel_aanmaak, 'dd-mm-yyyy'); END IF; -- De rest alleen ff trimmen. 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, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20, ins_deel_aanmaak, ins_deel_aantal, ins_deel_externnr ) VALUES ( v_ins_discipline_omschrijving, v_ins_discipline_kostensoort, v_ins_srtgroep_omschrijving, SUBSTR(v_ins_srtdeel_code,1,4), v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_ins_deel_opmerking, v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr, v_alg_ruimte_nr, DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, DECODE(v_ins_kenmerk_key1, NULL, NULL, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900))), DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, DECODE(v_ins_kenmerk_key2, NULL, NULL, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900))), DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, DECODE(v_ins_kenmerk_key3, NULL, NULL, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900))), DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, DECODE(v_ins_kenmerk_key4, NULL, NULL, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900))), DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, DECODE(v_ins_kenmerk_key5, NULL, NULL, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900))), DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, DECODE(v_ins_kenmerk_key6, NULL, NULL, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900))), DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, DECODE(v_ins_kenmerk_key7, NULL, NULL, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900))), DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, DECODE(v_ins_kenmerk_key8, NULL, NULL, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900))), DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, DECODE(v_ins_kenmerk_key9, NULL, NULL, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900))), DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, DECODE(v_ins_kenmerk_key10, NULL, NULL, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900))), DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, DECODE(v_ins_kenmerk_key11, NULL, NULL, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900))), DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, DECODE(v_ins_kenmerk_key12, NULL, NULL, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900))), DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, DECODE(v_ins_kenmerk_key13, NULL, NULL, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900))), DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, DECODE(v_ins_kenmerk_key14, NULL, NULL, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900))), DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, DECODE(v_ins_kenmerk_key15, NULL, NULL, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900))), DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, DECODE(v_ins_kenmerk_key16, NULL, NULL, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900))), DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, DECODE(v_ins_kenmerk_key17, NULL, NULL, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900))), DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, DECODE(v_ins_kenmerk_key18, NULL, NULL, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900))), DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, DECODE(v_ins_kenmerk_key19, NULL, NULL, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900))), DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, DECODE(v_ins_kenmerk_key20, NULL, NULL, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900))), v_ins_deel_aanmaak_d, v_ins_deel_aantal_n, v_ins_deel_externnr ); COMMIT; v_count_import := v_count_import + 1; END; 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, ''); COMMIT; END; END LOOP; IF (header_is_valid = 1) THEN 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; / CREATE OR REPLACE PROCEDURE vnog_update_mjobelementen ( p_import_key IN NUMBER) IS v_aanduiding VARCHAR (400); v_kenmerk_foto NUMBER; BEGIN fac_update_ins (p_import_key); BEGIN v_aanduiding:='Ophalen oprognose kenmerk key is mislukt'; SELECT i.ins_kenmerk_key INTO v_kenmerk_foto FROM ins_kenmerk i where i.ins_kenmerk_code='OPROGNOSE_FOTO' AND i.ins_kenmerk_verwijder IS NULL; UPDATE ins_deel i SET i.ins_deel_image = (SELECT ins_kenmerkdeel_waarde FROM ins_kenmerkdeel WHERE ins_deel_key=i.ins_deel_key AND ins_kenmerk_key=v_kenmerk_foto) WHERE i.ins_deel_key IN (SELECT ins_deel_key FROM ins_kenmerkdeel WHERE ins_kenmerk_key=v_kenmerk_foto); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Afbeelding objecten updaten !'); END; END; / -- EINDE MJOB Elementen Import CREATE OR REPLACE PROCEDURE vnog_import_mjobtaken (p_import_key IN NUMBER) IS c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key); v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (400); v_dummy VARCHAR (255); v_oprognose_gebouw_code VARCHAR2 (255); v_alg_gebouw_code VARCHAR2 (255); --VARCHAR2(12), v_alg_locatie_code VARCHAR2 (255); --VARCHAR2(12), v_ins_deel_externnr VARCHAR2 (255); --VARCHAR2(256), v_ins_deel_omschrijving VARCHAR2 (255); --VARCHAR2(60), v_ins_srtcontrole_omschrijving VARCHAR2 (255); --VARCHAR2(60), v_ins_srtcontrole_level VARCHAR2 (255); --NUMBER(3), v_ins_srtcontroledl_xcp_materia VARCHAR2 (255); --NUMBER(9,2), v_ins_srtcontroledl_xcp_aantal VARCHAR2 (255); --NUMBER(8,2), v_ins_srtcontroledl_xcp_startdat VARCHAR2 (255); --DATE, v_ins_srtcontroledl_xcp_periode VARCHAR2 (255); --NUMBER(6,2) v_ins_srtcontroledl_xcp_perc VARCHAR2 (255); --NUMBER(3) v_ins_srtcontroledl_xcp_eenh VARCHAR2 (255); v_file_index 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 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_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_oprognose_gebouw_code); fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr); fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_materia); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_aantal); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_level); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_startdat); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_periode); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_perc); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontroledl_xcp_eenh); v_aanduiding := '[' || v_alg_gebouw_code || '|' || v_ins_deel_externnr || '|' || v_ins_deel_omschrijving || '|' || v_ins_srtcontrole_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_oprognose_gebouw_code) = 'GEBOUW_CODE' AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR' AND UPPER (v_ins_deel_omschrijving) = 'DEEL_OMSCHRIJVING' AND UPPER (v_ins_srtcontrole_omschrijving) = 'SRTCONTROLE_OMSCHRIJVING' AND UPPER (v_ins_srtcontroledl_xcp_materia) = 'SRTCONTROLEDL_XCP_MATERIA' AND UPPER (v_ins_srtcontroledl_xcp_aantal) = 'SRTCONTROLEDL_XCP_AANTAL' AND UPPER (v_ins_srtcontrole_level) = 'SRTCONTROLE_LEVEL' AND UPPER (v_ins_srtcontroledl_xcp_startdat) = 'SRTCONTROLE_STARTJAAR' AND UPPER (v_ins_srtcontroledl_xcp_periode) = 'SRTCONTROLE_PERIODE' AND UPPER (v_ins_srtcontroledl_xcp_perc) = 'SRTCONTROLE_PERCENTAGE' THEN header_is_valid := 1; ELSE IF rec1.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldige header aangetroffen:', 'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) || 'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) || 'DEEL_OMSCHRIJVING: ' || UPPER (v_ins_deel_omschrijving) || CHR(10) || 'SRTCONTROLE_OMSCHRIJVING: ' || UPPER (v_ins_srtcontrole_omschrijving) || CHR(10) || 'SRTCONTROLEDL_XCP_MATERIA: ' || UPPER (v_ins_srtcontroledl_xcp_materia) || CHR(10) || 'SRTCONTROLEDL_XCP_AANTAL: ' || UPPER (v_ins_srtcontroledl_xcp_aantal) || CHR(10) || 'SRTCONTROLE_LEVEL: ' || UPPER (v_ins_srtcontrole_level) || CHR(10) || 'SRTCONTROLE_STARTJAAR: ' || UPPER (v_ins_srtcontroledl_xcp_startdat) || CHR(10) || 'SRTCONTROLE_PERIODE: ' || UPPER (v_ins_srtcontroledl_xcp_periode) || CHR(10) || 'SRTCONTROLE_PERCENTAGE: ' || UPPER (v_ins_srtcontroledl_xcp_perc)); END IF; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Gebouwcode kan niet gevonden worden'; v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code); BEGIN SELECT g.alg_gebouw_code, l.alg_locatie_code INTO v_alg_gebouw_code, v_alg_locatie_code FROM alg_gebouw g, alg_onrgoedkenmerk aok, alg_kenmerk ak, alg_locatie l WHERE g.alg_gebouw_verwijder IS NULL AND aok.alg_onrgoed_key = g.alg_gebouw_key AND aok.alg_onrgoed_niveau='G' AND ak.alg_kenmerk_key = aok.alg_kenmerk_key AND ak.alg_kenmerk_code='OPROGNOSE_CODE' AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code) AND l.alg_locatie_key=g.alg_locatie_key; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Gebouw is niet gevonden' ); v_ongeldig := 1; END; v_errormsg := 'Objectid kan niet gevonden worden'; v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); IF v_ins_deel_omschrijving IS NOT NULL THEN BEGIN SELECT 1 INTO v_dummy FROM ins_v_deel_gegevens WHERE UPPER(ins_deel_omschrijving) = UPPER(v_ins_deel_omschrijving) AND alg_gebouw_upper = UPPER(v_alg_gebouw_code); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Object is niet gevonden op id ' ); v_ongeldig := 1; END; END IF; v_errormsg := 'Object externnr kan niet gevonden worden'; v_ins_deel_externnr := TRIM (v_ins_deel_externnr); IF v_ins_deel_externnr IS NOT NULL THEN BEGIN SELECT 1 INTO v_dummy FROM ins_v_deel_gegevens dg, ins_deel d WHERE dg.ins_deel_key = d.ins_deel_key AND UPPER(d.ins_deel_externnr) = UPPER(v_ins_deel_externnr) AND dg.alg_gebouw_upper = UPPER(v_alg_gebouw_code); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Object is niet gevonden op extern id ' ); v_ongeldig := 1; END; END IF; v_errormsg := 'Controle op kosten'; IF FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia) IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg,'' ); v_ongeldig := 1; END IF; v_errormsg := 'Controle op aantal'; IF v_ins_srtcontroledl_xcp_aantal IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal) IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg,'' ); v_ongeldig := 1; END IF; v_errormsg := 'Controle op startjaar'; IF v_ins_srtcontroledl_xcp_startdat IS NOT NULL AND FAC.safe_to_date('01-01-' || v_ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy') IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg,'' ); v_ongeldig := 1; END IF; v_errormsg := 'Controle op periode'; IF v_ins_srtcontroledl_xcp_periode IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_periode) IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg,'' ); v_ongeldig := 1; END IF; v_errormsg := 'Controle op percentage'; IF v_ins_srtcontroledl_xcp_perc IS NOT NULL AND FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc) IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg,'' ); v_ongeldig := 1; END IF; -- 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_csv (FAC_IMPORT_KEY, fac_imp_csv_index, fac_imp_csv_col01, fac_imp_csv_col02, fac_imp_csv_col03, fac_imp_csv_col04, fac_imp_csv_col05, fac_imp_csv_col06, fac_imp_csv_col07, fac_imp_csv_col08, fac_imp_csv_col09, fac_imp_csv_col10, fac_imp_csv_col11, fac_imp_csv_col12) VALUES ( p_import_key, v_file_index, SUBSTR(v_alg_gebouw_code,1,12), SUBSTR(v_ins_deel_externnr,1,256), SUBSTR(v_ins_deel_omschrijving,1,60), SUBSTR(v_ins_srtcontrole_omschrijving,1,60), FAC.safe_to_number(v_ins_srtcontrole_level), FAC.safe_to_number(v_ins_srtcontroledl_xcp_materia), -- de prijs m,oet per stuk zijn. FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal), '01-01-' || v_ins_srtcontroledl_xcp_startdat, v_ins_srtcontroledl_xcp_periode, FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc), v_ins_srtcontroledl_xcp_eenh, SUBSTR(v_alg_locatie_code,1,12)); COMMIT; v_count_import := v_count_import + 1; END; 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, ''); COMMIT; END; END LOOP; IF (header_is_valid = 1) THEN fac.imp_writelog ( p_import_key, 'S', 'Taken/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Taken/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 taken afgebroken! regel:' || v_file_index); END vnog_import_mjobtaken; / CREATE OR REPLACE PROCEDURE vnog_update_mjobtaken ( p_import_key IN NUMBER) IS CURSOR c IS SELECT fac_imp_csv_col01 alg_gebouw_code, fac_imp_csv_col02 ins_deel_externnr, fac_imp_csv_col03 ins_deel_omschrijving, fac_imp_csv_col04 ins_srtcontrole_omschrijving, fac_imp_csv_col05 ins_srtcontrole_level, fac_imp_csv_col06 ins_srtcontroledl_xcp_materia, fac_imp_csv_col07 ins_srtcontroledl_xcp_aantal, fac_imp_csv_col08 ins_srtcontroledl_xcp_startdat, fac_imp_csv_col09 ins_srtcontroledl_xcp_periode, fac_imp_csv_col10 ins_srtcontroledl_xcp_perc, fac_imp_csv_col11 ins_srtcontroledl_xcp_eenh, fac_imp_csv_col12 alg_locatie_code FROM fac_imp_csv WHERE fac_import_key=p_import_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (400); v_ins_deel_key NUMBER; v_ins_deel_aantal NUMBER; v_ins_srtdeel_key NUMBER; v_ins_srtcontrole_key NUMBER; v_ins_srtcontroledl_xcp_key NUMBER; v_ctr_discipline_key NUMBER; v_alg_gebouw_key NUMBER; v_ins_srtdeel_code INS_SRTDEEL.INS_SRTDEEL_CODE%TYPE; v_ins_deel_eenheid VARCHAR2(30); v_ins_srtcontroledl_xcp_startdat DATE; v_ins_srtcontroledl_xcp_aantal NUMBER; v_ins_srtcontroledl_xcp_perc NUMBER; v_refdate DATE; BEGIN SELECT MIN(ctr_ins_discipline_key) INTO v_ctr_discipline_key FROM ctr_disc_params WHERE ctr_disc_params_ismjob = 1; -- controleer op verwijderde records FOR rec IN c LOOP BEGIN v_ins_deel_key := NULL; v_aanduiding := rec.alg_gebouw_code || '|' || rec.ins_deel_omschrijving || '|' || rec.ins_deel_externnr || '|' || rec.ins_srtcontrole_omschrijving; v_errormsg := 'Gebouwcode kan niet gevonden worden'; BEGIN SELECT g.alg_gebouw_key INTO v_alg_gebouw_key FROM alg_gebouw g, alg_locatie l WHERE alg_gebouw_verwijder IS NULL AND UPPER(alg_gebouw_code) = rec.alg_gebouw_code AND l.alg_locatie_key=g.alg_locatie_key AND l.alg_locatie_code=rec.alg_locatie_code; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Gebouw is niet gevonden' ); END; v_errormsg := 'Objectid kan niet gevonden worden'; IF rec.ins_deel_omschrijving IS NOT NULL THEN BEGIN SELECT dg.ins_deel_key, sd.ins_srtdeel_key, sd.ins_srtdeel_code, dg.ins_deel_aantal, ken.ins_kenmerkdeel_waarde INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal, v_ins_deel_eenheid FROM ins_v_deel_gegevens dg, ins_srtdeel sd, (SELECT ikd.ins_deel_key, ikd.ins_kenmerkdeel_waarde FROM ins_kenmerkdeel ikd, ins_kenmerk ik WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key AND ik.ins_kenmerk_code = 'MJOB_EENHEID_AANTAL' AND ikd.ins_kenmerkdeel_verwijder IS NULL) ken WHERE dg.ins_srtdeel_key = sd.ins_srtdeel_key AND UPPER(dg.ins_deel_omschrijving) = UPPER(rec.ins_deel_omschrijving) AND ken.ins_deel_key(+) = dg.ins_deel_key AND dg.alg_gebouw_key = v_alg_gebouw_key; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Object is niet gevonden op id ' ); v_ongeldig := 1; END; END IF; v_errormsg := 'Object externnr kan niet gevonden worden'; IF rec.ins_deel_externnr IS NOT NULL AND v_ins_deel_key IS NULL THEN BEGIN SELECT d.ins_deel_key, sd.ins_srtdeel_key, sd.ins_srtdeel_code, d.ins_deel_aantal INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code, v_ins_deel_aantal FROM ins_v_deel_gegevens dg, ins_deel d, ins_srtdeel sd WHERE dg.ins_deel_key = d.ins_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND UPPER(d.ins_deel_externnr) = UPPER(rec.ins_deel_externnr) AND dg.alg_gebouw_key = v_alg_gebouw_key; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding || v_errormsg, 'Object is niet gevonden op extern id ' ); v_ongeldig := 1; END; END IF; -- kijk of de srtcontrole al bestaat v_errormsg := 'Kijk of de taak al bestaat'; BEGIN SELECT ins_srtcontrole_key INTO v_ins_srtcontrole_key FROM ins_srtcontrole WHERE ins_srtinstallatie_key = v_ins_srtdeel_key AND ins_srtcontrole_niveau = 'S' AND ins_srtcontrole_omschrijving = SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60) AND ctr_discipline_key = v_ctr_discipline_key; UPDATE ins_srtcontrole SET ins_srtcontrole_level = rec.ins_srtcontrole_level WHERE ins_srtcontrole_key = v_ins_srtcontrole_key; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Aanmaken nieuwe taak'; INSERT INTO ins_srtcontrole (ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ctr_discipline_key, ins_srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_level, ins_srtcontrole_materiaal, ins_srtcontrole_percentage) VALUES (v_ins_srtdeel_key, 'S', SUBSTR(v_ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving, 1, 60), v_ctr_discipline_key, 0, -- periode wordt in het xcp record opgegeven 4, -- standaard jaar voor MJOB rec.ins_srtcontrole_level, 0, -- kosten worden in het xcp record vermeld. 100) RETURNING ins_srtcontrole_key INTO v_ins_srtcontrole_key; END; v_ins_srtcontroledl_xcp_perc:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_perc)*100; IF v_ins_srtcontroledl_xcp_perc>100 THEN v_ins_srtcontroledl_xcp_perc:=100; END IF; IF v_ins_srtcontroledl_xcp_perc < 100 THEN v_ins_srtcontroledl_xcp_aantal:=NULL; ELSE IF rec.ins_srtcontroledl_xcp_aantal <> v_ins_deel_aantal THEN v_ins_srtcontroledl_xcp_aantal:=FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal); ELSE v_ins_srtcontroledl_xcp_aantal:=NULL; END IF; END IF; -- wat is het aantal op de taak (in de oprognose staat een hvh_reken die we hier gebruiken ipv de ins_deel_aantal) -- v_ins_srtcontroledl_xcp_aantal := FAC.safe_to_number(rec.ins_srtcontroledl_xcp_aantal); -- IF (v_ins_srtcontroledl_xcp_aantal=1 AND v_ins_deel_aantal>1) -- THEN -- v_ins_srtcontroledl_xcp_aantal:= v_ins_deel_aantal; -- END IF; -- Ophalen freeze jaar en eerst stardatum v_ins_srtcontroledl_xcp_startdat:=FAC.safe_to_date(rec.ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy'); v_refdate := FAC.safe_to_date('01-01-'||fac.getsetting('mjb_start_year'),'DD-MM-YYYY'); IF (v_ins_srtcontroledl_xcp_startdat<=v_refdate) THEN v_ins_srtcontroledl_xcp_startdat := vnog.getfirststartdate(v_ins_srtcontroledl_xcp_startdat, v_refdate,rec.ins_srtcontroledl_xcp_periode); END IF; -- kijk of de taak uitzondering al bestaat v_errormsg := 'Kijk of de XCP taak al bestaat'; BEGIN SELECT ins_srtcontroledl_xcp_key INTO v_ins_srtcontroledl_xcp_key FROM ins_srtcontroledl_xcp WHERE ins_deel_key = v_ins_deel_key AND ins_srtcontrole_key = v_ins_srtcontrole_key; UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_periode = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode), ins_srtcontroledl_xcp_aantal = v_ins_srtcontroledl_xcp_aantal, ins_srtcontroledl_xcp_materia = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia), ins_srtcontroledl_xcp_perc = FAC.safe_to_number(rec.ins_srtcontroledl_xcp_perc), ins_srtcontroledl_xcp_startdat = v_ins_srtcontroledl_xcp_startdat WHERE ins_srtcontroledl_xcp_key = v_ins_srtcontroledl_xcp_key; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Aanmaken nieuwe taak uitzondering '; INSERT INTO ins_srtcontroledl_xcp (ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_aantal, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_startdat, ins_srtcontroledl_xcp_aanteh) VALUES (v_ins_deel_key, v_ins_srtcontrole_key, FAC.safe_to_number(rec.ins_srtcontroledl_xcp_periode), v_ins_srtcontroledl_xcp_aantal, FAC.safe_to_number(rec.ins_srtcontroledl_xcp_materia), v_ins_srtcontroledl_xcp_perc, v_ins_srtcontroledl_xcp_startdat, rec.ins_srtcontroledl_xcp_eenh) RETURNING ins_srtcontroledl_xcp_key INTO v_ins_srtcontroledl_xcp_key; END; -- Moeten we nu kijken welke XCP taken er zijn aangemaakt en of deze al afgerond hadden moeten zijn zodat ze niet worden doorgeschoven naar het volgene jaar ? fac.imp_writelog (p_import_key, 'I', v_aanduiding || 'Taak is aangemaakt: ' || v_aanduiding, ''); COMMIT; -- TODO moeten we ook taken gaan verwijderen? 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; END; / -- EIND MJOB Taken CREATE OR REPLACE VIEW vnog_v_rap_mails ( perslid_key, email ) AS SELECT p.prs_perslid_key, p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_email IS NOT NULL; -- Rapport om te kunnen zien wie er online is (ICT en Servicedesk) CREATE OR REPLACE VIEW vnog_v_rap_prs_online ( naam, laatste_tracking ) AS SELECT x.prs_perslid_naam_full, CASE WHEN x.note > x.tracking_date THEN x.note ELSE x.tracking_date END FROM ( SELECT p.prs_perslid_naam_full, MAX (f.fac_tracking_datum) tracking_date, MAX (m.mld_melding_note_aanmaak) note FROM fac_tracking f, prs_v_perslid_fullnames p, mld_melding_note m, fac_gebruikersgroep fg WHERE p.prs_perslid_key = f.prs_perslid_key(+) AND p.prs_perslid_key = m.prs_perslid_key(+) AND p.prs_perslid_key = fg.prs_perslid_key AND fg.fac_groep_key IN (2, 21, 161, 178, 184, 186) -- ICT en Servicedesk groepen AND p.prs_perslid_key > 702 -- Alles hoger dan sensor account GROUP BY p.prs_perslid_naam_full) x; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile