FCLT#70361: Management rapportage voor periodieke taken.

svn path=/Database/trunk/; revision=57488
This commit is contained in:
Maykel Geerdink
2022-10-04 13:38:55 +00:00
parent d0ffc98adb
commit a96d0415fb

View File

@@ -12,6 +12,209 @@ AS
DEFINIEER_VIEW_AANWEZIG(ctr_discipline, ins_discipline_verwijder,
ctr_v_aanwezigdiscipline, 0);
CREATE_VIEW(ctr_v_monthly_recurring_tasks, 0)
AS
-- Inspecties die dit jaar nog uitgevoerd moeten worden.
SELECT gedeelte,
ig.ins_deel_key,
ig.ins_srtcontrole_key,
ig.discipline,
ig.soort,
ig.groep,
ig.soortcode,
ig.omschrijving,
ig.opmerking,
ig.locatie_omschrijving,
ig.gebouw,
ig.ruimtenr,
ig.aantal,
ig.srtcontrole_omschrijving,
ig.ins_discipline_omschrijving,
ig.ins_deelsrtcontrole_datum,
ig.controlemode_omschrijving,
ig.ins_deelsrtcontrole_opmerking,
ig.perslid,
ig.ins_deelsrtcontrole_datum_org,
ig.ins_deelsrtcontrole_plandatum,
ig.deelsrtcontrole_status,
TO_CHAR(ig.volgendedatum, 'MM') maand,
ig.volgendedatum,
ig.ins_srtcontrole_eenheid,
ig.ins_srtcontrole_periode,
ig.vervaldatum,
ig.ins_deelsrtcontrole_key
FROM (WITH
comps(gedeelte,
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
ins_srtcontrole_eenheid,
ins_srtcontrole_periode,
volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ins_discipline_omschrijving,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
deelsrtcontrole_status,
vervaldatum,
ins_deelsrtcontrole_key)
AS
(
-- 1a) Eerste deel bepaald de laatste inspectie (geplande, gestarte of afgeronde).
SELECT '1a' gedeelte,
di.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
di.ins_deelsrtcontrole_datum,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
COALESCE(di.ins_deelsrtcontrole_datum, di.ins_deelsrtcontrole_plandatum) volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ctr_discipline_omschrijving ins_discipline_omschrijving,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
DECODE(deelsrtcontrole_status,
'Voltooid', DECODE(controlemode_omschrijving, 'Goed', 'Goed', 'Fout'),
deelsrtcontrole_status) deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND ctr_discipline_key = ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND di.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)
UNION ALL
-- 1b) Tweede deel bepaalt/berekent de toekomstige inspecties van dit jaar
SELECT '1b' gedeelte,
m.ins_deel_key,
m.ins_srtcontrole_key,
NULL ins_deelsrtcontrole_datum,
m.ins_srtcontrole_eenheid,
m.ins_srtcontrole_periode,
ADD_MONTHS(
volgendedatum,
CASE
WHEN m.ins_srtcontrole_eenheid = 3 THEN m.ins_srtcontrole_periode
ELSE m.ins_srtcontrole_periode * 12
END),
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ins_discipline_omschrijving,
NULL ins_deelsrtcontrole_datum_org,
NULL controlemode_omschrijving,
NULL ins_deelsrtcontrole_opmerking,
NULL perslid,
NULL ins_deelsrtcontrole_plandatum,
'Niet gepland' deelsrtcontrole_status,
vervaldatum,
NULL
ins_deelsrtcontrole_key
FROM comps m
WHERE ADD_MONTHS(
volgendedatum,
CASE
WHEN m.ins_srtcontrole_eenheid = 3 THEN m.ins_srtcontrole_periode
ELSE m.ins_srtcontrole_periode * 12
END) <=
TO_DATE('20230101', 'yyyymmdd'))
SELECT *
FROM comps
WHERE volgendedatum BETWEEN TO_DATE('20220101', 'yyyymmdd') AND TO_DATE('20230101', 'yyyymmdd')) ig
WHERE vervaldatum IS NULL
OR vervaldatum > SYSDATE --TO_DATE('20220101', 'yyyymmdd') --SYSDATE
UNION ALL
-- 2) Inspecties die dit jaar zijn uitgevoerd, uitgezonderd de laatste
SELECT '2' gedeelte,
di.deel_key ins_deel_key,
sc.ins_srtcontrole_key,
di.discipline,
di.soort,
di.groep,
di.soortcode,
di.omschrijving,
di.opmerking,
di.locatie_omschrijving,
di.gebouw,
di.ruimtenr,
di.aantal,
di.srtcontrole_omschrijving,
di.ctr_discipline_omschrijving,
di.ins_deelsrtcontrole_datum,
di.controlemode_omschrijving,
di.ins_deelsrtcontrole_opmerking,
di.perslid,
di.ins_deelsrtcontrole_datum_org,
di.ins_deelsrtcontrole_plandatum,
DECODE(di.deelsrtcontrole_status,
'Voltooid', DECODE(di.controlemode_omschrijving, 'Goed', 'Goed', 'Fout'),
di.deelsrtcontrole_status) deelsrtcontrole_status,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'MM') maand,
di.ins_deelsrtcontrole_datum volgendedatum,
sc.ins_srtcontrole_eenheid,
sc.ins_srtcontrole_periode,
di.vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_srtcontrole sc,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND ctr_discipline_key = ctr_ins_discipline_key
AND ctr_disc_params_ismjob = 0
AND ins_srtcontrole_eenheid > 2
AND ins_deelsrtcontrole_datum BETWEEN TO_DATE('20220101', 'yyyymmdd') AND TO_DATE('20230101', 'yyyymmdd')
AND di.ins_deelsrtcontrole_key NOT IN (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)
ORDER BY
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
maand;
REGISTERRUN('$Id$')
#endif // CTR