#ifdef CTR
/*
 * $Revision$
 * $Id$
 */


CREATE_VIEW(ctr_discipline, 0)
AS
 SELECT * FROM ins_tab_discipline WHERE ins_discipline_module = 'CTR';

DEFINIEER_VIEW_AANWEZIG(ctr_discipline, ins_discipline_verwijder,
    ctr_v_aanwezigdiscipline, 0);

CREATE_VIEW(ctr_v_allsrtinstallatie, 0)
(
    niveau,
    ctr_srtinstallatie_key,
    discipline_oms,
    srtcontrole_oms,
    ins_discipline_key,
    ins_srtcontrole_key
)
AS
    SELECT 'E',
           cd.ins_discipline_key,
           cd.ins_discipline_omschrijving,
           NULL ins_srtcontrole_omschrijving,
           cd.ins_discipline_key,
           NULL ins_srtcontrole_key
      FROM ctr_discipline cd
    UNION
    SELECT 'C',
           isc.ins_srtcontrole_key,
           cd.ins_discipline_omschrijving,
           isc.ins_srtcontrole_omschrijving,
           cd.ins_discipline_key,
           isc.ins_srtcontrole_key
      FROM ctr_discipline cd,
           ins_srtcontrole isc
     WHERE cd.ins_discipline_key = isc.ctr_discipline_key
    UNION
    SELECT 'T' niveau,
           NULL ctr_srtinstallatie_key,
           NULL discipline_oms,
           NULL srtcontrole_oms,
           NULL ins_discipline_key,
           NULL ins_srtcontrole_key
      FROM DUAL;

CREATE_VIEW(ctr_v_monthly_recurring_tasks, 0)
AS
    -- Inspecties die dit jaar en volgend jaar nog uitgevoerd moeten worden.
    SELECT ig.discipline,
           ig.soort,
           ig.groep,
           ig.soortcode,
           ig.omschrijving object,
           ig.opmerking,
           ig.locatie_omschrijving locatie,
           ig.gebouw,
           ig.ruimtenr,
           ig.perslid persoon,
           ig.aantal,
           ig.srtcontrole_omschrijving taak,
           ig.ins_srtcontrole_eenheid eenheid,
           ig.ins_srtcontrole_periode periode,
           ig.taaksoort,
           ig.ins_deelsrtcontrole_datum inspectiedatum,
           ig.controlemode_omschrijving taakafhandeling,
           ig.ins_deelsrtcontrole_opmerking inspectie_opmerking,
           ins_deelsrtcontrole_status inspectie_code,
           ig.deelsrtcontrole_status inspectie_status,
           ins_controlemode_success succesvol,
           TO_CHAR(ig.volgendedatum, 'MM') maand,
           TO_CHAR(ig.volgendedatum, 'YYYY') jaar,
           TO_CHAR(ig.volgendedatum, 'YYYY-MM') jaarmaand,
           ig.ins_deelsrtcontrole_datum_org orgdatum,
           ig.ins_deelsrtcontrole_plandatum plandatum,
           ig.volgendedatum,
           ig.vervaldatum,
           ig.ins_deel_key deel_key,
           ig.ins_srtcontrole_key,
           ig.ins_deelsrtcontrole_key
      FROM (WITH
                comps(ins_deel_key,
                      ins_srtcontrole_key,
                      ins_deelsrtcontrole_datum,
                      ins_srtcontrole_mode,
                      ins_srtcontrole_eenheid,
                      ins_srtcontrole_periode,
                      ins_srtcontrole_bits,
                      volgendedatum,
                      discipline,
                      soort,
                      groep,
                      soortcode,
                      omschrijving,
                      opmerking,
                      locatie_omschrijving,
                      gebouw,
                      ruimtenr,
                      aantal,
                      srtcontrole_omschrijving,
                      taaksoort,
                      ins_deelsrtcontrole_datum_org,
                      controlemode_omschrijving,
                      ins_deelsrtcontrole_opmerking,
                      perslid,
                      ins_deelsrtcontrole_plandatum,
                      ins_deelsrtcontrole_status,
                      ins_controlemode_success,
                      deelsrtcontrole_status,
                      vervaldatum,
                      ins_deelsrtcontrole_key)
                AS
                    (SELECT *
                       FROM (
                             -- 1a) Dit deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)),
                             --     inclusief de allereerste inspectie die nog niet gereed gemeld is.
                             SELECT di.deel_key ins_deel_key,
                                    xcp.ins_srtcontrole_key,
                                    di.ins_deelsrtcontrole_datum,
                                    xcp.ins_srtcontrole_mode,
                                    xcp.ins_srtcontrole_eenheid,
                                    xcp.ins_srtcontrole_periode,
                                    xcp.ins_srtcontrole_bits,
                                    COALESCE(di.ins_deelsrtcontrole_plandatum,
                                             CASE
                                             WHEN di.ins_deelsrtcontrole_status IN (2, 3)
                                              AND di.ins_deelsrtcontrole_datum_org IS NULL
                                             THEN -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
                                                 -- Periodieke taken:
                                                 -- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
                                                 -- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
                                                 -- Er geldt dan het volgende:
                                                 -- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
                                                 -- Voor Vervanging(2) of Certificering(3):
                                                 -- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
                                                 -- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
                                                 -- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
                                                 -- zijn de startdatum en registratiedatum niet meer van belang.
                                                 CASE
                                                 -- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
                                                 --WHEN di.ctr_ismjob = 1
                                                 --THEN
                                                 --    ins_deelsrtcontrole_freezedate
                                                 WHEN xcp.ctr_controle_type = 1
                                                 THEN -- Controle(1).
                                                     CASE
                                                     WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
                                                      AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
                                                     THEN
                                                         xcp.ins_srtcontroledl_xcp_startdat
                                                     ELSE
                                                         xcp.ins_deel_aanmaak
                                                     END
                                                 ELSE -- Vervanging(2), Certificering(3).
                                                     CASE
                                                     WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
                                                      AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
                                                     THEN
                                                         xcp.ins_srtcontroledl_xcp_startdat
                                                     ELSE
                                                         fac.nextcyclusdate(
                                                             -- er is nog geen inspectie geweest, dus de laatste inspectie is null
                                                             COALESCE(
                                                                 NULL,
                                                                 GREATEST(
                                                                     COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
                                                                              xcp.ins_deel_aanmaak),
                                                                     COALESCE(xcp.ins_deel_aanmaak,
                                                                              xcp.ins_srtcontroledl_xcp_startdat))),
                                                             xcp.ins_srtcontrole_mode,
                                                             xcp.ins_srtcontrole_eenheid,
                                                             xcp.ins_srtcontrole_periode,
                                                             xcp.ins_srtcontrole_bits,
                                                             1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
                                                             0) -- Er geldt dat (ctr_ismjob = 0)
                                                     END
                                                 END
                                             WHEN di.ins_deelsrtcontrole_status IN (2, 3)
                                              AND di.ins_deelsrtcontrole_datum_org IS NOT NULL
                                             THEN -- Gestart(2) en niet de allereerste inspectie.
                                                 di.ins_deelsrtcontrole_datum_org
                                             ELSE -- Status is Gereed gemeld(5) of Voltooid(6).
                                                 CASE xcp.ins_srtcontrole_mode
                                                 WHEN 0
                                                 THEN -- Moment mode: ga uit van de originele berekende inspectiedatum.
                                                     di.ins_deelsrtcontrole_datum_org
                                                 ELSE -- Interval mode: ga uit van de werkelijke inspectiedatum.
                                                     di.ins_deelsrtcontrole_datum
                                                 END
                                             END) volgendedatum,
                                    discipline,
                                    soort,
                                    groep,
                                    soortcode,
                                    omschrijving,
                                    opmerking,
                                    locatie_omschrijving,
                                    gebouw,
                                    ruimtenr,
                                    aantal,
                                    srtcontrole_omschrijving,
                                    ctr_discipline_omschrijving taaksoort,
                                    ins_deelsrtcontrole_datum_org,
                                    controlemode_omschrijving,
                                    ins_deelsrtcontrole_opmerking,
                                    perslid,
                                    ins_deelsrtcontrole_plandatum,
                                    di.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 di.ins_deelsrtcontrole_status
                                    WHEN 0
                                    THEN
                                        lcl.L('lcl_ins_controle_pending')
                                    WHEN 2
                                    THEN
                                        lcl.L('lcl_ins_controle_gestart')
                                    WHEN 3
                                    THEN
                                        lcl.L('lcl_ins_controle_ter_uitvoer')
                                    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,
                                    ins_v_defined_inspect_xcp xcp,
                                    ctr_disc_params dp
                              WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
                                AND di.deel_key = xcp.ins_deel_key
                                AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
                                AND dp.ctr_disc_params_ismjob = 0
                                AND xcp.ins_srtcontrole_eenheid > 2
                                AND xcp.ins_scenario_key = 1
                                AND xcp.ins_srtcontrole_periode > 0
                                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) Dit deel bepaald de allereerste inspectie van een taak die nog niet ingepland of gestart is. Er is dus nog geen ins_deelsrtcontrole record van
                             SELECT d.deel_key ins_deel_key,
                                    xcp.ins_srtcontrole_key,
                                    NULL,
                                    xcp.ins_srtcontrole_mode,
                                    xcp.ins_srtcontrole_eenheid,
                                    xcp.ins_srtcontrole_periode,
                                    xcp.ins_srtcontrole_bits,
                                    -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
                                    -- Periodieke taken:
                                    -- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
                                    -- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
                                    -- Er geldt dan het volgende:
                                    -- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
                                    -- Voor Vervanging(2) of Certificering(3):
                                    -- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
                                    -- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
                                    -- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
                                    -- zijn de startdatum en registratiedatum niet meer van belang.
                                    CASE
                                        -- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
                                        --WHEN xcp.ctr_ismjob = 1
                                        --THEN
                                        --    xcp.ins_deelsrtcontrole_freezedate
                                        WHEN xcp.ctr_controle_type = 1
                                        THEN                                                             -- Controle(1).
                                            CASE
                                                WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
                                                 AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
                                                THEN
                                                    xcp.ins_srtcontroledl_xcp_startdat
                                                ELSE
                                                    xcp.ins_deel_aanmaak
                                            END
                                        ELSE                                         -- Vervanging(2), Certificering(3).
                                            CASE
                                                WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
                                                 AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
                                                THEN
                                                    xcp.ins_srtcontroledl_xcp_startdat
                                                ELSE
                                                    fac.nextcyclusdate(
                                                        -- er is nog geen inspectie geweest, dus de laatste inspectie is null
                                                        COALESCE(
                                                            NULL,
                                                            GREATEST(
                                                                COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
                                                                         xcp.ins_deel_aanmaak),
                                                                COALESCE(xcp.ins_deel_aanmaak,
                                                                         xcp.ins_srtcontroledl_xcp_startdat))),
                                                        xcp.ins_srtcontrole_mode,
                                                        xcp.ins_srtcontrole_eenheid,
                                                        xcp.ins_srtcontrole_periode,
                                                        xcp.ins_srtcontrole_bits,
                                                        1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
                                                        0)                              -- Er geldt dat (ctr_ismjob = 0)
                                            END
                                    END
                                        volgendedatum,
                                    d.discipline,
                                    d.soort,
                                    d.groep,
                                    d.soortcode,
                                    d.omschrijving,
                                    d.opmerking,
                                    d.locatie_omschrijving,
                                    d.gebouw,
                                    d.ruimtenr,
                                    d.aantal,
                                    (SELECT isc.ins_srtcontrole_omschrijving
                                       FROM ins_srtcontrole isc
                                      WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) srtcontrole_omschrijving,
                                    (SELECT cd.ins_discipline_omschrijving
                                       FROM ctr_discipline cd,
                                            ins_srtcontrole isc
                                      WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key
                                        AND isc.ctr_discipline_key = cd.ins_discipline_key) taaksoort,
                                    ins_deelsrtcontrole_datum_org,
                                    NULL controlemode_omschrijving,
                                    ins_deelsrtcontrole_opmerking,
                                    NULL perslid,
                                    ins_deelsrtcontrole_plandatum,
                                    -1 ins_deelsrtcontrole_status,
                                    -1 ins_controlemode_success,
                                    lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
                                    xcp.ins_srtcontrole_eind vervaldatum,
                                    NULL ins_deelsrtcontrole_key
                               FROM ins_v_udr_deel d,
                                    ins_deelsrtcontrole idsc,
                                    ins_v_defined_inspect_xcp xcp,
                                    ctr_disc_params dp
                              WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)
                                AND xcp.ins_deel_key = idsc.ins_deel_key(+)
                                AND xcp.ins_scenario_key = idsc.ins_scenario_key(+)
                                AND xcp.ins_deel_key = d.deel_key
                                AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
                                AND dp.ctr_disc_params_ismjob = 0
                                AND xcp.ins_srtcontrole_eenheid > 2
                                AND xcp.ins_scenario_key = 1
                                AND idsc.ins_deel_key IS NULL
                                AND idsc.ins_srtcontrole_key IS NULL
                                AND xcp.ins_srtcontrole_periode > 0
                                AND (idsc.ins_deelsrtcontrole_key IS NULL
                                  OR idsc.ins_deelsrtcontrole_key =
                                     (SELECT MAX(ins_deelsrtcontrole_key)
                                        FROM ins_deelsrtcontrole id2
                                       WHERE id2.ins_deel_key = d.deel_key
                                         AND id2.ins_srtcontrole_key = xcp.ins_srtcontrole_key
                                         AND id2.ins_scenario_key = 1)))
                     UNION ALL
                     -- 1c) Dit deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend jaar.
                     SELECT m.ins_deel_key,
                            m.ins_srtcontrole_key,
                            NULL ins_deelsrtcontrole_datum,
                            m.ins_srtcontrole_mode,
                            m.ins_srtcontrole_eenheid,
                            m.ins_srtcontrole_periode,
                            m.ins_srtcontrole_bits,
                            fac.nextcyclusdate(m.volgendedatum,
                                               m.ins_srtcontrole_mode,
                                               m.ins_srtcontrole_eenheid,
                                               m.ins_srtcontrole_periode,
                                               m.ins_srtcontrole_bits,
                                               1,
                                               0),
                            m.discipline,
                            m.soort,
                            m.groep,
                            m.soortcode,
                            m.omschrijving,
                            m.opmerking,
                            m.locatie_omschrijving,
                            m.gebouw,
                            m.ruimtenr,
                            m.aantal,
                            m.srtcontrole_omschrijving,
                            m.taaksoort,
                            NULL ins_deelsrtcontrole_datum_org,
                            NULL controlemode_omschrijving,
                            NULL ins_deelsrtcontrole_opmerking,
                            NULL perslid,
                            NULL ins_deelsrtcontrole_plandatum,
                            -1 ins_deelsrtcontrole_status,
                            -1 ins_controlemode_success,
                            lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
                            m.vervaldatum,
                            NULL ins_deelsrtcontrole_key
                       FROM comps m
                      WHERE TRUNC(fac.nextcyclusdate(m.volgendedatum,
                                                     m.ins_srtcontrole_mode,
                                                     m.ins_srtcontrole_eenheid,
                                                     m.ins_srtcontrole_periode,
                                                     m.ins_srtcontrole_bits,
                                                     1,
                                                     0), 'YYYY') <=
                            TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY'))
            SELECT *
              FROM comps) ig
     WHERE (ig.vervaldatum IS NULL
         OR ig.vervaldatum > ig.volgendedatum)
       AND ig.volgendedatum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY') AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')
       AND TRUNC(ig.volgendedatum, 'YYYY') < TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') -- 1 januari in het jaar dat 2 jaar verder ligt niet meetellen.
    UNION ALL
    -- 2) Inspecties die vorig jaar en dit jaar zijn uitgevoerd, uitgezonderd de laatste.
    SELECT di.discipline,
           di.soort,
           di.groep,
           di.soortcode,
           di.omschrijving object,
           di.opmerking,
           di.locatie_omschrijving locatie,
           di.gebouw,
           di.ruimtenr,
           di.perslid persoon,
           di.aantal,
           di.srtcontrole_omschrijving taak,
           sc.ins_srtcontrole_eenheid eenheid,
           sc.ins_srtcontrole_periode periode,
           di.ctr_discipline_omschrijving taaksoort,
           di.ins_deelsrtcontrole_datum inspectiedatum,
           di.controlemode_omschrijving taakafhandeling,
           di.ins_deelsrtcontrole_opmerking inspectie_opmerking,
           (SELECT ins_deelsrtcontrole_status
              FROM ins_deelsrtcontrole
             WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
               inspectie_code,
           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 3
           THEN
               lcl.L('lcl_ins_controle_ter_uitvoer')
           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 inspectie_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,
           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_org orgdatum,
           di.ins_deelsrtcontrole_plandatum plandatum,
           di.ins_deelsrtcontrole_datum volgendedatum,
           di.vervaldatum,
           di.deel_key,
           sc.ins_srtcontrole_key,
           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 sc.ctr_discipline_key = dp.ctr_ins_discipline_key
       AND dp.ctr_disc_params_ismjob = 0
       AND sc.ins_srtcontrole_eenheid > 2
       AND di.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
                                                 AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
                                                 AND id2.ins_scenario_key = 1);

CREATE_VIEW(ctr_v_monthly_recurring_tasksy, 0)  // alleen huidige jaar
AS
SELECT *
  FROM ctr_v_monthly_recurring_tasks
 WHERE jaar = TO_CHAR (SYSDATE, 'YYYY');

REGISTERRUN('$Id$')

#endif // CTR
