4511 lines
211 KiB
MySQL
4511 lines
211 KiB
MySQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
DEFINE thisfile = 'HCAS.SQL'
|
||
DEFINE dbuser = '^HCAS'
|
||
DEFINE custid = 'HCAS'
|
||
|
||
|
||
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 ------
|
||
|
||
----- Personenimport -------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE hcas_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_errorhint VARCHAR2 (400);
|
||
BEGIN
|
||
v_errorhint := 'Generieke update';
|
||
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
||
prs.import_perslid (
|
||
p_import_key,
|
||
'0;0;0;0;0;8;1;2;0;3;'
|
||
|| '0;0;0;0;0;0;0;6;0;0;'
|
||
|| '5;1;0;0;0;0;4;0;0;0;'
|
||
|| '0;0;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0',
|
||
'"SamAccountName";"sn";"GivenName";"Department";"Function";"Mail";"TelephoneNumber";"Location"%');
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END hcas_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE hcas_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
|
||
-- Key bij HCAS is SAMAccountName, hieronder de query om alle personen te verwijderen die:
|
||
-- a) niet meer in het importbestand staan, wel in Facilitor, en
|
||
-- b) waarvan de persoon in Facilitor geen alternatieve login heeft (gevuld alt. login van af blijven, dit zijn persleden die handmatig zijn toegevoegd)
|
||
-- c) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)
|
||
CURSOR c_del IS
|
||
SELECT p.prs_perslid_key,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_oslogin2,
|
||
pf.prs_perslid_naam_full
|
||
FROM fac_imp_perslid i,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf
|
||
WHERE UPPER (p.prs_perslid_oslogin) =
|
||
UPPER (i.prs_perslid_oslogin(+))
|
||
AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
|
||
AND i.prs_perslid_oslogin IS NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin2 IS NULL
|
||
AND pf.prs_perslid_key = p.prs_perslid_key
|
||
ORDER BY 2;
|
||
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (400);
|
||
v_count_prs NUMBER; --- aantal personen in import tabel
|
||
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
|
||
c_max_delta_percentage NUMBER (10) := 15; -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
|
||
|
||
BEGIN
|
||
-- generic update
|
||
-- Aantal personen in het import bestand
|
||
-- Omdat inlognaam de match is, tellen prs met een inlognaam
|
||
SELECT COUNT (*)
|
||
INTO v_count_prs
|
||
FROM fac_imp_perslid ip
|
||
WHERE ip.prs_perslid_oslogin IS NOT NULL;
|
||
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_actual
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE prs_perslid_oslogin IS NOT NULL;
|
||
|
||
IF ((TRUNC ((v_count_prs / v_count_prs_actual) * 100) >=
|
||
(100 - c_max_delta_percentage)))
|
||
THEN
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_telefoonnr =
|
||
(SELECT p.prs_perslid_telefoonnr
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (P.PRS_PERSLID_OSLOGIN) =
|
||
UPPER (I.PRS_PERSLID_OSLOGIN))
|
||
WHERE i.fac_import_key = p_import_key;
|
||
|
||
UPDATE fac_imp_perslid i
|
||
SET i.prs_perslid_mobiel =
|
||
(SELECT p.prs_perslid_mobiel
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND UPPER (P.PRS_PERSLID_OSLOGIN) =
|
||
UPPER (I.PRS_PERSLID_OSLOGIN))
|
||
WHERE i.fac_import_key = p_import_key;
|
||
|
||
-- Afdelingsomschrijving ingelezen in kenmerk; op basis daarvan de afdelingscode
|
||
-- invullen (verplicht veld afdelingscode tijdelijk gevuld met oslogin).
|
||
UPDATE fac_imp_perslid i
|
||
SET prs_afdeling_naam =
|
||
(SELECT prs_afdeling_naam
|
||
FROM prs_afdeling a
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a.prs_afdeling_omschrijving) =
|
||
UPPER (i.prs_kenmerk1));
|
||
|
||
-- Onbekende afdelingen bewaren voor logging
|
||
UPDATE fac_imp_perslid
|
||
SET prs_afdeling_naam = SUBSTR (prs_kenmerk1, 1, 15)
|
||
WHERE prs_afdeling_naam IS NULL;
|
||
|
||
-- Locatieomschrijving ingelezen; op basis daarvan de juiste vastgoedgegevens
|
||
-- in de juiste kolommen zetten.
|
||
-- Omdat werkplekken alleen worden aangevuld, dit alleen doen voor personen die
|
||
-- nog geen werkplek hebben.
|
||
UPDATE fac_imp_perslid i
|
||
SET (alg_locatie_code,
|
||
alg_gebouw_code,
|
||
alg_verdieping_volgnr,
|
||
alg_ruimte_nr) =
|
||
( SELECT rg.alg_locatie_code,
|
||
MIN (rg.alg_gebouw_upper),
|
||
MIN (rg.alg_verdieping_volgnr),
|
||
rg.alg_ruimte_nr
|
||
FROM alg_v_ruimte_gegevens rg
|
||
WHERE i.prs_werkplek_omschrijving =
|
||
rg.alg_locatie_omschrijving
|
||
AND rg.alg_ruimte_nr = '_WP'
|
||
GROUP BY rg.alg_locatie_code, rg.alg_ruimte_nr)
|
||
WHERE NOT EXISTS
|
||
(SELECT DISTINCT prs_perslid_oslogin
|
||
FROM prs_perslidwerkplek pw, prs_v_aanwezigperslid ap
|
||
WHERE ap.prs_perslid_key = pw.prs_perslid_key
|
||
AND ap.prs_perslid_oslogin =
|
||
UPPER (i.prs_perslid_oslogin));
|
||
|
||
-- Tijdelijke gegevens opruimen
|
||
UPDATE fac_imp_perslid i
|
||
SET prs_werkplek_omschrijving = NULL, prs_kenmerk1 = NULL;
|
||
|
||
COMMIT;
|
||
|
||
-- 'LOGIN' betekent dat op basis van Login wordt gematched.
|
||
-- 'NR' betekent dat op basis van Personeelsnummer wordt gematched.
|
||
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
|
||
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
||
|
||
-- Verwijder personen die niet meer in de import voorkomen.
|
||
FOR rec IN c_del
|
||
LOOP
|
||
BEGIN
|
||
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
ELSE
|
||
IF (v_count_prs = 0)
|
||
THEN
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'S',
|
||
'Geen nieuw/recent bestand met te importeren personen aangetroffen!',
|
||
'');
|
||
ELSE
|
||
fac.imp_writelog (
|
||
p_import_key,
|
||
'E',
|
||
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
||
'- max. verschilpercentage = ['
|
||
|| TO_CHAR (c_max_delta_percentage)
|
||
|| '%] <br> '
|
||
|| '- #personen importbestand = ['
|
||
|| TO_CHAR (v_count_prs)
|
||
|| '] <br> '
|
||
|| '- #personen Facilitor = ['
|
||
|| TO_CHAR (v_count_prs_actual)
|
||
|| ']');
|
||
END IF;
|
||
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Importproces personen afgebroken!');
|
||
END hcas_update_perslid;
|
||
/
|
||
|
||
|
||
----- Export servicenow -------------------------------------------------------------------------------
|
||
-- Deze export draait steeds voorafgaand aan put-orders
|
||
-- In deze export doen we 3 dingen:
|
||
-- Wanneer er een externnummer bij een opdracht bekend is, maar nog niet bij de melding, dan zetten we deze ook bij de melding (nodig voor aansturing naar Servicenow)
|
||
-- Wanneer de aanvragen een notitie bij de melding heeft gezet, moet deze naar Servicenow gestuurd worden. We zetten hem weer in de orderqueue.
|
||
-- Ook zetten we de synchronisatietijd bij de melding, zodat eerdere notities niet nogmaals gestuurd worden.
|
||
|
||
CREATE OR REPLACE PROCEDURE hcas_export_servicenow (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
v_locatie_key NUMBER;
|
||
v_lengte NUMBER;
|
||
|
||
--Onderstaande cursor verzamelt de meldingen die status 'Actie aanvrager' moeten krijgen. Dat is obv het binnenkomende opdrachtkenmerk 'Statusservicenow'.
|
||
CURSOR actie
|
||
IS
|
||
SELECT mld.mld_melding_key
|
||
FROM fac_tracking t,
|
||
mld_opdr o,
|
||
mld_melding mld,
|
||
mld_stdmelding sm
|
||
WHERE sm.mld_stdmelding_key = mld.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342)
|
||
AND mld.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_opdr_key = t.fac_tracking_refkey
|
||
AND t.fac_srtnotificatie_key = 61 -- ORDUPD
|
||
AND mld.mld_melding_actiecode <> 2
|
||
AND INSTR (t.fac_tracking_oms,
|
||
'Statusservicenow: (leeg) --> Pending Customer') > 0
|
||
AND ( (SELECT fac.safe_to_date (
|
||
sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss')
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km
|
||
WHERE sync.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) <
|
||
t.fac_tracking_datum
|
||
OR ( (SELECT fac.safe_to_date (
|
||
sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss')
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km
|
||
WHERE sync.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) IS NULL))
|
||
GROUP BY mld.mld_melding_key;
|
||
|
||
-- Dit haalt het externnummer op van een opdrachtkenmerk indien externnr bij de melding nog leeg is
|
||
CURSOR externnr
|
||
IS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
ko.mld_kenmerkopdr_waarde AS externnr
|
||
FROM mld_melding m,
|
||
mld_opdr o,
|
||
mld_stdmelding sm,
|
||
mld_kenmerkopdr ko,
|
||
mld_kenmerk km
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND m.mld_melding_externnr IS NULL
|
||
AND o.mld_opdr_key = ko.mld_opdr_key
|
||
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 405; --Kenmerksoort 'Externnr'
|
||
|
||
--Onderstaande cursor verzamelt de gegevens om te bepalen welke meldingen nieuwe opmerkingen heeft en die verzonden kunnen worden naar Servicenow
|
||
CURSOR sync
|
||
IS
|
||
SELECT mld_melding_key,
|
||
mld_ins_discipline_key,
|
||
mld_melding_note_aanmaak,
|
||
fac.safe_to_number (
|
||
TO_CHAR (mld_melding_note_aanmaak, 'yyyymmddhh24miss'))
|
||
AS note,
|
||
sync,
|
||
sync_key
|
||
FROM ( SELECT mld_melding_key,
|
||
mld_ins_discipline_key,
|
||
MAX (mld_melding_note_aanmaak) AS mld_melding_note_aanmaak,
|
||
sync,
|
||
sync_key
|
||
FROM (SELECT mld.mld_melding_key,
|
||
sm.mld_ins_discipline_key,
|
||
fac_bijlagen_aanmaak AS mld_melding_note_aanmaak,
|
||
(SELECT fac.safe_to_number (
|
||
sync.mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
|
||
AS sync,
|
||
(SELECT sync.mld_kenmerkmelding_key
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
|
||
AS sync_key
|
||
FROM mld_melding mld, mld_stdmelding sm, fac_bijlagen att
|
||
WHERE sm.mld_stdmelding_key = mld.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND mld.mld_melding_status IN (2, 3, 4, 7)
|
||
AND att.fac_bijlagen_refkey = mld.mld_melding_key
|
||
AND att.fac_bijlagen_verwijder IS NULL
|
||
AND ( (SELECT fac.safe_to_date (
|
||
sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss')
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key =
|
||
mld.mld_melding_key
|
||
AND km.mld_kenmerk_key =
|
||
sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) < -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
|
||
fac_bijlagen_aanmaak)
|
||
UNION ALL
|
||
SELECT mld.mld_melding_key,
|
||
sm.mld_ins_discipline_key,
|
||
mn.mld_melding_note_aanmaak,
|
||
(SELECT fac.safe_to_number (
|
||
sync.mld_kenmerkmelding_waarde)
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) -- Kenmerksoort tbv synchronisatie van opmerkingen naar Servicenow
|
||
AS sync,
|
||
(SELECT sync.mld_kenmerkmelding_key
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key = mld.mld_melding_key
|
||
AND km.mld_kenmerk_key = sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) -- Kenmerksoort tbv synchronisatie van opmerkingen naar Servicenow
|
||
AS sync_key
|
||
FROM mld_melding mld,
|
||
mld_melding_note mn,
|
||
mld_stdmelding sm,
|
||
mld_kenmerk km,
|
||
mld_opdr o
|
||
WHERE mn.mld_melding_key = mld.mld_melding_key
|
||
AND sm.mld_stdmelding_key = mld.mld_stdmelding_key
|
||
AND km.mld_stdmelding_key = sm.mld_ins_discipline_key
|
||
AND km.mld_srtkenmerk_key = 541 -- Kenmerksoort 'Sync_'Servicenow' (tbv synchronisatie van opmerkingen naar Servicenow)
|
||
AND mld.mld_melding_key = o.mld_melding_key -- Enkel SyncServicenow bijwerken indien er ook een opdracht is.
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND mld.mld_melding_status IN (2, 3, 4, 7)
|
||
AND ( (SELECT fac.safe_to_date (
|
||
sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss')
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key = sync.mld_melding_key
|
||
AND m.mld_melding_key =
|
||
mld.mld_melding_key
|
||
AND km.mld_kenmerk_key =
|
||
sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) <
|
||
mld_melding_note_aanmaak
|
||
OR ( (SELECT fac.safe_to_date (
|
||
sync.mld_kenmerkmelding_waarde, 'yyyymmddhh24miss')
|
||
FROM mld_kenmerkmelding sync,
|
||
mld_kenmerk km,
|
||
mld_melding m
|
||
WHERE m.mld_melding_key =
|
||
sync.mld_melding_key
|
||
AND m.mld_melding_key =
|
||
mld.mld_melding_key
|
||
AND km.mld_kenmerk_key =
|
||
sync.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 541) IS NULL))
|
||
ORDER BY mld_melding_key, mld_melding_note_aanmaak ASC)
|
||
GROUP BY mld_melding_key,
|
||
mld_ins_discipline_key,
|
||
sync,
|
||
sync_key);
|
||
|
||
--Onderstaande cursor verzamelt de meldingen die een andere locatie hebben dan is doorgegeven vanuit Servicenow.
|
||
CURSOR locatie
|
||
IS
|
||
SELECT m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
(SELECT alg_onrgoed_key
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_niveau = 'L' AND alg_kenmerk_key = 1300
|
||
AND ko.mld_kenmerkopdr_waarde =
|
||
alg_onrgoedkenmerk_waarde)
|
||
AS loc_opdr_key,
|
||
ko.mld_kenmerkopdr_waarde AS locatie_opdracht,
|
||
m.mld_alg_locatie_key,
|
||
m.mld_alg_onroerendgoed_keys,
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_niveau = 'L'
|
||
AND alg_kenmerk_key = 1300 --Kenmerk 'Locatie servicenow'
|
||
AND alg_onrgoed_key = m.mld_alg_locatie_key)
|
||
AS locatie_melding
|
||
FROM mld_melding m,
|
||
mld_opdr o,
|
||
mld_stdmelding sm,
|
||
mld_kenmerkopdr ko,
|
||
mld_kenmerk km
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND o.mld_opdr_key = ko.mld_opdr_key
|
||
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 404 --Kenmerksoort 'Locatiecode'
|
||
AND ( (ko.mld_kenmerkopdr_waarde <>
|
||
(SELECT alg_onrgoedkenmerk_waarde
|
||
FROM alg_onrgoedkenmerk
|
||
WHERE alg_onrgoed_niveau = 'L'
|
||
AND alg_kenmerk_key = 1300
|
||
AND alg_onrgoed_key = m.mld_alg_locatie_key)
|
||
AND m.mld_alg_locatie_key <> 61) -- Wanneer er een onbekende omschrijving is en locatie bij de melding is al hoofdkantoor (61), dan niet in de cursor omdat anders bij iedere putorders de locatie wordt gewijzigd (voorkomt veel tracking)...
|
||
OR m.mld_alg_locatie_key IS NULL);
|
||
|
||
--Onderstaande cursor haalt de meldingen op waar er een short description is bij de opdracht, maar nog niet in de meldingsomschrijving.
|
||
CURSOR descr
|
||
IS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
ko.mld_kenmerkopdr_waarde AS short_description,
|
||
fac.safe_to_number (LENGTH (ko.mld_kenmerkopdr_waarde))
|
||
AS lengte,
|
||
m.mld_melding_omschrijving
|
||
FROM mld_melding m,
|
||
mld_opdr o,
|
||
mld_stdmelding sm,
|
||
mld_kenmerkopdr ko,
|
||
mld_kenmerk km
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND m.mld_melding_onderwerp IS NULL
|
||
AND o.mld_opdr_bedrijfopdr_volgnr = 1 -- Enkel voor de eerste opdracht, normaal ook altijd maar een opdracht per melding.
|
||
AND o.mld_opdr_key = ko.mld_opdr_key
|
||
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
|
||
AND km.mld_srtkenmerk_key = 402; --Kenmerksoort 'Short_description'
|
||
BEGIN
|
||
v_errorhint := 'init';
|
||
v_lengte := 0;
|
||
|
||
-- We zetten de status van de melding nog op 'Actie aanvrager' indien Servicenow na laatste bericht vanuit Facilitor hierom vraag.
|
||
FOR rec IN actie
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Status melding naar Actie aanvrager voor melding '
|
||
|| rec.mld_melding_key;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_actiecode = 2
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Hier vullen we het externnr bij de melding, zodra deze (als kenmerk) bij de opdracht binnenkomt vanuit Servicenow
|
||
FOR rec IN externnr
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Melding vullen met externnr voor melding '
|
||
|| rec.mld_melding_key;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_externnr = rec.externnr
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
END;
|
||
END LOOP;
|
||
|
||
FOR rec IN sync
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Opdracht opnieuw te verzenden voor melding '
|
||
|| rec.mld_melding_key;
|
||
|
||
-- Eerst zetten we de opdracht opnieuw klaar om te verzenden
|
||
UPDATE mld_opdr
|
||
SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
v_errorhint :=
|
||
'Syncdatum bijwerken voor melding ' || rec.mld_melding_key;
|
||
|
||
-- Daarna hogen we de syncdatum bij de meldingen op met de datum van de laatst ingevoerde notitie
|
||
-- Hiermee komt deze notitie de volgende keer niet meer voor in de cursor.
|
||
CASE
|
||
WHEN rec.sync IS NULL
|
||
THEN
|
||
INSERT INTO mld_kenmerkmelding (mld_melding_key,
|
||
mld_kenmerk_key,
|
||
mld_kenmerkmelding_waarde)
|
||
VALUES (rec.mld_melding_key,
|
||
(SELECT DISTINCT mld_kenmerk_key
|
||
FROM mld_kenmerk
|
||
WHERE mld_srtkenmerk_key = 541 -- 541 = Kenmerksoort tbv synchronisatie van opmerkingen naar Servicenow
|
||
AND mld_stdmelding_key =
|
||
rec.mld_ins_discipline_key),
|
||
rec.note);
|
||
|
||
fac.trackaction ('MLDUPD',
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
'Sync_ServiceNow: (leeg) --> ' || rec.note);
|
||
ELSE
|
||
UPDATE mld_kenmerkmelding
|
||
SET mld_kenmerkmelding_waarde = rec.note
|
||
WHERE rec.sync_key = mld_kenmerkmelding_key;
|
||
|
||
fac.trackaction (
|
||
'MLDUPD',
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
'Sync_ServiceNow: ' || rec.sync || ' --> ' || rec.note);
|
||
END CASE;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- We zetten de locatie bij de melding gelijk aan de locatie van het kenmerk bij betreffende opdracht.
|
||
FOR rec IN locatie
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Locatie melding '
|
||
|| rec.mld_melding_key
|
||
|| ' wijzigen van '
|
||
|| rec.locatie_melding
|
||
|| ' naar '
|
||
|| rec.locatie_opdracht;
|
||
|
||
CASE
|
||
WHEN rec.loc_opdr_key IS NULL
|
||
THEN
|
||
v_locatie_key := 61; -- Dit is de locatiekey voor Hoofdkantoor. Als de melding niet gekoppeld kan worden aan een bestaande locatie, dan moet deze gekoppeld worden aan locatie Hoofdkantoor.
|
||
ELSE
|
||
v_locatie_key := rec.loc_opdr_key;
|
||
END CASE;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_alg_locatie_key = v_locatie_key,
|
||
mld_alg_onroerendgoed_keys = NULL
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
fac.trackaction (
|
||
'MLDUPD',
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
'Locatie: '
|
||
|| rec.locatie_melding
|
||
|| ' --> '
|
||
|| rec.locatie_opdracht);
|
||
END;
|
||
END LOOP;
|
||
|
||
-- We zetten de short description vanuit mld_opdr_kenmerk bij de melding in onderwerp/omschrijving (afhankelijk van lengte).
|
||
FOR rec IN descr
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Short description Servicenow bij melding '
|
||
|| rec.mld_melding_key
|
||
|| ' overnemen ';
|
||
|
||
v_lengte := rec.lengte;
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_onderwerp = SUBSTR (rec.short_description, 1, 80)
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
|
||
--Indien short_description te lang voor mld_onderwerp (80), dan ook aanvullen bij omschrijving
|
||
IF v_lengte > 80
|
||
THEN
|
||
UPDATE mld_melding
|
||
SET mld_melding_omschrijving =
|
||
rec.mld_melding_omschrijving
|
||
|| CHR (10)
|
||
|| 'Short description Servicenow: '
|
||
|| rec.short_description
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
END IF;
|
||
|
||
fac.trackaction (
|
||
'MLDUPD',
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
NULL,
|
||
'Onderwerp: (leeg) --> ' || SUBSTR (rec.short_description, 1, 80));
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- In aanvulling op de export Servicenow:
|
||
-- Er moeten opdrachten worden aangemaakt bij meldingen die in Facilitor staan en al afgemeld zijn, maar zonder opdracht.
|
||
-- Hiermee worden deze meldigen alsnog in Servicenow getoond, om daarmee een compleet beeld in Servicenow te hebben.
|
||
|
||
CREATE OR REPLACE PROCEDURE hcas_export_sn_autoopdr (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (100);
|
||
v_mld_opdr_key NUMBER;
|
||
|
||
-- Onderstaande cursor haalt de meldingen op die zijn afgemeld, maar waar nog geen opdracht is aangemaakt. Dit ten einde om hier wel een opdracht van aan te maken en te versturen naar Servicenow
|
||
CURSOR new_opdr IS
|
||
SELECT DISTINCT
|
||
m.mld_melding_key,
|
||
m.mld_melding_onderwerp,
|
||
m.mld_melding_omschrijving
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key IN (321, 341, 342) -- Enkel voor de vakgroepen die met servicenow gekoppeld worden.
|
||
AND m.mld_melding_key NOT IN
|
||
(SELECT mld_melding_key FROM mld_opdr) -- Mag nog geen opdracht hebben
|
||
AND sm.mld_stdmelding_key NOT IN (1342) -- Stdmelding 'Bestellen/aanvragen' moet niet worden doorgestuurd naar Servicenow
|
||
AND m.mld_melding_status IN (5, 6);
|
||
BEGIN
|
||
v_errorhint := 'init';
|
||
|
||
-- We maken opdrachten aan voor de meldingen waar dit nog niet gedaan zijn en de melding al is afgehandeld
|
||
FOR rec IN new_opdr
|
||
LOOP
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Opdracht aanmaken bij afgemelde melding '
|
||
|| rec.mld_melding_key;
|
||
v_mld_opdr_key := 0;
|
||
|
||
INSERT INTO mld_opdr (mld_melding_key,
|
||
prs_kostenplaats_key,
|
||
mld_typeopdr_key,
|
||
prs_perslid_key,
|
||
mld_uitvoerende_keys,
|
||
mld_opdr_datumbegin,
|
||
mld_opdr_einddatum,
|
||
mld_statusopdr_key,
|
||
mld_opdr_module,
|
||
mld_opdr_omschrijving,
|
||
mld_opdr_bedrijfopdr_volgnr,
|
||
mld_opdr_teverzenden)
|
||
VALUES (
|
||
rec.mld_melding_key,
|
||
NULL,
|
||
1301, -- Opdrachttype Servicenow
|
||
23941, -- perslid API user KPN
|
||
4623, -- bedrijf_key KPN
|
||
SYSDATE,
|
||
SYSDATE + 7,
|
||
6, -- Afgemeld
|
||
'MLD',
|
||
rec.mld_melding_onderwerp
|
||
|| CHR (10)
|
||
|| SUBSTR (rec.mld_melding_omschrijving, 1, 3900),
|
||
mld.bepaalopdrmeldingvolgnr (rec.mld_melding_key),
|
||
2)
|
||
RETURNING mld_opdr_key
|
||
INTO v_mld_opdr_key;
|
||
|
||
fac.trackaction ('ORDNEW',
|
||
v_mld_opdr_key,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
|
||
fac.trackaction ('ORDAFM',
|
||
v_mld_opdr_key,
|
||
NULL,
|
||
NULL,
|
||
NULL);
|
||
|
||
UPDATE mld_melding
|
||
SET mld_melding_omschrijving =
|
||
SUBSTR (rec.mld_melding_omschrijving, 1, 3800)
|
||
|| CHR (10)
|
||
|| CHR (10)
|
||
|| 'LET OP: Deze melding hoeft in Servicenow niet in behandeling worden genomen.'
|
||
|| CHR (10)
|
||
|| 'Deze melding is reeds afgemeld in Facilitor en wordt daarmee automatisch doorgezet naar Servicenow.'
|
||
WHERE mld_melding_key = rec.mld_melding_key;
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
----- Rapportage-views -----------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_rap_qrc_ins_mld
|
||
AS
|
||
SELECT i.ins_deel_omschrijving
|
||
hide_f_sort,
|
||
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
|
||
fclt_f_locatie,
|
||
o.alg_gebouw_omschrijving
|
||
fclt_f_gebouw,
|
||
o.alg_plaatsaanduiding
|
||
fclt_f_plaats,
|
||
d.ins_discipline_omschrijving
|
||
fclt_f_discipline,
|
||
g.ins_srtgroep_omschrijving
|
||
fclt_f_objectgroep,
|
||
s.ins_srtdeel_omschrijving
|
||
fclt_f_objectsoort,
|
||
i.ins_deel_omschrijving
|
||
fclt_f_identificatie,
|
||
b.fac_bookmark_naam
|
||
fclt_f_bookmark,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
i.ins_discipline_key
|
||
fclt_3d_discipline_key,
|
||
l.alg_locatie_key
|
||
fclt_3d_locatie_key,
|
||
i.ins_alg_ruimte_type,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id
|
||
hide_f_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
ins_srtgroep g,
|
||
ins_discipline d,
|
||
alg_locatie l,
|
||
fac_bookmark b,
|
||
mld_stdmelding sm,
|
||
mld_stdmelding_srtinst si
|
||
WHERE b.fac_bookmark_path = 'appl/pda/melding.asp'
|
||
AND b.fac_bookmark_query LIKE
|
||
'%stdm_key=' || sm.mld_stdmelding_key || '%'
|
||
AND ( b.fac_bookmark_expire IS NULL
|
||
OR b.fac_bookmark_expire > SYSDATE)
|
||
AND ins_deel_verwijder IS NULL
|
||
AND i.ins_deel_module = 'INS'
|
||
AND i.ins_deel_parent_key IS NULL
|
||
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
||
AND g.ins_srtgroep_key = s.ins_srtgroep_key
|
||
AND d.ins_discipline_key = g.ins_discipline_key
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND i.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND sm.mld_stdmelding_key = si.mld_stdmelding_key
|
||
AND si.ins_srtinstallatie_key =
|
||
DECODE (si.ins_srtinstallatie_niveau,
|
||
'S', i.ins_srtdeel_key,
|
||
'G', s.ins_srtgroep_key,
|
||
'D', g.ins_discipline_key);
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_rap_qrc_ins
|
||
AS
|
||
SELECT i.ins_deel_omschrijving
|
||
hide_f_sort,
|
||
l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
|
||
fclt_f_locatie,
|
||
o.alg_gebouw_omschrijving
|
||
fclt_f_gebouw,
|
||
o.alg_plaatsaanduiding
|
||
fclt_f_plaats,
|
||
d.ins_discipline_omschrijving
|
||
fclt_f_discipline,
|
||
g.ins_srtgroep_omschrijving
|
||
fclt_f_objectgroep,
|
||
s.ins_srtdeel_omschrijving
|
||
fclt_f_objectsoort,
|
||
i.ins_deel_omschrijving
|
||
fclt_f_identificatie,
|
||
b.fac_bookmark_naam
|
||
fclt_f_bookmark,
|
||
i.ins_deel_key,
|
||
s.ins_srtdeel_key,
|
||
i.ins_discipline_key
|
||
fclt_3d_discipline_key,
|
||
l.alg_locatie_key
|
||
fclt_3d_locatie_key,
|
||
i.ins_alg_ruimte_type,
|
||
i.ins_alg_ruimte_key,
|
||
b.fac_bookmark_id
|
||
hide_f_bookmark_id
|
||
FROM ins_deel i,
|
||
ins_v_alg_overzicht o,
|
||
ins_srtdeel s,
|
||
ins_srtgroep g,
|
||
ins_discipline d,
|
||
alg_locatie l,
|
||
fac_bookmark b
|
||
WHERE b.fac_bookmark_path = 'appl/pda/ins_deel.asp'
|
||
AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE
|
||
AND ins_deel_verwijder IS NULL
|
||
AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
|
||
AND i.ins_deel_module = 'INS'
|
||
AND i.ins_deel_parent_key IS NULL
|
||
AND s.ins_srtdeel_key = i.ins_srtdeel_key
|
||
AND g.ins_srtgroep_key = s.ins_srtgroep_key
|
||
AND d.ins_discipline_key = g.ins_discipline_key
|
||
AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
|
||
AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
|
||
AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
|
||
AND o.alg_locatie_key = i.ins_alg_locatie_key
|
||
AND l.alg_locatie_key = i.ins_alg_locatie_key;
|
||
|
||
--- HCAS#37147 rapportage met aantallen nog actieve medewerkers per afdeling
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_MDW_AFDELING
|
||
(
|
||
AANTAL,
|
||
AFDELING,
|
||
AFDELINGOMSCHRIJVING,
|
||
KOSTENPLAATS
|
||
)
|
||
AS
|
||
SELECT COUNT (p.prs_perslid_key),
|
||
a.prs_afdeling_upper,
|
||
a.PRS_AFDELING_OMSCHRIJVING,
|
||
a.PRS_KOSTENPLAATS_KEY
|
||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||
WHERE P.PRS_AFDELING_KEY(+) = A.PRS_AFDELING_KEY
|
||
AND a.prs_afdeling_verwijder IS NULL
|
||
GROUP BY a.prs_afdeling_upper,
|
||
a.PRS_AFDELING_OMSCHRIJVING,
|
||
a.PRS_KOSTENPLAATS_KEY;
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE hcas_export_kpi (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2)
|
||
AS
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
|
||
--- variabelen die gebruikt worden in bepalen functie herstel
|
||
v_uitvoertijd_fh_uren mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
|
||
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
|
||
v_uitvoertijd_fh_dagen mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
|
||
:= MLD_T_UITVOERTIJD (NULL, NULL);
|
||
v_uitvoertijd_rep_uren mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
|
||
:= MLD_T_UITVOERTIJD (NULL, NULL);
|
||
v_uitvoertijd_rep_dagen mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
|
||
:= MLD_T_UITVOERTIJD (NULL, NULL);
|
||
v_urenperdag NUMBER (10, 3);
|
||
v_eerstedag NUMBER (10, 3);
|
||
v_laatstedag NUMBER (10, 3);
|
||
v_heledagen NUMBER (10);
|
||
v_vrijedagen NUMBER;
|
||
v_begindatum DATE; -- = datum_uitgifte (is datum / tijd veld)
|
||
v_functiehersteldatum DATE; -- = datum functieherstel (is datum/ tijd veld)
|
||
v_einddatum DATE; -- = datum reparatie (is datum / tijd veld)
|
||
v_pBeginWerkUur NUMBER (10, 3); -- = tijd waarop klok tikt, dus service window (let op notatie in kenmerk: half 8 is 7,5 en niet 7:30!!!)
|
||
v_pEindWerkUur NUMBER (10, 3); --- = tijd wanneer klok stopt, dus service window
|
||
v_pmode NUMBER (10); -- = staat in tabel
|
||
v_uitvoertijdtype VARCHAR2 (50); --- uren en dagen
|
||
|
||
|
||
-- alle opdrachtgegevens die nog niet in cust tabel zitten
|
||
-- want die moeten dan nog toegevoegd worden
|
||
CURSOR KPI IS
|
||
SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
uk1_van.prs_kenmerklink_waarde
|
||
AS uk1_van,
|
||
uk1_tot.prs_kenmerklink_waarde
|
||
AS uk1_tot,
|
||
uk2_van.prs_kenmerklink_waarde
|
||
AS uk2_van,
|
||
uk2_tot.prs_kenmerklink_waarde
|
||
AS uk2_tot,
|
||
DECODE (onderhoud_obj.urgentieklasse,
|
||
'Klasse 2', 1,
|
||
'Klasse 1', 0) ---- conform FCLT standaard: 1 is alleen werdagen, 0 is alle dagen
|
||
pMode,
|
||
DECODE (onderhoud_obj.urgentieklasse,
|
||
'Klasse 2', uk2_van.prs_kenmerklink_waarde,
|
||
'Klasse 1', uk1_van.prs_kenmerklink_waarde)
|
||
GELDEND_FH_VAN,
|
||
DECODE (onderhoud_obj.urgentieklasse,
|
||
'Klasse 2', uk2_tot.prs_kenmerklink_waarde,
|
||
'Klasse 1', uk1_tot.prs_kenmerklink_waarde)
|
||
GELDEND_FH_TOT,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
onderhoud_obj.conditieklasse,
|
||
onderhoud_obj.urgentieklasse,
|
||
onderhoud_obj.FH_tijd
|
||
AS max_fh_tijd, --- de maximale functiehersteltijd wordt uit een eigen tabel urgentie klasse gehaald, dit is de tijd in uren
|
||
DECODE (onderhoud_obj.urgentieklasse, -----de maximale tijd voor reparatie is bepaald op 5 dagen voor objecten van klasse 2 en 3 dagen voor klasse 1
|
||
'Klasse 2', 5,
|
||
'Klasse 1', 3)
|
||
max_rep_tijd,
|
||
opdracht.mld_melding_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.mld_typeopdr_key,
|
||
opdracht.mld_statusopdr_key,
|
||
opdracht.mld_statusopdr_omschrijving,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie,
|
||
opdracht.herhaalstoring
|
||
FROM prs_bedrijf b,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1140) uk1_van,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1143) uk1_tot,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1141) uk2_van,
|
||
(SELECT *
|
||
FROM prs_kenmerklink
|
||
WHERE prs_kenmerk_key = 1144) uk2_tot,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde)
|
||
AS prs_bedrijf_key,
|
||
conditieklasse.ins_kenmerkdeel_waarde
|
||
AS conditieklasse,
|
||
urgentieklasse.fac_usrdata_omschr
|
||
AS urgentieklasse,
|
||
urgentieklasse.fac_usrdata_prijs
|
||
AS fh_tijd
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key = km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier,
|
||
(SELECT kd.*, ud.fac_usrdata_omschr, fac_usrdata_prijs
|
||
FROM ins_kenmerkdeel kd,
|
||
ins_kenmerk km,
|
||
fac_usrdata ud
|
||
WHERE kd.ins_kenmerk_key = km.ins_kenmerk_key
|
||
AND kd.ins_kenmerkdeel_waarde =
|
||
ud.fac_usrdata_key
|
||
AND km.ins_srtkenmerk_key = 301)
|
||
urgentieklasse,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key = km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 321)
|
||
conditieklasse
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key
|
||
AND conditieklasse.ins_deel_key(+) = o.ins_deel_key
|
||
AND urgentieklasse.ins_deel_key = o.ins_deel_key)
|
||
onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie,
|
||
herhaalstoring.fac_usrdata_omschr
|
||
AS herhaalstoring
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422) datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 261
|
||
AND mld_kenmerk_key = 461) herhaalstoring
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND herhaalstoring.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) = o.mld_opdr_key)
|
||
opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND uk1_van.prs_link_key = b.prs_bedrijf_key
|
||
AND uk1_tot.prs_link_key = b.prs_bedrijf_key
|
||
AND uk2_van.prs_link_key = b.prs_bedrijf_key
|
||
AND uk2_tot.prs_link_key = b.prs_bedrijf_key
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key
|
||
AND opdracht.mld_statusopdr_key = 6 --- status van de opdracht is afgemeld
|
||
AND opdracht.mld_opdr_key NOT IN --- opdracht is nog niet ge<67>xporteerd
|
||
(SELECT mld_opdr_key FROM hcas_kpi_leveranciers);
|
||
BEGIN
|
||
FOR rec IN KPI
|
||
LOOP
|
||
INSERT INTO hcas_kpi_leveranciers (uitv_bedrijf,
|
||
prs_bedrijf_naam,
|
||
UK1_van,
|
||
UK1_tot,
|
||
UK2_van,
|
||
UK2_tot,
|
||
pmode,
|
||
geldend_FH_van,
|
||
geldend_FH_tot,
|
||
ins_deel_omschrijving,
|
||
ins_deel_key,
|
||
conditieklasse,
|
||
urgentieklasse,
|
||
max_fh_tijd,
|
||
max_rep_tijd,
|
||
mld_melding_key,
|
||
mld_opdr_key,
|
||
mld_typeopdr_key,
|
||
mld_statusopdr_key,
|
||
mld_statusopdr_omschrijving,
|
||
datum_uitgifte,
|
||
functieherstel,
|
||
datum_functieherstel,
|
||
gerepareerd,
|
||
datum_reparatie,
|
||
herhaalstoring)
|
||
VALUES (rec.prs_bedrijf_key,
|
||
rec.prs_bedrijf_naam,
|
||
rec.uk1_van,
|
||
rec.uk1_tot,
|
||
rec.uk2_van,
|
||
rec.uk2_tot,
|
||
rec.pmode,
|
||
rec.geldend_fh_van,
|
||
rec.geldend_fh_tot,
|
||
rec.ins_deel_omschrijving,
|
||
rec.ins_deel_key,
|
||
rec.conditieklasse,
|
||
rec.urgentieklasse,
|
||
rec.max_fh_tijd,
|
||
rec.max_rep_tijd,
|
||
rec.mld_melding_key,
|
||
rec.mld_opdr_key,
|
||
rec.mld_typeopdr_key,
|
||
rec.mld_statusopdr_key,
|
||
rec.mld_statusopdr_omschrijving,
|
||
rec.datum_uitgifte,
|
||
rec.functieherstel,
|
||
rec.datum_functieherstel,
|
||
rec.gerepareerd,
|
||
rec.datum_reparatie,
|
||
rec.herhaalstoring);
|
||
|
||
COMMIT;
|
||
|
||
--- tabel is nu bijgewerkt, nu de hersteltijd berekenen
|
||
--- variabelen die gebruikt worden in bepalen functie herstel
|
||
v_begindatum := rec.datum_uitgifte;
|
||
v_functiehersteldatum := rec.datum_functieherstel;
|
||
v_einddatum := rec.datum_reparatie;
|
||
v_pBeginWerkUur := rec.geldend_fh_van;
|
||
v_pEindWerkUur := rec.geldend_fh_tot;
|
||
v_pmode := rec.pmode;
|
||
v_uitvoertijdtype := 'UREN';
|
||
|
||
--- eerst FH hersteltijd berekenen in uren, later FH tijd in dagen
|
||
IF v_begindatum IS NOT NULL
|
||
AND v_functiehersteldatum IS NOT NULL
|
||
AND v_pMode BETWEEN 0 AND 2
|
||
THEN
|
||
IF v_begindatum > v_functiehersteldatum
|
||
THEN
|
||
v_uitvoertijd_fh_uren :=
|
||
fac.datumtijdnaaruitvoertijd (v_begindatum,
|
||
v_functiehersteldatum,
|
||
v_uitvoertijdtype,
|
||
v_pBeginWerkUur,
|
||
v_pEindWerkUur,
|
||
v_pMode);
|
||
|
||
v_uitvoertijd_fh_uren.tijdsduur :=
|
||
-v_uitvoertijd_fh_uren.tijdsduur;
|
||
ELSIF v_pMode = 2
|
||
THEN
|
||
--uitvoertijd := (v_functiehersteldatum - v_begindatum) * 24;
|
||
-- Zo simpel kan het zijn igv. 24/7!
|
||
-- default/uitvoertijdtype IN ('U', 'UREN')
|
||
v_uitvoertijd_fh_uren.tijdsduur :=
|
||
(v_functiehersteldatum - v_begindatum) * 24;
|
||
--v_uitvoertijd_fh.eenheid := 'U';
|
||
ELSIF v_pBeginWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur > v_pBeginWerkUur
|
||
THEN
|
||
v_urenperdag := v_pEindWerkUur - v_pBeginWerkUur;
|
||
v_eerstedag :=
|
||
v_pEindWerkUur
|
||
- (TRUNC (v_begindatum, 'MI') - TRUNC (v_begindatum))
|
||
* 24;
|
||
v_eerstedag :=
|
||
LEAST (GREATEST (0, v_eerstedag), v_urenperdag);
|
||
v_laatstedag :=
|
||
( TRUNC (v_functiehersteldatum, 'MI')
|
||
- TRUNC (v_functiehersteldatum))
|
||
* 24
|
||
- v_pBeginWerkUur;
|
||
v_laatstedag :=
|
||
LEAST (GREATEST (0, v_laatstedag), v_urenperdag);
|
||
|
||
IF v_pMode = 0
|
||
THEN
|
||
-- Oppassen als begin/eind op een vrije dag valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_begindatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum =
|
||
TRUNC (v_functiehersteldatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_laatstedag := 0;
|
||
END IF;
|
||
|
||
IF TRUNC (v_begindatum) = TRUNC (v_functiehersteldatum)
|
||
THEN
|
||
IF v_eerstedag + v_laatstedag > 0 -- geen vrije dag!
|
||
THEN
|
||
-- Als begindatum=einddatum <20>n werkdag, dan 1 dag corrigeren!
|
||
v_heledagen := -1;
|
||
ELSE
|
||
-- Als begindatum=einddatum <20>n vrije dag, dan geen correctie!
|
||
v_heledagen := 0;
|
||
END IF;
|
||
ELSE
|
||
-- Als begindatum<>einddatum, dan alleen nog vrije dagen tussen
|
||
-- begin+1 en eind-1 corrigeren (en altijd 0 als begin+1=eind)!
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (
|
||
v_begindatum
|
||
+ 1)
|
||
AND v_functiehersteldatum
|
||
- 1;
|
||
|
||
IF TRUNC (v_begindatum + 1) =
|
||
TRUNC (v_functiehersteldatum)
|
||
THEN
|
||
v_heledagen := 0;
|
||
ELSE
|
||
v_heledagen :=
|
||
TRUNC (v_functiehersteldatum)
|
||
- TRUNC (v_begindatum + 1)
|
||
- v_vrijedagen;
|
||
END IF;
|
||
END IF;
|
||
ELSE -- pMode = 1
|
||
-- Oppassen als begin/eind in het weekend of zo valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
IF fac.iswerkdag (v_begindatum) = 0
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
IF fac.iswerkdag (v_functiehersteldatum) = 0
|
||
THEN
|
||
v_laatstedag := 0;
|
||
v_heledagen :=
|
||
fac.count_Work_Days (
|
||
TRUNC (v_begindatum),
|
||
TRUNC (v_functiehersteldatum));
|
||
ELSE
|
||
v_heledagen :=
|
||
fac.count_Work_Days (
|
||
TRUNC (v_begindatum),
|
||
TRUNC (v_functiehersteldatum))
|
||
- 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- v_uitvoertijd_fh_uren := v_eerstedag + v_laatstedag + v_heledagen * v_urenperdag;
|
||
-- default/uitvoertijdtype IN ('U', 'UREN')
|
||
v_uitvoertijd_fh_uren.tijdsduur :=
|
||
v_eerstedag + v_laatstedag + v_heledagen * v_urenperdag;
|
||
--v_uitvoertijd_fh.eenheid := 'U';
|
||
END IF;
|
||
|
||
UPDATE HCAS_KPI_LEVERANCIERS K
|
||
SET k.functiehersteltijd_uren =
|
||
v_uitvoertijd_fh_uren.tijdsduur
|
||
WHERE k.mld_opdr_key = rec.mld_opdr_key;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
--- FH tijd is nu bekend in uren, vervolgens in dagen berekenen
|
||
--- variabelen die gebruikt worden in bepalen functie herstel
|
||
v_begindatum := rec.datum_uitgifte;
|
||
v_functiehersteldatum := rec.datum_functieherstel;
|
||
v_einddatum := rec.datum_reparatie;
|
||
v_pBeginWerkUur := rec.geldend_fh_van;
|
||
v_pEindWerkUur := rec.geldend_fh_tot;
|
||
v_pmode := rec.pmode;
|
||
v_uitvoertijdtype := 'DAGEN';
|
||
|
||
--- eerst FH hersteltijd berekenen in uren, later reparatie
|
||
IF v_begindatum IS NOT NULL
|
||
AND v_functiehersteldatum IS NOT NULL
|
||
AND v_pMode BETWEEN 0 AND 2
|
||
THEN
|
||
IF v_begindatum > v_functiehersteldatum
|
||
THEN
|
||
v_uitvoertijd_fh_dagen :=
|
||
fac.datumtijdnaaruitvoertijd (v_begindatum,
|
||
v_functiehersteldatum,
|
||
v_uitvoertijdtype,
|
||
v_pBeginWerkUur,
|
||
v_pEindWerkUur,
|
||
v_pMode);
|
||
|
||
v_uitvoertijd_fh_dagen.tijdsduur :=
|
||
-v_uitvoertijd_fh_dagen.tijdsduur;
|
||
ELSIF v_pMode = 2
|
||
THEN
|
||
--uitvoertijd := (v_functiehersteldatum - v_begindatum) * 24;
|
||
-- Zo simpel kan het zijn igv. 24/7!
|
||
-- default/uitvoertijdtype IN ('U', 'UREN')
|
||
v_uitvoertijd_fh_dagen.tijdsduur :=
|
||
v_functiehersteldatum - v_begindatum;
|
||
-- v_uitvoertijd_fh.eenheid := 'D';
|
||
|
||
ELSIF v_pBeginWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur > v_pBeginWerkUur
|
||
THEN
|
||
v_urenperdag := v_pEindWerkUur - v_pBeginWerkUur;
|
||
v_eerstedag :=
|
||
v_pEindWerkUur
|
||
- (TRUNC (v_begindatum, 'MI') - TRUNC (v_begindatum))
|
||
* 24;
|
||
v_eerstedag :=
|
||
LEAST (GREATEST (0, v_eerstedag), v_urenperdag);
|
||
v_laatstedag :=
|
||
( TRUNC (v_functiehersteldatum, 'MI')
|
||
- TRUNC (v_functiehersteldatum))
|
||
* 24
|
||
- v_pBeginWerkUur;
|
||
v_laatstedag :=
|
||
LEAST (GREATEST (0, v_laatstedag), v_urenperdag);
|
||
|
||
IF v_pMode = 0
|
||
THEN
|
||
-- Oppassen als begin/eind op een vrije dag valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_begindatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum =
|
||
TRUNC (v_functiehersteldatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_laatstedag := 0;
|
||
END IF;
|
||
|
||
IF TRUNC (v_begindatum) = TRUNC (v_functiehersteldatum)
|
||
THEN
|
||
IF v_eerstedag + v_laatstedag > 0 -- geen vrije dag!
|
||
THEN
|
||
-- Als begindatum=einddatum <20>n werkdag, dan 1 dag corrigeren!
|
||
v_heledagen := -1;
|
||
ELSE
|
||
-- Als begindatum=einddatum <20>n vrije dag, dan geen correctie!
|
||
v_heledagen := 0;
|
||
END IF;
|
||
ELSE
|
||
-- Als begindatum<>einddatum, dan alleen nog vrije dagen tussen
|
||
-- begin+1 en eind-1 corrigeren (en altijd 0 als begin+1=eind)!
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (
|
||
v_begindatum
|
||
+ 1)
|
||
AND v_functiehersteldatum
|
||
- 1;
|
||
|
||
IF TRUNC (v_begindatum + 1) =
|
||
TRUNC (v_functiehersteldatum)
|
||
THEN
|
||
v_heledagen := 0;
|
||
ELSE
|
||
v_heledagen :=
|
||
TRUNC (v_functiehersteldatum)
|
||
- TRUNC (v_begindatum + 1)
|
||
- v_vrijedagen;
|
||
END IF;
|
||
END IF;
|
||
ELSE -- pMode = 1
|
||
-- Oppassen als begin/eind in het weekend of zo valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
IF fac.iswerkdag (v_begindatum) = 0
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
IF fac.iswerkdag (v_functiehersteldatum) = 0
|
||
THEN
|
||
v_laatstedag := 0;
|
||
v_heledagen :=
|
||
fac.count_Work_Days (
|
||
TRUNC (v_begindatum),
|
||
TRUNC (v_functiehersteldatum));
|
||
ELSE
|
||
v_heledagen :=
|
||
fac.count_Work_Days (
|
||
TRUNC (v_begindatum),
|
||
TRUNC (v_functiehersteldatum))
|
||
- 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- v_uitvoertijd_fh_uren := v_eerstedag + v_laatstedag + v_heledagen * v_urenperdag;
|
||
-- default/uitvoertijdtype IN ('D', 'DAGEN')
|
||
v_uitvoertijd_fh_dagen.tijdsduur :=
|
||
( v_eerstedag
|
||
+ v_laatstedag
|
||
+ v_heledagen * v_urenperdag)
|
||
/ v_urenperdag;
|
||
-- v_uitvoertijd_fh.eenheid := 'D';
|
||
END IF;
|
||
|
||
UPDATE HCAS_KPI_LEVERANCIERS K
|
||
SET k.functiehersteltijd_dagen =
|
||
v_uitvoertijd_fh_dagen.tijdsduur
|
||
WHERE k.mld_opdr_key = rec.mld_opdr_key;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
-- variabelen die gebruikt worden in bepalen reparatie, eerst in dagen
|
||
-- bij een reparatie tellen nooit weekenden en feestdagen mee
|
||
-- pmode is daarom conform FCLT standaard: 1 is alleen werkdagen
|
||
v_begindatum := rec.datum_uitgifte;
|
||
v_einddatum := rec.datum_reparatie;
|
||
v_pBeginWerkUur := rec.geldend_fh_van;
|
||
v_pEindWerkUur := rec.geldend_fh_tot;
|
||
v_pmode := 1;
|
||
v_uitvoertijdtype := 'DAGEN';
|
||
|
||
IF v_begindatum IS NOT NULL
|
||
AND v_einddatum IS NOT NULL
|
||
AND v_pMode BETWEEN 0 AND 2
|
||
THEN
|
||
IF v_begindatum > v_einddatum
|
||
THEN
|
||
v_uitvoertijd_rep_dagen :=
|
||
fac.datumtijdnaaruitvoertijd (v_begindatum,
|
||
v_einddatum,
|
||
v_uitvoertijdtype,
|
||
v_pBeginWerkUur,
|
||
v_pEindWerkUur,
|
||
v_pMode);
|
||
|
||
v_uitvoertijd_rep_dagen.tijdsduur :=
|
||
-v_uitvoertijd_rep_dagen.tijdsduur;
|
||
ELSIF v_pMode = 2
|
||
THEN
|
||
--uitvoertijd := (v_functiehersteldatum - v_begindatum) * 24;
|
||
-- Zo simpel kan het zijn igv. 24/7!
|
||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||
v_uitvoertijd_rep_dagen.tijdsduur :=
|
||
v_einddatum - v_begindatum;
|
||
v_uitvoertijd_rep_dagen.eenheid := 'D';
|
||
ELSIF v_pBeginWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur > v_pBeginWerkUur
|
||
THEN
|
||
v_urenperdag := v_pEindWerkUur - v_pBeginWerkUur;
|
||
v_eerstedag :=
|
||
v_pEindWerkUur
|
||
- (TRUNC (v_begindatum, 'MI') - TRUNC (v_begindatum))
|
||
* 24;
|
||
v_eerstedag :=
|
||
LEAST (GREATEST (0, v_eerstedag), v_urenperdag);
|
||
v_laatstedag :=
|
||
(TRUNC (v_einddatum, 'MI') - TRUNC (v_einddatum)) * 24
|
||
- v_pBeginWerkUur;
|
||
v_laatstedag :=
|
||
LEAST (GREATEST (0, v_laatstedag), v_urenperdag);
|
||
|
||
IF v_pMode = 0
|
||
THEN
|
||
-- Oppassen als begin/eind op een vrije dag valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_begindatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_einddatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_laatstedag := 0;
|
||
END IF;
|
||
|
||
IF TRUNC (v_begindatum) = TRUNC (v_einddatum)
|
||
THEN
|
||
IF v_eerstedag + v_laatstedag > 0 -- geen vrije dag!
|
||
THEN
|
||
-- Als begindatum=einddatum <20>n werkdag, dan 1 dag corrigeren!
|
||
v_heledagen := -1;
|
||
ELSE
|
||
-- Als begindatum=einddatum <20>n vrije dag, dan geen correctie!
|
||
v_heledagen := 0;
|
||
END IF;
|
||
ELSE
|
||
-- Als begindatum<>einddatum, dan alleen nog vrije dagen tussen
|
||
-- begin+1 en eind-1 corrigeren (en altijd 0 als begin+1=eind)!
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (
|
||
v_begindatum
|
||
+ 1)
|
||
AND v_einddatum - 1;
|
||
|
||
IF TRUNC (v_begindatum + 1) = TRUNC (v_einddatum)
|
||
THEN
|
||
v_heledagen := 0;
|
||
ELSE
|
||
v_heledagen :=
|
||
TRUNC (v_einddatum)
|
||
- TRUNC (v_begindatum + 1)
|
||
- v_vrijedagen;
|
||
END IF;
|
||
END IF;
|
||
ELSE -- pMode = 1
|
||
-- Oppassen als begin/eind in het weekend of zo valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
IF fac.iswerkdag (v_begindatum) = 0
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
IF fac.iswerkdag (v_einddatum) = 0
|
||
THEN
|
||
v_laatstedag := 0;
|
||
v_heledagen :=
|
||
fac.count_Work_Days (TRUNC (v_begindatum),
|
||
TRUNC (v_einddatum));
|
||
ELSE
|
||
v_heledagen :=
|
||
fac.count_Work_Days (TRUNC (v_begindatum),
|
||
TRUNC (v_einddatum))
|
||
- 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- v_uitvoertijd_rep_dagen := v_eerstedag + v_laatstedag + v_heledagen * v_urenperdag;
|
||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||
v_uitvoertijd_rep_dagen.tijdsduur :=
|
||
( v_eerstedag
|
||
+ v_laatstedag
|
||
+ v_heledagen * v_urenperdag)
|
||
/ v_urenperdag;
|
||
v_uitvoertijd_rep_dagen.eenheid := 'D';
|
||
END IF;
|
||
|
||
UPDATE HCAS_KPI_LEVERANCIERS K
|
||
SET k.reparatietijd_dagen = v_uitvoertijd_rep_dagen.tijdsduur
|
||
WHERE k.mld_opdr_key = rec.mld_opdr_key;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
-- variabelen die gebruikt worden in bepalen reparatie, nu in uren
|
||
-- bij een reparatie tellen nooit weekenden en feestdagen mee
|
||
-- pmode is daarom conform FCLT standaard: 1 is alleen werkdagen
|
||
v_begindatum := rec.datum_uitgifte;
|
||
v_einddatum := rec.datum_reparatie;
|
||
v_pBeginWerkUur := rec.geldend_fh_van;
|
||
v_pEindWerkUur := rec.geldend_fh_tot;
|
||
v_pmode := 1;
|
||
v_uitvoertijdtype := 'UREN';
|
||
|
||
IF v_begindatum IS NOT NULL
|
||
AND v_einddatum IS NOT NULL
|
||
AND v_pMode BETWEEN 0 AND 2
|
||
THEN
|
||
IF v_begindatum > v_einddatum
|
||
THEN
|
||
v_uitvoertijd_rep_uren :=
|
||
fac.datumtijdnaaruitvoertijd (v_begindatum,
|
||
v_einddatum,
|
||
v_uitvoertijdtype,
|
||
v_pBeginWerkUur,
|
||
v_pEindWerkUur,
|
||
v_pMode);
|
||
|
||
v_uitvoertijd_rep_uren.tijdsduur :=
|
||
-v_uitvoertijd_rep_uren.tijdsduur;
|
||
ELSIF v_pMode = 2
|
||
THEN
|
||
v_uitvoertijd_rep_uren.tijdsduur :=
|
||
(v_einddatum - v_begindatum) * 24;
|
||
-- v_uitvoertijd.eenheid := 'U';
|
||
ELSIF v_pBeginWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur BETWEEN 0 AND 24
|
||
AND v_pEindWerkUur > v_pBeginWerkUur
|
||
THEN
|
||
v_urenperdag := v_pEindWerkUur - v_pBeginWerkUur;
|
||
v_eerstedag :=
|
||
v_pEindWerkUur
|
||
- (TRUNC (v_begindatum, 'MI') - TRUNC (v_begindatum))
|
||
* 24;
|
||
v_eerstedag :=
|
||
LEAST (GREATEST (0, v_eerstedag), v_urenperdag);
|
||
v_laatstedag :=
|
||
(TRUNC (v_einddatum, 'MI') - TRUNC (v_einddatum)) * 24
|
||
- v_pBeginWerkUur;
|
||
v_laatstedag :=
|
||
LEAST (GREATEST (0, v_laatstedag), v_urenperdag);
|
||
|
||
IF v_pMode = 0
|
||
THEN
|
||
-- Oppassen als begin/eind op een vrije dag valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_begindatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum = TRUNC (v_einddatum);
|
||
|
||
IF v_vrijedagen = 1
|
||
THEN
|
||
v_laatstedag := 0;
|
||
END IF;
|
||
|
||
IF TRUNC (v_begindatum) = TRUNC (v_einddatum)
|
||
THEN
|
||
IF v_eerstedag + v_laatstedag > 0 -- geen vrije dag!
|
||
THEN
|
||
-- Als begindatum=einddatum <20>n werkdag, dan 1 dag corrigeren!
|
||
v_heledagen := -1;
|
||
ELSE
|
||
-- Als begindatum=einddatum <20>n vrije dag, dan geen correctie!
|
||
v_heledagen := 0;
|
||
END IF;
|
||
ELSE
|
||
-- Als begindatum<>einddatum, dan alleen nog vrije dagen tussen
|
||
-- begin+1 en eind-1 corrigeren (en altijd 0 als begin+1=eind)!
|
||
SELECT COUNT (*)
|
||
INTO v_vrijedagen
|
||
FROM mld_vrije_dagen
|
||
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (
|
||
v_begindatum
|
||
+ 1)
|
||
AND v_einddatum - 1;
|
||
|
||
IF TRUNC (v_begindatum + 1) = TRUNC (v_einddatum)
|
||
THEN
|
||
v_heledagen := 0;
|
||
ELSE
|
||
v_heledagen :=
|
||
TRUNC (v_einddatum)
|
||
- TRUNC (v_begindatum + 1)
|
||
- v_vrijedagen;
|
||
END IF;
|
||
END IF;
|
||
ELSE -- pMode = 1
|
||
-- Oppassen als begin/eind in het weekend of zo valt,
|
||
-- dan moeten eerste/laatste dag gewoon 0 uur zijn.
|
||
IF fac.iswerkdag (v_begindatum) = 0
|
||
THEN
|
||
v_eerstedag := 0;
|
||
END IF;
|
||
|
||
IF fac.iswerkdag (v_einddatum) = 0
|
||
THEN
|
||
v_laatstedag := 0;
|
||
v_heledagen :=
|
||
fac.count_Work_Days (TRUNC (v_begindatum),
|
||
TRUNC (v_einddatum));
|
||
ELSE
|
||
v_heledagen :=
|
||
fac.count_Work_Days (TRUNC (v_begindatum),
|
||
TRUNC (v_einddatum))
|
||
- 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
v_uitvoertijd_rep_uren.tijdsduur :=
|
||
v_eerstedag + v_laatstedag + v_heledagen * v_urenperdag;
|
||
-- v_uitvoertijd.eenheid := 'U';
|
||
END IF;
|
||
|
||
UPDATE HCAS_KPI_LEVERANCIERS K
|
||
SET k.reparatietijd_uren = v_uitvoertijd_rep_uren.tijdsduur
|
||
WHERE k.mld_opdr_key = rec.mld_opdr_key;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
--- Dan moet de status van de opdracht bijgewerkt worden, zodat de opdrachten niet meer gemuteerd kunnen worden
|
||
UPDATE MLD_OPDR o
|
||
SET o.mld_statusopdr_key = 7
|
||
WHERE rec.mld_opdr_key = o.mld_opdr_key;
|
||
|
||
COMMIT;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_FH_REPARATIE
|
||
AS
|
||
SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422) datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde = ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) = o.mld_opdr_key;
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_rap_kpi
|
||
(
|
||
locatie,
|
||
bedrijf,
|
||
pmode,
|
||
service_window_van,
|
||
service_window_tot,
|
||
object_discipline,
|
||
objectgroep,
|
||
objectsoort,
|
||
object,
|
||
urgentieklasse_object,
|
||
conditieklasse_object,
|
||
type_melding,
|
||
opdracht_key,
|
||
opdracht_nr,
|
||
datum_opdracht,
|
||
functieherstel,
|
||
max_functiehersteltijd,
|
||
datum_functieherstel,
|
||
functiehersteltijd_uren,
|
||
gerepareerd,
|
||
max_reparatietijd,
|
||
datum_reparatie,
|
||
reparatietijd_dgn,
|
||
kpi_functieherstel,
|
||
kpi_reparatie,
|
||
kpi_one_time_fix
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
DECODE (kpi.pmode, 1, 'Werkdagen', 0, 'Alle dagen'),
|
||
kpi.geldend_fh_van
|
||
AS service_window_van,
|
||
kpi.geldend_fh_tot
|
||
AS service_window_tot,
|
||
obj.ins_discipline_omschrijving,
|
||
obj.ins_srtgroep_omschrijving,
|
||
obj.ins_srtdeel_omschrijving,
|
||
kpi.ins_deel_omschrijving
|
||
AS object,
|
||
kpi.urgentieklasse,
|
||
kpi.conditieklasse,
|
||
type_mld.type_melding,
|
||
o.mld_opdr_key,
|
||
o.mld_opdr_key || '/' || mld_opdr_bedrijfopdr_volgnr
|
||
AS opdracht,
|
||
kpi.datum_uitgifte
|
||
AS datum_opdracht,
|
||
kpi.functieherstel,
|
||
kpi.max_fh_tijd,
|
||
kpi.datum_functieherstel,
|
||
kpi.functiehersteltijd_uren,
|
||
kpi.gerepareerd,
|
||
kpi.max_rep_tijd,
|
||
kpi.datum_reparatie,
|
||
kpi.reparatietijd_dagen,
|
||
CASE
|
||
WHEN UPPER (functieherstel) = 'NEE'
|
||
THEN
|
||
'Niet van toepassing'
|
||
WHEN ( UPPER (functieherstel) = 'JA'
|
||
AND max_fh_tijd - functiehersteltijd_uren >= 0)
|
||
THEN
|
||
'Voldoende'
|
||
WHEN ( UPPER (functieherstel) = 'JA'
|
||
AND max_fh_tijd - functiehersteltijd_uren < 0)
|
||
THEN
|
||
'Onvoldoende '
|
||
ELSE
|
||
''
|
||
END
|
||
AS KPI_functieherstel,
|
||
CASE
|
||
WHEN UPPER (gerepareerd) <> 'JA'
|
||
THEN
|
||
'Niet van toepassing'
|
||
WHEN ( UPPER (gerepareerd) = 'JA'
|
||
AND max_rep_tijd - reparatietijd_dagen >= 0)
|
||
THEN
|
||
'Voldoende'
|
||
WHEN ( UPPER (gerepareerd) = 'JA'
|
||
AND max_rep_tijd - reparatietijd_dagen < 0)
|
||
THEN
|
||
'Onvoldoende'
|
||
ELSE
|
||
''
|
||
END
|
||
AS KPI_reparatie,
|
||
CASE
|
||
WHEN UPPER (functieherstel) = 'NEE'
|
||
OR datum_functieherstel = datum_reparatie
|
||
THEN
|
||
'Ja'
|
||
ELSE
|
||
'Nee '
|
||
END
|
||
AS KPI_one_time_fix
|
||
FROM hcas_kpi_leveranciers kpi,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
ins_v_deel_gegevens obj,
|
||
alg_locatie l,
|
||
(SELECT km.mld_melding_key, ud.fac_usrdata_omschr AS type_melding
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
|
||
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 181
|
||
AND fac.safe_to_number (mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND fac_usrtab_key = 121) type_mld
|
||
WHERE kpi.mld_melding_key = m.mld_melding_key
|
||
AND kpi.ins_deel_key = obj.ins_deel_key
|
||
AND kpi.mld_opdr_key = o.mld_opdr_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND type_mld.mld_melding_key = m.mld_melding_key;
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_rap_kpi_one_time_fix
|
||
(
|
||
locatie,
|
||
bedrijf,
|
||
type_melding,
|
||
datum_uitgifte,
|
||
aant_opdr,
|
||
aant_one_time_fix
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
type_mld.type_melding,
|
||
kpi.datum_uitgifte,
|
||
COUNT (kpi.mld_opdr_key),
|
||
SUM (
|
||
CASE
|
||
WHEN UPPER (functieherstel) = 'NEE'
|
||
OR datum_functieherstel = datum_reparatie
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END)
|
||
FROM hcas_kpi_leveranciers kpi,
|
||
mld_melding m,
|
||
ins_v_deel_gegevens obj,
|
||
alg_locatie l,
|
||
(SELECT km.mld_melding_key, ud.fac_usrdata_omschr AS type_melding
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
|
||
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 181
|
||
AND fac.safe_to_number (mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND fac_usrtab_key = 121) type_mld
|
||
WHERE kpi.mld_melding_key = m.mld_melding_key
|
||
AND kpi.ins_deel_key = obj.ins_deel_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND type_mld.mld_melding_key = m.mld_melding_key
|
||
GROUP BY alg_locatie_omschrijving,
|
||
prs_bedrijf_naam,
|
||
type_melding,
|
||
datum_uitgifte;
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_rap_kpi_hhstoring
|
||
(
|
||
locatie,
|
||
bedrijf,
|
||
type_melding,
|
||
datum_opdracht,
|
||
aant_opdr,
|
||
aant_herh_storing
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
prs_bedrijf_naam,
|
||
type_melding,
|
||
datum_uitgifte,
|
||
COUNT (mld_opdr_key),
|
||
SUM (DECODE (herhaalstoring, 'Ja', 1, 0))
|
||
FROM hcas_kpi_leveranciers kpi,
|
||
mld_melding m,
|
||
alg_locatie l,
|
||
(SELECT km.mld_melding_key, ud.fac_usrdata_omschr AS type_melding
|
||
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
|
||
WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
|
||
AND k.mld_srtkenmerk_key = 181
|
||
AND fac.safe_to_number (mld_kenmerkmelding_waarde) =
|
||
ud.fac_usrdata_key
|
||
AND fac_usrtab_key = 121) type_mld
|
||
WHERE type_mld.mld_melding_key = kpi.mld_melding_key
|
||
AND kpi.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND type_mld.mld_melding_key = m.mld_melding_key
|
||
AND kpi.conditieklasse NOT IN (5, 6)
|
||
GROUP BY l.alg_locatie_omschrijving,
|
||
prs_bedrijf_naam,
|
||
type_melding,
|
||
datum_uitgifte;
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_KPI_DOWNTIME
|
||
(
|
||
OPDRACHT,
|
||
KWARTAAL,
|
||
OBJECT_KEY,
|
||
OBJECT_OMSCHRIJVING,
|
||
LEVERANCIER,
|
||
DATUM_UITGIFTE,
|
||
DATUM_GEREED,
|
||
MAX_UPTIME,
|
||
DOWNTIME_DGN,
|
||
UPTIME_DGN,
|
||
TOELICHTING
|
||
)
|
||
AS
|
||
-- Begin en eind in zelfde Q: Q - jaartal datum uitgifte = Q - jaartal FH/reparatie
|
||
SELECT kpi.mld_opdr_key,
|
||
TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q')
|
||
AS tellend_kwartaal,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
(ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3))
|
||
- (TRUNC (datum_uitgifte, 'Q'))
|
||
AS max_uptime,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
- kpi.datum_uitgifte --- voor de downtime doen regime of urgentieklasse er niet toe
|
||
downtime_dgn,
|
||
( (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3))
|
||
- (TRUNC (datum_uitgifte, 'Q')))
|
||
- COALESCE (kpi.functiehersteltijd_dagen, kpi.reparatietijd_dagen)
|
||
uptime_dgn,
|
||
'Begin en einde in zelfde kwartaal'
|
||
AS toelichting
|
||
FROM hcas_kpi_leveranciers kpi
|
||
WHERE 'Q'
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'Q')
|
||
|| ' '
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'yyyy') =
|
||
'Q'
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'Q')
|
||
|| ' '
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'yyyy') --- alleen afgeronde kwartalen gaan mee, dus einddatum ligt voor de begin datum van current Q
|
||
AND ( kpi.datum_functieherstel < TRUNC (SYSDATE, 'Q')
|
||
OR kpi.datum_reparatie < TRUNC (SYSDATE, 'Q'))
|
||
UNION ALL
|
||
-- Begin en eind NIET in zelfde Q; het einde van de opdracht valt in een ander kwartaal, eerst het kwartaal tellen waar de aanmaak datum invalt
|
||
-- De aanmaakdatum moet vallen in het laatste volledige kwartaal, dus aanmaakdatum < start huidig Q
|
||
-- Let op: mld is nog niet per definitie afgemeld en zit dus niet pers<72> in kpi tabel!
|
||
SELECT kpi.mld_opdr_key, -- Downtime is dan einddatum Q - datum uitgifte
|
||
TO_CHAR (kpi.datum_uitgifte, 'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'Q')
|
||
AS tellend_kwartaal,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
(ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3))
|
||
- (TRUNC (datum_uitgifte, 'Q'))
|
||
AS max_uptime,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3) - kpi.datum_uitgifte --- voor de downtime doen regime of urgentieklasse er niet toe, einddatum is hier: einde kwartaal
|
||
AS downtime_dgn,
|
||
( (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3))
|
||
- (TRUNC (datum_uitgifte, 'Q')))
|
||
- ( ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), +3)
|
||
- kpi.datum_uitgifte)
|
||
AS uptime_dgn,
|
||
'Beginkwartaal tellen'
|
||
AS toelichting
|
||
FROM (SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie
|
||
FROM prs_bedrijf b,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde) AS prs_bedrijf_key
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key =
|
||
km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key) onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422)
|
||
datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key) opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key)
|
||
kpi
|
||
WHERE 'Q'
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'Q')
|
||
|| ' '
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'yyyy') <>
|
||
'Q'
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'Q')
|
||
|| ' '
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'yyyy')
|
||
AND kpi.datum_uitgifte < TRUNC (SYSDATE, 'Q')
|
||
UNION ALL
|
||
-- Begin en eind NIET in zelfde Q; het einde van de opdracht valt in een ander kwartaal, dan de uren tellen die vallen in het kwartaal van de afmeld datum
|
||
-- De melding is dan al wel afgemeld, dus kan de KPI tabel gebruikt worden
|
||
-- ook hier gaan we uit van het laatste volledige kwartaal dus datum functieherstel/ gereed < begin datum current Q
|
||
SELECT kpi.mld_opdr_key, -- Downtime is dan datum FH/gereed - begindatum kwartaal
|
||
TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q')
|
||
AS tellend_kwartaal,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
(ADD_MONTHS (
|
||
TRUNC (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'Q'),
|
||
+3))
|
||
- (TRUNC (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q'))
|
||
AS max_uptime,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
- TRUNC (COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q')
|
||
AS downtime_dgn,
|
||
( (ADD_MONTHS (
|
||
TRUNC (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'Q'),
|
||
+3))
|
||
- (TRUNC (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q')))
|
||
- ( COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
- TRUNC (
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie),
|
||
'Q'))
|
||
AS uptime_dgn,
|
||
'Eindkwartaal tellen'
|
||
AS toelichting
|
||
FROM hcas_kpi_leveranciers kpi
|
||
WHERE 'Q'
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'Q')
|
||
|| ' '
|
||
|| TO_CHAR (
|
||
COALESCE (kpi.datum_functieherstel,
|
||
kpi.datum_reparatie),
|
||
'yyyy') <>
|
||
'Q'
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'Q')
|
||
|| ' '
|
||
|| TO_CHAR (kpi.datum_uitgifte, 'yyyy')
|
||
AND ( kpi.datum_functieherstel < TRUNC (SYSDATE, 'Q')
|
||
OR kpi.datum_reparatie < TRUNC (SYSDATE, 'Q'))
|
||
UNION ALL
|
||
-- Begin en eind NIET in zelfde Q of volgend Q: dan zijn er dus tussenliggende kwartalen met 100% downtime
|
||
-- Dit zijn dus uiitsluitend de meldingen die over meer dan 2 kwartalen gaan
|
||
-- Downtime is dan gelijk aan max. uptime
|
||
-- Dus: datum gereed > einddatum next Q kwartaal uitgifte, de opdracht heeft het gehele volgende kwartaal open gestaan.
|
||
-- Of : datum gereed is null op tellend kwartaal (Q waarin de melding is aangemaakt + resp. 1, 2, 3 of 4)
|
||
SELECT kpi.mld_opdr_key,
|
||
TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 3)), 'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 3)), 'Q')
|
||
AS tellend_kwartaal,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 3)
|
||
MAX_UPTIME,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 3)
|
||
DOWNTIME_DGN,
|
||
0
|
||
UPTIME,
|
||
'Eerste volledige kwartaal down'
|
||
AS toelichting
|
||
FROM (SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie
|
||
FROM prs_bedrijf b,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde) AS prs_bedrijf_key
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key =
|
||
km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key) onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422)
|
||
datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key) opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key)
|
||
kpi
|
||
WHERE ( (COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie) >
|
||
LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 5)))
|
||
OR ( kpi.datum_functieherstel IS NULL
|
||
AND kpi.datum_reparatie IS NULL))
|
||
AND LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 5)) <
|
||
SYSDATE
|
||
UNION ALL
|
||
-- Datum gereed > einddatum 2 kwartalen verder, de opdracht heeft 2 gehele volgende kwartalen open gestaan.
|
||
SELECT kpi.mld_opdr_key,
|
||
TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)), 'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)), 'Q')
|
||
AS tellend_kwartaal,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)
|
||
MAX_UPTIME,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 6)
|
||
DOWNTIME_DGN,
|
||
0
|
||
UPTIME,
|
||
'Tweede Kwartaal volledige down'
|
||
AS toelichting
|
||
FROM (SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie
|
||
FROM prs_bedrijf b,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde) AS prs_bedrijf_key
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key =
|
||
km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key) onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422)
|
||
datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key) opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key)
|
||
kpi
|
||
WHERE ( COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie) >
|
||
LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 8))
|
||
OR ( kpi.datum_functieherstel IS NULL
|
||
AND kpi.datum_reparatie IS NULL))
|
||
AND LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 8)) <
|
||
SYSDATE
|
||
UNION ALL
|
||
-- Datum gereed > einddatum 3 kwartalen verder, de opdracht heeft 3 gehele volgende kwartalen open gestaan.
|
||
SELECT kpi.mld_opdr_key,
|
||
TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)), 'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)), 'Q')
|
||
AS TELLEND_KWARTAAL,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)
|
||
MAX_UPTIME,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 9)
|
||
DOWNTIME_DGN,
|
||
0
|
||
UPTIME,
|
||
'Derde kwartaal volledig down'
|
||
AS toelichting
|
||
FROM (SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie
|
||
FROM prs_bedrijf b,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde) AS prs_bedrijf_key
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key =
|
||
km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key) onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422)
|
||
datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key) opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key)
|
||
kpi
|
||
WHERE ( COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie) >
|
||
LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 11))
|
||
OR ( kpi.datum_functieherstel IS NULL
|
||
AND kpi.datum_reparatie IS NULL))
|
||
AND LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 11)) <
|
||
SYSDATE
|
||
UNION ALL
|
||
-- De opdracht heeft 4 gehele volgende kwartalen/ een volledig jaar open gestaan.
|
||
SELECT kpi.mld_opdr_key,
|
||
TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)),
|
||
'yyyy')
|
||
|| ' Q'
|
||
|| TO_CHAR ((ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)), 'Q')
|
||
AS TELLEND_KWARTAAL,
|
||
kpi.ins_deel_key,
|
||
kpi.ins_deel_omschrijving,
|
||
kpi.prs_bedrijf_naam,
|
||
kpi.datum_uitgifte,
|
||
COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie)
|
||
datum_gereed,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 15)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)
|
||
MAX_UPTIME,
|
||
ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 15)
|
||
- ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 12)
|
||
DOWNTIME_DGN,
|
||
0
|
||
UPTIME,
|
||
'Vierde kwartaal volledig down'
|
||
AS omschrijving
|
||
FROM (SELECT b.prs_bedrijf_key,
|
||
b.prs_bedrijf_naam,
|
||
onderhoud_obj.ins_deel_omschrijving,
|
||
opdracht.ins_deel_key,
|
||
opdracht.mld_opdr_key,
|
||
opdracht.datum_uitgifte,
|
||
opdracht.functieherstel,
|
||
opdracht.datum_functieherstel,
|
||
opdracht.gerepareerd,
|
||
opdracht.datum_reparatie
|
||
FROM prs_bedrijf b,
|
||
(SELECT o.ins_deel_key,
|
||
o.ins_deel_omschrijving,
|
||
fac.safe_to_number (
|
||
onderhoudsleverancier.ins_kenmerkdeel_waarde) AS prs_bedrijf_key
|
||
FROM ins_deel o,
|
||
(SELECT kd.*
|
||
FROM ins_kenmerkdeel kd, ins_kenmerk km
|
||
WHERE kd.ins_kenmerk_key =
|
||
km.ins_kenmerk_key
|
||
AND km.ins_srtkenmerk_key = 62)
|
||
onderhoudsleverancier
|
||
WHERE o.ins_deel_verwijder IS NULL
|
||
AND onderhoudsleverancier.ins_deel_key =
|
||
o.ins_deel_key) onderhoud_obj,
|
||
(SELECT mo.ins_deel_key,
|
||
m.mld_melding_key,
|
||
o.mld_opdr_key,
|
||
o.mld_typeopdr_key,
|
||
o.mld_statusopdr_key,
|
||
so.mld_statusopdr_omschrijving,
|
||
fac.safe_to_number (o.mld_uitvoerende_keys)
|
||
AS uitv_bedrijf,
|
||
fac.safe_to_date (
|
||
datum_uitg.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_uitg.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_uitgifte,
|
||
functieherstel.fac_usrdata_omschr
|
||
AS functieherstel,
|
||
fac.safe_to_date (
|
||
datum_functieherstel.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_functieherstel.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_functieherstel,
|
||
reparatie.fac_usrdata_omschr
|
||
AS gerepareerd,
|
||
fac.safe_to_date (
|
||
datum_reparatie.mld_kenmerkopdr_waarde
|
||
|| ' '
|
||
|| tijd_reparatie.mld_kenmerkopdr_waarde,
|
||
'dd-mm-yyyy hh24:mi')
|
||
AS datum_reparatie
|
||
FROM mld_melding_object mo,
|
||
mld_melding m,
|
||
mld_opdr o,
|
||
mld_statusopdr so,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 402) datum_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 403) tijd_uitg,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 423) functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 422)
|
||
datum_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 425) tijd_functieherstel,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
||
WHERE ko.mld_kenmerkopdr_waarde =
|
||
ud.fac_usrdata_key
|
||
AND ud.fac_usrtab_key = 241
|
||
AND mld_kenmerk_key = 441) reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 427) datum_reparatie,
|
||
(SELECT *
|
||
FROM mld_kenmerkopdr ko
|
||
WHERE mld_kenmerk_key = 428) tijd_reparatie
|
||
WHERE mo.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_melding_key = m.mld_melding_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND datum_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND tijd_uitg.mld_opdr_key = o.mld_opdr_key
|
||
AND functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND datum_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_functieherstel.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND reparatie.mld_opdr_key(+) = o.mld_opdr_key
|
||
AND datum_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key
|
||
AND tijd_reparatie.mld_opdr_key(+) =
|
||
o.mld_opdr_key) opdracht
|
||
WHERE prs_bedrijf_verwijder IS NULL
|
||
AND prs_bedrijf_leverancier = 1
|
||
AND onderhoud_obj.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND opdracht.uitv_bedrijf = b.prs_bedrijf_key
|
||
AND opdracht.ins_deel_key = onderhoud_obj.ins_deel_key)
|
||
kpi
|
||
WHERE ( COALESCE (kpi.datum_functieherstel, kpi.datum_reparatie) >
|
||
LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 14))
|
||
OR ( kpi.datum_functieherstel IS NULL
|
||
AND kpi.datum_reparatie IS NULL))
|
||
AND LAST_DAY (ADD_MONTHS (TRUNC (datum_uitgifte, 'Q'), 14)) <
|
||
SYSDATE;
|
||
|
||
---- ===================================================
|
||
--- Views tbv de FM dashboard
|
||
--- HCAS#54956 Alles op Groen
|
||
|
||
--- Operationeel Trends
|
||
--- Resultaatgebied 2: Gem. doorlooptijd meldingen per locatie per meldingcategorie
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_TRENDS_RESG2
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving,
|
||
TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_einddatum, 'mm') AS periode,
|
||
(SUM (m.mld_melding_einddatum - m.mld_melding_datum))
|
||
/ (COUNT (m.mld_melding_key)) AS gem_doorlooptijd
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg,
|
||
alg_locatie l
|
||
WHERE m.mld_melding_status IN (5, 6) --- status is afgemeld of historie
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.mld_melding_einddatum > TO_DATE ('01-01-2000', 'dd-mm-yyyy')
|
||
AND MONTHS_BETWEEN (TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) <
|
||
12
|
||
AND MONTHS_BETWEEN (TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) >
|
||
0
|
||
GROUP BY l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving,
|
||
TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_einddatum, 'mm')
|
||
ORDER BY l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving,
|
||
TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_einddatum, 'mm');
|
||
|
||
--- Operationeel Trends
|
||
--- Resultaatgebied 3: Gem. uptime apparaten per vestiging
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_TRENDS_RESG3
|
||
AS
|
||
SELECT objecten.periode,
|
||
objecten.locatie,
|
||
objecten.max_dgn * COUNT (objecten.ins_deel_key) max_uptime,
|
||
COUNT (objecten.ins_deel_key) aant_obj,
|
||
SUM (NVL (storingen.downtime, 0)) downtime,
|
||
(objecten.max_dgn * COUNT (objecten.ins_deel_key))
|
||
- SUM (NVL (storingen.downtime, 0)) uptime,
|
||
( ( (objecten.max_dgn * COUNT (objecten.ins_deel_key))
|
||
- SUM (NVL (storingen.downtime, 0)))
|
||
/ (objecten.max_dgn * COUNT (objecten.ins_deel_key)))
|
||
* 100 perc_uptime
|
||
FROM (SELECT TO_CHAR (periode.begin_mnd, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (periode.begin_mnd, 'mm') AS periode,
|
||
eind_mnd - begin_mnd max_dgn,
|
||
l.alg_locatie_omschrijving locatie,
|
||
o.ins_deel_key
|
||
FROM ( SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1 * ROWNUM)
|
||
begin_mnd,
|
||
LAST_DAY (
|
||
ADD_MONTHS (TRUNC (SYSDATE, 'MM'),
|
||
-1 * ROWNUM))
|
||
eind_mnd
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 12) periode,
|
||
ins_deel o,
|
||
alg_locatie l
|
||
WHERE o.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND o.ins_deel_aanmaak < periode.begin_mnd
|
||
AND ( o.ins_deel_verwijder > periode.eind_mnd
|
||
OR o.ins_deel_verwijder IS NULL)
|
||
AND ( o.ins_deel_vervaldatum > periode.eind_mnd
|
||
OR o.ins_deel_vervaldatum IS NULL)) objecten
|
||
LEFT OUTER JOIN
|
||
(SELECT TO_CHAR (periode.begin_mnd, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (periode.begin_mnd, 'mm') AS periode,
|
||
(eind_mnd - begin_mnd) max_dgn,
|
||
mo.ins_deel_key,
|
||
CASE
|
||
--- scenario 1: begin en eind van de melding vallen in dezelfde maand
|
||
WHEN ( mld_melding_datum > begin_mnd
|
||
AND mld_melding_einddatum < eind_mnd)
|
||
THEN
|
||
mld_melding_einddatum - mld_melding_datum
|
||
--- scenario 2: begin van de melding valt binnen de maand maar het einde niet
|
||
WHEN ( mld_melding_datum >= begin_mnd
|
||
AND mld_melding_einddatum > eind_mnd)
|
||
THEN
|
||
eind_mnd - mld_melding_datum
|
||
--- scenario 3: begin en einde van de melding vallen buiten de maand, dan is de downtime gewoon de max
|
||
WHEN ( mld_melding_datum < begin_mnd
|
||
AND mld_melding_einddatum > eind_mnd)
|
||
THEN
|
||
eind_mnd - begin_mnd
|
||
--- scenario 4: meldingdatum ligt voor het begin van de maand maar de einddatum valt wel in de maand
|
||
ELSE
|
||
mld_melding_einddatum - begin_mnd
|
||
END AS downtime,
|
||
m.mld_melding_key,
|
||
mld_melding_datum,
|
||
mld_melding_einddatum,
|
||
vg.ins_discipline_omschrijving
|
||
FROM ( SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1 * ROWNUM)
|
||
begin_mnd,
|
||
LAST_DAY (
|
||
ADD_MONTHS (TRUNC (SYSDATE, 'MM'),
|
||
-1 * ROWNUM))
|
||
eind_mnd
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 12) periode,
|
||
mld_melding m,
|
||
mld_melding_object mo,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND mld_melding_datum < periode.eind_mnd
|
||
AND COALESCE (mld_melding_einddatum, SYSDATE) >
|
||
periode.begin_mnd
|
||
AND m.mld_melding_key = mo.mld_melding_key) storingen
|
||
ON objecten.periode = storingen.periode
|
||
AND objecten.ins_deel_key = storingen.ins_deel_key
|
||
GROUP BY objecten.periode, objecten.max_dgn, objecten.locatie
|
||
ORDER BY objecten.periode, objecten.locatie;
|
||
|
||
--- Operationeel Processen
|
||
--- Resultaat gebied 1: Top 5 vakgroep aantal meldingen per maand per locatie
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_PROCESSEN_RESG1
|
||
AS
|
||
SELECT periode,
|
||
locatie,
|
||
vakgroep,
|
||
ranking,
|
||
aantal_mld
|
||
FROM (SELECT periode,
|
||
locatie,
|
||
vakgroep,
|
||
aantal_mld,
|
||
RANK ()
|
||
OVER (PARTITION BY periode, locatie
|
||
ORDER BY aantal_mld DESC) RANKING
|
||
FROM ( SELECT TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm')
|
||
AS periode,
|
||
l.alg_locatie_omschrijving
|
||
AS locatie,
|
||
vg.ins_discipline_omschrijving
|
||
AS vakgroep,
|
||
COUNT (m.mld_melding_key)
|
||
AS aantal_mld
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg,
|
||
alg_locatie l
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key =
|
||
vg.ins_discipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.mld_melding_einddatum >
|
||
TO_DATE ('01-01-2000', 'dd-mm-yyyy')
|
||
AND MONTHS_BETWEEN (
|
||
TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) <
|
||
12
|
||
AND MONTHS_BETWEEN (
|
||
TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) >
|
||
0
|
||
GROUP BY TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving
|
||
ORDER BY TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
COUNT (m.mld_melding_key) DESC)
|
||
meldingen_categorie) RANK
|
||
WHERE RANKING < 6;
|
||
|
||
--- Operationeel Processen
|
||
--- Resultaat gebied 2: Gem. doorlooptijd per maand, per locatie per vakgroep
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_PROCESSEN_RESG2
|
||
AS
|
||
SELECT TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm') AS periode,
|
||
l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving,
|
||
(SUM (m.mld_melding_einddatum - m.mld_melding_datum))
|
||
/ (COUNT (m.mld_melding_key)) AS gem_doorlooptijd
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg,
|
||
alg_locatie l
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.mld_melding_einddatum > TO_DATE ('01-01-2000', 'dd-mm-yyyy')
|
||
AND MONTHS_BETWEEN (TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) <
|
||
12
|
||
AND MONTHS_BETWEEN (TRUNC (TRUNC (SYSDATE, 'Month'), 'Month'),
|
||
m.mld_melding_datum) >
|
||
0
|
||
GROUP BY TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving
|
||
ORDER BY TO_CHAR (m.mld_melding_einddatum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
vg.ins_discipline_omschrijving;
|
||
|
||
--- Operationeel Processen
|
||
--- Resultaat gebied 3: Gem. uptime van apparaten per vestiging
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_PROCESSEN_RESG3
|
||
AS
|
||
SELECT objecten.periode,
|
||
objecten.locatie,
|
||
storingen.vakgroep,
|
||
objecten.max_dgn * COUNT (objecten.ins_deel_key) max_uptime,
|
||
COUNT (objecten.ins_deel_key) aant_obj,
|
||
SUM (NVL (storingen.downtime, 0)) downtime,
|
||
(objecten.max_dgn * COUNT (objecten.ins_deel_key))
|
||
- SUM (NVL (storingen.downtime, 0)) uptime,
|
||
( ( (objecten.max_dgn * COUNT (objecten.ins_deel_key))
|
||
- SUM (NVL (storingen.downtime, 0)))
|
||
/ (objecten.max_dgn * COUNT (objecten.ins_deel_key)))
|
||
* 100 perc_uptime
|
||
FROM (SELECT TO_CHAR (periode.begin_mnd, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (periode.begin_mnd, 'mm') AS periode,
|
||
eind_mnd - begin_mnd max_dgn,
|
||
l.alg_locatie_omschrijving locatie,
|
||
o.ins_deel_key
|
||
FROM ( SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1 * ROWNUM)
|
||
begin_mnd,
|
||
LAST_DAY (
|
||
ADD_MONTHS (TRUNC (SYSDATE, 'MM'),
|
||
-1 * ROWNUM))
|
||
eind_mnd
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 12) periode,
|
||
ins_deel o,
|
||
alg_locatie l
|
||
WHERE o.ins_alg_locatie_key = l.alg_locatie_key
|
||
AND o.ins_deel_aanmaak < periode.begin_mnd
|
||
AND ( o.ins_deel_verwijder > periode.eind_mnd
|
||
OR o.ins_deel_verwijder IS NULL)
|
||
AND ( o.ins_deel_vervaldatum > periode.eind_mnd
|
||
OR o.ins_deel_vervaldatum IS NULL)) objecten
|
||
LEFT OUTER JOIN
|
||
(SELECT TO_CHAR (periode.begin_mnd, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (periode.begin_mnd, 'mm') AS periode,
|
||
(eind_mnd - begin_mnd) max_dgn,
|
||
mo.ins_deel_key,
|
||
CASE
|
||
--- scenario 1: begin en eind van de melding vallen in dezelfde maand
|
||
WHEN ( mld_melding_datum > begin_mnd
|
||
AND mld_melding_einddatum < eind_mnd)
|
||
THEN
|
||
mld_melding_einddatum - mld_melding_datum
|
||
--- scenario 2: begin van de melding valt binnen de maand maar het einde niet
|
||
WHEN ( mld_melding_datum >= begin_mnd
|
||
AND mld_melding_einddatum > eind_mnd)
|
||
THEN
|
||
eind_mnd - mld_melding_datum
|
||
--- scenario 3: begin en einde van de melding vallen buiten de maand, dan is de downtime gewoon de max
|
||
WHEN ( mld_melding_datum < begin_mnd
|
||
AND mld_melding_einddatum > eind_mnd)
|
||
THEN
|
||
eind_mnd - begin_mnd
|
||
--- scenario 4: meldingdatum ligt voor het begin van de maand maar de einddatum valt wel in de maand
|
||
ELSE
|
||
mld_melding_einddatum - begin_mnd
|
||
END AS downtime,
|
||
m.mld_melding_key,
|
||
mld_melding_datum,
|
||
mld_melding_einddatum,
|
||
vg.ins_discipline_omschrijving vakgroep
|
||
FROM ( SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1 * ROWNUM)
|
||
begin_mnd,
|
||
LAST_DAY (
|
||
ADD_MONTHS (TRUNC (SYSDATE, 'MM'),
|
||
-1 * ROWNUM))
|
||
eind_mnd
|
||
FROM DUAL
|
||
CONNECT BY LEVEL <= 12) periode,
|
||
mld_melding m,
|
||
mld_melding_object mo,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND mld_melding_datum < periode.eind_mnd
|
||
AND COALESCE (mld_melding_einddatum, SYSDATE) >
|
||
periode.begin_mnd
|
||
AND m.mld_melding_key = mo.mld_melding_key) storingen
|
||
ON objecten.periode = storingen.periode
|
||
AND objecten.ins_deel_key = storingen.ins_deel_key
|
||
WHERE storingen.vakgroep IS NOT NULL --- dus hier wordt alleen gekeken naar objecten die ook daadwerkelijk in storing hebben gestaan
|
||
GROUP BY objecten.periode,
|
||
objecten.max_dgn,
|
||
objecten.locatie,
|
||
storingen.vakgroep
|
||
ORDER BY objecten.periode, objecten.locatie, storingen.vakgroep;
|
||
|
||
--- Vanuit FO Stuurinformatie uit Facilitair Meldpunt,
|
||
--- zie document Functioneel ontwerp V1R0docx.docx in HCAS#54956: Inrichten Facilitair Dashboard
|
||
|
||
--- 2.1 Vandaag binnengekomen meldingen tov gem aantal op die weekdag
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_gem_weekdag
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
dag,
|
||
fclt_sort,
|
||
fclt_yas2_gem,
|
||
fclt_yas_aant
|
||
)
|
||
AS
|
||
WITH
|
||
telling
|
||
AS
|
||
(SELECT gem.locatie,
|
||
gem.alg_locatie_key,
|
||
gem.dag,
|
||
gem.tijd,
|
||
totaal_gem,
|
||
SUM (COALESCE (vandaag.aantal, 0))
|
||
OVER (PARTITION BY gem.locatie
|
||
ORDER BY
|
||
gem.locatie,
|
||
gem.dag,
|
||
gem.tijd,
|
||
totaal_gem,
|
||
COALESCE (vandaag.aantal, 0)) totaal_vandaag
|
||
FROM ( SELECT l.alg_locatie_omschrijving
|
||
locatie,
|
||
l.alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'DAY')
|
||
dag,
|
||
TO_CHAR (m.mld_melding_datum, 'HH24')
|
||
tijd,
|
||
ROUND ((COUNT (m.mld_melding_key) / 12), 1)
|
||
gem,
|
||
SUM (ROUND ((COUNT (m.mld_melding_key) / 12), 1))
|
||
OVER (
|
||
PARTITION BY alg_locatie_omschrijving
|
||
ORDER BY
|
||
l.alg_locatie_omschrijving,
|
||
TO_CHAR (m.mld_melding_datum, 'DAY'),
|
||
TO_CHAR (m.mld_melding_datum, 'HH24'),
|
||
ROUND (
|
||
(COUNT (m.mld_melding_key) / 12),
|
||
1))
|
||
totaal_gem
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND ( sm.prs_dienst_key <> 561
|
||
OR sm.prs_dienst_key IS NULL)
|
||
AND TO_CHAR (m.mld_melding_datum, 'DAY') =
|
||
TO_CHAR (SYSDATE, 'DAY')
|
||
AND TRUNC (m.mld_melding_datum) >
|
||
TRUNC (SYSDATE - 85)
|
||
GROUP BY l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'DAY'),
|
||
TO_CHAR (m.mld_melding_datum, 'HH24')) gem
|
||
FULL OUTER JOIN
|
||
( SELECT l.alg_locatie_omschrijving locatie,
|
||
TO_CHAR (m.mld_melding_datum, 'HH24') tijd,
|
||
TO_CHAR (m.mld_melding_datum, 'DAY') dag,
|
||
COUNT (m.mld_melding_key) aantal
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND ( sm.prs_dienst_key <> 561
|
||
OR sm.prs_dienst_key IS NULL)
|
||
GROUP BY l.alg_locatie_omschrijving,
|
||
TO_CHAR (m.mld_melding_datum, 'HH24'),
|
||
TO_CHAR (m.mld_melding_datum, 'DAY')
|
||
ORDER BY l.alg_locatie_omschrijving,
|
||
(TO_CHAR (m.mld_melding_datum, 'HH24')))
|
||
vandaag
|
||
ON gem.tijd = vandaag.tijd
|
||
AND gem.locatie = vandaag.locatie
|
||
AND gem.dag = vandaag.dag),
|
||
dense_count
|
||
AS
|
||
( SELECT LPAD (ROWNUM, 2, '0') AS tijd,
|
||
TO_CHAR (SYSDATE, 'DAY') dag
|
||
FROM DUAL
|
||
CONNECT BY ROWNUM < 24)
|
||
SELECT t.locatie,
|
||
t.alg_locatie_key,
|
||
dc.dag,
|
||
dc.tijd,
|
||
LAST_VALUE (t.totaal_gem IGNORE NULLS)
|
||
OVER (PARTITION BY t.locatie
|
||
ORDER BY t.locatie, dc.dag, dc.tijd) last_gem,
|
||
LAST_VALUE (t.totaal_vandaag IGNORE NULLS)
|
||
OVER (PARTITION BY t.locatie
|
||
ORDER BY t.locatie, dc.dag, dc.tijd) last_totaal
|
||
FROM telling t
|
||
PARTITION BY (t.locatie)
|
||
RIGHT OUTER JOIN dense_count dc ON dc.tijd = t.tijd;
|
||
|
||
--- 2.2 Aantallen meldingen nog niet in behandeling, openstaand en vandaag afgehandeld
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_status_today
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
mld_melding_key,
|
||
datum_new,
|
||
datum_acc,
|
||
datum_afgh,
|
||
fclt_sort,
|
||
status_telmoment
|
||
)
|
||
AS
|
||
WITH
|
||
status
|
||
AS
|
||
(SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
m.mld_melding_key,
|
||
(SELECT t.fac_tracking_datum
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding'
|
||
AND sn.fac_srtnotificatie_key =
|
||
t.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_key = 43)
|
||
datum_new,
|
||
COALESCE (
|
||
(SELECT MIN (t.fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding'
|
||
AND sn.fac_srtnotificatie_key =
|
||
t.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_key = 37),
|
||
(SELECT MIN (t.fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding'
|
||
AND sn.fac_srtnotificatie_key =
|
||
t.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_key = 45))
|
||
datum_acc,
|
||
(SELECT MIN (t.fac_tracking_datum)
|
||
FROM fac_tracking t, fac_srtnotificatie sn
|
||
WHERE t.fac_tracking_refkey = m.mld_melding_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding'
|
||
AND sn.fac_srtnotificatie_key =
|
||
t.fac_srtnotificatie_key
|
||
AND sn.fac_srtnotificatie_key IN (38, 44))
|
||
datum_afgh
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND ( sm.prs_dienst_key <> 561
|
||
OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL)
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling1.telling1,
|
||
CASE
|
||
WHEN ( status.datum_new < telling1.telling1
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling1.telling1)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling1.telling1))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling1.telling1
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling1.telling1))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling1.telling1
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment1
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 04:00'),
|
||
'dd-mm-yyyy HH24:mi') telling1
|
||
FROM DUAL) telling1
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE)
|
||
OR status.datum_afgh IS NULL
|
||
UNION ALL
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling2.telling2,
|
||
CASE
|
||
WHEN ( status.datum_new < telling2.telling2
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling2.telling2)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling2.telling2))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling2.telling2
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling2.telling2))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling2.telling2
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment2
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 08:00'),
|
||
'dd-mm-yyyy HH24:mi') telling2
|
||
FROM DUAL) telling2
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE) OR datum_afgh IS NULL
|
||
UNION ALL
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling3.telling3,
|
||
CASE
|
||
WHEN ( status.datum_new < telling3.telling3
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling3.telling3)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling3.telling3))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling3.telling3
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling3.telling3))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling3.telling3
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment3
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 12:00'),
|
||
'dd-mm-yyyy HH24:mi') telling3
|
||
FROM DUAL) telling3
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE)
|
||
OR status.datum_afgh IS NULL
|
||
UNION ALL
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling4.telling4,
|
||
CASE
|
||
WHEN ( status.datum_new < telling4.telling4
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling4.telling4)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling4.telling4))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling4.telling4
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling4.telling4))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling4.telling4
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment4
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 16:00'),
|
||
'dd-mm-yyyy HH24:mi') telling4
|
||
FROM DUAL) telling4
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE)
|
||
OR status.datum_afgh IS NULL
|
||
UNION ALL
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling5.telling5,
|
||
CASE
|
||
WHEN ( status.datum_new < telling5.telling5
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling5.telling5)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling5.telling5))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling5.telling5
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling5.telling5))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling5.telling5
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment5
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 20:00'),
|
||
'dd-mm-yyyy HH24:mi') telling5
|
||
FROM DUAL) telling5
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE)
|
||
OR status.datum_afgh IS NULL
|
||
UNION ALL
|
||
SELECT status.alg_locatie_omschrijving,
|
||
status.alg_locatie_key,
|
||
status.mld_melding_key,
|
||
status.datum_new,
|
||
status.datum_acc,
|
||
status.datum_afgh,
|
||
telling6.telling6,
|
||
CASE
|
||
WHEN ( status.datum_new < telling6.telling6
|
||
AND ( status.datum_acc IS NULL
|
||
OR status.datum_acc > telling6.telling6)
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling6.telling6))
|
||
THEN
|
||
'Nog niet in behandeling'
|
||
WHEN ( status.datum_acc < telling6.telling6
|
||
AND ( status.datum_afgh IS NULL
|
||
OR status.datum_afgh > telling6.telling6))
|
||
THEN
|
||
'In behandeling'
|
||
WHEN ( status.datum_afgh < telling6.telling6
|
||
AND TRUNC (status.datum_afgh) = (TRUNC (SYSDATE)))
|
||
THEN
|
||
'Vandaag afgehandeld'
|
||
END status_moment6
|
||
FROM status,
|
||
(SELECT TO_DATE ((TO_CHAR (SYSDATE, 'dd-mm-yyyy') || ' 23:59'),
|
||
'dd-mm-yyyy HH24:mi') telling6
|
||
FROM DUAL) telling6
|
||
WHERE TRUNC (status.datum_afgh) = TRUNC (SYSDATE)
|
||
OR status.datum_afgh IS NULL;
|
||
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_status_today_count
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
fclt_sort,
|
||
aant_niet_beh,
|
||
aant_beh,
|
||
vandaag_afgh
|
||
)
|
||
AS
|
||
SELECT locatie,
|
||
fclt_3d_locatie_key,
|
||
fclt_sort,
|
||
( SELECT COUNT (mld_melding_key)
|
||
FROM hcas_v_status_today beh
|
||
WHERE status_telmoment = 'Nog niet in behandeling'
|
||
AND beh.locatie = h.locatie
|
||
AND beh.fclt_sort = h.fclt_sort
|
||
GROUP BY locatie, fclt_sort) aant_niet_beh,
|
||
( SELECT COUNT (mld_melding_key)
|
||
FROM hcas_v_status_today beh
|
||
WHERE status_telmoment = 'In behandeling'
|
||
AND beh.locatie = h.locatie
|
||
AND beh.fclt_sort = h.fclt_sort
|
||
GROUP BY locatie, fclt_sort) aant_beh,
|
||
( SELECT COUNT (mld_melding_key)
|
||
FROM hcas_v_status_today beh
|
||
WHERE status_telmoment = 'Vandaag afgehandeld'
|
||
AND beh.locatie = h.locatie
|
||
AND beh.fclt_sort = h.fclt_sort
|
||
GROUP BY locatie, fclt_sort) vandaag_afgh
|
||
FROM hcas_v_status_today h
|
||
WHERE fclt_sort < SYSDATE
|
||
GROUP BY locatie, fclt_3d_locatie_key, fclt_sort;
|
||
|
||
--- 2.3 Aantallen meldingen waarvan de laatste terugkoppeling langer dan X aantal dagen is
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_terugkoppeling
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
status,
|
||
fclt_sort,
|
||
aantal
|
||
)
|
||
AS
|
||
SELECT referentie.locatie,
|
||
referentie.alg_locatie_key,
|
||
referentie.status,
|
||
DECODE (referentie.status,
|
||
'1-2 dagen', 1,
|
||
'3-7 dagen', 2,
|
||
'>7 dagen', 3) fclt_sort,
|
||
COUNT (status_bep.mld_melding_key)
|
||
FROM ( SELECT l.alg_locatie_omschrijving locatie,
|
||
m.mld_melding_key,
|
||
CASE
|
||
WHEN MAX (TRUNC (t.fac_tracking_datum)) <
|
||
TRUNC (SYSDATE - 7)
|
||
THEN
|
||
'>7 dagen'
|
||
WHEN MAX (TRUNC (t.fac_tracking_datum)) >
|
||
TRUNC (SYSDATE - 8)
|
||
AND MAX (TRUNC (t.fac_tracking_datum)) <
|
||
TRUNC (SYSDATE - 2)
|
||
THEN
|
||
'3-7 dagen'
|
||
WHEN MAX (TRUNC (t.fac_tracking_datum)) >
|
||
TRUNC (SYSDATE - 3)
|
||
THEN
|
||
'1-2 dagen'
|
||
END status
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
alg_locatie l,
|
||
fac_tracking t,
|
||
fac_srtnotificatie sn
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND sn.fac_srtnotificatie_xmlnode = 'melding'
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.mld_melding_status NOT IN (0,
|
||
5,
|
||
99,
|
||
6)
|
||
GROUP BY l.alg_locatie_omschrijving, m.mld_melding_key)
|
||
status_bep
|
||
FULL JOIN
|
||
(SELECT l.alg_locatie_omschrijving locatie,
|
||
l.alg_locatie_key,
|
||
'>7 dagen' status
|
||
FROM alg_locatie l
|
||
WHERE l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
UNION ALL
|
||
SELECT l.alg_locatie_omschrijving locatie,
|
||
l.alg_locatie_key,
|
||
'3-7 dagen' status
|
||
FROM alg_locatie l
|
||
WHERE l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
UNION ALL
|
||
SELECT l.alg_locatie_omschrijving locatie,
|
||
l.alg_locatie_key,
|
||
'1-2 dagen' status
|
||
FROM alg_locatie l
|
||
WHERE l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE)))
|
||
referentie
|
||
ON status_bep.locatie = referentie.locatie
|
||
AND status_bep.status = referentie.status
|
||
GROUP BY referentie.locatie, referentie.alg_locatie_key,referentie.status;
|
||
|
||
|
||
--- 2.4 aantallen likes en dislikes
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_likes
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
happy,
|
||
sad,
|
||
niet_gewaardeerd
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
COALESCE (happy.happy, 0),
|
||
COALESCE (sad.sad, 0),
|
||
COALESCE (niet_gewaardeerd.niet_gewaardeerd, 0)
|
||
FROM alg_locatie l,
|
||
( SELECT COUNT (m.mld_melding_key) sad, l.alg_locatie_key
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_tracking_datum >= SYSDATE - 1
|
||
AND m.mld_melding_satisfaction IN (2, 4)
|
||
GROUP BY l.alg_locatie_key) sad,
|
||
( SELECT COUNT (m.mld_melding_key) happy, l.alg_locatie_key
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_tracking_datum >= SYSDATE - 1
|
||
AND m.mld_melding_satisfaction IN (6, 8, 10)
|
||
GROUP BY l.alg_locatie_key) happy,
|
||
( SELECT COUNT (m.mld_melding_key) niet_gewaardeerd,
|
||
l.alg_locatie_key
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND t.fac_tracking_datum >= SYSDATE - 1
|
||
AND m.mld_melding_satisfaction IS NULL
|
||
GROUP BY l.alg_locatie_key) niet_gewaardeerd
|
||
WHERE l.alg_locatie_key = happy.alg_locatie_key(+)
|
||
AND l.alg_locatie_key = niet_gewaardeerd.alg_locatie_key(+)
|
||
AND l.alg_locatie_key = sad.alg_locatie_key(+);
|
||
|
||
--- 2.5 Vandaag ontvangen meldingen die vandaag ook afgehandeld zijn
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_perc_vandaag
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
totaal,
|
||
aant_afgehandeld,
|
||
aant_open
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
aantal_nieuw.aantal_nieuw,
|
||
COALESCE (aant_afgh.aant_afgh, 0) aant_afgh,
|
||
COALESCE (aantal_nieuw.aantal_nieuw, 0)
|
||
- COALESCE (aant_afgh.aant_afgh, 0) aant_open
|
||
FROM alg_locatie l,
|
||
( SELECT l.alg_locatie_key, COUNT (m.mld_melding_key) aant_afgh
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND m.mld_melding_status = 5
|
||
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
|
||
GROUP BY l.alg_locatie_key) aant_afgh,
|
||
( SELECT l.alg_locatie_key, COUNT (m.mld_melding_key) aantal_nieuw
|
||
FROM mld_melding m,
|
||
alg_locatie l,
|
||
mld_statuses s,
|
||
mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND m.mld_melding_status = s.mld_statuses_key
|
||
AND TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)
|
||
GROUP BY l.alg_locatie_key) aantal_nieuw
|
||
WHERE l.alg_locatie_key = aant_afgh.alg_locatie_key(+)
|
||
AND l.alg_locatie_key = aantal_nieuw.alg_locatie_key(+)
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE));
|
||
|
||
--- 3.1 Aantal nieuwe meldingen per maand per vestiging
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_nieuwe_mld_mnd
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
fclt_sort,
|
||
maand,
|
||
aant_previous,
|
||
aant_current
|
||
)
|
||
AS
|
||
SELECT previous_year.alg_locatie_omschrijving,
|
||
previous_year.mld_alg_locatie_key,
|
||
TO_CHAR (fac.safe_to_number (previous_year.jaar) + 1)
|
||
|| '/'
|
||
|| previous_year.periode,
|
||
previous_year.maand,
|
||
previous_year.aantal_prev,
|
||
current_year.aantal_current
|
||
FROM ( SELECT m.mld_alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
TO_CHAR (m.mld_melding_datum, 'mm')
|
||
|| ' '
|
||
|| TO_CHAR (m.mld_melding_datum, 'Month') periode,
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy') jaar,
|
||
TO_CHAR (m.mld_melding_datum, 'Month') maand,
|
||
COALESCE (COUNT (m.mld_melding_key), 0) aantal_prev
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -21)), 'Month')
|
||
AND TRUNC (m.mld_melding_datum) <
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -9)), 'Month')
|
||
GROUP BY m.mld_alg_locatie_key,
|
||
l.alg_locatie_omschrijving,
|
||
TO_CHAR (m.mld_melding_datum, 'mm')
|
||
|| ' '
|
||
|| TO_CHAR (m.mld_melding_datum, 'Month'),
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy'),
|
||
TO_CHAR (m.mld_melding_datum, 'Month')) previous_year
|
||
LEFT OUTER JOIN ----left outer join want we vergelijken alleen wat al voldoende historie heeft
|
||
( SELECT m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'mm-yyyy') periode,
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy') jaar,
|
||
TO_CHAR (m.mld_melding_datum, 'Month') maand,
|
||
COALESCE (COUNT (m.mld_melding_key), 0) aantal_current
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -9)), 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'mm-yyyy'),
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy'),
|
||
TO_CHAR (m.mld_melding_datum, 'Month')) current_year
|
||
ON previous_year.mld_alg_locatie_key =
|
||
current_year.mld_alg_locatie_key
|
||
AND previous_year.maand = current_year.maand
|
||
ORDER BY previous_year.periode;
|
||
|
||
--- 3.2 Gemiddelde aantal nieuwe meldingen per dag
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_gem_aant_mld_dag
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
dag,
|
||
gem_weekdag,
|
||
gemiddelde
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
gem_dag.dag,
|
||
gem_dag.gem_weekdag,
|
||
gem.gem_dag
|
||
FROM alg_locatie l,
|
||
( SELECT m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'd')
|
||
|| ' '
|
||
|| TO_CHAR (m.mld_melding_datum, 'DAY') dag,
|
||
COUNT (mld_melding_key) / 12 gem_weekdag --- aantallen per dag over 12 weken
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND TRUNC (m.mld_melding_datum) >= TRUNC (SYSDATE - 84) --- 12 weken is 84 dagen, 12x7
|
||
GROUP BY m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'd'),
|
||
TO_CHAR (m.mld_melding_datum, 'DAY')) gem_dag,
|
||
( SELECT m.mld_alg_locatie_key,
|
||
(COUNT (mld_melding_key)) / 84 gem_dag
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND TRUNC (m.mld_melding_datum) >= TRUNC (SYSDATE - 84) --- 12 weken is 84 dagen, 12x7
|
||
GROUP BY m.mld_alg_locatie_key) gem
|
||
WHERE l.alg_locatie_key = gem_dag.mld_alg_locatie_key
|
||
AND l.alg_locatie_key = gem.mld_alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
ORDER BY l.alg_locatie_omschrijving, gem_dag.dag;
|
||
|
||
--- 3.3 Gemiddelde aantal nieuwe meldingen per maand
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_gem_aant_mld_maand
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
maand,
|
||
aantal,
|
||
gem_maand
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
aant_maand.maand,
|
||
aant_maand.aantal,
|
||
gem.gem_maand
|
||
FROM alg_locatie l,
|
||
( SELECT m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (m.mld_melding_datum, 'Month') maand,
|
||
COUNT (mld_melding_key) aantal
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -12)), 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY m.mld_alg_locatie_key,
|
||
TO_CHAR (m.mld_melding_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (m.mld_melding_datum, 'Month')) aant_maand,
|
||
( SELECT m.mld_alg_locatie_key,
|
||
COUNT (mld_melding_key) / 12 gem_maand
|
||
FROM mld_melding m, mld_stdmelding sm
|
||
WHERE ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -12)), 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY m.mld_alg_locatie_key) gem
|
||
WHERE l.alg_locatie_key = aant_maand.mld_alg_locatie_key
|
||
AND l.alg_locatie_key = gem.mld_alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
ORDER BY l.alg_locatie_omschrijving, aant_maand.maand;
|
||
|
||
-- 3.4 Top storingen per vestiging
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_ranking_hoofdonderwerp
|
||
(
|
||
fclt_sort,
|
||
periode,
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
hoofdonderwerp,
|
||
aantal_meldingen
|
||
)
|
||
AS
|
||
SELECT ranking,
|
||
periode,
|
||
locatie,
|
||
alg_locatie_key,
|
||
hoofdonderwerp,
|
||
aantal_mld
|
||
FROM ( SELECT TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm')
|
||
AS periode,
|
||
l.alg_locatie_omschrijving
|
||
AS locatie,
|
||
l.alg_locatie_key,
|
||
vg.ins_discipline_omschrijving
|
||
AS hoofdonderwerp,
|
||
COUNT (m.mld_melding_key)
|
||
AS aantal_mld,
|
||
DENSE_RANK ()
|
||
OVER (
|
||
PARTITION BY TO_CHAR (m.mld_melding_datum,
|
||
'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum,
|
||
'mm'),
|
||
l.alg_locatie_omschrijving
|
||
ORDER BY (COUNT (m.mld_melding_key)) DESC)
|
||
ranking
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
ins_tab_discipline vg,
|
||
alg_locatie l
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
vg.ins_discipline_omschrijving) ranking_vakgroep
|
||
WHERE ranking_vakgroep.ranking <= 5;
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_ranking_subonderwerp
|
||
(
|
||
fclt_sort,
|
||
periode,
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
subonderwerp,
|
||
aantal_meldingen
|
||
)
|
||
AS
|
||
SELECT ranking,
|
||
periode,
|
||
locatie,
|
||
alg_locatie_key,
|
||
hoofdonderwerp || ' - ' || subonderwerp,
|
||
aantal_mld
|
||
FROM ( SELECT TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm')
|
||
AS periode,
|
||
l.alg_locatie_omschrijving
|
||
AS locatie,
|
||
l.alg_locatie_key,
|
||
vg.ins_discipline_omschrijving
|
||
AS hoofdonderwerp,
|
||
sm.mld_stdmelding_omschrijving
|
||
AS subonderwerp,
|
||
COUNT (m.mld_melding_key)
|
||
AS aantal_mld,
|
||
DENSE_RANK ()
|
||
OVER (
|
||
PARTITION BY TO_CHAR (m.mld_melding_datum,
|
||
'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum,
|
||
'mm'),
|
||
l.alg_locatie_omschrijving
|
||
ORDER BY (COUNT (m.mld_melding_key)) DESC)
|
||
ranking
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
alg_locatie l,
|
||
ins_tab_discipline vg
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND sm.mld_ins_discipline_key = vg.ins_discipline_key
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
vg.ins_discipline_omschrijving,
|
||
sm.mld_stdmelding_omschrijving) ranking_stdmelding
|
||
WHERE ranking_stdmelding.ranking <= 5;
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_ranking_object
|
||
(
|
||
fclt_sort,
|
||
periode,
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
subonderwerp,
|
||
aantal_meldingen
|
||
)
|
||
AS
|
||
SELECT ranking,
|
||
periode,
|
||
locatie,
|
||
alg_locatie_key,
|
||
object,
|
||
aantal_mld
|
||
FROM ( SELECT TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm') AS periode,
|
||
l.alg_locatie_omschrijving AS locatie,
|
||
l.alg_locatie_key,
|
||
so.ins_srtdeel_omschrijving
|
||
|| ' '
|
||
|| o.ins_deel_omschrijving object,
|
||
COUNT (m.mld_melding_key) AS aantal_mld,
|
||
DENSE_RANK ()
|
||
OVER (
|
||
PARTITION BY TO_CHAR (m.mld_melding_datum,
|
||
'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum,
|
||
'mm'),
|
||
l.alg_locatie_omschrijving
|
||
ORDER BY COUNT (m.mld_melding_key) DESC) ranking
|
||
FROM mld_melding m,
|
||
mld_stdmelding sm,
|
||
mld_melding_object mo,
|
||
ins_deel o,
|
||
ins_srtdeel so,
|
||
alg_locatie l
|
||
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
|
||
AND mo.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND mo.mld_melding_object_verwijder IS NULL
|
||
AND mo.ins_deel_key = o.ins_deel_key
|
||
AND o.ins_srtdeel_key = so.ins_srtdeel_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND TRUNC (m.mld_melding_datum) >=
|
||
TRUNC (TRUNC (SYSDATE, 'Month') - 1, 'Month')
|
||
AND TRUNC (m.mld_melding_datum) < TRUNC (SYSDATE, 'Month')
|
||
GROUP BY TO_CHAR (m.mld_melding_datum, 'YYYY')
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'mm'),
|
||
l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
sm.mld_stdmelding_omschrijving,
|
||
so.ins_srtdeel_omschrijving
|
||
|| ' '
|
||
|| o.ins_deel_omschrijving) ranking_object
|
||
WHERE ranking_object.ranking <= 5;
|
||
|
||
-- 3.5 Totale aantallen reviews per maand
|
||
|
||
CREATE OR REPLACE VIEW hcas_v_reviews_mnd
|
||
(
|
||
locatie,
|
||
fclt_3d_locatie_key,
|
||
maand,
|
||
happy,
|
||
sad,
|
||
niet_gewaardeerd
|
||
)
|
||
AS
|
||
SELECT l.alg_locatie_omschrijving,
|
||
l.alg_locatie_key,
|
||
niet_gewaardeerd.maand,
|
||
COALESCE (happy.happy, 0),
|
||
COALESCE (sad.sad, 0),
|
||
COALESCE (niet_gewaardeerd.niet_gewaardeerd, 0)
|
||
FROM alg_locatie l,
|
||
( SELECT COUNT (m.mld_melding_key) sad,
|
||
l.alg_locatie_key,
|
||
TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month') maand
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND TRUNC (t.fac_tracking_datum) <
|
||
TRUNC (SYSDATE, 'Month')
|
||
AND TRUNC (t.fac_tracking_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -12)), 'Month')
|
||
AND m.mld_melding_satisfaction IN (2, 4)
|
||
GROUP BY l.alg_locatie_key,
|
||
l.alg_locatie_key,
|
||
( TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month'))) sad,
|
||
( SELECT COUNT (m.mld_melding_key) happy,
|
||
l.alg_locatie_key,
|
||
TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month') maand
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND TRUNC (t.fac_tracking_datum) <
|
||
TRUNC (SYSDATE, 'Month')
|
||
AND TRUNC (t.fac_tracking_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -12)), 'Month')
|
||
AND m.mld_melding_satisfaction IN (6, 8, 10)
|
||
GROUP BY l.alg_locatie_key,
|
||
( TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month'))) happy,
|
||
( SELECT COUNT (m.mld_melding_key) niet_gewaardeerd,
|
||
l.alg_locatie_key,
|
||
TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month') maand
|
||
FROM mld_melding m,
|
||
fac_tracking t,
|
||
alg_locatie l,
|
||
mld_stdmelding sm
|
||
WHERE m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
AND (sm.prs_dienst_key <> 561 OR sm.prs_dienst_key IS NULL)
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND fac_activiteit_key IS NULL
|
||
AND t.fac_srtnotificatie_key = 38
|
||
AND t.fac_tracking_refkey = m.mld_melding_key
|
||
AND TRUNC (t.fac_tracking_datum) <
|
||
TRUNC (SYSDATE, 'Month')
|
||
AND TRUNC (t.fac_tracking_datum) >=
|
||
TRUNC (TRUNC (ADD_MONTHS (SYSDATE, -12)), 'Month')
|
||
AND m.mld_melding_satisfaction IS NULL
|
||
GROUP BY l.alg_locatie_key,
|
||
TO_CHAR (t.fac_tracking_datum, 'yyyy-mm')
|
||
|| ' '
|
||
|| TO_CHAR (t.fac_tracking_datum, 'Month'))
|
||
niet_gewaardeerd
|
||
WHERE l.alg_locatie_key = happy.alg_locatie_key(+)
|
||
AND l.alg_locatie_key = niet_gewaardeerd.alg_locatie_key(+)
|
||
AND l.alg_locatie_key = sad.alg_locatie_key(+)
|
||
AND niet_gewaardeerd.maand = happy.maand(+)
|
||
AND niet_gewaardeerd.maand = sad.maand(+)
|
||
AND l.alg_locatie_verwijder IS NULL
|
||
AND ( l.alg_locatie_vervaldatum IS NULL
|
||
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE));
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_OPDR_SERVICENOW
|
||
( HIDE_F_SORTERING,
|
||
LOCATIE,
|
||
MELDER,
|
||
ONDERWERP,
|
||
OMSCHRIJVING,
|
||
MELDING_NR,
|
||
EXTERN_NR,
|
||
MELDING_DATUM,
|
||
OPDRACHT_NR,
|
||
OPDRACHT_DATUM,
|
||
OPDRACHT_GEREED,
|
||
MELDING_GEREED
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_datum,
|
||
l.alg_locatie_omschrijving,
|
||
p.prs_perslid_naam_full,
|
||
m.mld_melding_onderwerp,
|
||
m.mld_melding_omschrijving,
|
||
m.mld_melding_key,
|
||
m.mld_melding_externnr,
|
||
m.mld_melding_datum,
|
||
TO_CHAR (m.mld_melding_key)
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr,
|
||
o.mld_opdr_datumbegin,
|
||
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
|
||
opdr_afgemeld,
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 5)
|
||
mld_afgemeld
|
||
FROM mld_melding m,
|
||
mld_opdr o,
|
||
prs_bedrijf b,
|
||
alg_locatie l,
|
||
prs_v_perslid_fullnames_all p
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||
AND b.prs_bedrijf_key = 4623 -- KPN
|
||
AND o.mld_typeopdr_key = 1301 -- ServiceNow
|
||
AND o.mld_statusopdr_key = 6 -- afgemeld
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key;
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_CLASSIFICATIE_MLD
|
||
(
|
||
LOCATIE,
|
||
MLD_DATUM,
|
||
JAAR,
|
||
MAAND_NR,
|
||
MAAND_OMSCHR,
|
||
WEEKDGN_KANTOORTIJD,
|
||
WEEKDGN_BUITEN_KANTOORTIJD,
|
||
WEEKEND
|
||
)
|
||
AS
|
||
SELECT m.locatie,
|
||
TRUNC (m.mld_melding_datum),
|
||
TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'YYYY')),
|
||
TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'MM')),
|
||
TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'YYYY'))
|
||
|| ' / '
|
||
|| TO_CHAR (m.mld_melding_datum, 'Month'),
|
||
CASE
|
||
WHEN m.dag_week IN (2,
|
||
3,
|
||
4,
|
||
5,
|
||
6)
|
||
AND m.tijd >= 8
|
||
AND m.tijd < 17
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
AS weekdgn_kantoortijden,
|
||
CASE
|
||
WHEN ( m.dag_week IN (3, 4, 5)
|
||
AND (m.tijd >= 17 OR m.tijd < 8)) -- di, woe, do voor 8 uur en na 17 uur
|
||
OR (m.dag_week = 2 AND m.tijd >= 17) -- ma na 17 uur
|
||
OR (m.dag_week = 6 AND m.tijd < 8) -- vrij voor 8 uur
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
AS weekdgn_buiten_kantoortijden,
|
||
CASE
|
||
WHEN m.dag_week IN (7, 1) -- zat en zon
|
||
OR (m.dag_week = 2 AND m.tijd < 8) -- ma voor 8 uur
|
||
OR (m.dag_week = 6 AND m.tijd >= 17) -- vrij na 17 uur
|
||
THEN
|
||
1
|
||
ELSE
|
||
0
|
||
END
|
||
AS weekend
|
||
FROM ( SELECT l.alg_locatie_omschrijving locatie,
|
||
m.mld_melding_datum,
|
||
TO_NUMBER (TO_CHAR (m.mld_melding_datum, 'HH24')) tijd,
|
||
TO_CHAR (m.mld_melding_datum, 'DAY') dag,
|
||
TO_CHAR (m.mld_melding_datum, 'd') dag_week
|
||
FROM mld_melding m, alg_locatie l, mld_stdmelding sm
|
||
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND ( m.mld_melding_opmerking NOT LIKE
|
||
'Automatisch gegenereerd door activiteit%'
|
||
OR m.mld_melding_opmerking IS NULL)
|
||
AND m.fac_activiteit_key IS NULL
|
||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||
GROUP BY l.alg_locatie_omschrijving,
|
||
m.mld_melding_datum,
|
||
TO_CHAR (m.mld_melding_datum, 'HH24'),
|
||
TO_CHAR (m.mld_melding_datum, 'DAY')) m
|
||
ORDER BY TRUNC (m.mld_melding_datum);
|
||
|
||
CREATE OR REPLACE VIEW HCAS_V_RAP_TIJDSTIP_MELDEN
|
||
(
|
||
VESTIGING,
|
||
JAAR,
|
||
MAANDNR,
|
||
MAANDOMSCHR,
|
||
AANT_WEEKDGN_KANTOORT,
|
||
AANT_WEEKDGN_BUITEN_KANTOORT,
|
||
WEEKEND
|
||
)
|
||
AS
|
||
SELECT locatie,
|
||
jaar,
|
||
maand_nr,
|
||
maand_omschr,
|
||
SUM (weekdgn_kantoortijd),
|
||
SUM (weekdgn_buiten_kantoortijd),
|
||
SUM (weekend)
|
||
FROM HCAS_V_RAP_CLASSIFICATIE_MLD
|
||
GROUP BY locatie,
|
||
jaar,
|
||
maand_nr,
|
||
maand_omschr
|
||
UNION
|
||
SELECT 'Alle vestigingen totaal',
|
||
jaar,
|
||
maand_nr,
|
||
maand_omschr,
|
||
SUM (weekdgn_kantoortijd),
|
||
SUM (weekdgn_buiten_kantoortijd),
|
||
SUM (weekend)
|
||
FROM HCAS_V_RAP_CLASSIFICATIE_MLD
|
||
GROUP BY 'Alle vestigingen totaal',
|
||
jaar,
|
||
maand_nr,
|
||
maand_omschr
|
||
ORDER BY jaar, maand_nr;
|
||
|
||
------ 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 |