-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database -- -- -- -- -- DEFINE thisfile = 'PROR.SQL' DEFINE dbuser = 'PROR' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ CREATE OR REPLACE PACKAGE PROR AS PROCEDURE add_xml_row (p_bestand IN VARCHAR2, p_regel IN VARCHAR2); PROCEDURE add_xml_element (p_bestand IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2); PROCEDURE inactivate_prs; PROCEDURE mandateer_prs(p_perslid_key IN NUMBER); END; / CREATE OR REPLACE PACKAGE BODY PROR AS PROCEDURE add_xml_row ( p_bestand IN VARCHAR2, p_regel IN VARCHAR2) AS v_index NUMBER; BEGIN SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1 INTO v_index FROM fac_rapport WHERE fac_rapport_node = p_bestand; INSERT INTO fac_rapport ( fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES (p_bestand, v_index, p_regel); END; PROCEDURE add_xml_element ( p_bestand IN VARCHAR2, p_tag IN VARCHAR2, p_value IN VARCHAR2) AS BEGIN pror.add_xml_row(p_bestand, '<' || p_tag || '>' || xml.char_to_html(p_value) || ''); END; PROCEDURE inactivate_prs AS v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER (10); v_perslid_naam VARCHAR (100); v_perslid_nr VARCHAR (30); --- Als een persoon 12 maanden niet meer heeft ingelogd verwijderen we deze CURSOR prs_del IS SELECT p.prs_perslid_key, p.prs_perslid_oslogin FROM prs_v_aanwezigperslid p WHERE p.prs_perslid_login < TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm') AND NOT EXISTS (SELECT * -- alleen de NIET AFAS account moeten worden verwijderd FROM prs_kenmerklink pkl, prs_kenmerk pk WHERE pk.prs_kenmerk_upper='AFAS ACCOUNT' AND pk.prs_kenmerk_key = pkl.prs_kenmerk_key AND pkl.prs_link_key=p.prs_perslid_key AND pkl.prs_kenmerklink_waarde='1') GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin; BEGIN FOR rec IN prs_del LOOP prs.delete_perslid(NULL, rec.prs_perslid_key); END LOOP; END; -- Mandateren op alle kostenplaatsen PROCEDURE mandateer_prs(p_perslid_key IN NUMBER) AS oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_count NUMBER; BEGIN v_errormsg :='Mandatering voor '||(p_perslid_key); SELECT COUNT(*) INTO v_count FROM prs_perslidkostenplaats WHERE prs_perslid_key=p_perslid_key; IF v_COUNT=0 THEN INSERT INTO prs_perslidkostenplaats(prs_perslid_key, prs_perslidkostenplaats_boeken, prs_perslidkostenplaats_inzage, prs_perslidkostenplaats_aanmk) VALUES(p_perslid_key, 1, 0, SYSDATE); END IF; 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.writelog ('Mandatering medewerker', 'E', v_errormsg, ''); END; END; / -- IMPORT FUNCTIES CREATE OR REPLACE PROCEDURE pror_import_afas_organisatie(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT fac_imp_csv_col01 prs_bedrijf, fac_imp_csv_col02 prs_afdeling_code, fac_imp_csv_col03 prs_afdeling_naam, fac_imp_csv_col04 prs_parent, fac_imp_csv_col05 prs_laag, fac_imp_csv_col06 prs_laag1, fac_imp_csv_col07 prs_laag2, fac_imp_csv_col08 prs_laag3, fac_imp_csv_col09 prs_laag4, fac_imp_csv_col10 prs_laag5, fac_imp_csv_col11 prs_laag6, fac_imp_csv_col12 prs_laag7, fac_imp_csv_col13 prs_laag8, fac_imp_csv_col14 prs_laag9 FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; v_parent VARCHAR2(10); BEGIN v_count:=0; DELETE FROM fac_imp_csv; DELETE FROM fac_imp_organisatie; COMMIT; fac_import_genericcsv(p_import_key); FOR rec IN c1 LOOP if v_count>0 THEN IF (rec.prs_laag = '1') THEN v_parent:=rec.prs_laag1; ELSE v_parent:=rec.prs_laag2; END IF; INSERT INTO fac_imp_organisatie ( prs_bedrijf_naam, prs_afdeling_naam, prs_afdeling_naam_parent, prs_afdeling_omschrijving, prs_afdeling_externid) VALUES ( rec.prs_bedrijf, rec.prs_afdeling_code, v_parent, rec.prs_afdeling_naam, rec.prs_laag); END IF; v_count:=v_count+1; END LOOP; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE PROCEDURE pror_update_afas_organisatie(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT prs_afdeling_naam, prs_afdeling_omschrijving, prs_afdeling_naam_parent, prs_afdeling_externid FROM fac_imp_organisatie ORDER BY prs_afdeling_externid; v_date DATE; v_prs_afdeling_parentkey NUMBER:=-1; v_count NUMBER:=0; v_bedrijf_key NUMBER :=-1; v_afdeling_key NUMBER :=-1; BEGIN SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_bedrijf WHERE prs_bedrijf_naam_upper='PRORAIL' AND prs_bedrijf_verwijder IS NULL; IF v_bedrijf_key>0 THEN FOR rec in C1 LOOP -- kijk of de afdeling al bestaat en dezelfde parent heeft IF rec.prs_afdeling_naam_parent IS NOT NULL THEN -- wat is de afdelings key van de parent IF rec.prs_afdeling_naam_parent='50035512' -- deze moeten onder het berdijf worden gezet. THEN v_prs_afdeling_parentkey:=TO_NUMBER(NULL); ELSE v_bedrijf_key := to_number(NULL); SELECT prs_afdeling_key INTO v_prs_afdeling_parentkey FROM prs_afdeling WHERE prs_afdeling_naam=rec.prs_afdeling_naam_parent AND prs_afdeling_verwijder IS NULL; END IF; SELECT COUNT(*) INTO v_count FROM prs_afdeling a1 where a1.prs_afdeling_naam = rec.prs_afdeling_naam AND a1.prs_afdeling_verwijder IS NULL; IF v_count=0 THEN INSERT INTO PRS_AFDELING (prs_afdeling_naam, prs_afdeling_omschrijving, prs_bedrijf_key, prs_afdeling_parentkey ) VALUES (rec.prs_afdeling_naam, rec.prs_afdeling_omschrijving, v_bedrijf_key, v_prs_afdeling_parentkey ) RETURNING prs_afdeling_key INTO v_afdeling_key; -- Wat was de afdeling waar deze in afas ondervalt IF rec.prs_afdeling_externid != '1' THEN SELECT p.prs_afdeling_key INTO v_prs_afdeling_parentkey FROM fac_imp_csv csv, prs_afdeling p WHERE csv.fac_imp_csv_col02=rec.prs_afdeling_naam AND p.prs_afdeling_naam=csv.fac_imp_csv_col04 AND p.prs_afdeling_verwijder IS NULL; flx.setflex('PRS', 1020,v_afdeling_key, 'A', v_prs_afdeling_parentkey); -- D=1021, A=1041 P=1020 flx.setflex('PRS', 1021,v_afdeling_key, 'A', rec.prs_afdeling_externid); -- D=1020 A=1040 P=1021 END IF; COMMIT; ELSE IF rec.prs_afdeling_externid != '1' THEN -- Wat is de nieuwe parent afdeling SELECT p.prs_afdeling_key INTO v_prs_afdeling_parentkey FROM fac_imp_csv csv, prs_afdeling p WHERE csv.fac_imp_csv_col02=rec.prs_afdeling_naam AND p.prs_afdeling_naam=csv.fac_imp_csv_col04 AND p.prs_afdeling_verwijder IS NULL; -- Wta is de huidge afdeling_key SELECT prs_afdeling_key INTO v_afdeling_key FROM prs_afdeling where prs_afdeling_naam= rec.prs_afdeling_naam AND prs_afdeling_verwijder IS NULL; flx.setflex('PRS', 1020,v_afdeling_key,'A', v_prs_afdeling_parentkey); -- D=1021, A=1041 P=1020 flx.setflex('PRS', 1021,v_afdeling_key,'A', rec.prs_afdeling_externid); -- D=1020 A=1040 P=1021 END IF; END IF; END IF; END LOOP; END IF; -- Nu even opruimen DELETE FROM fac_imp_csv where fac_import_key=p_import_key; DELETE FROM fac_imp_organisatie; COMMIT; END; / -- "Roepnaam";"Voorletters";"Voorvoegsel";"Achternaam";"Persnr.";"Afdnr.";"Functie";"Email";"Telefoon";"Loginnaam";"Kostenplaats";"OE_Niveau" CREATE OR REPLACE PROCEDURE pror_import_afas_personen(p_import_key IN NUMBER) AS CURSOR c1 IS SELECT fac_imp_csv_col01 prs_voornaam, fac_imp_csv_col02 prs_voorletters, fac_imp_csv_col03 prs_tussenvoegsel, fac_imp_csv_col04 prs_achternaam, fac_imp_csv_col05 prs_perslid_nr, fac_imp_csv_col06 prs_afd1_code, fac_imp_csv_col07 prs_functie, fac_imp_csv_col08 prs_email, fac_imp_csv_col09 prs_telefoon, fac_imp_csv_col10 prs_loginnaam, fac_imp_csv_col10 prs_level FROM fac_imp_csv WHERE fac_import_key=p_import_key ORDER BY fac_imp_csv_key; v_errormsg VARCHAR2 (1000); v_errorhint VARCHAR2 (1000); v_aanduiding VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_count NUMBER; v_afdelingnaam VARCHAR2(20); v_afd_count NUMBER; v_srtperslid_omschrijving VARCHAR2(60); BEGIN v_count:=0; DELETE FROM fac_imp_perslid; fac_import_genericcsv(p_import_key); FOR rec IN c1 LOOP IF v_count>0 THEN -- ALs een per op niveau 9 zit heeft de -- controleren of de afdeling wel beschikbaar is anders onder Onbekend zetten SELECT COUNT(*) INTO v_afd_count FROM prs_afdeling WHERE prs_afdeling_naam=rec.prs_afd1_code AND prs_afdeling_verwijder IS NULL; IF v_afd_count=0 THEN v_afdelingnaam :='Onbekend'; ELSE v_afdelingnaam := rec.prs_afd1_code; END IF; IF rec.prs_functie IS NULL THEN v_srtperslid_omschrijving:='Onbekend'; ELSE v_srtperslid_omschrijving:= rec.prs_functie; END IF; INSERT INTO fac_imp_perslid(fac_import_key, prs_afdeling_naam, prs_perslid_voornaam, prs_perslid_voorletters, prs_perslid_tussenvoegsel, prs_perslid_naam, prs_perslid_email, prs_perslid_telefoonnr, prs_srtperslid_omschrijving, prs_perslid_oslogin, prs_perslid_nr, prs_kenmerk1) VALUES(p_import_key, v_afdelingnaam, rec.prs_voornaam, rec.prs_voorletters, rec.prs_tussenvoegsel, rec.prs_achternaam, rec.prs_email, rec.prs_telefoon, v_srtperslid_omschrijving, SUBSTR(rec.prs_email,0,30), rec.prs_perslid_nr, '1000=1'); -- AFAS account kenmerk D=1022, A=1020, P=1000 END IF; v_count:=v_count+1; END LOOP; DELETE FROM fac_imp_csv where fac_import_key=p_import_key; EXCEPTION WHEN OTHERS THEN v_errorhint := v_errormsg || ' - ' || v_aanduiding; oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint); END; / CREATE OR REPLACE PROCEDURE pror_update_afas_personen(p_import_key IN NUMBER) AS CURSOR p_del -- We doen dit alleen voor de afas aqccounts IS SELECT p.prs_perslid_key FROM prs_perslid p, prs_kenmerklink kl, prs_kenmerk pk WHERE p.prs_perslid_verwijder IS NULL AND pk.prs_kenmerk_upper='AFAS ACCOUNT' AND kl.prs_kenmerk_key = pk.prs_kenmerk_key AND kl.prs_link_key=p.prs_perslid_key AND kl.prs_kenmerklink_waarde=1 AND p.prs_perslid_nr NOT IN (SELECT prs_perslid_nr FROM fac_imp_perslid); CURSOR p_mandaat IS SELECT p.prs_perslid_key FROM fac_imp_perslid f, prs_perslid p WHERE f.prs_perslid_email = p.prs_perslid_email AND p.prs_perslid_verwijder IS NULL AND p.prs_perslid_key NOT IN (SELECT DISTINCT prs_perslid_key FROM prs_perslidkostenplaats pk); v_date DATE; BEGIN prs.update_perslid (p_import_key, 'NR', 'A', 1); FOR rec IN p_del LOOP prs.delete_perslid (p_import_key, rec.prs_perslid_key); END LOOP; FOR rec_man IN p_mandaat LOOP pror.mandateer_prs(rec_man.prs_perslid_key); END LOOP; COMMIT; END; / -- Import objecten lijst waarbij omschrijving gevult dowrt met de locatie gegevens CREATE OR REPLACE PROCEDURE pror_import_objecten(p_import_key IN NUMBER) AS BEGIN DELETE FROM fac_imp_ins; fac_import_ins(p_import_key); END; / CREATE OR REPLACE PROCEDURE pror_update_objecten(p_import_key IN NUMBER) AS CURSOR ins IS SELECT * FROM fac_imp_ins; BEGIN fac_update_ins(p_import_key); FOR rec IN ins LOOP UPDATE ins_deel i SET i.ins_deel_opmerking=(SELECT al.alg_locatie_code||'-'||a.alg_plaatsaanduiding||' ('||a.alg_ruimte_omschrijving||')' FROM alg_v_allonrgoed_gegevens a, alg_locatie al WHERE a.alg_locatie_key = al.alg_locatie_key AND a.alg_ruimte_key=i.ins_alg_ruimte_key) WHERE i.ins_deel_omschrijving=rec.ins_deel_omschrijving; END LOOP; END; / -- END IMPORT ins_deel CREATE OR REPLACE PROCEDURE pror_daily AS BEGIN -- inactiveren personen die 12 maanden niet hebben ingelogd pror.inactivate_prs (); END; / -- NOTIFICATIE VIEWS -- Noifictaie View tbv te late annulering outlook reservereing inc catering CREATE OR REPLACE VIEW pror_v_outl_cat_annu ( reserveringnr, key, code, text, gastheer, receiver, sender, xemail, xmobile, xkey ) AS SELECT DISTINCT rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR reserveringNr, rrr.res_reservering_key key, 'CUST02' cust_code, 'Reservering '||rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR||' op '|| TO_CHAR(rrr.res_rsv_ruimte_van,'DD-MM-YYYY HH24:MI')||' is verwijderd buiten anullerings horizon.' text, (SElECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames_all p WHERE p.prs_perslid_key= rrr.RES_RSV_RUIMTE_HOST_KEY) gastheer, null receiver, NULL sender, 'norbert.wassink@facilitor.nl' xemail, --'cateringmanagerprorail@prorail.nl' xemail, NULL xmobile, rrr.res_rsv_ruimte_key xkey FROM res_rsv_ruimte rrr, res_rsv_artikel rra WHERE rrr.res_rsv_ruimte_verwijder IS NOT NULL AND rrr.res_rsv_ruimte_externnr IS NOT NULL AND rrr.res_status_fo_key=4 AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND NOT EXISTS (SElECT * FROM fac_tracking ft WHERE fac_tracking_refkey=rrr.res_rsv_ruimte_key AND ft.fac_srtnotificatie_key=223 AND ft.fac_tracking_oms LIKE '%CUST02%'); -- Noifictaie View tbv reservereing gedaan door contact<>host CREATE OR REPLACE VIEW pror_v_res_other_contact ( sender, receiver, code, text, key, xkey, xemail, xmobile ) AS SELECT NULL sender, rrr.res_rsv_ruimte_contact_key receiver, 'CUST01' code, 'Reservering '||rrr.res_reservering_key||'/ '||rrr.res_rsv_ruimte_volgnr|| -- ' is door '||(SELECT prs_perslid_naam_friendly -- FROM prs_v_perslid_fullnames p, fac_tracking ft -- WHERE ft.fac_tracking_refkey=rrr.res_rsv_ruimte_key -- AND fac_srtnotificatie_key=116 -- AND p.prs_perslid_key= ft.prs_perslid_key)|| ' voor u aangemaakt.' text, rrr.res_rsv_ruimte_key key, NULL xkey, NULL xemail, NULL xmobile FROM res_rsv_ruimte rrr WHERE rrr.res_rsv_ruimte_host_key<>rrr.res_rsv_ruimte_contact_key AND NOT EXISTS (SELECT * FROM fac_tracking ft WHERE fac_tracking_refkey=rrr.res_rsv_ruimte_key AND ft.fac_srtnotificatie_key=223 AND ft.fac_tracking_oms LIKE '%CUST01%'); -- EINDE NOTIFICATIE VIEWS -- VIEW TBV Kalender rappprt Service medewerkers CREATE OR REPLACE VIEW pror_v_SerMdwKalender ( USER_KEY, TITLE, VAN, TOT, ITEM_KEY, COLOR, TEXTCOLOR, URL ) AS SELECT rrr.res_rsv_ruimte_host_key user_key, CASE WHEN rro.res_ruimte_opstel_tijd>0 AND (SELECT COUNT(*) FROM res_rsv_deel rrd WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)>0 THEN 'opstelling+vergadermiddel' WHEN rro.res_ruimte_opstel_tijd>0 then 'opstelling aanpassing' ELSE 'vergadermiddel' end title, rrr.res_rsv_ruimte_van van, rrr.res_rsv_ruimte_tot tot, rrr.res_rsv_ruimte_key item_key, '#009900' color, '#ffffff' textcolor, '?u=reservering' || chr (38) || 'k=' || rrr.res_rsv_ruimte_key url FROM res_rsv_ruimte rrr, res_activiteit ra, res_ruimte_opstelling rro WHERE rrr.res_activiteit_key=ra.res_activiteit_key AND ra.res_activiteit_omschrijving='vergadering inclusief vergadermiddel' AND rrr.res_ruimte_opstel_key= rro.res_ruimte_opstel_key AND (rro.res_ruimte_opstel_tijd> 0 OR (SELECT COUNT(*) FROM res_rsv_deel rrd WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)>0 ); --- -- VIEW van alle reserveringen die catering hebben, -- CREATE OR REPLACE VIEW pror_v_res_cat AS SELECT * FROM ( SELECT DISTINCT(rrr.res_rsv_ruimte_key) rrr_key, rrr.res_reservering_key reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_aanmaak aanmk_datum, (SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key AND fac_srtnotificatie_key = 117) last_upd, rrr.res_rsv_ruimte_externsyncdate last_export, rrr.res_rsv_ruimte_verwijder verw_datum, COALESCE(rer.res_ruimte_friendlyname,alg.alg_ruimte_nr) ruimte_nr, (SELECT prs_perslid_externid FROM prs_perslid WHERE prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller, (SELECT DISTINCT lev.PRS_BEDRIJF_EMAIL FROM res_rsv_artikel rar, res_artikel art, res_disc_params dsp, prs_bedrijf lev WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND art.res_artikel_key = rar.res_artikel_key AND dsp.res_ins_discipline_key = art.res_discipline_key AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key) cateraar, rrr.RES_RSV_RUIMTE_VAN datum_van, rrr.RES_RSV_RUIMTE_TOT datum_tot, rrr.res_rsv_ruimte_omschrijving oms, rrr.res_rsv_ruimte_bezoekers aantal, alg.alg_locatie_code locatie_code, 'ruimte' soort, ros.res_opstelling_omschrijving opstelling, rrr.res_status_fo_key fo_status, rrr.res_rsv_ruimte_dirtlevel dirtlevel FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_ruimte_opstelling rop, res_opstelling ros, res_ruimte rer, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg WHERE rrr.res_status_bo_key = 2 AND rra.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY AND rrr.res_ruimte_opstel_key = rop.res_ruimte_opstel_key AND ros.res_opstelling_key = rop.res_opstelling_key AND rer.res_ruimte_key = rop.res_ruimte_key AND rarm.res_ruimte_key = rer.res_ruimte_key AND alg.alg_ruimte_key = rarm.alg_ruimte_key UNION ALL SELECT DISTINCT(rrr.res_rsv_ruimte_key) rrr_key, rrr.res_reservering_key reservering_key, rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_aanmaak aanmk_datum, (SELECT MAX (fac_tracking_datum) FROM fac_tracking WHERE fac_tracking_refkey = rrr.res_rsv_ruimte_key AND fac_srtnotificatie_key = 117) last_upd, rrr.res_rsv_ruimte_externsyncdate last_export, rrr.res_rsv_ruimte_verwijder verw_datum, alg.alg_ruimte_nr ruimte_nr, (SELECT pa.PRS_PERSLID_EMAIL FROM PRS_V_PERSLID_GEGEVENS pa WHERE pa.prs_perslid_key = rrr.res_rsv_ruimte_contact_key) besteller, (SELECT DISTINCT lev.prs_bedrijf_email FROM res_rsv_artikel rar, res_artikel art, res_disc_params dsp, prs_bedrijf lev WHERE rar.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key AND art.res_artikel_key = rar.res_artikel_key AND dsp.res_ins_discipline_key = art.res_discipline_key AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key) cateraar, rrr.RES_RSV_RUIMTE_VAN datum_van, rrr.RES_RSV_RUIMTE_TOT datum_tot, rrr.res_rsv_ruimte_omschrijving oms, rrr.res_rsv_ruimte_bezoekers aantal, alg.alg_locatie_code locatie_code, 'losse-catering' soort, 'N.V.T.' opstelling, rrr.res_status_fo_key fo_status, 0 dirtlevel FROM res_rsv_ruimte rrr, res_rsv_artikel rra, alg_v_ruimte_gegevens_all alg WHERE rrr.res_status_fo_key = 2 AND rra.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY AND alg.alg_ruimte_key = rrr.alg_ruimte_key ORDER BY reservering_key) WHERE aanmk_datum > SYSDATE-2/24 OR last_upd>aanmk_datum AND last_upd > SYSDATE-2/24; --- -- View tbv alle veiligheidsmeldingen -- Dez worden naar Provat geexporteerd/rapport wordt door provat aangeroepen --- CREATE OR REPLACE VIEW pror_v_mld_provat AS SELECT m.mld_melding_key melding_key, m.mld_melding_datum begin_datum, (SELECT p.prs_perslid_naam||','|| p.prs_perslid_voornaam||' '||p.prs_perslid_tussenvoegsel FROM prs_perslid p WHERE p.prs_perslid_key=m.prs_perslid_key) contact, md.ins_discipline_omschrijving Service, ms.mld_stdmelding_omschrijving omschrijving, (SELECT al.alg_locatie_omschrijving FROM alg_locatie al WHERE al.alg_locatie_key=m.mld_alg_locatie_key) ||'-'|| a.alg_gebouw_naam locatie, (SELECT ins_discipline_omschrijving FROM mld_discipline md WHERE md.ins_discipline_key = m.mld_ins_discipline_key) assignee, --- DEZE MOET NOG WORDERN GEVULD. '' type_request, (SELECT ms.mld_statuses_omschrijving FROM mld_statuses ms WHERE ms.mld_statuses_key=m.mld_melding_status) mld_status, '' kostenplaats, m.mld_melding_omschrijving onderwerp, (SELECT listagg(x.kenmerkwaardes, ', ' ) within group (order by x.volgnr) FROM (SELECT k.mld_kenmerk_omschrijving||':'||COALESCE(fud.fac_usrdata_code, km.mld_kenmerkmelding_waarde) kenmerkwaardes, k.mld_kenmerk_volgnummer volgnr FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk skm, fac_kenmerkdomein fk, fac_usrdata fud, fac_usrtab fut WHERE mld_melding_key=m.mld_melding_key AND k.mld_kenmerk_key = km.mld_kenmerk_key AND skm.mld_srtkenmerk_key(+) = k.mld_srtkenmerk_key AND fk.fac_kenmerkdomein_key(+) = skm.fac_kenmerkdomein_key AND fut.fac_usrtab_key(+) = fk.fac_usrtab_key AND fud.fac_usrtab_key(+) = fut.fac_usrtab_key AND fud.fac_usrdata_key(+) = FAC.SAFE_TO_NUMBER(km.mld_kenmerkmelding_waarde) AND k.mld_kenmerk_volgnummer>0) x ) kenmerkwaardes, (SELECT MAX (f.fac_tracking_datum) FROM fac_tracking f WHERE f.FAC_TRACKING_REFKEY=m.mld_melding_key AND f.FAC_SRTNOTIFICATIE_KEY=55 AND f.FAC_TRACKING_DATUM>m.mld_melding_datum) mld_update, (SELECT mk.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mk, mld_kenmerk k WHERE mk.MLD_melding_KEY=m.mld_melding_key AND mk.mld_kenmerk_key=k.mld_kenmerk_key AND UPPER(k.mld_kenmerk_omschrijving)='PROVATEXPORTFLAG') provat_flag, (SELECT mk.mld_kenmerkmelding_waarde FROM mld_kenmerkmelding mk, mld_kenmerk k WHERE mk.mld_melding_key=m.mld_melding_key AND mk.mld_kenmerk_key=k.mld_kenmerk_key AND UPPER(k.mld_kenmerk_omschrijving)='PROVATEXPORT') export_provat FROM mld_melding m, mld_stdmelding ms, mld_discipline md, alg_v_allonrgoed_gegevens a WHERE m.mld_stdmelding_key=ms.mld_stdmelding_key AND md.ins_discipline_key= ms.mld_ins_discipline_key AND (UPPER(ms.mld_stdmelding_omschrijving)='INZET BHV OF ONGEVAL MELDEN' OR UPPER(ms.mld_stdmelding_omschrijving)='ONVEILIGE SITUATIE MELDEN' OR UPPER(ms.mld_stdmelding_omschrijving)='BEVEILIGINGSINCIDENT MELDEN') AND a.alg_locatie_key=m.mld_alg_locatie_key AND a.alg_onroerendgoed_keys=m.mld_alg_onroerendgoed_keys AND m.mld_melding_status IN (2,3,4,5,7); --- -- View tbv alle bookmarks -- Deze worden door BIOMNI via API uitgelezen --- CREATE OR REPLACE VIEW pror_v_bkms_biomni AS SELECT 'https://fmis.prorail.nl/?u='||fac_bookmark_id||CHR(38)||'mld_defaultstdmelding='||ms.MLD_STDMELDING_KEY url, ms.MLD_STDMELDING_OMSCHRIJVING FROM fac_bookmark fb, mld_stdmelding ms WHERE fb.FAC_BOOKMARK_NAAM='SSP/Biomni melding' AND ms.mld_stdmelding_verwijder IS NULL ORDER BY ms.MLD_STDMELDING_KEY; --- -- View tbv alle melding status -- Deze worden door BIOMNI via API uitgelezen --- CREATE OR REPLACE VIEW pror_v_mld_biomni AS SELECT m.mld_melding_key mld_key, id.ins_srtdiscipline_prefix||m.mld_melding_key mld_key_inclprefix, COALESCE(m.mld_melding_onderwerp, ms.mld_stdmelding_omschrijving) omschrijving, mst.mld_statuses_omschrijving, m.mld_melding_datum aanvraag_datum, COALESCE(p.prs_perslid_email,m.mld_melding_email_ext) email_aanvrager, (SELECT a.mld_melding_note_omschrijving FROM (SELECT mld_melding_note_omschrijving FROM mld_melding_note WHERE mld_melding_key=m.mld_melding_key ORDER BY mld_melding_note_aanmaak desc) a WHERE ROWNUM=1) notitie, 'https://fmis.prorail.nl/appl/mld/mld_melding.asp?urole=fe'||chr(38)||'mld_key='||m.mld_melding_key response_url FROM mld_melding m, mld_stdmelding ms, mld_discipline md, ins_srtdiscipline id, mld_statuses mst, prs_perslid p WHERE p.prs_perslid_key=m.prs_perslid_key AND ms.mld_stdmelding_key = m.mld_stdmelding_key AND md.ins_discipline_key=ms.mld_ins_discipline_key AND id.ins_srtdiscipline_key = md.ins_srtdiscipline_key AND mst.mld_statuses_key=m.mld_melding_status AND ( p.prs_perslid_email IS NOT NULL OR m.mld_melding_email_ext IS NOT NULL) ORDER BY m.mld_melding_datum; -- -- Looplijst Cateraar -- CREATE OR REPLACE VIEW pror_v_cat_reserveringincl ( key, nummer, res_omschrijving, invoerdatum, datum, gastheer, contact, gastheer_email, gastheer_telefoon, contact_email, contact_telefoon, invoerder, kostensoortgroep, kostensoort, kpn, kpn_omschrijving, kpn_extern, fclt_3d_divisie_key, divisie_naam, divisie_omschrijving, fclt_3d_afdeling_key, afdeling_code, afdeling_omschrijving, regio_omschrijving, district_omschijving, fclt_3d_locatie_key, locatie, locatie_omschrijving, locatie_plaats, gebouw, verdieping, ruimte, opstelling, capaciteit, no_show, mandaat, personeelsnr, fclt_3d_discipline_key, catalogus_key, catalogus, reserveerbare_ruimte, bezoekers, van, tot, duur, status, bostatus, activiteit, srtactiviteit_key, activiteitsoort, opmerking, voorziening_discipline_key, voorziening_type, voorziening_catalogus, leverancier, voorziening_product_key, voorziening_product, voorziening_totaalprijs, voorziening_totaalprijsex, voorziening_van, voorziening_tot, voorziening_aantal, voorziening_prijs, voorziening_opmerking ) AS SELECT rrr.res_rsv_ruimte_key, res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr, rrr.res_rsv_ruimte_omschrijving, COALESCE (rrr.res_rsv_ruimte_aanmaak, voorz.van), rrr.res_rsv_ruimte_van, (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key), (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all pf WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key), (SELECT ph.prs_perslid_email FROM prs_perslid ph WHERE ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key), (SELECT ph.prs_perslid_telefoonnr FROM prs_perslid ph WHERE ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key), (SELECT pc.prs_perslid_email FROM prs_perslid pc WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key), (SELECT pc.prs_perslid_telefoonnr FROM prs_perslid pc WHERE pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key), (SELECT pf.prs_perslid_naam_full FROM fac_tracking tr, fac_srtnotificatie str, prs_v_perslid_fullnames_all pf WHERE tr.prs_perslid_key = pf.prs_perslid_key AND str.fac_srtnotificatie_code = 'RESNEW' AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key AND tr.fac_tracking_refkey = rrr.res_rsv_ruimte_key), (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 disc.prs_kostensoort_key FROM res_discipline disc WHERE disc.ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)))) kostensoortgroep, (SELECT ks.prs_kostensoort_oms FROM prs_kostensoort ks WHERE ks.prs_kostensoort_key = (SELECT disc.prs_kostensoort_key FROM res_discipline disc WHERE disc.ins_discipline_key = COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)))) kostensoort, k.prs_kostenplaats_nr, k.prs_kostenplaats_omschrijving, k.prs_kostenplaats_extern, an.prs_afdeling_key, an.prs_afdeling_naam, an.prs_afdeling_omschrijving, a.prs_afdeling_key, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, (SELECT rg.alg_regio_omschrijving FROM alg_regio rg, alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE rg.alg_regio_key = d.alg_regio_key AND d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT d.alg_district_omschrijving FROM alg_district d, alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE d.alg_district_key = l.alg_district_key AND l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT l.alg_locatie_key FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_locatie_code FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_locatie_omschrijving FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_locatie_plaats FROM alg_locatie l, alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE l.alg_locatie_key = g.alg_locatie_key AND g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_gebouw_naam FROM alg_gebouw g, alg_verdieping v, alg_ruimte r WHERE g.alg_gebouw_key = v.alg_gebouw_key AND v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), (SELECT alg_verdieping_code FROM alg_verdieping v, alg_ruimte r WHERE v.alg_verdieping_key = r.alg_verdieping_key AND r.alg_ruimte_key = r2a.alg_ruimte_key), r2a.ruimte_nr, r2a.opstelling, r2a.capaciteit, rrr.res_rsv_ruimte_noshow, NVL ( (SELECT pr.fac_profiel_limiet FROM fac_profiel pr WHERE p.fac_profiel_key = pr.fac_profiel_key), 0), prs_perslid_nr, COALESCE ( voorz.ins_discipline_key, (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key)), (SELECT ins_discipline_key FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key), (SELECT ins_discipline_omschrijving FROM ins_tab_discipline d, res_ruimte_opstelling ro, res_ruimte rr WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND rr.res_discipline_key = d.ins_discipline_key), DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee'), rrr.res_rsv_ruimte_bezoekers, rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, COALESCE ( (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 0), (SELECT res_status_fo_omschrijving FROM res_status_fo rs WHERE rs.res_status_fo_key = rrr.res_status_fo_key), (SELECT res_status_bo_omschrijving FROM res_status_bo rs WHERE rs.res_status_bo_key = rrr.res_status_bo_key), ra.res_activiteit_omschrijving, rsa.res_srtactiviteit_key, rsa.res_srtactiviteit_omschrijving, rrr.res_rsv_ruimte_opmerking, voorz.ins_discipline_key, voorz.vtype, voorz.catalogus, (SELECT prs_bedrijf_naam FROM res_disc_params rdp, prs_bedrijf b WHERE rdp.prs_bedrijf_key = b.prs_bedrijf_key AND rdp.res_ins_discipline_key = voorz.ins_discipline_key), voorz.product_key, voorz.product, voorz.totaalprijs, voorz.totaalprijs_ex, TO_CHAR (voorz.van, 'hh24:mi'), TO_CHAR (voorz.tot, 'hh24:mi'), voorz.aantal, ROUND(voorz.prijs,2), (SELECT rk.res_kenmerkartikel_waarde FROM res_kenmerkartikel rk WHERE rk.res_rsv_artikel_key=voorz.rrr_dl_art_key AND rk.res_kenmerkartikel_verwijder IS NULL) voorz_opm FROM res_v_aanwezigrsv_ruimte rrr, res_activiteit ra, res_srtactiviteit rsa, res_reservering res, prs_kostenplaats k, prs_perslid p, prs_afdeling a, prs_afdeling an, prs_v_afdeling_boom ab, ( SELECT res_rsv_ruimte_key, MAX (o.res_opstelling_omschrijving) opstelling, MAX (ro.res_ruimte_opstel_bezoekers) capaciteit, MAX (ra.alg_ruimte_key) alg_ruimte_key, MAX (rr.res_ruimte_nr) ruimte_nr FROM res_rsv_ruimte r, res_ruimte_opstelling ro, res_opstelling o, res_ruimte rr, res_alg_ruimte ra WHERE r.res_rsv_ruimte_verwijder IS NULL AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key AND ro.res_ruimte_key = rr.res_ruimte_key AND ro.res_opstelling_key = o.res_opstelling_key AND rr.res_ruimte_key = ra.res_ruimte_key GROUP BY res_rsv_ruimte_key UNION ALL SELECT res_rsv_ruimte_key, '' opstelling, NULL capaciteit, rrr.alg_ruimte_key, r.alg_ruimte_nr FROM res_rsv_ruimte rrr, alg_ruimte r WHERE rrr.alg_ruimte_key IS NOT NULL AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a, (SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key, null rrr_dl_art_key, rd.res_deel_key product_key, rd.res_deel_omschrijving product, DECODE ( rd.res_deel_prijs_vast, 1, NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs), (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 * NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)) totaalprijs, NULL totaalprijs_ex, rrd.res_rsv_deel_van van, rrd.res_rsv_deel_tot tot, (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal, NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, 'object' vtype FROM res_v_aanwezigrsv_deel rrd, res_deel rd, ins_deel d, ins_tab_discipline c WHERE rrd.res_deel_key = rd.res_deel_key AND d.ins_deel_key = rd.res_ins_deel_key AND rrd.res_rsv_ruimte_key IS NOT NULL AND c.ins_discipline_key = rd.res_discipline_key UNION ALL SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key, rra.res_rsv_artikel_key rrr_dl_art_key, ra.res_artikel_key product_key, ra.res_artikel_omschrijving product, NVL (rra.res_rsv_artikel_prijs, rra.res_rsv_artikel_aantal * res_artikel_prijs) totaalprijs, NVL (rra.res_rsv_artikel_prijs/(1+NVL(res_artikel_btw/100,0)), rra.res_rsv_artikel_aantal * res_artikel_prijs/(1+NVL(res_artikel_btw/100,0))) totaalprijs_ex, rra.res_rsv_artikel_levering van, NULL tot, rra.res_rsv_artikel_aantal aantal, NVL (rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal, res_artikel_prijs) prijs, c.ins_discipline_key ins_discipline_key, c.ins_discipline_omschrijving catalogus, 'consumable' vtype FROM res_v_aanwezigrsv_artikel rra, res_artikel ra, ins_tab_discipline c WHERE rra.res_artikel_key = ra.res_artikel_key AND ra.res_discipline_key = c.ins_discipline_key) voorz WHERE rrr.res_reservering_key = res.res_reservering_key AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+) AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+) AND rrr.res_activiteit_key = ra.res_activiteit_key AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key AND p.prs_afdeling_key = a.prs_afdeling_key AND p.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = an.prs_afdeling_key AND (rrr.res_ruimte_opstel_key IS NOT NULL OR voorz.res_rsv_ruimte_key IS NOT NULL) AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2010', 'DD-MM-YYYY'); --- EXPORTS -- PROVAT EXPORT -- De geexporteerde meldingen een export datum meegeven. CREATE OR REPLACE PROCEDURE PROR_SELECT_PROVAT(p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS v_kenmerk_key NUMBER; CURSOR c IS SELECT * FROM pror_v_mld_provat WHERE provat_flag IS NULL OR (provat_flag='0' AND mld_update>TO_DATE(export_provat,'DD-MM-YYYY')); BEGIN FOR rec in c LOOP flx.setflex('MLD',1041,rec.melding_key,'1'); -- Deze mogen geexporteerd worden A=1041 END LOOP; END; / -- -- Export view voor alle meldingen die naar ProVat geexporteerd moeten die syncstatus=1 hebben -- CREATE OR REPLACE VIEW PROR_V_EXPORT_PROVAT ( result, result_order ) AS SELECT 'Requestnr;Begindatum;Contact;Service;Omschrijving;Gebouw;Assignee;Type request;Status;Kostenplaats;Omschrijving' heaeder,0 FROM DUAL UNION ALL SELECT melding_key||';'||TO_CHAR(begin_datum,'DD-MM-YYYY HH24:MI:SS')||';'||contact||';'||service||';'||omschrijving||';'||locatie||';'||assignee||';'||type_request||';'||mld_status||';;'||REPLACE(REPLACE(onderwerp, CHR(10)),CHR(13))||', '||kenmerkwaardes, 1 FROM pror_v_mld_provat WHERE provat_flag='1' ORDER BY 1 DESC; -- alle geexporteerde meldingen de sync date en syncstatus goedzetten CREATE OR REPLACE PROCEDURE PROR_EXPORT_PROVAT(p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_index IN VARCHAR2, p_file IN VARCHAR2 ) AS CURSOR c IS SELECT * FROM pror_v_mld_provat WHERE provat_flag='1'; BEGIN FOR rec IN C LOOP flx.setflex('MLD',1021,rec.melding_key,TO_CHAR(SYSDATE,'DD-MM-YYYY')); -- A = 1021 flx.setflex('MLD',1041,rec.melding_key,'0'); -- A = 1041 END LOOP; END; / -- EINDE PROVAT EXPORT -- EXPORT VAN CATERING BESTELLINGE TBV Eurest -- -- VIEW TBV EUREST EXPORT (ook gebruikt in rapportage) CREATE OR REPLACE VIEW pror_v_select_eurest_cat AS SELECT distinct rra.res_rsv_ruimte_key rrr_key, rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering, rrr.res_rsv_ruimte_opmerking opmerking, 'Regulier' extra_opmerking, rrr.res_rsv_ruimte_van van, rrr.res_rsv_ruimte_tot tot, (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager, p.prs_perslid_telefoonnr telefoon, p.prs_perslid_email email, k.prs_kostenplaats_key, k.prs_kostenplaats_nr kostenplaats, k.prs_kostenplaats_omschrijving, COALESCE ( (SELECT alg_ruimte_nr FROM alg_v_allonrgoed_gegevens alg WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key), (SELECT MIN(alg.alg_ruimte_nr) FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rr.res_ruimte_key = rro.res_ruimte_key AND rarm.res_ruimte_key = rr.res_ruimte_key AND rarm.res_alg_ruimte_verwijder IS NULL AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr, ra.res_artikel_groep soort_locatie FROM res_rsv_artikel rra, res_artikel ra, res_rsv_ruimte rrr, prs_kostenplaats k, prs_v_perslid_gegevens p WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY') AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rra.res_artikel_key = ra.res_artikel_key AND rrr.res_status_bo_key = 2 -- afgemeld AND rrr.res_status_fo_key = 2 AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key AND rra.res_rsv_artikel_verwijder IS NULL AND rrr.res_rsv_ruimte_verwijder IS NULL AND rrr.res_rsv_ruimte_externsyncdate IS NULL UNION -- alle bezrogde reserveringn SELECT distinct rra.res_rsv_ruimte_key rrr_key, rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering, rrr.res_rsv_ruimte_opmerking opmerking, 'Bezorgen' extra_opmerking, rrr.res_rsv_ruimte_van van, rrr.res_rsv_ruimte_tot tot, (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager, p.prs_perslid_telefoonnr telefoon, p.prs_perslid_email email, k.prs_kostenplaats_key, k.prs_kostenplaats_nr kostenplaats, k.prs_kostenplaats_omschrijving, -- b.prs_bedrijf_key, -- b.prs_overeenkomst_nr, COALESCE ( (SELECT alg_ruimte_nr FROM alg_v_allonrgoed_gegevens alg WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key), (SELECT MIN(alg.alg_ruimte_nr) FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rr.res_ruimte_key = rro.res_ruimte_key AND rarm.res_ruimte_key = rr.res_ruimte_key AND rarm.res_alg_ruimte_verwijder IS NULL AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr, ra.res_artikel_groep soort_locatie FROM res_rsv_artikel rra, res_artikel ra, res_rsv_ruimte rrr, prs_kostenplaats k, prs_v_perslid_gegevens p WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY') AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rra.res_artikel_key = ra.res_artikel_key AND rrr.res_status_fo_key = 2 -- vervallen en te laat uit outllok afgemeld AND rrr.res_rsv_ruimte_cvab_mode IS NOT NULL -- vervallen en te laat uit outllok afgemeld AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key AND rrr.res_rsv_ruimte_externsyncdate IS NULL UNION -- alle te laat verwijderde outlook reservereingen met catering SELECT distinct rra.res_rsv_ruimte_key rrr_key, rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering, rrr.res_rsv_ruimte_opmerking opmerking, 'Te late annulering' extra_opmerking, rrr.res_rsv_ruimte_van van, rrr.res_rsv_ruimte_tot tot, (SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager, p.prs_perslid_telefoonnr telefoon, p.prs_perslid_email email, k.prs_kostenplaats_key, k.prs_kostenplaats_nr kostenplaats, k.prs_kostenplaats_omschrijving, COALESCE ( (SELECT alg_ruimte_nr FROM alg_v_allonrgoed_gegevens alg WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key), (SELECT MIN(alg.alg_ruimte_nr) FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key AND rr.res_ruimte_key = rro.res_ruimte_key AND rarm.res_ruimte_key = rr.res_ruimte_key AND rarm.res_alg_ruimte_verwijder IS NULL AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr, ra.res_artikel_groep soort_locatie FROM res_rsv_artikel rra, res_artikel ra, res_rsv_ruimte rrr, prs_kostenplaats k, prs_v_perslid_gegevens p WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY') AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+) AND rra.res_artikel_key = ra.res_artikel_key AND rrr.res_status_fo_key = 4 -- vervallen en te laat uit outllok afgemeld AND rrr.res_status_bo_key = 2 -- vervallen en te laat uit outllok afgemeld AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key AND rrr.res_rsv_ruimte_externnr IS NOT NULL AND rrr.res_rsv_ruimte_externsyncdate IS NULL; CREATE OR REPLACE PROCEDURE PROR_SELECT_EUREST_CAT( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS CURSOR sel IS SELECT p.*, (SELECT alg.alg_gebouw_code FROM alg_v_allonrgoed_gegevens alg WHERE alg.alg_ruimte_nr=p.ruimtenr) gebouw_code FROM PROR_V_SELECT_EUREST_CAT p WHERE TO_CHAR(p.van,'MM')='12'; --TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM'); CURSOR sel_art(p_rrr_key NUMBER) IS SELECT rra.res_rsv_artikel_key, rra.res_rsv_artikel_aantal aantal, ra.res_artikel_omschrijving artikel_omschrijving, COALESCE(ra.RES_ARTIKEL_NR,ra.res_artikel_externnr) artikelnr, rra.res_rsv_artikel_levering van, ra.res_artikel_btw btw, rra.res_rsv_artikel_prijs totprijs, ra.res_artikel_prijs prijs, rd.ins_discipline_omschrijving catalogus FROM res_rsv_artikel rra, res_artikel ra, res_discipline rd WHERE rra.res_rsv_ruimte_key=p_rrr_key AND rra.res_artikel_key = ra.res_artikel_key -- AND rra.res_status_bo_key = 2 -- afgemeld AND rra.res_rsv_artikel_verwijder IS NULL AND ra.res_artikel_btw IN (0, 9, 21) AND rd.ins_discipline_key=ra.res_discipline_key; v_bestand VARCHAR2(20); v_shop_token VARCHAR2(50); v_contact_email VARCHAR2(50); v_debitor_value VARCHAR2(20); v_counter NUMBER; v_artikelprijs NUMBER; v_maand NUMBER; v_jaar NUMBER; BEGIN v_bestand :='EUR-EX'; v_counter:=0; -- CIRFOOD settings v_shop_token:='CMPS_1234'; v_contact_email :='compass@prorail.nl'; v_debitor_value := 'PROR_DEB_CODE'; -- IF fac.safe_to_number((TO_CHAR(SYSDATE,'MM'))) = 1 THEN -- v_maand:=12 -- v_jaar := fac_safe_to_number(TO_CHAR(SYSDATE,'YYYY'))-1; -- END IF; -- eerst opschonen DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand; pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, '
'); /* pror.add_xml_row (v_bestand, ''||v_shop_token||''); */ pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, '1'); pror.add_xml_row (v_bestand, 'Prorail'); pror.add_xml_row (v_bestand, ''||v_contact_email||''); pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, 'Purchaseorder Facilitor'); pror.add_xml_row (v_bestand, '
'); pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, ''); FOR rec IN sel LOOP v_counter:=v_counter+1; pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Name', 'PROR'); pror.add_xml_element (v_bestand, 'ID', '0000'); pror.add_xml_element (v_bestand, 'ExternalID', rec.reservering); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Name', rec.aanvrager); pror.add_xml_element (v_bestand, 'Tel', rec.telefoon); pror.add_xml_element (v_bestand, 'Email', rec.email); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Comments', REGEXP_REPLACE(rec.opmerking, '[^ -~|[:space:]]', '')); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Reference', rec.gebouw_code); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Description',rec.ruimteNr); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'RequestedDeliveryDateTime',to_char(rec.van,'YYYYMMDD')||'T'||to_char(rec.van,'HH24:MI:SS')); pror.add_xml_element (v_bestand, 'RequestedCollectDateTime',to_char(rec.tot,'YYYYMMDD')||'T'||to_char(rec.tot,'HH24:MI:SS')); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Code',rec.kostenplaats); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); FOR rec_art in sel_art(rec.rrr_key) LOOP pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Start',TO_CHAR(rec_art.van,'HH24:MI')); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'Description',rec_art.artikel_omschrijving); pror.add_xml_element (v_bestand, 'Reference',rec_art.artikelnr); pror.add_xml_row(v_bestand, ''); v_artikelprijs:=0; IF UPPER(rec_art.catalogus) = 'MAATWERK' THEN v_artikelprijs := rec_art.totprijs/rec_art.aantal; ELSE v_artikelprijs := rec_art.prijs; END IF; pror.add_xml_element (v_bestand, 'QuantityOrdered',rec_art.aantal); pror.add_xml_row(v_bestand, ''); pror.add_xml_element (v_bestand, 'NetPrice',v_artikelprijs); pror.add_xml_element (v_bestand, 'BrtPrice',ROUND(v_artikelPrijs*(1+rec_art.btw/100),2)); pror.add_xml_element (v_bestand, 'Currency','EUR'); pror.add_xml_element (v_bestand, 'VatPercentage',rec_art.btw); pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE WHERE res_rsv_artikel_key=rec_art.res_rsv_artikel_key; END LOOP; pror.add_xml_row(v_bestand, ''); pror.add_xml_row(v_bestand, ''); UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE WHERE res_rsv_ruimte_key=rec.rrr_key; END LOOP; pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, ''); pror.add_xml_row (v_bestand, '
'); IF v_counter=0 -- we hebben niets te exporteren dan kunnen we de xml headers ook opruimen. THEN DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand; END IF; END; / CREATE OR REPLACE VIEW PROR_V_EXPORT_EUREST_CAT ( result, result_order ) AS SELECT fac_rapport_regel, fac_rapport_volgnr FROM fac_rapport WHERE fac_rapport_node LIKE 'EUR-EX%'; -- EINDE EXPORT COMPASSGROUP ------ 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