TAYL#78713 -- Implementatie Facilitor bij Taylor en Wessing - diverse views en labels o.a. tbv graphics werkplekken reserveren

svn path=/Customer/trunk/; revision=61868
This commit is contained in:
Jos Migo
2023-09-21 14:26:10 +00:00
parent 2d2cdd8213
commit 0e4f35ef44

View File

@@ -48,9 +48,190 @@ AS
ORDER BY prs_bedrijf_naam
;
------------------------------
--- AUTOCAD-THEMA'S ----------
------------------------------
-- Lijst van Locatieleiders (tbv domeinview)
CREATE OR REPLACE VIEW tayl_v_medewerkers
(
PRS_PERSLID_KEY,
NAAM,
AFDELING
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam -- || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam -- || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
a.prs_afdeling_naam2
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 6 -- bedrijfs_key TAYL
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
----------------------------------------
--- AUTOCAD-THEMA'S en LABELS ----------
----------------------------------------
-- Cust-label tekst bij werkplekreserveringen
--- Op basis van cad_v_label_deel_reservering aangevuld met hulpview tayl_v_label_werkplek_info om de objecten in tekening (wel/niet reserveerbaar) aan te vullen met informatie uit object-kenmerken (vast plek van... en werkplek voor alleen laptops)
-- hulpview...
CREATE OR REPLACE VIEW tayl_v_label_werkplek_info
(
INS_DEEL_KEY,
INS_DEEL_UPPER,
RESERVEERBAAR,
WAARDE
)
AS
SELECT isd.ins_deel_key,
isd.ins_deel_upper,
DECODE(kw.reserveerbaar, NULL, 'nee', 'ja')
reserveerbaar,
CASE WHEN isd.ins_srtdeel_key = 81 THEN '' -- leeg bureau...
WHEN isd.ins_srtdeel_key = 41 AND kw.reserveerbaar IS NULL AND kw.vaste_werkplek_van IS NOT NULL THEN kw.vaste_werkplek_van -- vast plek van...
WHEN isd.ins_srtdeel_key = 41 AND kw.reserveerbaar IS NOT NULL AND kw.laptop_werkplek = 62 THEN 'laptop-plek' -- reserveerbare plek voor alleen laptop (key = 62)
ELSE NULL
END
waarde
FROM ins_v_aanwezigdeel isd,
(SELECT d.ins_deel_key,
FLX.getdomeinwaarde (61,FLX.getflex('INS', 63, d.ins_deel_key))
vaste_werkplek_van,
FLX.getflex('INS', 62, d.ins_deel_key) -- key 62 is laptop-werkplek
laptop_werkplek,
FLX.getflex('INS', 64, d.ins_deel_key)
werkplek_info,
(SELECT max(rd.res_deel_key) FROM res_deel rd WHERE rd.res_ins_deel_key = d.ins_deel_key AND rd.res_deel_verwijder IS NULL AND rd.res_discipline_key = 101 )
reserveerbaar
FROM ins_deel d) kw
WHERE isd.ins_discipline_key IN (81) -- werkplekken
AND isd.ins_deel_key = kw.ins_deel_key;
CREATE OR REPLACE VIEW tayl_v_label_deel_res_datum
(
fclt_f_datum,
ins_deel_key,
res_deel_omschrijving,
waarde1,
waarde,
waarde3,
waarde_html,
waarde_html2
)
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datums.datum
fclt_f_datum,
isd.res_ins_deel_key
ins_deel_key,
res_deel_omschrijving,
DECODE (naam, NULL, v.waarde, '') ||
CHR (10)
|| LISTAGG (
DECODE (
naam,
NULL, '',
'[s75]'
|| naam
|| ' ('
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| '-'
|| DECODE (TRUNC (res_rsv_deel_tot),
TRUNC (res_rsv_deel_van), TO_CHAR (res_rsv_deel_tot, 'HH24:MI'),
TO_CHAR (res_rsv_deel_tot, 'DD-MM-YYYY HH24:MI'))
|| ')'),
CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde1,
DECODE (naam, NULL, v.waarde, '') ||
CHR (10)
|| LISTAGG (
DECODE (naam,
NULL, '',
'[s75]' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam),
CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde2,
DECODE (naam, NULL, v.waarde, '') ||
CHR (10)
|| LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde3,
LISTAGG (
DECODE (
naam,
NULL, v.waarde,
'<span class="body">'
|| v.waarde || ' '
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| ' '
|| naam
|| '</span>'),
'<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde_html,
LISTAGG (DECODE (naam, NULL, v.waarde, '<span class="body">' || naam || '</span>'), '<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde_html2
FROM res_v_aanwezigdeel isd,
datums,
(SELECT datum,
res_ins_deel_key,
DECODE (p.prs_perslid_visibility,
1, pf.prs_perslid_naam_friendly,
a.prs_afdeling_omschrijving)
naam,
res_rsv_deel_van,
res_rsv_deel_tot
FROM res_v_aanwezigdeel r,
res_v_aanwezigrsv_deel rrd,
res_rsv_ruimte rrr,
prs_v_perslid_fullnames pf,
prs_perslid p,
prs_afdeling a,
datums
WHERE r.res_deel_key = rrd.res_deel_key
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND datum + 1 >= res_rsv_deel_van
AND datum < res_rsv_deel_tot ) res, -- Bezet
tayl_v_label_werkplek_info v
WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+)
AND isd.res_ins_deel_key = v.ins_deel_key
GROUP BY datums.datum, isd.res_ins_deel_key, res_deel_omschrijving, v.waarde, naam
UNION -- Voor alle NIET-reserveerbare objecten in de tekening de extra info erbij halen
SELECT datums.datum
fclt_f_datum,
v.ins_deel_key,
v.ins_deel_upper,
v.waarde waarde1,
v.waarde waarde,
v.waarde waarde3,
v.waarde waarde_html,
v.waarde waarde_html2
FROM tayl_v_label_werkplek_info v, datums
WHERE v.reserveerbaar = 'nee'
GROUP BY datums.datum, v.ins_deel_key, v.ins_deel_upper, v.waarde
;
CREATE OR REPLACE VIEW tayl_v_thema_vloersoort
(
@@ -160,6 +341,134 @@ AS -- Op rappel-datum naar de Beheerder/Administrateur sturen
--- RAPPORTAGES ---------------
-------------------------------
CREATE OR REPLACE VIEW tayl_v_medewerkers_werktijden
(
PRS_PERSLID_KEY,
PRS_PERSLID_NAAM,
PRS_PERSLID_AFDELING,
MAANDAG,
MAANDAG_LOCATIE,
DINSDAG,
DINSDAG_LOCATIE,
WOENSDAG,
WOENSDAG_LOCATIE,
DONDERDAG,
DONDERDAG_LOCATIE,
VRIJDAG,
VRIJDAG_LOCATIE,
WERKWEEK_TOELICHTING
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
a.prs_afdeling_naam2,
CASE WHEN kw.ma_ochtend IS NULL and kw.ma_middag IS NULL THEN NULL
WHEN kw.ma_ochtend IS NOT NULL and kw.ma_middag IS NULL THEN 'ochtend'
WHEN kw.ma_ochtend IS NULL and kw.ma_middag IS NOT NULL THEN 'middag'
WHEN kw.ma_ochtend IS NOT NULL and kw.ma_middag IS NOT NULL THEN 'hele dag'
ELSE NULL
END
maandag,
CASE WHEN kw.ma_ochtend IS NOT NULL OR kw.ma_middag IS NOT NULL THEN kw.ma_locatie
ELSE NULL
END
maandag_locatie,
CASE WHEN kw.di_ochtend IS NULL and kw.di_middag IS NULL THEN NULL
WHEN kw.di_ochtend IS NOT NULL and kw.di_middag IS NULL THEN 'ochtend'
WHEN kw.di_ochtend IS NULL and kw.di_middag IS NOT NULL THEN 'middag'
WHEN kw.di_ochtend IS NOT NULL and kw.di_middag IS NOT NULL THEN 'hele dag'
ELSE NULL
END
dinsdag,
CASE WHEN kw.di_ochtend IS NOT NULL OR kw.di_middag IS NOT NULL THEN kw.di_locatie
ELSE NULL
END
dinsdag_locatie,
CASE WHEN kw.wo_ochtend IS NULL and kw.wo_middag IS NULL THEN NULL
WHEN kw.wo_ochtend IS NOT NULL and kw.wo_middag IS NULL THEN 'ochtend'
WHEN kw.wo_ochtend IS NULL and kw.wo_middag IS NOT NULL THEN 'middag'
WHEN kw.wo_ochtend IS NOT NULL and kw.wo_middag IS NOT NULL THEN 'hele dag'
ELSE NULL
END
woensdag,
CASE WHEN kw.wo_ochtend IS NOT NULL OR kw.wo_middag IS NOT NULL THEN kw.wo_locatie
ELSE NULL
END
woensdag_locatie,
CASE WHEN kw.do_ochtend IS NULL and kw.do_middag IS NULL THEN NULL
WHEN kw.do_ochtend IS NOT NULL and kw.do_middag IS NULL THEN 'ochtend'
WHEN kw.do_ochtend IS NULL and kw.do_middag IS NOT NULL THEN 'middag'
WHEN kw.do_ochtend IS NOT NULL and kw.do_middag IS NOT NULL THEN 'hele dag'
ELSE NULL
END
donderdag,
CASE WHEN kw.do_ochtend IS NOT NULL OR kw.do_middag IS NOT NULL THEN kw.do_locatie
ELSE NULL
END
donderdag_locatie,
CASE WHEN kw.vr_ochtend IS NULL and kw.vr_middag IS NULL THEN NULL
WHEN kw.vr_ochtend IS NOT NULL and kw.vr_middag IS NULL THEN 'ochtend'
WHEN kw.vr_ochtend IS NULL and kw.vr_middag IS NOT NULL THEN 'middag'
WHEN kw.vr_ochtend IS NOT NULL and kw.vr_middag IS NOT NULL THEN 'hele dag'
ELSE NULL
END
vrijdag,
CASE WHEN kw.vr_ochtend IS NOT NULL OR kw.vr_middag IS NOT NULL THEN kw.vr_locatie
ELSE NULL
END
vrijdag_locatie,
kw.werkweek_toelichting
FROM
prs_perslid p,
prs_v_afdeling a,
prs_bedrijf b,
prs_srtperslid sp,
(SELECT p.prs_perslid_key,
FLX.getflex('PRS',1000, p.prs_perslid_key, 'P')
werkweek_toelichting,
FLX.getflex('PRS',1041, p.prs_perslid_key, 'P')
ma_ochtend,
FLX.getflex('PRS',1051, p.prs_perslid_key, 'P')
ma_middag,
FLX.getdomeinwaarde (81, FLX.getflex('PRS',1056, p.prs_perslid_key, 'P'))
ma_locatie,
FLX.getflex('PRS',1042, p.prs_perslid_key, 'P')
di_ochtend,
FLX.getflex('PRS',1052, p.prs_perslid_key, 'P')
di_middag,
FLX.getdomeinwaarde (81, FLX.getflex('PRS',1057, p.prs_perslid_key, 'P'))
di_locatie,
FLX.getflex('PRS',1043, p.prs_perslid_key, 'P')
wo_ochtend,
FLX.getflex('PRS',1053, p.prs_perslid_key, 'P')
wo_middag,
FLX.getdomeinwaarde (81, FLX.getflex('PRS',1058, p.prs_perslid_key, 'P'))
wo_locatie,
FLX.getflex('PRS',1044, p.prs_perslid_key, 'P')
do_ochtend,
FLX.getflex('PRS',1054, p.prs_perslid_key, 'P')
do_middag,
FLX.getdomeinwaarde (81, FLX.getflex('PRS',1059, p.prs_perslid_key, 'P'))
do_locatie,
FLX.getflex('PRS',1045, p.prs_perslid_key, 'P')
vr_ochtend,
FLX.getflex('PRS',1055, p.prs_perslid_key, 'P')
vr_middag,
FLX.getdomeinwaarde (81, FLX.getflex('PRS',1060, p.prs_perslid_key, 'P'))
vr_locatie
FROM prs_perslid p) kw
WHERE
p.prs_perslid_key = kw.prs_perslid_key
AND p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 6 -- bedrijfs_key TAYL
AND p.prs_srtperslid_key = sp.prs_srtperslid_key ;