FSN#14942
svn path=/Database/trunk/; revision=9945
This commit is contained in:
243
CAD/CAD_VIE.SRC
243
CAD/CAD_VIE.SRC
@@ -1,32 +1,8 @@
|
||||
#ifdef CAD // 22-05-1998 KTH
|
||||
|
||||
/* $History: CAD_VIE1.SRC $
|
||||
*
|
||||
* ***************** Version 31 *****************
|
||||
* User: Jgl Date: 29-07-08 Time: 13:17
|
||||
* Updated in $/Facilitor/SRC/SQL/CAD
|
||||
* FSN#13778 Thema's gelijktrekken
|
||||
*
|
||||
* ***************** Version 30 *****************
|
||||
* User: Jgl Date: 12-04-07 Time: 16:17
|
||||
* Updated in $/Facilitor/SRC/SQL/CAD
|
||||
* TUDE#12314 impliciete werkplekken
|
||||
*
|
||||
* ***************** Version 29 *****************
|
||||
* User: Jgl Date: 1/04/06 Time: 4:39p
|
||||
* Updated in $/Facilitor/SRC/SQL/CAD
|
||||
* SQLS 4.60
|
||||
*
|
||||
* ***************** Version 28 *****************
|
||||
* User: Pf Date: 4-11-05 Time: 16:56
|
||||
* Updated in $/Facilitor/SRC/SQL/CAD
|
||||
* FSN#1251
|
||||
*
|
||||
* ***************** Version 27 *****************
|
||||
* User: Pf Date: 27-10-05 Time: 16:10
|
||||
* Updated in $/Facilitor/SRC/SQL/CAD
|
||||
* FSN#1251
|
||||
/* CAD_VIE1.SRC
|
||||
*
|
||||
* $Revision: 32 $
|
||||
* $Modtime: 28-11-08 14:41 $
|
||||
*/
|
||||
|
||||
#include "comsql.h"
|
||||
@@ -187,19 +163,19 @@ CREATE_VIEW(cad_v_lpn_prs_werkplek_1, FAC_NORMAAL_PRIVILEGE) AS
|
||||
|
||||
|
||||
/* 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)
|
||||
|
||||
CREATE_VIEW(cad_v_label_bewoner, FAC_NORMAAL_PRIVILEGE)
|
||||
(alg_ruimte_key,
|
||||
waarde)
|
||||
|
||||
-- FSN#14942: afdelingen zijn geen bewoners meer
|
||||
CREATE_VIEW(cad_v_label_bewoner, 0)
|
||||
(alg_ruimte_key, waarde)
|
||||
AS
|
||||
/* Formatted on 2005/10/03 15:11 (Formatter Plus v4.8.5) */
|
||||
SELECT prs_w.prs_alg_ruimte_key, '[' || prs_a.prs_afdeling_naam || ']'
|
||||
FROM prs_v_aanwezigwerkplek prs_w, prs_v_aanwezigperslidwerkplek prs_pw, prs_afdeling prs_a
|
||||
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
|
||||
AND prs_pw.prs_afdeling_key IS NOT NULL
|
||||
AND prs_pw.prs_afdeling_key = prs_a.prs_afdeling_key
|
||||
AND prs_w.prs_werkplek_virtueel = 0
|
||||
UNION
|
||||
SELECT prs_w.prs_alg_ruimte_key,
|
||||
prs_p.prs_perslid_naam
|
||||
|| DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters)
|
||||
@@ -216,84 +192,93 @@ SELECT prs_w.prs_alg_ruimte_key, '[Vrij]'
|
||||
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;
|
||||
/
|
||||
|
||||
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_a.prs_afdeling_naam
|
||||
|| ']: '
|
||||
|| 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_AFDELING prs_a
|
||||
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
|
||||
AND prs_pw.prs_perslid_key IS NULL
|
||||
AND prs_pw.prs_afdeling_key = prs_a.prs_afdeling_key
|
||||
UNION
|
||||
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
|
||||
)
|
||||
)
|
||||
|| '%'
|
||||
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;
|
||||
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 (*)
|
||||
@@ -335,7 +320,7 @@ AS
|
||||
wpopp) vdata;
|
||||
|
||||
CREATE_VIEW(CAD_V_THEMA_WPOPP, 0)
|
||||
(ALG_RUIMTE_KEY, WAARDE)
|
||||
(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
|
||||
@@ -343,6 +328,16 @@ SELECT wp.prs_alg_ruimte_key, r.alg_ruimte_bruto_vloeropp / COUNT (prs_werkplek_
|
||||
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, FAC_NORMAAL_PRIVILEGE)
|
||||
(alg_ruimte_key, waarde)
|
||||
AS
|
||||
@@ -351,18 +346,28 @@ AS
|
||||
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
|
||||
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key;
|
||||
|
||||
|
||||
-- Ruimte
|
||||
CREATE_VIEW(cad_v_thema_srtruimte,FAC_NORMAAL_PRIVILEGE)
|
||||
(alg_ruimte_key, waarde)
|
||||
-- Ruimtesoort
|
||||
CREATE_VIEW(cad_v_thema_srtruimte, 0)
|
||||
(alg_ruimte_key, waarde, waarde_key)
|
||||
AS
|
||||
SELECT r.alg_ruimte_key, sr.alg_srtruimte_omschrijving
|
||||
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,FAC_NORMAAL_PRIVILEGE)
|
||||
CREATE_VIEW(cad_v_thema_vloerafwerking, 0)
|
||||
(alg_ruimte_key, waarde)
|
||||
AS
|
||||
SELECT r.alg_ruimte_key,
|
||||
|
||||
Reference in New Issue
Block a user