-- -- $Id$ -- -- Script containing customer specific db-configuration for VBGO. DEFINE thisfile = 'VBGO.SQL' DEFINE dbuser = '^VBGO' 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 ------ -- Koppeling om persoonsgegevens in te lezen vanuit Synergy van Yask (aangeleverde bestand dat -- in de VenR omgeving via de mail ontvangen is wordt gekopieerd naar de VBGO omgeving. CREATE OR REPLACE PROCEDURE vbgo_import_prs (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR(255); BEGIN -- v_alg_locatie_code 1 -- v_alg_gebouw_code 2 -- v_alg_verdieping_volgnr 3 -- v_alg_ruimte_nr 4 -- v_prs_werkplek_volgnr 5 -- v_prs_werkplek_omschrijving 6 -- v_prs_afdeling_naam 7 -- v_prs_perslid_naam 8 -- v_prs_perslid_tussenvoegsel 9 -- v_prs_perslid_voornaam 10 -- v_prs_perslid_voorletters 11 -- v_prs_perslid_partner_naam 12 -- v_prs_perslid_partner_tussenv 13 -- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt -- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken -- 2 personen die de geboortenaam van de partner willen gebruiken -- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken -- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default -- v_prs_perslid_telefoonnr 16 -- v_prs_perslid_mobiel 17 -- v_prs_perslid_email 18 -- v_prs_perslid_dienstverband 19 -- v_prs_perslid_nr 20 -- v_prs_srtperslid_omschrijving 21 -- v_prs_perslid_oslogin 22 -- v_prs_perslid_wachtwoord 23 -- v_prs_perslid_titel 24 -- v_prs_perslid_apikey 25 -- v_dummy 26 -- v_prs_kenmerk1 27 -- v_prs_kenmerk2 28 -- v_prs_kenmerk3 29 -- v_prs_kenmerk4 30 -- v_prs_kenmerk5 31 -- v_prs_kenmerk6 32 -- v_prs_kenmerk7 33 -- v_prs_kenmerk8 34 -- v_prs_kenmerk9 35 -- v_prs_kenmerk10 36 -- v_prs_kenmerk11 37 -- v_prs_kenmerk12 38 -- v_prs_kenmerk13 39 -- v_prs_kenmerk14 40 -- v_prs_kenmerk15 41 -- v_prs_kenmerk16 42 -- v_prs_kenmerk17 43 -- v_prs_kenmerk18 44 -- v_prs_kenmerk19 45 -- v_prs_kenmerk20 46 -- Voeg een lege regel toe anders wordt de eerste persoon geskipped. INSERT INTO fac_imp_file (fac_imp_file_line, fac_imp_file_index, fac_import_key) VALUES ('Header', 0, p_import_key); v_seq_of_columns := '0;0;0;0;0;0;9;4;3;2;0;0;0;0;0;10;11;8;0;1;5;8;0;0;0;0;6;7;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0'; prs.import_perslid(p_import_key, v_seq_of_columns, '%'); UPDATE fac_imp_perslid SET prs_perslid_oslogin = UPPER(prs_perslid_oslogin), prs_afdeling_naam = 'FS'; DELETE fac_imp_perslid WHERE prs_perslid_oslogin IS NULL; END; / CREATE OR REPLACE PROCEDURE vbgo_update_prs (p_import_key IN NUMBER) IS CURSOR c_del IS SELECT p.prs_perslid_key FROM prs_perslid p WHERE p.prs_perslid_verwijder IS NULL -- Persoon niet verwijderd AND p.prs_afdeling_key = 75 -- FS AND p.prs_perslid_nr IS NOT NULL AND SUBSTR (COALESCE (p.prs_perslid_oslogin, 'Que'), 1, 1) <> '_' AND COALESCE (p.prs_perslid_login, SYSDATE - 300) < SYSDATE - 60 -- Persoon 2 maanden niet ingelogd geweest AND NOT EXISTS (SELECT 1 FROM fac_imp_perslid i WHERE lower(i.prs_perslid_email) = lower(p.prs_perslid_email)); v_count NUMBER; BEGIN SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid; prs.update_perslid (p_import_key, 'EMAIL', NULL); INSERT INTO fac_gebruikersgroep gg (prs_perslid_key, fac_groep_key) SELECT p.prs_perslid_key, 487 -- YASK_Default_MLD_BES_RES FROM prs_perslid p WHERE prs_perslid_verwijder IS NULL AND prs_afdeling_key = 75 -- YASK AND NOT EXISTS (SELECT 1 FROM fac_gebruikersgroep gg2 WHERE gg2.fac_groep_key = 487 AND p.prs_perslid_key = gg2.prs_perslid_key); -- Oppassen dat we geen leeg bestand ontvangen hebben. IF v_count > 100 THEN FOR rec IN c_del LOOP prs.delete_perslid (p_import_key, rec.prs_perslid_key); END LOOP; END IF; COMMIT; END; / -- View voor reserveerbare (werkplek)OBJECTEN, het default thema met key 13 -- Deze core-view wordt direct als kleur-objecten-thema gebruikt, maar kan ook als basis voor een alternatief via worden gebruikt -- Kijkt nu hard maximaal 42 dagen tov van nu vooruit, wat hopelijk even genoeg is voor alle situaties -- De verschillende waardevarianten zijn presentatie alternatieven, evt meerdere regels onder elkaar -- waarde1: Voor hele dagen: Vrij(0) of Bezet (3) -- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3) of het type werkplek (kenmerk bij deel) -- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij CREATE OR REPLACE VIEW vbgo_v_thema_wp_res_datum AS WITH datums AS ( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum FROM DUAL CONNECT BY LEVEL <= 42) SELECT datum fclt_f_datum, ins_deel_key, MIN (res_rsv_deel_van) min_van, MAX (res_rsv_deel_tot) max_tot, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 ELSE 3 -- hele dag END waarde1, CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN FAC.safe_to_number(fac_usrdata_code) WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- ochtend WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- middag ELSE 3 -- hele dag END waarde, COUNT (res_rsv_deel_tot) -- aantal reservering deze dag waarde3 FROM (SELECT datums.datum, res_ins_deel_key ins_deel_key, res_rsv_deel_van, res_rsv_deel_tot, fac_usrdata_code FROM res_v_aanwezigdeel r, ins_deel d, datums, ins_kenmerkdeel kd, fac_usrdata ud, (SELECT datum, res_deel_key, res_rsv_deel_van, res_rsv_deel_tot FROM datums, res_v_aanwezigrsv_deel rrd WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso AND datum + 1 >= res_rsv_deel_van AND datum < res_rsv_deel_tot) blokkerend -- vandaag en nog niet afgelopen WHERE r.res_deel_key = blokkerend.res_deel_key(+) AND datums.datum = blokkerend.datum(+) AND (r.res_deel_vervaldatum IS NULL or r.res_deel_vervaldatum > datums.datum) AND d.ins_deel_key = r.res_ins_deel_key AND d.ins_deel_key = kd.ins_deel_key AND kd.ins_kenmerk_key = 1 -- type werkplek AND FAC.safe_to_number(ins_kenmerkdeel_waarde) = ud.fac_usrdata_key) GROUP BY datum, ins_deel_key, fac_usrdata_code ORDER BY datum, ins_deel_key; -- rapportage voor vergaderdisplays CREATE OR REPLACE VIEW vbgo_v_rap_res_room_display AS SELECT prs_perslid_naam_friendly res_rsv_ruimte_host_friendly, res_ruimte_nr, TO_CHAR (COALESCE (rrr.res_rsv_ruimte_van, SYSDATE), 'Day') dagvdweek, TO_CHAR (COALESCE (rrr.res_rsv_ruimte_van, SYSDATE), 'Month') maand, TO_CHAR (COALESCE (rrr.res_rsv_ruimte_van, SYSDATE), 'YYYY') jaar, TO_CHAR (COALESCE (rrr.res_rsv_ruimte_van, SYSDATE), 'DD') dag, DECODE (rrr.res_rsv_ruimte_key, NULL, 'Vrij', DECODE(SIGN(rrr.res_rsv_ruimte_van - SYSDATE), 1, 'Vrij', 'Bezet')) status, TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') res_rsv_ruimte_van, TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') res_rsv_ruimte_tot, rar.res_alg_ruimte_key FROM res_ruimte rr, res_rsv_ruimte rrr, prs_v_perslid_fullnames pf, res_alg_ruimte rar, (SELECT * FROM res_v_rsv_ruimte_2_alg_ruimte WHERE res_rsv_ruimte_tot > SYSDATE AND TRUNC(res_rsv_ruimte_van) = TRUNC(SYSDATE)) r2a WHERE rr.res_ruimte_key = r2a.res_ruimte_key(+) AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key(+) AND rr.res_ruimte_key = rar.res_ruimte_key; -- Tijdelijke procedures om reserveringen uit Outlook in te lezen CREATE OR REPLACE PROCEDURE vbgo_import_res (p_import_key IN NUMBER) AS c_fielddelimitor VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); -- De importvelden: v_afdelingscode VARCHAR2 (100); v_afdelingsomschrijving VARCHAR2 (100); v_afdelingsparent VARCHAR2 (100); v_zaal VARCHAR2(1000); v_starttijd VARCHAR2(100); v_eindtijd VARCHAR2(100); v_onderwerp VARCHAR2(1000); v_organisator VARCHAR2(100); v_uitgenodigd VARCHAR2(1000); v_dummy VARCHAR2(1000); v_perslid_key NUMBER; CURSOR c IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst de importtabel leegmaken DELETE vbgo_imp_res; FOR rec IN c LOOP BEGIN v_errormsg := 'Fout FETCH te importeren rij'; v_newline := rec.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; -- Lees alle veldwaarden fac.imp_getfield (v_newline, c_fielddelimitor, v_zaal); fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy); fac.imp_getfield (v_newline, c_fielddelimitor, v_starttijd); fac.imp_getfield (v_newline, c_fielddelimitor, v_eindtijd); fac.imp_getfield (v_newline, c_fielddelimitor, v_onderwerp); fac.imp_getfield (v_newline, c_fielddelimitor, v_organisator); fac.imp_getfield (v_newline, c_fielddelimitor, v_uitgenodigd); v_aanduiding := v_zaal || '|' || v_starttijd || '|' || v_eindtijd; v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_aanduiding || ']'; BEGIN SELECT MAX(prs_perslid_key) INTO v_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER(prs_perslid_email) = UPPER(v_organisator); EXCEPTION WHEN NO_DATA_FOUND THEN fac.imp_writelog (p_import_key, 'W', v_errormsg, ''); END; INSERT INTO vbgo_imp_res (zaal, starttijd, eindtijd, onderwerp, organisator, uitgenodigd) VALUES (v_zaal, v_starttijd, v_eindtijd, v_onderwerp, v_organisator, v_uitgenodigd); END; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN 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, ''); END vbgo_import_res; / CREATE OR REPLACE PROCEDURE vbgo_update_res (p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM vbgo_imp_res WHERE TO_DATE (starttijd, 'dd-mm-yyyy hh24:mi') > SYSDATE AND starttijd NOT LIKE 'Starttijd'; v_ruimte_opstel_key NUMBER; v_perslid_key NUMBER; v_res_ruimte_key NUMBER; v_rsv_ruimte_key NUMBER; v_reservering_key NUMBER; v_opmerking VARCHAR2(200); v_aanduiding VARCHAR2 (100); v_errorhint VARCHAR2 (1000); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); BEGIN BEGIN FOR rec IN c LOOP BEGIN v_opmerking := NULL; v_aanduiding := rec.zaal || '-' || rec.starttijd; v_errorhint := 'Opzoeken reserveerbare ruimte: ' || rec.zaal; SELECT CASE SUBSTR (rec.zaal, 1, INSTR (rec.zaal, '@') - 1) WHEN 'ams.jordaan' THEN 21 --AMS Vergaderruimte 2 - De Jordaan ams.jordaan@vebego.mail.onmicrosoft.com WHEN 'AMS.Albert' THEN 41 --AMS Vergaderruimte 1 - Albert Cuyp AMS.Albert@vebego.mail.onmicrosoft.com WHEN 'ams.dam' THEN 42 --AMS Vergaderruimte 3 - De dam ams.dam@vebego.mail.onmicrosoft.com WHEN 'ams.vondelpark' THEN 61 --AMS Vergaderruimte 6 - Het vondelpark ams.vondelpark@vebego.mail.onmicrosoft.com WHEN 'ams.rembrandtplein' THEN 62 --AMS Vergaderruimte 5 - Rembrandtplein ams.rembrandtplein@vebego.mail.onmicrosoft.com WHEN 'ams.johan' THEN 63 --AMS Vergaderruimte 4 - Johan Cruijf Arena ams.johan@vebego.mail.onmicrosoft.com WHEN 'Vergaderruimte.1.Eindhoven' THEN 81 --EIND Vergaderruimte 1 - Eindhoven Vergaderruimte.1.Eindhoven@hago.nl WHEN 'Vergaderruimte.2.Eindhoven' THEN 101 --EIND Vergaderruimte 2 - Eindhoven Vergaderruimte.2.Eindhoven@hago.nl WHEN 'Vergaderruimte.3.Eindhoven' THEN 121 --EIND Vergaderruimte 3 - Eindhoven Vergaderruimte.3.Eindhoven@hago.nl WHEN 'ruimte1arn' THEN 141 --ARN Vergaderruimte 1 - Arnhem ruimte1arn@vebego.mail.onmicrosoft.com WHEN '19' THEN 142 --EIND Vergaderruimte 4 - Eindhoven WHEN 'ruimte2arn' THEN 143 --ARN Vergaderruimte 2 - Arnhem ruimte2arn@vebego.mail.onmicrosoft.com WHEN 'ruimte3arn' THEN 144 --ARN Vergaderruimte 3 - Arnhem ruimte3arn@vebego.mail.onmicrosoft.com WHEN '22' THEN 161 --EIND Combi ruimte 2&3 - Eindhoven WHEN '23' THEN 161 --EIND Combi ruimte 2&3 - Eindhoven WHEN 'Vergaderruimte1' THEN 181 --DB Vergaderruimte 1 - Den Bosch Vergaderruimte1@hagozorg.nl WHEN '25' THEN 201 --DB Vergaderruimte 3 - Den Bosch WHEN 'Vergaderruimte4' THEN 221 --DB Vergaderruimte 4 - Den Bosch Vergaderruimte4@hagozorg.nl WHEN 'Vergaderruimte5' THEN 222 --DB Vergaderruimte 5 - Den Bosch Vergaderruimte5@hagozorg.nl WHEN 'Vergaderkamer.Capelle.Hago.Zorg' THEN 223 --CAP Vergaderruimte ZW - Capelle Vergaderkamer.Capelle.Hago.Zorg@hagozorg.nl WHEN 'Vergaderruimte6' THEN 224 --DB Vergaderruimte 6 - Den Bosch Vergaderruimte6@hagozorg.nl WHEN 'Vergaderruimte1CAY' THEN 225 --CAP Vergaderruimte 1 - Capelle Vergaderruimte1CAY@hago.nl WHEN 'Vergaderruimte7' THEN 226 --DB Vergaderruimte 7 - Den Bosch Vergaderruimte7@hagozorg.nl WHEN 'Vergaderruimte2CAY' THEN 227 --CAP Vergaderruimte 2 - Capelle Vergaderruimte2CAY@hago.nl WHEN 'Vergaderruimte8' THEN 228 --DB Vergaderruimte 8 - Den Bosch Vergaderruimte8@hagozorg.nl WHEN '34' THEN 229 --CAP Spreekkamer - Capelle WHEN 'Vergaderkamer.heerlen1' THEN 241 --HRL/8 Vergaderruimte 1 - Heerlen Vergaderkamer.heerlen1@hagozorg.nl WHEN 'Vergaderkamer.heerlen2' THEN 242 --HRL/8 Vergaderruimte 2 - Heerlen Vergaderkamer.heerlen2@hagozorg.nl WHEN 'Vergaderkamer.heerlen3' THEN 243 --HRL/8 Vergaderruimte 3 - Heerlen Vergaderkamer.heerlen3@hagozorg.nl WHEN 'Vergaderkamer.heerlen4' THEN 244 --HRL/8 Vergaderruimte 4 - Heerlen Vergaderkamer.heerlen4@hagozorg.nl WHEN 'Vergaderkamer.heerlen5' THEN 245 --HRL/8 Vergaderruimte 5 - Heerlen Vergaderkamer.heerlen5@hagozorg.nl WHEN 'Vergaderkamer.heerlen.6' THEN 246 --HRL/8 Vergaderruimte 6 - Heerlen Vergaderkamer.heerlen.6@hagozorg.nl WHEN '41' THEN 247 --HRL/8 Vergaderruimte 7 - Heerlen WHEN '42' THEN 261 --HRL/8 Vergaderruimte 1 - Heerlen 8A WHEN '43' THEN 262 --HRL/8 Vergaderruimte 2 - Heerlen 8A WHEN '44' THEN 263 --HRL/8 Vergaderruimte 3 - Heerlen 8A WHEN '45' THEN 264 --HRL/8 Vergaderruimte 4 - Heerlen 8A WHEN '45' THEN 265 --HRL/8 Vergaderruimte 5 - Heerlen 8A WHEN '46' THEN 266 --HRL/8 Vergaderruimte 6 - Heerlen 8A ELSE -1 END INTO v_res_ruimte_key FROM DUAL; v_errorhint := 'Opzoeken opstelling: ' || rec.zaal; SELECT res_ruimte_opstel_key INTO v_ruimte_opstel_key FROM res_ruimte_opstelling WHERE res_ruimte_opstel_verwijder IS NULL AND res_ruimte_key = v_res_ruimte_key; BEGIN SELECT prs_perslid_key INTO v_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_email) = UPPER (rec.organisator); EXCEPTION WHEN NO_DATA_FOUND THEN v_perslid_key := 3; -- Facilitor v_opmerking := 'Contactpersoon: ' || rec.organisator; END; INSERT INTO res_reservering (res_reservering_verwijder) VALUES (NULL) RETURNING res_reservering_key INTO v_reservering_key; v_errormsg := 'Fout toevoegen rsv_ruimte.'; INSERT INTO res_rsv_ruimte (res_reservering_key, res_rsv_ruimte_volgnr, res_rsv_ruimte_opmerking, res_rsv_ruimte_omschrijving, prs_kostenplaats_key, res_rsv_ruimte_contact_key, res_rsv_ruimte_host_key, res_ruimte_opstel_key, res_activiteit_key, res_rsv_ruimte_van, res_rsv_ruimte_tot, res_rsv_ruimte_bezoekers, res_status_fo_key, res_status_bo_key) VALUES (v_reservering_key, 1, v_opmerking, rec.onderwerp, NULL, v_perslid_key, v_perslid_key, v_ruimte_opstel_key, 10, -- vergadering TO_DATE (rec.starttijd, 'DD-MM-YYYY:HH24:MI'), TO_DATE (rec.eindtijd, 'DD-MM-YYYY:HH24:MI'), NULL, 2, 2) RETURNING res_rsv_ruimte_key INTO v_rsv_ruimte_key; FAC.trackaction ('RESNEW', v_rsv_ruimte_key, 3, SYSDATE, 'Aangemaakt door conversie uit Outook'); RES.set_ruimte_dirty (v_rsv_ruimte_key); fac.imp_writelog (p_import_key, 'I', 'Reservering is aangemaakt: ' || v_rsv_ruimte_key, v_aanduiding); EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); END; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint); END; END; / CREATE OR REPLACE PROCEDURE vbgo_import_mailomzetting (p_import_key IN NUMBER) AS CURSOR f IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_header_is_valid NUMBER; v_count NUMBER; v_field VARCHAR2(100); v_index NUMBER (2); v_old_email_index NUMBER := NULL; v_new_email_index NUMBER := NULL; v_name_index NUMBER := NULL; v_old_email VARCHAR2(200); v_new_email VARCHAR2(200); v_name VARCHAR2(200); c_delim VARCHAR2(1) := ';'; BEGIN v_header_is_valid := 0; FOR rec IN f LOOP v_newline := rec.fac_imp_file_line; IF v_header_is_valid = 0 THEN IF rec.fac_imp_file_index = 1 THEN v_index := 0; v_field := 'QueQeLeQue'; WHILE v_field IS NOT NULL AND v_index < 30 LOOP fac.imp_getfield (v_newline, c_delim, v_field); v_index := v_index + 1; CASE UPPER(v_field) WHEN 'CUSTOMER EMAIL' THEN v_old_email_index := v_index; WHEN 'NIEUWE UPN' THEN v_new_email_index := v_index; WHEN 'CUSTOMER NAME' THEN v_name_index := v_index; ELSE NULL; END CASE; END LOOP; END IF; IF v_old_email_index IS NOT NULL AND v_new_email_index IS NOT NULL AND v_name_index IS NOT NULL THEN v_header_is_valid := 1; END IF; ELSIF v_newline NOT LIKE ';;;;;;;;%' THEN fac.imp_getfield_nr (v_newline, c_delim, v_old_email_index, v_old_email); fac.imp_getfield_nr (v_newline, c_delim, v_new_email_index, v_new_email); fac.imp_getfield_nr (v_newline, c_delim, v_name_index, v_name); SELECT COUNT (*) INTO v_count FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_email) = UPPER (v_old_email); IF v_count = 0 THEN fac.imp_writelog (p_import_key, 'W', 'Persoon is niet gevonden: ' || v_name || ' <' || v_old_email || '>', ''); END IF; IF v_count > 1 THEN fac.imp_writelog (p_import_key, 'E', 'Persoon is ' || v_count || ' keer gevonden: ' || v_name || ' <' || v_old_email || '>', ''); END IF; IF v_count = 1 THEN fac.imp_writelog (p_import_key, 'I', 'Persoon is gevonden: ' || v_name || ' <' || v_old_email || '>', ''); END IF; END IF; END LOOP; IF v_header_is_valid = 0 THEN fac.imp_writelog (p_import_key, 'W', 'Geen geldige header aangetroffen', ''); END IF; END; / CREATE OR REPLACE PROCEDURE vbgo_update_mailomzetting (p_import_key IN NUMBER) AS CURSOR f IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line v_header_is_valid NUMBER; v_count NUMBER; v_field VARCHAR2(100); v_index NUMBER (2); v_old_email_index NUMBER := NULL; v_new_email_index NUMBER := NULL; v_name_index NUMBER := NULL; v_old_email VARCHAR2(200); v_new_email VARCHAR2(200); v_name VARCHAR2(200); c_delim VARCHAR2(1) := ';'; v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_prs_perslid_key NUMBER; BEGIN v_aanduiding := 'Initialisatie'; v_header_is_valid := 0; v_header_is_valid := 0; FOR rec IN f LOOP BEGIN v_newline := rec.fac_imp_file_line; IF v_header_is_valid = 0 THEN IF rec.fac_imp_file_index = 1 THEN v_index := 0; v_field := 'QueQeLeQue'; WHILE v_field IS NOT NULL AND v_index < 30 LOOP fac.imp_getfield (v_newline, c_delim, v_field); v_index := v_index + 1; CASE UPPER(v_field) WHEN 'CUSTOMER EMAIL' THEN v_old_email_index := v_index; WHEN 'NIEUWE UPN' THEN v_new_email_index := v_index; WHEN 'CUSTOMER NAME' THEN v_name_index := v_index; ELSE NULL; END CASE; END LOOP; END IF; IF v_old_email_index IS NOT NULL AND v_new_email_index IS NOT NULL AND v_name_index IS NOT NULL THEN v_header_is_valid := 1; END IF; ELSIF v_newline NOT LIKE ';;;;;;;;%' THEN fac.imp_getfield_nr (v_newline, c_delim, v_old_email_index, v_old_email); fac.imp_getfield_nr (v_newline, c_delim, v_new_email_index, v_new_email); fac.imp_getfield_nr (v_newline, c_delim, v_name_index, v_name); SELECT COUNT (*) INTO v_count FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_email) = UPPER (v_old_email); IF v_count = 1 THEN SELECT prs_perslid_key INTO v_prs_perslid_key FROM prs_perslid WHERE prs_perslid_verwijder IS NULL AND UPPER (prs_perslid_email) = UPPER (v_old_email); UPDATE prs_perslid SET prs_perslid_email = v_new_email WHERE prs_perslid_key = v_prs_perslid_key; BEGIN fac.trackaction('PRSUPD', v_prs_perslid_key, NULL, NULL, 'E-mail: ' || v_old_email || ' --> ' || v_new_email); END; fac.imp_writelog (p_import_key, 'I', 'Email is aangepast: ' || v_name || ' <' || v_old_email || '>', ''); END IF; END IF; EXCEPTION WHEN OTHERS THEN 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_aanduiding); END; END LOOP; IF v_header_is_valid = 0 THEN fac.imp_writelog (p_import_key, 'W', 'Geen geldige header aangetroffen', ''); END IF; END; / -- View om een catalogus te exporteren die daarna weer ingelezen kan worden. -- Hopelijk komt hier met YAXX#78417 een generieke oplossing voor. CREATE OR REPLACE VIEW vbgo_v_rap_sync_catalogus AS SELECT d.ins_discipline_omschrijving catalogus_naam, b.prs_bedrijf_naam leverancier, NULL cat_datum, sd.bes_srtdeel_nr artikelnr, sg.bes_srtgroep_omschrijving groep, sd.bes_srtdeel_omschrijving omschrijving, REPLACE (TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)), ',', '.') prijs, sd.bes_srtdeel_eenheid eenheid, sd.bes_srtdeel_image picture, sd.bes_srtdeel_veelvoud orderaantal, sd.bes_srtdeel_btw tax, TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd') duedate, REPLACE (TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)), ',', '.') inkoopprijs, bes_srtdeel_minimum minimum, bes_staffeltabel_naam staffeltabel, bes_srtdeel_wijzigdagen wijzigdagen, bes_srtdeel_annuleerdagen annuleerdagen, bes_srtdeel_opmerking opmerking FROM bes_srtdeel sd, bes_srtgroep sg, bes_discipline d, prs_bedrijf b, bes_staffeltabel st WHERE sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND sd.prs_bedrijf_key = b.prs_bedrijf_key AND sd.bes_staffeltabel_key = st.bes_staffeltabel_key(+) AND sd.bes_srtdeel_verwijder IS NULL AND sg.bes_srtgroep_verwijder IS NULL; -- Views overgenomen uit de Yask omgeving CREATE OR REPLACE VIEW vbgo_v_kosten_doorbelasting AS SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer, m.mld_melding_key, l.alg_locatie_omschrijving meldinglocatie, pf.prs_perslid_naam_full melder, sd.ins_srtdiscipline_omschrijving soortmelding, d.ins_discipline_omschrijving productgroep, std.mld_stdmelding_omschrijving subproductgroep, ksm.prs_kostensoort_oms melding_nen_omschrijving, ksm.prs_kostensoort_refcode melding_nen_code, CASE WHEN m.mld_melding_status = 5 AND m.mld_melding_afgerond = 1 THEN 'Afgerond' ELSE ms.mld_statuses_omschrijving END meldingstatus, fs.fac_usrdata_omschr facturatiestatus, m.mld_melding_datum meldingdatum, MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld, m.mld_melding_onderwerp onderwerp, m.mld_melding_omschrijving vomschrijving, sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer, ot.mld_typeopdr_omschrijving opdrachttype, so.mld_statusopdr_omschrijving opdrachtstatus, o.mld_opdr_omschrijving opdrachtomschrijving, kso.prs_kostensoort_oms opdracht_nen_omschrijving, b.prs_bedrijf_naam opdrachtuitvoerende, o.mld_opdr_kosten opdrachtkosten, 'Geen' soortopslag, 0 opslag, o.mld_opdr_kosten kostenplusopslag, NULL geenopslag, NULL boekmaand, aog.alg_gebouw_naam meldinggebouw, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 182) klant_inkoopordernr, -- keys uit Yask omgeving. (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 181) klant_kostenplaats, (SELECT mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = 183) klant_werkorder, o.mld_opdr_key, l.alg_district_key FROM prs_v_perslid_fullnames_all pf, prs_kostensoort ksm, mld_statuses ms, mld_opdr o, mld_typeopdr ot, mld_statusopdr so, prs_bedrijf b, alg_locatie l, prs_kostensoort kso, mld_melding m, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd, alg_v_allonrgoed_gegevens aog, (SELECT mld_melding_key, fac_usrdata_omschr FROM fac_usrdata ud, mld_kenmerkmelding km WHERE km.mld_kenmerk_key = 1 -- Facturatiestatus AND FAC.safe_to_number (mld_kenmerkmelding_waarde) = ud.fac_usrdata_key) fs WHERE m.mld_stdmelding_key = std.mld_stdmelding_key AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND std.prs_kostensoort_key = ksm.prs_kostensoort_key(+) AND m.mld_melding_status = ms.mld_statuses_key AND m.mld_melding_key = fs.mld_melding_key(+) AND m.mld_melding_key = o.mld_melding_key AND m.prs_perslid_key = pf.prs_perslid_key AND m.mld_alg_locatie_key = l.alg_locatie_key AND o.mld_typeopdr_key = ot.mld_typeopdr_key AND o.mld_statusopdr_key = so.mld_statusopdr_key AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+) AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+) AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+); --yask_v_kosten_export_power_bi CREATE OR REPLACE VIEW vbgo_v_kosten_export_power_bi AS SELECT d.meldingnummer, d.mld_melding_key, d.meldinglocatie, u.melding_gebouw, u.melding_gebouwcode, d.melder, d.soortmelding, d.productgroep, d.subproductgroep, d.melding_nen_omschrijving, d.melding_nen_code, d.meldingstatus, d.facturatiestatus, d.meldingdatum, d.afgemeld, d.onderwerp, d.vomschrijving, d.opdrachtnummer, d.opdrachttype, d.opdrachtstatus, d.opdrachtomschrijving, d.opdracht_nen_omschrijving, d.opdrachtuitvoerende, d.opdrachtkosten, d.soortopslag, d.opslag, d.kostenplusopslag, d.geenopslag, d.boekmaand, d.klant_inkoopordernr, d.klant_kostenplaats, d.klant_werkorder, d.mld_opdr_key, u.sla_accpturen, u.plan_uitvoertijd_sla, u.accept_sla_dagen, u.accept_sla_uren, u.afspraak_sla_dagen, u.accept_sla_optijd, u.uitvoering_sla_optijd, u.afspraak_sla_optijd, u.melding_afgemeld datum_afgemeld, u.melding_accepted datum_acceptatie, u.melding_datum datum_aanmaak, u.fclt_3d_locatie_key FROM vbgo_v_kosten_doorbelasting d, mld_v_udr_melding u WHERE d.mld_melding_key = u.melding_key; -- Tijdelijke versie van de UDR view omdat in de originele view de kostenplaats hard wordt vereist. -- Melding VBGO#70402 aangemaakt om de UDR view aan te passen. -- VBGO#71830: Bestelkenmerk met key=101=Vebego onderdeel opnemen als kolom. CREATE OR REPLACE VIEW vbgo_v_udr_bestelling AS SELECT bes_bestelling_key, bestelaanvraagnr, besteldatum, bedrijf_naam, besteller, invoerder, kostensoortgroep, kostensoort, kpn, kpn_omschrijving, prs_afdeling_key, afdeling_code, afdeling_omschrijving, alg_locatie_key, locatie_code, regio_omschrijving, district_omschijving, afleveradres, afleverplaats, mandaat, ins_discipline_key, catalogus, groep, productomschrijving, productcode, afleverdatum, doorlooptijd_werkdgn, sla_tijd, prijs, inkoopprijs, status, gefiatteerddoor, bestelopdrachtnummer, aantal, itemprijs, iteminkoopprijs, itemposnr, vebego_onderdeel FROM (SELECT b.bes_bestelling_key bes_bestelling_key, 'A-' || b.bes_bestelling_key bestelaanvraagnr, b.bes_bestelling_datum besteldatum, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = p.prs_perslid_key) besteller, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = COALESCE ( fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key))) invoerder, (SELECT ksg.prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg, prs_kostensoort ks WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key AND ks.prs_kostensoort_key = (SELECT MAX ( COALESCE ( bsg.prs_kostensoort_key, disc.prs_kostensoort_key)) FROM bes_discipline disc, bes_srtgroep bsg WHERE disc.ins_discipline_key = d.ins_discipline_key)) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT MAX ( COALESCE (bsg.prs_kostensoort_key, disc.prs_kostensoort_key)) FROM bes_discipline disc, bes_srtgroep bsg WHERE disc.ins_discipline_key = bsg.ins_discipline_key AND disc.ins_discipline_key = d.ins_discipline_key)) kostensoort, k.prs_kostenplaats_nr kpn, k.prs_kostenplaats_omschrijving kpn_omschrijving, (SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = sd.prs_bedrijf_key) bedrijf_naam, a.prs_afdeling_key, a.prs_afdeling_naam afdeling_code, a.prs_afdeling_omschrijving afdeling_omschrijving, ma.alg_locatie_key alg_locatie_key, (SELECT alg_locatie_code FROM alg_locatie l WHERE l.alg_locatie_key = ma.alg_locatie_key) locatie_code, (SELECT alg_regio_omschrijving FROM alg_locatie l, alg_district d, alg_regio r WHERE r.alg_regio_key = d.alg_regio_key AND l.alg_district_key = d.alg_district_key AND l.alg_locatie_key = ma.alg_locatie_key) regio_omschrijving, (SELECT alg_district_omschrijving FROM alg_locatie l, alg_district d WHERE l.alg_district_key = d.alg_district_key AND l.alg_locatie_key = ma.alg_locatie_key) district_omschijving, ma.mld_adres_naam afleveradres, b.bes_bestelling_plaats afleverplaats, NVL ((SELECT pr.fac_profiel_limiet FROM fac_profiel pr WHERE p.fac_profiel_key = pr.fac_profiel_key), 0) mandaat, d.ins_discipline_key ins_discipline_key, d.ins_discipline_omschrijving catalogus, sg.bes_srtgroep_omschrijving groep, b.bes_bestelling_leverdatum afleverdatum, fac.count_work_days ( b.bes_bestelling_datum, NVL ( fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), SYSDATE)) doorlooptijd_werkdgn, NVL ( (SELECT bdp.bes_disc_params_leverdagen FROM bes_disc_params bdp WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key), 0) sla_tijd, sd.bes_srtdeel_nr productcode, bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal prijs, NVL ( bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, bes_bestelling_datum), bi.bes_bestelling_item_prijs) * bi.bes_bestelling_item_aantal inkoopprijs, (SELECT bes_bestellingstatuses_omschr FROM bes_bestellingstatuses bs WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status) status, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user) gefiatteerddoor, 'O-' || bo.bes_bestelopdr_id bestelopdrachtnummer, bi.bes_bestelling_item_aantal aantal, bi.bes_bestelling_item_prijs itemprijs, NVL ( bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, bes_bestelling_datum), bi.bes_bestelling_item_prijs) iteminkoopprijs, sd.bes_srtdeel_omschrijving productomschrijving, boi.bes_bestelopdr_item_posnr itemposnr, vo.fac_usrdata_omschr vebego_onderdeel FROM bes_bestelling b, prs_perslid p, prs_afdeling a, prs_kostenplaats k, mld_adres ma, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_srtdeel sd, bes_srtgroep sg, ins_tab_discipline d, (SELECT kb.bes_bestelling_key, ud.fac_usrdata_omschr FROM bes_kenmerkbestell kb, fac_usrdata ud WHERE kb.bes_kenmerkbestell_verwijder IS NULL AND kb.bes_kenmerk_key = 101 -- Vebego onderdeel AND fac.safe_to_number (kb.bes_kenmerkbestell_waarde) = ud.fac_usrdata_key) vo WHERE b.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND b.mld_adres_key_lev = ma.mld_adres_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 bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtgroep_key = sg.bes_srtgroep_key AND sg.ins_discipline_key = d.ins_discipline_key AND b.bes_bestelling_key = vo.bes_bestelling_key(+)); /* CREATE OR REPLACE VIEW VBGO_V_RES_WP_DAG_BEZETTING ( RES_RSV_RUIMTE_VAN, RES_RSV_RUIMTE_TOT, RES_RUIMTE_OPSTEL_KEY, RES_RSV_RUIMTE_VERWIJDER, RES_RSV_RUIMTE_KEY, RES_STATUS_FO_KEY, N8, N9, N10, N11, N12, N13, N14, N15, N16, N17 ) AS SELECT res_rsv_deel_key, res_rsv_deel_van, res_rsv_deel_tot, SUM (DECODE (uurnum, 8, n_uur)) n8, SUM (DECODE (uurnum, 9, n_uur)) n9, SUM (DECODE (uurnum, 10, n_uur)) n10, SUM (DECODE (uurnum, 11, n_uur)) n11, SUM (DECODE (uurnum, 12, n_uur)) n12, SUM (DECODE (uurnum, 13, n_uur)) n13, SUM (DECODE (uurnum, 14, n_uur)) n14, SUM (DECODE (uurnum, 15, n_uur)) n15, SUM (DECODE (uurnum, 16, n_uur)) n16, SUM (DECODE (uurnum, 17, n_uur)) n17 FROM (SELECT res_rsv_deel_key, res_rsv_deel_van, res_rsv_deel_tot, uurnum, CASE WHEN res.van <= uurnum + 0.00 AND res.tot >= uurnum + 0.25 THEN 1 / 4 ELSE 0 END + CASE WHEN res.van <= uurnum + 0.25 AND res.tot >= uurnum + 0.50 THEN 1 / 4 ELSE 0 END + CASE WHEN res.van <= uurnum + 0.50 AND res.tot >= uurnum + 0.75 THEN 1 / 4 ELSE 0 END + CASE WHEN res.van <= uurnum + 0.75 AND res.tot >= uurnum + 1.00 THEN 1 / 4 ELSE 0 END n_uur FROM (SELECT rrd.res_rsv_deel_key, (rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24 van, (rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24 tot, rrd.res_rsv_deel_van, rrd.res_rsv_deel_tot FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d WHERE rrd.res_rsv_deel_verwijder IS NULL AND rrd.res_rsv_deel_dirtlevel = 0 --AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6' --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrd.res_rsv_deel_tot)) AND TRUNC (rrd.res_rsv_deel_van) = TRUNC (rrd.res_rsv_deel_tot) -- Eendaags! AND rrd.res_rsv_deel_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (SYSDATE + 7, 'iw') AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+) AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief AND rrr.res_activiteit_key = 30 -- Reservering werkplekken AND rrd.res_deel_key = rd.res_deel_key AND rd.res_ins_deel_key = d.ins_deel_key AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R') res, -- Noodzakelijk? ( SELECT 8 + LEVEL - 1 uurnum FROM DUAL CONNECT BY LEVEL <= 10) uren) GROUP BY res_rsv_deel_key, res_rsv_deel_van, res_rsv_deel_tot; */ CREATE OR REPLACE VIEW VBGO_V_RAP_RES_BZG ( hide_f_sortering, fclt_3d_locatie_key, locatie, datum, zaal, uur_08_09, uur_09_10, uur_10_11, uur_11_12, uur_12_13, uur_13_14, uur_14_15, uur_15_16, uur_16_17, uur_17_18 ) AS SELECT TO_CHAR (x.res_rsv_ruimte_van, 'yyyymmdd') || l.alg_locatie_code sortering, l.alg_locatie_key, l.alg_locatie_code locatie, TRUNC (x.res_rsv_ruimte_van) datum, rr.res_ruimte_nr zaal, x.n8, x.n9, x.n10, x.n11, x.n12, x.n13, x.n14, x.n15, x.n16, x.n17 FROM res_v_res_dag_bezetting x, res_ruimte_opstelling rro, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NULL GROUP BY res_ruimte_key) rar1, ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key FROM res_alg_ruimte WHERE res_alg_ruimte_verwijder IS NOT NULL GROUP BY res_ruimte_key) rar2, --alg_v_allonrgoed_gegevens aog, -- Ook verwijderde ruimten! alg_v_allonroerendgoed aog, -- Ook verwijderde ruimten! alg_locatie l, -- Ook verwijderde locaties res_ruimte rr WHERE x.res_rsv_ruimte_verwijder IS NULL AND x.res_status_fo_key IN (1, 2) -- Optie/Definitief AND x.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rro.res_ruimte_key = rar1.res_ruimte_key(+) AND rro.res_ruimte_key = rar2.res_ruimte_key(+) AND COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) = aog.alg_ruimte_key AND aog.alg_locatie_key = l.alg_locatie_key AND rro.res_ruimte_key = rr.res_ruimte_key; -- Rapportage overgenomen uit de VENR omgeving. -- TODO: Keys aanpassen -- VENR#65754: Opdrachtgegevens incl. kenmerken (afgeleid van mld_v_udr_opdrachtkenmerk_cnd). -- VENR#69955: Uitbreiden met de SLA-velden van de bovenliggende melding + (sub)productgroep. CREATE OR REPLACE VIEW vbgo_v_udr_opdrachten ( opdracht_key, opdracht_nummer, opdracht_regio, opdracht_district, opdracht_locatie_code, opdracht_locatie, opdracht_locatieplaats, fclt_3d_locatie_key, opdracht_gebouwcode, opdracht_gebouw, opdracht_verdieping, opdracht_ruimtenr, opdracht_ruimte, opdracht_kostenplaats, opdracht_kostenplaats_oms, melding_key, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_einddatum, opdracht_plandatum, opdracht_acceptdatum, opdracht_afgemeld, opdracht_doorlooptijd, opdracht_accepttijd, opdracht_omschrijving, opdracht_opmerking, opdracht_uitvoerende, opdracht_uitvoerende_contact, opdracht_behandelaar, opdracht_contract, opdracht_contract_versie, opdracht_contactpersoon, opdracht_uren, opdracht_correctie, opdracht_materiaal, opdracht_uurtarief, opdracht_kosten, opdracht_parent_key, opdracht_parent_nummer, opdracht_parent_volgnummer, opdracht_verstrektdatum, opdracht_lev_doorloopdagen, opdracht_lev_doorloopuren, refnr_lev, klant, accept_sla_dagen, accept_sla_uren, uitvoering_sla_dagen, uitvoering_sla_uren, afspraak_sla_dagen, afspraak_sla_uren, accept_sla_optijd, uitvoering_sla_optijd, afspraak_sla_optijd, productgroep, subproductgroep ) AS SELECT o.opdracht_key, o.opdracht_nummer, o.opdracht_regio, o.opdracht_district, o.opdracht_locatie_code, o.opdracht_locatie, o.opdracht_locatieplaats, o.fclt_3d_locatie_key, o.opdracht_gebouwcode, o.opdracht_gebouw, o.opdracht_verdieping, o.opdracht_ruimtenr, o.opdracht_ruimte, o.opdracht_kostenplaats, o.opdracht_kostenplaats_oms, o.melding_key, o.opdracht_type, o.opdracht_volgnummer, o.opdracht_status, o.opdracht_duur_gepland, o.opdracht_datum, o.opdracht_einddatum, o.opdracht_plandatum, o.opdracht_acceptdatum, o.opdracht_afgemeld, o.opdracht_doorlooptijd, o.opdracht_accepttijd, o.opdracht_omschrijving, o.opdracht_opmerking, o.opdracht_uitvoerende, o.opdracht_uitvoerende_contact, o.opdracht_behandelaar, o.opdracht_contract, o.opdracht_contract_versie, o.opdracht_contactpersoon, o.opdracht_uren, o.opdracht_correctie, o.opdracht_materiaal, o.opdracht_uurtarief, o.opdracht_kosten, o.opdracht_parent_key, o.opdracht_parent_nummer, o.opdracht_parent_volgnummer, o.opdracht_verstrektdatum, o.opdracht_lev_doorloopdagen, o.opdracht_lev_doorloopuren, ko4.mld_kenmerkopdr_waarde, km5.fac_usrdata_omschr, m.accept_sla_dagen, m.accept_sla_uren, m.uitvoering_sla_dagen, m.uitvoering_sla_uren, m.afspraak_sla_dagen, m.afspraak_sla_uren, m.accept_sla_optijd, m.uitvoering_sla_optijd, m.afspraak_sla_optijd, m.productgroep, m.subproductgroep FROM mld_v_udr_opdracht o, mld_v_udr_melding m, (SELECT ko.mld_opdr_key, ko.mld_kenmerkopdr_waarde FROM mld_v_aanwezigkenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 341 AND mld_kenmerk_key = ko.mld_kenmerk_key)) ko4, -- Refnr. Leverancier (SELECT km.mld_melding_key, ud.fac_usrdata_omschr FROM mld_v_aanwezigkenmerkmelding km, fac_usrdata ud WHERE fac.safe_to_number (km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key AND EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key = 461 AND mld_kenmerk_key = km.mld_kenmerk_key)) km5 -- Klant(R) WHERE fac.gettrackingdate ('ORDNEW', o.opdracht_key) > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy') AND o.melding_key = m.melding_key AND o.opdracht_key = ko4.mld_opdr_key(+) AND m.melding_key = km5.mld_melding_key(+); CREATE OR REPLACE VIEW VBGO_V_RUIMTEEXPORT ( ruimte_key, gebouw_code, verdieping_nr, ruimte_nr, ruimte_soort, werkplek_key, werkplek_omschrijving, werkplek_persoon ) AS SELECT a.alg_ruimte_key, b.alg_gebouw_code, v.alg_verdieping_code, a.alg_ruimte_nr, s.alg_srtruimte_omschrijving, w.prs_werkplek_key, w.prs_werkplek_omschrijving, (SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p, prs_perslidwerkplek pw WHERE pw.prs_werkplek_key=w.prs_werkplek_key AND pw.prs_perslid_key = p.prs_perslid_key) werkplek_persoon FROM alg_v_aanwezigruimte a, alg_v_aanwezigsrtruimte s, alg_v_aanweziggebouw b, alg_v_aanwezigverdieping v, prs_werkplek w WHERE s.alg_srtruimte_key = a.alg_srtruimte_key AND v.alg_verdieping_key=a.alg_verdieping_key AND b.alg_gebouw_key=v.alg_gebouw_key AND w.prs_alg_ruimte_key(+) =a.alg_ruimte_key; -- Procedure tbv de Facilitor - Facilitor koppeling met het logcenter. CREATE OR REPLACE PROCEDURE vbgo_pre_putorders AS BEGIN UPDATE mld_opdr SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL WHERE mld_opdr_key IN ( SELECT new.mld_opdr_key FROM ( SELECT mld_opdr_key, MAX (datum) datum FROM (SELECT o.mld_opdr_key, fac_tracking_datum datum FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND fac_tracking_refkey = o.mld_opdr_key AND o.mld_opdr_externnr IS NOT NULL AND sn.fac_srtnotificatie_code <> 'ORDTRK' UNION SELECT o.mld_opdr_key, mld_opdr_note_wijzigdatum datum FROM mld_opdr_note n, mld_opdr o WHERE n.mld_opdr_key = o.mld_opdr_key AND o.mld_opdr_externnr IS NOT NULL AND BITAND (mld_opdr_note_flag, 4) = 4) GROUP BY mld_opdr_key) new, ( SELECT o.mld_opdr_key, MAX (fac_tracking_datum) fac_tracking_datum FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'opdracht' AND fac_tracking_refkey = o.mld_opdr_key AND o.mld_opdr_externnr IS NOT NULL AND sn.fac_srtnotificatie_code = 'ORDTRK' GROUP BY o.mld_opdr_key) ordtrk WHERE new.mld_opdr_key = ordtrk.mld_opdr_key(+) AND new.datum > COALESCE (ordtrk.fac_tracking_datum, SYSDATE - 100)); END; / CREATE OR REPLACE PROCEDURE vbgo_daily AS -- Alle personen die in de groep zitten dat ze alleen een emailadres hebben en geen windows login (geen laptop) -- Waarbij geen wachtwoord is ingesteld. CURSOR c_setpw IS SELECT p.* FROM prs_perslid p WHERE prs_perslid_key IN (SELECT prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND fac_groep_omschrijving = 'SG-VFS-NL-APP-FACPRD') AND prs_perslid_salt IS NULL; -- Alle personen die in de groep zitten dat ze alleen een emailadres hebben en geen windows login (geen laptop) -- Waarbij al wel een wachtwoord is ingesteld. -- Bij deze mensen hoeven we alleen het vinkje te zetten. CURSOR c_setpw_once (c_kenmerk_key NUMBER) IS SELECT p.* FROM prs_perslid p WHERE prs_perslid_key IN (SELECT prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND fac_groep_omschrijving = 'SG-VFS-NL-APP-FACPRD') AND prs_perslid_salt IS NOT NULL AND NOT EXISTS (SELECT 1 FROM prs_kenmerklink kl, prs_kenmerk k WHERE kl.prs_link_key = p.prs_perslid_key AND kl.prs_kenmerk_key = c_kenmerk_key); -- Alle personen die het vinkje hebben staan dat ze in de via wachtwoord inloggen maar die niet (meer) deel uitmaken van de autorisatiegroep CURSOR c_delpw (c_kenmerk_key NUMBER) IS SELECT p.* FROM prs_perslid p WHERE prs_perslid_key NOT IN (SELECT prs_perslid_key FROM fac_gebruikersgroep gg, fac_groep g WHERE gg.fac_groep_key = g.fac_groep_key AND fac_groep_omschrijving = 'SG-VFS-NL-APP-FACPRD') AND EXISTS (SELECT 1 FROM prs_kenmerklink kl, prs_kenmerk k WHERE kl.prs_link_key = p.prs_perslid_key AND kl.prs_kenmerk_key = c_kenmerk_key); v_kenmerk_key NUMBER; BEGIN SELECT prs_kenmerk_key INTO v_kenmerk_key FROM prs_kenmerk WHERE prs_kenmerk_code = 'WACHTWOORDACCOUNT'; FOR rec IN c_setpw LOOP PRS.setpassword (rec.prs_perslid_key, 'kPrqyyQcvaEUwhmqMoExSfQCGFs6-Egb'); FLX.setflex ('PRS', v_kenmerk_key, rec.prs_perslid_key, 'P', 1); FAC.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, NULL, 'Logt in met wachtwoord: (leeg) --> 1'); END LOOP; FOR rec IN c_setpw_once (v_kenmerk_key) LOOP FLX.setflex ('PRS', v_kenmerk_key, rec.prs_perslid_key, 'P', 1); FAC.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, NULL, 'Logt in met wachtwoord: (leeg) --> 1'); END LOOP; FOR rec IN c_delpw (v_kenmerk_key) LOOP PRS.setpassword (rec.prs_perslid_key, NULL); FLX.setflex ('PRS', v_kenmerk_key, rec.prs_perslid_key, 'P', NULL); FAC.trackaction ('PRSUPD', rec.prs_perslid_key, NULL, NULL, 'Logt in met wachtwoord: 1 --> (leeg)'); END LOOP; END; / ------ 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