Files
Customer/BVB1/bvb1.sql
Arthur Egberink 0640bb5c5d BVB1#79790 -- Diverse aanpassingen naar aanleiding van het gesprek op 16 augustus
svn path=/Customer/trunk/; revision=61537
2023-08-23 07:44:17 +00:00

479 lines
23 KiB
MySQL

--
-- $Id$
--
DEFINE thisfile = 'bvb1.SQL'
DEFINE dbuser = 'BVB1'
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 BVB1
AS
PROCEDURE melding_after_save (p_melding_key IN NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY BVB1
AS
PROCEDURE melding_after_save (p_melding_key IN NUMBER)
AS
CURSOR c IS
SELECT mld_melding_key
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND BITAND(std.mld_stdmelding_planbaar,4) = 4
AND m.mld_melding_status = 4
AND mld_melding_actiedatum IS NULL;
v_tijdsduur NUMBER;
v_eenheid VARCHAR2(1);
v_actiedatum DATE;
v_status MLD_MELDING.MLD_MELDING_STATUS%TYPE;
BEGIN
-- meldingen die binnen een dag afgehandeld moeten worden krijgen
-- direct een actiedatum. Hierdoor komen ze in het planbord te staan.
SELECT std.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur,
std.mld_stdmelding_t_uitvoertijd.eenheid eenheid,
m.mld_melding_actiedatum,
m.mld_melding_status
INTO v_tijdsduur, v_eenheid, v_actiedatum, v_status
FROM mld_stdmelding std, mld_melding m
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_key = p_melding_key;
IF v_actiedatum IS NULL
AND ( v_eenheid = 'D' AND v_tijdsduur = 1
OR v_eenheid = 'U' AND v_tijdsduur <= 8)
THEN
UPDATE mld_melding
SET mld_melding_actiedatum = mld_melding_datum
WHERE mld_melding_key = p_melding_key;
END IF;
-- Als de melding geaccepteerd wordt en de actiedatum is nog leeg dan gaan we de actiedatum
-- vullen met de dag van vandaag zodat de melding ook op de kalender (rapportage) verschijnt.
FOR rec IN c
LOOP
UPDATE mld_melding
SET mld_melding_actiedatum = SYSDATE
WHERE mld_melding_key = rec.mld_melding_key;
END LOOP;
END;
END;
/
-- view om overzicht van de geplande acties te krijgen.
CREATE OR REPLACE VIEW bvb1_v_rap_gepl_acties
AS
SELECT o.mld_opdr_key,
pf.prs_perslid_naam_full,
o.mld_melding_key,
fac_activiteit_omschrijving,
fac_activiteit_periode,
DECODE (fac_activiteit_eenheid,
4, 'jaarlijks',
3, 'maandelijks',
2, 'wekelijks',
1, 'dagelijks') fac_activiteit_eenheid,
o.mld_opdr_datumbegin,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6) mld_opdr_afgemeld
FROM fac_activiteit a,
mld_opdr ao,
mld_melding m,
mld_opdr o,
prs_v_perslid_fullnames_all pf
WHERE a.fac_activiteit_key = ao.fac_activiteit_key
AND ao.mld_melding_key = m.mld_melding_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_uitvoerende_keys = pf.prs_perslid_key;
-- rapport om de opmerkingen van de inspecteur te zien
CREATE OR REPLACE VIEW bvb1_v_rap_deel_notities
AS
SELECT n.ins_deel_note_aanmaak,
n.ins_deel_note_omschrijving,
pf.prs_perslid_naam_full,
dg.ins_discipline_omschrijving,
dg.ins_srtgroep_omschrijving,
dg.ins_srtdeel_omschrijving,
dg.ins_srtdeel_upper,
dg.alg_gebouw_omschrijving,
dg.alg_gebouw_upper,
dg.alg_verdieping_omschrijving,
dg.alg_verdieping_code,
dg.alg_ruimte_nr,
dg.ins_deel_omschrijving,
dg.ins_deel_aantal,
dg.ins_deel_opmerking,
dg.ins_deel_vervaldatum
FROM ins_deel_note n,
ins_v_deel_gegevens dg,
prs_v_perslid_fullnames_all pf
WHERE n.ins_deel_key = dg.ins_deel_key
AND n.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW bvb1_v_rap_conditiemetingen
AS
SELECT m.mld_melding_key,
l.alg_locatie_code complexnummer,
l.alg_locatie_omschrijving complexnaam,
aog.alg_gebouw_code clusternummer,
aog.alg_gebouw_naam clusternaam,
aog.alg_gebouw_groep gebouwgroep,
id.ins_discipline_omschrijving hoofdrecept,
isg.ins_srtgroep_omschrijving groeprecept,
isd.ins_srtdeel_omschrijving || ' (' || isd.ins_srtdeel_code || ')' subrecept,
d.ins_deel_omschrijving identificatie,
m.mld_melding_key gebreknummer,
m.mld_melding_datum datum_tijd,
TO_CHAR(m.MLD_MELDING_ACTIEDATUM, 'YYYY') uitvoerjaar,
TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') datum,
pf.prs_perslid_naam_full inspecteur,
s.mld_statuses_omschrijving status,
std.mld_stdmelding_omschrijving gebrek,
m.mld_melding_omschrijving omschrijving,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ERNST'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) ernst,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'OMVANG'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) omvang,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'INTENSITEIT'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) intensiteit,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT1'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) veiligheid_gezondheid,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT2'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) cultuurhistorische_waarde,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT3'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) gebruik_en_bedrijfsproces,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT4'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) technische_vervolgschade,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT5'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) toename_klachtenonderhoud,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT6'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key) beleving_esthetica,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'KOSTEN'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) kosten,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'EENHEID'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) eenheid,
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'TAAKGROEP'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND mk.mld_melding_key = m.mld_melding_key) taakgroep,
(SELECT k.mld_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'FOTO' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key) foto
FROM mld_melding m,
mld_melding_object mo,
ins_deel d,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
mld_statuses s,
prs_v_perslid_fullnames_all pf,
mld_stdmelding std,
mld_discipline md
WHERE m.mld_melding_key = mo.mld_melding_key
AND d.ins_deel_key = mo.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
AND isg.ins_discipline_key = id.ins_discipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND l.alg_locatie_key = aog.alg_locatie_key
AND s.mld_statuses_key = m.mld_melding_status
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = md.ins_discipline_key
AND FAC.getsetting('cnd_gebreken_srtdisc_key') = md.ins_srtdiscipline_key;
-- RTM views
-- RTM voor openstaande meldingen.
CREATE OR REPLACE VIEW bvb1_v_rtm_meldingen
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) - LEVEL + 1 datum
FROM DUAL
CONNECT BY LEVEL <= 30)
SELECT datum
fclt_f_datum,
mld_melding_key,
mld_stdmelding_omschrijving,
ins_discipline_omschrijving,
ins_discipline_key fclt_3d_discipline_key,
ins_srtdiscipline_omschrijving
FROM (SELECT datums.datum,
m.mld_melding_key,
std.mld_stdmelding_omschrijving,
d.ins_discipline_omschrijving,
d.ins_discipline_key,
ins_srtdiscipline_omschrijving
FROM mld_melding m, datums, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd
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_status NOT IN (1) -- Afgewezen
AND datums.datum BETWEEN mld_melding_datum AND COALESCE(MLD.getmeldingstatusdate(m.mld_melding_key, 5), SYSDATE +1));
-- View om QR-codes bij objecten te tonen.
CREATE OR REPLACE VIEW bvb1_v_rap_qr_deel
AS
SELECT fac_bookmark_naam,
fac_bookmark_id,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
alg_locatie_key,
alg_gebouw_omschrijving,
ins_deel_aanmaak,
ins_deel_key
FROM fac_bookmark b, ins_v_deel_gegevens d
WHERE fac_bookmark_expire IS NULL
AND fac_bookmark_id = '5XaFlgljfYX2_ta-';
CREATE OR REPLACE VIEW bvb1_rap_cal_planning
AS
SELECT m.mld_melding_behandelaar_key xuser_key,
pf.prs_perslid_naam_full behandelaar,
m.mld_melding_key || ' ' ||
SUBSTR(p.prs_perslid_voornaam, 1,1) ||
SUBSTR(p.prs_perslid_naam, 1,1) || ' ' ||
mld_melding_onderwerp title,
mld_melding_actiedatum tot,
mld_melding_actiedatum van,
m.mld_melding_key item_key,
SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 1, 7) color,
SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 9, 7) textcolor,
'?u=melding' || CHR (38) || 'k=' || m.mld_melding_key url
FROM mld_melding m, prs_v_perslid_fullnames_all pf, prs_perslid p
WHERE mld_melding_actiedatum IS NOT NULL
AND m.mld_melding_behandelaar_key = p.prs_perslid_key
AND m.mld_melding_behandelaar_key = pf.prs_perslid_key
AND mld_melding_status not in (1, 5, 6) -- Afgewezen, afgemeld, historie
UNION ALL
SELECT NULL xuser_key,
'<geen behandelaar>' behandelaar,
m.mld_melding_key || ' ' || mld_melding_onderwerp title,
mld_melding_actiedatum tot,
mld_melding_actiedatum van,
m.mld_melding_key item_key,
'#FF0000',
'#FFFFFF',
'?u=melding' || CHR (38) || 'k=' || m.mld_melding_key url
FROM mld_melding m
WHERE mld_melding_actiedatum IS NOT NULL
AND mld_melding_status not in (1, 5, 6) -- Afgewezen, afgemeld, historie
AND m.mld_melding_behandelaar_key IS NULL;
-- View om de relatie tussen standaardmeldingen en objectstructuur aan te geven.
CREATE OR REPLACE VIEW bvb1_v_rap_stdmelding_srtinst
AS
SELECT mss.mld_stdmelding_srtinst_key,
sd.ins_srtdiscipline_omschrijving,
md.ins_discipline_omschrijving vakgroep,
std.mld_stdmelding_omschrijving,
mss.ins_srtinstallatie_niveau,
isd.ins_srtdeel_omschrijving,
isg.ins_srtgroep_omschrijving,
id.ins_discipline_omschrijving
FROM mld_stdmelding_srtinst mss,
ins_srtgroep isg,
ins_srtdeel isd,
mld_stdmelding std,
ins_discipline id,
mld_discipline md,
ins_srtdiscipline sd
WHERE isg.ins_srtgroep_key = isd.ins_srtgroep_key
AND isg.ins_discipline_key = id.ins_discipline_key
AND mss.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 ( mss.ins_srtinstallatie_niveau = 'S' AND mss.ins_srtinstallatie_key = isd.ins_srtdeel_key
OR mss.ins_srtinstallatie_niveau = 'G' AND mss.ins_srtinstallatie_key = isg.ins_srtgroep_key
OR mss.ins_srtinstallatie_niveau = 'D' AND mss.ins_srtinstallatie_key = isg.ins_discipline_key);
CREATE OR REPLACE PROCEDURE bvb1_daily
AS
-- accepteer de meldingen die aangemaakt zijn met de geplande acties. Anders komen ze niet in de kalender te staan.
CURSOR c IS
SELECT mld_melding_key
FROM mld_melding
WHERE mld_melding_opmerking LIKE 'Automatisch gegenereerd door activiteit%' AND mld_melding_status = 2;
BEGIN
FOR rec IN c
LOOP
MLD.setmeldingstatus (rec.mld_melding_key, 4, NULL);
UPDATE mld_melding
SET mld_melding_actiedatum = SYSDATE
WHERE mld_melding_key = rec.mld_melding_key;
END LOOP;
END;
/
------ 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