Files
Customer/HGCU/hgcu.sql
Arthur Egberink 8130ff96b3 HGCU#74106 -- Implementatie Herman Gorter Complex Utrecht
svn path=/Customer/trunk/; revision=61735
2023-09-06 13:36:05 +00:00

1365 lines
44 KiB
PL/PgSQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'HGCU.SQL'
DEFINE dbuser = 'HGCU'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE hgcu
AS
FUNCTION get_first_melding (p_melding_key IN NUMBER, p_index IN NUMBER)
RETURN NUMBER;
FUNCTION get_index_value (p_date IN DATE)
RETURN NUMBER;
FUNCTION klant_melding(p_mld_melding_key IN NUMBER)
RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY hgcu
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, m2.mld_melding_key
FROM mld_melding m1,
mld_stdmelding std1,
mld_melding m2,
mld_stdmelding std2
WHERE m1.mld_melding_key = p_melding_key
AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
AND m2.mld_melding_parentkey IS NULL
AND NOT EXISTS (SELECT 1
FROM hgcu_monitoring
WHERE melding_key = m2.mld_melding_key)
AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
AND std2.mld_stdmelding_malus IS NOT NULL -- alleen meldingen waarvoor een malus geldt
AND m1.mld_alg_onroerendgoed_keys =
m2.mld_alg_onroerendgoed_keys -- op dezelfde ruimte
AND std1.prs_dienst_key =
std2.prs_dienst_key -- voor dezelfde dienst
AND std1.mld_stdmelding_regime =
std2.mld_stdmelding_regime -- met hetzelfde regime
AND m1.mld_melding_t_uitvoertijd.eenheid =
m2.mld_melding_t_uitvoertijd.eenheid -- in dezelfde eenheid
AND m1.mld_melding_key <> m2.mld_melding_key
AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
AND fac.gettrackingdate ('MLDAFM', m2.mld_melding_key)
ORDER BY m2.mld_melding_datum;
v_melding_key NUMBER;
l_melding_key NUMBER;
v_datum_begin DATE;
l_datum_begin DATE;
v_loop_index NUMBER;
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;
v_loop_index := 1;
FOR rec IN c
LOOP
-- door de sortering op de cursor hoeven we alleen het eerste record te gebruiken.
IF p_index < 10 AND v_loop_index = 1
THEN
BEGIN
l_melding_key :=
hgcu.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;
v_loop_index := v_loop_index + 1;
END IF;
END LOOP;
RETURN v_melding_key;
END;
FUNCTION get_index_value (p_date IN DATE)
RETURN NUMBER
AS
BEGIN
SELECT EXP(SUM(LN(1+fac_usrdata_prijs/100))) -- Dit bepaald het product van de groepering
INTO v_result
FROM fac_usrdata
WHERE fac_usrtab_key = 1 -- indexatie
AND ADD_MONTHS (fac_usrdata_vervaldatum, -12) < p_date;
RETURN v_result;
END;
FUNCTION klant_melding(p_mld_melding_key IN NUMBER)
RETURN NUMBER
AS
v_bedrijf_key NUMBER;
BEGIN
SELECT a.prs_bedrijf_key
INTO v_bedrijf_key
FROM mld_melding m, prs_perslid p, prs_v_afdeling a
WHERE m.prs_perslid_key_voor = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND m.mld_melding_key = p_mld_melding_key;
IF v_bedrijf_key = 61 -- HGC
THEN
RETURN 1;
END IF;
RETURN 0;
END;
END;
/
-- Selecteer oa. de MIN(begintijd) en MAX(eindtijd) van overlappende meldingen:
-- op dezelfde ruimte voor dezelfde dienst
-- met hetzelfde regime in dezelfde eenheid
-- Hierin ook opgenomen of men een fictieve gereeddatum heeft meegegeven (ticket 62463)
CREATE OR REPLACE VIEW hgcu_v_startmelding_geg
(
m_start,
mld_alg_onroerendgoed_keys,
mld_melding_status,
mld_melding_afgerond,
aantal,
overlappend,
t_van,
gereed,
mld_melding_spoed,
mld_stdmelding_key,
prs_kostenplaats_key,
max_t_actual,
min_t_sla,
max_t_respijt,
min_tht_einddatum_start,
mld_melding_indult,
mld_melding_einddatum_std,
mld_melding_einddatum,
mld_melding_omschrijving,
mld_melding_opmerking,
klant_melding,
prs_bedrijf_key
)
AS
SELECT m.m_start,
x.mld_alg_onroerendgoed_keys,
-- als <20><>n van de onderliggende meldingen "open", dan moet ook M_START status Uitgegeven krijgen
DECODE (m.open, 0, x.mld_melding_status, 4) mld_melding_status, --- 4 = Geaccepteerd???
x.mld_melding_afgerond, -- mld_melding_afgerond van alleen M_START
m.aantal,
m.overlappend,
m.t_van, -- min_melding_datum
DECODE(m.gereed, TO_DATE('20991231', 'YYYYMMDD'), TO_DATE(NULL), m.gereed), -- max_actual_einddatum
x.mld_melding_spoed, -- mld_melding_spoed van alleen M_START
x.mld_stdmelding_key, -- mld_stdmelding_key van alleen M_START
x.prs_kostenplaats_key, -- prs_kostenplaats_key van alleen M_START
mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd!
m.t_van,
DECODE (m.gereed, TO_DATE('20991231', 'YYYYMMDD'), SYSDATE, m.gereed),
x.mld_stdmelding_key,
x.mld_melding_spoed,
x.mld_alg_onroerendgoed_keys,
NULL)
max_t_actual,
MLD_T_UITVOERTIJD (m.min_uitvoertijd, m.min_uitvoertijd_eenheid) min_t_sla,
MLD_T_UITVOERTIJD (COALESCE(m.max_respijt,0), m.max_respijt_eenheid) max_t_respijt, -- altijd dezelfde eenheid als uitvoertijd???
MLD.geteinddatum (
m.m_start,
MLD_T_UITVOERTIJD (m.min_uitvoertijd + m.max_respijt, m.min_uitvoertijd_eenheid),
m.t_van)
min_tht_einddatum_start, -- meest nabije tht-einddatum van overlappende meldingen (t_van + MIN SLA + MAX respijt)
m.mld_melding_indult, -- max_melding_indult
m.mld_melding_einddatum_std, -- min_melding_einddatum_std of min_tht_einddatum_start???
m.mld_melding_einddatum, -- max_melding_einddatum
x.mld_melding_omschrijving, -- mld_melding_oms. van alleen M_START
x.mld_melding_opmerking, -- mld_melding_opm. van alleen M_START
m.klant_melding, -- melding gemeld door medewerker klant
m.prs_bedrijf_key -- bedrijf key van de melder
FROM ( SELECT m.m_start,
SUM (m.open) open,
COUNT (m.mld_melding_key) aantal,
LISTAGG (m.mld_melding_key, ',')
WITHIN GROUP (ORDER BY m.mld_melding_key)
AS overlappend,
MIN (m.mld_melding_datum) t_van, -- min_melding_datum
MAX (m.gereed) gereed, -- max_actual_einddatum
MIN (m.mld_melding_t_uitvoertijd.tijdsduur) min_uitvoertijd,
MIN (m.mld_melding_t_uitvoertijd.eenheid) min_uitvoertijd_eenheid,
MAX (m.mld_melding_t_respijt.tijdsduur) max_respijt,
MAX (m.mld_melding_t_respijt.eenheid) max_respijt_eenheid, -- altijd dezelfde eenheid als uitvoertijd???
MAX (m.mld_melding_indult) mld_melding_indult,
MIN (m.mld_melding_einddatum_std) mld_melding_einddatum_std, -- min_melding_einddatum_std of min_thtsla_einddatum_start???
MAX (m.mld_melding_einddatum) mld_melding_einddatum,
MAX (m.klant_melding) klant_melding,
MAX (m.prs_bedrijf_key) prs_bedrijf_key
FROM (SELECT hgcu.get_first_melding (m.mld_melding_key, 1) m_start,
m.mld_melding_key,
DECODE (m.mld_melding_status, 4, 1, 0) open, -- open = Geaccepteerd???
m.mld_melding_datum,
COALESCE(fac.gettrackingdate ('MLDAFM', m.mld_melding_key), TO_DATE('20991231', 'YYYYMMDD')) gereed,
m.mld_melding_t_uitvoertijd,
m.mld_melding_t_respijt,
m.mld_melding_indult,
m.mld_melding_einddatum_std,
m.mld_melding_einddatum,
a.prs_bedrijf_key,
hgcu.klant_melding(m.mld_melding_key) klant_melding
FROM mld_melding m, mld_stdmelding std, prs_perslid p, prs_afdeling a
WHERE m.mld_melding_parentkey IS NULL
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
-- meldingen die al geexporteerd zijn (en in de tabel hgcu_monitoring staan) komen niet meer in deze view
AND NOT EXISTS
(SELECT 1
FROM hgcu_monitoring
WHERE melding_key = m.mld_melding_key)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_malus IS NOT NULL -- alleen meldingen waarvoor een malus geldt
) m
GROUP BY m.m_start) m,
mld_melding x -- gedefinieerde set gegevens bij M_START als referentie
WHERE m.m_start = x.mld_melding_key;
--
-- Basis monitoringsview voor operationele zaken. Meldingen die opgenomen zijn in de tabel hgcu_monitoring komen niet meer voor in deze view.
--
CREATE OR REPLACE VIEW hgcu_v_monitoring
AS
SELECT m_start mld_melding_key,
DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
|| DECODE (g.respijt.tijdsduur, 0, '', 'R') -- er is een respijt ingevuld
|| DECODE (mld_melding_indult, 1, 'I', '') afw, -- indult is aangevinkt dus melding doet niet mee
DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja') indult,
DECODE (g.respijt.tijdsduur,
0, NULL,
TO_CHAR (ROUND (g.respijt.tijdsduur, 2)))
respijt,
prs_kostenplaats_nr kostenplaats,
alg_locatie_code locatie,
alg_gebouw_upper gebouw,
alg_verdieping_volgnr verdieping,
ruimte,
object,
mld_stdmelding_omschrijving omschrijving,
t_van begin,
gereed,
thtijdstip,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = m_start --mld_melding_key
AND fac_srtnotificatie_key = 56)
verwerkt,
eenheid,
ROUND (g.tht.tijdsduur, 2) tht,
ROUND (g.actual.tijdsduur, 2) wht,
regime,
mld_stdmeldinggroep_naam groep,
prefix typekorting,
bk basiskorting,
vk variabelekorting,
DECODE (telaat, 1, ROUND (g.uitloop.tijdsduur, 2)) wht_tht,
DECODE (
telaat,
1,
DECODE(g.bk, null, 0, g.bk + CEIL (g.uitloop.tijdsduur/1) * g.vk)) -- herhalingstijd is altijd een uur.
totaal,
(SELECT mld_statuses_omschrijving
FROM mld_statuses
WHERE mld_statuses_key = mld_melding_status) status,
DECODE (mld_melding_afgerond, 1, 'x') afgerond,
(SELECT prs_dienst_omschrijving
FROM prs_dienst
WHERE prs_dienst_key = g.prs_dienst_key) dienst,
mld_stdmelding_key stdmelding_key,
mld_ins_discipline_key discipline_key,
overlappend,
mld_melding_omschrijving melding_omschrijving,
mld_melding_opmerking melding_opmerking,
klant_melding,
(SELECT prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = g.prs_bedrijf_key) bedrijf_naam
FROM (SELECT m.m_start,
m.aantal,
DECODE (m.aantal, 1, NULL, m.overlappend) overlappend,
m.mld_melding_status,
m.mld_melding_afgerond,
m.mld_melding_indult,
m.mld_melding_omschrijving,
m.mld_melding_opmerking,
std.prs_dienst_key,
std.mld_stdmelding_key,
std.mld_ins_discipline_key,
std.mld_stdmelding_omschrijving,
std.mld_stdmelding_malus,
std.mld_stdmelding_malusbasis,
m.t_van,
m.gereed,
m.mld_melding_einddatum_std thtijdstip,
stdg.mld_stdmeldinggroep_naam,
24 regime,
sd.ins_srtdiscipline_prefix prefix,
kp.prs_kostenplaats_nr,
rg.alg_locatie_code,
rg.alg_gebouw_upper,
rg.alg_verdieping_volgnr,
rg.alg_ruimte_nr || '-' || rg.alg_ruimte_omschrijving
ruimte,
COALESCE ((SELECT stsr.mld_stdmsrtruimte_malusbasis
FROM mld_stdmsrtruimte stsr
WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key
AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malusbasis)
bk,
COALESCE ((SELECT stsr.mld_stdmsrtruimte_malus
FROM mld_stdmsrtruimte stsr
WHERE stsr.mld_stdmelding_key = std.mld_stdmelding_key
AND stsr.alg_srtruimte_key = rg.alg_srtruimte_key), std.mld_stdmelding_malus) vk,
d.ins_deel_omschrijving object,
-- 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
SIGN(m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur - m.max_t_respijt.tijdsduur) -- positief, dan te laat
telaat,
m.max_t_actual actual, -- MAX actuele doorlooptijd
m.min_t_sla thtsla, -- MIN SLA
m.min_t_sla.eenheid eenheid,
m.max_t_respijt respijt, -- MAX respijt
MLD_T_UITVOERTIJD (m.min_t_sla.tijdsduur + m.max_t_respijt.tijdsduur, m.min_t_sla.eenheid)
tht, -- MIN SLA + MAX respijt
MLD_T_UITVOERTIJD (m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur - m.max_t_respijt.tijdsduur, m.max_t_actual.eenheid)
uitloop, -- hoeveel te laat
-- is de tijd van de melding aangepast?
(SELECT COUNT ( * )
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_tracking_refkey = m.m_start -- mld_melding_key VAN MELDING MET LAAGSTE KEY???
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDUPD'
AND (t.fac_tracking_oms LIKE '%Start :%'
OR t.fac_tracking_oms LIKE '%Afgemeld:%'))
antedateren,
klant_melding,
prs_bedrijf_key
FROM hgcu_v_startmelding_geg m,
mld_stdmelding std,
mld_stdmeldinggroep stdg,
mld_discipline md,
ins_srtdiscipline sd,
prs_kostenplaats kp,
alg_v_ruimte_gegevens rg,
alg_srtruimte sr,
-- vind object met kortste doorlooptijd per melding
(SELECT mld_melding_key,
MLD.getlowestobjectuitvoer (mld_melding_key)
ins_deel_key
FROM mld_melding_object) obj,
ins_deel d
WHERE m.mld_melding_status IN (0, 2, 3, 4, 5, 6, 7, 99) -- alles behalve 1=Afgewezen
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND std.mld_stdmeldinggroep_key = stdg.mld_stdmeldinggroep_key(+)
AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND klant_melding = 1
AND m.m_start = obj.mld_melding_key(+) -- mld_melding_key VAN MELDING MET LAAGSTE KEY???
AND obj.ins_deel_key = d.ins_deel_key(+)
AND std.mld_stdmelding_slabewaken = 1) g;
--
-- Rapportage gebasseerd op de basis rapportage
--
CREATE OR REPLACE VIEW hgcu_v_rap_monitoring
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
eenheid,
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,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
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,
to_char(begin, 'dd-mm-yyyy hh24:mi:ss') begin,
to_char(gereed, 'dd-mm-yyyy hh24:mi:ss') gereed,
to_char(thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
status,
afgerond,
dienst,
stdmelding_key,
COALESCE(kb,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(klant_melding, 1, 'x', ''),
bedrijf_naam,
melding_omschrijving,
melding_opmerking
FROM hgcu_v_monitoring;
--
-- rapportage view tbv de opdrachtgever. In deze gestylede rapportage kan de opdrachtgever afwijkingen goedkeuren.
--
CREATE OR REPLACE VIEW hgcu_v_rap_monitoring_og
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
eenheid,
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,
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,
eenheid,
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,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
FROM hgcu_v_rap_monitoring
WHERE fclt_f_afw IS NOT NULL OR fclt_f_afgerond IS NOT NULL;
--
-- view van nog te exporteren meldingen die afwijken of tot een korting leiden.
--
CREATE OR REPLACE VIEW hgcu_v_monitoring_tot
(
melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
dienst,
stdmelding_key,
totaal,
overlappend,
kinderen,
bedrijf_naam,
klant_melding
)
AS
SELECT melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
dienst,
stdmelding_key,
COALESCE(kb,0),
SUBSTR(overlappend,1,100),
NULL,
bedrijf_naam,
klant_melding
FROM hgcu_v_monitoring
WHERE (kb IS NOT NULL OR kp IS NOT NULL)
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
AND (gereed < TRUNC (SYSDATE, 'MONTH')
OR TRUNC (SYSDATE, 'MONTH') =
(SELECT TRUNC (MAX (export_datum), 'MONTH')
FROM hgcu_monitoring))
UNION ALL
-- herhalingskorting op beschikbaarheid bij thema
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
thema,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
FROM hgcu_v_monitoring
WHERE typekorting = 'Kb'
AND thema IS NOT NULL
AND indult = 'Nee'
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
AND (gereed < TRUNC (SYSDATE, 'MONTH')
OR TRUNC (SYSDATE, 'MONTH') =
(SELECT TRUNC (MAX (export_datum), 'MONTH')
FROM hgcu_monitoring))
GROUP BY thema, typekorting
HAVING COUNT (ruimte) > 4
UNION ALL
-- herhalingskorting op beschikbaarheid bij ruimte
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
ruimte,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
FROM hgcu_v_monitoring
WHERE typekorting = 'Kb'
AND thema IS NULL
AND indult = 'Nee'
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
AND (gereed < TRUNC (SYSDATE, 'MONTH')
OR TRUNC (SYSDATE, 'MONTH') =
(SELECT TRUNC (MAX (export_datum), 'MONTH')
FROM hgcu_monitoring))
GROUP BY ruimte, typekorting
HAVING COUNT (ruimte) > 4
UNION ALL
-- Herhalingskorting op prestatiegebrek (stdmelding)
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
(SELECT mld_stdmelding_omschrijving
FROM mld_stdmelding std
WHERE std.mld_stdmelding_key = r.stdmelding_key),
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
FROM hgcu_v_monitoring r
WHERE typekorting = 'Kp'
AND indult = 'Nee'
AND discipline_key <> 354 -- schoonmaak
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
AND (gereed < TRUNC (SYSDATE, 'MONTH')
OR TRUNC (SYSDATE, 'MONTH') =
(SELECT TRUNC (MAX (export_datum), 'MONTH')
FROM hgcu_monitoring))
GROUP BY stdmelding_key, typekorting
HAVING COUNT (stdmelding_key) > 4
UNION ALL
-- Herhalingskorting op prestatiegebrek schoonmaak (vakgroep key 354) en ruimte
SELECT NULL,
NULL,
NULL,
NULL,
NULL,
ruimte,
NULL,
NULL,
'Schoonmaak',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
'Kh',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
250,
COUNT ( * ) - 4,
(COUNT ( * ) - 4) * 250,
NULL,
NULL,
NULL,
(COUNT ( * ) - 4) * 250,
NULL,
listagg (melding_key, ',') WITHIN GROUP (ORDER BY melding_key)
AS kinderen,
NULL,
NULL
FROM hgcu_v_monitoring r
WHERE typekorting = 'Kp'
AND indult = 'Nee'
AND discipline_key = 354 -- schoonmaak
AND ( (status = 'Afgemeld' AND afw IS NULL) OR (status = 'Historie'))
AND (gereed < TRUNC (SYSDATE, 'MONTH')
OR TRUNC (SYSDATE, 'MONTH') =
(SELECT TRUNC (MAX (export_datum), 'MONTH')
FROM hgcu_monitoring))
GROUP BY discipline_key, ruimte, typekorting
HAVING COUNT (ruimte) > 4;
-- rapportage view van nog te exporteren meldingen die afwijken of tot een korting leiden.
CREATE OR REPLACE VIEW hgcu_v_rap_monitoring_tot
(
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
kinderen,
totaal
)
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,
to_char(begin, 'dd-mm-yyyy hh24:mi:ss') begin,
to_char(gereed, 'dd-mm-yyyy hh24:mi:ss') gereed,
to_char(thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
kinderen,
totaal
FROM hgcu_v_monitoring_tot;
-- rapport om historische informatie te tonen
CREATE OR REPLACE VIEW hgcu_v_monitoring_history
( fclt_d_export_datum,
html_melding,
hide_f_melding_key,
fclt_f_afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
fclt_f_dienst,
hide_f_stdmelding_key,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
hide_f_melding_omschrijving,
hide_f_melding_opmerking
)
AS
SELECT TO_CHAR (export_datum, 'dd-mm-yyyy') export_datum,
'<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,
TO_CHAR (begin, 'dd-mm-yyyy hh24:mi:ss') begin,
TO_CHAR (gereed, 'dd-mm-yyyy hh24:mi:ss') gereed,
TO_CHAR (thtijdstip, 'dd-mm-yyyy hh24:mi:ss') thtijdstip,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
dienst,
stdmelding_key,
COALESCE(kb,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(klant_melding, 1, 'x', ''),
prs_bedrijf_naam,
mld_melding_omschrijving,
mld_melding_opmerking
FROM hgcu_monitoring mo, mld_melding m
WHERE mo.melding_key = m.mld_melding_key
AND begin IS NOT NULL;
CREATE OR REPLACE VIEW hgcu_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,
herhalingskorting,
aantal,
kh,
status,
dienst,
stdmelding_key,
totaal,
overlappend,
te_laat,
nmm,
bedrijf,
melding_omschrijving,
melding_opmerking,
kostensoort_oms,
verwerkt,
export_datum
)
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,
herhalingskorting,
aantal,
kh,
'Historie',
dienst,
stdmelding_key,
COALESCE(kb,0) totaal,
overlappend,
DECODE(SIGN(thtijdstip - COALESCE(gereed,SYSDATE)), -1, 'x', '') te_laat,
DECODE(klant_melding, 1, 'x', ''),
prs_bedrijf_naam,
mld_melding_omschrijving,
mld_melding_opmerking,
(SELECT prs_kostensoort_oms
FROM prs_kostensoort ks, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.prs_kostensoort_key = ks.prs_kostensoort_key),
verwerkt,
export_datum
FROM hgcu_monitoring mo, mld_melding m
WHERE mo.melding_key = m.mld_melding_key
AND totaal IS NOT NULL;
CREATE OR REPLACE PROCEDURE hgcu_export_freeze_monitoring (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
CURSOR c1
IS
SELECT melding_key
FROM hgcu_v_monitoring
WHERE status = 'Afgemeld'
AND gereed < TRUNC (SYSDATE, 'MONTH')
AND afw IS NULL -- geen afwijkingen die goedgekeurd moeten worden
AND afgerond IS NULL; -- expliciete goedkeuring staat niet aan
CURSOR c2
IS
SELECT m_start,
m.mld_melding_key,
(SELECT mld_melding_status
FROM mld_melding ms
WHERE ms.mld_melding_key = m_start)
mld_melding_status
FROM (SELECT hgcu.get_first_melding (mld_melding_key, 1) m_start,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key) gereed,
m.*
FROM mld_melding m
WHERE m.mld_melding_parentkey IS NULL
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) <
TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN
(SELECT melding_key FROM hgcu_monitoring WHERE melding_key IS NOT NULL)) m,
hgcu_v_monitoring mo
WHERE m_start <> m.mld_melding_key AND m_start = mo.melding_key
AND ( (status = 'Afgemeld' AND afw IS NULL) -- startmelding mag niet hangen op goedkeuring
OR (status = 'Historie'));
CURSOR c3
IS
SELECT * FROM hgcu_v_monitoring_tot;
BEGIN
-- Gaan we vandaag de freeze starten? Dit mag alleen op de derde werkdag van de maand om 17:00 uur.
IF fac.count_Work_Days(trunc(sysdate, 'MON'), sysdate) = 2
THEN
-- Zet de meldingen die geen afwijking kennen en die niet op status afgerond staan naar status verwerkt
FOR rec IN c1
LOOP
BEGIN
BEGIN
mld.setmeldingstatus (rec.melding_key, 6, 4);
END;
END;
END LOOP;
-- zet slave meldingen van samenvallende meldingen ook op verwerkt
FOR rec IN c2
LOOP
BEGIN
IF rec.mld_melding_status = 6 OR rec.mld_melding_status = 5 -- verwerkt of afgemeld
THEN
BEGIN
mld.setmeldingstatus (rec.mld_melding_key, 6, 4);
END;
END IF;
END;
END LOOP;
-- Voeg de entries uit het monitoringsoverzicht toe aan de freeze tabel.
FOR rec IN c3
LOOP
BEGIN
BEGIN
INSERT INTO hgcu_monitoring (melding_key,
afw,
q_vervolg,
indult,
respijt,
ruimte,
object,
thema,
omschrijving,
begin,
gereed,
thtijdstip,
verwerkt,
eenheid,
tht,
wht,
regime,
groep,
typekorting,
basiskorting,
variabelekorting,
uren,
kb,
prestatiekorting,
factor,
kp,
herhalingskorting,
aantal,
kh,
dienst,
stdmelding_key,
totaal,
overlappend,
kinderen,
prs_bedrijf_naam,
klant_melding,
export_datum)
VALUES (rec.melding_key,
rec.afw,
rec.q_vervolg,
rec.indult,
rec.respijt,
rec.ruimte,
rec.object,
rec.thema,
rec.omschrijving,
rec.begin,
rec.gereed,
rec.thtijdstip,
rec.verwerkt,
rec.eenheid,
rec.tht,
rec.wht,
rec.regime,
rec.groep,
rec.typekorting,
rec.basiskorting,
rec.variabelekorting,
rec.uren,
rec.kb,
rec.prestatiekorting,
rec.factor,
rec.kp,
rec.herhalingskorting,
rec.aantal,
rec.kh,
rec.dienst,
rec.stdmelding_key,
DECODE (rec.indult, 'Ja', 0, rec.totaal),
rec.overlappend,
rec.kinderen,
rec.bedrijf_naam,
rec.klant_melding,
SYSDATE);
END;
END;
END LOOP;
INSERT INTO hgcu_monitoring (melding_key, export_datum)
SELECT mld_melding_key, SYSDATE
FROM mld_melding m
WHERE m.mld_melding_status = 6 -- Historie
AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) <
TRUNC (SYSDATE, 'MONTH')
AND m.mld_melding_key NOT IN (SELECT nm.melding_key
FROM hgcu_monitoring nm
WHERE nm.melding_key IS NOT NULL);
COMMIT;
END IF;
END hgcu_export_freeze_monitoring;
/
CREATE OR REPLACE VIEW hgcu_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;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile