-- -- $Id$ -- -- Script containing customer specific db-configuration for VNOG. DEFINE thisfile = 'VNOG.SQL' DEFINE dbuser = '^VNOG' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PROCEDURE vnog_import_bepakkinglijst (p_import_key IN NUMBER) IS c_delim VARCHAR2 (2) := fac.import_delimiter(p_import_key); v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); header_is_valid NUMBER; v_count_tot NUMBER (10); v_count_import NUMBER (10); v_ongeldig NUMBER (1); v_aanduiding VARCHAR (400); v_ins_kenmerk_key1 VARCHAR2 (255); v_ins_kenmerk_key2 VARCHAR2 (255); v_ins_kenmerk_key3 VARCHAR2 (255); v_ins_kenmerk_key4 VARCHAR2 (255); v_ins_kenmerk_key5 VARCHAR2 (255); v_ins_kenmerk_key6 VARCHAR2 (255); v_ins_kenmerk_key7 VARCHAR2 (255); v_ins_kenmerk_key8 VARCHAR2 (255); v_ins_kenmerk_key9 VARCHAR2 (255); v_ins_kenmerk_key10 VARCHAR2 (255); v_ins_kenmerk_key11 VARCHAR2 (255); v_ins_kenmerk_key12 VARCHAR2 (255); v_ins_kenmerk_key13 VARCHAR2 (255); v_ins_kenmerk_key14 VARCHAR2 (255); v_ins_kenmerk_key15 VARCHAR2 (255); v_ins_kenmerk_key16 VARCHAR2 (255); v_ins_kenmerk_key17 VARCHAR2 (255); v_ins_kenmerk_key18 VARCHAR2 (255); v_ins_kenmerk_key19 VARCHAR2 (255); v_ins_kenmerk_key20 VARCHAR2 (255); -- De importvelden v_ins_discipline_omschrijving VARCHAR2 (255); -- C60 v_ins_discipline_kostensoort VARCHAR2 (255); --C60 v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 v_ins_srtdeel_code VARCHAR2 (255); -- C10 v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 v_ins_deel_omschrijving VARCHAR2 (255); -- C60 v_ins_deel_opmerking VARCHAR2 (1000); -- C320 v_reserveerbaar VARCHAR2 (255); -- C1 v_reserveerbaar_n NUMBER (1); -- N1 v_res_deel_eenheid VARCHAR2 (255); -- C10 v_res_deel_prijs VARCHAR2 (255); -- N7,2 v_res_deel_prijs_n NUMBER (7, 2); -- N7,2 v_alg_locatie_code VARCHAR2 (255); -- C10 v_alg_gebouw_code VARCHAR2 (255); -- C12 v_alg_verdieping_volgnr VARCHAR2 (255); -- N3 v_alg_verdieping_volgnr_n NUMBER (3); -- N3 v_alg_ruimte_nr VARCHAR2 (255); -- C20 v_res_deel_alg_level VARCHAR2 (255); -- C1 (naar -1 t/m 5) v_res_deel_alg_level_n NUMBER (1); -- N1 v_res_discipline_type VARCHAR2 (255); -- C60 v_res_discipline_omschrijving VARCHAR2 (255); -- C60 v_res_discipline_kostensoort VARCHAR2 (255); -- C60 v_prs_perslid_matchcode VARCHAR2 (4000); v_prs_perslid_matchwaarde VARCHAR2 (4000); v_ins_kenmerkwaarde1 VARCHAR2 (4053); v_ins_kenmerkwaarde2 VARCHAR2 (4053); v_ins_kenmerkwaarde3 VARCHAR2 (4053); v_ins_kenmerkwaarde4 VARCHAR2 (4053); v_ins_kenmerkwaarde5 VARCHAR2 (4053); v_ins_kenmerkwaarde6 VARCHAR2 (4053); v_ins_kenmerkwaarde7 VARCHAR2 (4053); v_ins_kenmerkwaarde8 VARCHAR2 (4053); v_ins_kenmerkwaarde9 VARCHAR2 (4053); v_ins_kenmerkwaarde10 VARCHAR2 (4053); v_ins_kenmerkwaarde11 VARCHAR2 (4053); v_ins_kenmerkwaarde12 VARCHAR2 (4053); v_ins_kenmerkwaarde13 VARCHAR2 (4053); v_ins_kenmerkwaarde14 VARCHAR2 (4053); v_ins_kenmerkwaarde15 VARCHAR2 (4053); v_ins_kenmerkwaarde16 VARCHAR2 (4053); v_ins_kenmerkwaarde17 VARCHAR2 (4053); v_ins_kenmerkwaarde18 VARCHAR2 (4053); v_ins_kenmerkwaarde19 VARCHAR2 (4053); v_ins_kenmerkwaarde20 VARCHAR2 (4053); v_ins_deel_aanmaak VARCHAR2 (255); -- DATE v_ins_deel_aanmaak_d DATE; v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE v_ins_deel_vervaldatum_d DATE; v_ins_deel_aantal VARCHAR2 (255); -- N8,2 v_ins_deel_aantal_n NUMBER(8, 2); v_ins_deel_externnr VARCHAR2 (400); v_file_index NUMBER; -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; CURSOR imp_ins IS SELECT * FROM fac_imp_ins; CURSOR loc_ins IS SELECT i.ins_deel_key deel_key, l.alg_locatie_code locatie, i.alg_gebouw_code gebouw, i.alg_verdieping_code verdieping, i.alg_ruimte_nr ruimte FROM ins_v_deel_gegevens i, alg_locatie l WHERE i.alg_locatie_key = l.alg_locatie_key AND i.ins_discipline_key = 561; CURSOR image_ins IS SELECT s.ins_srtdeel_omschrijving srtdeel, MAX (i.ins_deel_image) image FROM ins_deel i, ins_srtdeel s, fac_imp_ins f WHERE i.ins_srtdeel_key = s.ins_srtdeel_key AND s.ins_srtdeel_omschrijving = f.ins_srtdeel_omschrijving AND s.ins_srtdeel_verwijder IS NULL GROUP BY (s.ins_srtdeel_omschrijving); CURSOR opm_ins IS SELECT f.ins_deel_omschrijving deel, i.ins_deel_omschrijving opmerking FROM fac_imp_ins f, ins_deel i WHERE fac.safe_to_number (f.ins_kenmerkwaarde19) = i.ins_deel_key; -- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key. -- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk. -- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk. -- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen. -- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende -- object-discipline/groep/soort, volgt pas tijdens de update-fase)! -- -- p_kw is bijvoorbeeld 'Parkeercode', 'Parkeercode|3', 234 of 234|3 waarbij de tweede en laatste in groep 3 zitten -- het resultaat is NULL (als niet gevonden) of Parkeercode|3 of 234|3 voor kenmer_key 234 in groep 3 -- Als geen groep is meegegeven dan wordt 'Parkeercode|0' opgeleverd (de default groep) FUNCTION bepaal_kenmerk (p_kw IN VARCHAR) RETURN VARCHAR IS v_kenmerk_key NUMBER; v_kenmerk_groep NUMBER; v_kw VARCHAR(250); BEGIN v_kenmerk_groep := 0; v_kw := p_kw; IF INSTR (v_kw, '|') > 1 THEN v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1); v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1); END IF; IF fac.safe_to_number (v_kw) IS NULL THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)! SELECT MIN(k.ins_kenmerk_key) INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND COALESCE(UPPER(k.ins_kenmerk_omschrijving), sk.ins_srtkenmerk_upper) = UPPER(v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V'); ELSE -- kenmerkwaarde is numeriek (dus key)! SELECT k.ins_kenmerk_key INTO v_kenmerk_key FROM ins_v_aanwezigkenmerk k, ins_v_aanwezigsrtkenmerk sk WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND k.ins_kenmerk_groep = v_kenmerk_groep AND k.ins_kenmerk_key = fac.safe_to_number (v_kw) AND sk.ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V'); END IF; IF v_kenmerk_key IS NULL THEN RETURN NULL; ELSE -- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw) RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%' THEN RETURN NULL; ELSE fac.imp_writelog (p_import_key, 'W', 'Fout bij bepalen kenmerk [' || p_kw || ']', 'Bestaat niet of type ongeldig'); COMMIT; RETURN NULL; END IF; END; BEGIN -- Eerst opruiming DELETE FROM fac_imp_ins; COMMIT; v_count_tot := 0; v_count_import := 0; header_is_valid := 0; v_prs_perslid_matchcode := ''; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_file_index := rec1.fac_imp_file_index; v_errormsg := 'Fout bij opvragen importregel'; v_aanduiding := ''; v_ongeldig := 0; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1); fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving); fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7); fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6); v_aanduiding := '[' || v_ins_discipline_omschrijving || '|' || v_ins_srtgroep_omschrijving || '|' || v_ins_srtdeel_omschrijving || '] '; -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen -- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen! -- Ik negeer alles totdat ik een geldige header ben gepasseerd. IF (header_is_valid = 0) THEN IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINE' AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEP' AND UPPER (v_ins_srtdeel_omschrijving) = 'OMSCHRIJVING' AND UPPER (v_ins_deel_aantal) = 'AANTAL OP TS ' THEN v_ins_kenmerk_key1 := bepaal_kenmerk (v_ins_kenmerkwaarde1); v_ins_kenmerk_key2 := bepaal_kenmerk (v_ins_kenmerkwaarde2); v_ins_kenmerk_key3 := bepaal_kenmerk (v_ins_kenmerkwaarde3); v_ins_kenmerk_key4 := bepaal_kenmerk (v_ins_kenmerkwaarde4); v_ins_kenmerk_key5 := bepaal_kenmerk (v_ins_kenmerkwaarde5); v_ins_kenmerk_key6 := bepaal_kenmerk (v_ins_kenmerkwaarde6); v_ins_kenmerk_key7 := bepaal_kenmerk (v_ins_kenmerkwaarde7); header_is_valid := 1; END IF; ELSE v_count_tot := v_count_tot + 1; -- Controleer alle veldwaarden v_errormsg := 'Disciplineomschrijving ongeldig'; v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving); IF v_ins_discipline_omschrijving IS NULL OR LENGTH (v_ins_discipline_omschrijving) > 60 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Groepsoortomschrijving ongeldig'; v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving); IF v_ins_srtgroep_omschrijving IS NULL OR LENGTH (v_ins_srtgroep_omschrijving) > 60 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Objectsoortomschrijving ongeldig'; v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving); IF v_ins_srtdeel_omschrijving IS NULL OR LENGTH (v_ins_srtdeel_omschrijving) > 100 THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen'); v_ongeldig := 1; END IF; -- v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99'; v_ins_deel_aantal := TRIM (v_ins_deel_aantal); v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.'); v_ins_deel_aantal_n := NULL; IF v_ins_deel_aantal IS NOT NULL THEN IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL) THEN v_ongeldig := 1; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!'); ELSE v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal); END IF; ELSE v_ins_deel_aantal_n := 1; END IF; -- v_errorhint := 'Ongeldige aanmaakdatum'; IF v_ins_deel_aanmaak IS NOT NULL THEN BEGIN v_ins_deel_aanmaak_d := TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy'); EXCEPTION WHEN OTHERS THEN v_ongeldig := 1; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!' ); COMMIT; END; ELSE v_ins_deel_aanmaak_d := NULL; END IF; -- De rest alleen ff trimmen. v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1); v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2); v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3); v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4); v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5); v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6); v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7); -- Insert geformatteerde import record IF v_ongeldig = 0 THEN BEGIN v_errormsg := 'Fout bij wegschrijven importregel'; -- Als uit kenmerkheader een geldige kenmerksoort-key volgt, -- dan is kenmerkwaarde gevuld met =; zoniet, -- dan is kenmerkwaarde gevuld met ! -- NB. Een NULL-waarde resulteert NIET in het wissen van een -- kenmerkveld (bijwerken kan wel, maar wissen dus niet)! INSERT INTO fac_imp_ins ( ins_discipline_omschrijving, ins_discipline_kostensoort, ins_srtgroep_omschrijving, ins_srtdeel_code, ins_srtdeel_omschrijving, ins_deel_omschrijving, ins_deel_opmerking, reserveerbaar, res_deel_eenheid, res_deel_prijs, alg_locatie_code, alg_gebouw_code, alg_verdieping_volgnr, alg_ruimte_nr, res_deel_alg_level, res_discipline_type, res_discipline_omschrijving, res_discipline_kostensoort, prs_perslid_matchcode, prs_perslid_matchwaarde, ins_kenmerkwaarde1, ins_kenmerkwaarde2, ins_kenmerkwaarde3, ins_kenmerkwaarde4, ins_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, ins_kenmerkwaarde11, ins_kenmerkwaarde12, ins_kenmerkwaarde13, ins_kenmerkwaarde14, ins_kenmerkwaarde15, ins_kenmerkwaarde16, ins_kenmerkwaarde17, ins_kenmerkwaarde18, ins_kenmerkwaarde19, ins_kenmerkwaarde20, ins_deel_aanmaak, ins_deel_vervaldatum, ins_deel_aantal, ins_deel_externnr ) VALUES ( v_ins_discipline_omschrijving, v_ins_discipline_kostensoort, v_ins_srtgroep_omschrijving, v_ins_srtdeel_code, v_ins_srtdeel_omschrijving, v_ins_deel_omschrijving, v_ins_deel_opmerking, v_reserveerbaar_n, v_res_deel_eenheid, v_res_deel_prijs_n, v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr_n, v_alg_ruimte_nr, v_res_deel_alg_level_n, v_res_discipline_type, v_res_discipline_omschrijving, v_res_discipline_kostensoort, v_prs_perslid_matchcode, v_prs_perslid_matchwaarde, DECODE (v_ins_kenmerk_key1, NULL, v_ins_kenmerkwaarde1, TO_CHAR (v_ins_kenmerk_key1) || '=' || SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)), DECODE (v_ins_kenmerk_key2, NULL, v_ins_kenmerkwaarde2, TO_CHAR (v_ins_kenmerk_key2) || '=' || SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)), DECODE (v_ins_kenmerk_key3, NULL, v_ins_kenmerkwaarde3, TO_CHAR (v_ins_kenmerk_key3) || '=' || SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)), DECODE (v_ins_kenmerk_key4, NULL, v_ins_kenmerkwaarde4, TO_CHAR (v_ins_kenmerk_key4) || '=' || SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)), DECODE (v_ins_kenmerk_key5, NULL, v_ins_kenmerkwaarde5, TO_CHAR (v_ins_kenmerk_key5) || '=' || SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)), DECODE (v_ins_kenmerk_key6, NULL, v_ins_kenmerkwaarde6, TO_CHAR (v_ins_kenmerk_key6) || '=' || SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)), DECODE (v_ins_kenmerk_key7, NULL, v_ins_kenmerkwaarde7, TO_CHAR (v_ins_kenmerk_key7) || '=' || SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)), DECODE (v_ins_kenmerk_key8, NULL, v_ins_kenmerkwaarde8, TO_CHAR (v_ins_kenmerk_key8) || '=' || SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)), DECODE (v_ins_kenmerk_key9, NULL, v_ins_kenmerkwaarde9, TO_CHAR (v_ins_kenmerk_key9) || '=' || SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)), DECODE (v_ins_kenmerk_key10, NULL, v_ins_kenmerkwaarde10, TO_CHAR (v_ins_kenmerk_key10) || '=' || SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)), DECODE (v_ins_kenmerk_key11, NULL, v_ins_kenmerkwaarde11, TO_CHAR (v_ins_kenmerk_key11) || '=' || SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)), DECODE (v_ins_kenmerk_key12, NULL, v_ins_kenmerkwaarde12, TO_CHAR (v_ins_kenmerk_key12) || '=' || SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)), DECODE (v_ins_kenmerk_key13, NULL, v_ins_kenmerkwaarde13, TO_CHAR (v_ins_kenmerk_key13) || '=' || SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)), DECODE (v_ins_kenmerk_key14, NULL, v_ins_kenmerkwaarde14, TO_CHAR (v_ins_kenmerk_key14) || '=' || SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)), DECODE (v_ins_kenmerk_key15, NULL, v_ins_kenmerkwaarde15, TO_CHAR (v_ins_kenmerk_key15) || '=' || SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)), DECODE (v_ins_kenmerk_key16, NULL, v_ins_kenmerkwaarde16, TO_CHAR (v_ins_kenmerk_key16) || '=' || SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)), DECODE (v_ins_kenmerk_key17, NULL, v_ins_kenmerkwaarde17, TO_CHAR (v_ins_kenmerk_key17) || '=' || SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)), DECODE (v_ins_kenmerk_key18, NULL, v_ins_kenmerkwaarde18, TO_CHAR (v_ins_kenmerk_key18) || '=' || SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)), DECODE (v_ins_kenmerk_key19, NULL, v_ins_kenmerkwaarde19, TO_CHAR (v_ins_kenmerk_key19) || '=' || SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)), DECODE (v_ins_kenmerk_key20, NULL, v_ins_kenmerkwaarde20, TO_CHAR (v_ins_kenmerk_key20) || '=' || SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)), v_ins_deel_aanmaak_d, v_ins_deel_vervaldatum_d, v_ins_deel_aantal_n, v_ins_deel_externnr ); COMMIT; v_count_import := v_count_import + 1; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, ''); COMMIT; END; END IF; END IF; END; END LOOP; IF (header_is_valid = 0) THEN fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!'); ELSE fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot), '' ); fac.imp_writelog ( p_import_key, 'S', 'Objecten/aantal ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_tot - v_count_import), '' ); END IF; COMMIT; -- En dan nu de mutatie acties op fac_imp_ins v_ins_srtdeel_code := 'INV'; UPDATE fac_imp_ins SET ins_srtdeel_code = v_ins_srtdeel_code WHERE ins_srtdeel_code IS NULL; COMMIT; UPDATE fac_imp_ins SET ins_kenmerkwaarde20 = ROWNUM; COMMIT; v_count_tot := fac.safe_to_number(substr(ins.nextdescription ('INV', NULL, 'default'), 4)); FOR rec IN imp_ins LOOP BEGIN v_ins_deel_omschrijving := v_ins_srtdeel_code || to_char (v_count_tot); UPDATE fac_imp_ins SET ins_deel_omschrijving = v_ins_deel_omschrijving WHERE ins_kenmerkwaarde20 = rec.ins_kenmerkwaarde20; UPDATE fac_imp_ins SET ins_kenmerkwaarde19 = (select max(i.ins_deel_key) from ins_deel i, fac_imp_ins f where i.ins_deel_omschrijving = f.ins_kenmerkwaarde5 and i.ins_deel_verwijder IS NULL and i.ins_discipline_key = 561) WHERE ins_kenmerkwaarde20 = rec.ins_kenmerkwaarde20; v_count_tot := v_count_tot + 1; END; END LOOP; COMMIT; FOR rec IN loc_ins LOOP BEGIN UPDATE fac_imp_ins SET alg_locatie_code = rec.locatie, alg_gebouw_code = rec.gebouw, alg_verdieping_volgnr = rec.verdieping, alg_ruimte_nr = rec.ruimte WHERE ins_kenmerkwaarde19 = rec.deel_key; END; END LOOP; COMMIT; FOR rec IN image_ins LOOP BEGIN UPDATE fac_imp_ins SET ins_kenmerkwaarde18 = rec.image WHERE UPPER(ins_srtdeel_omschrijving) = UPPER(rec.srtdeel); END; END LOOP; COMMIT; FOR rec IN opm_ins LOOP BEGIN UPDATE fac_imp_ins SET ins_deel_opmerking = rec.opmerking WHERE UPPER(ins_deel_omschrijving) = UPPER(rec.deel); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Inleesproces objecten afgebroken! regel:' || v_file_index); END vnog_import_bepakkinglijst; / CREATE OR REPLACE PROCEDURE vnog_update_bepakkinglijst (p_import_key IN NUMBER) AS -- Gerelateerd maken van ingelezen items aan voertuig. CURSOR imp_ins IS SELECT i.ins_deel_key asset, fac.safe_to_number (f.ins_kenmerkwaarde19) parent, f.ins_kenmerkwaarde18 image FROM ins_deel i, fac_imp_ins f WHERE i.ins_deel_omschrijving = f.ins_deel_omschrijving AND i.ins_deel_verwijder IS NULL; -- Kenmerken Beheergroep en Eigenaar overnemen van voertuig. CURSOR kenmerk_ins IS SELECT i.ins_deel_key, DECODE (ikd.ins_kenmerk_key, 342, 341, 382, 381) kkey, ikd.ins_kenmerkdeel_waarde waarde FROM ins_deel i, ins_kenmerkdeel ikd, fac_imp_ins f WHERE ikd.ins_deel_key = fac.safe_to_number (f.ins_kenmerkwaarde19) AND i.ins_deel_omschrijving = f.ins_deel_omschrijving AND ikd.ins_kenmerk_key IN (382, 342) -- Beheergroep, eigenaar AND i.ins_deel_verwijder IS NULL ; BEGIN -- Eerst de objecten verwerken op de normale manier fac_update_ins (p_import_key); -- Dan de zojuist aangemaakte objecten gerelateerd maken aan de parent en de afbeelding toekennen. FOR rec IN imp_ins LOOP BEGIN INSERT INTO ins_deelkoppeling (ins_deelkoppeling_van_key, ins_deelkoppeling_naar_key) VALUES (rec.parent, rec.asset); UPDATE ins_deel SET ins_deel_image = rec.image WHERE ins_deel_key = rec.asset; END; END LOOP; FOR rec IN kenmerk_ins LOOP BEGIN INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde, ins_kenmerkdeel_aanmaak) VALUES (rec.ins_deel_key, rec.kkey, rec.waarde, sysdate); END; END LOOP; END vnog_update_bepakkinglijst; / CREATE OR REPLACE PROCEDURE vnog_pre_putorders AS -- VNOG#87348 -- Proces 1: Gefiatteerde reserveringen versturen naar de cateraar CURSOR c1 IS SELECT rr.res_rsv_ruimte_key rkey, f.fac_tracking_datum fiatdate, rr.res_rsv_ruimte_van resdate FROM fac_tracking f, res_rsv_ruimte rr, res_rsv_artikel ra WHERE f.fac_srtnotificatie_key = 128 -- RESFOK AND f.fac_tracking_refkey = rr.res_rsv_ruimte_key AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key -- er is catering AND rr.res_rsv_ruimte_verwijder IS NULL -- niet verwijderd AND rr.res_rsv_ruimte_verzonden IS NULL -- nog niet verzonden AND rr.res_rsv_ruimte_teverzenden = 0 -- staat ook nog niet klaar AND rr.res_rsv_ruimte_van > sysdate; BEGIN FOR rec IN c1 LOOP BEGIN UPDATE res_rsv_ruimte SET res_rsv_ruimte_teverzenden = 1 WHERE res_rsv_ruimte_key = rec.rkey; END; END LOOP; -- VNOG#83941 ORDUPD ontdubbelen -- Proces 2: Dubbele ORDUPD notificaties afvangen DELETE FROM fac_notificatie fn1 WHERE fn1.fac_srtnotificatie_key = 80 --ORDUPD AND EXISTS -- er is een nieuwere (SELECT 1 FROM fac_notificatie fn2 WHERE fn1.fac_notificatie_refkey = fn2.fac_notificatie_refkey AND fn2.fac_srtnotificatie_key = 80 AND fn2.fac_notificatie_key > fn1.fac_notificatie_key); END; / -- QR-code rapportage (objecten / meldingen). CREATE OR REPLACE VIEW vnog_v_rap_qrc AS SELECT i.ins_deel_omschrijving hide_f_sort, l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving fclt_f_locatie, o.alg_gebouw_omschrijving fclt_f_gebouw, o.alg_plaatsaanduiding fclt_f_plaats, d.ins_discipline_omschrijving fclt_f_discipline, g.ins_srtgroep_omschrijving fclt_f_objectgroep, s.ins_srtdeel_omschrijving fclt_f_objectsoort, i.ins_deel_omschrijving fclt_f_identificatie, i.ins_deel_key, s.ins_srtdeel_key, o.alg_gebouw_code, o.alg_verdieping_code, i.ins_discipline_key fclt_3d_discipline_key, l.alg_locatie_key fclt_3d_locatie_key, i.ins_alg_ruimte_type, i.ins_alg_ruimte_key, b.fac_bookmark_id hide_f_bookmark_id FROM fac_bookmark b, ins_deel i, ins_srtdeel s, ins_srtgroep g, ins_discipline d, ins_v_alg_overzicht o, alg_locatie l WHERE b.fac_bookmark_naam = 'QRC_MELDING' AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE) AND i.ins_deel_verwijder IS NULL AND i.ins_deel_module = 'INS' AND i.ins_deel_parent_key IS NULL AND i.ins_srtdeel_key = s.ins_srtdeel_key AND s.ins_srtgroep_key = g.ins_srtgroep_key AND g.ins_discipline_key = d.ins_discipline_key AND i.ins_alg_ruimte_type = o.alg_onroerendgoed_type AND i.ins_alg_ruimte_key = o.alg_onroerendgoed_keys AND i.ins_alg_ruimte_type IN ('T', 'R', 'W') AND i.ins_alg_locatie_key = o.alg_locatie_key AND i.ins_alg_locatie_key = l.alg_locatie_key; -- QRCode rapportage voor objecten generiek CREATE OR REPLACE VIEW vnog_v_rap_qr_deel AS SELECT fac_bookmark_naam, fac_bookmark_id, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_deel_omschrijving, alg_locatie_key, alg_gebouw_omschrijving, ins_deel_aanmaak, ins_deel_key FROM fac_bookmark b, ins_v_deel_gegevens d WHERE fac_bookmark_expire IS NULL AND UPPER (fac_bookmark_path) = 'APPL/PDA/INS_DEEL.ASP'; CREATE OR REPLACE VIEW VNOG_V_RAP_ML_OBJ_KOSTEN AS SELECT l.alg_locatie_code locatie_code, l.alg_locatie_omschrijving locatie_naam, COALESCE (aog.alg_gebouw_code, aog.alg_terreinsector_code) gebouw_code, COALESCE (aog.alg_gebouw_naam, aog.alg_terreinsector_naam) gebouw_naam, od.ins_discipline_omschrijving objectdiscipline, sg.ins_srtgroep_omschrijving objectgroep, sd.ins_srtdeel_omschrijving objectsoort, d.ins_deel_key, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, 1, INSTR (d.ins_deel_omschrijving || '/', '/') - 1), NULL)) roepnr, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving || '/', '/') + 1), NULL)) kenteken, d.ins_deel_omschrijving identificatie, m.mld_melding_key melding_key, fac.gettrackingdate ('MLDNEW', m.mld_melding_key) melding_aanmaak, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) melding_nr, --o.mld_opdr_key verpl_key, fac.gettrackingdate ('ORDNEW', o.mld_opdr_key) verpl_aanmaak, DECODE (o.mld_opdr_key, NULL, NULL, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)) verpl_nr, os.mld_statusopdr_omschrijving verpl_status, u.prs_bedrijf_naam leverancier, f.fin_factuur_nr fact_nr, fr.fin_factuurregel_omschrijving fact_oms, fs.fin_factuur_statuses_omschr fact_status, (f.fin_factuur_totaal / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) excl_btw, (f.fin_factuur_totaal_btw / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) btw, ((COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) incl_btw, b.fac_bijlagen_key, --b.fac_bijlagen_aanmaak, DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename) fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (ivm. insuffficient memory) DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (LENGTH (TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename))) check_lengte FROM mld_melding_object mo, ins_v_aanwezigdeel d, --ins_deelkoppeling dkn, --ins_deel dv, --ins_srtdeel sdv, --ins_srtgroep sgv, --(SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) odv, -- M+L ins_srtdeel sd, ins_srtgroep sg, (SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) od, -- M+L alg_v_allonrgoed_gegevens aog, alg_locatie l, mld_melding m, ( SELECT mld_melding_key, COUNT (*) aantal FROM mld_melding_object GROUP BY mld_melding_key) m2o, -- Aantal om kosten evenredig te verdelen over gekoppelde objecten! mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, (SELECT * FROM mld_opdr WHERE mld_typeopdr_key != 781) o, -- Alle opdrachten behalve Offerteaanvraag! mld_statusopdr os, prs_bedrijf u, fin_factuur f, (SELECT fin_factuur_key, MIN (fin_factuurregel_omschrijving) fin_factuurregel_omschrijving FROM fin_factuurregel GROUP BY fin_factuur_key) fr, fin_factuur_statuses fs, (SELECT * FROM fac_v_bijlagen WHERE fac_bijlagen_verwijder IS NULL AND fac_bijlagen_module = 'FIN') b WHERE mo.ins_deel_key = d.ins_deel_key --AND d.ins_deel_key = dkn.ins_deelkoppeling_naar_key(+) --AND dkn.ins_deelkoppeling_van_key = dv.ins_deel_key(+) --AND dv.ins_srtdeel_key = sdv.ins_srtdeel_key(+) --AND sdv.ins_srtgroep_key = sgv.ins_srtgroep_key(+) --AND sgv.ins_discipline_key = odv.ins_discipline_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = od.ins_discipline_key AND d.ins_alg_ruimte_type IN ('R', 'T') AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys(+) AND aog.alg_locatie_key = l.alg_locatie_key(+) AND mo.mld_melding_key = m.mld_melding_key AND m.mld_melding_key = m2o.mld_melding_key(+) AND m.mld_meldbron_nr IS NULL -- Niet gemigreerd uit TOPdesk AND m.mld_melding_key > 15795 -- Niet gemigreerd uit Axxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = o.mld_melding_key(+) AND o.mld_statusopdr_key = os.mld_statusopdr_key(+) AND o.mld_uitvoerende_keys = u.prs_bedrijf_key(+) AND o.mld_opdr_key = f.mld_opdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+) AND f.fin_factuur_key = b.fac_bijlagen_refkey(+) UNION ALL SELECT l.alg_locatie_code locatie_code, l.alg_locatie_omschrijving locatie_naam, COALESCE (aog.alg_gebouw_code, aog.alg_terreinsector_code) gebouw_code, COALESCE (aog.alg_gebouw_naam, aog.alg_terreinsector_naam) gebouw_naam, od.ins_discipline_omschrijving objectdiscipline, sg.ins_srtgroep_omschrijving objectgroep, sd.ins_srtdeel_omschrijving objectsoort, d.ins_deel_key, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, 1, INSTR (d.ins_deel_omschrijving || '/', '/') - 1), NULL)) roepnr, TRIM (DECODE (od.ins_discipline_key, 561, SUBSTR (d.ins_deel_omschrijving, INSTR (d.ins_deel_omschrijving || '/', '/') + 1), NULL)) kenteken, d.ins_deel_omschrijving identificatie, m.mld_melding_key melding_key, fac.gettrackingdate ('MLDNEW', m.mld_melding_key) melding_aanmaak, sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) melding_nr, --bo.bes_bestelopdr_key verpl_key, fac.gettrackingdate ('BES2NE', bo.bes_bestelopdr_key) verpl_aanmaak, DECODE (bo.bes_bestelopdr_key, NULL, NULL, 'B' || COALESCE (bo.bes_bestelopdr_id, TO_CHAR (b.bes_bestelling_key))) verpl_nr, bos.bes_bestelopdrstatuses_omschr verpl_status, COALESCE (l2.prs_bedrijf_naam, l1.prs_bedrijf_naam) leverancier, f.fin_factuur_nr fact_nr, fr.fin_factuurregel_omschrijving fact_oms, fs.fin_factuur_statuses_omschr fact_status, (f.fin_factuur_totaal / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) excl_btw, (f.fin_factuur_totaal_btw / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) btw, ((COALESCE (f.fin_factuur_totaal, 0) + COALESCE (f.fin_factuur_totaal_btw, 0)) / DECODE (COALESCE (m2o.aantal, 0), 0, 1, m2o.aantal)) incl_btw, b.fac_bijlagen_key, --b.fac_bijlagen_aanmaak, DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename) fac_bijlagen_zippath, -- Let op, padnaam kan/mag MAX 258 posities hebben (ivm. insuffficient memory) DECODE (b.fac_bijlagen_key, NULL, NULL, TO_CHAR (LENGTH (TO_CHAR (d.ins_deel_omschrijving) || CHR (92) || sd.ins_srtdiscipline_prefix || TO_CHAR (m.mld_melding_key) || CHR (92) || b.fac_bijlagen_filename))) check_lengte FROM mld_melding_object mo, ins_v_aanwezigdeel d, --ins_deelkoppeling dkn, --ins_deel dv, --ins_srtdeel sdv, --ins_srtgroep sgv, --(SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) odv, -- M+L ins_srtdeel sd, ins_srtgroep sg, (SELECT * FROM ins_discipline WHERE ins_discipline_key IN (561, 562)) od, -- M+L alg_v_allonrgoed_gegevens aog, alg_locatie l, mld_melding m, ( SELECT mld_melding_key, COUNT (*) aantal FROM mld_melding_object GROUP BY mld_melding_key) m2o, -- Aantal om kosten evenredig te verdelen over gekoppelde objecten! mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd, bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_bestelopdrstatuses bos, prs_bedrijf l1, (SELECT * FROM bes_kenmerkbesteli kbi, bes_kenmerk k WHERE kbi.bes_kenmerkbesteli_verwijder IS NULL AND kbi.bes_kenmerk_key = k.bes_kenmerk_key AND k.bes_srtkenmerk_key = 1) bik, -- Leverancier prs_bedrijf l2, fin_factuur f, (SELECT fin_factuur_key, MIN (fin_factuurregel_omschrijving) fin_factuurregel_omschrijving FROM fin_factuurregel GROUP BY fin_factuur_key) fr, fin_factuur_statuses fs, (SELECT * FROM fac_v_bijlagen WHERE fac_bijlagen_verwijder IS NULL AND fac_bijlagen_module = 'FIN') b WHERE mo.ins_deel_key = d.ins_deel_key --AND d.ins_deel_key = dkn.ins_deelkoppeling_naar_key(+) --AND dkn.ins_deelkoppeling_van_key = dv.ins_deel_key(+) --AND dv.ins_srtdeel_key = sdv.ins_srtdeel_key(+) --AND sdv.ins_srtgroep_key = sgv.ins_srtgroep_key(+) --AND sgv.ins_discipline_key = odv.ins_discipline_key(+) AND d.ins_srtdeel_key = sd.ins_srtdeel_key AND sd.ins_srtgroep_key = sg.ins_srtgroep_key AND sg.ins_discipline_key = od.ins_discipline_key AND d.ins_alg_ruimte_type IN ('R', 'T') AND d.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys(+) AND aog.alg_locatie_key = l.alg_locatie_key(+) AND mo.mld_melding_key = m.mld_melding_key AND m.mld_melding_key = m2o.mld_melding_key(+) AND m.mld_meldbron_nr IS NULL -- Niet gemigreerd uit TOPdesk AND m.mld_melding_key > 15795 -- Niet gemigreerd uit Axxerion AND m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND m.mld_melding_key = b.mld_melding_key(+) AND b.bes_bestelling_key = bi.bes_bestelling_key(+) AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+) AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND bo.bes_bestelopdr_status = bos.bes_bestelopdrstatuses_key(+) AND bo.prs_bedrijf_key = l1.prs_bedrijf_key(+) AND bi.bes_bestelling_item_key = bik.bes_bestelling_item_key(+) AND fac.safe_to_number (bik.bes_kenmerkbesteli_waarde) = l2.prs_bedrijf_key(+) AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key AND f.fin_factuur_key = fr.fin_factuur_key AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key(+) AND f.fin_factuur_key = b.fac_bijlagen_refkey(+); /* CREATE OR REPLACE VIEW VNOG_V_NOTI_RESREMINDER ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XEMAIL, XMOBILE, FAC_SRTNOTIFICATIE_KEY, ATTACHMENTS, XSENDER, PRS_BEDRIJFADRES_KEY ) AS SELECT 'RESINF', NULL, rsvr.res_rsv_ruimte_contact_key, 'Reservering ' || rsvr.res_reservering_key || ': U heeft op ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM') || ' van ' || TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI') || ' tot ' || TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI') || ' ruimte ' || r.res_ruimte_nr || ' gereserveerd.', rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_ruimte_opstelling opst, res_ruimte r, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_rsv_ruimte_van >= SYSDATE AND rsvr.res_status_fo_key <= 5 --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_ruimte_opstel_key = opst.res_ruimte_opstel_key AND opst.res_ruimte_key = r.res_ruimte_key AND r.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN') UNION ALL SELECT 'RESINF', NULL, res_rsv_ruimte_contact_key, 'Reservering ' || res_reservering_key || ': U heeft op ' || TO_CHAR (MIN (van), 'dd-mm') || DECODE ( MIN (van), MAX (tot), ' om ' || TO_CHAR (MIN (van), 'hh24:mi'), ' van ' || TO_CHAR (MIN (van), 'hh24:mi') || ' tot ' || TO_CHAR (MAX (tot), 'hh24:mi')) || ' in ruimte (' || (SELECT alg_gebouw_code || '-' || alg_verdieping_code || '-' || alg_ruimte_nr FROM alg_v_onroerendgoed_gegevens arg WHERE arg.alg_ruimte_key = ruimte_key) || ') ' || COUNT (res_reservering_key) || ' voorziening(en) gereserveerd.', res_reservering_key, res_rsv_ruimte_key, NULL xemail, NULL xmobile, NULL fac_srtnotificatie_key, NULL attachments, NULL xsender, NULL prs_bedrijfadres_key FROM (SELECT rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, rsvr.res_rsv_ruimte_contact_key, rsva.res_rsv_artikel_levering van, rsva.res_rsv_artikel_levering tot, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_rsv_artikel rsva, res_artikel ra, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_status_fo_key <= 5 AND rsvr.res_ruimte_opstel_key IS NULL --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_rsv_ruimte_key = rsva.res_rsv_ruimte_key AND rsva.res_rsv_artikel_verwijder IS NULL AND rsva.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsva.res_rsv_artikel_levering >= SYSDATE AND rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN') UNION ALL SELECT rsvr.res_reservering_key, rsvr.res_rsv_ruimte_key, rsvr.res_rsv_ruimte_contact_key, rsvd.res_rsv_deel_van van, rsvd.res_rsv_deel_tot tot, rsvr.alg_ruimte_key ruimte_key FROM res_v_aanwezigrsv_ruimte rsvr, --res_v_aanwezigreservering res, res_rsv_deel rsvd, res_deel rd, res_disc_params rdp WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7) AND rsvr.res_status_fo_key <= 5 AND rsvr.res_ruimte_opstel_key IS NULL --AND rsvr.res_reservering_key = res.res_reservering_key AND rsvr.res_rsv_ruimte_key = rsvd.res_rsv_ruimte_key AND rsvd.res_rsv_deel_verwijder IS NULL AND rsvd.res_deel_key = rd.res_deel_key AND rd.res_discipline_key = rdp.res_ins_discipline_key AND rdp.res_disc_params_noti_dagen IS NOT NULL AND rsvd.res_rsv_deel_van >= SYSDATE AND rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen, 'DAGEN') AND fac.datumtijdplusuitvoertijd (SYSDATE, rdp.res_disc_params_noti_dagen + 1, 'DAGEN')) GROUP BY res_rsv_ruimte_contact_key, res_reservering_key, res_rsv_ruimte_key, ruimte_key; */ CREATE OR REPLACE VIEW VNOG_V_NOTI_INHUUR ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, DECODE (sn.fac_srtnotificatie_code, 'CUST01', 'inkoop@vnog.nl', 'CUST02', 'financien-beleid@vnog.nl', 'personeelsadministratie@vnog.nl') -- CUST03 xemail, NULL xmobile, NULL attachments FROM fac_tracking t, mld_melding m, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 52 -- MLDNEW AND t.fac_tracking_refkey = m.mld_melding_key AND m.mld_stdmelding_key = 949 -- Goedkeuringsaanvraag inhuur[A=946] AND sn.fac_srtnotificatie_code IN ('CUST01', 'CUST02', 'CUST03') AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_INHUUR' AND t.fac_tracking_datum > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) UNION ALL SELECT sn.fac_srtnotificatie_code, NULL, NULL, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, p.prs_perslid_email xemail, NULL xmobile, NULL attachments FROM fac_tracking t, mld_melding m, (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 555) kmgi, -- Goedkeuring Inkoop J/N[A=819] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 565) kmgf, -- Goedkeuring Financiën J/N[A=820] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 581) kmgh, -- Goedkeuring HRM J/N[A=821] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 537) kmp, -- Persoonsgegevens bekend J/N[A=827] prs_v_aanwezigperslid p, fac_srtnotificatie sn, fac_notificatie_job nj WHERE t.fac_srtnotificatie_key = 55 -- MLDUPD AND t.fac_tracking_refkey = m.mld_melding_key AND m.mld_stdmelding_key = 949 -- Goedkeuringsaanvraag inhuur[A=946] AND m.mld_melding_key = kmgi.mld_melding_key AND kmgi.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgf.mld_melding_key AND kmgf.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgh.mld_melding_key AND kmgh.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmp.mld_melding_key AND kmp.mld_kenmerkmelding_waarde = '2' -- Nee AND m.prs_perslid_key_voor = p.prs_perslid_key AND sn.fac_srtnotificatie_code = 'CUST04' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_INHUUR' AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun AND GREATEST (kmgi.mld_kenmerkmelding_aanmaak, kmgf.mld_kenmerkmelding_aanmaak, kmgh.mld_kenmerkmelding_aanmaak) > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE)) ; -- Notificatie bij het aanmaken van een GMO melding CREATE OR REPLACE VIEW VNOG_V_NOTI_GMO ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT sn.fac_srtnotificatie_code, NULL, m.prs_perslid_key, REPLACE (sn.fac_srtnotificatie_oms, '##KEY##', TO_CHAR (m.mld_melding_key)), m.mld_melding_key, NULL, NULL, NULL, NULL xmobile, NULL attachments FROM mld_melding m, fac_srtnotificatie sn, fac_notificatie_job nj WHERE m.mld_stdmelding_key = 951 -- GMO AND m.mld_melding_datum > nj.fac_notificatie_job_lastrun AND sn.fac_srtnotificatie_code = 'CUST06' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_GMO'; CREATE OR REPLACE VIEW VNOG_V_NOTI_CATCHANGE ( CODE, SENDER, RECEIVER, TEXT, KEY, XKEY, XSENDER, XEMAIL, XMOBILE, ATTACHMENTS ) AS SELECT DISTINCT sn.fac_srtnotificatie_code, NULL, NULL, 'Gefiatteerde reservering met catering ' || rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr || ' is verwijderd' text, rr.res_rsv_ruimte_key, NULL, NULL, 'servicedesk@vnog.nl', NULL xmobile, NULL attachments FROM fac_tracking f, res_rsv_ruimte rr, fac_srtnotificatie sn, fac_notificatie_job nj WHERE f.fac_srtnotificatie_key = 128 -- RESFOK AND f.fac_tracking_refkey = rr.res_rsv_ruimte_key AND rr.res_rsv_ruimte_van > sysdate AND rr.res_rsv_ruimte_verwijder > f.fac_tracking_datum -- verwijderd na fiat AND rr.res_rsv_ruimte_verwijder > nj.fac_notificatie_job_lastrun AND sn.fac_srtnotificatie_code = 'CUST07' AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_CATCHANGE'; CREATE OR REPLACE PACKAGE VNOG AS PROCEDURE afmelden_mld; PROCEDURE afmelden_ord; PROCEDURE verhuis_inv; PROCEDURE verstuur_gmo; PROCEDURE post_helloid; END; / CREATE OR REPLACE PACKAGE BODY VNOG AS -- Inkoop/Financiën/HRM akkoord en kandidaat bekend, dan melding afmelden -- en personeelsadministratie@vnog.nl CUST05-notificeren. PROCEDURE afmelden_mld AS c_applname VARCHAR2 (50) := 'AFMELDEN_MLD'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10); CURSOR c_mld_inhuur IS SELECT m.mld_melding_key, m.mld_melding_onderwerp, m.mld_melding_status FROM mld_melding m, mld_stdmelding sm, (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 555) kmgi, -- Goedkeuring Inkoop J/N[A=819] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 565) kmgf, -- Goedkeuring Financiën J/N[A=820] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 581) kmgh, -- Goedkeuring HRM J/N[A=821] (SELECT * FROM mld_kenmerkmelding WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 537) kmp -- Persoonsgegevens bekend J/N[A=827] WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key AND sm.mld_stdmelding_key = 949 -- Goedkeuringsaanvraag inhuur[A=946] AND m.mld_melding_key = kmgi.mld_melding_key AND kmgi.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgf.mld_melding_key AND kmgf.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmgh.mld_melding_key AND kmgh.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_key = kmp.mld_melding_key AND kmp.mld_kenmerkmelding_waarde = '1' -- Ja AND m.mld_melding_status NOT IN (1, 5, 6) -- Afgewezen, Afgemeld, Historie AND NOT EXISTS -- Geen lopende opdrachten (zou zo moeten zijn) (SELECT 1 FROM mld_opdr WHERE mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Ter fiattering/Gefiatteerd/Toegekend/Geaccepteerd/Ter goedkeuring AND mld_melding_key = m.mld_melding_key) ORDER BY 1; BEGIN v_count_tot := 0; FOR rec IN c_mld_inhuur LOOP v_errormsg := 'Fout afmelden goedkeuringsaanvraag'; v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '|' || rec.mld_melding_onderwerp || '] '; MLD.setmeldingstatus (rec.mld_melding_key, 5, NULL); -- Afgemeld (incl. tracking) -- Notificatie naar personeelsadministratie@vnog.nl v_errormsg := 'Fout toevoegen CUST05-email'; fac.putnotificationsrtprio (NULL, -- pfrom NULL, -- pto 'CUST05', -- pcode rec.mld_melding_key, -- pref NULL, -- poptmessage NULL, -- poptstatus 'personeelsadministratie@vnog.nl', -- poptemail NULL, -- poptmobile NULL, -- pxref NULL, -- pprio NULL, -- psender NULL -- pattach ); --v_errormsg := 'Fout toevoegen CUST05-track'; --fac.trackaction ('CUST05', rec.mld_melding_key, NULL, NULL, NULL); v_count_tot := v_count_tot + 1; IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF; END LOOP; fac.writelog (c_applname, 'S', '#Inhuur-meldingen gesloten: ' || TO_CHAR (v_count_tot), ''); COMMIT; 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 (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!'); END; -- Externe opdrachten in de nacht na uitgeven automatisch afmelden (zoals -- op 26-4-2024 telefonisch afgestemd met Rauno Oostra). -- Hierdoor krijgt de bovenliggende melding de status Niet opgelost en in -- de werkvoorraad 'Te behandelen' de gewenste aandachtswaarde. PROCEDURE afmelden_ord AS c_applname VARCHAR2 (50) := 'AFMELDEN_ORD'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10); CURSOR c_ord_extern IS SELECT o.mld_opdr_key, mld_melding_key, mld_opdr_bedrijfopdr_volgnr FROM mld_opdr o WHERE o.mld_typeopdr_key = 881 -- Externe opdracht AND o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- Lopend ORDER BY 1; BEGIN v_count_tot := 0; FOR rec IN c_ord_extern LOOP v_errormsg := 'Fout afmelden externe opdracht'; v_aanduiding := '[' || TO_CHAR (rec.mld_melding_key) || '/' || TO_CHAR (rec.mld_opdr_bedrijfopdr_volgnr) || '] '; MLD.setopdrachtstatus (rec.mld_opdr_key, 6, NULL); -- Afgemeld (incl. tracking) MLD.updatemeldingstatus (rec.mld_melding_key, 0, NULL); v_count_tot := v_count_tot + 1; IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF; END LOOP; fac.writelog (c_applname, 'S', '#Externe opdrachten gesloten: ' || TO_CHAR (v_count_tot), ''); COMMIT; 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 (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!'); END; PROCEDURE verhuis_inv AS c_applname VARCHAR2 (50) := 'VERHUIS_INV'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count_tot NUMBER (10); v_deel_key NUMBER (10); v_perslid_key NUMBER (5) := 3; CURSOR c1 IS SELECT i2.ins_deel_omschrijving vrt, i.ins_deel_omschrijving inv, i.ins_deel_opmerking nummer, i.ins_deel_key inventaris, i2.ins_deel_key voertuig, i.ins_alg_ruimte_key ruimte_oud, i2.ins_alg_ruimte_key ruimte_nieuw, COALESCE (SUBSTR (i2.ins_deel_omschrijving, 1, INSTR (i2.ins_deel_omschrijving, '/') - 1), i2.ins_deel_omschrijving) waarde FROM ins_deel i, ins_deel i2, ins_deelkoppeling k WHERE i.ins_deel_key = k.ins_deelkoppeling_naar_key AND i2.ins_deel_key = k.ins_deelkoppeling_van_key AND i.ins_alg_ruimte_key <> i2.ins_alg_ruimte_key AND i.ins_alg_ruimte_type = 'R' AND i2.ins_alg_ruimte_type = 'R' AND i.ins_deel_verwijder IS NULL AND i2.ins_deel_verwijder IS NULL; CURSOR c2 IS SELECT x.inventaris, x.nummer, x.waarde FROM (SELECT i2.ins_deel_omschrijving vrt, i.ins_deel_omschrijving inv, i.ins_deel_opmerking nummer, i.ins_deel_key inventaris, i2.ins_deel_key voertuig, i.ins_alg_ruimte_key ruimte_oud, i2.ins_alg_ruimte_key ruimte_nieuw, SUBSTR (i2.ins_deel_omschrijving, 1, INSTR (i2.ins_deel_omschrijving, '/') - 1) waarde FROM ins_deel i, ins_deel i2, ins_deelkoppeling k WHERE i.ins_deel_key = k.ins_deelkoppeling_naar_key AND i2.ins_deel_key = k.ins_deelkoppeling_van_key AND i.ins_alg_ruimte_type = 'R' AND i2.ins_alg_ruimte_type = 'R' AND i.ins_deel_verwijder IS NULL AND i2.ins_deel_verwijder IS NULL) x WHERE x.nummer != x.waarde; BEGIN v_count_tot := 0; FOR rec IN c1 LOOP v_errormsg := 'Fout verhuizen inventarisitem'; v_aanduiding := '[deelkey: ' || TO_CHAR (rec.inventaris) || ']'; BEGIN UPDATE ins_deel SET ins_alg_ruimte_key = rec.ruimte_nieuw, ins_deel_opmerking = rec.waarde WHERE ins_deel_key = rec.inventaris RETURNING ins_deel_key INTO v_deel_key; fac.trackaction ('INSUPD', v_deel_key, v_perslid_key, NULL, '#Inventarisitem verhuisd met voertuig'); END; v_count_tot := v_count_tot + 1; END LOOP; fac.writelog (c_applname, 'S', '#Inventarisitems verplaatst: ' || TO_CHAR (v_count_tot), ''); COMMIT; v_count_tot := 0; FOR rec IN c2 LOOP v_errormsg := 'Fout toekennen nieuw 06-nummer'; v_aanduiding := '[deelkey: ' || TO_CHAR (rec.inventaris) || ']'; BEGIN UPDATE ins_deel SET ins_deel_opmerking = rec.waarde WHERE ins_deel_key = rec.inventaris RETURNING ins_deel_key INTO v_deel_key; fac.trackaction ('INSUPD', v_deel_key, v_perslid_key, NULL, '#Nieuw 06-nummer toegekend aan inventarisitem'); END; v_count_tot := v_count_tot + 1; END LOOP; fac.writelog (c_applname, 'S', '#Inventarisitems aangepast: ' || TO_CHAR (v_count_tot), ''); COMMIT; 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 (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!'); END; -- Maak elke jaar op 1 augustus voor iedereen met objecten een GMO melding aan. -- Objecten in bezit worden hieraan gekoppeld. -- Wanneer een GMO melding voorzien is van een handtekening wordt deze de volgende dag afgemeld. -- Bijbehorende notificatie is CUST06 PROCEDURE verstuur_gmo AS c_applname VARCHAR2 (50) := 'VERSTUUR_GMO'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_verzenddatum VARCHAR2 (20); CURSOR mld IS SELECT MAX (i.ins_deel_key), p.prs_perslid_key FROM ins_deel i, prs_v_aanwezigperslid p WHERE ins_alg_ruimte_type = 'P' AND ins_alg_ruimte_key = p.prs_perslid_key AND ins_deel_verwijder IS NULL AND NOT EXISTS (SELECT 'x' FROM mld_melding m WHERE m.mld_stdmelding_key = 951 AND m.prs_perslid_key = p.prs_perslid_key AND mld_melding_status IN (0, 2, 3, 4, 7)) GROUP BY p.prs_perslid_key; CURSOR obj IS SELECT i.ins_deel_key, p.prs_perslid_key, m.mld_melding_key FROM ins_deel i, prs_v_aanwezigperslid p, mld_melding m WHERE ins_alg_ruimte_type = 'P' AND ins_alg_ruimte_key = p.prs_perslid_key AND ins_deel_verwijder IS NULL AND m.prs_perslid_key = p.prs_perslid_key AND m.mld_stdmelding_key = 951 -- GMO AND m.mld_melding_status = 2 AND NOT EXISTS (SELECT 'x' FROM mld_melding_object o WHERE o.mld_melding_key = m.mld_melding_key AND o.ins_deel_key = i.ins_deel_key); CURSOR tek IS SELECT m.mld_melding_key FROM mld_kenmerkmelding mk, mld_melding m WHERE m.mld_melding_key = mk.mld_melding_key AND m.mld_stdmelding_key = 951 -- GMO melding AND mk.mld_kenmerk_key = 1361 -- Handtekening AND m.mld_melding_status NOT IN (5, 6) -- Nog niet afgemeld of archief ; BEGIN SELECT fac_usrdata_omschr INTO v_verzenddatum FROM fac_usrdata WHERE fac_usrtab_key = 201 -- Instellingen AND fac_usrdata_code = 'GMO' AND fac_usrdata_verwijder IS NULL; IF TO_CHAR (sysdate, 'DD-MM') = v_verzenddatum THEN FOR rec IN mld LOOP v_errormsg := 'Fout aanmaken GMO melding'; v_aanduiding := '[perslid_key: ' || TO_CHAR (rec.prs_perslid_key) || ']'; BEGIN INSERT INTO mld_melding (mld_melding_module, mld_meldbron_key, mld_melding_datum, mld_stdmelding_key, prs_perslid_key, prs_perslid_key_voor, mld_melding_status, mld_melding_spoed, mld_ins_discipline_key) VALUES ('MLD', 5, SYSDATE, 951, -- GMO rec.prs_perslid_key, rec.prs_perslid_key, 2, -- Status nieuw 3, -- Prio normaal 1121) -- Behandelteam GMO ; END; END LOOP; FOR rec IN obj LOOP v_errormsg := 'Fout toevoegen object aan GMO melding'; v_aanduiding := '[deel_key: ' || TO_CHAR (rec.ins_deel_key) || ']'; BEGIN INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key) VALUES (rec.mld_melding_key, rec.ins_deel_key); END; END LOOP; COMMIT; ELSE FOR rec IN tek LOOP v_errormsg := 'Fout afmelden GMO melding'; v_aanduiding := '[melding_key: ' || TO_CHAR (rec.mld_melding_key) || ']'; BEGIN UPDATE mld_melding SET mld_melding_status = 5 -- Afgemeld WHERE mld_melding_key = rec.mld_melding_key; END; END LOOP; COMMIT; END IF; 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 (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!'); END; PROCEDURE post_helloid AS v_importkey NUMBER; v_importappkey NUMBER; -- Personen die verwijderd moet worden CURSOR c1 IS SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_inactief IS NOT NULL -- Als inactief gemarkeerd door HelloID AND prs_perslid_verwijder IS NULL; -- Toekennen van werkplek aan persoon (postcommandanten en personen met meer dan 1 werkplek zijn uitgesloten) CURSOR c2 IS SELECT p.prs_perslid_key, pk.prs_kenmerklink_waarde, l.alg_locatie_key, g.alg_gebouw_key, g.alg_gebouw_naam, v.alg_verdieping_key, r.alg_ruimte_key ruimte FROM prs_perslid p, prs_kenmerklink pk, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE p.prs_perslid_key = pk.prs_link_key AND pk.prs_kenmerklink_niveau = 'P' AND pk.prs_kenmerk_key = 1060 -- LocatieID AND prs_kenmerklink_waarde = l.alg_locatie_key AND g.alg_locatie_key = l.alg_locatie_key AND v.alg_gebouw_key = g.alg_gebouw_key AND r.alg_verdieping_key = v.alg_verdieping_key AND r.alg_ruimte_nr = '0000' AND l.alg_locatie_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL AND r.alg_ruimte_verwijder IS NULL AND UPPER (g.alg_gebouw_naam) LIKE 'WERKLO%' AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_naam) LIKE 'WERKLO%' AND alg_locatie_key = g.alg_locatie_key AND alg_gebouw_key < g.alg_gebouw_key) AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep f WHERE f.fac_groep_key = 171 AND p.prs_perslid_key = f.prs_perslid_key) UNION ALL SELECT p.prs_perslid_key, pk.prs_kenmerklink_waarde, l.alg_locatie_key, g.alg_gebouw_key, g.alg_gebouw_naam, v.alg_verdieping_key, r.alg_ruimte_key ruimte FROM prs_perslid p, prs_kenmerklink pk, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE p.prs_perslid_key = pk.prs_link_key AND pk.prs_kenmerklink_niveau = 'P' AND pk.prs_kenmerk_key = 1060 -- LocatieID AND prs_kenmerklink_waarde = l.alg_locatie_key AND g.alg_locatie_key = l.alg_locatie_key AND v.alg_gebouw_key = g.alg_gebouw_key AND r.alg_verdieping_key = v.alg_verdieping_key AND r.alg_ruimte_nr = '0000' AND l.alg_locatie_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL AND r.alg_ruimte_verwijder IS NULL AND UPPER (g.alg_gebouw_naam) NOT LIKE 'WERKLO%' AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_naam) LIKE 'WERKLO%' AND alg_locatie_key = g.alg_locatie_key) AND NOT EXISTS (SELECT 1 FROM alg_v_aanweziggebouw WHERE UPPER (alg_gebouw_naam) NOT LIKE 'WERKLO%' AND alg_locatie_key = g.alg_locatie_key AND alg_gebouw_key < g.alg_gebouw_key) AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep f WHERE f.fac_groep_key = 171 AND p.prs_perslid_key = f.prs_perslid_key); -- Voor deze acties hebben we een import_key nodig, dus die gaan we nu aanmaken BEGIN SELECT fac_import_app_key INTO v_importappkey FROM fac_import_app WHERE fac_import_app_code = 'HELLOID'; INSERT INTO fac_import (fac_import_app_key, fac_import_datum_gelezen, fac_import_datum_verwerkt, fac_import_filenaam, prs_perslid_key) VALUES (v_importappkey, SYSDATE, SYSDATE, NULL, 3); SELECT MAX (fac_import_key) INTO v_importkey FROM fac_import; FOR rec IN c1 LOOP BEGIN prs.delete_perslid (v_importkey, rec.prs_perslid_key); END; END LOOP; FOR rec IN c2 LOOP BEGIN prs.movetoruimte (rec.prs_perslid_key, rec.ruimte, 'A', 0); END; END LOOP; END; END; / CREATE OR REPLACE PROCEDURE VNOG_DAILY AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN vnog.afmelden_mld; vnog.afmelden_ord; vnog.verhuis_inv; vnog.verstuur_gmo; vnog.post_helloid; 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 VNOG_DAILY; / CREATE OR REPLACE VIEW vnog_v_rap_mails ( perslid_key, email ) AS SELECT p.prs_perslid_key, p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL AND p.prs_perslid_email IS NOT NULL; -- Rapport om te kunnen zien wie er online is (ICT en Servicedesk) CREATE OR REPLACE VIEW vnog_v_rap_prs_online ( naam, laatste_tracking ) AS SELECT x.prs_perslid_naam_full, CASE WHEN x.note > x.tracking_date THEN x.note ELSE x.tracking_date END FROM ( SELECT p.prs_perslid_naam_full, MAX (f.fac_tracking_datum) tracking_date, MAX (m.mld_melding_note_aanmaak) note FROM fac_tracking f, prs_v_perslid_fullnames p, mld_melding_note m, fac_gebruikersgroep fg WHERE p.prs_perslid_key = f.prs_perslid_key(+) AND p.prs_perslid_key = m.prs_perslid_key(+) AND p.prs_perslid_key = fg.prs_perslid_key AND fg.fac_groep_key IN (2, 21, 161, 178, 184, 186) -- ICT en Servicedesk groepen AND p.prs_perslid_key > 702 -- Alles hoger dan sensor account GROUP BY p.prs_perslid_naam_full) x; ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile