FCLT#70361: Management rapportage voor periodieke taken.

svn path=/Database/trunk/; revision=57604
This commit is contained in:
Maykel Geerdink
2022-10-12 13:07:07 +00:00
parent 8a57cc0f19
commit 638eef3caa

View File

@@ -14,7 +14,7 @@ DEFINIEER_VIEW_AANWEZIG(ctr_discipline, ins_discipline_verwijder,
CREATE_VIEW(ctr_v_monthly_recurring_tasks, 0)
AS
-- Inspecties die dit jaar nog uitgevoerd moeten worden.
-- Inspecties die dit jaar en volgend jaar nog uitgevoerd moeten worden.
SELECT gedeelte,
ig.ins_deel_key,
ig.ins_srtcontrole_key,
@@ -36,13 +36,20 @@ AS
ig.perslid,
ig.ins_deelsrtcontrole_datum_org,
ig.ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_controlemode_success,
ig.deelsrtcontrole_status,
TO_CHAR(ig.volgendedatum, 'MM') maand,
TO_CHAR(ig.volgendedatum, 'YYYY') jaar,
TO_CHAR(ig.volgendedatum, 'YYYY-MM') jaarmaand,
ig.volgendedatum,
ig.ins_srtcontrole_eenheid,
ig.ins_srtcontrole_periode,
ig.vervaldatum,
ig.ins_deelsrtcontrole_key
ig.ins_deelsrtcontrole_key,
TO_CHAR(ADD_MONTHS(SYSDATE, -12), 'YYYY') lastyear,
TO_CHAR(SYSDATE, 'YYYY') thisyear,
TO_CHAR(ADD_MONTHS(SYSDATE, 12), 'YYYY') nextyear
FROM (WITH
comps(gedeelte,
ins_deel_key,
@@ -68,19 +75,22 @@ AS
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_controlemode_success,
deelsrtcontrole_status,
vervaldatum,
ins_deelsrtcontrole_key)
AS
(
-- 1a) Eerste deel bepaald de laatste inspectie (geplande, gestarte of afgeronde).
(-- 1a) Eerste deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)).
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,
COALESCE(di.ins_deelsrtcontrole_datum,
di.ins_deelsrtcontrole_plandatum,
di.ins_deelsrtcontrole_datum_org) volgendedatum,
discipline,
soort,
groep,
@@ -98,9 +108,44 @@ AS
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
DECODE(deelsrtcontrole_status,
'Voltooid', DECODE(controlemode_omschrijving, 'Goed', 'Goed', 'Fout'),
deelsrtcontrole_status) deelsrtcontrole_status,
(SELECT ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key) ins_deelsrtcontrole_status,
COALESCE((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)), -1) ins_controlemode_success,
CASE (SELECT ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
WHEN 0
THEN lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN lcl.L('lcl_ins_controle_gestart')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1)
THEN lcl.L('lcl_ins_controlemode_approved')
ELSE lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1)
THEN lcl.L('lcl_ins_controlemode_approved')
ELSE lcl.L('lcl_ins_controlemode_deprecated')
END
END deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
@@ -117,19 +162,18 @@ AS
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
-- 1b) Tweede deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend 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),
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,
@@ -147,26 +191,24 @@ AS
NULL ins_deelsrtcontrole_opmerking,
NULL perslid,
NULL ins_deelsrtcontrole_plandatum,
'Niet gepland' deelsrtcontrole_status,
-1 ins_deelsrtcontrole_status,
-1 ins_controlemode_success,
lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
vervaldatum,
NULL
ins_deelsrtcontrole_key
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) <=
TRUNC(add_months(SYSDATE, 12), 'YYYY'))
WHERE ADD_MONTHS(volgendedatum, CASE
WHEN m.ins_srtcontrole_eenheid = 3
THEN m.ins_srtcontrole_periode
ELSE m.ins_srtcontrole_periode * 12
END) <= TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY'))
SELECT *
FROM comps
WHERE volgendedatum BETWEEN TRUNC(SYSDATE, 'YYYY')
AND TRUNC(add_months(SYSDATE, 12), 'YYYY')) ig
WHERE vervaldatum IS NULL
OR vervaldatum > SYSDATE
WHERE volgendedatum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY')
AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')) ig
WHERE (vervaldatum IS NULL OR vervaldatum > volgendedatum)
UNION ALL
-- 2) Inspecties die dit jaar zijn uitgevoerd, uitgezonderd de laatste
-- 2) Inspecties die vorig jaar en dit jaar zijn uitgevoerd, uitgezonderd de laatste.
SELECT '2' gedeelte,
di.deel_key ins_deel_key,
sc.ins_srtcontrole_key,
@@ -188,15 +230,56 @@ AS
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,
(SELECT ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
ins_deelsrtcontrole_status,
COALESCE((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)), -1) ins_controlemode_success,
CASE (SELECT di2.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
WHEN 0
THEN lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN lcl.L('lcl_ins_controle_gestart')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1)
THEN lcl.L('lcl_ins_controlemode_approved')
ELSE lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) = 1)
THEN lcl.L('lcl_ins_controlemode_approved')
ELSE lcl.L('lcl_ins_controlemode_deprecated')
END
END deelsrtcontrole_status,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'MM') maand,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY') jaar,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY-MM') jaarmaand,
di.ins_deelsrtcontrole_datum volgendedatum,
sc.ins_srtcontrole_eenheid,
sc.ins_srtcontrole_periode,
di.vervaldatum,
di.ins_deelsrtcontrole_key
di.ins_deelsrtcontrole_key,
TO_CHAR(ADD_MONTHS(SYSDATE, -12), 'YYYY') lastyear,
TO_CHAR(SYSDATE, 'YYYY') thisyear,
TO_CHAR(ADD_MONTHS(SYSDATE, 12), 'YYYY') nextyear
FROM ins_v_udr_deelinspect di,
ins_srtcontrole sc,
ctr_disc_params dp
@@ -204,8 +287,8 @@ AS
AND ctr_discipline_key = ctr_ins_discipline_key
AND ctr_disc_params_ismjob = 0
AND ins_srtcontrole_eenheid > 2
AND ins_deelsrtcontrole_datum BETWEEN TRUNC(SYSDATE, 'YYYY')
AND TRUNC(add_months(SYSDATE, 12), 'YYYY')
AND ins_deelsrtcontrole_datum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY')
AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')
AND di.ins_deelsrtcontrole_key NOT IN (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
@@ -215,6 +298,7 @@ AS
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
jaar,
maand;
REGISTERRUN('$Id$')