-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'SZDB.SQL' DEFINE dbuser = 'SZDB' 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 PACKAGE SZDB AS PROCEDURE processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER); PROCEDURE mld_after_insert (p_melding_key IN NUMBER); FUNCTION imp_getfield_nr (p_parseline IN VARCHAR2, p_fielddelimitor IN VARCHAR2, p_nr IN NUMBER ) RETURN VARCHAR2; PROCEDURE res_after_insert (p_res_rsv_ruimte_key IN NUMBER); END; / CREATE OR REPLACE PACKAGE BODY SZDB AS -- Status: proven concept PROCEDURE processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2, pemailkey IN NUMBER ) AS sender prs_perslid.prs_perslid_key%TYPE; kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE; newkey mld_melding.mld_melding_key%TYPE; defaultstdmelding fac_setting.fac_setting_default%TYPE; kkey_att mld_kenmerk.mld_kenmerk_key%TYPE; kkey_mail mld_kenmerk.mld_kenmerk_key%TYPE; errormsg fac_result.fac_result_waarde%TYPE; BEGIN -- Valideer de sender in pfrom: kennen we deze? SELECT prs_perslid_key, d.prs_kostenplaats_key INTO sender, kostenplaats FROM prs_perslid p, prs_afdeling d WHERE p.prs_afdeling_key = d.prs_afdeling_key AND UPPER (prs_perslid_email) = UPPER (pfrom); CASE WHEN UPPER (pto) LIKE 'MELDING@%' THEN defaultstdmelding := 1; kkey_att := 1; kkey_mail := 2; -- suggested extensions: -- check for MLDUSE-write autorisations -- parse the subject to find an appropriate stdmelding, if uniquely possible -- append (as a note?) to an existing melding if #key is found in the subject BEGIN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_melding_onderwerp, mld_melding_omschrijving, mld_melding_status, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_spoed) VALUES ('MLD', 4, -- email SYSDATE, SUBSTR (psubject, 1, 80), SUBSTR (REPLACE (SUBSTR (pbody, 1, 4000), CHR (13) || CHR (10) || CHR (13) || CHR (10), CHR (13) || CHR (10)), 1, 4000), -- verwijder onnodige witregels NULL, defaultstdmelding, sender, sender, kostenplaats, 3) RETURNING mld_melding_key INTO newkey; INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkpath', 'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || '\' || kkey_att || '\'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || '\' || kkey_mail || '\'); mld.setmeldingstatus (newkey, 2, sender); END; ELSE NULL; END CASE; IF errormsg IS NOT NULL THEN INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', errormsg); END IF; EXCEPTION WHEN OTHERS THEN fac.writelog ( 'PROCESSEMAIL', 'W', 'Mail kon niet verwerkt worden afzender: ' || pfrom || '[' || errormsg || ']', 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'); INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder'); END; PROCEDURE mld_after_insert (p_melding_key IN NUMBER) AS c_kenmerk_key MLD_KENMERK.MLD_KENMERK_KEY%TYPE := 43; -- Datum kamer beschikbaar v_kenmerk_oms MLD_KENMERK.MLD_KENMERK_OMSCHRIJVING%TYPE; v_kenmerkm_waarde MLD_KENMERKMELDING.MLD_KENMERKMELDING_WAARDE%TYPE; v_melding_oms MLD_MELDING.MLD_MELDING_OMSCHRIJVING%TYPE; c_stdmelding_key MLD_STDMELDING.MLD_STDMELDING_KEY%TYPE := 111; -- Mutatie / Nieuwe client v_stdmelding_key MLD_STDMELDING.MLD_STDMELDING_KEY%TYPE; BEGIN SELECT COALESCE (mld_kenmerk_omschrijving, mld_srtkenmerk_omschrijving) INTO v_kenmerk_oms FROM mld_kenmerk k, mld_srtkenmerk sk WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key AND k.mld_kenmerk_key = c_kenmerk_key; SELECT mld_melding_omschrijving, mld_stdmelding_key INTO v_melding_oms, v_stdmelding_key FROM mld_melding WHERE mld_melding_key = p_melding_key; IF v_stdmelding_key = c_stdmelding_key THEN v_kenmerkm_waarde := FLX.getflex ('MLD', c_kenmerk_key, p_melding_key); IF v_kenmerkm_waarde IS NOT NULL THEN IF INSTR (v_melding_oms, v_kenmerk_oms) = 1 THEN -- Het kenmerk staat al in de omschrijving. Dan overschrijven we die. v_melding_oms := v_kenmerk_oms || ': ' || v_kenmerkm_waarde || CHR (10) || SUBSTR (v_melding_oms, LENGTH (v_kenmerk_oms) + 14, 3900); ELSE v_melding_oms := v_kenmerk_oms || ': ' || v_kenmerkm_waarde || CHR (10) || SUBSTR (v_melding_oms, 1, 3900); END IF; UPDATE mld_melding SET mld_melding_omschrijving = v_melding_oms WHERE mld_melding_key = p_melding_key; END IF; END IF; COMMIT; END; FUNCTION imp_getfield_nr (p_parseline IN VARCHAR2, p_fielddelimitor IN VARCHAR2, p_nr IN NUMBER ) RETURN VARCHAR2 AS v_return_str VARCHAR2(1000); BEGIN fac.imp_getfield_nr (p_parseline, p_fielddelimitor, p_nr, v_return_str); RETURN v_return_str; END; PROCEDURE res_after_insert (p_res_rsv_ruimte_key IN NUMBER) AS v_count NUMBER; v_onderwerp VARCHAR2(100); v_reservering_key NUMBER; BEGIN SELECT COUNT (*) INTO v_count FROM fac_tracking t, fac_srtnotificatie sn WHERE t.fac_tracking_refkey = p_res_rsv_ruimte_key AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'RES2BO'; IF v_count = 0 THEN SELECT 'Nieuwe reservering (' || rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr || ') ' || rd.res_deel_omschrijving || ' op ' || to_char(res_rsv_ruimte_van, 'dd-mm-yyyy'), rrr.res_reservering_key INTO v_onderwerp, v_reservering_key FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rrr.res_rsv_ruimte_key = p_res_rsv_ruimte_key AND rrr.res_activiteit_key = 30 -- Beleef-o-theek AND ROWNUM = 1; fac.trackaction ('RES2BO', p_res_rsv_ruimte_key, NULL, NULL, NULL); fac.putnotificationsrtprio (NULL, 10981, -- Notificatie user beleef-o-theek 'RES2BO', v_reservering_key, v_onderwerp, NULL, NULL, NULL, p_res_rsv_ruimte_key, 2, NULL); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN -- dan was het geen reservering van de Beleef-o-theek NULL; END; END; / CREATE OR REPLACE VIEW szdb_v_mutatie_status AS SELECT m.mld_melding_key, mld_melding_datum, LISTAGG ( km.mld_kenmerk_omschrijving || ': ' || km.mld_kenmerkmelding_waarde, CHR (10)) WITHIN GROUP (ORDER BY km.mld_kenmerk_volgnummer) AS details, l.alg_locatie_code, l.alg_locatie_omschrijving, aog.alg_gebouw_code, aog.alg_gebouw_naam, aog.alg_verdieping_code, aog.alg_ruimte_nr, aog.alg_ruimte_omschrijving, FLX.getflex('MLD', 43, m.mld_melding_key) kamer_leeg, ms.mld_statuses_omschrijving, o.mld_opdr_bedrijfopdr_volgnr, COALESCE (pf.prs_perslid_naam_full, b.prs_bedrijf_naam) uitvoerder, o.mld_opdr_plandatum, os.mld_statusopdr_omschrijving, o.mld_opdr_omschrijving FROM mld_melding m, mld_opdr o, prs_v_perslid_fullnames_all pf, prs_bedrijf b, mld_statuses ms, mld_statusopdr os, alg_v_allonrgoed_gegevens aog, alg_locatie l, (SELECT km.mld_melding_key, k.mld_kenmerk_volgnummer, k.MLD_KENMERK_OMSCHRIJVING, km.mld_kenmerkmelding_waarde FROM mld_kenmerk k, mld_kenmerkmelding km WHERE k.mld_kenmerk_key = km.mld_kenmerk_key AND k.mld_kenmerk_omschrijving IS NOT NULL) km WHERE mld_stdmelding_key = 111 -- mutatie AND m.mld_melding_key = o.mld_melding_key(+) AND m.mld_melding_key = km.mld_melding_key(+) AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND o.mld_uitvoerende_keys = pf.prs_perslid_key(+) AND m.mld_melding_status = ms.mld_statuses_key AND o.mld_statusopdr_key = os.mld_statusopdr_key(+) AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys AND m.mld_alg_locatie_key = l.alg_locatie_key GROUP BY m.mld_melding_key, ms.mld_statuses_omschrijving, o.mld_opdr_bedrijfopdr_volgnr, os.mld_statusopdr_omschrijving, pf.prs_perslid_naam_full, b.prs_bedrijf_naam, o.mld_opdr_plandatum, o.mld_opdr_omschrijving, mld_melding_datum, l.alg_locatie_code, l.alg_locatie_omschrijving, aog.alg_gebouw_code, aog.alg_gebouw_naam, aog.alg_verdieping_code, aog.alg_ruimte_nr, aog.alg_ruimte_omschrijving, ms.mld_statuses_omschrijving; -- Notificatie view om personen die een object op hun naam gekregen hebben te notificeren. CREATE OR REPLACE VIEW szdb_v_noti_ins_2_prs AS SELECT 'CUST01' code, NULL sender, d.ins_alg_ruimte_key receiver, 'Ontvangstbevestiging ' || sd.ins_srtdeel_omschrijving || ' ' || d.ins_deel_omschrijving text, d.ins_deel_key key, NULL xkey FROM fac_tracking t, ins_deel d, ins_srtdeel sd WHERE t.fac_tracking_refkey = d.ins_deel_key AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND UPPER (fac_tracking_oms) LIKE '%PLAATS OF EIGENAAR%' AND fac_srtnotificatie_key = 137 AND ins_alg_ruimte_type = 'P' AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun - fac_notificatie_job_interval / 24 FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'SZDB_V_NOTI_INS_2_PRS') AND (SELECT fac_notificatie_job_nextrun FROM fac_notificatie_job WHERE fac_notificatie_job_view = 'SZDB_V_NOTI_INS_2_PRS'); -- MJOB CREATE OR REPLACE PROCEDURE szdb_import_mjobelementen (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_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_ins_deel_externnr VARCHAR2 (255); -- C60 v_alg_locatie_code VARCHAR2 (255); -- C10 v_alg_gebouw_code VARCHAR2 (255); -- C12 v_alg_verdieping_volgnr VARCHAR2 (255); -- N3 v_alg_ruimte_nr VARCHAR2 (255); -- C20 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_file_index NUMBER; v_alg_gebouw_key NUMBER; v_alg_verdieping_key NUMBER; v_alg_ruimte_key NUMBER; v_ins_deel_key NUMBER; v_ins_srtdeel_key NUMBER; v_ins_srtgroep_key NUMBER; v_ins_discipline_key NUMBER; v_ins_deel_volgnr 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 c IS SELECT * FROM fac_imp_ins ORDER BY alg_gebouw_code, ins_deel_omschrijving; -- 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', '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_alg_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); 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_alg_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' 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_alg_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)); END IF; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Gebouwcode kan niet gevonden worden'; v_alg_gebouw_code := TRIM (v_alg_gebouw_code); SELECT alg_gebouw_key, alg_locatie_code INTO v_alg_gebouw_key, v_alg_locatie_code FROM alg_gebouw g, alg_locatie l WHERE g.alg_locatie_key = l.alg_locatie_key AND alg_gebouw_verwijder IS NULL AND UPPER(alg_gebouw_code) = v_alg_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 = v_ins_srtdeel_code; 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 := v_ins_srtdeel_code || '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'); 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, v_ins_srtdeel_code, 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; -- We gaan nu de nummering van de objecten aanpassen. Ze hebben allemaal het hoogste bestaande nummer + 1 meegekregen. v_alg_gebouw_code := 'Leeg'; v_ins_srtdeel_code := 'Leeg'; FOR rec IN c LOOP BEGIN IF rec.alg_gebouw_code <> v_alg_gebouw_code OR rec.ins_srtdeel_code <> v_ins_srtdeel_code THEN v_ins_deel_volgnr := FAC.safe_to_number ( SUBSTR (rec.ins_deel_omschrijving, INSTR (rec.ins_deel_omschrijving, '-', 1) + 1, 100)); v_alg_gebouw_code := rec.alg_gebouw_code; v_ins_srtdeel_code := rec.ins_srtdeel_code; ELSE v_ins_deel_volgnr := v_ins_deel_volgnr + 1; UPDATE fac_imp_ins SET ins_deel_omschrijving = rec.ins_srtdeel_code || LPAD (v_ins_deel_volgnr, 3, '0') WHERE ins_deel_externnr = rec.ins_deel_externnr AND alg_gebouw_code = v_alg_gebouw_code; END IF; 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 szdb_import_mjobelementen; / CREATE OR REPLACE PROCEDURE szdb_update_mjobelementen ( p_import_key IN NUMBER) IS BEGIN fac_update_ins (p_import_key); END; / CREATE OR REPLACE PROCEDURE szdb_import_mjobgebreken (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); v_file_index NUMBER; v_count NUMBER; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR2 (400); v_stdmelding_key NUMBER; v_gebrek_code VARCHAR2(100); v_omvang_key NUMBER; v_intensiteit_key NUMBER; v_ernst_key NUMBER; -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN DELETE cnd_imp_nen2767_results; SELECT mld_srtkenmerk_key INTO v_omvang_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'OMVANG'; SELECT mld_srtkenmerk_key INTO v_ernst_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'ERNST'; SELECT mld_srtkenmerk_key INTO v_intensiteit_key FROM mld_srtkenmerk WHERE mld_srtkenmerk_code = 'INTENSITEIT'; 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_nr (v_newline, c_delim, 6, v_gebrek_code); IF v_gebrek_code IS NOT NULL AND v_file_index <> 1 THEN BEGIN SELECT mld_stdmelding_key INTO v_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_code = v_gebrek_code; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO mld_stdmelding (mld_stdmelding_code, mld_ins_discipline_key, mld_stdmelding_omschrijving, mld_stdmelding_hint, mld_stdmelding_subject, mld_stdmelding_t_accepttijd, mld_stdmelding_t_uitvoertijd, mld_stdmelding_t_uitvtijd_pr1, mld_stdmelding_t_uitvtijd_pr2, mld_stdmelding_t_uitvtijd_pr4, alg_onrgoed_niveau, alg_onrgoed_obj_niveau, ins_srtinst_verplichtstatus, mld_stdmelding_slabewaken) SELECT v_gebrek_code, d.ins_discipline_key, v_gebrek_code || ' Onbekend', v_gebrek_code || ' Onbekend', 0, MLD_T_UITVOERTIJD (NULL, 'U'), MLD_T_UITVOERTIJD (2, 'D'), MLD_T_UITVOERTIJD (NULL, 'D'), MLD_T_UITVOERTIJD (NULL, 'D'), MLD_T_UITVOERTIJD (NULL, 'D'), 'G', 'G', 2, 0 FROM ins_tab_discipline d, ins_srtdiscipline sd WHERE REGEXP_SUBSTR (v_gebrek_code, '[[:alpha:]]*[[:digit:]]*') = SUBSTR (ins_discipline_omschrijving, 1, INSTR (ins_discipline_omschrijving, ' ') - 1) AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_omschrijving = 'NEN2767 - Conditiemeting' AND ins_discipline_code <> 'GEEN'; BEGIN SELECT mld_stdmelding_key INTO v_stdmelding_key FROM mld_stdmelding WHERE mld_stdmelding_code = v_gebrek_code; fac.imp_writelog (p_import_key, 'I', v_gebrek_code || ' aangemaakt.', ''); -- ernst INSERT INTO mld_kenmerk (mld_srtkenmerk_key, mld_stdmelding_key, mld_kenmerk_niveau, mld_kenmerk_verplicht, mld_kenmerk_volgnummer) VALUES (v_ernst_key, v_stdmelding_key, 'S', 1, 10); -- omvang INSERT INTO mld_kenmerk (mld_srtkenmerk_key, mld_stdmelding_key, mld_kenmerk_niveau, mld_kenmerk_verplicht, mld_kenmerk_volgnummer) VALUES (v_omvang_key, v_stdmelding_key, 'S', 1, 20); -- ernst INSERT INTO mld_kenmerk (mld_srtkenmerk_key, mld_stdmelding_key, mld_kenmerk_niveau, mld_kenmerk_verplicht, mld_kenmerk_volgnummer) VALUES (v_intensiteit_key, v_stdmelding_key, 'S', 1, 30); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'E', v_gebrek_code || ' kan niet aangemaakt worden.', ''); END; -- dbms_output.put_line ('Ontbrekende code: ' || v_gebrek_code); END; END IF; END; END LOOP; -- Nu de gebreken importeren cnd_import_nen2767_results (p_import_key); -- En het externe nummer vervangen door het interne nummer UPDATE cnd_imp_nen2767_results r SET ins_deel_omschrijving = (SELECT ins_deel_omschrijving FROM ins_deel d WHERE d.ins_deel_externnr = r.ins_deel_omschrijving) WHERE fac_import_key = p_import_key; -- voeg aan de elementen zonder gebrek toe INSERT INTO cnd_imp_nen2767_results (fac_import_key, alg_gebouw_code, ins_deel_omschrijving, mld_melding_datum, prs_perslid_email, gebrekcode, aspect1, aspect2, aspect3, aspect4, aspect5, aspect6, aspect7) SELECT p_import_key, h.alg_gebouw_code, ins_deel_omschrijving, mld_melding_datum, prs_perslid_email, 'GEEN', 'NVT', 'NVT', 'NVT', 'NVT', 'NVT', 'NVT', 'NVT' FROM ins_v_deel_gegevens dg, (SELECT alg_gebouw_code, mld_melding_datum, prs_perslid_email FROM cnd_imp_nen2767_results WHERE ROWNUM = 1) h WHERE dg.ins_discipline_omschrijving = 'MJOB' AND alg_gebouw_upper IN (SELECT r.alg_gebouw_code FROM cnd_imp_nen2767_results r) AND ins_deel_omschrijving NOT IN (SELECT r.ins_deel_omschrijving FROM cnd_imp_nen2767_results r); 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 gebreken afgebroken! regel:' || v_file_index); END szdb_import_mjobgebreken; / CREATE OR REPLACE PROCEDURE szdb_update_mjobgebreken ( p_import_key IN NUMBER) IS BEGIN cnd_update_nen2767_results (p_import_key); END; / CREATE OR REPLACE PROCEDURE szdb_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_alg_gebouw_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_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 DELETE FROM szdb_imp_mjob; 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_alg_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); 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_alg_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_alg_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_alg_gebouw_code := TRIM (v_alg_gebouw_code); BEGIN SELECT 1 INTO v_dummy FROM alg_gebouw g WHERE alg_gebouw_verwijder IS NULL AND UPPER(alg_gebouw_code) = v_alg_gebouw_code; 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 szdb_imp_mjob (alg_gebouw_code, ins_deel_externnr, ins_deel_omschrijving, ins_srtcontrole_omschrijving, ins_srtcontrole_level, ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_aantal, ins_srtcontroledl_xcp_startdat, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_perc) VALUES ( 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), FAC.safe_to_number(v_ins_srtcontroledl_xcp_aantal), FAC.safe_to_date('01-01-' || v_ins_srtcontroledl_xcp_startdat, 'dd-mm-yyyy'), v_ins_srtcontroledl_xcp_periode, FAC.safe_to_number(v_ins_srtcontroledl_xcp_perc)); 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 szdb_import_mjobtaken; / CREATE OR REPLACE PROCEDURE szdb_update_mjobtaken ( p_import_key IN NUMBER) IS CURSOR c IS SELECT * FROM szdb_imp_mjob; 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_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; 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 alg_gebouw_key INTO v_alg_gebouw_key FROM alg_gebouw g WHERE alg_gebouw_verwijder IS NULL AND UPPER(alg_gebouw_code) = rec.alg_gebouw_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 INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code FROM ins_v_deel_gegevens dg, ins_srtdeel sd WHERE dg.ins_srtdeel_key = sd.ins_srtdeel_key AND UPPER(dg.ins_deel_omschrijving) = UPPER(rec.ins_deel_omschrijving) AND dg.alg_gebouw_upper = UPPER(rec.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'; 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 INTO v_ins_deel_key, v_ins_srtdeel_key, v_ins_srtdeel_code 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_upper = UPPER(rec.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; -- 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; -- kijk of de taak uitzondering al bestaat v_errormsg := 'Kijk of de 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 = rec.ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_aantal = rec.ins_srtcontroledl_xcp_aantal, ins_srtcontroledl_xcp_materia = rec.ins_srtcontroledl_xcp_materia, ins_srtcontroledl_xcp_perc = rec.ins_srtcontroledl_xcp_perc, ins_srtcontroledl_xcp_startdat = rec.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) VALUES (v_ins_deel_key, v_ins_srtcontrole_key, rec.ins_srtcontroledl_xcp_periode, rec.ins_srtcontroledl_xcp_aantal, rec.ins_srtcontroledl_xcp_materia, rec.ins_srtcontroledl_xcp_perc, rec.ins_srtcontroledl_xcp_startdat) RETURNING ins_srtcontroledl_xcp_key INTO v_ins_srtcontroledl_xcp_key; END; 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; / -- rapportage om foto's toe te voegen CREATE OR REPLACE VIEW szdb_v_upload_foto_script AS SELECT alg_gebouw_code, 'cscript "..\..\Fotos\UploadFotoBijGebrek.js" "https://szdb.facilitor.nl/api2" 4201 ' || mld_melding_key || ' "' || foto || '"' url FROM (SELECT aogg.alg_gebouw_code, m.mld_melding_key, 1 volgorde, szdb.imp_getfield_nr (mld_kenmerkmelding_waarde, ':', 1) foto FROM mld_kenmerkmelding km, mld_melding m, alg_v_onroerendgoed_gegevens aogg WHERE aogg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 4202 UNION ALL SELECT aogg.alg_gebouw_code, m.mld_melding_key, 2, szdb.imp_getfield_nr (mld_kenmerkmelding_waarde, ':', 2) FROM mld_kenmerkmelding km, mld_melding m, alg_v_onroerendgoed_gegevens aogg WHERE aogg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 4202 UNION ALL SELECT aogg.alg_gebouw_code, m.mld_melding_key, 3, szdb.imp_getfield_nr (mld_kenmerkmelding_waarde, ':', 3) FROM mld_kenmerkmelding km, mld_melding m, alg_v_onroerendgoed_gegevens aogg WHERE aogg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 4202 UNION ALL SELECT aogg.alg_gebouw_code, m.mld_melding_key, 4, szdb.imp_getfield_nr (mld_kenmerkmelding_waarde, ':', 4) FROM mld_kenmerkmelding km, mld_melding m, alg_v_onroerendgoed_gegevens aogg WHERE aogg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys AND m.mld_melding_key = km.mld_melding_key AND mld_kenmerk_key = 4202) WHERE foto IS NOT NULL; -- View voor de afhandeling van speel-o-theek atributen CREATE OR REPLACE VIEW szdb_v_rap_bo_beleefotheek AS SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer, DECODE (FLX.getflex ('RES', 1, rrr.res_rsv_ruimte_key), NULL, 'Uitgeven', 'Innemen') actie, rrr.res_rsv_ruimte_key, rrr.res_rsv_ruimte_omschrijving, pf.prs_perslid_naam_full, res_rsv_ruimte_van, res_rsv_ruimte_tot, rd.res_deel_omschrijving, alg_gebouw_naam, alg_verdieping_volgnr, alg_ruimte_nr, alg_ruimte_omschrijving, FLX.getflex ('RES', 1, rrr.res_rsv_ruimte_key) inf , FLX.getflex ('RES', 2, rrr.res_rsv_ruimte_key) uit FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd, prs_v_perslid_fullnames pf, alg_v_ruimte_gegevens rg WHERE rrr.res_activiteit_key = 30 AND COALESCE (FLX.getflex ('RES', 2, rrr.res_rsv_ruimte_key), '0') <> '1' AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key AND rrd.res_deel_key = rd.res_deel_key AND rrr.alg_ruimte_key = rg.alg_ruimte_key AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrd.res_rsv_deel_verwijder IS NULL; ------ 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