-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database. DEFINE thisfile = 'FZKH.SQL' DEFINE dbuser = '^FZKH' 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 FZKH AS FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE; PROCEDURE update_prs2kpnvgr; END; / CREATE OR REPLACE PACKAGE BODY FZKH AS FUNCTION getfirststartdate (p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE AS v_startdatum DATE; BEGIN IF (p_startdatum < p_refdatum AND p_cyclus > 0) THEN v_startdatum := ADD_MONTHS (p_startdatum, p_cyclus * 12); IF (v_startdatum < p_refdatum) THEN v_startdatum := fzkh.getfirststartdate (v_startdatum, p_refdatum, p_cyclus); END IF; ELSE v_startdatum := p_startdatum; END IF; RETURN v_startdatum; END; -- Bijwerken vervangersgroepen (vgr) met FZKH-personen (prs) uit afdelingen -- met dezelfde kostenplaats (kpn)! PROCEDURE update_prs2kpnvgr AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER (10); -- Toevoegen vervangersgroepen voor nieuwe kostenplaatsen (waarvoor -- nog geen vervangersgroep bestaat). CURSOR c1 IS SELECT '[' || TO_CHAR (kp.prs_kostenplaats_key) || '|' || kp.prs_kostenplaats_nr || '] ' aanduiding, kp.prs_kostenplaats_key, kp.prs_kostenplaats_nr || '_' || SUBSTR (kp.prs_kostenplaats_omschrijving, 1, 29 - LENGTH (kp.prs_kostenplaats_nr)) vervangersgroep FROM prs_v_aanwezigkostenplaats kp WHERE EXISTS -- SCIM-kostenplaats (in principe) (SELECT 1 FROM prs_afdeling WHERE prs_afdeling_verwijder IS NULL AND prs_bedrijf_key = 2 -- Flevoziekenhuis AND prs_kostenplaats_key = kp.prs_kostenplaats_key) AND NOT EXISTS (SELECT 1 FROM fac_groep WHERE fac_groep_collega = 1 AND fac_groep_omschrijving LIKE kp.prs_kostenplaats_nr || '_%') ORDER BY 2; -- Toekennen vervangersgroep aan personen (= met externid) volgens -- (afdelings)kostenplaats. CURSOR c2 IS SELECT '[' || TO_CHAR (g.fac_groep_key) || '|' || TO_CHAR (p.prs_perslid_key) || '] ' aanduiding, g.fac_groep_key, p.prs_perslid_key FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_v_aanwezigkostenplaats kp, (SELECT * FROM fac_groep WHERE fac_groep_collega = 1) g WHERE p.prs_perslid_externid IS NOT NULL -- FZKH-persoon AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_verwijder IS NULL AND a.prs_bedrijf_key = 2 -- Flevoziekenhuis AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key AND kp.prs_kostenplaats_nr || '_' = SUBSTR (g.fac_groep_omschrijving, 1, INSTR (g.fac_groep_omschrijving, '_')) AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = g.fac_groep_key AND prs_perslid_key = p.prs_perslid_key) ORDER BY 2, 3; -- Afnemen vervangersgroep van personen (= met externid) niet volgens -- (afdelings)kostenplaats. CURSOR c3 IS SELECT '[' || TO_CHAR (gg.fac_groep_key) || '|' || TO_CHAR (gg.prs_perslid_key) || '] ' aanduiding, gg.fac_gebruikersgroep_key FROM fac_gebruikersgroep gg, prs_v_aanwezigperslid p, prs_afdeling a, prs_v_aanwezigkostenplaats pkp WHERE gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_externid IS NOT NULL -- FZKH-persoon AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_afdeling_verwijder IS NULL AND a.prs_bedrijf_key = 2 -- Flevoziekenhuis AND a.prs_kostenplaats_key = pkp.prs_kostenplaats_key AND EXISTS -- Alleen vervangersgroepen beginnend met prs_kostenplaats_nr afnemen! (SELECT 1 FROM fac_groep g, prs_v_aanwezigkostenplaats gkp WHERE g.fac_groep_collega = 1 AND g.fac_groep_omschrijving LIKE gkp.prs_kostenplaats_nr || '_%' AND g.fac_groep_key = gg.fac_groep_key) AND NOT EXISTS -- Vervangersgroep niet volgens (afdelings)kostenplaats! (SELECT 1 FROM fac_groep g WHERE g.fac_groep_collega = 1 AND g.fac_groep_omschrijving LIKE pkp.prs_kostenplaats_nr || '_%' AND g.fac_groep_key = gg.fac_groep_key) ORDER BY 2; BEGIN -- Toevoegen vervangersgroepen voor nieuwe kostenplaatsen (waarvoor -- nog geen vervangersgroep bestaat). v_count := 0; v_errormsg := 'Fout toevoegen vervangersgroep'; FOR rec IN c1 LOOP BEGIN INSERT INTO fac_groep (fac_groep_omschrijving, fac_groep_collega) VALUES (rec.vervangersgroep, 1); v_count := v_count + 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.writelog ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, ''); END; END LOOP; fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#toegevoegd: ' || TO_CHAR (v_count), ''); -- Toekennen vervangersgroep aan personen (= met externid) volgens -- (afdelings)kostenplaats. v_count := 0; v_errormsg := 'Fout toewijzen vervangersgroep'; FOR rec IN c2 LOOP BEGIN INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key) VALUES (rec.fac_groep_key, rec.prs_perslid_key); v_count := v_count + 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.writelog ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, ''); END; END LOOP; fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#toegekend: ' || TO_CHAR (v_count), ''); -- Afnemen vervangersgroep van personen (= met externid) niet volgens -- (afdelings)kostenplaats. v_count := 0; v_errormsg := 'Fout afnemen vervangersgroep'; FOR rec IN c3 LOOP BEGIN DELETE FROM fac_gebruikersgroep WHERE fac_gebruikersgroep_key = rec.fac_gebruikersgroep_key; v_count := v_count + 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.writelog ('PRS2KPNVGR', 'W', rec.aanduiding || v_errormsg, ''); END; END LOOP; fac.writelog ('PRS2KPNVGR', 'S', 'Vervangersgroep/#afgenomen: ' || TO_CHAR (v_count), ''); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('PRS2KPNVGR', 'E', v_errormsg, ''); END update_prs2kpnvgr; END; / CREATE OR REPLACE PROCEDURE FZKH_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_oprognose_gebouw_code VARCHAR2 (255); 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_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) = 0) THEN v_ins_deel_aantal_n:=999; ELSIF (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 fzkh_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; / -- EINE MJOB Elementen Import CREATE OR REPLACE PROCEDURE fzkh_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 := '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 fzkh_import_mjobtaken; / CREATE OR REPLACE PROCEDURE fzkh_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 := fzkh.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 = v_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 PROCEDURE FZKH_IMPORT_INSPECTIES(p_import_key IN NUMBER) AS BEGIN --fac_import_inspectie(p_import_key); NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_INSPECTIES(p_import_key IN NUMBER) AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_error NUMBER (10); v_count NUMBER (10); v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); v_ins_srtinstallatie_key NUMBER (10); v_ins_srtcontrole_niveau VARCHAR (1); v_week_bits NUMBER (10); v_maand_bits NUMBER (10); v_ctr_ins_discipline_key NUMBER; v_ins_srtcontrole_info VARCHAR2(2000); v_ins_srtcontrole_opm VARCHAR2(320); v_taak_omschrijving VARCHAR2(60); CURSOR c_inspecties IS SELECT fac_imp_csv_col01 INS_DISCIPLINE_OMSCHRIJVING, fac_imp_csv_col02 INS_SRTGROEP_OMSCHRIJVING, fac_imp_csv_col03 INS_SRTDEEL_CODE, fac_imp_csv_col05 INS_SRTCONTROLE_OMSCHRIJVING, fac_imp_csv_col06 INS_SRTCONTROLE_INFO, fac_imp_csv_col07 INS_SRTCONTROLE_OMS, fac_imp_csv_col08 INS_SRTCONTROLE_PERIODE, fac_imp_csv_col09 INS_SRTCONTROLE_EENHEID, fac_imp_csv_col10 INS_SRTCONTROLE_MODE, fac_imp_csv_col11 INS_SRTCONTROLE_BITS, fac_imp_csv_col12 INS_SRTCONTROLE_groep, fac_imp_csv_col13 ins_srtcontrole_leverancier, fac_imp_csv_col14 ins_srtcontrole_doorlooptijd, fac_imp_csv_col15 ins_srtcontrole_uren, fac_imp_csv_col16 ins_srtcontrole_opm FROM fac_imp_csv WHERE fac_import_key=p_import_key AND UPPER(fac_imp_csv_col01)<>UPPER('Disciplineomschrijving') ORDER BY fac_imp_csv_key; -- MAIN BEGIN v_count:=0; v_count_tot:=0; FOR rec_ins IN c_inspecties LOOP BEGIN v_count_tot := v_count_tot + 1; v_aanduiding := rec_ins.ins_discipline_omschrijving || ' - ' || rec_ins.ins_srtgroep_omschrijving || '-' || rec_ins.ins_srtdeel_code; v_errorhint := 'Fout bij bepalen discipline'; IF LENGTH(rec_ins.ins_srtcontrole_opm)>0 THEN v_ins_srtcontrole_info:='Afdeling : '||rec_ins.ins_srtcontrole_opm||CHR(10)||'Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE||CHR(10)||'Doorlooptijd :'||rec_ins.ins_srtcontrole_doorlooptijd; v_ins_srtcontrole_opm :='Afdeling : '||rec_ins.ins_srtcontrole_opm||CHR(10)||'Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE; ELSE v_ins_srtcontrole_info:='Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE||CHR(10)||'Doorlooptijd :'||rec_ins.ins_srtcontrole_doorlooptijd; v_ins_srtcontrole_opm:='Standaard taak periode : '||rec_ins.INS_SRTCONTROLE_PERIODE; END IF; IF rec_ins.ins_discipline_omschrijving IS NULL THEN fac.imp_writelog ( p_import_key, 'E', v_aanduiding, 'Discipline mag niet leeg zijn: inspectie wordt niet toegevoegd.'); ELSE SELECT ins_discipline_key, 'D' INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau FROM ins_tab_discipline WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec_ins.ins_discipline_omschrijving) AND ins_discipline_module = 'INS' AND ins_discipline_verwijder IS NULL; IF rec_ins.ins_srtgroep_omschrijving IS NOT NULL THEN SELECT ins_srtgroep_key, 'G' INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau FROM ins_srtgroep WHERE UPPER (ins_srtgroep_omschrijving) = UPPER (rec_ins.ins_srtgroep_omschrijving) AND ins_srtgroep_module = 'INS' AND ins_srtgroep_verwijder IS NULL AND ins_discipline_key = v_ins_srtinstallatie_key; IF rec_ins.ins_srtdeel_code IS NOT NULL THEN SELECT ins_srtdeel_key, 'S' INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau FROM ins_srtdeel WHERE UPPER (ins_srtdeel_code) = UPPER (SUBSTR(rec_ins.ins_srtdeel_code,0,8)) AND ins_srtdeel_module = 'INS' AND ins_srtdeel_verwijder IS NULL AND ins_srtgroep_key = v_ins_srtinstallatie_key; END IF; END IF; -- Alleen de gezette bits van de dagen van de week. SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 127), 0) INTO v_week_bits FROM DUAL; -- Alleen de gezette bits van de y-ste xxxdag van de maand. SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 256 + 512 + 1024) / 256, 0) INTO v_maand_bits FROM DUAL; v_aanduiding:='Taak categorie '||rec_ins.INS_SRTCONTROLE_groep||' niet gevonden'; SELECT ctr_ins_discipline_key INTO v_ctr_ins_discipline_key FROM ctr_disc_params csp, ctr_discipline i WHERE i.ins_discipline_omschrijving='MT Onderhoud taken-'||rec_ins.INS_SRTCONTROLE_groep AND i.ins_discipline_verwijder IS NULL AND csp.ctr_ins_discipline_key = i.ins_discipline_key AND csp.ctr_disc_params_controle_type=1 ; IF rec_ins.ins_srtcontrole_omschrijving IS NOT NULL AND rec_ins.ins_srtcontrole_periode IS NOT NULL AND ((rec_ins.ins_srtcontrole_eenheid = 0) OR (rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) = 0)) AND rec_ins.ins_srtcontrole_eenheid IS NOT NULL AND rec_ins.ins_srtcontrole_mode IS NOT NULL AND (rec_ins.ins_srtcontrole_mode = 1 OR (1=1)) THEN IF LENGTH(rec_ins.ins_srtcontrole_leverancier)>0 THEN v_taak_omschrijving:=rec_ins.ins_srtcontrole_omschrijving||'-'||rec_ins.ins_srtcontrole_leverancier; ELSE IF LENGTH(rec_ins.ins_srtcontrole_opm) > 0 THEN v_taak_omschrijving:=rec_ins.ins_srtcontrole_omschrijving||'-'||rec_ins.ins_srtcontrole_opm; ELSE v_taak_omschrijving:=rec_ins.ins_srtcontrole_omschrijving; END IF; END IF; INSERT INTO ins_srtcontrole (ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ins_srtcontrole_info, ins_srtcontrole_periode, ins_srtcontrole_eenheid, -- 0=uurlijks, 1=dagelijks, 2=wekelijk, 3=maandelijk, 4=jaarlijks, null=niet ins_srtcontrole_mode, -- 0=moment-modus of 1=interval-modus ins_srtcontrole_bits, -- 1=Jan, 2=Feb, 4=mart, 8=april enz ctr_discipline_key, ins_srtcontrole_uren, ins_srtcontrole_opmerking ) VALUES (v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau, v_taak_omschrijving, v_ins_srtcontrole_info, rec_ins.ins_srtcontrole_periode, rec_ins.ins_srtcontrole_eenheid, rec_ins.ins_srtcontrole_mode, rec_ins.ins_srtcontrole_bits, v_ctr_ins_discipline_key, fac.safe_to_number(REPLACE(rec_ins.ins_srtcontrole_uren,',','.')), v_ins_srtcontrole_opm ); v_count:=v_count+1; ELSE IF rec_ins.ins_srtcontrole_mode = 0 AND (v_week_bits = 0 OR v_maand_bits = 0) THEN v_errorhint := 'Het verplichte veld "Moment" is niet (goed) ingevuld: inspectie wordt niet toegevoegd.'; ELSIF rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) > 0 THEN v_errorhint := 'Periode moet een geheel getal zijn voor dagelijkse, wekelijkse, maandelijkse en jaarlijkse taken: inspectie wordt niet toegevoegd.'; ELSE v_errorhint := 'Één of meerdere van de verplichte velden "Omschrijving", "Period", "Eenheid" of "Mode" zijn niet ingevuld: inspectie wordt niet toegevoegd.'; END IF; fac.imp_writelog ( p_import_key, 'E', v_aanduiding, v_errorhint); END IF; END IF; EXCEPTION WHEN OTHERS THEN v_count_error := v_count_error + 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); COMMIT; END; END LOOP; fac.imp_writelog ( p_import_key, 'I', 'Er zijn '||TO_CHAR(v_count)||' van de '||TO_CHAR(v_count_tot)||' taken aangemaakt', 'Verwerking'); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces inspecties afgebroken!', v_errormsg); END FZKH_UPDATE_INSPECTIES; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_SLEUTELS (p_import_key IN NUMBER) AS CURSOR c1 IS SELECT * FROM fac_imp_ins; v_count NUMBER; v_vervaldatum DATE; BEGIN fac_import_ins(p_import_key); FOR rec in c1 LOOP IF rec.prs_perslid_matchcode='4' THEN SELECT COUNT(*) INTO v_count FROM prs_perslid p WHERE p.prs_perslid_nr = rec.prs_perslid_matchwaarde AND p.prs_perslid_verwijder IS NULL AND ( p.prs_perslid_inactief IS NULL OR p.prs_perslid_inactief > SYSDATE); ELSIF rec.prs_perslid_matchcode='3' THEN SELECT COUNT(*) INTO v_count FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_naam_full = rec.prs_perslid_matchwaarde; ELSE v_count:=0; END IF; v_vervaldatum := NULL; IF UPPER(rec.ins_kenmerkwaarde1) = 'VERMIST' THEN v_vervaldatum := fac.safe_to_date(rec.ins_kenmerkwaarde2,'DD-MM-YYYY'); END IF; IF v_count=0 THEN UPDATE fac_imp_ins SET alg_locatie_code = 'FZKH', alg_gebouw_code = 'FZKH', alg_verdieping_volgnr = '2', alg_ruimte_nr = 'F201', prs_perslid_matchcode = NULL, prs_perslid_matchwaarde = NULL, ins_deel_vervaldatum = v_vervaldatum WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_kenmerkwaarde3=rec.ins_kenmerkwaarde3; END IF; END LOOP; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_SLEUTELS (p_import_key IN NUMBER) AS BEGIN fac_update_ins (p_import_key); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_ASSET_AFDKENM (p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_MT_ASSET_AFDKENM (p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 ins_deel_omschrijving, fac_imp_csv_col02 ins_kenmerk_waarde1, fac_imp_csv_col03 ins_kenmerk_waarde2 FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_ins_deel_key NUMBER; v_ins_deel_omschrijving VARCHAR2(50); v_ins_kenmerk_key NUMBER; v_kenmerk_waarde VARCHAR2(50); v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); BEGIN v_aanduiding:='Ophalen afdelings kenmerk is mislukt'; SELECT ins_kenmerk_key INTO v_ins_kenmerk_key FROm ins_kenmerk WHERE ins_kenmerk_verwijder IS null AND ins_kenmerk_code='MIGRATIE_AFDELING'; FOR rec IN sel LOOP BEGIN v_aanduiding:='Ophalen asset '||rec.ins_deel_omschrijving||' is mislukt'; SELECT ins_deel_key INTO v_ins_deel_key FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; v_kenmerk_waarde:= rec.ins_kenmerk_waarde2||'-'||rec.ins_kenmerk_waarde1; flx.setflex('INS',v_ins_kenmerk_key,v_ins_deel_key,v_kenmerk_waarde); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding, ''); END; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces MT Kenmerken afgebroken!', v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_KENMERKEN (p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_MT_KENMERKEN (p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 ins_deel_omschrijving, fac_imp_csv_col04 ins_kenmerk_label, fac_imp_csv_col05 ins_kenmerk_waarde FROM fac_imp_csv WHERE fac_import_key=p_import_key AND fac_imp_csv_col01<>'equipmentCode' AND fac_imp_csv_col05<>'NULL' ORDER BY fac_imp_csv_key; v_ins_deel_key NUMBER; v_ins_deel_omschrijving VARCHAR2(50); v_ins_kenmerk_key NUMBER; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); BEGIN FOR rec IN sel LOOP IF rec.ins_kenmerk_label<>'ftrdescr' THEN BEGIN v_ins_deel_omschrijving:=rec.ins_deel_omschrijving; IF LENGTH(v_ins_deel_omschrijving)<6 THEN v_ins_deel_omschrijving:=LPAD(rec.ins_deel_omschrijving,6, '0'); END IF; v_aanduiding := 'Object '||v_ins_deel_omschrijving||' is niet gevonden en wordt overgeslagen'; SELECT ins_deel_key INTO v_ins_deel_key FROM ins_deel WHERE ins_deel_omschrijving=v_ins_deel_omschrijving AND ins_deel_verwijder IS NULL; IF v_ins_deel_key >0 THEN v_aanduiding:='kenmerk : ' || TO_CHAR (rec.ins_kenmerk_label)||' voor object '||rec.ins_deel_omschrijving||' is niet gevonden en wordt overgeslagen'; SELECT ins_kenmerk_key INTO v_ins_kenmerk_key FROM ins_kenmerk ik, ins_v_aanwezigdiscipline i WHERE UPPER(ik.ins_kenmerk_omschrijving) = UPPER(rec.ins_kenmerk_label) AND UPPER(i.ins_discipline_omschrijving)=UPPER('Medische techniek') AND ik.ins_srtinstallatie_key=i.ins_discipline_key AND ik.ins_kenmerk_niveau='D' AND ik.ins_kenmerk_verwijder IS NULL; IF v_ins_kenmerk_key>0 AND rec.ins_kenmerk_waarde <>'NULL' THEN IF LENGTH(rec.ins_kenmerk_waarde)>50 AND rec.ins_kenmerk_label<>'Configuratie' THEN flx.setflex('INS',v_ins_kenmerk_key,v_ins_deel_key,SUBSTR(rec.ins_kenmerk_waarde,0,49)); ELSE flx.setflex('INS',v_ins_kenmerk_key,v_ins_deel_key,rec.ins_kenmerk_waarde); END IF; v_aanduiding:='Kenmerk : ' || TO_CHAR (rec.ins_kenmerk_label)||'='||rec.ins_kenmerk_waarde||' voor object '||rec.ins_deel_omschrijving||' is toegevoegd.'; fac.imp_writelog (p_import_key, 'I', v_aanduiding, ''); END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding, ''); END; END IF; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces MT Kenmerken afgebroken!', v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_RESERVERINGEN (p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_RESERVERINGEN (p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_key csv_key, fac_imp_csv_col02 ultimo_code, fac_imp_csv_col01 ultimo_code_volgnr, fac_imp_csv_col13 res_ruimte_nr, fac_imp_csv_col04 res_startdatum, fac_imp_csv_col05 res_einddatum, fac_imp_csv_col10 res_aanvrager, fac_imp_csv_col06 res_omschrijving FROM fac_imp_csv WHERE fac_import_key=p_import_key AND fac_imp_csv_col15='FLEVO' AND UPPER(fac_imp_csv_col02) <> UPPER('Reserveringen') ORDER BY fac_imp_csv_key; v_res_startdatum DATE; v_res_einddatum DATE; v_prs_perslid_key NUMBER; v_prs_perslid_key_nu NUMBER; v_res_ruimte_opstel_key NUMBER; v_res_activiteit_key NUMBER; v_rsv_ruimte_key NUMBER; v_reservering_key NUMBER; v_res_kenmerk_key NUMBER; v_status_bo NUMBER; v_status_fo NUMBER; v_volgnr NUMBER; v_no_show NUMBER; v_count NUMBER; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); BEGIN v_res_kenmerk_key:=-1; v_errormsg :='Kenmerk tbv tultimo code is niet gevonde'; SELECT res_kenmerk_key INTO v_res_kenmerk_key FROm res_kenmerk rk WHERE rk.res_kenmerk_code='ULTIMO_CODE' AND rk.res_kenmerk_verwijder IS NULL AND rk.res_activiteit_key=10; IF v_res_kenmerk_key>0 THEN FOR rec IN sel LOOP IF rec.ultimo_code <>'Reserveringen' THEN -- Heb ik de reserverig al v_volgnr:=fac.safe_to_number(rec.ultimo_code_volgnr); v_reservering_key:=0; BEGIN SELECT prs_perslid_key INTO v_prs_perslid_key FROM prs_perslid p WHERE UPPER(p.prs_perslid_email) = UPPER(rec.res_aanvrager); EXCEPTION WHEN NO_DATA_FOUND THEN v_prs_perslid_key:=3; END; BEGIN SELECT r.res_reservering_key , rrr.res_rsv_ruimte_key, rrr.res_rsv_ruimte_contact_key INTO v_reservering_key, v_rsv_ruimte_key, v_prs_perslid_key_nu FROM res_reservering r, res_rsv_ruimte rrr WHERE r.res_reservering_externnr=rec.ultimo_code AND rrr.res_reservering_key=r.res_reservering_key AND rrr.res_rsv_ruimte_volgnr = v_volgnr AND rrr.res_rsv_ruimte_verwijder IS NULL; IF v_prs_perslid_key<> v_prs_perslid_key_nu THEN UPDATE res_rsv_ruimte SET res_rsv_ruimte_contact_key=v_prs_perslid_key, res_rsv_ruimte_host_key=v_prs_perslid_key WHERE res_rsv_ruimte_key=v_rsv_ruimte_key; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_reservering_key:=-1; END; v_res_startdatum := fac.safe_to_date(SUBSTR(rec.res_startdatum,1,16),'YYYY-MM-DD HH24:MI'); v_res_einddatum := fac.safe_to_date(SUBSTR(rec.res_einddatum,1,16),'YYYY-MM-DD HH24:MI'); IF v_reservering_key < 0 -- alleen aanmaken als we hem nog niet hebben THEN v_aanduiding := 'Reservering '||rec.ultimo_code||' voor ruimte met ruimte Nr :'||rec.res_ruimte_nr||' is niet gevonden'; SELECT MIN(rro.res_ruimte_opstel_key) INTO v_res_ruimte_opstel_key from res_ruimte rr, res_ruimte_opstelling rro WHERE rr.res_ruimte_verwijder IS NULL AND rr.res_ruimte_nr LIKE rec.res_ruimte_nr||'%' AND rro.res_ruimte_key=rr.res_ruimte_key; BEGIN SELECT ra.res_activiteit_key INTO v_res_activiteit_key FROM res_activiteit ra where ra.res_activiteit_omschrijving='Vergadering'; EXCEPTION WHEN NO_DATA_FOUND THEN v_res_activiteit_key:=10; END; v_status_bo := 2; -- Alles op Geregistreerd (want alleen lopende reserveringen) v_status_fo := 2; -- Alles op Definitief (want alleen lopende reserveringen) v_no_show := TO_NUMBER (NULL); IF v_prs_perslid_key>0 AND v_res_ruimte_opstel_key >0 THEN v_errormsg := 'Fout toevoegen res_reservering'; BEGIN SELECT res_reservering_key INTO v_reservering_key FROM res_reservering r WHERE r.res_reservering_externnr=rec.ultimo_code; EXCEPTION WHEN NO_DATA_FOUND THEN v_reservering_key:=-1; END; IF v_reservering_key=-1 THEN v_errormsg := 'Fout toevoegen res_reservering ('||rec.csv_key||').'; INSERT INTO res_reservering (res_reservering_verwijder, res_reservering_externnr) VALUES (NULL, rec.ultimo_code) RETURNING res_reservering_key INTO v_reservering_key; END IF; v_errormsg := 'Fout toevoegen res_rsv_ruimte ('||rec.csv_key||').'; INSERT INTO res_rsv_ruimte (res_reservering_key, res_rsv_ruimte_volgnr, res_rsv_ruimte_opmerking, res_rsv_ruimte_omschrijving, prs_kostenplaats_key, res_rsv_ruimte_contact_key, res_rsv_ruimte_host_key, --alg_ruimte_key, res_ruimte_opstel_key, res_rsv_ruimte_cvab_mode, res_activiteit_key, res_rsv_ruimte_van, res_rsv_ruimte_tot, res_rsv_ruimte_bezoekers, res_rsv_ruimte_bezoekers_shown, res_status_bo_key, res_status_fo_key, res_rsv_ruimte_noshow, res_rsv_ruimte_externnr) VALUES (v_reservering_key, v_volgnr, NULL, SUBSTR(rec.res_omschrijving,1,60), TO_NUMBER (NULL), v_prs_perslid_key, v_prs_perslid_key, v_res_ruimte_opstel_key, NULL, -- CVAB-mode op Afhalen! v_res_activiteit_key, v_res_startdatum, v_res_einddatum, TO_NUMBER (NULL), v_no_show, v_status_bo, v_status_fo, v_no_show, NULL) RETURNING res_rsv_ruimte_key INTO v_rsv_ruimte_key; flx.setflex('RES',v_res_kenmerk_key,v_rsv_ruimte_key,rec.ultimo_code||'/'||v_volgnr); fac.trackaction ('#RESNEW', v_rsv_ruimte_key, NULL, SYSDATE, 'Gemigreerd vanuit Ultimo'); fac.imp_writelog (p_import_key, 'I', 'Reservering '||v_reservering_key||'/'||v_volgnr||' aangemaakt voor ultimo reservering '|| rec.ultimo_code||'/'||v_volgnr, ''); END IF; ELSE fac.imp_writelog (p_import_key, 'I', 'Reservering voor ultimo reservering '|| rec.ultimo_code||' reeds aangemaakt.', ''); END IF; END IF; END LOOP; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces Ultimo reserveringen afgebroken!', v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_CATERING ( p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_CATERING ( p_import_key IN NUMBER) AS CURSOR catres IS WITH rr_set AS (SELECT rr.res_reservering_externnr, rrr.res_rsv_ruimte_volgnr, rr.res_reservering_key, rrr.res_rsv_ruimte_key, /* voeg hier de kolommen toe die je nodig hebt uit rr/rrr */ ROW_NUMBER () OVER ( PARTITION BY rr.res_reservering_externnr, rrr.res_rsv_ruimte_volgnr ORDER BY rr.res_reservering_key DESC -- kies je eigen logica ) rn FROM res_reservering rr JOIN res_rsv_ruimte rrr ON rrr.res_reservering_key = rr.res_reservering_key) SELECT fac_imp_csv_col02 AS ultimo_code, fac_imp_csv_col01 AS ultimo_code_volgnr, fac_imp_csv_col13 AS ultimo_art_nr, fac_imp_csv_col14 AS ultimo_art_omschrijving, art.RES_ARTIKEL_key AS artikel_key, fac_imp_csv_col12 AS aantal, fac.safe_to_date ( TO_CHAR ( CAST ( TO_TIMESTAMP_TZ ( fac_imp_csv_col04, 'YYYY-MM-DD HH24:MI:SS.FF7 TZH:TZM') AT LOCAL AS DATE), 'DD/MM/YYYY HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS') AS van, rs.res_rsv_ruimte_key AS res_rsv_ruimte_key, rs.res_reservering_key AS reservering_key, rs.res_rsv_ruimte_volgnr AS res_rsv_ruimte_volgnr FROM fac_imp_csv fac LEFT JOIN res_artikel art ON fac.safe_to_number (fac.fac_imp_csv_col13) = fac.safe_to_number (art.res_artikel_nr) LEFT JOIN rr_set rs ON rs.res_reservering_externnr=fac.fac_imp_csv_col02 AND fac.safe_to_number(res_rsv_ruimte_volgnr)=fac.safe_to_number(fac_imp_csv_col01) AND rs.rn = 1 WHERE fac_import_key = p_import_key AND fac_imp_csv_col02 <> 'Reservering' AND fac_imp_csv_col15 = 'NULL' ORDER BY fac_imp_csv_key; -- v_res_startdatum DATE; -- v_res_einddatum DATE; -- v_prs_perslid_key NUMBER; -- v_res_ruimte_opstel_key NUMBER; -- v_res_activiteit_key NUMBER; -- v_rsv_ruimte_key NUMBER; -- v_reservering_key NUMBER; c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (500); v_reservering_key NUMBER; v_res_rsv_ruimte_key NUMBER; v_res_rsv_artikel_key NUMBER; v_ruimte_opstel_key NUMBER; v_soort VARCHAR2 (200); -- v_count NUMBER; -- v_res_kenmerk_key NUMBER; -- v_status_bo NUMBER; -- v_status_fo NUMBER; -- v_volgnr NUMBER; -- v_no_show NUMBER; BEGIN FOR rec IN catres LOOP BEGIN v_aanduiding := rec.ultimo_code || '-' || rec.ultimo_art_nr || '/1'; v_errormsg := 'Fout toevoegen rsv_artikel'; IF rec.artikel_key IS NOT NULL THEN INSERT INTO res_rsv_artikel (res_artikel_key, res_rsv_artikel_aantal, res_rsv_artikel_levering, res_status_bo_key, res_rsv_ruimte_key) VALUES (rec.artikel_key, rec.aantal, rec.van, 2, rec.res_rsv_ruimte_key) RETURNING res_rsv_artikel_key INTO v_res_rsv_artikel_key; FAC.trackaction ( '#RESUPD', rec.res_rsv_ruimte_key, 3, SYSDATE, 'Reservering ' || rec.reservering_key || '/' || rec.res_rsv_ruimte_volgnr || ' gewijzigd' || CHR (13) || 'Artikel ' || rec.ultimo_art_omschrijving || ' toegevoegd'); fac.imp_writelog ( p_import_key, 'I', 'Catering ' || rec.reservering_key || ' bijgevoegd bij Ultimo reservering ' || rec.ultimo_code, ''); ELSE fac.imp_writelog ( p_import_key, 'E', 'Catering ' || rec.reservering_key || ' NIET bijgevoegd bij Ultimo reservering ' || rec.ultimo_code, 'Error: Artikel_key is NULL, geen insert uitgevoerd.'); END IF; EXCEPTION WHEN OTHERS THEN fac.imp_writelog ( p_import_key, 'E', 'Catering ' || rec.reservering_key || ' NIET bijgevoegd bij Ultimo reservering ' || rec.ultimo_code, 'Error: ' || SQLERRM); END; END LOOP; END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_ULTIMO_MLD(p_import IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_MLD(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 ultimo_nr, fac_imp_csv_col02 mld_onderwerp, fac_imp_csv_col03 prs_perslid_behandelaar, fac_imp_csv_col04 mld_melding_plandatum, fac_imp_csv_col05 mld_melding_datum, fac_imp_csv_col06 prs_afdeling, fac_imp_csv_col07 mld_note, fac_imp_csv_col08 ins_deel_omschrijving, fac_imp_csv_col12 mld_stdmelding, fac_imp_csv_col13 mld_status, fac_imp_csv_col14 mld_substatus, fac_imp_csv_col15 mld_melding_gereeddatum, fac_imp_csv_col17 prs_perslid_melder, fac_imp_csv_col19 prs_kostenplaats_nr, fac_imp_csv_key FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_counter NUMBER; v_count_deel_ok NUMBER; v_count_deel NUMBER; v_stdmelding_key NUMBER; v_alg_onrgoed_niveau VARCHAR2(1); v_prs_perslid_melder NUMBER; v_mld_meldbron_key NUMBER; v_kenmerk_key NUMBER; v_ins_deel_key NUMBER; v_prs_perslid_behandelaar NUMBER; v_meldingsdatum DATE; v_melding_gereeddatum DATE; v_mld_key NUMBER; v_status_key NUMBER; V_prs_kostenplaats_key NUMBER; v_fac_imp_key NUMBER; v_status_kenmerk_key NUMBER; v_job_kenmerk_key NUMBER; BEGIN v_stdmelding_key := 1; -- standaard worden alle migratie meldingen op de stdmelding overig gezet v_mld_meldbron_key :=5; v_counter:=0; v_count_deel_ok:=0; v_count_deel:=0; v_aanduiding :='Ophalen melding kenmerk key met code=ULTIMO_NR is muslukt'; SELECT mld_kenmerk_key INTO v_kenmerk_key FROM mld_kenmerk WHERE mld_kenmerk_code='ULTIMO_NR'; SELECT mld_kenmerk_key INTO v_status_kenmerk_key FROM mld_kenmerk WHERE mld_kenmerk_code='ULTIMO_STATUS'; SELECT mld_kenmerk_key INTO v_job_kenmerk_key FROM mld_kenmerk WHERE mld_kenmerk_code='ULTIMO_JOB'; FOR rec IN sel LOOP v_fac_imp_key:= rec.fac_imp_csv_key; IF rec.ultimo_nr<>'Code' THEN BEGIN SELECT mld_melding_key INTO v_mld_key FROM mld_melding where mld_melding_externnr=rec.ultimo_nr; EXCEPTION WHEN NO_DATA_FOUND THEN v_mld_key:=-1; END; IF v_mld_key=-1 THEN BEGIN v_aanduiding:='Ophalen std melding gaat fout :('||rec.fac_imp_csv_key||')'|| rec.mld_stdmelding; SELECT ms.mld_stdmelding_key, ms.alg_onrgoed_niveau INTO v_stdmelding_key, v_alg_onrgoed_niveau FROM mld_stdmelding ms , ins_srtdiscipline vgt, MLD_DISCIPLINE vg WHERE UPPER(vgt.ins_srtdiscipline_omschrijving)=UPPER('Medische Techniek') AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key AND UPPER(vg.INS_DISCIPLINE_OMSCHRIJVING)=UPPER('Intern (Ultimo)') AND vg.ins_discipline_key = ms.mld_ins_discipline_key AND UPPER(ms.mld_stdmelding_omschrijving)=UPPER(rec.mld_stdmelding) AND ms.MLD_STDMELDING_VERWIJDER IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN SELECT ms.mld_stdmelding_key, ms.alg_onrgoed_niveau INTO v_stdmelding_key, v_alg_onrgoed_niveau FROM mld_stdmelding ms , ins_srtdiscipline vgt, MLD_DISCIPLINE vg WHERE UPPER(vgt.ins_srtdiscipline_omschrijving)=UPPER('Medische Techniek') AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key AND UPPER(vg.INS_DISCIPLINE_OMSCHRIJVING)=UPPER('Intern (Ultimo)') AND vg.ins_discipline_key = ms.mld_ins_discipline_key AND UPPER(ms.mld_stdmelding_omschrijving)='MIGRATIE' AND ms.MLD_STDMELDING_VERWIJDER IS NULL; END; v_ins_deel_key:=NULL; IF LENGTH(rec.ins_deel_omschrijving )>1 THEN v_aanduiding:= 'Ophalen van het asset '||rec.ins_deel_omschrijving || ' is mislukt. ('||rec.fac_imp_csv_key||')'; BEGIN SELECT ins_deel_key INTO v_ins_deel_key FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; v_count_deel_ok:=v_count_deel_ok+1; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'I', 'Ophalen van het asset '||rec.ins_deel_omschrijving || ' is mislukt voor Ultimo Job : '||rec.ultimo_nr, 'Asset nioet gevonden'); v_ins_deel_key:=NULL; v_count_deel:=v_count_deel+1; END; END IF; -- Opahlen aanvrger v_aanduiding:= 'Ophalen van de aanvrager '||rec.prs_perslid_melder || ' is mislukt.('||rec.fac_imp_csv_key||')'; BEGIN SELECT prs_perslid_key INTO v_prs_perslid_melder FROM prs_v_aanwezigperslid WHERE prs_perslid_naam=rec.prs_perslid_melder; EXCEPTION WHEN NO_DATA_FOUND THEN SELECT prs_perslid_key INTO v_prs_perslid_melder FROM prs_v_aanwezigperslid WHERE prs_perslid_naam='Jobs Migratie gebruiker'; -- v_prs_perslid_melder:=3; END; v_aanduiding:= 'Ophalen van de behandelaar '||rec.prs_perslid_behandelaar || ' is mislukt. ('||rec.fac_imp_csv_key||')'; BEGIN SELECT prs_perslid_key INTO v_prs_perslid_behandelaar FROM prs_v_aanwezigperslid WHERE prs_perslid_naam=rec.prs_perslid_behandelaar; EXCEPTION WHEN NO_DATA_FOUND THEN v_prs_perslid_behandelaar:=NULL; END; v_aanduiding:= 'Ophalen van de kostenplaats '||rec.prs_kostenplaats_nr || ' is mislukt.('||rec.fac_imp_csv_key||')'; BEGIN SELECT prs_kostenplaats_key INTO v_prs_kostenplaats_key FROM prs_kostenplaats k WHERE k.prs_kostenplaats_nr=rec.prs_kostenplaats_nr AND k.prs_kostenplaats_verwijder IS NULL; ExCEPTION WHEN NO_DATA_FOUND THEN v_prs_kostenplaats_key:=NULL; END; -- Status SELECT DECODE(rec.mld_substatus,'Historie',6,'Gesloten',6,'Nieuw',2,'Goedgekeurd',2,'Geregistreerd',2,'In behandeling',4,'Afgemeld',5,6) INTO v_status_key FROM DUAL; -- Historie \(6) is default IF rec.mld_melding_datum IS NOT null THEN v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_datum,'DD-MM-YYYY HH24:MI.SS'); v_aanduiding:= 'meldingsdatum is Ultimo meldings datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS'); ELSIF rec.mld_melding_plandatum IS NOT NULL THEN -- Ik heb geen melddatum in de epxort zitten dan maar de plandatum die altijd gevuld is. v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_plandatum,'DD-MM-YYYY HH24:MI.SS'); v_aanduiding:= 'meldingsdatum is Ultimo meldings plan datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS'); ELSIF rec.mld_melding_gereeddatum IS NOT null THEN -- Ik heb geen mld_melding_plandatum in de epxort zitten dan maar de mld_melding_gereeddatum die altijd gevuld is. v_meldingsdatum:= fac.safe_to_date(rec.mld_melding_gereeddatum,'DD-MM-YYYY HH24:MI.SS'); v_aanduiding:= 'meldingsdatum is Ultimo meldings gereed datum :'||TO_CHAR(v_meldingsdatum,'DD-MM-YYYY HH24:MI:SS'); ELSE v_meldingsdatum:=SYSDATE; v_aanduiding:= 'meldingsdatum is Ultimo meldings SYSDATE datum :'||TO_CHAR(SYSDATE,'DD-MM-YYYY HH24:MI:SS'); END IF; IF rec.mld_melding_gereeddatum IS NOT NULL THEN v_melding_gereeddatum := fac.safe_to_date(rec.mld_melding_gereeddatum,'DD-MM-YYYY HH24:MI.SS'); ELSE v_melding_gereeddatum:=NULL; END IF; IF v_stdmelding_key>-1 THEN v_counter:=v_counter+1; v_aanduiding:= 'Aanmaken van melding voor Job'|| rec.ultimo_nr||' is mislukt.'; INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_alg_locatie_key, mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_onderwerp, mld_melding_omschrijving, mld_melding_opmerking, mld_melding_behandelaar_key, mld_melding_behandelaar2_key, mld_ins_discipline_key, mld_stdmelding_key, mld_melding_t_uitvoertijd, mld_melding_einddatum, prs_perslid_key, prs_perslid_key_voor, prs_kostenplaats_key, mld_melding_status, mld_melding_spoed, MLD_MELDING_EXTERNNR) VALUES ('MLD', v_mld_meldbron_key, NULL, NULL, v_meldingsdatum, rec.mld_onderwerp, rec.mld_onderwerp, rec.mld_note, v_prs_perslid_behandelaar, -- mld_melding_behandelaar_key TO_NUMBER(NULL), -- mld_melding_behandelaar2_key TO_NUMBER(NULL), v_stdmelding_key, NULL, v_melding_gereeddatum, v_prs_perslid_melder, v_prs_perslid_melder, v_prs_kostenplaats_key, v_status_key, 3, rec.ultimo_nr ) RETURNING mld_melding_key INTO v_mld_key; flx.setflex('MLD',v_kenmerk_key,v_mld_key,rec.ultimo_nr); flx.setflex('MLD',v_status_kenmerk_key,v_mld_key,rec.mld_status); -- We slaan de Jobsstatus ook maar op flx.setflex('MLD',v_job_kenmerk_key,v_mld_key,SUBSTR(rec.mld_stdmelding,1,50)); -- We slaan de Jobssoort ook maar op. IF v_status_key = 2 THEN fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt'); ELSIF v_status_key = 4 THEN fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt.'); fac.trackaction ('#MLDACP', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' geaccepteerd.'); ELSIF v_status_key = 6 THEN fac.trackaction ('#MLDNEW', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' aangemaakt.'); fac.trackaction ('#MLDACP', v_mld_key, NULL, v_meldingsdatum, 'Ultimo melding '||rec.ultimo_nr||' geaccepteerd.'); fac.trackaction ('#MLDAFM', v_mld_key, NULL, v_melding_gereeddatum, 'Ultimo melding '||rec.ultimo_nr||' afgemeld'); ELSE fac.trackaction ('#MLDTRK', v_mld_key, NULL, NULL, 'Ultimo melding '||rec.ultimo_nr||' gemigreerd.'); END IF; IF v_mld_key>1 AND LENGTH(rec.mld_note)>0 THEN INSERT INTO mld_melding_note (mld_melding_key, mld_melding_note_aanmaak, mld_melding_note_wijzigdatum, prs_perslid_key, mld_melding_note_omschrijving, mld_melding_note_flag) VALUES (v_mld_key, v_meldingsdatum, SYSDATE, 3, -- Facilitor 'Migratie melding Ultimo melding: ' || rec.ultimo_nr||CHR(10)||'Aanvrager: '|| rec.prs_perslid_melder, 0); INSERT INTO mld_melding_note (mld_melding_key, mld_melding_note_aanmaak, mld_melding_note_wijzigdatum, prs_perslid_key, mld_melding_note_omschrijving, mld_melding_note_flag) VALUES (v_mld_key, v_meldingsdatum, SYSDATE, 3, -- Facilitor SUBSTR(rec.mld_note,1,3999), 0); END IF; IF v_ins_deel_key > 0 THEN INSERT INTO mld_melding_object(ins_deel_key, mld_melding_key, mld_melding_object_aanmaak) VALUES(v_ins_deel_key, v_mld_key, v_meldingsdatum); END IF; END IF; ELSE fac.imp_writelog (p_import_key, 'I', 'Ultimo melding '||rec.ultimo_nr||' is al bekend onder melding :'||v_mld_key, 'Ultimo meldingen aanmaak'); END IF; END IF; -- haal het object op -- haal de melder op -- haal de evt hebandelar op -- haal de stdmelding op, -- haal de status op, END LOOP; fac.imp_writelog (p_import_key, 'I', 'Er zijn in totaal '||v_counter||' meldingen aangemaakt.', 'Ultimo meldingen aanmaak'); fac.imp_writelog (p_import_key, 'I', 'Daar zijn intotaal '||v_count_deel_ok||' objecten aangekoppeld.', 'Ultimo meldingen aanmaak'); fac.imp_writelog (p_import_key, 'I', 'In totaal zijn '||v_count_deel||' objecten niet gevonden.', 'Ultimo meldingen aanmaak'); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces Ultimo meldingen afgebroken! ('||v_fac_imp_key||')'||v_aanduiding, v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_AOC_CODES(p_import IN NUMBER) AS BEGIN NULL; END; / -- AOC structuur "ID";"Descr";"ValidFromDate";"LastMutationDate";"MainGroupAocId";"GroupAocId";"Level" CREATE OR REPLACE PROCEDURE FZKH_UPDATE_AOC_CODES(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 id, fac_imp_csv_col02 Omschrijving, fac_imp_csv_col03 ValidFrom, fac_imp_csv_col04 MutationDate, fac_imp_csv_col05 aoc_disciplne_code, fac_imp_csv_col06 aoc_groep_code, fac_imp_csv_col07 aoc_level, fac_imp_csv_key csv_key FROM fac_imp_csv WHERE fac_import_key=p_import_key AND fac_imp_csv_col01<>'ID' ORDER by fac_imp_csv_key; v_ins_discipline_key NUMBER; v_srtgroep_key NUMBER; v_srtdeel_key NUMBER; v_groep_count NUMBER; v_srtdeel_count NUMBER; v_groep_totalcount NUMBER; v_srtdeel_totalcount NUMBER; v_csv_key NUMBER; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); BEGIN v_srtdeel_count:=0; v_groep_count:=0; v_aanduiding:='Ophalen discipline Medische Techniek is mislukt. Import wordt afgebroken'; SELECT ins_discipline_key INTO v_ins_discipline_key FROM ins_discipline WHERE UPPER(ins_discipline_omschrijving)=UPPER('Medische Techniek') AND ins_discipline_module='INS' AND ins_discipline_verwijder IS NULL; FOR rec in sel LOOP v_csv_key:=rec.csv_key; IF rec.aoc_level='2' THEN BEGIN SELECT ins_srtgroep_key INTO v_srtgroep_key from ins_srtgroep WHERE UPPER(ins_srtgroep_omschrijving)=UPPER(SUBSTR(rec.aoc_groep_code||' '||rec.omschrijving,1,60)) AND ins_discipline_key=v_ins_discipline_key AND ins_srtgroep_module='INS' AND ins_srtgroep_verwijder IS NULL; v_groep_totalcount:=v_groep_totalcount+1; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtgroep (ins_discipline_key, ins_srtgroep_module, ins_srtgroep_omschrijving ) VALUES (v_ins_discipline_key, 'INS', SUBSTR (TRIM (rec.aoc_groep_code||' '||rec.omschrijving), 1, 60) ) RETURNING ins_srtgroep_key INTO v_srtgroep_key; v_groep_count:=v_groep_count+1; END; END IF; IF rec.aoc_level=3 THEN BEGIN v_aanduiding:='Objectgroep niet gevonden :'||rec.aoc_groep_code; SELECT ins_srtgroep_key INTO v_srtgroep_key FROM ins_srtgroep WHERE SUBSTR(ins_srtgroep_omschrijving,1,5)=rec.aoc_groep_code AND ins_srtgroep_verwijder IS NULL; v_aanduiding:='Objectsoort niet gevonden :'||rec.aoc_groep_code; EXCEPTION WHEN NO_DATA_FOUND THEN v_srtgroep_key:=-1; fac.imp_writelog (p_import_key, 'W', 'Objectgroep niet gevonden :'||rec.aoc_groep_code,''); END; IF v_srtgroep_key>0 THEN BEGIN SELECT ins_srtdeel_key INTO v_srtdeel_key FROM ins_srtdeel WHERE ins_srtdeel_code=rec.Id AND ins_srtgroep_key=v_srtgroep_key AND ins_srtdeel_verwijder IS NULL; v_srtdeel_totalcount:=v_srtdeel_totalcount+1; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtdeel (ins_srtgroep_key, ins_srtdeel_module, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_srtdeel_binding) VALUES (v_srtgroep_key, 'INS', rec.id, rec.omschrijving, 9); -- aan ruimte en organisatie v_srtdeel_count:=v_srtdeel_count+1; END; ELSE fac.imp_writelog (p_import_key, 'W', 'Objectsrtdeel '||rec.id||' '||rec.omschrijving||'niet aangemaakt om bovenliggende groep niet is gevonden',''); END IF; END IF; END LOOP; fac.imp_writelog (p_import_key, 'S', 'Objectgroepen/aantal toegevoegd: ' || TO_CHAR (v_groep_count)||'/'||TO_CHAR (v_groep_totalcount), ''); fac.imp_writelog (p_import_key, 'S', 'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_srtdeel_count)||'/'||TO_CHAR (v_srtdeel_totalcount), ''); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ') ('||v_csv_key||')'; fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces AOC codering afgebroken!'); END; / -- Import rotine tbv de L:answeeper koppeling -- Data wordt direct naar fac_imp_csv verwerkt CREATE OR REPLACE PROCEDURE FZKH_IMPORT_LANSWEEPER(p_import IN NUMBER) AS BEGIN NULL; END; / -- fac_imp-ins wordt gevuld en verwerkt -- URL en key woirden iund e kenmerken wegegschreven, -- srtdeel CREATE OR REPLACE PROCEDURE FZKH_UPDATE_LANSWEEPER(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 asset_key, fac_imp_csv_col02 asset_name, fac_imp_csv_col03 asset_type, fac_imp_csv_col04 asset_url FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count NUMBER:=0; v_discipline VARCHAR2(50); v_srtdeel_code VARCHAR2(10); v_srtdeel_omschrijving VARCHAR2(100); --v_srtgroup_omschrijving VARCHAR2(100); BEGIN v_aanduiding := 'Ophalen disipline met key 421 is mislukt'; SELECT ins_discipline_omschrijving INTO v_discipline FROM ins_discipline where ins_discipline_key=421; -- v_discipline := 'CMDB'; v_aanduiding:='Fout bij inlezen van de Lansweeper assets'; -- zorgen dat er geen andere data in de wegzit. DELETE FROM fac_imp_ins; COMMIT; FOR rec in sel LOOP -- v_srtgroup_omschrijving:=DECODE(UPPER(SUBSTR(rec.asset_name,1,3)),'FZS','Server','FZT','Terminal','FZW','Workstation','FZL','Laptop','FZK','Kiosk','Overig'); --key", -- "name", -- "type", -- "url", IF UPPER(rec.asset_type)<>'KEY' AND UPPER(rec.asset_type)<>'NAME' AND UPPER(rec.asset_type)<>'TYPE' AND UPPER(rec.asset_type)<>'URL' THEN IF rec.asset_type=NULL THEN v_srtdeel_omschrijving:='NB'; v_srtdeel_code:='NB'; END IF; v_count:=v_count+1; INSERT INTO fac_imp_ins(ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_aantal, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, ins_deel_externnr, ins_kenmerkwaarde1, ins_kenmerkwaarde2) VALUES( v_discipline, DECODE(UPPER(SUBSTR(rec.asset_name,1,3)),'FZS','Server','FZT','Terminal','FZW','Workstation','FZL','Laptop','FZK','Kiosk','Overig'), COALESCE(SUBSTR(rec.asset_type,1,4),v_srtdeel_code), COALESCE(rec.asset_type,v_srtdeel_omschrijving), rec.asset_name, '1', 'FZKH', 'FZKH', '0', '_CMDB', rec.asset_key, 'Lansweeper Key|0='||rec.asset_key, 'Lansweeper URL|0='||rec.asset_url); END IF; END LOOP; fac.imp_writelog (p_import_key, 'I', 'Er zijn '||v_count||' '||v_discipline||'-assets toegevoegd voor verwerking',''); fac_update_ins(p_import_key); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_TD_ASSETS(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 ins_deel_omschrijving, fac_imp_csv_col02 ins_kenm_intern, fac_imp_csv_col03 ins_deel_opmerking, TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving, TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code, fac_imp_csv_col05 ins_kenm_locatiecode, fac_imp_csv_col06 ins_kenm_locatienaam, fac_imp_csv_col07 ins_kenm_ruimtenr, fac_imp_csv_col08 ins_kenm_eigncode, fac_imp_csv_col09 ins_kenm_eignnaam, TRIM(fac_imp_csv_col11) ins_groep, -- fac_imp_csv_col1 ins_verval_datum, fac_imp_csv_col12 ins_kenm_status, fac_imp_csv_col16 ins_kenm_fabrikant, fac_imp_csv_col17 ins_kenm_ruimtenaam, fac_imp_csv_col18 ins_kenm_leverancier, fac_imp_csv_col19 ins_kenm_bouwjaar, fac_imp_csv_col20 ins_kenm_type, fac_imp_csv_col21 ins_kenm_model, fac_imp_csv_col22 ins_kenm_serienr, fac_imp_csv_col23 ins_kenm_garantie, fac_imp_csv_col24 ins_kenm_instaldatum, fac_imp_csv_col25 ins_kenm_mdd_clas, fac_imp_csv_col26 ins_onderhoud_datum, fac_imp_csv_col27 ins_onderhoud_datum_laatst, fac_imp_csv_col32 ins_srtgroep_fb, fac_imp_csv_col33 ins_kenm_aanschafprijs FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_count NUMBER; v_ins_groep VARCHAR2(60); v_locatie_code VARCHAR2(10); v_gebouw_code VARCHAR2(10); v_verdieping_nr VARCHAR2(10); v_ruimte_nr VARCHAR2(25); v_huidige_locatie VARCHAR2(100); v_huidige_fys_locatie VARCHAR2(100); v_installdatum DATE; v_vervaldatum DATE; v_klantstatus VARCHAR2(100); BEGIN fac_import_file2csv(p_import_key); DELETE FROM fac_imp_ins; COMMIT; FOR rec in sel LOOP IF UPPER(rec.ins_deel_omschrijving) <>'ULTIMONR' THEN v_huidige_locatie:=''; IF rec.ins_kenm_locatiecode IS NOT NULL THEN v_huidige_locatie:=rec.ins_kenm_locatiecode||'-'||rec.ins_kenm_locatienaam; ELSE v_huidige_locatie:=''; END IF; IF rec.ins_kenm_ruimtenr IS NOT NULL THEN v_huidige_fys_locatie:=rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam; ELSE v_huidige_fys_locatie:=''; END IF; IF LENGTH(rec.ins_kenm_instaldatum)>1 THEN v_installdatum := fac.safe_to_date(rec.ins_kenm_instaldatum,'DD-MM-YYYY'); ELSE v_installdatum:=TRUNC(SYSDATE); END IF; IF LENGTH(rec.ins_groep)=0 THEN IF LENGTH(rec.ins_srtgroep_fb)=0 THEN v_ins_groep:='ONBEKEND'; ELSE v_ins_groep:=rec.ins_srtgroep_fb; END IF; ELSE v_ins_groep:=rec.ins_groep; END IF; IF LENGTH(rec.ins_kenm_ruimtenr)>0 THEN BEGIN SELECT 'FZKH', 'FZKH',alg_verdieping_code,alg_ruimte_nr INTO v_locatie_code,v_gebouw_code,v_verdieping_nr,v_ruimte_nr FROM alg_v_ruimte_gegevens a WHERE a.alg_ruimte_nr=rec.ins_kenm_ruimtenr; EXCEPTION WHEN NO_DATA_FOUND THEN v_locatie_code:='FZKH'; v_gebouw_code:='FZKH'; v_verdieping_nr:='0'; v_ruimte_nr := '_TD_MIGRATIE'; END; ELSE v_locatie_code:='FZKH'; v_gebouw_code:='FZKH'; v_verdieping_nr:='0'; v_ruimte_nr := '_TD_MIGRATIE'; END IF; -- hebben we hem al SELECT COUNT(*) INTO v_count FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; IF v_count=0 THEN INSERT INTO fac_imp_ins (ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_aanmaak, ins_deel_vervaldatum, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, ins_deel_aantal, 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 ) VALUES ('Technische Dienst', v_ins_groep, SUBSTR(rec.ins_srtdeel_code,1,8), rec.ins_srtdeel_omschrijving, rec.ins_deel_omschrijving, rec.ins_deel_opmerking, v_installdatum, v_vervaldatum, v_locatie_code, v_gebouw_code, v_verdieping_nr, v_ruimte_nr, 1, 'Locatie|0='||v_huidige_locatie, 'Model|0='||rec.ins_kenm_model, 'TypeNr|0='||rec.ins_kenm_type, 'Serienummer|0='||rec.ins_kenm_serienr, 'Bouwjaar|0='||rec.ins_kenm_bouwjaar, 'Leverancier|0='||rec.ins_kenm_leverancier, 'Fabrikant|0='||rec.ins_kenm_fabrikant, 'MDD-Classificatie|0='||TRIM(rec.ins_kenm_mdd_clas), 'Einde Garantie|0='||rec.ins_kenm_garantie, 'Status|0='||rec.ins_kenm_status, 'Installatie datum|0='||rec.ins_kenm_instaldatum, 'Onderhouddatum|0='||rec.ins_onderhoud_datum, 'Fysieke Locatie|0='||v_huidige_fys_locatie, 'InternNr|0='||rec.ins_kenm_intern, 'Aanschafprijs|0='||rec.ins_kenm_aanschafprijs ); ELSE fac.imp_writelog (p_import_key, 'W', 'Object : '||rec.ins_deel_omschrijving || ' is al bekend en wordt dus overgeslagen',''); END IF; END IF; END LOOP; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_TD_ASSETS(p_import_key IN NUMBER) AS CURSOR sel IS SELECT csv.fac_imp_csv_key regel_key, csv.fac_imp_csv_col01 ins_deel_omschrijving, csv.fac_imp_csv_col08 prs_afdeling_code FROM fac_imp_csv csv , fac_imp_ins i WHERE csv.fac_import_key=p_import_key AND UPPER(csv.fac_imp_csv_col01) <> 'ULTIMONR' AND fac_imp_csv_col01=i.ins_deel_omschrijving AND i.alg_ruimte_nr='_TD_MIGRATIE' ORDER BY fac_imp_csv_key; CURSOR sel_ctr IS SELECT fac_imp_csv_key regel_key, fac_imp_csv_col01 ins_deel_omschrijving, TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving, TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code, fac_imp_csv_col11 ins_groep, fac_imp_csv_col08 prs_afdeling_code, fac_imp_csv_col26 ctr_datum_next, fac_imp_csv_col27 ctr_datum_last FROM fac_imp_csv WHERE fac_import_key=p_import_key AND UPPER(fac_imp_csv_col01) <> 'ULTIMONR' AND ( fac_imp_csv_col26 IS NOT NULL OR fac_imp_csv_col27 IS NOT NULL) ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_error NUMBER; v_ins_deel_key NUMBER; v_prs_afdeling_key NUMBER; v_ins_srtdeel_key NUMBER; v_ins_disciplne_key NUMBER; v_ins_srtgroep_key NUMBER; v_srtcontrole_key NUMBER; v_count NUMBER; v_counter NUMBER; v_counter_update NUMBER; v_ins_deelsrtcontrole_key NUMBER; v_ctr_groep VARCHAR2(20); v_ctr_omschrijving VARCHAR2(20); v_ctr_periode NUMBER; v_ctr_eenheid NUMBER; v_ctr_mode NUMBER; v_ctr_onderhoud_datum DATE; v_ctr_discipline_key NUMBER; v_jaren NUMBER; BEGIN v_counter:=0; v_counter_update :=0; -- Objecten verwerken fac_update_ins(p_import_key); -- Nu alle objectsoorten updaten naar dat ze een ruimte of afdeling ondersteunen. UPDATE ins_srtdeel SET ins_srtdeel_binding=9 WHERE ins_srtdeel_key IN (select ins_srtdeel_key from ins_srtdeel isd, ins_srtgroep isg where isg.ins_discipline_key=641 -- Technische Dienst AND isd.ins_srtgroep_key = isg.ins_srtgroep_key); -- Objcten aan de juite afdeling koppelen FOR rec IN sel LOOP v_aanduiding :='UPDATE AFDELING: Verwerken fout in fac_imp_csv_key '||rec.regel_key; BEGIN SELECT ins_deel_key INTO v_ins_deel_key FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_deel_key:=-1; fac.imp_writelog ( p_import_key, 'W', 'Objecten niet gevonden :'||rec.ins_deel_omschrijving,''); END; SELECT COUNT(*) INTO v_count FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code and a.prs_kostenplaats_key = k.prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL; IF v_count=1 THEN SELECT prs_afdeling_key INTO v_prs_afdeling_key FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL; ELSIF v_count>1 THEN SELECT MIN(prs_afdeling_key) INTO v_prs_afdeling_key FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'T-%' -- Pakken we de teamleiders afdeling AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'STAGIARE%' -- Pakken we de teamleiders afdeling AND prs_afdeling_verwijder IS NULL; ELSE v_prs_afdeling_key:=-1; fac.imp_writelog (p_import_key, 'W', 'Afdeling niet gevonden :'||rec.prs_afdeling_code||' voor object :'||rec.ins_deel_omschrijving,''); END IF; IF v_ins_deel_key>0 AND v_prs_afdeling_key>0 THEN UPDATE ins_deel SET ins_alg_ruimte_key=v_prs_afdeling_key, ins_alg_ruimte_type='A' WHERE ins_deel_key=v_ins_deel_key; END IF; END LOOP; -- Taken aanmaken voor assets v_error:=0; BEGIN SELECT ins_discipline_key INTO v_ctr_discipline_key FROM ctr_discipline WHERE ins_discipline_omschrijving='TD-Onderhoud'; ExCEPTION WHEN NO_DATA_FOUND THEN v_error:=1; END; IF v_error=0 THEN v_ctr_omschrijving :='Onderhoud'; v_ctr_periode:=1; v_ctr_eenheid:=4; v_ctr_mode:=1; FOR rec_ctr IN sel_ctr LOOP v_aanduiding :='AANMAKEN TAKEN: Verwerken fouut in fac_imp_csv_key '||rec_ctr.regel_key; BEGIN v_error:=0; SELECT ins_srtdeel_key, ins_deel_key INTo v_ins_srtdeel_key, v_ins_deel_key FROm ins_v_deel_gegevens where ins_srtdeel_upper=UPPER(rec_ctr.ins_srtdeel_omschrijving) AND UPPER(ins_discipline_omschrijving)=UPPER('Technische Dienst') AND ins_deel_omschrijving=rec_ctr.ins_deel_omschrijving; EXCEPTION WHEN NO_DATA_FOUND THEN v_error:=1; END; IF v_error=0 THEN BEGIN SELECT MIN(ins_srtcontrole_key) INTO v_srtcontrole_key FROM ins_srtcontrole WHERE ins_srtinstallatie_key=v_ins_srtdeel_key AND ins_srtcontrole_niveau='S' AND UPPER(ins_srtcontrole_omschrijving) like UPPER('Onderhoud') GROUP BY ins_srtcontrole_key; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtcontrole (INS_SRTINSTALLATIE_KEY, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ctr_discipline_key, ins_srtcontrole_info, ins_srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_bits, ins_srtcontrole_mode, ins_srtcontrole_level) VALUES (v_ins_srtdeel_key, 'S', 'Onderhoud', v_ctr_discipline_key, 'TD Onderhoud', 1, 4, NULL, 1, 10) RETURN ins_srtcontrole_key INTO v_srtcontrole_key; END ; -- gaan we nu de geplande dtum bepalen -- IF rec_ctr.ctr_datum_next IS NULL THEN v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_last,'DD-MM-YYYY'); ELSE v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_next,'DD-MM-YYYY'); END IF; IF v_ctr_onderhoud_datum < TO_DATE('10-2025','MM-YYYY') THEN IF TO_CHAR(v_ctr_onderhoud_datum,'MM')='11' OR TO_CHAR(v_ctr_onderhoud_datum,'MM')='12' THEN v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY')); ELSE v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY'))+1; END IF; IF v_jaren>0 THEN v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,12*v_jaren); END IF; ELSIF v_ctr_onderhoud_datum = TO_DATE('10-2025','MM-YYYY') THEN v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,1); END IF; SELECT COUNT(*) INTO v_count FROM ins_deelsrtcontrole WHERE ins_deel_key=v_ins_deel_key AND ins_srtcontrole_key = v_srtcontrole_key -- AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY') AND ins_scenario_key=1; IF v_count=0 THEN INSERT INTO ins_deelsrtcontrole( ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_status, ins_scenario_key, prs_perslid_key) VALUES(v_ins_deel_key, v_srtcontrole_key, v_ctr_onderhoud_datum, 0, --status ingepland 1, -- sceario 3); -- Facilitor v_counter:=v_counter+1; ELSIF v_count=1 THEN UPDATE ins_deelsrtcontrole SET ins_deelsrtcontrole_plandatum= v_ctr_onderhoud_datum WHERE ins_deel_key =v_ins_deel_key AND ins_srtcontrole_key=v_srtcontrole_key; v_counter_update:=v_counter_update+1; END IF; ELSE fac.imp_writelog (p_import_key,'W', 'Asset '||rec_ctr.ins_srtdeel_omschrijving||' niet kunnen achterhalen, taak aanmaken op datum '||TO_CHAR(v_ctr_onderhoud_datum,'DD-MM-YYYY')||' wordt overgeslagen', 'Taak overgeslagen'); END IF; END LOOP; ELSE fac.imp_writelog (p_import_key, 'E', 'Taak groep : TD-Onderhoud is niet bekend en aanmaken taken wordt dus overgeslagen',''); END IF; fac.imp_writelog (p_import_key, 'I', 'Taak aanmaak : Er zijn '||v_counter||' taken aangemaakt',''); fac.imp_writelog (p_import_key, 'I', 'Taak update : Er zijn '||v_counter_update ||' taken geupdate',''); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', 'Importproces TD assets afgebroken! ('||v_aanduiding||')', v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_ASSETS(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col01 ins_discipline, fac_imp_csv_col04 ins_groep, fac_imp_csv_col05 ins_srtdeel_code, fac_imp_csv_col06 ins_srtdeel_omschrijving, fac_imp_csv_col07 ins_deel_opmerking, fac_imp_csv_col08 ins_deel_omschrijving, fac_imp_csv_col12 ins_kenm_aanschafprijs, fac_imp_csv_col17 ins_kenm_ruimtenr, fac_imp_csv_col18 ins_kenm_ruimtenaam, fac_imp_csv_col24 ins_kenm_eigenaar, fac_imp_csv_col25 ins_kenm_locatiecode, fac_imp_csv_col26 ins_kenm_locatienaam, fac_imp_csv_col27 ins_kenm_instaldatum, fac_imp_csv_col28 ins_verval_datum, fac_imp_csv_col33 ins_kenm_model, fac_imp_csv_col34 ins_kenm_type, fac_imp_csv_col35 ins_kenm_serienr, fac_imp_csv_col36 ins_kenm_bouwjaar, fac_imp_csv_col38 ins_kenm_leverancier, fac_imp_csv_col40 ins_kenm_service_leverancier, fac_imp_csv_col42 ins_kenm_fabrikant, fac_imp_csv_col43 ins_kenm_mdd_clas, fac_imp_csv_col44 ins_kenm_udi, fac_imp_csv_col46 ins_kenm_garantie, fac_imp_csv_col48 ins_onderhoud_datum, fac_imp_csv_col50 ins_kenm_status, fac_imp_csv_col57 ins_kenm_ordernummer FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_count NUMBER; v_locatie_code VARCHAR2(10); v_gebouw_code VARCHAR2(10); v_verdieping_nr VARCHAR2(10); v_ruimte_nr VARCHAR2(25); v_huidige_locatie VARCHAR2(100); v_huidige_fys_locatie VARCHAR2(100); v_installdatum DATE; v_vervaldatum DATE; v_klantstatus VARCHAR2(100); BEGIN fac_import_file2csv(p_import_key); v_locatie_code:='FZKH'; v_gebouw_code:='FZKH'; v_verdieping_nr:='0'; v_ruimte_nr := '_MT_MIGRATIE'; DELETE FROM fac_imp_ins; COMMIT; FOR rec in sel LOOP IF UPPER(rec.ins_discipline) <>'VAKGROEP' THEN v_huidige_locatie:=''; IF rec.ins_kenm_locatiecode IS NOT NULL THEN v_huidige_locatie:=rec.ins_kenm_locatiecode||'-'||rec.ins_kenm_locatienaam; ELSE v_huidige_locatie:=''; END IF; IF rec.ins_kenm_ruimtenr IS NOT NULL THEN v_huidige_fys_locatie:=rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam; ELSE v_huidige_fys_locatie:=''; END IF; IF LENGTH(rec.ins_kenm_instaldatum)>1 THEN v_installdatum := fac.safe_to_date(rec.ins_kenm_instaldatum,'DD-MM-YYYY'); ELSE v_installdatum:=TRUNC(SYSDATE); END IF; SELECT COUNT(*) INTO v_count FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; IF UPPER(rec.ins_kenm_status)='AF TE VOEREN' THEN IF INSTR(rec.ins_verval_datum,' ')>0 THEN v_vervaldatum:= fac.safe_to_date(SUBSTR(rec.ins_verval_datum,1,INSTR(rec.ins_verval_datum,' ')),'DD-MM-YYYY'); ELSE v_vervaldatum:= fac.safe_to_date(rec.ins_verval_datum,'DD-MM-YYYY'); END IF; ELSE v_vervaldatum:=NULL; END IF; SELECT DECODE (rec.ins_kenm_status,'Actief','Actief','Vermist','Vermist','') INTO v_klantstatus FROM dual; IF v_count=0 THEN INSERT INTO fac_imp_ins (ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, ins_deel_aanmaak, ins_deel_vervaldatum, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, ins_deel_aantal, 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 ) VALUES (rec.ins_discipline, rec.ins_groep, SUBSTR(rec.ins_srtdeel_code,1,8), rec.ins_srtdeel_omschrijving, rec.ins_deel_omschrijving, rec.ins_deel_opmerking, v_installdatum, v_vervaldatum, v_locatie_code, v_gebouw_code, v_verdieping_nr, v_ruimte_nr, 1, 'Locatie|0='||v_huidige_locatie, 'Model|0='||rec.ins_kenm_model, 'TypeNr|0='||rec.ins_kenm_type, 'Serienummer|0='||rec.ins_kenm_serienr, 'Bouwjaar|0='||rec.ins_kenm_bouwjaar, 'Leverancier|0='||rec.ins_kenm_leverancier, 'ServiceLeverancier|0='||rec.ins_kenm_service_leverancier, 'Fabrikant|0='||rec.ins_kenm_fabrikant, 'MDD-Classificatie|0='||TRIM(rec.ins_kenm_mdd_clas), 'Einde Garantie|0='||rec.ins_kenm_garantie, 'Status|0='||rec.ins_kenm_status, 'Aanschafprijs|0='||TRIM(rec.ins_kenm_aanschafprijs), 'Installatie datum|0='||rec.ins_kenm_instaldatum, 'Onderhouddatum|0='||rec.ins_onderhoud_datum, 'Klantstatus|0='||v_klantstatus, 'Afvoer datum|0='||TO_CHAR(v_vervaldatum,'DD-MM-YYYY'), 'Fysieke Locatie|0='||v_huidige_fys_locatie, 'UDI|0='||rec.ins_kenm_udi, 'Ordernummer|0='||rec.ins_kenm_ordernummer ); ELSE fac.imp_writelog (p_import_key, 'W', 'Object : '||rec.ins_deel_omschrijving || ' is al bekend en wordt dus overgeslagen',''); END IF; END IF; END LOOP; END; / CREATE OR REPLACE PROCEDURE FZKH.FZKH_UPDATE_MT_ASSETS(p_import_key IN NUMBER) AS CURSOR sel IS SELECT fac_imp_csv_col08 ins_deel_omschrijving, fac_imp_csv_col24 prs_afdeling_code FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; CURSOR sel_controle IS SELECT fac_imp_csv_col08 ins_deel_omschrijving, fac_imp_csv_col48 ctr_onderhoud_datum FROM fac_imp_csv WHERE fac_import_key=p_import_key AND fac_imp_csv_col45='ONWAAR' AND fac_imp_csv_col48 IS NOT NULL AND fac_imp_csv_col50='Actief' ORDER BY fac_imp_csv_key; CURSOR sel_controle_skip(p_ins_srtdeel_key IN NUMBER, p_ins_srtcontrole_key IN NUMBER) IS SELECT ins_srtcontrole_key from ins_srtcontrole isc WHERE isc.ins_srtinstallatie_key=p_ins_srtdeel_key AND isc.ins_srtcontrole_key <> p_ins_srtcontrole_key; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_ins_deel_key NUMBER; v_prs_afdeling_key NUMBER; v_ins_srtdeel_key NUMBER; v_srtcontrole_key NUMBER; v_count NUMBER; v_counter NUMBER; v_counter_taak NUMBER; v_log_info VARCHAR2(200); v_ins_deelsrtcontrole_key NUMBER; v_ins_srtcontrole_periode NUMBER; v_ins_deel VARCHAR2(100); v_maand VARChar2(15); BEGIN fac_update_ins(p_import_key); -- Gaan we nu die MT objecten die een verval datum hebben (status : Af te voeren') op inactief zetten ins_deel_actief=0 -- FIP sheet ondersteund geen ins_deel_inactief UPDATE ins_deel i SET i.ins_deel_actief = 0 WHERE ins_deel_key IN (SELECT i.ins_deel_key from INS_V_DEEL_GEGEVENS i, ins_deel id, ins_kenmerkdeel ikd WHERE UPPER (i.INS_DISCIPLINE_OMSCHRIJVING) = UPPER ('Medische Techniek') AND id.INS_DEEL_KEY = i.INS_DEEL_KEY AND id.ins_deel_vervaldatum IS NOT NULL AND id.ins_deel_vervaldatum < TRUNC(SYSDATE) AND id.ins_deel_actief=1 AND ikd.INS_DEEL_KEY = i.INS_DEEL_KEY AND fac.safe_to_number(ikd.INS_KENMERKDEEL_WAARDE)=191); -- Af te voeren v_counter:=0; -- Gaan we nu de objecten aan de juiste afdeling koppelen FOR rec IN sel LOOP v_ins_deel := rec.ins_deel_omschrijving; BEGIN SELECT ins_deel_key INTO v_ins_deel_key FROM ins_deel WHERE ins_deel_omschrijving=rec.ins_deel_omschrijving AND ins_deel_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_deel_key:=-1; fac.imp_writelog ( p_import_key, 'W', 'Objecten niet gevonden :'||rec.ins_deel_omschrijving,''); END; SELECT COUNT(*) INTO v_count FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code and a.prs_kostenplaats_key = k.prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL; IF v_count=1 THEN SELECT prs_afdeling_key INTO v_prs_afdeling_key FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND prs_afdeling_verwijder IS NULL; ELSIF v_count>1 THEN SELECT MIN(prs_afdeling_key) INTO v_prs_afdeling_key FROM prs_afdeling a, prs_kostenplaats k WHERE k.prs_kostenplaats_nr = rec.prs_afdeling_code AND a.prs_kostenplaats_key = k.prs_kostenplaats_key AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'T-%' -- Pakken we de teamleiders afdeling AND UPPER(a.prs_afdeling_omschrijving) NOT LIKE 'STAGIARE%' -- Pakken we de teamleiders afdeling AND prs_afdeling_verwijder IS NULL; ELSE v_prs_afdeling_key:=-1; fac.imp_writelog (p_import_key, 'W', 'Afdeling niet gevonden :'||rec.prs_afdeling_code||' voor object :'||rec.ins_deel_omschrijving,''); END IF; IF v_ins_deel_key>0 AND v_prs_afdeling_key>0 THEN UPDATE ins_deel SET ins_alg_ruimte_key=v_prs_afdeling_key, ins_alg_ruimte_type='A' WHERE ins_deel_key=v_ins_deel_key; END IF; END LOOP; -- gaan we nu de periodiek taken maken en aan de xcp records met de juiste taak start datum v_counter:=0; v_counter_taak:=0; FOR c IN sel_controle LOOP v_ins_deel := c.ins_deel_omschrijving; v_counter:=v_counter+1; -- Welk maand met het onderhoud plaats vinden SELECT CASE TO_CHAR(TO_DATE(c.ctr_onderhoud_datum,'DD-MM-YYYY'),'MM') WHEN '01' THEN 'Januari' WHEN '02' THEN 'Februari' WHEN '03' THEN 'Maart' WHEN '04' THEN 'April' WHEN '05' THEN 'Mei' WHEN '06' THEN 'Juni' WHEN '07' THEN 'Juli' WHEN '08' THEN 'Augustus' WHEN '09' THEN 'September' WHEN '10' THEN 'Oktober' WHEN '11' THEN 'November' WHEN '12' THEN 'December' ELSE 'ONBEKEND' END INTO v_maand FROM DUAL; BEGIN v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' in '||v_maand||' gaat fout. - '||v_counter; SELECT MIN(isc.ins_srtcontrole_key), i.ins_deel_key, i.ins_srtdeel_key INTO v_srtcontrole_key, v_ins_deel_key, v_ins_srtdeel_key FROM ins_srtcontrole isc, ins_deel i, ins_srtdeel isd, ins_srtgroep isg, ins_discipline id WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY AND isg.ins_srtgroep_key = isd.ins_srtgroep_key AND id.ins_discipline_key=isg.ins_discipline_key AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek') AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('PO-%'||v_maand||'%') GROUP BY i.ins_deel_key,i.ins_srtdeel_key; v_log_info:=''; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN v_aanduiding := 'Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' gaat fout. - '||v_counter; SELECT MIN(isc.ins_srtcontrole_key), i.ins_deel_key, i.ins_srtdeel_key INTO v_srtcontrole_key, v_ins_deel_key, v_ins_srtdeel_key from ins_srtcontrole isc, ins_deel i, ins_srtdeel isd, ins_srtgroep isg, ins_discipline id WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY AND isg.ins_srtgroep_key = isd.ins_srtgroep_key AND id.ins_discipline_key=isg.ins_discipline_key AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek') AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('PO-%') GROUP BY i.ins_deel_key,i.ins_srtdeel_key; v_log_info:='Object '||v_ins_deel|| 'is gekoppeld aan andere taak dan gevraagde: Onderhoud '||v_maand||' omdat deze niet gevonden kon worden'; EXCEPTION WHEN NO_DATA_FOUND THEN v_srtcontrole_key:=-1; fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Taak niet toegevoegd'); END; END; IF v_ins_deel_key>0 AND v_srtcontrole_key>0 THEN v_aanduiding:='Uitzonderingstaak niet gevonden'; v_count:=0; SELECT count(*) INTO v_count from ins_srtcontroledl_xcp isx WHERE isx.ins_srtcontrole_key=v_srtcontrole_key AND ins_deel_key=v_ins_deel_key; BEGIN -- Wat is de statdaar periode van deze srtcontrole v_aanduiding:='Periode niet gevonden voor object '||v_ins_deel||'-'|| v_srtcontrole_key; SELECT ins_srtcontrole_periode INTO v_ins_srtcontrole_periode FROm ins_srtcontrole WHERE ins_srtcontrole_key=v_srtcontrole_key; EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'W', 'Periode niet gevonden,voor object '||v_ins_deel||'-'|| v_srtcontrole_key||' Default periode naar 1', 'Taak toegevoegd'); v_ins_srtcontrole_periode:=1; END; IF v_count=0 THEN v_aanduiding:='Aanmaken XCP gaat fout voor object '||v_ins_deel||'-'|| v_srtcontrole_key; INSERT INTO ins_srtcontroledl_xcp (ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_startdat) VALUES (v_ins_deel_key, v_srtcontrole_key, fac.safe_to_number(v_ins_srtcontrole_periode), fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')); IF LENGTH(v_log_info) > 0 THEN fac.imp_writelog (p_import_key, 'W', v_log_info, 'Taak toegevoegd'); END IF; v_counter_taak:=v_counter_taak+1; END IF; -- Gaan we nu de srtcontrole die niet gelden voor dit asset een xcp record aanmaken met einddatum /* FOR c2 IN sel_controle_skip(v_ins_srtdeel_key, v_srtcontrole_key) LOOP SELECT count(*) INTO v_count from ins_srtcontroledl_xcp isx WHERE isx.ins_srtcontrole_key=c2.ins_srtcontrole_key AND ins_deel_key=v_ins_deel_key; IF v_count=0 THEN INSERT INTO ins_srtcontroledl_xcp (ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_periode, ins_srtcontroledl_xcp_eind) VALUES (v_ins_deel_key, c2.ins_srtcontrole_key, 0, fac.safe_to_date('31-12-2024','DD-MM-YYYY')); END IF; END LOOP; */ /* -- gaan we hem ook gelijk inplannen SELECT COUNT(*) INTO v_count FROM ins_deelsrtcontrole WHERE ins_deel_key=v_ins_deel_key AND ins_srtcontrole_key = v_srtcontrole_key AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY') AND ins_scenario_key=1; IF v_count=0 THEN INSERT INTO ins_deelsrtcontrole( ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_status, ins_scenario_key, prs_perslid_key) VALUES(v_ins_deel_key, v_srtcontrole_key, fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'), 0, --status ingepland 1, -- sceario 3); -- Facilitor ELSIF v_count=1 THEN UPDATE ins_deelsrtcontrole SET ins_deelsrtcontrole_plandatum= fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY') WHERE ins_deel_key =v_ins_deel_key AND ins_srtcontrole_key=v_srtcontrole_key; END IF; */ ELSE fac.imp_writelog (p_import_key, 'E', 'Taak niet aangemaakt voor '||c.ins_deel_omschrijving||' in '||v_maand||'('||v_counter||')', 'Taak niet aangemaakt'); END IF; END LOOP; -- Gaan we nu alle MT taken die vaker bij een objectsoort voor komen een periode=0 geven zodat ze standaard niet bij een object worden getoont. -- UPDATE ins_srtcontrole -- SET ins_srtcontrole_periode=0 -- WHERE ins_srtcontrole_key -- IN ( -- SELECT isc2.ins_srtcontrole_key -- FROM ( -- SELECT COUNT (*) AANTAL, ins_srtinstallatie_key -- FROM ins_srtcontrole isc -- WHERE isc.ctr_discipline_key IN ( 501, 502) -- A= MT Intern=501 MT Extern= 502 -- AND ins_srtcontrole_niveau = 'S' -- AND isc.ins_srtcontrole_omschrijving LIKE 'Onderhoud - %' -- GROUP BY ins_srtinstallatie_key) ic, -- ins_srtcontrole isc2, -- ins_srtdeel isd -- WHERE ic.aantal > 1 -- AND isc2.INS_SRTINSTALLATIE_KEY = ic.ins_srtinstallatie_key -- AND isc2.INS_SRTINSTALLATIE_KEY = isd.ins_srtdeel_key -- AND isc2.INS_SRTCONTROLE_OMSCHRIJVING LIKE 'Onderhoud - %' -- AND isc2.CTR_DISCIPLINE_KEY IN (501, 502)); -- A= MT Intern=501 MT Extern= 502 fac.imp_writelog (p_import_key, 'I', 'Taken ingelezen :'||v_counter||' , taken teogeveogd :'||v_counter_taak, 'Taken rapport'); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 150); v_errormsg := v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding, v_errormsg); fac.imp_writelog (p_import_key, 'E', 'Importproces MT assets afgebroken! Ins_deel='||v_ins_deel||'('||v_counter||')', v_errormsg); END; / CREATE OR REPLACE PROCEDURE FZKH_INSERT_ULTIMO_ASSETPIC(p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_ASSETPIC(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT fac_imp_csv_key csv_key, fac_imp_csv_col01 ultimoNr, fac_imp_csv_col02 ultimo_omschrijving, fac_imp_csv_col03 file_path1, fac_imp_csv_col04 file_path2, fac_imp_csv_col05 file_path3, fac_imp_csv_col06 file_path4 FROM fac_imp_csv WHERE fac_import_key=p_import_key AND UPPER(fac_imp_csv_col01) <> UPPER('instrumentnummer') AND fac_imp_csv_col03 <>'NULL'; v_errormsg VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_code VARCHAR2(10); v_image VARCHAR(255); v_count NUMBER:=0; V_total_count NUMBER:=0; BEGIN SELECT COUNT(*) INTO V_total_count FROM fac_imp_csv WHERE fac_import_key=p_import_key AND UPPER(fac_imp_csv_col01) <> UPPER('instrumentnummer') AND fac_imp_csv_col03 <>'NULL'; FOR rec in c1 LOOP v_image := SUBSTR(rec.file_path1, INSTR(rec.file_path1,'\',1,3)+1); UPDATE ins_deel i SET i.ins_deel_image = v_image WHERE ins_deel_omschrijving=rec.ultimonr; v_count:=v_count+1; END LOOP; fac.imp_writelog (p_import_key, 'I', 'Afbeeldingen ingelezen :'||v_total_count||' waarvan er '||v_count||' zijn verwerkt.', ''); END; / CREATE OR REPLACE PROCEDURE FZKH_INSERT_ULTIMO_BIJLAGES(p_import_key IN NUMBER) AS BEGIN NULL; END; / CREATE OR REPLACE PROCEDURE FZKH_UPDATE_ULTIMO_BIJLAGES(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT fac_imp_csv_key csv_key, fac_imp_csv_col03 classificatie FROM fac_imp_csv WHERE fac_import_key=p_import_key AND fac_imp_csv_col01<>'instrumentnummer'; v_code VARCHAR2(10); BEGIN FOR rec IN c1 LOOP BEGIN SELECT MIN(f.FAC_USRDATA_OMSCHR) code INTO v_code FROM FAC_USRDATA f, FAC_USRTAB fut WHERE fut.FAC_USRTAB_NAAM= 'BIJLAGE_MIGRATIE' AND f.FAC_USRTAB_KEY = fut.FAC_USRTAB_KEY AND LOWER(rec.classificatie) LIKE '%'||LOWER(f.FAC_USRDATA_code)||'%'; EXCEPTION WHEN NO_DATA_FOUND THEN v_code:='OVER'; END; UPDATE fac_imp_csv SET fac_imp_csv_col06=v_code WHERE fac_imp_csv_key=rec.csv_key; END LOOP; COMMIT; END; / -- RAPORTAGE VIEWS CREATE OR REPLACE VIEW FZKH_v_monthly_recurring_tasks AS -- Inspecties die dit jaar en volgend jaar nog uitgevoerd moeten worden. SELECt x.*, (SELECT prs_afdeling_omschrijving FROM ins_v_deel_gegevens WHERE ins_deel_key=x.deel_key) afdeling FROM( SELECT ig.discipline, ig.soort, ig.groep, ig.soortcode, ig.omschrijving object, ig.opmerking, ig.locatie_omschrijving locatie, ig.gebouw, ig.ruimtenr, ig.perslid persoon, ig.aantal, ig.srtcontrole_omschrijving taak, ig.ins_srtcontrole_eenheid eenheid, ig.ins_srtcontrole_periode periode, ig.taaksoort, ig.ins_deelsrtcontrole_datum inspectiedatum, ig.controlemode_omschrijving taakafhandeling, ig.ins_deelsrtcontrole_opmerking inspectie_opmerking, ins_deelsrtcontrole_status inspectie_code, ig.deelsrtcontrole_status inspectie_status, ins_controlemode_success succesvol, TO_CHAR(ig.volgendedatum, 'MM') maand, TO_CHAR(ig.volgendedatum, 'YYYY') jaar, TO_CHAR(ig.volgendedatum, 'YYYY-MM') jaarmaand, ig.ins_deelsrtcontrole_datum_org orgdatum, ig.ins_deelsrtcontrole_plandatum plandatum, ig.volgendedatum, ig.vervaldatum, ig.ins_deel_key deel_key, ig.ins_srtcontrole_key, ig.ins_deelsrtcontrole_key FROM (WITH comps(ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_datum, ins_srtcontrole_mode, ins_srtcontrole_eenheid, ins_srtcontrole_periode, ins_srtcontrole_bits, volgendedatum, discipline, soort, groep, soortcode, omschrijving, opmerking, locatie_omschrijving, gebouw, ruimtenr, aantal, srtcontrole_omschrijving, taaksoort, ins_deelsrtcontrole_datum_org, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_status, ins_controlemode_success, deelsrtcontrole_status, vervaldatum, ins_deelsrtcontrole_key) AS (SELECT * FROM ( -- 1a) Dit deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)), -- inclusief de allereerste inspectie die nog niet gereed gemeld is. SELECT di.deel_key ins_deel_key, xcp.ins_srtcontrole_key, di.ins_deelsrtcontrole_datum, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits, COALESCE(di.ins_deelsrtcontrole_plandatum, CASE WHEN di.ins_deelsrtcontrole_status IN (2, 3) AND di.ins_deelsrtcontrole_datum_org IS NULL THEN -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL). -- Periodieke taken: -- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld). -- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst. -- Er geldt dan het volgende: -- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object. -- Voor Vervanging(2) of Certificering(3): -- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum. -- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum. -- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest, -- zijn de startdatum en registratiedatum niet meer van belang. CASE -- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig. --WHEN di.ctr_ismjob = 1 --THEN -- ins_deelsrtcontrole_freezedate WHEN xcp.ctr_controle_type = 1 THEN -- Controle(1). CASE WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak THEN xcp.ins_srtcontroledl_xcp_startdat ELSE xcp.ins_deel_aanmaak END ELSE -- Vervanging(2), Certificering(3). CASE WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak THEN xcp.ins_srtcontroledl_xcp_startdat ELSE fac.nextcyclusdate( -- er is nog geen inspectie geweest, dus de laatste inspectie is null COALESCE( NULL, GREATEST( COALESCE(xcp.ins_srtcontroledl_xcp_startdat, xcp.ins_deel_aanmaak), COALESCE(xcp.ins_deel_aanmaak, xcp.ins_srtcontroledl_xcp_startdat))), xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits, 1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum. 0) -- Er geldt dat (ctr_ismjob = 0) END END WHEN di.ins_deelsrtcontrole_status IN (2, 3) AND di.ins_deelsrtcontrole_datum_org IS NOT NULL THEN -- Gestart(2) en niet de allereerste inspectie. di.ins_deelsrtcontrole_datum_org ELSE -- Status is Gereed gemeld(5) of Voltooid(6). CASE xcp.ins_srtcontrole_mode WHEN 0 THEN -- Moment mode: ga uit van de originele berekende inspectiedatum. di.ins_deelsrtcontrole_datum_org ELSE -- Interval mode: ga uit van de werkelijke inspectiedatum. di.ins_deelsrtcontrole_datum END END) volgendedatum, discipline, soort, groep, soortcode, omschrijving, opmerking, locatie_omschrijving, gebouw, ruimtenr, aantal, srtcontrole_omschrijving, ctr_discipline_omschrijving taaksoort, ins_deelsrtcontrole_datum_org, controlemode_omschrijving, ins_deelsrtcontrole_opmerking, perslid, ins_deelsrtcontrole_plandatum, di.ins_deelsrtcontrole_status, COALESCE( (SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key FROM ins_deelsrtcontrole di2 WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)), -1) ins_controlemode_success, CASE di.ins_deelsrtcontrole_status WHEN 0 THEN lcl.L('lcl_ins_controle_pending') WHEN 2 THEN lcl.L('lcl_ins_controle_gestart') WHEN 3 THEN lcl.L('lcl_ins_controle_ter_uitvoer') WHEN 5 THEN CASE WHEN ((SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key FROM ins_deelsrtcontrole di2 WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1) THEN lcl.L('lcl_ins_controlemode_approved') ELSE lcl.L('lcl_ins_controlemode_deprecated') END WHEN 6 THEN CASE WHEN ((SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1) THEN lcl.L('lcl_ins_controlemode_approved') ELSE lcl.L('lcl_ins_controlemode_deprecated') END END deelsrtcontrole_status, xcp.ins_srtcontrole_eind vervaldatum, di.ins_deelsrtcontrole_key FROM ins_v_udr_deelinspect di, ins_v_defined_inspect_xcp xcp, ctr_disc_params dp WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND di.deel_key = xcp.ins_deel_key AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key AND dp.ctr_disc_params_ismjob = 0 AND xcp.ins_srtcontrole_eenheid > 2 AND xcp.ins_scenario_key = 1 AND xcp.ins_srtcontrole_periode > 0 AND di.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole id2 WHERE id2.ins_deel_key = di.deel_key AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key AND id2.ins_scenario_key = 1) UNION ALL -- 1b) Dit deel bepaald de allereerste inspectie van een taak die nog niet ingepland of gestart is. Er is dus nog geen ins_deelsrtcontrole record van SELECT d.deel_key ins_deel_key, xcp.ins_srtcontrole_key, NULL, xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits, -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL). -- Periodieke taken: -- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld). -- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst. -- Er geldt dan het volgende: -- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object. -- Voor Vervanging(2) of Certificering(3): -- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum. -- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum. -- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest, -- zijn de startdatum en registratiedatum niet meer van belang. CASE -- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig. --WHEN xcp.ctr_ismjob = 1 --THEN -- xcp.ins_deelsrtcontrole_freezedate WHEN xcp.ctr_controle_type = 1 THEN -- Controle(1). CASE WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak THEN xcp.ins_srtcontroledl_xcp_startdat ELSE xcp.ins_deel_aanmaak END ELSE -- Vervanging(2), Certificering(3). CASE WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak THEN xcp.ins_srtcontroledl_xcp_startdat ELSE fac.nextcyclusdate( -- er is nog geen inspectie geweest, dus de laatste inspectie is null COALESCE( NULL, GREATEST( COALESCE(xcp.ins_srtcontroledl_xcp_startdat, xcp.ins_deel_aanmaak), COALESCE(xcp.ins_deel_aanmaak, xcp.ins_srtcontroledl_xcp_startdat))), xcp.ins_srtcontrole_mode, xcp.ins_srtcontrole_eenheid, xcp.ins_srtcontrole_periode, xcp.ins_srtcontrole_bits, 1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum. 0) -- Er geldt dat (ctr_ismjob = 0) END END volgendedatum, d.discipline, d.soort, d.groep, d.soortcode, d.omschrijving, d.opmerking, d.locatie_omschrijving, d.gebouw, d.ruimtenr, d.aantal, (SELECT isc.ins_srtcontrole_omschrijving FROM ins_srtcontrole isc WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) srtcontrole_omschrijving, (SELECT cd.ins_discipline_omschrijving FROM ctr_discipline cd, ins_srtcontrole isc WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND isc.ctr_discipline_key = cd.ins_discipline_key) taaksoort, ins_deelsrtcontrole_datum_org, NULL controlemode_omschrijving, ins_deelsrtcontrole_opmerking, NULL perslid, ins_deelsrtcontrole_plandatum, -1 ins_deelsrtcontrole_status, -1 ins_controlemode_success, lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status, xcp.ins_srtcontrole_eind vervaldatum, NULL ins_deelsrtcontrole_key FROM ins_v_udr_deel d, ins_deelsrtcontrole idsc, ins_v_defined_inspect_xcp xcp, ctr_disc_params dp WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+) AND xcp.ins_deel_key = idsc.ins_deel_key(+) AND xcp.ins_scenario_key = idsc.ins_scenario_key(+) AND xcp.ins_deel_key = d.deel_key AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key AND dp.ctr_disc_params_ismjob = 0 AND xcp.ins_srtcontrole_eenheid > 2 AND xcp.ins_scenario_key = 1 AND idsc.ins_deel_key IS NULL AND idsc.ins_srtcontrole_key IS NULL AND xcp.ins_srtcontrole_periode > 0 AND (idsc.ins_deelsrtcontrole_key IS NULL OR idsc.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole id2 WHERE id2.ins_deel_key = d.deel_key AND id2.ins_srtcontrole_key = xcp.ins_srtcontrole_key AND id2.ins_scenario_key = 1))) UNION ALL -- 1c) Dit deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend jaar. SELECT m.ins_deel_key, m.ins_srtcontrole_key, NULL ins_deelsrtcontrole_datum, m.ins_srtcontrole_mode, m.ins_srtcontrole_eenheid, m.ins_srtcontrole_periode, m.ins_srtcontrole_bits, fac.nextcyclusdate(m.volgendedatum, m.ins_srtcontrole_mode, m.ins_srtcontrole_eenheid, m.ins_srtcontrole_periode, m.ins_srtcontrole_bits, 1, 0), m.discipline, m.soort, m.groep, m.soortcode, m.omschrijving, m.opmerking, m.locatie_omschrijving, m.gebouw, m.ruimtenr, m.aantal, m.srtcontrole_omschrijving, m.taaksoort, NULL ins_deelsrtcontrole_datum_org, NULL controlemode_omschrijving, NULL ins_deelsrtcontrole_opmerking, NULL perslid, NULL ins_deelsrtcontrole_plandatum, -1 ins_deelsrtcontrole_status, -1 ins_controlemode_success, lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status, m.vervaldatum, NULL ins_deelsrtcontrole_key FROM comps m WHERE TRUNC(fac.nextcyclusdate(m.volgendedatum, m.ins_srtcontrole_mode, m.ins_srtcontrole_eenheid, m.ins_srtcontrole_periode, m.ins_srtcontrole_bits, 1, 0), 'YYYY') <= TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')) SELECT * FROM comps) ig WHERE (ig.vervaldatum IS NULL OR ig.vervaldatum > ig.volgendedatum) AND ig.volgendedatum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY') AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') AND TRUNC(ig.volgendedatum, 'YYYY') < TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') -- 1 januari in het jaar dat 2 jaar verder ligt niet meetellen. UNION ALL -- 2) Inspecties die vorig jaar en dit jaar zijn uitgevoerd, uitgezonderd de laatste. SELECT di.discipline, di.soort, di.groep, di.soortcode, di.omschrijving object, di.opmerking, di.locatie_omschrijving locatie, di.gebouw, di.ruimtenr, di.perslid persoon, di.aantal, di.srtcontrole_omschrijving taak, sc.ins_srtcontrole_eenheid eenheid, sc.ins_srtcontrole_periode periode, di.ctr_discipline_omschrijving taaksoort, di.ins_deelsrtcontrole_datum inspectiedatum, di.controlemode_omschrijving taakafhandeling, di.ins_deelsrtcontrole_opmerking inspectie_opmerking, (SELECT ins_deelsrtcontrole_status FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key) inspectie_code, CASE (SELECT di2.ins_deelsrtcontrole_status FROM ins_deelsrtcontrole di2 WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key) WHEN 0 THEN lcl.L('lcl_ins_controle_pending') WHEN 2 THEN lcl.L('lcl_ins_controle_gestart') WHEN 3 THEN lcl.L('lcl_ins_controle_ter_uitvoer') WHEN 5 THEN CASE WHEN ((SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1) THEN lcl.L('lcl_ins_controlemode_approved') ELSE lcl.L('lcl_ins_controlemode_deprecated') END WHEN 6 THEN CASE WHEN ((SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1) THEN lcl.L('lcl_ins_controlemode_approved') ELSE lcl.L('lcl_ins_controlemode_deprecated') END END inspectie_status, COALESCE((SELECT icm.ins_controlemode_success FROM ins_controlemode icm WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key FROM ins_deelsrtcontrole di2 WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)), -1) ins_controlemode_success, TO_CHAR(di.ins_deelsrtcontrole_datum, 'MM') maand, TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY') jaar, TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY-MM') jaarmaand, di.ins_deelsrtcontrole_datum_org orgdatum, di.ins_deelsrtcontrole_plandatum plandatum, di.ins_deelsrtcontrole_datum volgendedatum, di.vervaldatum, di.deel_key, sc.ins_srtcontrole_key, di.ins_deelsrtcontrole_key FROM ins_v_udr_deelinspect di, ins_srtcontrole sc, ctr_disc_params dp WHERE di.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.ctr_discipline_key = dp.ctr_ins_discipline_key AND dp.ctr_disc_params_ismjob = 0 AND sc.ins_srtcontrole_eenheid > 2 AND di.ins_deelsrtcontrole_datum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY') AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') AND di.ins_deelsrtcontrole_key NOT IN (SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole id2 WHERE id2.ins_deel_key = di.deel_key AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key AND id2.ins_scenario_key = 1) ) x; -- MT : RAPPORT TBV PROEFPLAATSINGEN -- EINDE RAPPORTAGE VIEWS -- Domeinveld MT assets CREATE OR REPLACE VIEW FZKH_V_MT_ASSETS ( ins_deel_key, ins_deel_omschrijving, ins_srtdeel, ins_deel_status ) AS SELECT i.ins_deel_key, iv.ins_deel_omschrijving, iv.ins_srtdeel_omschrijving, i.ins_deel_actief FROM ins_v_deel_gegevens iv , ins_deel i, ins_kenmerkdeel ikd, ins_kenmerk ik WHERE UPPER(iv.ins_discipline_omschrijving)=UPPER('Medische Techniek') AND i.ins_deel_key = iv.ins_deel_key AND ( i.ins_deel_vervaldatum IS NULL OR i.ins_deel_vervaldatum > SYSDATE) AND ikd.ins_deel_key = i.ins_deel_key AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key AND ik.ins_kenmerk_code='ASSET_CUSTSTATUS' AND ikd.ins_kenmerkdeel_waarde=882; -- IN ONDERHOUD -- Domeinveld MT ruimktes CREATE OR REPLACE VIEW FZKH_V_MT_RUIMTES ( alg_ruimte_key, alg_ruimte_tekst ) AS SELECT alg_ruimte_key, CONCAT(CONCAT(alg_ruimte_nr,' - '),alg_ruimte_omschrijving) alg_ruimte_tekst FROM alg_v_ruimte_gegevens; -- Domeinveld Alle MT-Teamleiders CREATE OR REPLACE VIEW FZKH_V_MT_TEAMLEIDERS ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE gg.fac_groep_key = 601 -- Alle MT-Teamleiders A=661 P=601 AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_MT_TEAMLEIDERS' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 661 -- Alle MT-Teamleiders A=661 P=601 AND prs_perslid_key = pf.prs_perslid_key); -- Domeinveld Alle Teamleiders in FZKH CREATE OR REPLACE VIEW FZKH_V_TEAMLEIDERS_ALL ( prs_perslid_key, prs_perslid_naam_full, prs_afdeling_naam, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf, prs_afdeling a WHERE gg.fac_groep_key = 701 -- Alle FZKH Teamleiders AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, a.prs_afdeling_omschrijving , TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf, prs_perslid p,prs_afdeling a WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_TEAMLEIDERS_ALL' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND pf.prs_perslid_key=p.prs_perslid_key AND P.prs_afdeling_key = a.prs_afdeling_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 701 -- Alle MT-Teamleiders A=661 P=601 AND prs_perslid_key = pf.prs_perslid_key); -- Domeinveld Medewerkers CREATE OR REPLACE VIEW FZKH_V_MEDEWERKERS ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL -- Via SCIM AND p.prs_perslid_key = pf.prs_perslid_key; -- Domeinveld Hoofden (ICT) CREATE OR REPLACE VIEW FZKH_V_HOOFDEN_ICT ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE gg.fac_groep_key = 101 -- Hoofden (ICT) AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_HOOFDEN_ICT' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 101 -- Hoofden (ICT) AND prs_perslid_key = pf.prs_perslid_key); -- Domeinveld Architecten (ICT) CREATE OR REPLACE VIEW FZKH_V_ARCHITECTEN_ICT ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE gg.fac_groep_key = 102 -- Architecten (ICT) AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_ARCHITECTEN_ICT' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 102 -- Architecten (ICT) AND prs_perslid_key = pf.prs_perslid_key); -- Domeinveld Teamleiders (ICT) CREATE OR REPLACE VIEW FZKH_V_TEAMLEIDERS_ICT ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE gg.fac_groep_key = 103 -- Teamleiders (ICT) AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_TEAMLEIDERS_ICT' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 103 -- Teamleiders (ICT) AND prs_perslid_key = pf.prs_perslid_key); -- Domeinveld Alle ICT-ers CREATE OR REPLACE VIEW FZKH_V_ICT_ALL ( prs_perslid_key, prs_perslid_naam_full, prs_perslid_naam_friendly, prs_perslid_verwijder ) AS SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, pf.prs_perslid_verwijder FROM fac_gebruikersgroep gg, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE gg.fac_groep_key = 104 -- Alle ICT-ers AND gg.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_apikey IS NULL AND p.prs_perslid_externid IS NOT NULL AND p.prs_perslid_key = pf.prs_perslid_key UNION ALL -- Personen behouden als ooit gebruikt! SELECT DISTINCT pf.prs_perslid_key, pf.prs_perslid_naam_full, pf.prs_perslid_naam_friendly, TRUNC (SYSDATE, 'yyyy') FROM fac_kenmerkdomein kd, mld_srtkenmerk sk, mld_kenmerk k, mld_kenmerkmelding km, prs_v_perslid_fullnames_all pf WHERE UPPER (kd.fac_kenmerkdomein_objectnaam) = 'FZKH_V_ICT_ALL' AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = pf.prs_perslid_key AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep WHERE fac_groep_key = 104 -- Alle ICT-ers AND prs_perslid_key = pf.prs_perslid_key); -- ICT-notificaties (CUST01 t/m CUST08) op basis van kenmerkvelden! --481 Wijziging Business Analisten Request for analyse 4 uren 2 dagen Algemeen --482 Wijziging Architecten Request for change 4 uren 2 dagen Algemeen --483 Wijziging Standaard wijziging Standaard wijziging 4 uren 2 dagen Standaard wijziging --484 Wijziging Repeating change Repeating change 4 uren 2 dagen Repeating change --485 Wijziging Emergency change Emergency change 4 uren 2 dagen Emergency change --486 Wijziging Configuratie change Configuratie change (algemeen) 4 uren 2 dagen Configuratie change --487 Wijziging Configuratie change Configuratie change HiX 4 uren 2 dagen Configuratie change --462 Project Project Aanhaken bestaand project 4 uren 2 dagen Project --461 Project Project Project 4 uren 2 dagen Project --101 Service Request HiX Autorisaties 4 uren 2 dagen HiX --105 Service Request HiX Tijdelijke rechten HiX 4 uren 2 dagen HiX CREATE OR REPLACE VIEW FZKH_V_NOTI_ICT_APPR ( code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key ) AS SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (391, 511, 611) -- Goedkeuring intake (hoofd of teamleider) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST01' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, ud.fac_usrdata_omschr2 xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, fac_v_aanwezigusrdata ud, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (483, 485) -- Standaard wijziging/Emergency change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (444, 664) -- Goedkeuring analyse (architecten) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key AND sn.fac_srtnotificatie_code = 'CUST02' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key = 484 -- Repeating change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (564) -- Goedkeuring analyse (teamleider) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST02' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (452, 570, 672) -- Goedkeuring (teamleider) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST03' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (483, 484, 485) -- Standaard wijziging/Repeating change/Emergency change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (464, 582, 684) -- Buddy check door (Alle ICT-ers) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST04' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (486, 487) -- Configuratie change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (707, 727) -- Teamleider akkoord AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST05' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, ud.fac_usrdata_omschr2 xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, fac_v_aanwezigusrdata ud, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (486, 487) -- Configuratie change AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key = 729 -- Autorisatiecommissie akkoord benodigd AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key AND sn.fac_srtnotificatie_code = 'CUST06' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, ud.fac_usrdata_omschr2 xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, fac_v_aanwezigusrdata ud, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (461, 462) -- Project/Aanhaken bestaand project AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (329, 354) -- Goedkeuring (architecten) AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key AND sn.fac_srtnotificatie_code = 'CUST07' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), '##STDMLD##', sm.mld_stdmelding_omschrijving), m.mld_melding_key, NULL, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, --mld_v_aanwezigkenmerk k, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key IN (101, 105, 481, 482) -- Request for analyse/Request for change/HiX-Autorisaties/HiX-Tijdelijke rechten AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key IN (164, 170, 744, 754) -- Akkoord leidinggevende AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST08' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_ICT_APPR' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) ; -- Notificaties MT-Teamleider -- CUST11 naar MT Teamleider die NOn-Conform moet goedkeuren, -- CUST12 naar Teamledier die Non-Conform moet goedkeuren CREATE OR REPLACE VIEW FZKH_V_NOTI_MT_TEAMLDR ( code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key ) AS SELECT sn.fac_srtnotificatie_code code, NULL sender, NULL receiver, 'Graag uw goedkeuring op Non-Conform aanvraag.' text, m.mld_melding_key key, NULL par1, NULL par2, NULL xkey, p.prs_perslid_email||';medischetechniek@flevoziekenhuis.nl' xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, mld_v_aanwezigkenmerkmelding km2, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key = 503 -- Non_conform AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key = 885 -- Akkoord ophalen kenmerk AND fac.safe_to_number(km.mld_kenmerkmelding_waarde)=61 AND m.mld_melding_key = km2.mld_melding_key AND km2.mld_kenmerk_key=883 -- MT Teamleider AND fac.safe_to_number(km2.mld_kenmerkmelding_waarde)=p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST11' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_MT' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION SELECT sn.fac_srtnotificatie_code code, NULL sender, NULL receiver, 'Graag uw goedkeuring op Afkeur object aanvraag.' text, m.mld_melding_key key, NULL par1, NULL par2, NULL xkey, p.prs_perslid_email||';medischetechniek@flevoziekenhuis.nl' xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, mld_stdmelding sm, mld_v_aanwezigkenmerkmelding km, mld_v_aanwezigkenmerkmelding km2, prs_perslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key = 502 -- Afkeur object AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND m.mld_melding_key = km.mld_melding_key --AND km.mld_kenmerk_key = k.mld_kenmerk_key --AND k.mld_srtkenmerk_key IN (-1) AND km.mld_kenmerk_key = 893 -- Akkoord ophalen kenmerk AND fac.safe_to_number(km.mld_kenmerkmelding_waarde)=61 AND m.mld_melding_key = km2.mld_melding_key AND km2.mld_kenmerk_key=894 -- MT Teamleider AND fac.safe_to_number(km2.mld_kenmerkmelding_waarde)=p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST12' AND nj.fac_notificatie_job_view = 'FZKH_V_NOTI_MT' AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)); -- Notificatie naar Afdel Teamleiders -- CUST09 naar MT team afdeling bij afmelding acceptatie CREATE OR REPLACE VIEW FZKH_V_NOTI_MT_AFDTEAMLDR ( code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile, fac_srtnotificatie_key, attachments, xsender, prs_bedrijfadres_key ) AS SELECT sn.fac_srtnotificatie_code code, NULL sender, NULL receiver, 'Asset '||iv.ins_deel_omschrijving||' ('||iv.ins_deel_opmerking||') is vrijgegeven' text, m.mld_melding_key key, NULL par1, NULL par2, iv.ins_deel_key xkey, (SELECT (MAX(p.prs_perslid_email)||';medischetechniek@flevoziekenhuis.nl') FROM prs_perslid p, prs_afdeling pa WHERE UPPER(pa.prs_afdeling_omschrijving) = UPPER('T-' || COALESCE (iv.prs_afdeling_omschrijving, iv.alg_ruimte_nr)) AND p.prs_afdeling_key = pa.prs_afdeling_key AND pa.prs_afdeling_verwijder IS NULL AND p.prs_perslid_verwijder IS NULL) xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM mld_melding m, fac_tracking ft, mld_melding_object mmo, ins_v_deel_gegevens iv, fac_srtnotificatie sn, FAC_NOTIFICATIE_JOB fnj WHERE m.mld_stdmelding_key=501 --- A=501 AND m.mld_melding_status=5 AND mmo.mld_melding_key=m.mld_melding_key AND iv.ins_deel_key = mmo.ins_deel_key AND ft.fac_tracking_refkey=m.mld_melding_key AND ft.fac_srtnotificatie_key=47 AND sn.fac_srtnotificatie_code = 'CUST09' AND fnj.FAC_NOTIFICATIE_JOB_VIEW='FZKH_V_NOTI_MT' AND ft.FAC_TRACKING_DATUM> COALESCE (fnj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)); -- Object overzicjt per afdefling -- Alleen actieve en niet vervallen objecten. CREATE OR REPLACE VIEW FZKH_V_MT_OBJECT_AFDELING ( fclt_3d_afdeling_key, ins_deel_key, ins_deel_omschrijving, ins_deel_serienummer, ins_deel_opmerking, prs_afdeling_omschrijving, ins_srt_controle, volgende_datum_onderhoud, installatie_datum, ins_deel_image ) AS SELECT pa.prs_afdeling_key, iv.ins_deel_key, iv.ins_deel_omschrijving, (SELECT ikd.ins_kenmerkdeel_waarde from ins_kenmerkdeel ikd, ins_kenmerk ik WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key AND ikd.ins_deel_key=iv.ins_deel_key AND ik.ins_kenmerk_verwijder IS NULL AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ik.ins_kenmerk_code='SERIENUMMER') serienummer, iv.ins_deel_opmerking, pa.prs_afdeling_omschrijving, isc.ins_srtcontrole_omschrijving, TO_CHAR(ins.nextcyclusdate(iv.ins_deel_key,isc.INS_SRTCONTROLE_key,1),'DD-MM-YYYY') volgende_datum_onderhoud, (SELECT ikd.ins_kenmerkdeel_waarde from ins_kenmerkdeel ikd, ins_kenmerk ik WHERE ikd.ins_kenmerk_key = ik.ins_kenmerk_key AND ikd.ins_deel_key=iv.ins_deel_key AND ik.ins_kenmerk_verwijder IS NULL AND ikd.ins_kenmerkdeel_verwijder IS NULL AND ik.ins_kenmerk_code='INSTAL_DATUM') installate_datum, i.ins_deel_image FROM ins_v_deel_gegevens iv, ins_deel i, ins_srtcontroledl_xcp xcp, ins_srtcontrole isc, prs_afdeling pa WHERE UPPER (iv.ins_discipline_omschrijving) = UPPER ('Medische Techniek') AND iv.ins_deel_key=i.ins_deel_key AND i.ins_deel_actief=1 AND (i.ins_deel_vervaldatum IS NULL OR i.ins_deel_vervaldatum>SYSDATE) AND xcp.INS_DEEL_KEY (+) = i.INS_DEEL_KEY AND isc.INS_SRTCONTROLE_KEY(+) = xcp.INS_SRTCONTROLE_KEY AND iv.prs_afdeling_key=pa.prs_afdeling_key; CREATE OR REPLACE VIEW FZKH_V_MT_NEXT_OBJECTNR ( ins_deel_omschrijving ) AS SELECT MAX(i.ins_deel_omschrijving)+1 FROM ins_v_deel_gegevens i WHERE fac.safe_to_number(i.ins_deel_omschrijving) IS NOT NULL AND SUBSTR(I.ins_deel_omschrijving,1,2)=TO_CHAR(SYSDATE,'YY') AND i.ins_discipline_key IN (281, 641); -- MT Manadleijks onderhgoud notificatie view initiele oppzet CREATE OR REPLACE VIEW FZKH_V_MT_TAKEN_MAAND ( ins_deel_key, ins_deel_omschrijving, ins_deel_opmerking, eigenaar_soort, extra_key, locatie, ins_srtcontrole, status, plandatum, kleur, serienummer, email ) AS SELECT sel.*, (SELECT ikd.INS_KENMERKDEEL_WAARDE from INS_KENMERKDEEL ikd where ikd.ins_deel_key=sel.ins_deel_key AND ikd.ins_kenmerk_key=106 AND ikd.INS_KENMERKDEEL_VERWIJDER IS NULL) serienummer, (SELECT COALESCE(MAX(p.prs_perslid_email),'medischetechniek@flevoziekenhuis.nl') email FROM prs_perslid p, prs_afdeling pa WHERE UPPER(pa.PRS_AFDELING_omschrijving) = UPPER('T-' || sel.locatie) AND p.PRS_AFDELING_KEY = pa.PRS_AFDELING_KEY AND pa.PRS_AFDELING_VERWIJDER IS NULL AND p.PRS_PERSLID_VERWIJDER IS NULL) email FROM ( -- toekomsige taken zonder ins_deelsrtcontrole SELECT iv.ins_deel_key, iv.INS_DEEL_OMSCHRIJVING, iv.INS_DEEL_OPMERKING, CASE WHEN iv.PRS_AFDELING_key > 0 THEN 'Afdeling' ELSE 'Ruimte' END eigenaar_soort, COALESCE (iv.PRS_AFDELING_key, iv.ALG_RUIMTE_KEY) eigenaar_key, COALESCE (iv.PRS_AFDELING_OMSCHRIJVING, iv.ALG_RUIMTE_NR) locatie, isc.INS_SRTCONTROLE_OMSCHRIJVING, 'Verwacht' status, TO_CHAR(TRUNC(ins.nextcyclusdate(iv.ins_deel_key, isc.ins_srtcontrole_key, 1, 1), 'dd'),'DD-MM-YYYY') plandatum, '#000000' kleur FROM INS_V_DEEL_GEGEVENS iv, ins_srtcontroledl_xcp xcp, ins_srtcontrole isc WHERE UPPER (iv.INS_DISCIPLINE_OMSCHRIJVING) = UPPER ('Medische Techniek') AND xcp.INS_DEEL_KEY = iv.INS_DEEL_KEY AND isc.INS_SRTCONTROLE_KEY = xcp.INS_SRTCONTROLE_KEY AND TRUNC(ins.nextcyclusdate(iv.ins_deel_key, isc.ins_srtcontrole_key, 1, 1), 'dd') <= TRUNC(ADD_MONTHS(SYSDATE,3), 'dd') AND (SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deel_key = iv.ins_deel_key AND idsc2.ins_srtcontrole_key = isc.ins_srtcontrole_key AND idsc2.ins_scenario_key = isc.ins_scenario_key AND idsc2.ins_deelsrtcontrole_status != 6) IS NULL -- ALl taken die al gestart en inbehandeling zijn maar nbiet via een melding UNION SELECT iv.ins_deel_key, iv.INS_DEEL_OMSCHRIJVING, iv.INS_DEEL_OPMERKING, CASE WHEN iv.PRS_AFDELING_key > 0 THEN 'Afdeling' ELSE 'Ruimte' END eigenaar_soort, COALESCE (iv.PRS_AFDELING_key, iv.ALG_RUIMTE_KEY) eigenaar_key, COALESCE (iv.PRS_AFDELING_OMSCHRIJVING, iv.ALG_RUIMTE_NR) locatie, isc.INS_SRTCONTROLE_OMSCHRIJVING, 'In behandeling' status, TO_CHAR(TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM),'DD-MM-YYYY') plandatum, CASE WHEN TRUNC(SYSDATE)-TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM)>30 THEN '#FF0000' ELSE '#000000' END kleur FROM INS_V_DEEL_GEGEVENS iv, ins_deelsrtcontrole ids, ins_srtcontrole isc WHERE ids.INS_DEEL_KEY = iv.INS_DEEL_KEY AND UPPER (iv.INS_DISCIPLINE_OMSCHRIJVING) = UPPER ('Medische Techniek') AND ids.INS_DEELSRTCONTROLE_STATUS IN (0,1,2) -- Ingepland, gestart of ter uitvoering AND isc.INS_SRTCONTROLE_KEY = ids.INS_SRTCONTROLE_KEY UNION -- ALle taken gestart via een melding SELECT iv.ins_deel_key, iv.INS_DEEL_OMSCHRIJVING, iv.INS_DEEL_OPMERKING, CASE WHEN iv.PRS_AFDELING_key > 0 THEN 'Afdeling' ELSE 'Ruimte' END eigenaar_soort, COALESCE (iv.PRS_AFDELING_key, iv.ALG_RUIMTE_KEY) eigenaar_key, COALESCE (iv.PRS_AFDELING_OMSCHRIJVING, iv.ALG_RUIMTE_NR) locatie, isc.INS_SRTCONTROLE_OMSCHRIJVING, 'In behandeling' status, TO_CHAR(TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM),'DD-MM-YYYY') plandatum, CASE WHEN TRUNC(SYSDATE)-TRUNC (ids.INS_DEELSRTCONTROLE_PLANDATUM)>30 THEN '#FF0000' ELSE '#000000' END kleur FROM INS_V_DEEL_GEGEVENS iv, ins_deelsrtcontrole ids, ins_srtcontrole isc, mld_melding m, mld_melding_object mmo WHERE ids.INS_DEEL_KEY = iv.INS_DEEL_KEY AND UPPER (iv.INS_DISCIPLINE_OMSCHRIJVING) = UPPER ('Medische Techniek') AND ids.INS_DEELSRTCONTROLE_STATUS IN (0,1,2) -- Ingepland, gestart of ter uitvoering AND isc.INS_SRTCONTROLE_KEY = ids.INS_SRTCONTROLE_KEY AND mmo.INS_DEEL_KEY = ids.INS_DEEL_KEY AND mmo.INS_DEELSRTCONTROLE_KEY = ids.INS_DEELSRTCONTROLE_KEY AND m.MLD_MELDING_KEY = mmo.MLD_MELDING_KEY AND m.MLD_MELDING_KEY = mmo.MLD_MELDING_KEY AND m.MLD_STDMELDING_KEY IN (1241,1261) ) sel WHERE sel.eigenaar_soort = 'Afdeling' ORDER BY 5,9; CREATE OR REPLACE VIEW FZKH_V_NOTI_MTTAKEN ( xkey, code, sender, receiver, xemail, xsender, text, key, xmobile ) AS SELECT distinct f.extra_key extra_key, 'CUST10', NULL, NULL, -- f.email||';medischetechniek@flevoziekenhuis.nl' xemail, -- f.email 'medischetechniek@flevoziekenhuis.nl' xemail, NULL xsender, 'Lijst met taken maand '||TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE,'MM'),1),'DD-MM-YYYY')||' voor afdeling '||f.locatie, r.fac_usrrap_key, NULL FROM fzkh_v_MT_taken_maand f, fac_usrrap r WHERE r.fac_usrrap_code='MT_TAKEN_RAPPORT'; CREATE OR REPLACE VIEW FZKH_V_MT_ACCEPTATIEOBJECT ( code, sender, receiver, key, text, xemail, xsender, xmobile ) AS SELECT 'CUST09' code, NULL sender, NULL receiver, m.mld_melding_key key, 'Acceptatie object melding' text, 'norbert@ipdesign.nl' xemail, 'medischetechniek@flevoziekenhuis.nl' xsender, NULL xmobile FROM mld_melding m , mld_stdmelding sm, fac_tracking ft , fac_notificatie_job fj WHERE m.mld_stdmelding_key=sm.mld_stdmelding_key AND sm.mld_stdmelding_code='MT_ACCEPTATIE_OBJECT' AND m.mld_melding_status=5 AND ft.fac_srtnotificatie_key=47 AND ft.fac_tracking_refkey=m.mld_melding_key AND fj.fac_notificatie_job_view='FZKH_V_MT_ACCEPTATIEOBJECT' AND ft.fac_tracking_datum>COALESCE(fj.fac_notificatie_job_lastrun,SYSDATE); CREATE OR REPLACE PROCEDURE FZKH_DAILY AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN -- Bijwerken vervangersgroepen (vgr) met FZKH-personen (prs) uit afdelingen -- met dezelfde kostenplaats (kpn)! fzkh.update_prs2kpnvgr; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('DAILY', 'E', 'Proces afgebroken!', v_errormsg); END FZKH_DAILY; / ------ 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