Merge DB19 patches
svn path=/Customer/trunk/; revision=20052
This commit is contained in:
332
NMMS/nmms.sql
Normal file
332
NMMS/nmms.sql
Normal file
@@ -0,0 +1,332 @@
|
||||
-- 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;
|
||||
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;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE VIEW nmms_v_rap_monitoring
|
||||
(
|
||||
html_melding,
|
||||
fclt_f_afw,
|
||||
q_vervolg,
|
||||
indult,
|
||||
respijt,
|
||||
ruimte,
|
||||
omschrijving,
|
||||
begin,
|
||||
gereed,
|
||||
thtijdstip,
|
||||
tht,
|
||||
wht,
|
||||
regime,
|
||||
groep,
|
||||
typekorting,
|
||||
basiskorting,
|
||||
variabelekorting,
|
||||
uren,
|
||||
kb,
|
||||
prestatiekorting,
|
||||
factor,
|
||||
kp,
|
||||
wegingsfactor
|
||||
)
|
||||
AS
|
||||
SELECT '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
|
||||
|| 'mld_key='
|
||||
|| mld_melding_key
|
||||
|| '")''>'
|
||||
|| mld_melding_key
|
||||
|| '</a>'
|
||||
melding,
|
||||
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,
|
||||
ruimte,
|
||||
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,
|
||||
DECODE (kortingtype,
|
||||
'B',
|
||||
nmms_get_ins_weegfactor (mld_melding_key, wegingsfactor))
|
||||
wegingsfactor
|
||||
FROM (SELECT m.aantal,
|
||||
m.mld_melding_key,
|
||||
m.mld_melding_indult,
|
||||
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, 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,
|
||||
alg_ruimte_nr || '-' || alg_ruimte_omschrijving ruimte,
|
||||
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
|
||||
(select max(d1.ins_deel_key) from ins_deel d1, mld_melding_object mo1, ins_deel d2, mld_melding_object mo2
|
||||
where m.mld_melding_key = mo1.mld_melding_key
|
||||
and mo1.ins_deel_key = d1.ins_deel_key
|
||||
and m.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 )) 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,
|
||||
alg_srtruimte_prijs4 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,
|
||||
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,
|
||||
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,
|
||||
(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
|
||||
WHERE mld_stdmelding_malus IS NOT NULL
|
||||
AND m.mld_melding_key > 100007 -- tijdelijk om oude meldingen niet te tonen
|
||||
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_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;
|
||||
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: nmms.sql $', '$Revision$', 0); END;
|
||||
/
|
||||
BEGIN fac.registercustversion('NMMS', 1); END;
|
||||
/
|
||||
COMMIT;
|
||||
spool off
|
||||
Reference in New Issue
Block a user