Files
Customer/NMMS/nmms.sql
2014-08-26 12:34:24 +00:00

1109 lines
37 KiB
PL/PgSQL

-- Script containing customer specific configuration sql statements for NMMS: Nationaal Militair Museum
-- (c) 2011 SG|facilitor
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710
SPOOL xNMMS.LST
SET ECHO ON
--------------
CREATE OR REPLACE PACKAGE nmms
AS
FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER)
RETURN NUMBER;
FUNCTION get_regime (p_stdm_key IN NUMBER,
p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund
p_ins_key IN NUMBER)
RETURN NUMBER;
FUNCTION get_ins_weegfactor (p_melding_key IN NUMBER, p_wegingsfactor IN NUMBER)
RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY nmms
AS
FUNCTION get_first_melding (p_melding_key IN NUMBER,
p_index IN NUMBER)
RETURN NUMBER
AS
CURSOR c
IS
SELECT m2.mld_melding_datum van,
fac.gettrackingdate ('MLDAFM', m2.mld_melding_key) tot,
m2.mld_melding_key
FROM mld_melding m1,
mld_melding m2,
mld_stdmelding std1,
mld_stdmelding std2
WHERE m1.mld_melding_key = p_melding_key
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
AND std1.prs_dienst_key = std2.prs_dienst_key
AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys
AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
AND fac.gettrackingdate (
'MLDAFM',
m2.mld_melding_key);
v_melding_key NUMBER;
l_melding_key NUMBER;
v_datum_begin DATE;
l_datum_begin DATE;
BEGIN
v_melding_key := p_melding_key;
SELECT mld_melding_datum
INTO v_datum_begin
FROM mld_melding
WHERE mld_melding_key = p_melding_key;
FOR rec IN c
LOOP
IF p_index < 10
THEN
BEGIN
l_melding_key :=
nmms.get_first_melding (rec.mld_melding_key, p_index + 1);
END;
SELECT mld_melding_datum
INTO l_datum_begin
FROM mld_melding
WHERE mld_melding_key = l_melding_key;
IF l_datum_begin < v_datum_begin
THEN
v_datum_begin := l_datum_begin;
v_melding_key := l_melding_key;
END IF;
END IF;
END LOOP;
RETURN v_melding_key;
END;
FUNCTION get_ins_weegfactor (p_melding_key IN NUMBER, p_wegingsfactor IN NUMBER) RETURN NUMBER
AS
v_count NUMBER;
v_count_tot NUMBER;
v_factor NUMBER;
v_srtgroep_key NUMBER;
BEGIN
-- tel het aantal objecten aan de melding
SELECT count(*), ins_srtgroep_key
INTO v_count, v_srtgroep_key
FROM ins_deel d, mld_melding_object mo, ins_srtdeel sd
WHERE mo.mld_melding_key = p_melding_key
AND mo.ins_deel_key = d.ins_deel_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_srtgroep_key in (41) -- 41 toiletten
GROUP BY ins_srtgroep_key;
IF v_count = 0
THEN
RETURN p_wegingsfactor;
END IF;
-- tel het aantal toiletten aan de ruimte
SELECT count(distinct d2.ins_deel_key)
INTO v_count_tot
FROM ins_deel d, mld_melding_object mo, ins_srtdeel sd, ins_deel d2
WHERE mo.mld_melding_key = p_melding_key
AND mo.ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_key = d2.ins_alg_ruimte_key
AND d.ins_srtdeel_key = d2.ins_srtdeel_key
AND d2.ins_srtdeel_key = sd.ins_srtdeel_key
AND ins_srtgroep_key = v_srtgroep_key;
-- bepaal de wegingsfactor.
IF v_srtgroep_key = 41 THEN
-- toiletten
SELECT (CASE
WHEN TRUNC((v_count/v_count_tot)*100) > 90 THEN 20
WHEN TRUNC((v_count/v_count_tot)*100) > 80 THEN 18
WHEN TRUNC((v_count/v_count_tot)*100) > 70 THEN 14
WHEN TRUNC((v_count/v_count_tot)*100) > 60 THEN 10
WHEN TRUNC((v_count/v_count_tot)*100) > 50 THEN 6
WHEN TRUNC((v_count/v_count_tot)*100) > 40 THEN 5
WHEN TRUNC((v_count/v_count_tot)*100) > 30 THEN 4
WHEN TRUNC((v_count/v_count_tot)*100) > 20 THEN 3
WHEN TRUNC((v_count/v_count_tot)*100) > 10 THEN 2
WHEN TRUNC((v_count/v_count_tot)*100) > 0 THEN 1
ELSE p_wegingsfactor
END)
INTO v_factor
FROM DUAL;
ELSE
SELECT (CASE
WHEN TRUNC((v_count/v_count_tot)*100) > 50 THEN 10
WHEN TRUNC((v_count/v_count_tot)*100) > 40 THEN 8
WHEN TRUNC((v_count/v_count_tot)*100) > 30 THEN 6
WHEN TRUNC((v_count/v_count_tot)*100) > 20 THEN 4
WHEN TRUNC((v_count/v_count_tot)*100) > 10 THEN 2
WHEN TRUNC((v_count/v_count_tot)*100) > 0 THEN 1
ELSE p_wegingsfactor
END)
INTO v_factor
FROM DUAL;
END IF;
RETURN v_factor;
END;
FUNCTION get_regime (p_stdm_key IN NUMBER,
p_alg_key IN NUMBER, -- Altijd gebouw of hoger, locatie niet ondersteund
p_ins_key IN NUMBER)
RETURN NUMBER
AS
v_mld_stdmelding_regime NUMBER;
v_norm_uitvoertijd NUMBER;
v_uitvoertijdtype VARCHAR2 (100);
v_beginuur NUMBER;
v_einduur NUMBER;
v_werkdagen NUMBER;
BEGIN
mld.getslaparams (p_stdm_key,
3, -- prio
p_alg_key,
NULL, -- ins key
v_mld_stdmelding_regime,
v_norm_uitvoertijd,
v_uitvoertijdtype,
v_beginuur,
v_einduur,
v_werkdagen);
-- kantoortijden of openingstijden waarbij de tijd niet gevuld is.
IF v_mld_stdmelding_regime = 1 OR (v_mld_stdmelding_regime = 2 AND (v_beginuur = -1 OR v_einduur = -1))
THEN
RETURN fac.safe_to_number (fac.getsetting ('fac_t_endofworkday'))
- fac.safe_to_number (fac.getsetting ('fac_t_startofworkday'));
END IF;
IF v_mld_stdmelding_regime = 2 -- openingstijden
THEN
RETURN v_einduur - v_beginuur;
END IF;
IF v_mld_stdmelding_regime = 3 -- 24/7
THEN
RETURN 24;
END IF;
RETURN NULL;
END;
END;
/
CREATE OR REPLACE VIEW nmms_v_monitoring
(
melding_key,
afw,
q_vervolg,
indult,
respijt,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
afgerond,
dienst,
stdmelding_key,
wegingsfactor,
melding_omschrijving,
melding_opmerking
)
AS
SELECT mld_melding_key,
DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
|| DECODE (mld_melding_respijt, 0, '', 'R') -- er is een respijt ingevuld
|| DECODE (aantal, 1, '', 'S') -- betreft een samengestelde/overlappende melding
|| DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee
|| DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
q_vervolg,
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'),
DECODE (
mld_melding_respijt,
0,
NULL,
DECODE (uitvoertijdtype,
'UREN', ROUND (mld_melding_respijt * 24, 2) || ' Uren',
TO_CHAR (mld_melding_respijt) || ' Dagen'))
respijt,
prs_kostenplaats_nr,
alg_locatie_code,
alg_gebouw_upper,
alg_verdieping_volgnr,
ruimte,
object,
thema,
mld_stdmelding_omschrijving omschrijving,
TO_CHAR (t_van, 'dd-mm-yyyy hh24:mi:ss') begin,
TO_CHAR (einddatum, 'dd-mm-yyyy hh24:mi:ss') eind,
TO_CHAR (thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
DECODE (
kortingtype,
'Q',
NULL,
DECODE (uitvoertijdtype,
'UREN', ROUND (tht * 24, 2) || ' Uren',
TO_CHAR (tht) || ' Dagen'))
tht_txt,
DECODE (kortingtype,
'Q', TO_NUMBER (NULL),
DECODE (uitvoertijdtype, 'UREN', 24, 1) * actual)
wht,
DECODE (kortingtype, 'Q', TO_NUMBER (NULL), regime) regime,
mld_stdmeldinggroep_naam groep,
'K' || LOWER (kortingtype) || DECODE (q_vervolg, 1, '/q')
typekorting,
DECODE (kortingtype,
'B', mld_stdmelding_malus,
'S', mld_stdmelding_malus,
'Q', mld_stdmelding_malus)
basiskorting,
DECODE (kortingtype, 'B', 50, 'S', 1000) variabelekorting,
DECODE (
telaat,
1,
DECODE (kortingtype,
'B', (actual - tht) * 24,
'S', (actual - tht) * 24))
uren,
DECODE (
telaat,
1,
DECODE (
kortingtype,
'Q',
mld_stdmelding_malus,
'B',
mld_stdmelding_malus
+ ( (TRUNC ( (actual - tht) * 24) + 1) * 50),
'S',
mld_stdmelding_malus
+ ( (TRUNC ( (actual - tht) / thtsla) + 1) * 1000),
NULL))
kb,
DECODE (kortingtype, 'P', mld_stdmelding_malus) prestatiekorting,
DECODE (telaat,
1,
DECODE (kortingtype, 'P', ( (actual - tht) / thtsla) + 1))
factor,
DECODE (
telaat,
1,
DECODE (
kortingtype,
'P',
TRUNC (
DECODE (telaat, 1, ( (actual - tht) / thtsla) + 1, NULL))
* mld_stdmelding_malus))
kp,
(SELECT mld_statuses_omschrijving
FROM mld_statuses s
WHERE s.mld_statuses_key = mld_melding_status),
DECODE(mld_melding_afgerond, 1, 'x'),
(SELECT prs_dienst_omschrijving
FROM prs_dienst di
WHERE di.prs_dienst_key = g.prs_dienst_key),
mld_stdmelding_key,
wegingsfactor,
(SELECT mld_melding_omschrijving FROM mld_melding mo WHERE mo.mld_melding_key = g.mld_melding_key),
(SELECT mld_melding_opmerking FROM mld_melding mo WHERE mo.mld_melding_key = g.mld_melding_key)
FROM (SELECT m.aantal,
m.mld_melding_status,
m.mld_melding_afgerond,
m.mld_melding_key,
m.mld_melding_indult,
std.prs_dienst_key,
std.mld_stdmelding_key,
q.vervolg q_vervolg,
COALESCE (m.mld_melding_respijt, 0) mld_melding_respijt,
mld_stdmelding_omschrijving,
t_van,
DECODE (SIGN (mld_melding_uitvoertijd - 1),
-1, 'UREN',
'DAGEN')
uitvoertijdtype,
t_tot einddatum,
mld_melding_einddatum_std thtijdstip,
DECODE (
q.vervolg,
NULL,
COALESCE (ins_deel_uitvoertijd, mld_melding_uitvoertijd),
0)
+ mld_melding_respijt
tht,
mld_melding_uitvoertijd thtsla,
mld_stdmeldinggroep_naam,
nmms.get_regime (std.mld_stdmelding_key,
m.mld_alg_onroerendgoed_keys,
NULL)
regime,
UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)) kortingtype, -- de meldingsgroep bevat het type storing
mld_stdmelding_malus,
kp.prs_kostenplaats_nr,
rg.alg_locatie_code,
rg.alg_gebouw_upper,
rg.alg_verdieping_volgnr,
alg_ruimte_nr || '-' || alg_ruimte_omschrijving ruimte,
d.ins_deel_omschrijving object,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel kd
WHERE kd.ins_deel_key = d.ins_deel_key
AND ins_kenmerk_key = 9)
thema,
mld.getactualuitvoer ( -- bepaal de actuele doorlooptijd a.d.h.v. de samengestelde melding
t_van,
COALESCE (t_tot, SYSDATE),
m.mld_stdmelding_key,
m.mld_melding_spoed,
m.mld_alg_onroerendgoed_keys,
-- selecteer het object van de melding met de kortste doorlooptijd
obj.ins_deel_key)
actual,
(SELECT COUNT (mb.mld_melding_key) aantal -- kijk of er op het moment van de melding er een beschikbaarheidsstoring was.
FROM mld_melding mb, mld_stdmelding std_b
WHERE (mb.mld_melding_datum BETWEEN m.t_van
AND COALESCE (m.t_tot,
SYSDATE)
OR fac.gettrackingdate ('MLDAFM', mb.mld_melding_key) BETWEEN m.t_van
AND COALESCE (
m.t_tot,
SYSDATE))
AND mb.mld_alg_onroerendgoed_keys =
m.mld_alg_onroerendgoed_keys
AND mb.mld_stdmelding_key = std_b.mld_stdmelding_key
AND std_b.mld_stdmeldinggroep_key = 63 -- beschikbaarheid
AND std.mld_stdmeldinggroep_key <> 63)
aantal_beschikb, -- beschikbaarheid
-- vervolgmelding op een inspectie zijn per definitie te laat
-- inspecties zelf zijn te laat als de geplande einddatum verstreken is.
-- anders geldt de normale formule
CASE COALESCE (q.vervolg, 0)
WHEN 1
THEN
1
ELSE
DECODE (
UPPER (SUBSTR (mld_stdmeldinggroep_naam, 1, 1)),
'Q',
SIGN (t_tot - mld_melding_einddatum),
SIGN(mld.getactualuitvoer (m.mld_melding_key)
- (mld_melding_uitvoertijd
+ mld_melding_respijt)))
END
telaat,
DECODE (
d.ins_deel_key,
NULL,
alg_srtruimte_prijs4,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel kd
WHERE kd.ins_deel_key = d.ins_deel_key
AND ins_kenmerk_key = 10))
wegingsfactor,
-- is de tijd van de melding aangepast?
(SELECT COUNT ( * )
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDUPD'
AND (fac_tracking_oms LIKE '%Start :%'
OR fac_tracking_oms LIKE '%Afgemeld:%'))
antedateren
FROM ( -- selecteer de begin en eindtijd van overlappende meldingen van dezelfde dienst op dezelfde ruimte
--
SELECT m_start,
MIN (mld_melding_status) mld_melding_status,
MIN (mld_melding_afgerond) mld_melding_afgerond,
COUNT (mld_melding_key) aantal,
MIN (mld_melding_datum) t_van,
MAX (t_tot) t_tot,
MIN (mld_melding_key) mld_melding_key,
MIN (mld_stdmelding_key) mld_stdmelding_key,
MAX (prs_kostenplaats_key) prs_kostenplaats_key,
mld_alg_onroerendgoed_keys
mld_alg_onroerendgoed_keys,
SUM (mld_melding_respijt) mld_melding_respijt,
MAX (mld_melding_indult) mld_melding_indult,
MIN (mld_melding_uitvoertijd)
mld_melding_uitvoertijd,
MIN (mld_melding_einddatum_std)
mld_melding_einddatum_std,
MAX (mld_melding_einddatum) mld_melding_einddatum,
MIN (mld_melding_spoed) mld_melding_spoed
FROM (SELECT nmms.get_first_melding (mld_melding_key,
1)
m_start,
fac.gettrackingdate ('MLDAFM',
m.mld_melding_key)
t_tot,
m.*
FROM mld_melding m
WHERE m.mld_melding_parentkey IS NULL) -- we nemen geen dubbele meldingen mee
GROUP BY m_start, mld_alg_onroerendgoed_keys) m,
mld_stdmeldinggroep stdg,
alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
mld_stdmelding std,
prs_kostenplaats kp,
(SELECT m1.mld_melding_key,
DECODE (m2.mld_melding_key, NULL, 0, 1) vervolg
FROM mld_melding m1,
mld_stdmelding std1,
mld_stdmeldinggroep stdg1,
mld_melding m2,
mld_stdmelding std2,
mld_stdmeldinggroep stdg2
WHERE m1.mld_melding_start_key = m2.mld_melding_key
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
AND std2.mld_stdmeldinggroep_key =
stdg2.mld_stdmeldinggroep_key
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
AND std1.mld_stdmeldinggroep_key =
stdg1.mld_stdmeldinggroep_key
AND UPPER (
SUBSTR (stdg2.mld_stdmeldinggroep_naam, 1, 1)) =
'Q'
AND UPPER (
SUBSTR (stdg1.mld_stdmeldinggroep_naam, 1, 1)) <>
'Q') q,
( SELECT MAX (d1.ins_deel_key) ins_deel_key,
mo1.mld_melding_key
FROM ins_deel d1,
mld_melding_object mo1,
ins_deel d2,
mld_melding_object mo2
WHERE mo1.ins_deel_key = d1.ins_deel_key
AND mo1.mld_melding_key = mo2.mld_melding_key
AND mo2.ins_deel_key = d2.ins_deel_key
AND d1.ins_deel_uitvoertijd <= d2.ins_deel_uitvoertijd
GROUP BY mo1.mld_melding_key) obj,
ins_deel d
WHERE mld_stdmelding_malus IS NOT NULL
AND m.mld_melding_status IN (0, 2, 3, 4, 5, 7, 99)
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
AND m.mld_melding_key = obj.mld_melding_key(+)
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND obj.ins_deel_key = d.ins_deel_key(+)
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_key = q.mld_melding_key(+)
AND std.mld_stdmeldinggroep_key =
stdg.mld_stdmeldinggroep_key(+)) g;
CREATE OR REPLACE VIEW nmms_v_rap_monitoring
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
fclt_f_status,
fclt_f_afgerond,
fclt_f_dienst,
hide_f_stdmelding_key,
wegingsfactor,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
)
AS
SELECT '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|| 'mld_key='
|| melding_key
|| '")''>'
|| melding_key
|| '</a>'
melding,
melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
afgerond,
dienst,
stdmelding_key,
wegingsfactor,
melding_omschrijving,
melding_opmerking
FROM nmms_v_monitoring;
CREATE OR REPLACE VIEW nmms_v_rap_monitoring_og
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
fclt_f_status,
fclt_f_afgerond,
fclt_f_dienst,
hide_f_stdmelding_key,
wegingsfactor,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
)
AS
SELECT html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
fclt_f_status,
fclt_f_afgerond,
fclt_f_dienst,
hide_f_stdmelding_key,
wegingsfactor,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
FROM nmms_v_rap_monitoring
WHERE fclt_f_afw IS NOT NULL;
CREATE OR REPLACE VIEW nmms_v_rap_monitoring_tot
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
wegingsfactor,
totaal
)
AS
SELECT html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
wegingsfactor,
COALESCE (kb, kp) * COALESCE (wegingsfactor, 1)
FROM nmms_v_rap_monitoring
WHERE (kb IS NOT NULL OR kp IS NOT NULL)
AND fclt_f_afgerond = 'x'
UNION ALL
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
thema,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250
FROM nmms_v_rap_monitoring
WHERE typekorting = 'Kb' AND thema IS NOT NULL AND indult = 'Nee'
AND fclt_f_afgerond = 'x'
GROUP BY thema, typekorting
HAVING COUNT (ruimte) > 4
UNION ALL
SELECT NULL,
NULL
NULL,
NULL,
NULL,
NULL,
ruimte,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250
FROM nmms_v_rap_monitoring
WHERE typekorting = 'Kb' AND thema IS NULL AND indult = 'Nee'
AND fclt_f_afgerond = 'x'
GROUP BY ruimte, typekorting
HAVING COUNT (ruimte) > 4
UNION ALL
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
(SELECT mld_stdmelding_omschrijving
FROM mld_stdmelding std
WHERE std.mld_stdmelding_key = r.hide_f_stdmelding_key),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
typekorting,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250
FROM nmms_v_rap_monitoring r
WHERE typekorting = 'Kp' AND indult = 'Nee'
AND fclt_f_afgerond = 'x'
GROUP BY hide_f_stdmelding_key, typekorting
HAVING COUNT (hide_f_stdmelding_key) > 4;
CREATE OR REPLACE VIEW nmms_v_dwh_monitoring
(
melding_key,
afw,
q_vervolg,
indult,
respijt,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
dienst,
stdmelding_key,
wegingsfactor,
melding_omschrijving,
melding_opmerking,
kostensoort_oms
)
AS
SELECT melding_key,
afw,
q_vervolg,
indult,
respijt,
kostenplaats,
locatie,
gebouw,
verdieping,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
dienst,
stdmelding_key,
wegingsfactor,
melding_omschrijving,
melding_opmerking,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort ks,
mld_stdmelding std
WHERE m.stdmelding_key = std.mld_stdmelding_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key)
FROM nmms_v_monitoring m;
CREATE OR REPLACE VIEW nmms_v_dwh_opdr_materiaal
(
opdr_id,
opdr_key,
opdr_datum,
kostenplaats,
aanvrager,
aanvrager_key,
aantal,
omschrijving,
prijs,
totaal_inkoop,
totaal_verkoop
)
AS
SELECT o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy'),
k.prs_kostenplaats_nr,
pf.prs_perslid_naam_full,
pf.prs_perslid_key,
mld_opdr_materiaal_aantal,
ud.fac_usrdata_omschr,
mld_opdr_materiaal_prijs,
mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs,
ROUND (
mld_opdr_materiaal_aantal * mld_opdr_materiaal_prijs
* COALESCE (
(SELECT MAX (u.uplift)
FROM aaxx_imp_uplift u
WHERE UPPER (soort_order) =
UPPER (ot.mld_typeopdr_omschrijving)
AND UPPER (u.prs_kostensoort_oms) =
ks.prs_kostensoort_upper
AND TO_CHAR (o.mld_opdr_datumbegin, 'yyyy-mm') =
u.jaar || '-' || LTRIM (TO_CHAR (u.maand, '00'))),
1),
2)
prijs_uplift
FROM mld_opdr_materiaal om,
fac_usrdata ud,
mld_opdr o,
mld_melding m,
prs_v_perslid_fullnames_all pf,
prs_kostenplaats k,
mld_stdmelding std,
prs_kostensoort ks,
mld_typeopdr ot
WHERE om.mld_opdr_key = o.mld_opdr_key
AND om.fac_usrdata_key = ud.fac_usrdata_key
AND o.mld_melding_key = m.mld_melding_key
AND o.prs_perslid_key = pf.prs_perslid_key
AND o.prs_kostenplaats_key = k.prs_kostenplaats_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key;
--------------------------------------------------------------
--
-- Real time monitoring views
--
--------------------------------------------------------------
CREATE OR REPLACE VIEW nmms_v_graph_vakgroep_open
(
fclt_xas_,
fclt_yas_,
fclt_yas2_,
sortering,
fclt_url,
fclt_3d_discipline_key
)
AS
SELECT ins_srtdiscipline_prefix || ' '
|| lcl.x ('ins_discipline_omschrijving',
d.ins_discipline_key,
d.ins_discipline_omschrijving),
COUNT (m.mld_melding_key) - SUM (uitvoeringoptijd) telaat,
SUM (uitvoeringoptijd) op_tijd,
-1 * COUNT (m.mld_melding_key) totaal,
'appl/mld/mld_search.asp?urole=fo'
|| '&'
|| 'autosearch=1'
|| '&'
|| 'disc_key_str='
|| d.ins_discipline_key,
d.ins_discipline_key
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd,
(SELECT mld_melding_key,
CASE SIGN (mld_melding_einddatum - SYSDATE)
WHEN -1 THEN 0
ELSE 1
END
uitvoeringoptijd
FROM mld_melding m2) uitv
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_melding_key = uitv.mld_melding_key
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
GROUP BY d.ins_discipline_key,
d.ins_discipline_omschrijving,
ins_srtdiscipline_prefix
ORDER BY COUNT (d.ins_discipline_omschrijving) DESC;
CREATE OR REPLACE VIEW nmms_v_graph_openst_behand
(
fclt_xas_,
fclt_yas_,
fclt_yas2_op_tijd
)
AS
SELECT COALESCE (behandelaar, 'Onbekend') behandelaar,
COUNT (mld_key) - SUM (uitvoeringoptijd) totaal,
SUM (uitvoeringoptijd) op_tijd
FROM (SELECT DISTINCT
m.mld_melding_key mld_key,
CASE
WHEN fac.gettrackingdate ('MLDREJ', m.mld_melding_key) IS NULL
THEN
CASE SIGN(fac.datumtijdplusuitvoertijd (
m.mld_melding_datum,
m.mld_melding_uitvoertijd,
'DAGEN')
- COALESCE (
fac.gettrackingdate (
'MLDREJ',
m.mld_melding_key),
COALESCE (
fac.gettrackingdate (
'MLDAFM',
m.mld_melding_key),
SYSDATE)))
WHEN -1
THEN
0
ELSE
1
END
ELSE
1
END
uitvoeringoptijd,
DECODE (
mld_melding_status,
7,
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_statusopdr_key IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
4,
COALESCE (
(SELECT MAX (prs_bedrijf_naam)
FROM mld_opdr o, prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_statusopdr_key IN (3, 4, 5, 8)), -- 3- Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
m.mld_melding_behandelaar_key)),
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key =
m.mld_melding_behandelaar_key))
behandelaar
FROM mld_melding m,
mld_discipline md,
prs_perslid p,
mld_stdmelding std
WHERE m.prs_perslid_key = p.prs_perslid_key
AND md.ins_discipline_key = std.mld_ins_discipline_key
AND std.mld_stdmelding_key = m.mld_stdmelding_key
AND mld_melding_status IN (2, 3, 4, 7, 0)) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
GROUP BY behandelaar;
GRANT SELECT ON nmms_v_dwh_monitoring TO aafm;
GRANT SELECT ON nmms_v_dwh_opdr_materiaal TO aafm;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('NMMS', 1); END;
/
COMMIT;
spool off