diff --git a/SROZ/sroz.sql b/SROZ/sroz.sql index 82dc6c8a2..d3677d901 100644 --- a/SROZ/sroz.sql +++ b/SROZ/sroz.sql @@ -1743,6 +1743,1130 @@ AS AND rrr.res_rsv_ruimte_key = opm_cat.res_rsv_ruimte_key(+) AND rra.res_discipline_key = rd.ins_discipline_key; +-- SROZ#56682: RES-managementrapportages +-- - Alle (niet dirty) reserveringen ongeacht BO-status +-- - Alle Externe en Interne reserveringen t/m volgend jaar +-- - Inclusief gebruiker (TODO) +-- - Inclusief res_status_fo_key (1=Optie of 2=Definitief) +-- - Inclusief catalogus (R-, C-, V- of M-catalogus) +-- - Inclusief netto- en bruto prijs +-- - Inclusief activiteit (key + omschrijving) +-- - Inclusief verhuur tarief (key + omschrijving) +-- - Ruimtenr als Artikelomschrijving ook voor Afgesproken prijs en Korting +CREATE OR REPLACE VIEW sroz_v_res_all2 +( + sortering, + periode, + res_rsv_ruimte_key, + res_rsv_artikel_key, + res_rsv_deel_key, + res_reservering_key, + res_rsv_ruimte_volgnr, + debiteurnummer, + debiteurnaam, + debiteurcontact, + res_rsv_ruimte_van, + res_rsv_ruimte_tot, + res_rsv_ruimte_omschrijving, + gebruiker, + res_status_bo_key, + res_status_fo_key, -- 1=Optie of 2=Definitief + res_rsv_ruimte_ordernr, + aantal, + catalogus, -- Zaaltype (R) of Artikelen (CVM) + artikelomschrijving, + artikelprijs, + btw, + excl_btw, + incl_btw, + activiteit_key, -- 10=Intern of 30=Extern + activiteit, -- Intern of Extern + verhuurtarief_key, -- 1=Commercieel of 2=Maatschappelijk + verhuurtarief, -- Commercieel of Maatschappelijk + debiteurreferentie, + administratie, + kostenplaats, + code_rcvm, + export2afas_key, + export2afas_oms, + controleur +) +AS + SELECT x.sortering, + TO_CHAR (x.res_rsv_ruimte_van, 'yyyy-mm') periode, + x.res_rsv_ruimte_key, x.res_rsv_artikel_key, x.res_rsv_deel_key, + x.res_reservering_key, x.res_rsv_ruimte_volgnr, + TRIM (SUBSTR (h.prs_bedrijf_naam, + INSTR (h.prs_bedrijf_naam, '[') + 1, + INSTR (h.prs_bedrijf_naam, ']/') - INSTR (h.prs_bedrijf_naam, '[') - 1)) + debiteurnummer, + TRIM (SUBSTR (h.prs_bedrijf_naam, + 1, + INSTR (h.prs_bedrijf_naam, '[') - 1)) + debiteurnaam, + TRIM (SUBSTR (h.prs_bedrijf_naam, + INSTR (h.prs_bedrijf_naam, '/') + 1, + INSTR (h.prs_bedrijf_naam, ';T') - INSTR (h.prs_bedrijf_naam, '/') - 1)) + debiteurcontact, + x.res_rsv_ruimte_van, x.res_rsv_ruimte_tot, + x.res_rsv_ruimte_omschrijving, + --CASE + -- WHEN x.res_rsv_ruimte_flag > 0 + -- THEN lcl.l ('lcl_res_flag' || x.res_rsv_ruimte_flag) + --END + DECODE (x.res_activiteit_key, 10, afd.prs_afdeling_omschrijving || '?', '?') + gebruiker, + x.res_status_bo_key, x.res_status_fo_key, x.res_rsv_ruimte_ordernr, + ROUND (x.aantal, 2), + rd.ins_discipline_omschrijving catalogus, + x.artikelomschrijving, + ROUND (COALESCE (x.artikelprijs, 0), 2), + x.btw, + ROUND (ROUND (x.aantal, 2) * ROUND (COALESCE (x.artikelprijs, 0), 2), 2) excl_btw, + ROUND ((ROUND (ROUND (x.aantal, 2) * ROUND (COALESCE (x.artikelprijs, 0), 2), 2) * (100 + btw)) / 100, 2) incl_btw, + ra.res_activiteit_key activiteit_key, + ra.res_activiteit_omschrijving activiteit, + fac.safe_to_number (tar.res_kenmerkreservering_waarde) tar_key, + (SELECT fac_usrdata_omschr FROM fac_v_aanwezigusrdata WHERE fac_usrdata_key = fac.safe_to_number (tar.res_kenmerkreservering_waarde)) tar, + ref.res_kenmerkreservering_waarde ref, + a.fac_usrdata_code administratie, + '7' kostenplaats, + x.code_rcvm, + e.fac_usrdata_key, + e.fac_usrdata_omschr, + c.prs_perslid_naam_friendly + FROM (SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd hh24mi') || SUBSTR ('00000000' || TO_CHAR (res_reservering_key), -9) || 'R0' sortering, + rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, NULL res_rsv_deel_key, + rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, + rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, + rrr.res_rsv_ruimte_omschrijving, + rrr.res_rsv_ruimte_contact_key, rrr.res_rsv_ruimte_host_key, + rrr.res_rsv_ruimte_flag, + rrr.res_status_bo_key, rrr.res_status_fo_key, rrr.res_rsv_ruimte_ordernr, + 24 * (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) aantal, + rr.res_discipline_key, + rr.res_ruimte_nr artikelomschrijving, + DECODE (rrr.res_rsv_ruimte_ordernr, + NULL, -- Nog niet AV=Verwerkt! + DECODE (vht.res_kenmerkreservering_waarde, -- 1=Commercieel/2=Maatschappelijk + '1', rr.res_ruimte_prijs, + rr.res_ruimte_prijs * 0.5), + rrr.res_rsv_ruimte_prijs / (24 * (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van))) + artikelprijs, + COALESCE (fac.safe_to_number (rr.res_ruimte_groep), 21) btw, + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) alg_ruimte_key, + 'R' code_rcvm, + rrr.res_activiteit_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + res_ruimte rr, + (SELECT kw.res_rsv_ruimte_key, kw.res_kenmerkreservering_waarde + FROM res_v_aanwezigkenmerkwaarde kw, res_kenmerk k + WHERE kw.res_kenmerk_key = k.res_kenmerk_key + AND k.res_srtkenmerk_key = 1) vht -- Verhuurtarief + WHERE rrr.res_activiteit_key IN (10, 30) -- Interne of Externe bijeenkomst (géén 11 of 50=Uitleen of Rondleiding)! + --AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE + 1) -- Niet in toekomst! + AND rrr.res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty! + --AND COALESCE (rrr.res_rsv_ruimte_totaal, 0) = 0 -- TODO:Géén afgesproken prijs! + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen! + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key + AND rrr.res_rsv_ruimte_key = vht.res_rsv_ruimte_key(+) + --AND rrr.res_status_bo_key IN (5, 6) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_artikel + -- WHERE res_rsv_artikel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_deel + -- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + AND 24 * (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) > 0 -- Zou zo moeten zijn!? + UNION ALL -- Afgesproken ruimteprijs + SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd hh24mi') || SUBSTR ('00000000' || TO_CHAR (res_reservering_key), -9) || 'R0' sortering, + rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, NULL res_rsv_deel_key, + rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, + rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, + rrr.res_rsv_ruimte_omschrijving, + rrr.res_rsv_ruimte_contact_key, rrr.res_rsv_ruimte_host_key, + rrr.res_rsv_ruimte_flag, + rrr.res_status_bo_key, rrr.res_status_fo_key, rrr.res_rsv_ruimte_ordernr, + 1 aantal, + rr.res_discipline_key, + rr.res_ruimte_nr artikelomschrijving, + rrr.res_rsv_ruimte_totaal artikelprijs, + COALESCE (fac.safe_to_number (rr.res_ruimte_groep), 21) btw, + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) alg_ruimte_key, + 'R' code_rcvm, + rrr.res_activiteit_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + res_ruimte rr + WHERE rrr.res_activiteit_key IN (10, 30) -- Interne of Externe bijeenkomst (géén 11 of 50=Uitleen of Rondleiding)! + --AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE + 1) -- Niet in toekomst! + AND rrr.res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty! + --AND COALESCE (rrr.res_rsv_ruimte_totaal, 0) != 0 -- TODO:Afgesproken prijs! + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen! + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key + --AND rrr.res_status_bo_key IN (5, 6) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_artikel + -- WHERE res_rsv_artikel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_deel + -- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + UNION ALL -- Korting + SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd hh24mi') || SUBSTR ('00000000' || TO_CHAR (res_reservering_key), -9) || 'R1' sortering, + rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, NULL res_rsv_deel_key, + rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, + rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, + rrr.res_rsv_ruimte_omschrijving, + rrr.res_rsv_ruimte_contact_key, rrr.res_rsv_ruimte_host_key, + rrr.res_rsv_ruimte_flag, + rrr.res_status_bo_key, rrr.res_status_fo_key, rrr.res_rsv_ruimte_ordernr, + 1 aantal, + rr.res_discipline_key, + rr.res_ruimte_nr artikelomschrijving, + -1 * rrr.res_rsv_ruimte_korting artikelprijs, + COALESCE (fac.safe_to_number (rr.res_ruimte_groep), 21) btw, + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key) alg_ruimte_key, + 'R' code_rcvm, + rrr.res_activiteit_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + res_ruimte rr + WHERE rrr.res_activiteit_key IN (10, 30) -- Interne of Externe bijeenkomst (géén 11 of 50=Uitleen of Rondleiding)! + --AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE + 1) -- Niet in toekomst! + AND rrr.res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty! + AND COALESCE (rrr.res_rsv_ruimte_korting, 0) != 0 + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key -- Alleen Ruimte-reserveringen! + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key + --AND rrr.res_status_bo_key IN (5, 6) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_artikel + -- WHERE res_rsv_artikel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_deel + -- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + UNION ALL -- Verbruik=Verbruiksartikelen + SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd hh24mi') || SUBSTR ('00000000' || TO_CHAR (res_reservering_key), -9) || 'V' || TO_CHAR (rra.res_discipline_key) || SUBSTR ('000' || TO_CHAR (COALESCE (rra.res_artikel_volgnummer, 0)), -3) sortering, + rrr.res_rsv_ruimte_key, rra.res_rsv_artikel_key, NULL res_rsv_deel_key, + rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, + rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, + rrr.res_rsv_ruimte_omschrijving, + rrr.res_rsv_ruimte_contact_key, rrr.res_rsv_ruimte_host_key, + rrr.res_rsv_ruimte_flag, + rrr.res_status_bo_key, rrr.res_status_fo_key, rrr.res_rsv_ruimte_ordernr, + rra.res_rsv_artikel_aantal aantal, + DECODE (rra.res_artikel_groep, 'R', rr.res_discipline_key, rra.res_discipline_key) + res_discipline_key, + rra.res_artikel_omschrijving artikelomschrijving, + DECODE (rra.res_rsv_artikel_prijs, NULL, rra.res_artikel_prijs, rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal) + artikelprijs, + rra.btw, + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key, + DECODE (rra.res_artikel_groep, + 'R', rra.res_artikel_groep, + 'C', rra.res_artikel_groep, + 'V', rra.res_artikel_groep, + 'M', rra.res_artikel_groep, + ks.prs_kostensoort_altcode) + code_rcvm, + rrr.res_activiteit_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + res_ruimte rr, + (SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, + rra.res_rsv_artikel_levering, rra.res_status_bo_key, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + rra.res_rsv_artikel_prijs, + ra.res_artikel_prijs, + COALESCE (rra.res_rsv_artikel_btw, ra.res_artikel_btw, 21) btw, + ra.res_discipline_key, ra.res_artikel_volgnummer, + ra.res_artikel_groep + FROM res_v_aanwezigrsv_artikel rra, res_artikel ra + WHERE rra.res_rsv_artikel_levering < TRUNC (SYSDATE + 1) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_artikel_key = ra.res_artikel_key + AND (ra.res_discipline_key NOT IN (48, 50) OR ra.res_artikel_btw IS NOT NULL) + UNION ALL -- Dichtbij BTW laag + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, + rra.res_rsv_artikel_levering, rra.res_status_bo_key, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + 0.66 * rra.res_rsv_artikel_prijs res_rsv_artikel_prijs, + 0.66 * ra.res_artikel_prijs res_artikel_prijs, + 6 btw, + ra.res_discipline_key, ra.res_artikel_volgnummer, + ra.res_artikel_groep + FROM res_v_aanwezigrsv_artikel rra, res_artikel ra + WHERE rra.res_rsv_artikel_levering < TRUNC (SYSDATE + 1) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key IN (48) -- Dichtbij extra + AND ra.res_artikel_btw IS NULL + UNION ALL -- Dichtbij BTW hoog + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, + rra.res_rsv_artikel_levering, rra.res_status_bo_key, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + 0.34 * rra.res_rsv_artikel_prijs res_rsv_artikel_prijs, + 0.34 * ra.res_artikel_prijs res_artikel_prijs, + 21 btw, + ra.res_discipline_key, ra.res_artikel_volgnummer, + ra.res_artikel_groep + FROM res_v_aanwezigrsv_artikel rra, res_artikel ra + WHERE rra.res_rsv_artikel_levering < TRUNC (SYSDATE + 1) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key IN (48) -- Dichtbij extra + AND ra.res_artikel_btw IS NULL + UNION ALL -- Momento BTW laag + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, + rra.res_rsv_artikel_levering, rra.res_status_bo_key, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + 0.65 * rra.res_rsv_artikel_prijs res_rsv_artikel_prijs, + 0.65 * ra.res_artikel_prijs res_artikel_prijs, + 6 btw, + ra.res_discipline_key, ra.res_artikel_volgnummer, + ra.res_artikel_groep + FROM res_v_aanwezigrsv_artikel rra, res_artikel ra + WHERE rra.res_rsv_artikel_levering < TRUNC (SYSDATE + 1) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key IN (50) -- Momento extra + AND ra.res_artikel_btw IS NULL + UNION ALL -- Momento BTW hoog + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_key, + rra.res_rsv_artikel_levering, rra.res_status_bo_key, + rra.res_rsv_artikel_aantal, + ra.res_artikel_nr, + ra.res_artikel_omschrijving, + 0.35 * rra.res_rsv_artikel_prijs res_rsv_artikel_prijs, + 0.35 * ra.res_artikel_prijs res_artikel_prijs, + 21 btw, + ra.res_discipline_key, ra.res_artikel_volgnummer, + ra.res_artikel_groep + FROM res_v_aanwezigrsv_artikel rra, res_artikel ra + WHERE rra.res_rsv_artikel_levering < TRUNC (SYSDATE + 1) + AND rra.res_rsv_artikel_dirtlevel = 0 + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key IN (50) -- Momento extra + AND ra.res_artikel_btw IS NULL) rra, + res_discipline rd, + prs_kostensoort ks + WHERE rrr.res_activiteit_key IN (10, 30) -- Interne of Externe bijeenkomst (géén 11 of 50=Uitleen of Rondleiding)! + --AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE + 1) -- Niet in toekomst! + AND rrr.res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty! + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) -- Ruimte- én Uitleen-reserveringen! + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key(+) + AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key + AND rra.res_discipline_key = rd.ins_discipline_key + AND rd.prs_kostensoort_key = ks.prs_kostensoort_key(+) + --AND rrr.res_status_bo_key IN (5, 6) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_artikel + -- WHERE res_rsv_artikel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_deel + -- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + UNION ALL -- Overig=Voorzieningen + SELECT TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyymmdd hh24mi') || SUBSTR ('00000000' || TO_CHAR (res_reservering_key), -9) || 'X' || SUBSTR (rd.res_deel_omschrijving, 1, 3) sortering, + rrr.res_rsv_ruimte_key, NULL res_rsv_artikel_key, rrd.res_rsv_deel_key, + rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr, + rrr.res_rsv_ruimte_van, rrr.res_rsv_ruimte_tot, + rrr.res_rsv_ruimte_omschrijving, + rrr.res_rsv_ruimte_contact_key, rrr.res_rsv_ruimte_host_key, + rrr.res_rsv_ruimte_flag, + rrr.res_status_bo_key, rrr.res_status_fo_key, rrr.res_rsv_ruimte_ordernr, + 24 * (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) aantal, + rd.res_discipline_key, + rd.res_deel_omschrijving artikelomschrijving, + DECODE (rrd.res_rsv_deel_prijs, NULL, rd.res_deel_prijs, rrd.res_rsv_deel_prijs / (24 * (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van))) + artikelprijs, + 21 btw, -- Hard 21% + COALESCE (rar1.alg_ruimte_key, rar2.alg_ruimte_key, rrr.alg_ruimte_key) alg_ruimte_key, + 'V' code_rcvm, + rrr.res_activiteit_key + FROM res_v_aanwezigrsv_ruimte rrr, + res_ruimte_opstelling rro, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NULL + GROUP BY res_ruimte_key) rar1, + ( SELECT res_ruimte_key, MAX (alg_ruimte_key) alg_ruimte_key + FROM res_alg_ruimte + WHERE res_alg_ruimte_verwijder IS NOT NULL + GROUP BY res_ruimte_key) rar2, + res_ruimte rr, + res_v_aanwezigrsv_deel rrd, + res_deel rd + WHERE rrr.res_activiteit_key IN (10, 30) -- Interne of Externe bijeenkomst (géén 11 of 50=Uitleen of Rondleiding)! + --AND rrr.res_rsv_ruimte_tot < TRUNC (SYSDATE + 1) -- Niet in toekomst! + AND rrr.res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + AND rrr.res_rsv_ruimte_dirtlevel = 0 -- Niet dirty! + AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+) -- Ruimte- én Uitleen-reserveringen! + AND rro.res_ruimte_key = rar1.res_ruimte_key(+) + AND rro.res_ruimte_key = rar2.res_ruimte_key(+) + AND COALESCE (rar1.res_ruimte_key, rar2.res_ruimte_key) = rr.res_ruimte_key(+) + AND rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key + AND rrd.res_rsv_deel_tot < SYSDATE -- Niet in toekomst! + AND rrd.res_rsv_deel_dirtlevel = 0 -- Niet dirty! + AND rrd.res_deel_key = rd.res_deel_key + --AND rrr.res_status_bo_key IN (5, 6) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_artikel + -- WHERE res_rsv_artikel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + --AND NOT EXISTS + -- (SELECT 1 + -- FROM res_v_aanwezigrsv_deel + -- WHERE res_rsv_deel_dirtlevel = 0 -- Niet dirty! + -- AND res_status_bo_key = 2 + -- AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key) + ) x + LEFT JOIN prs_perslid p + ON x.res_rsv_ruimte_host_key = p.prs_perslid_key -- Of res_rsv_ruimte_contact_key? + --LEFT JOIN prs_v_afdeling_boom ab + -- ON p.prs_afdeling_key = ab.prs_afdeling_key + LEFT JOIN prs_afdeling afd + ON p.prs_afdeling_key = afd.prs_afdeling_key + LEFT JOIN res_discipline rd + ON x.res_discipline_key = rd.ins_discipline_key + LEFT JOIN res_activiteit ra + ON x.res_activiteit_key = ra.res_activiteit_key + LEFT JOIN res_v_aanwezigkenmerkwaarde tar + ON x.res_rsv_ruimte_key = tar.res_rsv_ruimte_key + AND tar.res_kenmerk_key = 1 -- Verhuur tarief + LEFT JOIN res_v_aanwezigkenmerkwaarde deb + ON x.res_rsv_ruimte_key = deb.res_rsv_ruimte_key + AND deb.res_kenmerk_key = 2 -- Debiteur + LEFT JOIN sroz_v_huurders h + ON deb.res_kenmerkreservering_waarde = TO_CHAR (h.prs_bedrijf_key) + LEFT JOIN res_v_aanwezigkenmerkwaarde ref + ON x.res_rsv_ruimte_key = ref.res_rsv_ruimte_key + AND ref.res_kenmerk_key = 3 -- Referentie debiteur + LEFT JOIN res_v_aanwezigkenmerkwaarde adm + ON x.res_rsv_ruimte_key = adm.res_rsv_ruimte_key + AND adm.res_kenmerk_key = 161 -- Administratie + LEFT JOIN fac_v_aanwezigusrdata a + ON adm.res_kenmerkreservering_waarde = TO_CHAR (a.fac_usrdata_key) + LEFT JOIN res_v_aanwezigkenmerkwaarde e2a + ON x.res_rsv_ruimte_key = e2a.res_rsv_ruimte_key + AND e2a.res_kenmerk_key = 181 -- Export naar Afas + LEFT JOIN fac_v_aanwezigusrdata e + ON e2a.res_kenmerkreservering_waarde = TO_CHAR (e.fac_usrdata_key) + LEFT JOIN res_v_aanwezigkenmerkwaarde gdr + ON x.res_rsv_ruimte_key = gdr.res_rsv_ruimte_key + AND gdr.res_kenmerk_key = 182 -- Gecontroleerd door + LEFT JOIN sroz_v_controleurs c + ON gdr.res_kenmerkreservering_waarde = TO_CHAR (c.prs_perslid_key) + WHERE x.res_rsv_ruimte_van > TO_DATE ('01-01-2019', 'dd-mm-yyyy') +; + +-- SROZ#56682: RES-managementrapportages/Omzet: +-- O1 – Omzet zaalhuur per maand/tarief (of week?) met de 4 kolommen als in Afbeelding 1 +-- O2 – Omzet per maand/zaaltype met de 8 kolommen als in Afbeelding 1 +-- O3 – Omzet per maand/artikelcatalogus met de 4 kolommen als in Afbeelding 1 +-- O4 – Omzet per maand/intern of extern/team of doelgroep met de 6 kolommen als in Afbeelding 1 +-- O5 – Omzet per maand/intern of extern/team of doelgroep/artikelcatalogus/artikel met de 6 kolommen als in Afbeelding 1 +CREATE OR REPLACE VIEW sroz_v_rap_res_omzet1 +( + maand, -- Of week? + zaalhuur, + aant_res, + uren, + optie_excl, + optie_incl, + contract_excl, + contract_incl +) +AS + SELECT periode, verhuurtarief, + COUNT (DISTINCT res_rsv_ruimte_key) aant_res, + SUM (COALESCE (aantal, 0)) uren, + SUM (DECODE (res_status_fo_key, 1, excl_btw, 0)) oe, + SUM (DECODE (res_status_fo_key, 1, incl_btw, 0)) oi, + SUM (DECODE (res_status_fo_key, 2, excl_btw, 0)) ce, + SUM (DECODE (res_status_fo_key, 2, incl_btw, 0)) ci + FROM sroz_v_res_all2 + WHERE activiteit_key = 30 -- Alleen Extern! + AND code_rcvm = 'R' + --AND excl_btw != 0 + GROUP BY periode, verhuurtarief; + +CREATE OR REPLACE VIEW sroz_v_rap_res_omzet2 +( + maand, -- Of week? + zaaltype, + zaalnaam, + aant_res, + uren, + maatsch_optie_excl, + maatsch_optie_incl, + maatsch_contract_excl, + maatsch_contract_incl, + commerc_optie_excl, + commerc_optie_incl, + commerc_contract_excl, + commerc_contract_incl +) +AS + SELECT periode, catalogus, artikelomschrijving, + COUNT (DISTINCT res_rsv_ruimte_key) aant_res, + SUM (COALESCE (aantal, 0)) uren, + SUM (DECODE (res_status_fo_key, 1, DECODE (verhuurtarief_key, 2, excl_btw, 0), 0)) moe, + SUM (DECODE (res_status_fo_key, 1, DECODE (verhuurtarief_key, 2, incl_btw, 0), 0)) moi, + SUM (DECODE (res_status_fo_key, 2, DECODE (verhuurtarief_key, 2, excl_btw, 0), 0)) mce, + SUM (DECODE (res_status_fo_key, 2, DECODE (verhuurtarief_key, 2, incl_btw, 0), 0)) mci, + SUM (DECODE (res_status_fo_key, 1, DECODE (verhuurtarief_key, 1, excl_btw, 0), 0)) coe, + SUM (DECODE (res_status_fo_key, 1, DECODE (verhuurtarief_key, 1, incl_btw, 0), 0)) coi, + SUM (DECODE (res_status_fo_key, 2, DECODE (verhuurtarief_key, 1, excl_btw, 0), 0)) cce, + SUM (DECODE (res_status_fo_key, 2, DECODE (verhuurtarief_key, 1, incl_btw, 0), 0)) cci + FROM sroz_v_res_all2 + WHERE activiteit_key = 30 -- Alleen Extern! + AND code_rcvm = 'R' + --AND excl_btw != 0 + GROUP BY periode, catalogus, artikelomschrijving; + +CREATE OR REPLACE VIEW sroz_v_rap_res_omzet3 +( + maand, -- Of week? + intern_extern, + catalogus, + artikel, + aant_res, + uren_of_stuks, + optie_excl, + optie_incl, + contract_excl, + contract_incl +) +AS + SELECT periode, activiteit, COALESCE (catalogus, code_rcvm), artikelomschrijving, + COUNT (DISTINCT res_rsv_ruimte_key) aant_res, + SUM (COALESCE (aantal, 0)) uren_of_stuks, + SUM (DECODE (res_status_fo_key, 1, excl_btw, 0)) oe, + SUM (DECODE (res_status_fo_key, 1, incl_btw, 0)) oi, + SUM (DECODE (res_status_fo_key, 2, excl_btw, 0)) ce, + SUM (DECODE (res_status_fo_key, 2, incl_btw, 0)) ci + FROM sroz_v_res_all2 + WHERE code_rcvm != 'R' + --AND excl_btw != 0 + GROUP BY periode, activiteit, COALESCE (catalogus, code_rcvm), artikelomschrijving; + +CREATE OR REPLACE VIEW sroz_v_rap_res_omzet4 +( + maand, -- Of week? + intern_extern, + gebruiker, + aant_res, + zaalhuur_optie_excl, + zaalhuur_optie_incl, + zaalhuur_contract_excl, + zaalhuur_contract_incl, + artikelen_optie_excl, + artikelen_optie_incl, + artikelen_contract_excl, + artikelen_contract_incl +) +AS + SELECT periode, activiteit, gebruiker, + COUNT (DISTINCT res_rsv_ruimte_key) aant_res, + SUM (DECODE (res_status_fo_key, 1, DECODE (code_rcvm, 'R', excl_btw, 0), 0)) zoe, + SUM (DECODE (res_status_fo_key, 1, DECODE (code_rcvm, 'R', incl_btw, 0), 0)) zoi, + SUM (DECODE (res_status_fo_key, 2, DECODE (code_rcvm, 'R', excl_btw, 0), 0)) zce, + SUM (DECODE (res_status_fo_key, 2, DECODE (code_rcvm, 'R', incl_btw, 0), 0)) zci, + SUM (DECODE (res_status_fo_key, 1, DECODE (code_rcvm, 'R', 0, excl_btw), 0)) aoe, + SUM (DECODE (res_status_fo_key, 1, DECODE (code_rcvm, 'R', 0, incl_btw), 0)) aoi, + SUM (DECODE (res_status_fo_key, 2, DECODE (code_rcvm, 'R', 0, excl_btw), 0)) ace, + SUM (DECODE (res_status_fo_key, 2, DECODE (code_rcvm, 'R', 0, incl_btw), 0)) aci + FROM sroz_v_res_all2 + --WHERE excl_btw != 0 + GROUP BY periode, activiteit, gebruiker; + +CREATE OR REPLACE VIEW sroz_v_rap_res_omzet5 +( + maand, -- Of week? + intern_extern, + gebruiker, + catalogus, + zaal_of_artikel, + aant_res, + uren_of_stuks, + optie_excl, + optie_incl, + contract_excl, + contract_incl +) +AS + SELECT periode, activiteit, gebruiker, COALESCE (catalogus, code_rcvm), artikelomschrijving, + COUNT (DISTINCT res_rsv_ruimte_key) aant_res, + SUM (COALESCE (aantal, 0)) uren_of_stuks, + SUM (DECODE (res_status_fo_key, 1, excl_btw, 0)) oe, + SUM (DECODE (res_status_fo_key, 1, incl_btw, 0)) oi, + SUM (DECODE (res_status_fo_key, 2, excl_btw, 0)) ce, + SUM (DECODE (res_status_fo_key, 2, incl_btw, 0)) ci + FROM sroz_v_res_all2 + --WHERE excl_btw != 0 + GROUP BY periode, activiteit, gebruiker, COALESCE (catalogus, code_rcvm), artikelomschrijving; + +-- Beschikbare uren per maand/zaaltype/zaalnaam! +-- TODO:Vrije dagen als zondag? +CREATE OR REPLACE VIEW sroz_v_res_besuren +( + maand, -- Of week? + ins_discipline_key, + ins_discipline_omschrijving, + res_ruimte_key, + res_ruimte_nr, + alg_ruimte_key, + quotum +) +AS + SELECT TO_CHAR (d.dag, 'yyyy-mm') mnd, + rd.ins_discipline_key, rd.ins_discipline_omschrijving, -- R-catalogi + rr.res_ruimte_key, rr.res_ruimte_nr, + rar.alg_ruimte_key, + SUM (CASE + WHEN EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (d.dag)) -- Vrije dag=Zondag? + THEN CASE + WHEN TO_CHAR (d.dag, 'mm') BETWEEN '04' AND '08' + THEN 0 -- Op zondag alleen van september-april open van 13:00-17:00, dus in dr zomermaanden gesloten (= 0 uur)! + ELSE LEAST (COALESCE (rr.res_ruimte_eindtijd, 17), 17) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 13), 13) + END + ELSE CASE + WHEN TO_CHAR (d.dag, 'd') = '1' -- Zondag + THEN CASE + WHEN TO_CHAR (d.dag, 'mm') BETWEEN '04' AND '08' + THEN 0 -- Op zondag alleen van september-april open van 13:00-17:00, dus in dr zomermaanden gesloten (= 0 uur)! + ELSE LEAST (COALESCE (rr.res_ruimte_eindtijd, 17), 17) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 13), 13) + END + WHEN TO_CHAR (d.dag, 'd') = '7' -- Zaterdag + THEN LEAST (COALESCE (rr.res_ruimte_eindtijd, 17), 17) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 8.5), 8.5) + ELSE LEAST (COALESCE (rr.res_ruimte_eindtijd, 22), 22) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 8.5), 8.5) -- Werkdag + END + END) + quotum + FROM res_ruimte rr, -- Ook verwijderde zalen! + res_discipline rd, -- Ook verwijderde catalogi! + res_alg_ruimte rar, + ( SELECT TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') + LEVEL - 1 dag + FROM DUAL + CONNECT BY LEVEL <= (TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') - TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy'))) d + WHERE rr.res_discipline_key = rd.ins_discipline_key + AND rr.res_ruimte_key = rar.res_ruimte_key + AND rar.res_alg_ruimte_aanmaak < TRUNC (ADD_MONTHS (d.dag, 1), 'mm') + AND (rar.res_alg_ruimte_verwijder IS NULL OR rar.res_alg_ruimte_verwijder >= TRUNC (d.dag, 'mm')) + GROUP BY TO_CHAR (d.dag, 'yyyy-mm'), + rd.ins_discipline_key, rd.ins_discipline_omschrijving, -- R-catalogi + rr.res_ruimte_key, rr.res_ruimte_nr, + rar.alg_ruimte_key; + +-- SROZ#56682: RES-managementrapportages/Bezettingsgraad: +-- B1 – Bezetting per maand/zaaltype met de 6 kolommen als in Afbeelding 2 en doorklikbaar naar B2 +-- B2 – Bezetting per maand/zaaltype/zaal met de 6 kolommen als in Afbeelding 2 +-- B3 – Bezetting per maand/intern of extern/team of doelgroep met de 4 kolommen als in Afbeelding 2 +CREATE OR REPLACE VIEW sroz_v_rap_res_bezgr1 +( + maand, -- Of week? + zaaltype, + quotum, + totaal, + intern_optie, + intern_contract, + extern_optie, + extern_contract +) +AS + WITH resztznieoc -- Per maand/zaaltype/zaalnaam/activiteit/fo-status de beschikbare en bezette uren (op tot-tijd)! + AS ( SELECT resbes.mnd, + resbes.ins_discipline_omschrijving zaaltype, + resbes.res_ruimte_nr zaalnaam, + resbes.res_activiteit_key, + resbes.res_status_fo_key, + SUM (ROUND (resbes.uren, 3)) bes_uren, + SUM (ROUND (resbez.uren, 3)) bez_uren, + SUM (resbez.aant) aantal_reserveringen + FROM (SELECT DISTINCT TO_CHAR (p.mnd, 'yyyy-mm') mnd, -- DISTINCT igv. verwijderde res_alg_ruimte! + rr.res_discipline_key, rd.ins_discipline_omschrijving, -- R-catalogi + rr.res_ruimte_key, rr.res_ruimte_nr, + rar.alg_ruimte_key, + ra.res_activiteit_key, + sfo.res_status_fo_key, + --fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1) -- TODO: Alleen werkdagen? + (ADD_MONTHS (p.mnd, 1) - p.mnd) + * (LEAST (COALESCE (rr.res_ruimte_eindtijd, 22), 22) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 8.5), 8.5)) + uren + FROM res_ruimte rr, -- Ook verwijderde zalen! + res_discipline rd, -- Ook verwijderde catalogi! + res_alg_ruimte rar, + res_activiteit ra, + res_status_fo sfo, + (SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy'), LEVEL - 1) mnd FROM DUAL CONNECT BY LEVEL <= 36) p + WHERE rr.res_discipline_key = rd.ins_discipline_key + AND rr.res_ruimte_key = rar.res_ruimte_key + AND ra.res_activiteit_key IN (10, 30) -- Intern/Extern + AND sfo.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rar.res_alg_ruimte_aanmaak < ADD_MONTHS (p.mnd, 1) + AND (rar.res_alg_ruimte_verwijder IS NULL OR rar.res_alg_ruimte_verwijder >= p.mnd)) resbes, + ( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rr.res_discipline_key, -- R-catalogi + rr.res_ruimte_key, + ra.alg_ruimte_key, + rrr.res_activiteit_key, + rrr.res_status_fo_key, + COUNT ( * ) aant, + SUM (LEAST ((rrr.res_rsv_ruimte_tot - TRUNC (rrr.res_rsv_ruimte_tot)) * 24, 22) + - GREATEST ((rrr.res_rsv_ruimte_van - TRUNC (rrr.res_rsv_ruimte_van)) * 24, 8.5)) + uren + FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling ro, res_ruimte rr, res_alg_ruimte ra + WHERE rrr.res_activiteit_key IN (10, 30) -- Intern/Extern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key + AND ro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_ruimte_key = ra.res_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rr.res_discipline_key, + rr.res_ruimte_key, + ra.alg_ruimte_key, + rrr.res_activiteit_key, + rrr.res_status_fo_key) resbez + WHERE resbes.mnd = resbez.mnd(+) + AND resbes.res_discipline_key = resbez.res_discipline_key(+) + AND resbes.res_ruimte_key = resbez.res_ruimte_key(+) + AND resbes.alg_ruimte_key = resbez.alg_ruimte_key(+) + AND resbes.res_activiteit_key = resbez.res_activiteit_key(+) + AND resbes.res_status_fo_key = resbez.res_status_fo_key(+) + --AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)! + --AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)! + GROUP BY resbes.mnd, + resbes.ins_discipline_omschrijving, + resbes.res_ruimte_nr, + resbes.res_activiteit_key, + resbes.res_status_fo_key) + SELECT x.mnd, x.zaaltype, x.bes_uren, + TO_CHAR (COALESCE (x.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (x.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (io.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (io.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (ic.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (ic.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (eo.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (eo.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (ec.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (ec.bez_uren, 0) / x.bes_uren), '990') || '%') + FROM ( SELECT mnd, zaaltype, SUM (bes_uren / 4) bes_uren, SUM (COALESCE (bez_uren, 0)) bez_uren + FROM resztznieoc + --WHERE res_status_fo_key = 1 + GROUP BY mnd, zaaltype) x + LEFT JOIN ( SELECT mnd, zaaltype, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 10 AND res_status_fo_key = 1 + GROUP BY mnd, zaaltype) io + ON x.mnd = io.mnd AND x.zaaltype = io.zaaltype + LEFT JOIN ( SELECT mnd, zaaltype, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 10 AND res_status_fo_key = 2 + GROUP BY mnd, zaaltype) ic + ON x.mnd = ic.mnd AND x.zaaltype = ic.zaaltype + LEFT JOIN ( SELECT mnd, zaaltype, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 30 AND res_status_fo_key = 1 + GROUP BY mnd, zaaltype) eo + ON x.mnd = eo.mnd AND x.zaaltype = eo.zaaltype + LEFT JOIN ( SELECT mnd, zaaltype, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 30 AND res_status_fo_key = 2 + GROUP BY mnd, zaaltype) ec + ON x.mnd = ec.mnd AND x.zaaltype = ec.zaaltype; + +CREATE OR REPLACE VIEW sroz_v_rap_res_bezgr2 +( + maand, -- Of week? + zaaltype, + zaalnaam, + quotum, + totaal, + intern_optie, + intern_contract, + extern_optie, + extern_contract +) +AS + WITH resztznieoc -- Per maand/zaaltype/zaalnaam/activiteit/fo-status de beschikbare en bezette uren (op tot-tijd)! + AS ( SELECT resbes.mnd, + resbes.ins_discipline_omschrijving zaaltype, + resbes.res_ruimte_nr zaalnaam, + resbes.res_activiteit_key, + resbes.res_status_fo_key, + SUM (ROUND (resbes.uren, 3)) bes_uren, + SUM (ROUND (resbez.uren, 3)) bez_uren, + SUM (resbez.aant) aantal_reserveringen + FROM (SELECT DISTINCT TO_CHAR (p.mnd, 'yyyy-mm') mnd, -- DISTINCT igv. verwijderde res_alg_ruimte! + rr.res_discipline_key, rd.ins_discipline_omschrijving, -- R-catalogi + rr.res_ruimte_key, rr.res_ruimte_nr, + rar.alg_ruimte_key, + ra.res_activiteit_key, + sfo.res_status_fo_key, + --fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1) -- TODO: Alleen werkdagen? + (ADD_MONTHS (p.mnd, 1) - p.mnd) + * (LEAST (COALESCE (rr.res_ruimte_eindtijd, 22), 22) - GREATEST (COALESCE (rr.res_ruimte_begintijd, 8.5), 8.5)) + uren + FROM res_ruimte rr, -- Ook verwijderde zalen! + res_discipline rd, -- Ook verwijderde catalogi! + res_alg_ruimte rar, + res_activiteit ra, + res_status_fo sfo, + (SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy'), LEVEL - 1) mnd FROM DUAL CONNECT BY LEVEL <= 36) p + WHERE rr.res_discipline_key = rd.ins_discipline_key + AND rr.res_ruimte_key = rar.res_ruimte_key + AND ra.res_activiteit_key IN (10, 30) -- Intern/Extern + AND sfo.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rar.res_alg_ruimte_aanmaak < ADD_MONTHS (p.mnd, 1) + AND (rar.res_alg_ruimte_verwijder IS NULL OR rar.res_alg_ruimte_verwijder >= p.mnd)) resbes, + ( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rr.res_discipline_key, -- R-catalogi + rr.res_ruimte_key, + ra.alg_ruimte_key, + rrr.res_activiteit_key, + rrr.res_status_fo_key, + COUNT ( * ) aant, + SUM (LEAST ((rrr.res_rsv_ruimte_tot - TRUNC (rrr.res_rsv_ruimte_tot)) * 24, 22) + - GREATEST ((rrr.res_rsv_ruimte_van - TRUNC (rrr.res_rsv_ruimte_van)) * 24, 8.5)) + uren + FROM res_v_aanwezigrsv_ruimte rrr, res_ruimte_opstelling ro, res_ruimte rr, res_alg_ruimte ra + WHERE rrr.res_activiteit_key IN (10, 30) -- Intern/Extern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key + AND ro.res_ruimte_key = rr.res_ruimte_key + AND rr.res_ruimte_key = ra.res_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rr.res_discipline_key, + rr.res_ruimte_key, + ra.alg_ruimte_key, + rrr.res_activiteit_key, + rrr.res_status_fo_key) resbez + WHERE resbes.mnd = resbez.mnd(+) + AND resbes.res_discipline_key = resbez.res_discipline_key(+) + AND resbes.res_ruimte_key = resbez.res_ruimte_key(+) + AND resbes.alg_ruimte_key = resbez.alg_ruimte_key(+) + AND resbes.res_activiteit_key = resbez.res_activiteit_key(+) + AND resbes.res_status_fo_key = resbez.res_status_fo_key(+) + --AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)! + --AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)! + GROUP BY resbes.mnd, + resbes.ins_discipline_omschrijving, + resbes.res_ruimte_nr, + resbes.res_activiteit_key, + resbes.res_status_fo_key) + SELECT x.mnd, x.zaaltype, x.zaalnaam, x.bes_uren, + TO_CHAR (COALESCE (x.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (x.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (io.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (io.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (ic.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (ic.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (eo.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (eo.bez_uren, 0) / x.bes_uren), '990') || '%'), + TO_CHAR (COALESCE (ec.bez_uren, 0), '999990.99') || ' / ' || TRIM (TO_CHAR (100 * (COALESCE (ec.bez_uren, 0) / x.bes_uren), '990') || '%') + FROM ( SELECT mnd, zaaltype, zaalnaam, SUM (bes_uren / 4) bes_uren, SUM (COALESCE (bez_uren, 0)) bez_uren + FROM resztznieoc + --WHERE res_status_fo_key = 1 + GROUP BY mnd, zaaltype, zaalnaam) x + LEFT JOIN ( SELECT mnd, zaaltype, zaalnaam, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 10 AND res_status_fo_key = 1 + GROUP BY mnd, zaaltype, zaalnaam) io + ON x.mnd = io.mnd AND x.zaaltype = io.zaaltype AND x.zaalnaam = io.zaalnaam + LEFT JOIN ( SELECT mnd, zaaltype, zaalnaam, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 10 AND res_status_fo_key = 2 + GROUP BY mnd, zaaltype, zaalnaam) ic + ON x.mnd = ic.mnd AND x.zaaltype = ic.zaaltype AND x.zaalnaam = ic.zaalnaam + LEFT JOIN ( SELECT mnd, zaaltype, zaalnaam, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 30 AND res_status_fo_key = 1 + GROUP BY mnd, zaaltype, zaalnaam) eo + ON x.mnd = eo.mnd AND x.zaaltype = eo.zaaltype AND x.zaalnaam = eo.zaalnaam + LEFT JOIN ( SELECT mnd, zaaltype, zaalnaam, SUM (bez_uren) bez_uren + FROM resztznieoc + WHERE res_activiteit_key = 30 AND res_status_fo_key = 2 + GROUP BY mnd, zaaltype, zaalnaam) ec + ON x.mnd = ec.mnd AND x.zaaltype = ec.zaaltype AND x.zaalnaam = ec.zaalnaam; + +CREATE OR REPLACE VIEW sroz_v_rap_res_bezgr3 +( + maand, -- Of week? + intern_extern, + gebruiker, -- Vooralsnog Commercieel/Maatschappelijk igv. Extern! + aant_res, + zaalhuur_optie_uren, + zaalhuur_contract_uren, + obj_optie_aant, + obj_contract_aant, + art_optie_aant, + art_contract_aant +) +AS + WITH resiegoc -- Per maand/activiteit/gebruiker het aantal geboekte optie- en contract-uren! + AS ( SELECT resbes.mnd, + resbes.res_activiteit_omschrijving, + resbes.gebruiker, + SUM (resbez.aant) aant_res, + SUM (DECODE (resbez.res_status_fo_key, 1, ROUND (resbez.uren, 3), 0)) ou, + SUM (DECODE (resbez.res_status_fo_key, 2, ROUND (resbez.uren, 3), 0)) cu, + SUM (DECODE (objbez.res_status_fo_key, 1, ROUND (objbez.aant, 3), 0)) oobj, + SUM (DECODE (objbez.res_status_fo_key, 2, ROUND (objbez.aant, 3), 0)) cobj, + SUM (DECODE (artbez.res_status_fo_key, 1, ROUND (artbez.aant, 3), 0)) oart, + SUM (DECODE (artbez.res_status_fo_key, 2, ROUND (artbez.aant, 3), 0)) cart + FROM (SELECT DISTINCT TO_CHAR (p.mnd, 'yyyy-mm') mnd, + ra.res_activiteit_key, ra.res_activiteit_omschrijving, + afd.prs_afdeling_key gebruiker_key, afd.prs_afdeling_omschrijving gebruiker + FROM res_v_aanwezigrsv_ruimte rrr, res_activiteit ra, prs_perslid p, prs_afdeling afd, + (SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy'), LEVEL - 1) mnd FROM DUAL CONNECT BY LEVEL <= 36) p + WHERE rrr.res_activiteit_key = ra.res_activiteit_key + AND ra.res_activiteit_key = 10 -- Intern + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key -- Of res_rsv_ruimte_contact_key? + AND p.prs_afdeling_key = afd.prs_afdeling_key + UNION ALL + SELECT DISTINCT TO_CHAR (p.mnd, 'yyyy-mm') mnd, + ra.res_activiteit_key, ra.res_activiteit_omschrijving, + ud.fac_usrdata_key gebruiker_key, ud.fac_usrdata_omschr gebruiker + FROM res_v_aanwezigrsv_ruimte rrr, res_activiteit ra, res_v_aanwezigkenmerkwaarde tar, fac_usrdata ud, + (SELECT ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy'), LEVEL - 1) mnd FROM DUAL CONNECT BY LEVEL <= 36) p + WHERE rrr.res_activiteit_key = ra.res_activiteit_key + AND rrr.res_activiteit_key = 30 -- Extern + AND tar.res_kenmerk_key = 1 -- Verhuur tarief + AND rrr.res_rsv_ruimte_key = tar.res_rsv_ruimte_key + AND fac.safe_to_number (tar.res_kenmerkreservering_waarde) = ud.fac_usrdata_key) resbes, + ( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + p.prs_afdeling_key gebruiker_key, + rrr.res_status_fo_key, + COUNT ( * ) aant, + SUM ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24) uren + FROM res_v_aanwezigrsv_ruimte rrr, prs_perslid p + WHERE rrr.res_activiteit_key = 10 -- Intern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key -- Of res_rsv_ruimte_contact_key? + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + p.prs_afdeling_key, + rrr.res_status_fo_key + UNION ALL + SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde) gebruiker_key, + rrr.res_status_fo_key, + COUNT ( * ) aant, + SUM ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24) uren + FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigkenmerkwaarde tar + WHERE rrr.res_activiteit_key = 30 -- Extern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND tar.res_kenmerk_key = 1 -- Verhuur tarief + AND rrr.res_rsv_ruimte_key = tar.res_rsv_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde), + rrr.res_status_fo_key) resbez, + ( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + p.prs_afdeling_key gebruiker_key, + rrr.res_status_fo_key, + SUM (obj.aant) aant + FROM res_v_aanwezigrsv_ruimte rrr, prs_perslid p, + (SELECT rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_aantal aant + FROM res_v_aanwezigrsv_deel rrd + UNION ALL + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_aantal aant + FROM res_v_aanwezigrsv_artikel rra + WHERE EXISTS (SELECT 1 FROM res_artikel WHERE res_artikel_key = rra.res_artikel_key AND res_discipline_key = 52)) obj + WHERE rrr.res_activiteit_key = 10 -- Intern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key -- Of res_rsv_ruimte_contact_key? + AND rrr.res_rsv_ruimte_key = obj.res_rsv_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + p.prs_afdeling_key, + rrr.res_status_fo_key + UNION ALL + SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde) gebruiker_key, + rrr.res_status_fo_key, + SUM (obj.aant) aant + FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigkenmerkwaarde tar, + (SELECT rrd.res_rsv_ruimte_key, rrd.res_rsv_deel_aantal aant + FROM res_v_aanwezigrsv_deel rrd + UNION ALL + SELECT rra.res_rsv_ruimte_key, rra.res_rsv_artikel_aantal aant + FROM res_v_aanwezigrsv_artikel rra + WHERE EXISTS (SELECT 1 FROM res_artikel WHERE res_artikel_key = rra.res_artikel_key AND res_discipline_key = 52)) obj + WHERE rrr.res_activiteit_key = 30 -- Extern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND tar.res_kenmerk_key = 1 -- Verhuur tarief + AND rrr.res_rsv_ruimte_key = tar.res_rsv_ruimte_key + AND rrr.res_rsv_ruimte_key = obj.res_rsv_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde), + rrr.res_status_fo_key) objbez, + ( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + p.prs_afdeling_key gebruiker_key, + rrr.res_status_fo_key, + SUM (art.res_rsv_artikel_aantal) aant + FROM res_v_aanwezigrsv_ruimte rrr, prs_perslid p, + (SELECT * + FROM res_v_aanwezigrsv_artikel rra + WHERE EXISTS (SELECT 1 FROM res_artikel WHERE res_artikel_key = rra.res_artikel_key AND res_discipline_key != 52)) art + WHERE rrr.res_activiteit_key = 10 -- Intern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key -- Of res_rsv_ruimte_contact_key? + AND rrr.res_rsv_ruimte_key = art.res_rsv_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + p.prs_afdeling_key, + rrr.res_status_fo_key + UNION ALL + SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm') mnd, + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde) gebruiker_key, + rrr.res_status_fo_key, + SUM (art.res_rsv_artikel_aantal) aant + FROM res_v_aanwezigrsv_ruimte rrr, res_v_aanwezigkenmerkwaarde tar, + (SELECT * + FROM res_v_aanwezigrsv_artikel rra + WHERE EXISTS (SELECT 1 FROM res_artikel WHERE res_artikel_key = rra.res_artikel_key AND res_discipline_key != 52)) art + WHERE rrr.res_activiteit_key = 30 -- Extern + AND rrr.res_rsv_ruimte_dirtlevel = 0 + AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief + AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy') AND TRUNC (ADD_MONTHS (SYSDATE, 24), 'yyyy') -- T/m volgend jaar! + --AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6' -- TODO: Alleen werkdagen? + --AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot)) -- TODO: Alleen werkdagen? + AND tar.res_kenmerk_key = 1 -- Verhuur tarief + AND rrr.res_rsv_ruimte_key = tar.res_rsv_ruimte_key + AND rrr.res_rsv_ruimte_key = art.res_rsv_ruimte_key + GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm'), + rrr.res_activiteit_key, + fac.safe_to_number (tar.res_kenmerkreservering_waarde), + rrr.res_status_fo_key) artbez + WHERE resbes.mnd = resbez.mnd(+) + AND resbes.res_activiteit_key = resbez.res_activiteit_key(+) + AND resbes.gebruiker_key = resbez.gebruiker_key(+) + AND resbes.mnd = objbez.mnd(+) + AND resbes.res_activiteit_key = objbez.res_activiteit_key(+) + AND resbes.gebruiker_key = objbez.gebruiker_key(+) + AND resbes.mnd = artbez.mnd(+) + AND resbes.res_activiteit_key = artbez.res_activiteit_key(+) + AND resbes.gebruiker_key = artbez.gebruiker_key(+) + --AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)! + GROUP BY resbes.mnd, + resbes.res_activiteit_omschrijving, + resbes.gebruiker) + SELECT mnd, res_activiteit_omschrijving, gebruiker, + COALESCE (aant_res, 0), + COALESCE (ou, 0), + COALESCE (cu, 0), + COALESCE (oobj, 0), + COALESCE (cobj, 0), + COALESCE (oart, 0), + COALESCE (cart, 0) + FROM resiegoc; + ------ payload end ------ SET DEFINE OFF