diff --git a/STCH/stch.sql b/STCH/stch.sql index c93d49a84..8f2fab862 100644 --- a/STCH/stch.sql +++ b/STCH/stch.sql @@ -838,6 +838,160 @@ AS f.fac_functie_code) ORDER BY p.prs_perslid_naam; +-- +-- GRAFISCH +-- +CREATE OR REPLACE VIEW stch_v_thema_srtruimte +( + alg_ruimte_key, + waarde, + waarde_key +) +AS + SELECT DISTINCT + r.alg_ruimte_key, + COALESCE ( + (SELECT fac_usrdata_omschr + FROM fac_usrdata + WHERE fac_usrtab_key = 221 -- omzettingstabel soortruimte naar omschrijving + AND alg_srtruimte_omschrijving LIKE + fac_usrdata_code || '%'), + 'onbekend'), + NULL alg_srtruimte_key + FROM alg_v_aanwezigruimte r, alg_srtruimte sr + WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; + + +-- views ter ondersteuning aan Facilitor graphics +-- sleepbaar thema om huurder aan thema te koppelen. +CREATE OR REPLACE VIEW stch_v_thema_ruimte_huurder ( + alg_ruimte_key, + waarde, + waarde_key + ) +AS + SELECT x.alg_ruimte_key, + DECODE (y.aantal, + NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), + 1, SUBSTR (y.sp, 1, 60), + 'Meer dan 1 huurder!'), + DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) + FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar + FROM alg_v_aanwezigruimte r, alg_srtruimte sr + WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x + LEFT JOIN + (SELECT ra.alg_ruimte_key, + MIN (a.prs_afdeling_naam1) sp, + MIN (a.prs_afdeling_key) sp_key, + COUNT (ra.prs_afdeling_key) aantal + FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a + WHERE ra.prs_afdeling_key = a.prs_afdeling_key + AND a.prs_afdeling_naam <> 'Onbekend' + GROUP BY ra.alg_ruimte_key) y + ON x.alg_ruimte_key = y.alg_ruimte_key + UNION ALL + SELECT NULL, substr(a.prs_afdeling_naam1,1,60), a.prs_afdeling_key + FROM prs_v_aanwezigafdeling a + WHERE NOT EXISTS + (SELECT ra.prs_afdeling_key + FROM prs_ruimteafdeling ra + WHERE ra.prs_ruimteafdeling_verwijder IS NULL + AND ra.prs_afdeling_key = a.prs_afdeling_key) + AND a.prs_afdeling_naam <> 'Onbekend'; + +CREATE OR REPLACE TRIGGER stch_t_thema_ruimte_die_i_iu + INSTEAD OF INSERT OR UPDATE + ON STCH_V_THEMA_RUIMTE_HUURDER +DECLARE + verhuurbaar NUMBER; +BEGIN + IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)! + THEN + DELETE FROM prs_ruimteafdeling + WHERE alg_ruimte_key = :new.alg_ruimte_key + AND prs_afdeling_key <> :new.waarde_key; + END IF; + + BEGIN + SELECT prs_verhuurbaar + INTO verhuurbaar + FROM alg_ruimte r, alg_srtruimte sr + WHERE r.alg_ruimte_key = :new.alg_ruimte_key + AND r.alg_srtruimte_key = sr.alg_srtruimte_key; + + IF :new.waarde_key <> -1 AND verhuurbaar = 1 + THEN + INSERT INTO prs_ruimteafdeling + ( + alg_ruimte_key, prs_afdeling_key + ) + VALUES (:new.alg_ruimte_key, :new.waarde_key); + END IF; + EXCEPTION + WHEN DUP_VAL_ON_INDEX -- was al aanwezig + THEN + NULL; + END; +END; +/ + +-- views ter ondersteuning aan Facilitor graphics +-- Niet sleepbaar thema om huurder op hoogste afdelingsniveau te bekijken. +CREATE OR REPLACE VIEW stch_v_thema_ruimte_huurder1 ( + alg_ruimte_key, + waarde, + waarde_key + ) +AS + SELECT x.alg_ruimte_key, + DECODE (y.aantal, + NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), + 1, SUBSTR (y.sp, 1, 60), + 'Meer dan 1 huurder!'), + DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) + FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar + FROM alg_v_aanwezigruimte r, alg_srtruimte sr + WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x + LEFT JOIN + (SELECT ra.alg_ruimte_key, + MIN (a.prs_afdeling_naam1) sp, + MIN (a.prs_afdeling_key) sp_key, + COUNT (ra.prs_afdeling_key) aantal + FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab + WHERE ra.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = a.prs_afdeling_key + AND a.prs_afdeling_naam <> 'Onbekend' + GROUP BY ra.alg_ruimte_key) y + ON x.alg_ruimte_key = y.alg_ruimte_key; + +-- views ter ondersteuning aan Facilitor graphics +-- Niet sleepbaar thema om inzicht te krijgen in de leegstand situatie +CREATE OR REPLACE VIEW stch_v_thema_leegstand ( + alg_ruimte_key, + waarde, + waarde_key + ) +AS + SELECT x.alg_ruimte_key, + DECODE (y.aantal, + NULL, DECODE(verhuurbaar, 1, '[Leegstand]', '[Niet verhuurbaar]'), + '[Verhuurd]'), + DECODE (y.aantal, NULL, -1, 1, y.sp_key, NULL) + FROM (SELECT r.alg_ruimte_key, sr.prs_verhuurbaar verhuurbaar + FROM alg_v_aanwezigruimte r, alg_srtruimte sr + WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key) x + LEFT JOIN + (SELECT ra.alg_ruimte_key, + MIN (a.prs_afdeling_naam1) sp, + MIN (a.prs_afdeling_key) sp_key, + COUNT (ra.prs_afdeling_key) aantal + FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling a, prs_v_afdeling_boom ab + WHERE ra.prs_afdeling_key = ab.prs_afdeling_key + AND ab.prs_afdeling_key1 = a.prs_afdeling_key + AND a.prs_afdeling_naam <> 'Onbekend' + GROUP BY ra.alg_ruimte_key) y + ON x.alg_ruimte_key = y.alg_ruimte_key; + ------ payload end ------ SET DEFINE OFF