#ifdef CAD // 22-05-1998 KTH /* CAD_VIE.SRC * $Revision: 36 $ * $Modtime: 6-09-10 15:21 $ */ CREATE_VIEW(cad_v_cad_aanwezigtekening,0) AS SELECT * FROM cad_tekening C_T WHERE cad_tekening_verwijder IS NULL AND (C_T.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline) OR C_T.ins_discipline_key IS NULL); CREATE_VIEW(cad_v_cad_tekening_gegevens,0) (cad_tekening_key, alg_locatie_key, alg_locatie_code, alg_gebouw_key, alg_gebouw_code, alg_verdieping_key, alg_verdieping_omschrijving, ins_discipline_key, ins_discipline_omschrijving) AS SELECT C_T.cad_tekening_key, C_T.alg_locatie_key, ALG_L.alg_locatie_code, ALG_G.alg_gebouw_key, ALG_G.alg_gebouw_code, C_T.alg_verdieping_key, ALG_V.alg_verdieping_omschrijving, C_T.ins_discipline_key, INS_D.ins_discipline_omschrijving FROM alg_locatie ALG_L, alg_verdieping ALG_V, alg_gebouw ALG_G, ins_discipline INS_D, cad_v_cad_aanwezigtekening C_T WHERE C_T.alg_locatie_key = ALG_L.alg_locatie_key AND C_T.alg_verdieping_key = ALG_V.alg_verdieping_key (+) AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key (+) AND C_T.ins_discipline_key = INS_D.ins_discipline_key (+); CREATE_VIEW(cad_v_plattegrond,0) AS SELECT * FROM cad_tekening WHERE cad_tekening_verwijder IS NULL AND UPPER(cad_tekening_type) = 'P'; CREATE_VIEW(cad_v_contour,0) AS SELECT * FROM cad_tekening WHERE cad_tekening_verwijder IS NULL AND UPPER(cad_tekening_type) = 'C'; CREATE_VIEW(cad_v_discipline,0) AS SELECT * FROM cad_tekening WHERE cad_tekening_verwijder IS NULL AND UPPER(cad_tekening_type) = 'D'; /* mapping van labels in tekening met ruimtenr in database * let op: de applicatie kan van een specifieke variant gebruikmaken * deze heet dan XXXX_V_SYNC.. */ CREATE_VIEW(cad_v_sync_alg_ruimte,0) (alg_ruimte_key, alg_verdieping_key, cadlabel ) AS SELECT R.alg_ruimte_key, R.alg_verdieping_key, R.alg_ruimte_nr FROM alg_v_aanwezigruimte R; CREATE_VIEW(cad_v_sync_alg_terrein,0) (alg_terreinsector_key, alg_locatie_key, cadlabel ) AS SELECT t.alg_terreinsector_key, t.alg_locatie_key, t.alg_terreinsector_code FROM alg_v_aanwezigterreinsector t; /* View met ALLE tekeningen, ongeacht de autorisatie; minimale kolommen, gebruikt in CAD_PAC.SRC */ CREATE_VIEW(cad_v_cad_tekening,0) AS SELECT ins_discipline_key, alg_locatie_key, alg_verdieping_key, cad_tekening_type, cad_tekening_filenaam FROM cad_tekening C_T WHERE cad_tekening_verwijder IS NULL; /* 29-06-1998 KTH LOG#1905 * View CAD_V_INS_DEEL wordt door de AutoCAD Map-user FCLTCAD geraadpleegd. * Bij die user heet de SYNONYM ernaar toe anders (zie CAD_ROL). */ CREATE_VIEW(cad_v_ins_deel,0) (ins_deel_key, ins_deel_cadlabel, ins_srtdeel_omschrijving, ins_deel_oppervlak, ins_deel_omtrek ) AS SELECT D.ins_deel_key, D.ins_deel_omschrijving, SD.ins_srtdeel_omschrijving, NVL(TO_CHAR(D.ins_deel_oppervlak),'-')||' m2', NVL(TO_CHAR(D.ins_deel_omtrek),'-')||' m' FROM all_v_aanwezigdeel D, ins_srtdeel SD WHERE SD.ins_srtdeel_key=D.ins_srtdeel_key; CREATE_VIEW(cad_v_lpn_ins_deel_2,0) AS SELECT D.ins_deel_key, ins_srtkenmerk_omschrijving, KD.ins_kenmerkdeel_waarde ||' '|| SK.ins_srtkenmerk_dimensie INS_KENMERKDEEL_WAARDE2 FROM ins_srtkenmerk SK, ins_kenmerk K, ins_kenmerkdeel KD, ins_deel D WHERE SK.ins_srtkenmerk_key=K.ins_srtkenmerk_key AND K.ins_kenmerk_key=KD.ins_kenmerk_key AND KD.ins_deel_key=D.ins_deel_key AND KD.ins_kenmerkdeel_verwijder IS NULL; CREATE_VIEW(cad_v_lpn_ins_deel_1,0) AS SELECT D.ins_deel_key, SD.ins_srtdeel_omschrijving, D.ins_deel_omschrijving FROM ins_srtdeel SD, ins_deel D WHERE D.ins_srtdeel_key = SD.ins_srtdeel_key; CREATE_VIEW(cad_v_prs_werkplek,0) (prs_werkplek_key, prs_werkplek_cadlabel, prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_werkplek_opp ) AS SELECT W.prs_werkplek_key, W.prs_werkplek_volgnr, W.prs_werkplek_volgnr, W.prs_werkplek_omschrijving, W.prs_werkplek_opp /* Alleen een waarde indien prs_werkplek_vastopp 1 is, anders te traag? */ FROM prs_v_aanwezigwerkplek W; CREATE_VIEW(cad_v_lpn_prs_werkplek_1,0) AS SELECT W.prs_werkplek_key, W.prs_werkplek_volgnr, W.prs_werkplek_omschrijving FROM prs_v_aanwezigwerkplek W; /* Standard thema/label views */ // Zowel label-views als thema-views hebben de kolommen alg_ruimte_key en waarde // Feature: Sommige thema views kunnen updatable zijn! // In dat geval moet de kolom waarde_key ook aanwezig zijn, en zal de code met // een UPDATE (drop) of een INSERT (shift-drop) opereren. Om die te ondersteunen // zal meestal een INSTEAD OF trigger moeten worden gedefinieerd, dat moet // dan ook hier gebeuren. Let op de naamgevingsconventies: cad_v_thema_x // heeft trigger cad_t_thema_x_i_iu (of _i_i resp _i_u) -- FSN#14942: afdelingen zijn geen bewoners meer CREATE_VIEW(cad_v_label_bewoner, 0) (alg_ruimte_key, waarde) AS SELECT prs_w.prs_alg_ruimte_key, prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')') FROM prs_v_aanwezigwerkplek prs_w, prs_v_aanwezigperslidwerkplek prs_pw, prs_perslid prs_p WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key AND prs_w.prs_werkplek_virtueel = 0 UNION SELECT prs_w.prs_alg_ruimte_key, '[Vrij]' FROM prs_v_aanwezigwerkplek prs_w, prs_v_werkplek_bezetting prs_wb WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key AND prs_w.prs_werkplek_virtueel = 0 AND prs_wb.prs_werkplek_bezetting < 100; -- Toont alle afdelingen die aan een ruimte gekoppeld zijn CREATE_VIEW(cad_v_label_afdelingen, 0) (alg_ruimte_key, waarde) AS SELECT alg_ruimte_key, prs_afdeling_naam FROM prs_ruimteafdeling ra, prs_v_afdeling d WHERE ra.prs_afdeling_key = d.prs_afdeling_key; -- Toont de afdeling die aan een ruimte gekoppeld is, en Meerdere! indien meerdere. CREATE_VIEW(cad_v_thema_afdelingen, 0) (alg_ruimte_key, waarde, waarde_key) AS SELECT x.alg_ruimte_key, DECODE (x.aantal, 1, SUBSTR (x.sp, 1, 60), 'Meerdere!'), DECODE (x.aantal, 1, x.sp_key, NULL) FROM (SELECT ra.alg_ruimte_key, MIN (d.prs_afdeling_naam) sp, MIN (d.prs_afdeling_key) sp_key, COUNT (ra.prs_afdeling_key) aantal FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling d WHERE ra.prs_afdeling_key = d.prs_afdeling_key GROUP BY ra.alg_ruimte_key) x; -- Update is: oude situatie weg, nieuwe wordt gedefinieerd. -- Insert is: toevoegen aan oude situatie CREATE_TRIGGER(cad_t_thema_afdelingen_i_iu) INSTEAD OF INSERT OR UPDATE ON cad_v_thema_afdelingen BEGIN IF UPDATING -- oude weggooien THEN DELETE FROM prs_ruimteafdeling WHERE alg_ruimte_key = :new.alg_ruimte_key AND prs_afdeling_key <> :new.waarde_key; END IF; BEGIN INSERT INTO prs_ruimteafdeling (alg_ruimte_key, prs_afdeling_key) VALUES (:new.alg_ruimte_key, :new.waarde_key); EXCEPTION WHEN DUP_VAL_ON_INDEX -- Hij was al aanwezig THEN NULL; END; END; / // De afdelingsbezetting maar dan gebaseerd op de afdelingen // van de de personen die op de werkplekken zitten CREATE_VIEW(cad_v_thema_prsafdelingen, 0) (alg_ruimte_key, waarde) AS SELECT wp.prs_alg_ruimte_key, d.prs_afdeling_naam FROM prs_werkplek wp, prs_perslidwerkplek pwp, prs_perslid p, prs_afdeling d WHERE d.prs_afdeling_key = p.prs_afdeling_key AND pwp.prs_perslid_key = p.prs_perslid_key AND pwp.prs_werkplek_key = wp.prs_werkplek_key; CREATE_VIEW(cad_v_label_bewonerwp, 0) (alg_ruimte_key,waarde) AS SELECT DISTINCT prs_alg_ruimte_key, waarde FROM (SELECT prs_w.prs_alg_ruimte_key, CHR (1) || prs_w.prs_werkplek_volgnr || ' ' || prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')') || ': ' || TO_CHAR (NVL (prs_pw.prs_perslidwerkplek_bezetting, 0)) || '%' waarde FROM prs_werkplek prs_w, (SELECT * FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_verwijder IS NULL) prs_pw, prs_perslid prs_p WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key UNION SELECT prs_w.prs_alg_ruimte_key, CHR (1) || prs_w.prs_werkplek_volgnr || ' Vrij: ' || TO_CHAR (100 - NVL (SUM (prs_wb.prs_perslidwerkplek_bezetting), 0)) || '%' FROM prs_werkplek prs_w, (SELECT * FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_verwijder IS NULL) prs_wb WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key(+) AND prs_werkplek_verwijder IS NULL GROUP BY prs_w.prs_alg_ruimte_key, prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr HAVING SUM (NVL (prs_wb.prs_perslidwerkplek_bezetting, 0)) < 100) DATA / CREATE_VIEW(CAD_V_THEMA_AANTALWP, 0) (ALG_RUIMTE_KEY, WAARDE) AS SELECT wp.prs_alg_ruimte_key, COUNT (*) FROM PRS_WERKPLEK wp WHERE wp.prs_werkplek_verwijder IS NULL GROUP BY prs_alg_ruimte_key; / CREATE_VIEW(cad_v_label_werkplekken,0) (alg_ruimte_key, waarde, highlight) AS SELECT prs_alg_ruimte_key, CHR (1) || prs_werkplek_volgnr || ' (' || TO_CHAR (wpopp, 'FM9999.0') || 'm2 ' || TO_CHAR (bez) || '%)' waarde, DECODE (SIGN (bez - 100), 1, 2, 0 ) highlight FROM (SELECT prs_w.prs_alg_ruimte_key, prs_w.prs_werkplek_volgnr, SUM (NVL (prs_pw.prs_perslidwerkplek_bezetting, 0)) bez, wpopp FROM PRS_WERKPLEK prs_w, prs_v_werkplek_oppervlakte pwo, (SELECT * FROM PRS_PERSLIDWERKPLEK WHERE prs_perslidwerkplek_verwijder IS NULL) prs_pw WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key(+) AND pwo.prs_werkplek_key(+) = prs_w.prs_werkplek_key AND prs_w.prs_werkplek_verwijder IS NULL GROUP BY prs_w.prs_alg_ruimte_key, prs_w.prs_werkplek_volgnr, 'prs_werkplek', prs_w.prs_werkplek_key, wpopp) vdata; CREATE_VIEW(CAD_V_THEMA_WPOPP, 0) (alg_ruimte_key, waarde) AS SELECT wp.prs_alg_ruimte_key, r.alg_ruimte_bruto_vloeropp / COUNT (prs_werkplek_key) FROM PRS_WERKPLEK wp, ALG_RUIMTE r WHERE wp.prs_werkplek_verwijder IS NULL AND wp.prs_alg_ruimte_key = r.alg_ruimte_key GROUP BY wp.prs_alg_ruimte_key, r.alg_ruimte_bruto_vloeropp / CREATE_VIEW(cad_v_thema_bezetmismatch, 0) (alg_ruimte_key, waarde) AS SELECT ra.alg_ruimte_key, 'mismatch' FROM prs_ruimteafdeling ra, prs_werkplek wp, prs_perslidwerkplek pwp, prs_perslid p WHERE pwp.prs_perslid_key = p.prs_perslid_key AND pwp.prs_werkplek_key = wp.prs_werkplek_key AND wp.prs_alg_ruimte_key = ra.alg_ruimte_key AND ra.prs_afdeling_key <> p.prs_afdeling_key; CREATE_VIEW(cad_v_label_srtruimteopp,0) (alg_ruimte_key, waarde) AS SELECT r.alg_ruimte_key, sr.alg_srtruimte_omschrijving || ' (' || r.alg_ruimte_bruto_vloeropp || ' m2)' FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; -- Ruimtesoort CREATE_VIEW(cad_v_thema_srtruimte, 0) (alg_ruimte_key, waarde, waarde_key) AS SELECT r.alg_ruimte_key, sr.alg_srtruimte_omschrijving, r.alg_srtruimte_key FROM alg_v_aanwezigruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+); CREATE_TRIGGER(cad_t_thema_srtruimte_i_iu) INSTEAD OF INSERT OR UPDATE ON cad_v_thema_srtruimte FOR EACH ROW BEGIN UPDATE alg_ruimte SET alg_srtruimte_key = :new.waarde_key WHERE alg_ruimte_key = :new.alg_ruimte_key; END; / -- Bezetting -- Afdelingen CREATE_VIEW(cad_v_thema_vloerafwerking, 0) (alg_ruimte_key, waarde) AS SELECT r.alg_ruimte_key, va.fac_usrdata_omschr FROM alg_ruimte r, (SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr FROM alg_onrgoedkenmerk ok, fac_usrdata ud, alg_refkenmerk rk, alg_kenmerk k, alg_v_aanwezigruimte rr WHERE rk.fac_usrtab_key = ud.fac_usrtab_key AND k.alg_refkenmerk_key = rk.alg_refkenmerk_key AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde AND k.alg_kenmerk_key = 2 AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va WHERE va.alg_ruimte_key = r.alg_ruimte_key; --Meldingen CREATE_VIEW(cad_v_thema_openmeldingen,0) (alg_ruimte_key, waarde) AS SELECT r.alg_ruimte_key, COUNT (mld_melding_key) FROM alg_ruimte r, mld_melding m WHERE m.mld_alg_onroerendgoed_keys = r.alg_ruimte_key AND m.mld_melding_status IN (2, 3, 4, 7) GROUP BY r.alg_ruimte_key; CREATE_VIEW(cad_v_label_bewoner2,0) (alg_ruimte_key, waarde) AS SELECT alg_ruimte_key, prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters ) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')' ) || '-' || CASE WHEN aantalwp > 1 THEN norm_verband || '/' ELSE '' END || prs_p.prs_perslid_dienstverband || ' FTE' FROM prs_perslid prs_p, prs_v_norm_verband pnv WHERE pnv.prs_perslid_key = prs_p.prs_perslid_key; CREATE OR REPLACE FORCE VIEW PRJ_V_CAD_LABEL_BEWONERWPE ( PRJ_WERKPLEK_KEY, WAARDE, HIGHLIGHT ) AS SELECT DISTINCT prj_werkplek_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1) FROM (SELECT prj_r.prj_scenario_key, prs_w.prj_werkplek_key, prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')') || ': ' || TO_CHAR (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0)) || '%' waarde, 'PRJ_WERKPLEK' label_soort, prs_pw.prj_werkplek_key label_key FROM PRJ_RUIMTE prj_r, PRJ_WERKPLEK prs_w, (SELECT * FROM PRJ_PERSLIDWERKPLEK WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw, PRS_PERSLID prs_p WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key UNION SELECT -1, prs_w.prj_werkplek_key, ' Vrij: ' || TO_CHAR(100 - NVL ( SUM (prs_wb.prj_perslidwerkplek_bezetting), 0)) || '%', 'PRJ_WERKPLEK', prs_w.prj_werkplek_key FROM PRJ_WERKPLEK prs_w, (SELECT * FROM PRJ_PERSLIDWERKPLEK WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+) AND prj_werkplek_verwijder IS NULL GROUP BY prs_w.prj_werkplek_key, prs_w.prj_werkplek_key, prs_w.prj_werkplek_volgnr HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0)) < 100) DATA, PRJ_SELECTIE ps WHERE ps.prj_scenario_key(+) = DATA.prj_scenario_key AND ps.prj_selectie_tabelnaam(+) = label_soort AND ps.prj_selectie_tabelkey(+) = label_key; REGISTERRUN('$Workfile: CAD_VIE.SRC $','$Revision: 36 $') #endif // CAD