Files
Customer/LUDE/lude.sql
Arthur Egberink a7d6811457 FSN#37619 -- ins_srtcontroledl_xcp_respijt is deprecated
svn path=/Customer/trunk/; revision=30560
2016-09-05 15:18:08 +00:00

509 lines
22 KiB
MySQL

-- Script containing combining all customer specific sql for LUDE: Ludens kinderopvang Utrecht
-- (c) 2014 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
SPOOL xlude.lst
SET ECHO ON
SET DEFINE OFF
---------------------------------------------------------------------------------
-- INVESTERINGSBEGROTING --
---------------------------------------------------------------------------------
-- View voor kenmerkdomein 'Afdelingskostenplaatsen'
CREATE OR REPLACE VIEW lude_v_kpn_afd_invbegr
AS
SELECT prs_kostenplaats_key,
prs_kostenplaats_nr
|| ' '
|| prs_kostenplaats_omschrijving prs_kostenplaats_aanduiding
FROM prs_v_aanwezigkostenplaats
WHERE prs_kostenplaats_module = 'PRS'
AND prs_kostenplaats_upper != 'NVT';
-- Rapportage "Begrotingsoverzicht"
-- Toont alle meldingen in vakgroeptype "Investeringsbegroting", plus alle opdrachten-met-kosten
-- bij reguliere meldingen op een investeringsbegroting-projectkostenplaats
-- LUDE#939: ook meldingen tonen waar (toch) geen kosten op gemaakt zijn
CREATE OR REPLACE VIEW lude_v_rap_invbegr
AS
SELECT hide_f_sort,
fclt_f_jaar,
fclt_f_locatie,
budget fclt_x_budget,
prs_kostenplaats_limiet hide_f_limiet,
DECODE( INSTR(budget, fclt_f_jaar),
0, '<font style="font-weight:bold;color:#f00">'||budget||'</font><br/>(gepland: '||gepland||')',
budget)
html_budget,
fclt_f_kostenplaats,
html_nummer,
omschrijving,
fac.safe_to_number(
DECODE (fclt_f_substatus,
'Geannuleerd', NULL,
'Afgewezen', NULL,
geraamd) )
fclt_c_geraamd,
fac.safe_to_number(
DECODE (fclt_f_substatus,
'Geannuleerd', NULL,
'Afgewezen', NULL,
toegekend) )
fclt_c_toegekend,
fac.safe_to_number(
DECODE(besteed,
0, NULL,
besteed) )
fclt_c_besteed,
fclt_f_substatus,
fclt_f_status
FROM (
SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
l.alg_locatie_omschrijving fclt_f_locatie,
REPLACE(htf.escape_sc(km.prs_kostenplaats_omschrijving), '&'||'amp;', '&') budget,
km.prs_kostenplaats_limiet,
ka.prs_kostenplaats_aanduiding fclt_f_kostenplaats,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
|| '")''>'
|| htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
|| '</a>'
html_nummer,
m.mld_melding_omschrijving omschrijving,
fac.safe_to_number(geraamd.mld_kenmerkmelding_waarde) geraamd,
fac.safe_to_number(toegekend.mld_kenmerkmelding_waarde) toegekend,
COALESCE(o_open.mld_opdr_kosten,0) + COALESCE(o_klaar.mld_opdr_kosten,0) besteed,
CASE
WHEN status.mld_melding_key IS NOT NULL
THEN ud_status.fac_usrdata_omschr
WHEN status.mld_melding_key IS NULL
THEN
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN
CASE
WHEN COALESCE(o_open.mld_opdr_kosten,0) > 0
THEN 'Uitgegeven'
WHEN COALESCE(o_klaar.mld_opdr_kosten,0) > 0
THEN 'Niet opgelost'
WHEN toegekend.mld_melding_key IS NOT NULL
THEN 'Toegekend'
WHEN geraamd.mld_melding_key IS NOT NULL
THEN 'Geraamd'
ELSE
'Aangevraagd'
END
ELSE
'Afgerond'
END
END
fclt_f_substatus,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN 'Open'
ELSE 'Gesloten'
END
fclt_f_status
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
alg_locatie l,
prs_kostenplaats km,
-- Opdrachten die al klaar zijn (met kosten)
(SELECT mld_melding_key,
SUM(mld_opdr_kosten) mld_opdr_kosten
FROM mld_opdr
WHERE mld_statusopdr_key NOT IN (1,2,3,4,5,8,10)
AND mld_opdr_kosten > 0
GROUP BY mld_melding_key) o_klaar,
-- Opdrachten die nog lopen (met kosten)
(SELECT mld_melding_key,
SUM(mld_opdr_kosten) mld_opdr_kosten
FROM mld_opdr
WHERE mld_statusopdr_key NOT IN (1,2,6,7,9)
AND mld_opdr_kosten > 0
GROUP BY mld_melding_key) o_open,
lude_v_kpn_afd_invbegr ka,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1
AND km.mld_kenmerkmelding_verwijder IS NULL) geraamd,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2
AND km.mld_kenmerkmelding_verwijder IS NULL) toegekend,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 21
AND km.mld_kenmerkmelding_verwijder IS NULL) status,
(SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 42
AND km.mld_kenmerkmelding_verwijder IS NULL) kpn,
(SELECT * FROM fac_usrdata
WHERE fac_usrtab_key = 1) ud_status
WHERE m.mld_melding_status != 1
-- Afgemelde meldingen alleen meenemen als er geldige opdrachten (met of zonder kosten) bij zitten
-- LUDE#32939: Nee, toch niet; ook meenemen zonder kosten
AND NOT ( m.mld_melding_status IN (5,6)
AND NOT EXISTS (SELECT 1 FROM mld_opdr
WHERE mld_melding_key = m.mld_melding_key
--AND mld_opdr_kosten > 0
AND mld_statusopdr_key NOT IN (1,2) ) )
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_key = 1
AND km.prs_kostenplaats_key = m.prs_kostenplaats_key
AND geraamd.mld_melding_key(+) = m.mld_melding_key
AND toegekend.mld_melding_key(+) = m.mld_melding_key
AND status.mld_melding_key(+) = m.mld_melding_key
AND ud_status.fac_usrdata_key(+) = fac.safe_to_number(status.mld_kenmerkmelding_waarde)
AND kpn.mld_melding_key(+) = m.mld_melding_key
AND ka.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND o_open.mld_melding_key(+) = m.mld_melding_key
AND o_klaar.mld_melding_key(+) = m.mld_melding_key
UNION ALL
SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
l.alg_locatie_omschrijving fclt_f_locatie,
htf.escape_sc(k.prs_kostenplaats_omschrijving) budget,
k.prs_kostenplaats_limiet,
NULL fclt_f_kostenplaats,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
|| '")''>'
|| htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
|| '</a>'
html_nummer,
m.mld_melding_omschrijving omschrijving,
NULL geraamd,
NULL toegekend,
o.mld_opdr_kosten besteed,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN
CASE
WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (3,4,5,8,10)
THEN 'Uitgegeven'
WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (6,7,9)
THEN 'Niet opgelost'
ELSE 'Aangevraagd'
END
ELSE
'Afgemeld'
END
fclt_f_substatus,
CASE
WHEN m.mld_melding_status IN (0,2,3,4,7,99)
THEN 'Open'
ELSE 'Gesloten'
END
fclt_f_status
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
mld_discipline vg,
ins_srtdiscipline vt,
alg_locatie l,
prs_kostenplaats k
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_status != 1
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
AND vt.ins_srtdiscipline_key != 1
AND l.alg_locatie_key = m.mld_alg_locatie_key
AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND k.prs_kostenplaats_module = 'PRJ'
AND o.mld_opdr_kosten > 0);
-- Rapportage "Budget per locatie"
-- Sommeert bovenstaande rapportage per budget en locatie
CREATE OR REPLACE VIEW lude_v_rap_invbegr_budg_loc
AS
SELECT fclt_f_locatie||fclt_f_jaar||fclt_x_budget hide_f_sort,
fclt_f_jaar, fclt_f_locatie,
fclt_x_budget, html_budget,
hide_f_limiet,
SUM(fclt_c_toegekend) fclt_c_toegekend,
SUM(DECODE(fclt_f_status,
'Open', fclt_c_besteed) )
fclt_c_openstaand,
SUM(DECODE(fclt_f_status,
'Gesloten', fclt_c_besteed) )
fclt_c_uitgevoerd,
SUM(fclt_c_besteed) fclt_c_besteed,
SUM( COALESCE(fclt_c_besteed, fclt_c_toegekend) )
fclt_c_prognose
FROM lude_v_rap_invbegr
WHERE fclt_f_substatus NOT IN ('Geannuleerd', 'Afgewezen')
GROUP BY fclt_f_jaar, fclt_f_locatie, hide_f_limiet, fclt_x_budget, html_budget;
-- Rapportage "Budgetuitnuttig"
-- Beschikbaar budget per kostenplaats (categorie), uitgezet uitnutting.
-- Uitnutting = toegekend bedrag voor lopende meldingen, besteed bedrag voor afgesloten meldingen.
CREATE OR REPLACE VIEW lude_v_rap_invbegr_budg_uitnut
AS
SELECT fclt_f_jaar,
fclt_x_budget fclt_x_categorie,
html_budget html_categorie,
hide_f_limiet fclt_c_budget,
SUM(fclt_c_toegekend) fclt_c_toegekend,
SUM(fclt_c_openstaand) fclt_c_openstaand,
SUM(fclt_c_uitgevoerd) fclt_c_uitgevoerd,
SUM(fclt_c_besteed) fclt_c_besteed,
SUM(fclt_c_prognose) fclt_c_prognose
FROM lude_v_rap_invbegr_budg_loc
GROUP BY fclt_f_jaar, hide_f_limiet, fclt_x_budget, html_budget;
---------------------------------------------------------------------------------
-- MJB (MeerJarenonderhoudsBegroting) --
---------------------------------------------------------------------------------
-- Element = inspectie op MJB-object (component).
-- Elementen definieren met welke frequentie gebouwen/inventaris/apparatuur/... moeten
-- worden onderhouden/vervangen/...
-- Deze view levert alle inspecties op objectsoorten/-groepen in discipline "MJB", inclusief
-- periode, eenheidsprijs, eenheid, groep (categorie), verantwoordelijke (huurder/eigenaar)
-- en toelichting.
-- ins_discipline MJB 41
CREATE OR REPLACE VIEW lude_v_mjb_elementen
AS
SELECT ins_srtcontrole_key,
sd.ins_srtdeel_key,
sc.ins_srtcontrole_groep categorie,
sdg.ins_srtdeel_omschrijving objectsoort,
sc.ins_srtcontrole_omschrijving element,
sc.ins_srtcontrole_kosten eenheidsprijs,
sd.ins_srtdeel_eenheid eenheid,
sc.ins_srtcontrole_periode periode,
sc.ins_srtcontrole_opmerking verantwoordelijke,
sc.ins_srtcontrole_info toelichting
FROM ins_srtcontrole sc,
ins_v_srtdeel_gegevens sdg,
ins_srtdeel sd
WHERE sc.ins_srtinstallatie_key =
DECODE(sc.ins_srtcontrole_niveau,
'S', sdg.ins_srtdeel_key,
'G', sdg.ins_srtgroep_key,
'D', sdg.ins_discipline_key)
AND sdg.ins_discipline_key = 41
AND sd.ins_srtdeel_key = sdg.ins_srtdeel_key;
-- Rapportage met alle elementen
CREATE OR REPLACE VIEW lude_v_rap_mjb_elementen
AS
SELECT categorie fclt_f_categorie,
objectsoort fclt_f_objectsoort,
element fclt_f_element,
eenheidsprijs fclt_c_eenheidsprijs,
eenheid,
periode,
verantwoordelijke fclt_f_verantwoordelijke,
toelichting
FROM lude_v_mjb_elementen;
-- Component = MJB-object met inspectie(s).
-- Componenten zijn bulkobjecten ("30 TL-armaturen") waarmee vastgelegd wordt wanneer
-- bepaalde zaken op lokaties zijn aangeschaft. M.b.v. de elementen wordt dan bepaald
-- wanneer ze vervangen/onderhouden moeten worden en wat dat naar verwachting gaat kosten.
-- Daarbij kan per inspectieresultaat de prijs overruled worden. Uitstel is mogelijk.
-- ins_discipline MJB 41
-- ins_kenmerk Aantal 6
-- ins_kenmerk Uplift 7
-- ins_srtkenmerk Werkelijke eenh.prijs 22
CREATE OR REPLACE VIEW lude_v_mjb_componenten
AS
SELECT alg_locatie_key,
locatie,
categorie,
ins_srtdeel_key,
objectsoort,
e.ins_deel_key,
element,
aantal,
COALESCE(werkelijk, eenheidsprijs) eenheidsprijs,
eenheid,
uplift,
aantal * COALESCE(werkelijk, eenheidsprijs) * (1 + COALESCE(uplift, 0) / 100) totaalprijs,
werkelijk,
aanschaf,
laatste,
uitstel,
periode,
COALESCE(uitstel, COALESCE(laatste, aanschaf) + periode ) vervangingsjaar
-- ,verantwoordelijke
FROM (
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving locatie,
el.categorie categorie,
sd.ins_srtdeel_key,
sd.ins_srtdeel_omschrijving objectsoort,
el.ins_srtcontrole_key,
el.element element,
d.ins_deel_key,
fac.safe_to_number(aantal.ins_kenmerkdeel_waarde) aantal,
el.eenheidsprijs eenheidsprijs,
sd.ins_srtdeel_eenheid eenheid,
fac.safe_to_number(uplift.ins_kenmerkdeel_waarde) uplift,
fac.safe_to_number(TO_CHAR(d.ins_deel_aanmaak, 'YYYY')) aanschaf,
el.periode periode,
el.verantwoordelijke verantwoordelijke
FROM ins_deel d,
ins_srtdeel sd,
ins_srtgroep sg,
lude_v_mjb_elementen el,
ins_v_alg_onroerendgoed og,
alg_locatie l,
(SELECT * FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = 6
AND ins_kenmerkdeel_verwijder IS NULL) aantal,
(SELECT * FROM ins_kenmerkdeel
WHERE ins_kenmerk_key = 7
AND ins_kenmerkdeel_verwijder IS NULL) uplift
WHERE d.ins_deel_verwijder IS NULL
AND sd.ins_srtdeel_key = d.ins_srtdeel_key
AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
AND sg.ins_discipline_key = 41
AND og.alg_onrgoed_type = d.ins_alg_ruimte_type
AND og.alg_onrgoed_keys = d.ins_alg_ruimte_key
AND l.alg_locatie_key = og.alg_locatie_key
AND el.ins_srtdeel_key(+) = sd.ins_srtdeel_key
AND aantal.ins_deel_key = d.ins_deel_key
AND uplift.ins_deel_key(+) = d.ins_deel_key ) e
LEFT OUTER JOIN (
SELECT dsc.ins_srtcontrole_key, dsc.ins_deel_key,
fac.safe_to_number(TO_CHAR(dsc.ins_deelsrtcontrole_datum, 'YYYY')) laatste,
NULL uitstel, -- respijt is depricated
fac.safe_to_number(ins_kmdeelsrtcontr_waarde) werkelijk
FROM ins_deelsrtcontrole dsc,
ins_srtcontroledl_xcp xcp,
(SELECT kdsc.* FROM ins_kmdeelsrtcontr kdsc, ins_kenmerk k
WHERE k.ins_kenmerk_key = kdsc.ins_kenmerk_key
AND k.ins_srtkenmerk_key = 22
AND kdsc.ins_kmdeelsrtcontr_verwijder IS NULL) werkelijk
WHERE werkelijk.ins_deelsrtcontrole_key(+) = dsc.ins_deelsrtcontrole_key
AND xcp.ins_srtcontrole_key(+) = dsc.ins_srtcontrole_key
AND xcp.ins_deel_key(+) = dsc.ins_deel_key
AND dsc.ins_deelsrtcontrole_key =
(SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole
WHERE ins_deel_key = dsc.ins_deel_key
AND ins_srtcontrole_key = dsc.ins_srtcontrole_key) ) c
ON e.ins_deel_key = c.ins_deel_key
AND e.ins_srtcontrole_key = c.ins_srtcontrole_key;
-- Rapportage met alle componenten
CREATE OR REPLACE VIEW lude_v_rap_mjb_componenten
AS
SELECT locatie||COALESCE(categorie,'_')||objectsoort||vervangingsjaar hide_f_sort,
locatie fclt_f_locatie,
categorie fclt_f_categorie,
objectsoort fclt_x_objectsoort,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/INS/ins_deel.asp?urole=bo&'||'ins_key='||ins_deel_key
|| '")''>'
|| htf.escape_sc(objectsoort)
|| '</a>'
html_object,
element fclt_f_element,
aantal,
eenheidsprijs,
'p/ '||eenheid eenheid,
uplift,
totaalprijs fclt_c_totaalprijs,
TO_CHAR(aanschaf) aanschaf,
TO_CHAR(laatste) uitgevoerd,
TO_CHAR(periode) periode,
TO_CHAR(uitstel) uitstel,
TO_CHAR(vervangingsjaar) fclt_f_vervangingsjaar
-- ,verantwoordelijke
FROM lude_v_mjb_componenten;
-- Gestylede rapportage die per jaar/locatie/categorie aangeeft hoeveel kiloeuro er
-- begroot moet worden voor MJB
CREATE OR REPLACE VIEW lude_v_rap_mjb_grid
AS
SELECT grid.locatie || '-' || grid.categorie hide_f_regel,
grid.locatie fclt_f_locatie,
grid.categorie fclt_f_categorie,
TO_CHAR(grid.jaar) fclt_f_jaar,
COALESCE (comp.totaalprijs, 0) bedrag
FROM (
SELECT DISTINCT a.alg_locatie_key,
j.jaar,
a.alg_locatie_omschrijving locatie,
e.categorie
FROM (SELECT alg_locatie_key,
alg_locatie_omschrijving
FROM alg_v_aanweziglocatie
UNION ALL
SELECT -1 alg_gebouw_key,
'Onbekend' alg_locatie_omschrijving
FROM DUAL) a,
ins_v_aanwezigdeel d,
lude_v_mjb_elementen e,
(SELECT n jaar
FROM (SELECT ROWNUM n FROM DUAL
CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))+12)
WHERE n >= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-2) j
WHERE e.ins_srtdeel_key = d.ins_srtdeel_key
ORDER BY locatie, jaar
) grid
LEFT OUTER JOIN (
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar
FROM lude_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, vervangingsjaar, periode
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + periode vervangingsjaar
FROM lude_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + periode)
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + 2*periode vervangingsjaar
FROM lude_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 2*periode)
UNION ALL
SELECT alg_locatie_key,
categorie,
SUM(totaalprijs/1000) totaalprijs,
vervangingsjaar + 3*periode vervangingsjaar
FROM lude_v_mjb_componenten
WHERE vervangingsjaar IS NOT NULL
GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 3*periode)
) comp
ON comp.alg_locatie_key = grid.alg_locatie_key
AND comp.categorie = grid.categorie
AND comp.vervangingsjaar = grid.jaar
;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('LUDE', 3); END;
/
COMMIT;
SPOOL OFF