-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database -- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust) -- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group) -- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM' -- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt. -- (dit in tegenstelling tot sample_xxxx.sql) DEFINE thisfile = 'HERO.SQL' DEFINE dbuser = 'HERO' 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 CREATE OR REPLACE PACKAGE HERO AS FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE; END; / CREATE OR REPLACE PACKAGE BODY HERO AS FUNCTION getfirststartdate(p_startdatum IN DATE, p_refdatum IN DATE, p_cyclus IN NUMBER) RETURN DATE AS v_startdatum DATE; BEGIN IF (p_startdatum0) THEN v_startdatum := ADD_MONTHS(p_startdatum, p_cyclus*12); IF (v_startdatum 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT MIN(k.ins_kenmerk_key) INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND k.ins_kenmerk_key = fac.safe_to_number (v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V'); END IF; IF v_kenmerk_key IS NULL THEN RETURN NULL; ELSE -- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw) RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; BEGIN -- Eerst opruiming DELETE FROM fac_imp_ins; COMMIT; v_count_tot := 0; v_count_import := 0; header_is_valid := 0; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_file_index := rec1.fac_imp_file_index; v_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_oprognose_gebouw_code); -- Objectcode fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code); -- Componentcode fac.imp_getfield (v_newline, c_delim, v_ins_deel_externnr); -- Element-ID fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking); -- Component omschrijving -- fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); -- Opmerkingen// fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); -- Fabrikant fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); -- Kenmerken fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); -- Type fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); -- Cap fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); -- Eenheid Cap fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); -- Aantal fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); -- Eenheid aantal fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8); -- Bouwjaar fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9); -- Foto fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20); v_aanduiding := '[' || v_alg_gebouw_code || '|' || v_ins_deel_externnr || '|' || v_ins_srtdeel_code || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_oprognose_gebouw_code) = 'GEBOUW_CODE' AND UPPER (v_ins_srtdeel_code) = 'SRTDEEL_CODE' AND UPPER (v_ins_deel_externnr) = 'DEEL_EXTERNNR' AND UPPER (v_ins_deel_opmerking) = 'DEEL_OPMERKING' AND UPPER (v_ins_kenmerkwaarde2) = 'FABRIKANT' AND UPPER (v_ins_kenmerkwaarde3) = 'OPMERKINGEN' AND UPPER (v_ins_kenmerkwaarde4) = 'TYPE' AND UPPER (v_ins_kenmerkwaarde5) = 'CAP' AND UPPER (v_ins_kenmerkwaarde6) = 'EENHEID CAP' AND UPPER (v_ins_deel_aantal) = 'DEEL_AANTAL' AND UPPER (v_ins_kenmerkwaarde7) = 'EENHEID AANTAL' AND UPPER (v_ins_kenmerkwaarde8) = 'BOUWJAAR' AND UPPER (v_ins_kenmerkwaarde9) = 'FOTO' THEN v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1); v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2); v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3); v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4); v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5); v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6); v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7); v_ins_kenmerk_key8 := bepaal_kenmerk (v_ins_kenmerkwaarde8); v_ins_kenmerk_key9 := bepaal_kenmerk (v_ins_kenmerkwaarde9); v_ins_kenmerk_key10 := bepaal_kenmerk (v_ins_kenmerkwaarde10); v_ins_kenmerk_key11 := bepaal_kenmerk (v_ins_kenmerkwaarde11); v_ins_kenmerk_key12 := bepaal_kenmerk (v_ins_kenmerkwaarde12); v_ins_kenmerk_key13 := bepaal_kenmerk (v_ins_kenmerkwaarde13); v_ins_kenmerk_key14 := bepaal_kenmerk (v_ins_kenmerkwaarde14); v_ins_kenmerk_key15 := bepaal_kenmerk (v_ins_kenmerkwaarde15); v_ins_kenmerk_key16 := bepaal_kenmerk (v_ins_kenmerkwaarde16); v_ins_kenmerk_key17 := bepaal_kenmerk (v_ins_kenmerkwaarde17); v_ins_kenmerk_key18 := bepaal_kenmerk (v_ins_kenmerkwaarde18); v_ins_kenmerk_key19 := bepaal_kenmerk (v_ins_kenmerkwaarde19); v_ins_kenmerk_key20 := bepaal_kenmerk (v_ins_kenmerkwaarde20); header_is_valid := 1; ELSE IF rec1.fac_imp_file_index = 1 THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldige header aangetroffen:', 'GEBOUW_CODE: ' || UPPER (v_oprognose_gebouw_code) || CHR(10) || 'SRTDEEL_CODE: ' || UPPER (v_ins_srtdeel_code) || CHR(10) || 'DEEL_EXTERNNR: ' || UPPER (v_ins_deel_externnr) || CHR(10) || 'DEEL_OPMERKING: ' || UPPER (v_ins_deel_opmerking) || CHR(10) || 'FABRIKANT: ' || UPPER (v_ins_kenmerkwaarde2) || CHR(10) || 'OPMERKINGEN: ' || UPPER (v_ins_kenmerkwaarde3) || CHR(10) || 'TYPE: ' || UPPER (v_ins_kenmerkwaarde4) || CHR(10) || 'CAP: ' || UPPER (v_ins_kenmerkwaarde5) || CHR(10) || 'EENHEID CAP: ' || UPPER (v_ins_kenmerkwaarde6) || CHR(10) || 'DEEL_AANTAL: ' || UPPER (v_ins_deel_aantal) || CHR(10) || 'EENHEID AANTAL: ' || UPPER (v_ins_kenmerkwaarde7) || CHR(10) || 'BOUWJAAR: ' || UPPER (v_ins_kenmerkwaarde8) || CHR(10) || 'FOTO: ' || UPPER (v_ins_kenmerkwaarde9)); END IF; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Gebouwcode kan niet gevonden worden'; v_oprognose_gebouw_code := TRIM (v_oprognose_gebouw_code); SELECT alg_gebouw_key, alg_gebouw_code, alg_locatie_code INTO v_alg_gebouw_key, v_alg_gebouw_code, v_alg_locatie_code FROM alg_gebouw g, alg_locatie l, alg_onrgoedkenmerk aok, alg_kenmerk ak WHERE g.alg_locatie_key = l.alg_locatie_key AND alg_gebouw_verwijder IS NULL AND aok.alg_onrgoed_key = g.alg_gebouw_key AND aok.alg_onrgoed_niveau='G' AND ak.alg_kenmerk_key = aok.alg_kenmerk_key AND ak.alg_kenmerk_code='OPROGNOSE_CODE' AND UPPER(aok.alg_onrgoedkenmerk_waarde) = UPPER(v_oprognose_gebouw_code); v_alg_verdieping_volgnr := 0; BEGIN SELECT alg_verdieping_key INTO v_alg_verdieping_key FROM alg_verdieping WHERE alg_verdieping_verwijder IS NULL AND alg_gebouw_key = v_alg_gebouw_key AND alg_verdieping_volgnr = 0; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_volgnr, alg_verdieping_omschrijving, alg_verdieping_code) VALUES (v_alg_gebouw_key, 0, 'Begane grond', '0') RETURNING alg_verdieping_key INTO v_alg_verdieping_key; fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Verdieping aangemaakt'); END; v_alg_ruimte_nr := '_'; BEGIN SELECT alg_ruimte_key INTO v_alg_ruimte_key FROM alg_ruimte WHERE alg_ruimte_verwijder IS NULL AND alg_verdieping_key = v_alg_verdieping_key AND alg_ruimte_nr = '_'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_ruimte_omschrijving) VALUES (v_alg_verdieping_key, '_', 'MJOP ruimte') RETURNING alg_ruimte_key INTO v_alg_ruimte_key; fac.imp_writelog (p_import_key, 'I', v_aanduiding, 'Ruimte aangemaakt'); END; -- v_errormsg := 'Bepaal objectsoort'; BEGIN v_ins_srtdeel_code := TRIM(v_ins_srtdeel_code); SELECT ins_srtdeel_omschrijving, ins_srtdeel_key, ins_srtgroep_key INTO v_ins_srtdeel_omschrijving, v_ins_srtdeel_key, v_ins_srtgroep_key FROM ins_srtdeel WHERE ins_srtdeel_verwijder IS NULL AND ins_srtdeel_code = SUBSTR(v_ins_srtdeel_code,1,4); v_errormsg := 'Bepaal objectgroep'; SELECT ins_srtgroep_omschrijving, ins_discipline_key INTO v_ins_srtgroep_omschrijving, v_ins_discipline_key FROM ins_srtgroep WHERE ins_srtgroep_key = v_ins_srtgroep_key; v_errormsg := 'Bepaal discipline'; SELECT ins_discipline_omschrijving INTO v_ins_discipline_omschrijving FROM ins_discipline WHERE ins_discipline_key = v_ins_discipline_key; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Nieuwe NL/SfB code'; v_ins_discipline_omschrijving := 'MJOB'; v_ins_srtdeel_omschrijving := SUBSTR(v_ins_srtdeel_code,1,4) || '-Onbekend'; BEGIN SELECT ins_srtgroep_omschrijving INTO v_ins_srtgroep_omschrijving FROM ins_v_srtgroep_gegevens WHERE ins_discipline_omschrijving = 'MJOB' AND SUBSTR(v_ins_srtdeel_code, 1, 2) = SUBSTR(ins_srtgroep_omschrijving, 1,2); EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_srtgroep_omschrijving := SUBSTR(v_ins_srtdeel_code, 1, 2) || '-Onbekend'; END; END; BEGIN v_errormsg := 'Bepaal object id - Kijk of het externnr bestaat'; SELECT d.ins_deel_omschrijving INTO v_ins_deel_omschrijving FROM ins_v_deel_gegevens dg, ins_deel d WHERE dg.ins_deel_key = d.ins_deel_key AND dg.alg_gebouw_upper = v_alg_gebouw_code AND d.ins_deel_externnr = v_ins_deel_externnr; EXCEPTION WHEN NO_DATA_FOUND THEN v_ins_deel_omschrijving := NULL; END; IF v_ins_deel_omschrijving IS NULL THEN v_errormsg := 'Bepaal object id - maak een nieuw nummer aan'; SELECT MAX(FAC.safe_to_number(SUBSTR(ins_deel_omschrijving, INSTR(ins_deel_omschrijving, '-')+1, 100))) INTO v_ins_deel_volgnr FROM ins_v_deel_gegevens WHERE ins_discipline_omschrijving = 'MJOB' AND ins_deel_omschrijving LIKE v_ins_srtdeel_code || '%'; IF v_ins_deel_volgnr IS NULL THEN v_ins_deel_volgnr := 0; END IF; -- v_ins_deel_omschrijving := v_ins_srtdeel_code || LPAD(v_ins_deel_volgnr + 1, 3, '0'); v_ins_deel_omschrijving := v_ins_srtdeel_code||'-'||v_ins_deel_externnr; END IF; v_errormsg := 'Objectopmerking ongeldig'; v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking); IF LENGTH (v_ins_deel_opmerking) > 320 THEN v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320); fac.imp_writelog ( p_import_key, 'W', v_aanduiding || v_errormsg, 'Objectopmerking wordt afgebroken tot [' || v_ins_deel_opmerking || ']' ); END IF; -- v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99'; v_ins_deel_aantal := TRIM (v_ins_deel_aantal); v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.'); v_ins_deel_aantal_n := NULL; IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0) THEN IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal); END IF; ELSE v_ins_deel_aantal_n := 1; END IF; -- v_errorhint := 'Bepaling registratiedatum'; v_ins_kenmerkwaarde8 := TRIM(v_ins_kenmerkwaarde8); IF v_ins_kenmerkwaarde8 IS NOT NULL AND LENGTH(v_ins_kenmerkwaarde8) = 4 THEN v_ins_deel_aanmaak := '01-01-' || TRIM(v_ins_kenmerkwaarde8); v_ins_deel_aanmaak_d := TO_DATE(v_ins_deel_aanmaak, 'dd-mm-yyyy'); END IF; -- De rest alleen ff trimmen. v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1); v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2); v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3); v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4); v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5); v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6); v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7); v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8); v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9); v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10); v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11); v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12); v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13); v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14); v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15); v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16); v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17); v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18); v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19); v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20); -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; -- Als uit kenmerkheader een geldige kenmerksoort-key volgt, -- dan is kenmerkwaarde gevuld met =; zoniet, -- dan is kenmerkwaarde gevuld met ! -- NB. Een NULL-waarde resulteert NIET in het wissen van een -- kenmerkveld (bijwerken kan wel, maar wissen dus niet)! INSERT INTO fac_imp_ins ( ins_discipline_omschrijving, ins_discipline_kostensoort, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20, ins_deel_aanmaak, ins_deel_aantal, ins_deel_externnr ) VALUES ( v_ins_discipline_omschrijving, v_ins_discipline_kostensoort, v_ins_srtgroep_omschrijving, SUBSTR(v_ins_srtdeel_code,1,4), v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_ins_deel_opmerking, v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr, v_alg_ruimte_nr, DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, DECODE(v_ins_kenmerk_key1, NULL, NULL, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900))), DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, DECODE(v_ins_kenmerk_key2, NULL, NULL, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900))), DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, DECODE(v_ins_kenmerk_key3, NULL, NULL, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900))), DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, DECODE(v_ins_kenmerk_key4, NULL, NULL, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900))), DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, DECODE(v_ins_kenmerk_key5, NULL, NULL, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900))), DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, DECODE(v_ins_kenmerk_key6, NULL, NULL, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900))), DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, DECODE(v_ins_kenmerk_key7, NULL, NULL, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900))), DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, DECODE(v_ins_kenmerk_key8, NULL, NULL, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900))), DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, DECODE(v_ins_kenmerk_key9, NULL, NULL, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900))), DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, DECODE(v_ins_kenmerk_key10, NULL, NULL, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900))), DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, DECODE(v_ins_kenmerk_key11, NULL, NULL, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900))), DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, DECODE(v_ins_kenmerk_key12, NULL, NULL, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900))), DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, DECODE(v_ins_kenmerk_key13, NULL, NULL, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900))), DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, DECODE(v_ins_kenmerk_key14, NULL, NULL, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900))), DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, DECODE(v_ins_kenmerk_key15, NULL, NULL, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900))), DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, DECODE(v_ins_kenmerk_key16, NULL, NULL, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900))), DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, DECODE(v_ins_kenmerk_key17, NULL, NULL, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900))), DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, DECODE(v_ins_kenmerk_key18, NULL, NULL, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900))), DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, DECODE(v_ins_kenmerk_key19, NULL, NULL, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900))), DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, DECODE(v_ins_kenmerk_key20, NULL, NULL, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900))), v_ins_deel_aanmaak_d, v_ins_deel_aantal_n, v_ins_deel_externnr ); COMMIT; v_count_import := v_count_import + 1; END; END IF; END IF; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END LOOP; IF (header_is_valid = 1) THEN fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces objecten afgebroken! regel:' || v_file_index); END; / CREATE OR REPLACE PROCEDURE hero_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 hero_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_ins_srtcontrole_btw 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); fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_btw); 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' AND UPPER (v_ins_srtcontroledl_xcp_eenh) = 'SRTCONTROLE_EENHEID' AND UPPER (v_ins_srtcontrole_btw) = 'SRTCONTROLE_BTW' 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, fac_imp_csv_col13) 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), v_ins_srtcontrole_btw); 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 hero_import_mjobtaken; / CREATE OR REPLACE PROCEDURE hero_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, fac_imp_csv_col13 ins_srtcontrole_btw 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_srtcontrole_btw_key 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; BEGIN SELECT btw.fin_btwtabelwaarde_key INTO v_srtcontrole_btw_key FROM fin_btwtabel bt, fin_btwtabelwaarde btw WHERE bt.fin_btwtabel_omschrijving='NL standaard' AND btw.fin_btwtabel_key = bt.fin_btwtabel_key AND btw.fin_btwtabelwaarde_code=rec.ins_srtcontrole_btw AND btw.fin_btwtabelwaarde_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_srtcontrole_btw_key:=NULL; END; -- 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, fin_btwtabelwaarde_key= v_srtcontrole_btw_key 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, fin_btwtabelwaarde_key) 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, v_srtcontrole_btw_key) 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 := hero.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 -- Import AFAS personen --"Roepnaam";"Voorletters";"Voorvoegsel";"Achternaam";"Persnr.";"Afdnr.";"Functie";"Email";"Telefoon";"Mobiel";"Loginnaam";"KP";"Kostenplaats";"CL";"Cluster";"OE";"OE omschrijving" CREATE OR REPLACE PROCEDURE HERO_IMPORT_AFAS_PERSONEN(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT fac_imp_csv_col01 prs_voornaam, fac_imp_csv_col02 prs_voorletters, fac_imp_csv_col03 prs_tussenvoegsel, fac_imp_csv_col04 prs_achternaam, fac_imp_csv_col05 prs_perslid_nr, fac_imp_csv_col06 prs_afdl_naam, fac_imp_csv_col07 prs_functie, fac_imp_csv_col08 prs_email, fac_imp_csv_col09 prs_telefoon, fac_imp_csv_col10 prs_mobiel, fac_imp_csv_col11 prs_loginnaam, fac_imp_csv_col12 prs_kostenplaats_code, fac_imp_csv_col13 prs_kostenplaats_omsc, fac_imp_csv_col14 prs_cluster_code, fac_imp_csv_col15 prs_cluster_naam, fac_imp_csv_col16 prs_OE_code, fac_imp_csv_col17 prs_OE_omsch FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; v_afdelingnaam VARCHAR2(20); v_afd_count NUMBER; v_srtperslid_omschrijving VARCHAR2(60); v_cluster_code_key NUMBER; v_cluster_omsch_key NUMBER; v_OE_Code_key NUMBER; v_OE_omsch_key NUMBER; BEGIN v_count:=0; DELETE FROM fac_imp_perslid; BEGIN SELECT prs_kenmerk_key INTO v_cluster_code_key FROM prs_kenmerk WHERE prs_kenmerk_code='CLUSTER_CODE' AND prs_kenmerk_niveau='P' AND prs_kenmerk_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_cluster_code_key:=NULL; END; BEGIN SELECT prs_kenmerk_key INTO v_cluster_omsch_key FROM prs_kenmerk WHERE prs_kenmerk_code='CLUSTER_OMSCH' AND prs_kenmerk_niveau='P' AND prs_kenmerk_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_cluster_omsch_key:=NULL; END; BEGIN SELECT prs_kenmerk_key INTO v_OE_Code_key FROM prs_kenmerk WHERE prs_kenmerk_code='OE_CODE' AND prs_kenmerk_niveau='P' AND prs_kenmerk_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_OE_code_key:=NULL; END; BEGIN SELECT prs_kenmerk_key INTO v_OE_Omsch_key FROM prs_kenmerk WHERE prs_kenmerk_code='OE_OMSCH' AND prs_kenmerk_niveau='P' AND prs_kenmerk_verwijder IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN v_OE_Omsch_key:=NULL; END; FOR rec IN c1 LOOP IF v_count>0 THEN -- ALs een per op niveau 9 zit heeft de -- controleren of de afdeling wel beschikbaar is anders onder Onbekend zetten SELECT COUNT(*) INTO v_afd_count FROM prs_afdeling WHERE UPPER(prs_afdeling_naam)=UPPER(rec.prs_afdl_naam) AND prs_afdeling_verwijder IS NULL; IF v_afd_count=0 THEN v_afdelingnaam :='Onbekend'; ELSE v_afdelingnaam := rec.prs_afdl_naam; END IF; IF rec.prs_functie IS NULL THEN v_srtperslid_omschrijving:='Onbekend'; ELSE v_srtperslid_omschrijving:= rec.prs_functie; END IF; INSERT INTO fac_imp_perslid(fac_import_key, prs_afdeling_naam, prs_perslid_voornaam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_naam, prs_perslid_email, prs_perslid_telefoonnr, prs_perslid_mobiel, prs_srtperslid_omschrijving, prs_perslid_oslogin, prs_perslid_nr, prs_kenmerk1, prs_kenmerk2, prs_kenmerk3, prs_kenmerk4) VALUES(p_import_key, v_afdelingnaam, rec.prs_voornaam, rec.prs_voorletters, rec.prs_tussenvoegsel, rec.prs_achternaam, rec.prs_email, rec.prs_telefoon, rec.prs_mobiel, v_srtperslid_omschrijving, rec.prs_email, rec.prs_perslid_nr, DECODE(v_cluster_code_key, NULL, rec.prs_cluster_code, TO_CHAR(v_cluster_code_key) || '=' || SUBSTR(rec.prs_cluster_code, 1, 3980)), DECODE(v_cluster_omsch_key, NULL, rec.prs_cluster_naam, TO_CHAR(v_cluster_omsch_key) || '=' || SUBSTR(rec.prs_cluster_naam, 1, 3980)), DECODE(v_OE_code_key, NULL, rec.prs_OE_code, TO_CHAR(v_OE_code_key) || '=' || SUBSTR(rec.prs_OE_code, 1, 3980)), DECODE(v_OE_omsch_key, NULL, rec.prs_OE_omsch, TO_CHAR(v_OE_omsch_key) || '=' || SUBSTR(rec.prs_OE_omsch, 1, 3980)) ); END IF; v_count:=v_count+1; END LOOP; DELETE FROM fac_imp_csv where fac_import_key=p_import_key; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE PROCEDURE HERO_UPDATE_AFAS_PERSONEN(p_import_key IN NUMBER) AS -- Afdeling is het cluster, alle locatie onder dat cluster ophalen en werkoplek toewijzen -- clusetr manager, aclustermanaer vve, assistent clusetr manager CURSOR p_werkplek IS SELECT p.prs_perslid_key, pf.prs_perslid_naam_friendly FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames pf WHERE i.prs_srtperslid_omschrijving IN ('Clustermanager','Clusterassistent','Clustermanager VVE') AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_verwijder IS NULL; CURSOR p_gebouw(p_perslid_key IN NUMBER) IS SELECT r.alg_ruimte_key, prs_perslid_key FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r, prs_perslid p, prs_kenmerklink pkl, prs_kenmerk pk WHERE p.prs_perslid_key = p_perslid_key AND pk.prs_kenmerk_code='CLUSTER_OMSCH' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND d.alg_district_upper = UPPER(pkl.prs_kenmerklink_waarde) AND d.alg_district_verwijder is NULL AND l.alg_district_key = d.alg_district_key AND l.alg_locatie_verwijder is NULL AND g.alg_locatie_key = l.alg_locatie_key AND g.alg_gebouw_verwijder is NULL AND v.alg_gebouw_key = g.alg_gebouw_key AND V.alg_verdieping_verwijder IS NULL and r.alg_verdieping_key = v.alg_verdieping_key AND r.alg_ruimte_nr='_WP' AND r.alg_ruimte_verwijder IS NULL; CURSOR waarnm IS SELECT r.alg_ruimte_key, prs_perslid_key FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r, prs_perslid p, prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_code='CLUSTER_WAARN' AND pk.prs_kenmerk_verwijder IS NULL AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.PRS_KENMERKLINK_VERWIJDER IS NULL AND pkl.prs_link_key=p.prs_perslid_key AND p.prs_perslid_verwijder IS NULL AND d.alg_district_key = fac.safe_to_number(pkl.prs_kenmerklink_waarde) AND d.alg_district_verwijder is NULL AND l.alg_district_key = d.alg_district_key AND l.alg_locatie_verwijder is NULL AND g.alg_locatie_key = l.alg_locatie_key AND g.alg_gebouw_verwijder is NULL AND v.alg_gebouw_key = g.alg_gebouw_key AND V.alg_verdieping_verwijder IS NULL and r.alg_verdieping_key = v.alg_verdieping_key AND r.alg_ruimte_nr='_WP' AND r.alg_ruimte_verwijder IS NULL; CURSOR p_kostenplaats(p_perslid_key IN NUMBER) IS SELECT aok.ALG_ONRGOEDKENMERK_WAARDE prs_kostenplaats_key, p.prs_perslid_key FROM alg_district d, alg_locatie l, prs_perslid p, prs_kenmerklink pkl, prs_kenmerk pk, alg_onrgoedkenmerk aok, alg_kenmerk ak WHERE p.prs_perslid_key = p_perslid_key AND pk.prs_kenmerk_code='CLUSTER_OMSCH' AND pkl.prs_kenmerk_key = pk.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND d.alg_district_upper = UPPER(pkl.prs_kenmerklink_waarde) AND d.alg_district_verwijder is NULL AND l.alg_district_key = d.alg_district_key AND l.alg_locatie_verwijder is NULL AND aok.ALG_ONRGOED_KEY = l.ALG_LOCATIE_KEY AND aok.ALG_ONRGOED_NIVEAU='L' AND ak.ALG_KENMERK_KEY = aok.ALG_KENMERK_KEY AND ak.ALG_KENMERK_OMSCHRIJVING like '%kostenplaats' AND p.prs_perslid_key NOT IN (SELECT prs_perslid_key from prs_perslidkostenplaats pkp where pkp.PRS_PERSLID_KEY = p.PRS_PERSLID_KEY AND pkp.PRS_KOSTENPLAATS_KEY = aok.ALG_ONRGOEDKENMERK_WAARDE AND pkp.PRS_PERSLIDKOSTENPLAATS_BOEKEN=1); CURSOR p_del IS SELECT p.prs_perslid_key FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL AND SUBSTR(p.prs_perslid_oslogin,0,1)<>'_' AND p.prs_perslid_nr IS NOT NULL AND p.prs_perslid_nr NOT IN (SELECT prs_perslid_nr FROM fac_imp_perslid); v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_date DATE; v_defaultgroep NUMBER:=1; v_count NUMBER; v_aanwezig NUMBER; v_auth_groep_key NUMBER; BEGIN -- Hebben we wel een gevuld bestand binnen gekregen SELECT COUNT(*) INTO v_count FROM fac_imp_perslid; SELECT COUNT(*)+1 -- Zodat v_aanwezig nooit 0 kan zijn, 1 extra is voor de gebruik niet erg INTO v_aanwezig FROM prs_perslid p WHERE p.prs_perslid_nr IS NOT NULL AND p.prs_perslid_verwijder IS NULL; IF (v_count/v_aanwezig) > 0.85 -- we gaan uit van minimaal 85% aanwezig in import file THEN v_errormsg := 'Fout bij update van personen.'; prs.update_perslid (p_import_key, 'NR', 'A', 1); v_errormsg := 'Fout bij verwijderen van personen.'; FOR rec IN p_del LOOP prs.delete_perslid (p_import_key, rec.prs_perslid_key); END LOOP; COMMIT; END IF; BEGIN SELECT f.FAC_GROEP_KEY INTO v_auth_groep_key FROM FAC_GROEP f WHERE f.fac_groep_upper='CLUSTERMANAGERS'; EXCEPTION WHEN NO_DATA_FOUND THEN v_auth_groep_key:=-1; END; -- Toewijzen aan werkplek op locatie -- En toewijzen aan autoristaie groep v_count:=0; FOR rec IN p_werkplek LOOP BEGIN FOR rec_geb IN p_gebouw(rec.prs_perslid_key) LOOP fac.imp_writelog ( p_import_key, 'I', 'PERLSID :'||rec_geb.prs_perslid_key||'-Ruimte:'||rec_geb.alg_ruimte_key,''); prs.movetoruimte (rec_geb.prs_perslid_key, rec_geb.alg_ruimte_key, '', 1); END LOOP; SELECT COUNT(*) INTO v_count FROM fac_gebruikersgroep WHERE fac_groep_key=v_auth_groep_key AND prs_perslid_key=rec.prs_perslid_key AND ( fac_gebruikersgroep_vervaldatum IS NULL OR fac_gebruikersgroep_vervaldatum> SYSDATE); IF v_count<1 AND v_auth_groep_key>0 THEN -- Voeg toe aan autorisatie groep Clustermanagers INSERT INTO fac_gebruikersgroep(fac_groep_key, prs_perslid_key) VALUES(v_auth_groep_key, rec.prs_perslid_key); fac.imp_writelog ( p_import_key, 'S', 'Toegevoegd aan autorisatie groep Clustermanagers :'||rec.prs_perslid_naam_friendly,''); END IF; FOR rec_kpn IN p_kostenplaats(rec.prs_perslid_key) LOOP INSERT INTO prs_perslidkostenplaats(prs_perslid_key, prs_kostenplaats_key, prs_perslidkostenplaats_boeken, prs_perslidkostenplaats_inzage, prs_perslidkostenplaats_aanmk) VALUES(rec.prs_perslid_key, rec_kpn.prs_kostenplaats_key, 1, 0, SYSDATE); END LOOP; END; END LOOP; FOR rec_wnm IN waarnm LOOP fac.imp_writelog (p_import_key, 'I', 'PERLSID :'||rec_wnm.prs_perslid_key||'-Ruimte:'||rec_wnm.alg_ruimte_key,''); prs.movetoruimte (rec_wnm.prs_perslid_key, rec_wnm.alg_ruimte_key, '', 1); END LOOP; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / --Eeinde Import Afas personen --- EINDE IMPORTS ------- -- Lijst van Clustermanagers (tbv domeinview) CREATE OR REPLACE VIEW hero_v_personenlijst_loc ( PRS_PERSLID_KEY, NAAM, PERSONEELSNUMMER, EMAIL, PRS_PERSLID_VERWIJDER ) AS SELECT p.prs_perslid_key, CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' END naam, p.prs_perslid_nr, p.prs_perslid_email, p.prs_perslid_verwijder FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 61 -- bedrijfs_key HERO AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_key= 41 --- CLUSTERMANAGER (key A=81, P=41) AND p.prs_perslid_verwijder IS NULL ORDER BY sp.prs_srtperslid_omschrijving, p.prs_perslid_voornaam, p.prs_perslid_naam; -- Lijst van Regiomanagers (tbv domeinview) CREATE OR REPLACE VIEW HERO_V_REGIOMANAGERS ( PRS_PERSLID_KEY, NAAM, PERSONEELSNUMMER, EMAIL, PRS_PERSLID_VERWIJDER ) AS SELECT p.prs_perslid_key, CASE WHEN p.prs_perslid_tussenvoegsel IS NULL THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')' END naam, p.prs_perslid_nr, p.prs_perslid_email, p.prs_perslid_verwijder FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling a, prs_bedrijf b WHERE p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = b.prs_bedrijf_key AND b.prs_bedrijf_key = 61 -- bedrijfs_key HERO AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_key = 161 --- REGIOMANAGER (A=key 63 P=161) AND p.prs_perslid_verwijder IS NULL ORDER BY sp.prs_srtperslid_omschrijving, p.prs_perslid_voornaam, p.prs_perslid_naam; CREATE OR REPLACE VIEW HERO_V_VERHUURDERS ( PRS_BEDRIJF_KEY, PRS_BEDRIJF_NAAM ) AS SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam FROM prs_bedrijf b, PRS_KENMERK k, prs_kenmerklink kl WHERE k.prs_kenmerk_code='VERHUURDER' AND k.prs_kenmerk_niveau='B' AND k.prs_kenmerk_key = kl.prs_kenmerk_key AND kl.prs_link_key=b.prs_bedrijf_key AND b.prs_bedrijf_verwijder is null; -- Basis rapport van AEG voor BVB CREATE OR REPLACE HERO_V_rap_mjob_begroyong_verplichting AS SELECT dsc.ins_deelsrtcontrole_freezedate, TO_CHAR (ins_deelsrtcontrole_freezedate, 'YYYY') freezejaar, sg.ins_srtgroep_omschrijving groep, sd.ins_srtdeel_omschrijving objectsoort, d.ins_deel_omschrijving object, d.ins_deel_key object_key, sc.ins_srtcontrole_omschrijving taak, cd.ins_discipline_omschrijving taakcategorie, dsc.ins_deelsrtcontrole_freezecost begroting, ROUND ((dsc.ins_deelsrtcontrole_freezecost / mc.begroting) * mc.verplichting, 2) verplichting, mo.mld_melding_key melding FROM ins_deelsrtcontrole dsc, ins_deel d, ins_srtdeel sd, ins_srtgroep sg, ins_srtcontrole sc, ctr_discipline cd, mld_melding_object mo, (SELECT m.mld_melding_key, (SELECT SUM (mld_opdr_kosten) FROM mld_opdr o WHERE o.mld_melding_key = m.mld_melding_key) verplichting, (SELECT SUM (ins_deelsrtcontrole_freezecost) FROM mld_melding_object mo, ins_deelsrtcontrole dsc WHERE m.mld_melding_key = mo.mld_melding_key AND mo.ins_deelsrtcontrole_key = dsc.ins_deelsrtcontrole_key) begroting FROM mld_melding m) mc WHERE dsc.ins_deel_key = d.ins_deel_key AND d.ins_deel_verwijder IS NULL AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = 121 -- MJOB A=121 AND dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND sc.ctr_discipline_key = cd.ins_discipline_key AND dsc.ins_deelsrtcontrole_key = mo.ins_deelsrtcontrole_key(+) AND mo.mld_melding_key = mc.mld_melding_key(+) AND dsc.ins_deelsrtcontrole_status IN (2, 3, 4, 5, 6)-- 2;Gestart/In behandeling 3;Ter uitvoering 5;Afgemeld/Gereed gemeld; 6;Afgerond CREATE OR REPLACE VIEW HERO_V_OBJECT_MLD_QR ( INS_DEEL_OMSC, LOCATIE_CODE, FCLT_F_LOCATIE, FCLT_F_GEBOUW, FCLT_F_PLAATS, RUIMTENR, NAAM, FCLT_F_DISCIPLINE, FCLT_F_OBJECTGROEP, FCLT_F_OBJECTSOORT, FCLT_F_IDENTIFICATIE, FCLT_F_BOOKMARK, INS_DEEL_KEY, INS_SRTDEEL_KEY, FCLT_3D_DISCIPLINE_KEY, FCLT_3D_LOCATIE_KEY, INS_ALG_RUIMTE_TYPE, INS_ALG_RUIMTE_KEY, BOOKMARK_ID, GEKOPPELD_AAN ) AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code, l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, SUBSTR (o.alg_plaatsaanduiding, 13) fclt_f_plaats, o.alg_ruimte_nr, NULL prs_perslid_naam, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, b.fac_bookmark_naam fclt_f_bookmark, i.ins_deel_key, s.ins_srtdeel_key, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, b.fac_bookmark_id hide_f_bookmark_id, 'Ruimte' FROM ins_deel i, ins_v_alg_overzicht o, ins_srtdeel s, ins_srtgroep g, ins_discipline d, alg_locatie l, fac_bookmark b WHERE UPPER (b.fac_bookmark_naam) IN ('QR_OBJECT_MELDING') AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE AND ins_deel_verwijder IS NULL AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND s.ins_srtdeel_key = i.ins_srtdeel_key AND g.ins_srtgroep_key = s.ins_srtgroep_key AND d.ins_discipline_key = g.ins_discipline_key AND o.alg_onroerendgoed_keys = COALESCE (i.ins_alg_ruimte_key_org, i.ins_alg_ruimte_key) AND o.alg_onroerendgoed_type = COALESCE (i.ins_alg_ruimte_type_org, i.ins_alg_ruimte_type) AND COALESCE (i.ins_alg_ruimte_type_org, i.ins_alg_ruimte_type) IN ('T', 'R', 'W') AND o.alg_locatie_key = i.ins_alg_locatie_key AND l.alg_locatie_key = i.ins_alg_locatie_key; CREATE OR REPLACE VIEW HERO_V_FAC_TAKEN_OVERZICHT ( ins_deel_key, ins_deel_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, locatie_code, ins_srtcontrole_omschrijving, ins_deelsrtcontrole_key, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_opmerking, ins_deelsrtcontrole_status, ins_controlemode_success, mld_melding_key, mld_stdmelding_omschrijving, mld_melding_onderwerp ) AS SELECT i.ins_deel_key, i.ins_deel_omschrijving, i.ins_srtgroep_omschrijving, i.ins_srtdeel_omschrijving, (SELECT alg_locatie_code FROM alg_locatie WHERE alg_locatie_key = i.alg_locatie_key) locatie_code, isc.ins_srtcontrole_omschrijving, idsc.ins_deelsrtcontrole_key, idsc.ins_deelsrtcontrole_datum, idsc.ins_deelsrtcontrole_opmerking, DECODE (idsc.ins_deelsrtcontrole_status,0,'Ingepland', 2,'Gestart/In behandeling', 3,'Ter uitvoering', 5,'Afgemeld/Gereed gemeld', 6 ,'Afgerond') idsc_status, DECODE(im.ins_controlemode_success,0,'Niet succesvol',1,'Succesvol') ins_controlemode_success, m.mld_melding_key, sm.mld_stdmelding_omschrijving, m.mld_melding_onderwerp FROM ins_deelsrtcontrole idsc, ins_controlemode im, ins_srtcontrole isc, ins_v_deel_gegevens i, mld_melding m, mld_melding_object mmo, mld_stdmelding sm WHERE i.ins_deel_key = idsc.ins_deel_key AND idsc.ins_deelsrtcontrole_status <> 6 AND im.ins_controlemode_key = idsc.ins_controlemode_key AND isc.ctr_discipline_key <> 122 AND isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key AND mmo.ins_deelsrtcontrole_key(+) = idsc.ins_deelsrtcontrole_key AND m.mld_melding_key(+) = mmo.mld_melding_key AND sm.mld_stdmelding_key(+) = m.mld_stdmelding_key; ------ 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