NOUR#80194 (inzage) planning periodieke taken en workorders
svn path=/Customer/trunk/; revision=62475
This commit is contained in:
209
NOUR/NOUR.SQL
209
NOUR/NOUR.SQL
@@ -10443,7 +10443,216 @@ AS
|
||||
AND kpl.prs_kostenplaats_key = m.prs_kostenplaats_key
|
||||
AND kpl.prs_perslid_key = b.prs_perslid_key
|
||||
AND stfl.mld_melding_key = m.mld_melding_key;
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
--- NOUR#80194 (inzage) planning periodieke taken en workorders ---------------
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
-- stap 0 we hebben een set aan datums terug/vooruit nodig
|
||||
-- Genereer een reeks met datums vanaf de vorige maand tot en met laatste datum volgende kwartaal
|
||||
CREATE OR REPLACE VIEW NOUR_V_PLAN_VOORUIT
|
||||
AS
|
||||
SELECT TRUNC(TRUNC(SYSDATE , 'Month')-1 , 'Month') + ROWNUM datum
|
||||
FROM DUAL
|
||||
CONNECT BY ROWNUM < (LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE , 'Q'),5)) - TRUNC(TRUNC(SYSDATE , 'Month')-1 , 'Month'))
|
||||
ORDER BY ROWNUM;
|
||||
|
||||
--- stap 1: een view met alle weekdagen
|
||||
CREATE OR REPLACE VIEW NOUR_V_PLANDAG
|
||||
AS
|
||||
SELECT datum, TRIM(TO_CHAR (datum, 'DAY')) dag FROM NOUR_V_PLAN_VOORUIT;
|
||||
|
||||
-- stap 2: alle intern uitvoerenden
|
||||
CREATE OR REPLACE VIEW NOUR_V_INTERN_UITV
|
||||
AS
|
||||
SELECT DISTINCT -- GROEPEN MET DISCIPLINES
|
||||
p.prs_perslid_key,
|
||||
p.prs_perslid_naam_friendly,
|
||||
p.prs_perslid_naam_full
|
||||
FROM fac_groeprechten g,
|
||||
fac_gebruikersgroep gg,
|
||||
prs_v_perslid_fullnames p,
|
||||
fac_functie f,
|
||||
ins_srtdiscipline isd,
|
||||
ins_tab_discipline a,
|
||||
fac_groep gr,
|
||||
fac_locale_xsl flx
|
||||
WHERE g.ins_discipline_key = a.ins_discipline_key
|
||||
AND g.fac_groep_key = gr.fac_groep_key
|
||||
AND p.prs_perslid_key = gg.prs_perslid_key
|
||||
AND gg.fac_groep_key = gr.fac_groep_key
|
||||
AND isd.ins_srtdiscipline_key(+) = a.ins_srtdiscipline_key
|
||||
AND f.fac_functie_key = g.fac_functie_key
|
||||
AND f.fac_functie_discipline = 1
|
||||
AND ins_discipline_verwijder IS NULL
|
||||
AND f.fac_functie_code = 'WEB_MLDORD'
|
||||
AND flx.fac_locale_xsl_label(+) = f.fac_functie_omschrijving
|
||||
AND flx.fac_locale_xsl_lang(+) = 'NL'
|
||||
AND flx.fac_locale_xsl_module(+) = 'ASP'
|
||||
UNION ALL -- GROEPEN ZONDER DISCIPLINES
|
||||
SELECT DISTINCT
|
||||
p.prs_perslid_key,
|
||||
p.prs_perslid_naam_friendly,
|
||||
p.prs_perslid_naam_full
|
||||
FROM fac_groeprechten g,
|
||||
fac_functie f,
|
||||
fac_gebruikersgroep gg,
|
||||
prs_v_perslid_fullnames p,
|
||||
fac_groep gr,
|
||||
fac_locale_xsl flx -- lcl.l gebruik was extreem traag dus maar hardcoded
|
||||
WHERE fac_functie_discipline = 0
|
||||
AND g.fac_functie_key = f.fac_functie_key
|
||||
AND g.fac_groep_key = gg.fac_groep_key
|
||||
AND gg.fac_groep_key = gr.fac_groep_key
|
||||
AND p.prs_perslid_key = gg.prs_perslid_key
|
||||
AND flx.fac_locale_xsl_label(+) = f.fac_functie_omschrijving
|
||||
AND f.fac_functie_code = 'WEB_MLDORD'
|
||||
AND flx.fac_locale_xsl_lang(+) = 'NL'
|
||||
AND flx.fac_locale_xsl_module(+) = 'ASP';
|
||||
|
||||
-- Stap 3: de beschikbaarheid per medewerker per dag
|
||||
CREATE OR REPLACE VIEW NOUR_V_RAP_BESCHIKKING_UITV
|
||||
AS
|
||||
SELECT dat.datum,
|
||||
dat.dag,
|
||||
uitv.prs_perslid_key,
|
||||
uitv.prs_perslid_naam_friendly,
|
||||
uitv.prs_perslid_naam_full,
|
||||
NVL (b.beschikbare_tijd_uren, 0) beschikbare_uren
|
||||
FROM nour_v_intern_uitv uitv, nour_v_plandag dat, nour_v_beschikking b
|
||||
WHERE b.prs_perslid_key(+) = uitv.prs_perslid_key
|
||||
AND b.plandag(+) = dat.dag
|
||||
ORDER BY dat.datum;
|
||||
|
||||
-- Stap 4: een view voor een kalender rapport met opdrachten waar een planning en raming op zit
|
||||
CREATE OR REPLACE VIEW NOUR_V_RAP_KALENDER_OPDR
|
||||
(
|
||||
USER_KEY,
|
||||
TITLE,
|
||||
VAN,
|
||||
TOT,
|
||||
ITEM_KEY,
|
||||
COLOR,
|
||||
TEXTCOLOR,
|
||||
URL,
|
||||
UITVOERENDE
|
||||
)
|
||||
AS
|
||||
SELECT NULL user_key,
|
||||
TO_CHAR (o.mld_melding_key)
|
||||
|| '/'
|
||||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||||
|| CHR (10)|| 'Uitvoerende: ' || p.prs_perslid_naam_full
|
||||
|| CHR (10)|| 'Raming uren: ' || o.mld_opdr_uren title,
|
||||
fac.safe_to_date (TO_CHAR (o.mld_opdr_plandatum, 'DD-MM-YYYY'),
|
||||
'DD-MM-YY') plandatum,
|
||||
fac.safe_to_date (TO_CHAR (o.mld_opdr_plandatum, 'DD-MM-YYYY'),
|
||||
'DD-MM-YY') plandatum,
|
||||
o.mld_opdr_key item_key,
|
||||
'#d3d3d3' -- groen
|
||||
color,
|
||||
'#000' textcolor,
|
||||
'?u=opdracht'
|
||||
|| CHR (38)
|
||||
|| 'internal=1'
|
||||
|| CHR (38)
|
||||
|| 'k='
|
||||
|| o.mld_opdr_key url,
|
||||
p.prs_perslid_naam_full
|
||||
FROM mld_opdr o, prs_v_perslid_fullnames p
|
||||
WHERE o.mld_uitvoerende_keys = p.prs_perslid_key
|
||||
AND o.mld_opdr_plandatum IS NOT NULL
|
||||
AND o.mld_opdr_uren IS NOT NULL;
|
||||
|
||||
-- Stap 5: Beschikbare uren per uitvoerende per dag
|
||||
CREATE OR REPLACE VIEW NOUR_V_RAP_BESCH_UREN_DAG
|
||||
AS
|
||||
SELECT bu.dag,
|
||||
bu.datum,
|
||||
bu.prs_perslid_key,
|
||||
bu.prs_perslid_naam_friendly,
|
||||
bu.prs_perslid_naam_full,
|
||||
bu.beschikbare_uren,
|
||||
nvl(opdr.tot_uren_gepland, 0) tot_uren_gepland,
|
||||
bu.beschikbare_uren -
|
||||
nvl(opdr.tot_uren_gepland, 0) uren_over
|
||||
FROM nour_v_rap_beschikking_uitv bu,
|
||||
( SELECT fac.safe_to_date (
|
||||
TO_CHAR (o.mld_opdr_plandatum, 'DD-MM-YYYY'),
|
||||
'DD-MM-YY') plandatum,
|
||||
o.mld_uitvoerende_keys uitvoerende,
|
||||
SUM (o.mld_opdr_uren) tot_uren_gepland
|
||||
FROM mld_opdr o
|
||||
WHERE o.mld_opdr_plandatum IS NOT NULL
|
||||
AND o.mld_opdr_uren IS NOT NULL
|
||||
GROUP BY fac.safe_to_date (
|
||||
TO_CHAR (o.mld_opdr_plandatum, 'DD-MM-YYYY'),
|
||||
'DD-MM-YY'),
|
||||
o.mld_uitvoerende_keys) opdr
|
||||
WHERE bu.datum = opdr.plandatum(+)
|
||||
AND bu.prs_perslid_key = opdr.uitvoerende(+);
|
||||
|
||||
SELECT fac.safe_to_date (TO_CHAR (o.mld_opdr_plandatum, 'DD-MM-YYYY'),
|
||||
'DD-MM-YY') plandatum,
|
||||
o.mld_uitvoerende_keys uitvoerende,
|
||||
(o.mld_opdr_uren)
|
||||
FROM mld_opdr o, nour_v_plan_vooruit d
|
||||
WHERE o.mld_opdr_plandatum IS NOT NULL
|
||||
AND o.mld_opdr_uren IS NOT NULL;
|
||||
|
||||
-- Stap 6: een view voor een kalender rapport met de beschikbare uren per uitvoerende
|
||||
CREATE OR REPLACE VIEW NOUR_V_RAP_KALENDER_UREN
|
||||
(
|
||||
USER_KEY,
|
||||
TITLE,
|
||||
VAN,
|
||||
TOT,
|
||||
ITEM_KEY,
|
||||
COLOR,
|
||||
TEXTCOLOR,
|
||||
URL,
|
||||
UITVOERENDE
|
||||
)
|
||||
AS
|
||||
SELECT NULL user_key,
|
||||
'Totaal beschikbare uren: ' || u.beschikbare_uren
|
||||
|| CHR (10)
|
||||
|| 'Uren gepland: ' || u.tot_uren_gepland
|
||||
|| CHR (10)
|
||||
|| 'Uren over: ' || u.uren_over title,
|
||||
u.datum ,
|
||||
u.datum,
|
||||
u.prs_perslid_key item_key,
|
||||
CASE
|
||||
WHEN u.uren_over > 4 THEN '#02A528' -- groen
|
||||
WHEN u.uren_over > 2 AND u.uren_over < 5 THEN '#ffa500' -- oranje
|
||||
WHEN u.uren_over <3 THEN '#ff0000' -- rood
|
||||
|
||||
END
|
||||
AS color,
|
||||
'#FFFFFF' textcolor,
|
||||
NULL url,
|
||||
u.prs_perslid_naam_full
|
||||
FROM NOUR_V_RAP_BESCH_UREN_DAG u;
|
||||
|
||||
-- Stap 7: de laatste stap, we halen alles bij elkaar om per uitvoerende een rapport te kunnen maken
|
||||
CREATE OR REPLACE VIEW NOUR_V_RAP_KALENDER_TOTAL
|
||||
(
|
||||
USER_KEY,
|
||||
TITLE,
|
||||
VAN,
|
||||
TOT,
|
||||
ITEM_KEY,
|
||||
COLOR,
|
||||
TEXTCOLOR,
|
||||
URL,
|
||||
UITVOERENDE
|
||||
)
|
||||
AS
|
||||
SELECT * FROM NOUR_V_RAP_KALENDER_UREN
|
||||
UNION ALL
|
||||
SELECT * FROM NOUR_V_RAP_KALENDER_OPDR;
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user