ZGTW#89613 Implementatie ZGT

svn path=/Customer/trunk/; revision=69894
This commit is contained in:
Sander Schepers
2025-07-31 11:44:33 +00:00
parent f986eb3dea
commit eb87a0e440

View File

@@ -1,15 +1,9 @@
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'SAMPLE.SQL'
DEFINE dbuser = 'UWVA'
DEFINE thisfile = 'ZGTW.SQL'
DEFINE dbuser = 'ZGTW'
SET ECHO ON
SET DEFINE ON
@@ -26,9 +20,828 @@ PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PROCEDURE ZGTW_TEST.ZGTW_IMPORT_RESERVERINGEN (
p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
SELECT * FROM DUAL; -- het echte script
CREATE OR REPLACE PROCEDURE ZGTW_TEST.ZGTW_UPDATE_RESERVERINGEN (
p_import_key IN NUMBER)
AS
CURSOR sel IS
SELECT fac_imp_csv_col01 AS ultimo_code,
fac_imp_csv_col04 AS ultimo_code_volgnr,
fac_imp_csv_col21 AS res_ruimte_nr,
fac_imp_csv_col03 AS res_status,
fac_imp_csv_col07 AS res_aanvrager,
fac_imp_csv_col09 AS res_aanvrager_email,
fac_imp_csv_col05 AS res_omschrijving,
fac.safe_to_date (
TO_CHAR (
CAST (
TO_TIMESTAMP_TZ (
fac_imp_csv_col10,
'YYYY-MM-DD HH24:MI:SS.FF7 TZH:TZM')
AT LOCAL
AS DATE),
'DD/MM/YYYY HH24:MI:SS'),
'DD/MM/YYYY HH24:MI:SS') AS res_startdatum,
fac.safe_to_date (
TO_CHAR (
CAST (
TO_TIMESTAMP_TZ (
fac_imp_csv_col11,
'YYYY-MM-DD HH24:MI:SS.FF7 TZH:TZM')
AT LOCAL
AS DATE),
'DD/MM/YYYY HH24:MI:SS'),
'DD/MM/YYYY HH24:MI:SS') AS res_einddatum
FROM fac_imp_csv rec
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col01 <> 'Reserveringsnummer'
ORDER BY fac_imp_csv_key;
v_res_startdatum DATE;
v_res_einddatum DATE;
v_prs_perslid_key NUMBER;
v_res_ruimte_opstel_key NUMBER;
v_res_activiteit_key NUMBER;
v_rsv_ruimte_key NUMBER;
v_reservering_key NUMBER;
v_res_kenmerk_key NUMBER;
v_status_bo NUMBER;
v_status_fo NUMBER;
v_volgnr NUMBER;
v_no_show NUMBER;
v_count NUMBER;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
BEGIN
v_res_kenmerk_key := -1;
v_errormsg := 'Kenmerk tbv ultimo code is niet gevonden';
SELECT res_kenmerk_key
INTO v_res_kenmerk_key
FROM res_kenmerk rk
WHERE rk.res_kenmerk_code = 'ULTIMO_CODE'
AND rk.res_kenmerk_verwijder IS NULL
AND rk.res_activiteit_key = 10;
v_errormsg := 'Kenmerk tbv ultimo code gevonden, nu naar loop';
IF v_res_kenmerk_key > 0
THEN
FOR rec IN sel
LOOP
IF rec.ultimo_code <> 'Code reservering'
THEN
-- Heb ik de reservering al
v_volgnr := fac.safe_to_number (rec.ultimo_code_volgnr);
v_errormsg := 'Opzoeken bestaande reservering';
BEGIN
SELECT r.res_reservering_key
INTO v_reservering_key
FROM res_reservering r, res_rsv_ruimte rrr
WHERE r.res_reservering_externnr = rec.ultimo_code
AND rrr.res_reservering_key =
r.res_reservering_key
AND rrr.res_rsv_ruimte_volgnr = v_volgnr
AND rrr.res_rsv_ruimte_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_reservering_key := -1;
END;
IF v_reservering_key = -1 -- alleen aanmaken als we hem nog niet hebben
THEN
v_errormsg := 'Bepalen startdatum en einddatum';
v_res_startdatum := rec.res_startdatum;
v_res_einddatum := rec.res_einddatum;
v_errormsg := 'Opzoeken persoon';
BEGIN
BEGIN
SELECT p.prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE LOWER (p.prs_perslid_email) =
LOWER (rec.res_aanvrager_email);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
SELECT p.prs_perslid_key
INTO v_prs_perslid_key
FROM prs_perslid p
WHERE UPPER (p.prs_perslid_naam) =
UPPER (rec.res_aanvrager);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_prs_perslid_key := 3;
END;
END;
END;
v_aanduiding :=
'Reservering '
|| rec.ultimo_code
|| ' voor ruimte met ruimte Nr :'
|| rec.res_ruimte_nr
|| ' is niet gevonden';
SELECT MIN (rro.res_ruimte_opstel_key)
INTO v_res_ruimte_opstel_key
FROM res_ruimte rr, res_ruimte_opstelling rro
WHERE rr.res_ruimte_verwijder IS NULL
AND rr.res_ruimte_nr LIKE rec.res_ruimte_nr || '%'
AND rro.res_ruimte_key = rr.res_ruimte_key;
BEGIN
SELECT ra.res_activiteit_key
INTO v_res_activiteit_key
FROM res_activiteit ra
WHERE ra.res_activiteit_omschrijving = 'Vergadering';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_res_activiteit_key := 10;
END;
v_status_bo := 2; -- Alles op Geregistreerd (want alleen lopende reserveringen)
v_status_fo := 2; -- Alles op Definitief (want alleen lopende reserveringen)
v_no_show := TO_NUMBER (NULL);
IF v_prs_perslid_key > 0 AND v_res_ruimte_opstel_key > 0
THEN
IF v_reservering_key = -1
THEN
INSERT INTO res_reservering (
res_reservering_verwijder,
res_reservering_externnr)
VALUES (NULL, rec.ultimo_code)
RETURNING res_reservering_key
INTO v_reservering_key;
END IF;
v_errormsg := 'Fout toevoegen res_rsv_ruimte.';
INSERT INTO res_rsv_ruimte (
res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_opmerking,
res_rsv_ruimte_omschrijving,
prs_kostenplaats_key,
res_rsv_ruimte_contact_key,
res_rsv_ruimte_host_key,
--alg_ruimte_key,
res_ruimte_opstel_key,
res_rsv_ruimte_cvab_mode,
res_activiteit_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_rsv_ruimte_bezoekers,
res_rsv_ruimte_bezoekers_shown,
res_status_bo_key,
res_status_fo_key,
res_rsv_ruimte_noshow,
res_rsv_ruimte_externnr)
VALUES (v_reservering_key,
v_volgnr,
NULL,
SUBSTR (rec.res_omschrijving, 1, 60),
TO_NUMBER (NULL),
v_prs_perslid_key,
v_prs_perslid_key,
v_res_ruimte_opstel_key,
NULL, -- CVAB-mode op Afhalen!
v_res_activiteit_key,
v_res_startdatum,
v_res_einddatum,
TO_NUMBER (NULL),
v_no_show,
v_status_bo,
v_status_fo,
v_no_show,
NULL)
RETURNING res_rsv_ruimte_key
INTO v_rsv_ruimte_key;
flx.setflex ('RES',
v_res_kenmerk_key,
v_rsv_ruimte_key,
rec.ultimo_code || '/' || v_volgnr);
fac.trackaction ('RESNEW',
v_rsv_ruimte_key,
NULL,
SYSDATE,
'Gemigreerd vanuit Ultimo');
fac.imp_writelog (
p_import_key,
'I',
'Reservering '
|| v_reservering_key
|| ' aangemaakt voor ultimo reservering '
|| rec.ultimo_code,
'');
END IF;
ELSE
fac.imp_writelog (
p_import_key,
'I',
'Reservering voor ultimo reservering '
|| rec.ultimo_code
|| ' reeds aangemaakt.',
'');
END IF;
END IF;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces Ultimo reserveringen afgebroken!',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE ZGTW_TEST.ZGTW_IMPORT_CATERING (
p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE ZGTW_TEST.ZGTW_UPDATE_CATERING (
p_import_key IN NUMBER)
AS
CURSOR catres IS
WITH
rr_set
AS
(SELECT rr.res_reservering_externnr,
rrr.res_rsv_ruimte_volgnr,
rr.res_reservering_key,
rrr.res_rsv_ruimte_key,
/* voeg hier de kolommen toe die je nodig hebt uit rr/rrr */
ROW_NUMBER ()
OVER (
PARTITION BY rr.res_reservering_externnr,
rrr.res_rsv_ruimte_volgnr
ORDER BY rr.res_reservering_key DESC -- kies je eigen logica
) rn
FROM res_reservering rr
JOIN res_rsv_ruimte rrr
ON rrr.res_reservering_key =
rr.res_reservering_key)
SELECT fac_imp_csv_col01 AS ultimo_code,
fac_imp_csv_col04 AS ultimo_code_volgnr,
fac_imp_csv_col23 AS ultimo_art_nr,
fac_imp_csv_col24 AS ultimo_art_omschrijving,
art.RES_ARTIKEL_key AS artikel_key,
fac_imp_csv_col12 AS aantal,
fac.safe_to_date (
TO_CHAR (
CAST (
TO_TIMESTAMP_TZ (
fac_imp_csv_col10,
'YYYY-MM-DD HH24:MI:SS.FF7 TZH:TZM')
AT LOCAL
AS DATE),
'DD/MM/YYYY HH24:MI:SS'),
'DD/MM/YYYY HH24:MI:SS') AS van,
rs.res_rsv_ruimte_key AS res_rsv_ruimte_key,
rs.res_reservering_key AS reservering_key,
rs.res_rsv_ruimte_volgnr AS res_rsv_ruimte_volgnr
FROM fac_imp_csv fac
LEFT JOIN res_artikel art
ON fac.safe_to_number (fac.fac_imp_csv_col23) =
fac.safe_to_number (art.res_artikel_nr)
LEFT JOIN rr_set rs
ON fac.safe_to_number (fac.fac_imp_csv_col01) =
fac.safe_to_number (rs.res_reservering_externnr)
AND fac.safe_to_number (fac.fac_imp_csv_col04) =
fac.safe_to_number (rs.res_rsv_ruimte_volgnr)
AND rs.rn = 1
WHERE fac_import_key = p_import_key
AND fac_imp_csv_col01 <> 'Reserveringsnummer'
ORDER BY fac_imp_csv_key;
-- v_res_startdatum DATE;
-- v_res_einddatum DATE;
-- v_prs_perslid_key NUMBER;
-- v_res_ruimte_opstel_key NUMBER;
-- v_res_activiteit_key NUMBER;
-- v_rsv_ruimte_key NUMBER;
-- v_reservering_key NUMBER;
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (500);
v_reservering_key NUMBER;
v_res_rsv_ruimte_key NUMBER;
v_res_rsv_artikel_key NUMBER;
v_ruimte_opstel_key NUMBER;
v_soort VARCHAR2 (200);
-- v_count NUMBER;
-- v_res_kenmerk_key NUMBER;
-- v_status_bo NUMBER;
-- v_status_fo NUMBER;
-- v_volgnr NUMBER;
-- v_no_show NUMBER;
BEGIN
FOR rec IN catres
LOOP
BEGIN
v_aanduiding :=
rec.ultimo_code || '-' || rec.ultimo_art_nr || '/1';
v_errormsg := 'Fout toevoegen rsv_artikel';
IF rec.artikel_key IS NOT NULL
THEN
INSERT INTO res_rsv_artikel (res_artikel_key,
res_rsv_artikel_aantal,
res_rsv_artikel_levering,
res_status_bo_key,
res_rsv_ruimte_key)
VALUES (rec.artikel_key,
rec.aantal,
rec.van,
2,
rec.res_rsv_ruimte_key)
RETURNING res_rsv_artikel_key
INTO v_res_rsv_artikel_key;
FAC.trackaction (
'#RESUPD',
rec.res_rsv_ruimte_key,
3,
SYSDATE,
'Reservering '
|| rec.reservering_key
|| '/'
|| rec.res_rsv_ruimte_volgnr
|| ' gewijzigd'
|| CHR (13)
|| 'Artikel '
|| rec.ultimo_art_omschrijving
|| ' toegevoegd');
fac.imp_writelog (
p_import_key,
'I',
'Catering '
|| rec.reservering_key
|| ' bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'');
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Catering '
|| rec.reservering_key
|| ' NIET bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'Error: Artikel_key is NULL, geen insert uitgevoerd.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'E',
'Catering '
|| rec.reservering_key
|| ' NIET bijgevoegd bij Ultimo reservering '
|| rec.ultimo_code,
'Error: ' || SQLERRM);
END;
END LOOP;
END;
/
CREATE OR REPLACE VIEW zgtw_v_udr_reserveringincl
(
key,
nummer,
res_omschrijving,
invoerdatum,
datum,
gastheer,
zichtbare_gastheer,
contact,
gastheer_email,
contact_email,
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,
gebouw_key,
verdieping,
ruimte,
opstelling,
capaciteit,
no_show,
actual_shown,
mandaat,
personeelsnr,
fclt_3d_discipline_key,
catalogus_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
bostatus,
activiteit,
srtactiviteit_key,
activiteitsoort,
opmerking,
visibility,
bezorgmode,
voorziening_discipline_key,
voorziening_type,
voorziening_catalogus,
leverancier,
voorziening_product_key,
voorziening_product,
voorziening_van,
voorziening_tot,
voorziening_aantal,
voorziening_prijs,
voorziening_prijs_extern,
voorziening_totaalprijs,
voorziening_totaalprijsextern,
ruimte_uurprijs,
ruimte_duur,
zaalhuur,
debiteurnr,
relatietype_key,
relatietype_omschrijving,
prijs_doorbelasting
)
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,
host_pf.prs_perslid_naam_full,
DECODE (p.prs_perslid_visibility,
1, host_pf_friendly.prs_perslid_naam_friendly,
a.prs_afdeling_omschrijving)
zichtbare_gastheer,
contact_pf.prs_perslid_naam_full,
ph.prs_perslid_email,
pc.prs_perslid_email,
invoerder_pf.prs_perslid_naam_full,
ksg.prs_kostensoortgrp_oms
kostensoortgroep,
ks.prs_kostensoort_oms
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,
rg.alg_regio_omschrijving,
d.alg_district_omschrijving,
l.alg_locatie_key,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_plaats,
g.alg_gebouw_code,
g.alg_gebouw_key,
v.alg_verdieping_code,
r2a.ruimte_nr,
r2a.opstelling,
r2a.capaciteit,
rrr.res_rsv_ruimte_noshow,
rrr.res_rsv_ruimte_bezoekers_shown,
NVL (pr.fac_profiel_limiet, 0),
p.prs_perslid_nr,
COALESCE (voorz.ins_discipline_key, disc.ins_discipline_key),
disc.ins_discipline_key,
disc.ins_discipline_omschrijving,
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),
rs_fo.res_status_fo_omschrijving,
rs_bo.res_status_bo_omschrijving,
ra.res_activiteit_omschrijving,
rsa.res_srtactiviteit_key,
rsa.res_srtactiviteit_omschrijving,
rrr.res_rsv_ruimte_opmerking,
rrr.res_rsv_ruimte_visibility,
DECODE (rrr.res_rsv_ruimte_cvab_mode,
0, lcl.l ('lcl_res_afhalen'),
1, lcl.l ('lcl_res_bezorgen'),
''),
voorz.ins_discipline_key,
voorz.vtype,
voorz.catalogus,
leverancier.prs_bedrijf_naam,
voorz.product_key,
voorz.product,
TO_CHAR (voorz.van, 'hh24:mi'),
TO_CHAR (voorz.tot, 'hh24:mi'),
voorz.aantal,
voorz.prijs,
voorz.prijs_extern,
voorz.totaalprijs,
voorz.totaalprijs_extern,
rr.res_ruimte_prijs,
ROUND ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 2),
CASE
WHEN b.prs_leverancier_nr IS NULL
THEN
NULL
WHEN rt.prs_relatietype_key = 30
THEN
NULL
ELSE
rr.res_ruimte_prijs
* (ROUND (
(rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van)
* 24,
2))
/ COUNT (*) OVER (PARTITION BY rrr.res_rsv_ruimte_key)
END,
b.prs_leverancier_nr
debiteur,
rt.prs_relatietype_key,
rt.prs_relatietype_omschrijving,
CASE
WHEN b.prs_leverancier_nr IS NULL
THEN
voorz.totaalprijs
WHEN rt.prs_relatietype_key = 30
THEN
voorz.totaalprijs
ELSE
voorz.totaalprijs_extern
+ rr.res_ruimte_prijs
* (ROUND (
( rrr.res_rsv_ruimte_tot
- rrr.res_rsv_ruimte_van)
* 24,
2))
/ COUNT (*) OVER (PARTITION BY rrr.res_rsv_ruimte_key)
END
FROM res_v_aanwezigrsv_ruimte rrr
JOIN res_reservering res
ON rrr.res_reservering_key = res.res_reservering_key
JOIN res_activiteit ra
ON rrr.res_activiteit_key = ra.res_activiteit_key
JOIN res_srtactiviteit rsa
ON ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
JOIN prs_perslid p
ON rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
JOIN prs_afdeling a ON p.prs_afdeling_key = a.prs_afdeling_key
JOIN prs_v_afdeling_boom ab
ON p.prs_afdeling_key = ab.prs_afdeling_key
JOIN prs_afdeling an ON ab.prs_afdeling_key1 = an.prs_afdeling_key
LEFT JOIN prs_kostenplaats k
ON rrr.prs_kostenplaats_key = k.prs_kostenplaats_key
LEFT JOIN prs_v_perslid_fullnames_all host_pf
ON host_pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key
LEFT JOIN prs_v_perslid_fullnames_all host_pf_friendly
ON host_pf_friendly.prs_perslid_key =
rrr.res_rsv_ruimte_host_key
LEFT JOIN prs_v_perslid_fullnames_all contact_pf
ON contact_pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key
LEFT JOIN prs_perslid ph
ON ph.prs_perslid_key = rrr.res_rsv_ruimte_host_key
LEFT JOIN prs_perslid pc
ON pc.prs_perslid_key = rrr.res_rsv_ruimte_contact_key
LEFT JOIN fac_profiel pr ON p.fac_profiel_key = pr.fac_profiel_key
LEFT JOIN res_status_fo rs_fo
ON rs_fo.res_status_fo_key = rrr.res_status_fo_key
LEFT JOIN res_status_bo rs_bo
ON rs_bo.res_status_bo_key = rrr.res_status_bo_key
LEFT JOIN
(SELECT tr.fac_tracking_refkey, pf.prs_perslid_naam_full
FROM fac_tracking tr
JOIN fac_srtnotificatie str
ON tr.fac_srtnotificatie_key =
str.fac_srtnotificatie_key
JOIN prs_v_perslid_fullnames_all pf
ON tr.prs_perslid_key = pf.prs_perslid_key
WHERE str.fac_srtnotificatie_code = 'RESNEW') invoerder_pf
ON invoerder_pf.fac_tracking_refkey = rrr.res_rsv_ruimte_key
LEFT JOIN
( SELECT r.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
JOIN res_ruimte_opstelling ro
ON r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
JOIN res_opstelling o
ON ro.res_opstelling_key = o.res_opstelling_key
JOIN res_ruimte rr
ON ro.res_ruimte_key = rr.res_ruimte_key
JOIN res_alg_ruimte ra
ON rr.res_ruimte_key = ra.res_ruimte_key
WHERE r.res_rsv_ruimte_verwijder IS NULL
GROUP BY r.res_rsv_ruimte_key
UNION ALL
SELECT rrr.res_rsv_ruimte_key,
'' opstelling,
NULL capaciteit,
rrr.alg_ruimte_key,
r.alg_ruimte_nr
FROM res_rsv_ruimte rrr
JOIN alg_ruimte r ON r.alg_ruimte_key = rrr.alg_ruimte_key
WHERE rrr.alg_ruimte_key IS NOT NULL) r2a
ON rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key
LEFT JOIN res_ruimte_opstelling ro
ON rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
LEFT JOIN res_ruimte rr ON ro.res_ruimte_key = rr.res_ruimte_key
LEFT JOIN ins_tab_discipline disc
ON rr.res_discipline_key = disc.ins_discipline_key
LEFT JOIN res_discipline rd
ON disc.ins_discipline_key = rd.ins_discipline_key
LEFT JOIN prs_kostensoort ks
ON rd.prs_kostensoort_key = ks.prs_kostensoort_key
LEFT JOIN prs_kostensoortgrp ksg
ON ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key
LEFT JOIN alg_ruimte r ON r2a.alg_ruimte_key = r.alg_ruimte_key
LEFT JOIN alg_verdieping v
ON r.alg_verdieping_key = v.alg_verdieping_key
LEFT JOIN alg_gebouw g ON v.alg_gebouw_key = g.alg_gebouw_key
LEFT JOIN alg_locatie l ON g.alg_locatie_key = l.alg_locatie_key
LEFT JOIN alg_district d
ON l.alg_district_key = d.alg_district_key
LEFT JOIN alg_regio rg ON d.alg_regio_key = rg.alg_regio_key
LEFT JOIN
(SELECT rrd.res_rsv_ruimte_key
res_rsv_ruimte_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,
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_extern,
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,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
prijs_extern,
c.ins_discipline_key
ins_discipline_key,
c.ins_discipline_omschrijving
catalogus,
'object'
vtype
FROM res_v_aanwezigrsv_deel rrd
JOIN res_deel rd ON rrd.res_deel_key = rd.res_deel_key
JOIN ins_deel d ON d.ins_deel_key = rd.res_ins_deel_key
JOIN ins_tab_discipline c
ON c.ins_discipline_key = rd.res_discipline_key
WHERE rrd.res_rsv_ruimte_key IS NOT NULL
UNION ALL
SELECT rra.res_rsv_ruimte_key
res_rsv_ruimte_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,
rra.res_rsv_artikel_aantal * res_artikel_inkoopprijs)
totaalprijs_extern,
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,
NVL (
rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
res_artikel_inkoopprijs)
prijs_extern,
c.ins_discipline_key
ins_discipline_key,
c.ins_discipline_omschrijving
catalogus,
'consumable'
vtype
FROM res_v_aanwezigrsv_artikel rra
JOIN res_artikel ra
ON rra.res_artikel_key = ra.res_artikel_key
JOIN ins_tab_discipline c
ON ra.res_discipline_key = c.ins_discipline_key) voorz
ON rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key
LEFT JOIN
(SELECT rdp.res_ins_discipline_key, b.prs_bedrijf_naam
FROM res_disc_params rdp
JOIN prs_bedrijf b
ON rdp.prs_bedrijf_key = b.prs_bedrijf_key)
leverancier
ON leverancier.res_ins_discipline_key =
voorz.ins_discipline_key
LEFT JOIN
(SELECT *
FROM (SELECT kc.res_rsv_ruimte_key,
kc.res_kenmerk_key,
kc.res_kenmerkreservering_waarde,
ROW_NUMBER ()
OVER (PARTITION BY kc.res_rsv_ruimte_key
ORDER BY kc.res_kenmerkwaarde_key) AS rn
FROM res_kenmerkwaarde kc
JOIN res_kenmerk r
ON kc.res_kenmerk_key = r.res_kenmerk_key
WHERE kc.res_kenmerkwaarde_verwijder IS NULL
AND r.res_srtkenmerk_key = 42)
WHERE rn = 1) kc
ON kc.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
LEFT JOIN prs_bedrijf b
ON fac.safe_to_number (kc.res_kenmerkreservering_waarde) =
b.prs_bedrijf_key
LEFT JOIN prs_relatietype rt
ON fac.safe_to_number (b.prs_relatietype_key) =
rt.prs_relatietype_key
WHERE rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2017', 'DD-MM-YYYY')
AND ( rrr.res_ruimte_opstel_key IS NOT NULL
OR voorz.res_rsv_ruimte_key IS NOT NULL);
------ payload end ------