Files
Customer/PROR/PROR.sql
2024-02-01 14:02:22 +00:00

1990 lines
89 KiB
SQL

--
-- $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)
|| '</' || p_tag || '>');
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')
AND p.prs_perslid_nr NOT LIKE 'P%' -- Alle P accounts komen via SCIM koppeling ,die geeft door als account inactief is
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin;
-- Alle personen die via de SCIM koppeling zijn aangemkaat en die inactief zijn gemaakt.
CURSOR prs_del_scim IS
SELECT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_inactief <
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')
AND p.prs_perslid_nr LIKE 'P%' -- Alle P accounts komen via SCIM koppeling ,die geeft door als account inactief is
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin;
BEGIN
-- Eerst alle in Facilitro aangemaakt accounts
FOR rec IN prs_del
LOOP
prs.delete_perslid(NULL, rec.prs_perslid_key);
END LOOP;
-- Alle inactive personen die initieel via de scim koppeling zijn aangemaakt
FOR rec2 IN prs_del_scim
LOOP
prs.delete_perslid(NULL, rec2.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,
-- LTRIM(rec.prs_tussenvoegsel||' '||rec.prs_achternaam),
rec.prs_email,
rec.prs_telefoon,
v_srtperslid_omschrijving,
-- rec.prs_perslid_nr,
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);
CURSOR p_autgroep -- welke afas accounts hebben nog geen autgroep
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 NOT EXISTS (SELECT 'x'
FROM fac_gebruikersgroep f
WHERE f.prs_perslid_key=p.prs_perslid_key);
v_date DATE;
v_defaultgroep NUMBER:=1;
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;
FOR rec2 IN p_autgroep
LOOP
INSERT INTO fac_gebruikersgroep(FAC_GROEP_KEY, prs_perslid_key)
VALUES(v_defaultgroep, rec2.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
-- Notificatie VIEW tbv opdracht updates die met NSecure zijn uitgewisseld
CREATE OR REPLACE VIEW PROR_V_NSECURE_UPDATE
(
sender,
receiver,
code,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
'CUST03' code,
'Opdracht '||o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr||' met NSecureNr '||ko.mld_kenmerkopdr_waarde||' is gewijzigd' text,
o.mld_opdr_key,
null xkey,
(SELECT b.prs_bedrijf_email
FROM prs_bedrijf b
WHERE b.prs_leverancier_nr ='313341'
AND b.prs_bedrijf_uitvoerende='1'
AND b.prs_bedrijf_verwijder IS NULL) xemail,
NULL xmobile
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk km
WHERE o.mld_statusopdr_key IN (5,8) -- toegekend, geaccpeteerd
AND o.mld_uitvoerende_keys=(SELECT b.prs_bedrijf_key
FROM prs_bedrijf b
WHERE b.prs_leverancier_nr ='313341'
AND b.prs_bedrijf_uitvoerende='1'
AND b.prs_bedrijf_verwijder IS NULL)
AND ko.mld_opdr_key = o.MLD_OPDR_KEY
AND ko.mld_kenmerk_key = km.mld_kenmerk_key
AND km.mld_kenmerk_omschrijving='NSecure Nr'
AND LENGTH(ko.mld_kenmerkopdr_waarde)>2
AND (
( o.mld_opdr_verzonden < (SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey=o.mld_opdr_key -- Alleen een update
AND ft.fac_srtnotificatie_key=80
AND lower(ft.fac_tracking_oms) like '%gewijzigd%omschrijving%veranderd%'
AND ft.prs_perslid_key != 621)
AND (SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey=o.mld_opdr_key -- Alleen een update
AND ft.fac_srtnotificatie_key=80
AND lower(ft.fac_tracking_oms) like '%gewijzigd%omschrijving%veranderd%'
AND ft.prs_perslid_key != 621)
>
COALESCE((SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey=o.mld_opdr_key -- Alleen een update
AND ft.fac_srtnotificatie_key=220 -- ORDTRL
AND LOWER(ft.fac_tracking_oms) like '%cust03%'), o.mld_opdr_verzonden)
)
OR
( o.mld_opdr_verzonden < (SELECT MAX(mld_opdr_note_aanmaak)
FROM mld_opdr_note
WHERE mld_opdr_key=o.mld_opdr_key
AND mld_opdr_note_flag in (4,5))
AND (SELECT MAX(mld_opdr_note_aanmaak)
FROM mld_opdr_note
WHERE mld_opdr_key=o.mld_opdr_key
AND mld_opdr_note_flag in (4,5))
>
COALESCE((SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey=o.mld_opdr_key -- Alleen een update
AND ft.fac_srtnotificatie_key=220 -- ORDTRL
AND LOWER(ft.fac_tracking_oms) like '%cust03%'), o.mld_opdr_verzonden)
)
);
-- 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 res_reservering_key||'/'||res_rsv_ruimte_volgnr reserveringNr,
res_reservering_key key,
'CUST02' cust_code,
'Reservering '||res_reservering_key||'/'||res_rsv_ruimte_volgnr||' op '|| TO_CHAR(leverdatum,'DD-MM-YYYY HH24:MI')||' is verwijderd buiten annulerings horizon.' text,
(SElECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key= gastheer_key) gastheer,
NULL receiver,
NULL sender,
'cateringmanagerprorail@prorail.nl' xemail,
NULL xmobile,
res_rsv_ruimte_key xkey
FROM (SElECT r.*,
(SELECT MAX(rdp.res_disc_params_cancel_dagen) annuleer_dagen
FROM res_rsv_artikel rra, res_artikel ra, res_discipline rd, res_disc_params rdp
WHERE res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND ra.res_artikel_key = rra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rdp.res_ins_discipline_key=rd.ins_discipline_key) annuleer_dagen
FROM (SELECT DISTINCT
res.res_rsv_ruimte_key res_rsv_ruimte_key,
res.res_reservering_key res_reservering_key,
res.res_rsv_ruimte_volgnr res_rsv_ruimte_volgnr,
res.res_rsv_ruimte_host_key gastheer_key,
res.res_rsv_ruimte_verwijder datum_verwijder,
fac.safe_to_date (
TO_CHAR (res.res_rsv_ruimte_van, 'DD-MM-YYYY')||' 12:00',
'DD-MM-YYYY HH24:MI') leverdatum
FROM res_rsv_ruimte res, res_rsv_artikel rra
WHERE res.res_rsv_ruimte_verwijder IS NOT NULL
AND res.res_rsv_ruimte_externnr IS NOT NULL
AND res.res_status_fo_key=4
AND rra.res_rsv_ruimte_key=res.res_rsv_ruimte_key) r) x
WHERE datum_verwijder> leverdatum - annuleer_dagen
AND NOT EXISTS (SELECT rkw.res_kenmerk_key
FROM res_kenmerkwaarde rkw,
res_kenmerk rk
WHERE rkw.res_rsv_ruimte_key=x.res_rsv_ruimte_key
AND rk.res_kenmerk_key = rkw.res_kenmerk_key
AND UPPER(rk.res_kenmerk_omschrijving)='EXTERNSYNCDATUM')
AND NOT EXISTS (SElECT *
FROM fac_tracking ft
WHERE fac_tracking_refkey=x.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 -- DIT MOET ANDERS
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%')
AND rrr.res_rsv_ruimte_aanmaak BETWEEN SYSDATE-1 AND SYSDATE;
-- 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'
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 UPPER(ra.res_activiteit_omschrijving)='VERGADERING'
AND TRUNC(rrr.res_rsv_ruimte_van)>= TRUNC(SYSDATE-30) -- we laten alleen een 30 dagen terug zien.
AND rrr.res_ruimte_opstel_key= rro.res_ruimte_opstel_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
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
CASE WHEN (SELECT USER FROM DUAL)='PROR_TEST'
THEN 'https://fmis.testprorail.nl/?u='||fac_bookmark_id||CHR(38)||'mld_defaultstdmelding='||ms.MLD_STDMELDING_KEY
ELSE 'https://fmis.prorail.nl/?u='||fac_bookmark_id||CHR(38)||'mld_defaultstdmelding='||ms.MLD_STDMELDING_KEY
END 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,
CASE WHEN (SELECT USER FROM DUAL)='PROR_TEST'
THEN 'https://fmis.testprorail.nl/appl/mld/mld_melding.asp?urole=fe'||chr(38)||'mld_key='||m.mld_melding_key
ELSE 'https://fmis.prorail.nl/appl/mld/mld_melding.asp?urole=fe'||chr(38)||'mld_key='||m.mld_melding_key
END response_url
--'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');
-- View tbv rapportage over inrichting standaardmeldingen SLA
CREATE OR REPLACE VIEW PROR_V_STDMELDING_SLA
AS
SELECT m.hide_f_vakgroeptype vakgroeptype,
m.fclt_f_vakgroep vakgroep,
m.fclt_f_melding melding,
m.acceptatietijd_kritisch mldacc_kritisch,
m.acceptatietijd_hoog mldacc_hoog,
m.acceptatietijd mldacc_normaal,
m.acceptatietijd_laag mldacc_laag,
m.uitvoertijd_kritisch mlduitv_kritisch,
m.uitvoertijd_hoog mlduitv_hoog,
m.uitvoertijd_normaal mlduitv_normaal,
m.uitvoertijd_laag mlduitv_laag,
(SELECT a.alg_srtruimte_omschrijving
FROM alg_srtruimte a
WHERE a.alg_srtruimte_key=ms.alg_srtruimte_key) srtruimte,
ms.mld_stdmsrtruimte_t_accept_pr1.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_accept_pr1.eenheid,'U','Uren','D','Dagen') ruimteacc_kritisch,
ms.mld_stdmsrtruimte_t_accept_pr2.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_accept_pr2.eenheid,'U','Uren','D','Dagen') ruimteacc_hoog,
ms.mld_stdmsrtruimte_t_accepttijd.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_accepttijd.eenheid,'U','Uren','D','Dagen') ruimteacc_normaal,
ms.mld_stdmsrtruimte_t_accept_pr4.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_accept_pr4.eenheid,'U','Uren','D','Dagen') ruimteacc_laag,
ms.mld_stdmsrtruimte_t_uitv_pr1.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_uitv_pr1.eenheid,'U','Uren','D','Dagen') ruimteuitv_kritisch,
ms.mld_stdmsrtruimte_t_uitv_pr2.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_uitv_pr2.eenheid,'U','Uren','D','Dagen') ruimteuitv_hoog,
ms.mld_stdmsrtruimte_t_uitvtijd.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_uitvtijd.eenheid,'U','Uren','D','Dagen') ruimteuitv_normaal,
ms.mld_stdmsrtruimte_t_uitv_pr4.tijdsduur||' '||
DECODE(ms.mld_stdmsrtruimte_t_uitv_pr4.eenheid,'U','Uren','D','Dagen') ruimteuitv_laag,
pd.prs_dienst_omschrijving dienst,
b.prs_bedrijf_naam leverancier,
b.prs_leverancier_nr leverancierNr,
(SELECT alg_locatie_code
FROM alg_locatie al,
alg_gebouw ag
WHERE ag.alg_gebouw_key= pdl.alg_gebouw_key
AND al.alg_locatie_key=ag.alg_locatie_key) locatie_code,
(SELECT alg_gebouw_code
FROM alg_gebouw
WHERE alg_gebouw_key=pdl.alg_gebouw_key) gebouw_code,
pdl.prs_bdl_t_uitvoertijd.tijdsduur||' '|| DECODE(pdl.prs_bdl_t_uitvoertijd.tijdsduur,'U','Uren','D','Dagen') bedruitv_normaal
FROM mld_v_rap_stdmelding m,
mld_stdmelding msm,
mld_stdmsrtruimte ms,
PRS_DIENST pd,
prs_bedrijfdienstlocatie pdl,
prs_bedrijf b
WHERE msm.mld_stdmelding_key=m.melding_key
AND pd.prs_dienst_key(+) = msm.prs_dienst_key
AND pdl.prs_dienst_key = pd.prs_dienst_key
AND b.prs_bedrijf_key = pdl.prs_bedrijf_key
AND m.melding_key=ms.mld_stdmelding_key(+);
--- 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',823,rec.melding_key,'1'); -- Deze mogen geexporteerd worden A = 1041 P=823
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 'SLA-escalatieniveau;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(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',757,rec.melding_key,TO_CHAR(SYSDATE,'DD-MM-YYYY')); -- A = 1021 P=757
flx.setflex('MLD',823,rec.melding_key,'0'); -- A = 1041 P=823
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_locatie_code||'-'||alg_gebouw_upper||'-'||alg_ruimte_nr
FROM alg_v_ruimte_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT alg_locatie_code||'-'||alg_gebouw_upper||'-'||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
GROUP BY alg_locatie_code,alg_gebouw_upper,alg_verdieping_code)) loc_gb_ruimtenr,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_ruimte_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,
rrr.res_activiteit_key activiteit_key
FROM res_rsv_artikel rra,
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 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_key NOT IN (SELECT rkw.RES_RSV_RUIMTE_KEY FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY
AND rk.RES_KENMERK_KEY = rkw.RES_KENMERK_KEY
AND rk.RES_KENMERK_OMSCHRIJVING='ExternSyncDatum')
-- AND rrr.res_rsv_ruimte_externsyncdate IS NULL KUNNEN WE NIET GEBRUIKEN AANGEZIEN DE OUTLOOK KOPPELING DEZE GEBRUIKT
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_locatie_code||'-'||alg_gebouw_upper||'-'||alg_ruimte_nr
FROM alg_v_ruimte_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT alg_locatie_code||'-'||alg_gebouw_upper||'-'||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
GROUP BY alg_locatie_code,alg_gebouw_upper,alg_verdieping_code)) loc_gb_ruimtenr,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_ruimte_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,
rrr.res_activiteit_key activiteit_key
FROM res_rsv_artikel rra,
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 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_key NOT IN (SELECT rkw.RES_RSV_RUIMTE_KEY FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY
AND rk.RES_KENMERK_KEY = rkw.RES_KENMERK_KEY
AND rk.RES_KENMERK_OMSCHRIJVING='ExternSyncDatum')
-- 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_locatie_code||'-'||alg_gebouw_upper||'-'||alg_ruimte_nr
FROM alg_v_ruimte_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT alg_locatie_code||'-'||alg_gebouw_upper||'-'||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
GROUP BY alg_locatie_code,alg_gebouw_upper,alg_verdieping_code)) loc_gb_ruimtenr,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_ruimte_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,
rrr.res_activiteit_key activiteit_key
FROM res_rsv_artikel rra,
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 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
AND rrr.res_rsv_ruimte_key NOT IN (SELECT rkw.RES_RSV_RUIMTE_KEY FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.RES_RSV_RUIMTE_KEY = rrr.RES_RSV_RUIMTE_KEY
AND rk.RES_KENMERK_KEY = rkw.RES_KENMERK_KEY
AND rk.RES_KENMERK_OMSCHRIJVING='ExternSyncDatum')
AND rrr.res_rsv_ruimte_key NOT IN (SELECT rkw.res_rsv_ruimte_key -- deze zijn door kenmerk uitgesloten van facturatie (aangegeven door cateraar)
FROM res_kenmerkwaarde rkw, res_kenmerk rk
WHERE rkw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rkw.res_kenmerk_key = rk.res_kenmerk_key
AND rk.res_kenmerk_omschrijving='Niet factureren');
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_plaatsaanduiding=p.loc_gb_ruimtenr) gebouw_code,
(SELECT k.res_kenmerk_key from res_kenmerk k
WHERE k.res_kenmerk_omschrijving='ExternSyncDatum'
AND k.res_activiteit_key = p.activiteit_key) kenmerk_sync_key
FROM PROR_V_SELECT_EUREST_CAT p
WHERE TRUNC(p.van) <= TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1)));
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,
(SELECT rka.res_kenmerkartikel_waarde
from res_kenmerkartikel rka, res_kenmerk rk, res_srtkenmerk rsk
where rka.res_rsv_artikel_key=rra.res_rsv_artikel_key
AND rk.res_kenmerk_key=rka.res_kenmerk_key
AND rsk.res_srtkenmerk_key = rk.res_srtkenmerk_key
AND rsk.res_srtkenmerk_upper='MAATWERK OPMERKING') opmerking
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, '<?xml version="1.0" encoding="windows-1252"?>');
pror.add_xml_row (v_bestand, '<Message version="1.1">');
pror.add_xml_row (v_bestand, '<Header>');
/* pror.add_xml_row (v_bestand, '<ShopToken>'||v_shop_token||'</ShopToken>'); */
pror.add_xml_row (v_bestand, '<Sender>');
pror.add_xml_row (v_bestand, '<ID>1</ID>');
pror.add_xml_row (v_bestand, '<Name>Prorail</Name>');
pror.add_xml_row (v_bestand, '<Email>'||v_contact_email||'</Email>');
pror.add_xml_row (v_bestand, '</Sender>');
pror.add_xml_row (v_bestand, '<Subject>Purchaseorder Facilitor</Subject>');
pror.add_xml_row (v_bestand, '</Header>');
pror.add_xml_row (v_bestand, '<Content>');
pror.add_xml_row (v_bestand, '<Orders>');
FOR rec IN sel
LOOP
v_counter:=v_counter+1;
pror.add_xml_row(v_bestand, '<Order>');
pror.add_xml_row(v_bestand, '<Customer>');
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, '<ContentContact>');
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, '</ContentContact>');
pror.add_xml_row(v_bestand, '</Customer>');
pror.add_xml_element (v_bestand, 'Comments', REGEXP_REPLACE(rec.opmerking, '[^ -~|[:space:]]', ''));
pror.add_xml_row(v_bestand, '<Delivery>');
pror.add_xml_row(v_bestand, '<Location>');
pror.add_xml_element (v_bestand, 'Reference', SUBSTR(rec.loc_gb_ruimtenr,INSTR(rec.loc_gb_ruimtenr,'-',1,1)+1,INSTR(rec.loc_gb_ruimtenr,'-',1,2)-INSTR(rec.loc_gb_ruimtenr,'-',1,1)-1));
pror.add_xml_row(v_bestand, '<Room>');
pror.add_xml_element (v_bestand, 'Description',rec.loc_gb_ruimtenr);
pror.add_xml_row(v_bestand, '</Room>');
pror.add_xml_row(v_bestand, '</Location>');
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, '</Delivery>');
pror.add_xml_row(v_bestand, '<CostCentre>');
pror.add_xml_element (v_bestand, 'Code',rec.kostenplaats);
pror.add_xml_row(v_bestand, '</CostCentre>');
pror.add_xml_row(v_bestand, '<OrderLines>');
FOR rec_art in sel_art(rec.rrr_key)
LOOP
pror.add_xml_row(v_bestand, '<OrderLine>');
pror.add_xml_element (v_bestand, 'Start',TO_CHAR(rec_art.van,'HH24:MI'));
pror.add_xml_row(v_bestand, '<Item>');
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, '</Item>');
v_artikelprijs:=0;
IF UPPER(rec_art.catalogus) LIKE '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, '<Price>');
pror.add_xml_element (v_bestand, 'NetPrice',ROUND(v_artikelPrijs/(1+rec_art.btw/100),2));
pror.add_xml_element (v_bestand, 'BrtPrice',v_artikelprijs);
pror.add_xml_element (v_bestand, 'Currency','EUR');
pror.add_xml_element (v_bestand, 'VatPercentage',rec_art.btw);
pror.add_xml_row(v_bestand, '</Price>');
pror.add_xml_row(v_bestand, '</OrderLine>');
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, '</OrderLines>');
pror.add_xml_row(v_bestand, '</Order>');
flx.setflex('RES',rec.kenmerk_sync_key,rec.rrr_key,TO_CHAR(TRUNC(SYSDATE),'DD-MM-YYYY'));
-- 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, '</Orders>');
pror.add_xml_row (v_bestand, '</Content>');
pror.add_xml_row (v_bestand, '</Message>');
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
CREATE OR REPLACE PROCEDURE PROR_EXPORT_NSECURE_UPD(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errorhint VARCHAR2 (100);
v_aanduiding VARCHAR2 (100);
v_locatie_key NUMBER;
v_lengte NUMBER;
v_new_note VARCHAR2 (4000);
v_note_key NUMBER;
CURSOR upd
IS
SELECT o.mld_opdr_key, M.MLD_MELDING_KEY from mld_opdr o, mld_melding m
WHERE o.MLD_STATUSOPDR_KEY IN (5,8)
AND m.mld_melding_key = o.mld_melding_key
AND o.MLD_UITVOERENDE_KEYS=(select b.prs_bedrijf_key
from prs_bedrijf b
where b.PRS_LEVERANCIER_NR ='313341'
and b.PRS_BEDRIJF_UITVOERENDE='1'
AND b.PRS_BEDRIJF_VERWIJDER IS NULL)
AND o.MLD_OPDR_EXTERNSYNCDATE < (select MAX(mld_melding_note_aanmaak)
from mld_melding_note
where mld_melding_key=6
and mld_melding_note_flag =1);
BEGIN
FOR rec IN upd
LOOP
SELECT MLD_MELDING_NOTE_OMSCHRIJVING
INTO v_new_note
FROM (SELECT MAX(mld_MELDING_note_aanmaak), mld_MELDING_key, mld_melding_note_key, MLD_melding_NOTE_OMSCHRIJVING
from mld_melding_note where mld_melding_key=rec.mld_melding_key
GROUP BY mld_melding_key,mld_melding_note_key,MLD_melding_NOTE_OMSCHRIJVING);
-- Gaan we hem nu in de melding kenmerk notite zetten
SELECT k.mld_kenmerk_key
INTO v_note_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND UPPER (sk.mld_srtkenmerk_omschrijving) = 'UPDATE NOTITIES';
v_errorhint :=
'Verwijderen kenmerk bij de opdracht : '
|| rec.mld_melding_key;
DELETE MLD_KENMERKOPDR ko
WHERE ko.mld_opdr_key = rec.mld_opdr_key
AND ko.mld_kenmerk_key = v_note_key;
mld.upsertopdrachtkenmerk (v_note_key,
rec.mld_opdr_key,
v_new_note);
v_errorhint :=
'Opdracht opnieuw te verzenden naar Nsecure voor opdracht : '
|| rec.mld_melding_key;
-- Eerst zetten we de opdracht opnieuw klaar om te verzenden
UPDATE mld_opdr o
SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL
WHERE o.mld_opdr_key = rec.mld_opdr_key;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
fac.writelog (p_applname,
'E',
oracle_err_num || '/' || oracle_err_mes,
v_errorhint);
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