NOUR#80194 (inzage) planning periodieke taken en workorders

svn path=/Customer/trunk/; revision=62475
This commit is contained in:
Suzan Wiegerinck
2023-11-06 13:56:41 +00:00
parent 4dce1aa2f1
commit c2dc6d0433

View File

@@ -10444,6 +10444,215 @@ AS
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