ZGTW#89613 Implementatie ZGT

Facturatierapport

svn path=/Customer/trunk/; revision=70353
This commit is contained in:
Sander Schepers
2025-09-17 17:24:00 +00:00
parent df107771a3
commit 38f9cfd27f

View File

@@ -939,6 +939,254 @@ BEGIN
END;
/
CREATE OR REPLACE VIEW ZGTW_V_FACTURATIERAPPORT
(
NUMMER,
DATUM,
LOCATIE_OMSCHRIJVING,
VAN,
TOT,
ACTIVITEIT,
VOORZIENING_TYPE,
VOORZIENING_CATALOGUS,
VOORZIENING_PRODUCT,
VOORZIENING_VAN,
VOORZIENING_TOT,
VOORZIENING_AANTAL,
VOORZIENING_PRIJS,
VOORZIENING_PRIJS_EXTERN,
VOORZIENING_TOTAALPRIJS,
VOORZIENING_TOTAALPRIJSEXTERN,
RUIMTE_UURPRIJS,
RUIMTE_DUUR,
ZAALHUUR,
DEBITEURNR,
RELATIETYPE_OMSCHRIJVING,
PRIJS_DOORBELASTING
)
AS
WITH
r2a
AS
( SELECT r.res_rsv_ruimte_key,
MAX (o.res_opstelling_omschrijving) AS opstelling,
MAX (ro.res_ruimte_opstel_bezoekers) AS capaciteit,
MAX (ra.alg_ruimte_key) AS alg_ruimte_key
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,
'' AS opstelling,
NULL AS capaciteit,
r.alg_ruimte_key
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),
-- 2) Voorzieningen (objecten & consumables)
voorz
AS
(SELECT rrd.res_rsv_ruimte_key
AS res_rsv_ruimte_key,
-rd.res_deel_key
AS product_key,
rd.res_deel_omschrijving
AS product,
CASE
WHEN rd.res_deel_prijs_vast = 1
THEN
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
ELSE
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
END
AS totaalprijs,
CASE
WHEN rd.res_deel_prijs_vast = 1
THEN
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
ELSE
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
* 24
* NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
END
AS totaalprijs_extern,
rrd.res_rsv_deel_van
AS van,
rrd.res_rsv_deel_tot
AS tot,
(rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24
AS aantal,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
AS prijs,
NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
AS prijs_extern,
c.ins_discipline_key
AS ins_discipline_key,
c.ins_discipline_omschrijving
AS catalogus,
'object'
AS 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,
ra.res_artikel_key,
ra.res_artikel_omschrijving,
NVL (rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal * res_artikel_prijs),
NVL (
rra.res_rsv_artikel_prijs,
rra.res_rsv_artikel_aantal * res_artikel_inkoopprijs),
rra.res_rsv_artikel_levering,
NULL,
rra.res_rsv_artikel_aantal,
NVL (
rra.res_rsv_artikel_prijs
/ rra.res_rsv_artikel_aantal,
res_artikel_prijs),
NVL (
rra.res_rsv_artikel_prijs
/ rra.res_rsv_artikel_aantal,
res_artikel_inkoopprijs),
c.ins_discipline_key,
c.ins_discipline_omschrijving,
'consumable'
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),
kc
AS
(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)
SELECT res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
AS nummer,
rrr.res_rsv_ruimte_van
AS datum,
l.alg_locatie_omschrijving
AS locatie_omschrijving,
rrr.res_rsv_ruimte_van
AS van,
rrr.res_rsv_ruimte_tot
AS tot,
ra.res_activiteit_omschrijving
AS activiteit,
voorz.vtype
AS voorziening_type,
voorz.catalogus
AS voorziening_catalogus,
voorz.product
AS voorziening_product,
TO_CHAR (voorz.van, 'hh24:mi')
AS voorziening_van,
TO_CHAR (voorz.tot, 'hh24:mi')
AS voorziening_tot,
voorz.aantal
AS voorziening_aantal,
voorz.prijs
AS voorziening_prijs,
voorz.prijs_extern
AS voorziening_prijs_extern,
voorz.totaalprijs
AS voorziening_totaalprijs,
voorz.totaalprijs_extern
AS voorziening_totaalprijsextern,
rr.res_ruimte_prijs
AS ruimte_uurprijs,
ROUND ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24, 2)
AS ruimte_duur,
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
AS zaalhuur,
b.prs_leverancier_nr
AS debiteurnr,
rt.prs_relatietype_omschrijving
AS 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
AS prijs_doorbelasting
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
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 r2a ON r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_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 voorz
ON rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key
LEFT JOIN 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 >= DATE '2017-01-01'
AND ( rrr.res_ruimte_opstel_key IS NOT NULL
OR voorz.res_rsv_ruimte_key IS NOT NULL);
------ payload end ------
SET DEFINE OFF