/* Formatted on 25-2-2019 14:32:10 (QP5 v5.336) */
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database

DEFINE thisfile = 'SGGR.SQL'
DEFINE dbuser   = '^SGGR'
DEFINE custid   = 'SGGR'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;

SELECT adm.scriptspoolfile ('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;

WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

------ payload begin ------

CREATE OR REPLACE PACKAGE sggr
AS
    FUNCTION find_str (p_string IN VARCHAR2, p_search IN VARCHAR2)
        RETURN VARCHAR2;

    FUNCTION find_oud (p_string IN VARCHAR2, p_default IN VARCHAR2)
        RETURN VARCHAR2;

    FUNCTION find_nieuw (p_string IN VARCHAR2, p_default IN VARCHAR2)
        RETURN VARCHAR2;
END;
/


CREATE OR REPLACE PACKAGE BODY sggr
AS
    FUNCTION find_str (p_string IN VARCHAR2, p_search IN VARCHAR2)
        RETURN VARCHAR2
    AS
        v_index   NUMBER;
        v_van     NUMBER;
        v_tot     NUMBER;
    BEGIN
        v_index := INSTR (p_string, p_search);

        IF v_index > 0
        THEN
            v_van := v_index + LENGTH (p_search);
            v_tot := INSTR (p_string, CHR (10), v_index + LENGTH (p_search));

            --  dbms_output.put_line ('van:' || to_char(v_van));
            --  dbms_output.put_line ('tot:' || to_char(v_tot));

            -- als v_tot gelijk is aan 0 dan zitten we op het einde van de string. Geef
            -- dan alles maar terug tot het einde van de string (maar even op 1000 gezet.
            IF v_tot = 0
            THEN
                v_tot := 1000;
            END IF;

            RETURN SUBSTR (p_string, v_van + 1, v_tot - v_van - 1);
        ELSE
            RETURN NULL;
        END IF;
    END;

    FUNCTION find_oud (p_string IN VARCHAR2, p_default IN VARCHAR2)
        RETURN VARCHAR2
    AS
        v_dummy    NUMBER;
        v_result   VARCHAR2 (100);
    BEGIN
        IF p_string IS NOT NULL
        THEN
            v_result :=
                TRIM (SUBSTR (p_string, 1, INSTR (p_string, ' --> ')));

            IF v_result = '(leeg)'
            THEN
                v_result := NULL;
            END IF;

            RETURN v_result;
        ELSE
            RETURN p_default;
        END IF;
    END;

    FUNCTION find_nieuw (p_string IN VARCHAR2, p_default IN VARCHAR2)
        RETURN VARCHAR2
    AS
        v_dummy    NUMBER;
        v_van      NUMBER;
        v_tot      NUMBER;
        v_token    VARCHAR (10);
        v_result   VARCHAR (100);
    BEGIN
        v_token := ' --> ';
        v_van := INSTR (p_string, v_token) + LENGTH (v_token);

        IF v_van > 0
        THEN
            v_result := TRIM (SUBSTR (p_string, v_van));

            IF v_result = '(gewist)' OR v_result = '(Leeg)'
            THEN
                v_result := NULL;
            END IF;

            RETURN v_result;
        ELSE
            RETURN p_default;
        END IF;
    END;
END;
/

/* de te factureren contracten */

CREATE OR REPLACE VIEW sggr_v_rap_cnt_periode_saas
AS
      SELECT b.prs_leverancier_nr
                 ax_nr,
             b.prs_bedrijf_naam
                 bedrijf,
                'C'
             || c.cnt_contract_nummer_intern
             || '.'
             || COALESCE (c.cnt_contract_versie, '0')
                 nr,
             c.cnt_contract_omschrijving
                 omschrijving,
             COALESCE (c.cnt_contract_nummer, c.cnt_contract_omschrijving)
                 referentie,
             c.cnt_contract_looptijd_van
                 ingangsdatum,
             SUM (kc1.cnt_kenmerkcontract_waarde)
                 maandbedrag,
             TO_CHAR (c.cnt_contract_korting)
                 kortingpct,
               3
             * SUM (kc1.cnt_kenmerkcontract_waarde)
             * (1 - COALESCE (c.cnt_contract_korting, 0) / 100)
                 kwartaalbedrag,
             c.cnt_contract_document
                 opmerking,
             kc2.cnt_kenmerkcontract_waarde
                 indexdatum,
             c.cnt_contract_looptijd_tot
                 einddatum,
               c.cnt_contract_termijnkosten
             -   SUM (kc1.cnt_kenmerkcontract_waarde)
               * (1 - COALESCE (c.cnt_contract_korting, 0) / 100)
                 controle
        FROM cnt_v_aanwezigcontract c,
             prs_bedrijf           b,
             cnt_kenmerkcontract   kc1,
             cnt_kenmerk           ck1,
             cnt_srtkenmerk        cks1,
             (SELECT kc2.cnt_contract_key, kc2.cnt_kenmerkcontract_waarde
                FROM cnt_kenmerkcontract kc2, cnt_kenmerk k2
               WHERE     kc2.cnt_kenmerk_key = k2.cnt_kenmerk_key
                     AND k2.cnt_srtkenmerk_key = 301             -- indexdatum
                     AND kc2.cnt_kenmerkcontract_verwijder IS NULL) kc2
       WHERE     c.ins_discipline_key IN (481, 501) -- 481 saas; 482 lic; 501 care
             AND c.cnt_contract_status = 0
             AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
             AND c.cnt_contract_key = kc1.cnt_contract_key
             AND kc1.cnt_kenmerk_key = ck1.cnt_kenmerk_key
             AND ck1.cnt_kenmerk_verwijder IS NULL
             AND ck1.cnt_srtkenmerk_key = cks1.cnt_srtkenmerk_key
             AND (   cks1.cnt_srtkenmerk_omschrijving LIKE '%rijs%'
                  OR cks1.cnt_srtkenmerk_omschrijving LIKE '%Hosting%'
                  OR cks1.cnt_srtkenmerk_omschrijving LIKE '%Korting%')
             AND c.cnt_contract_key = kc2.cnt_contract_key(+)
             AND c.cnt_contract_looptijd_van < SYSDATE + 50
             AND c.cnt_contract_looptijd_tot > SYSDATE + 50
    GROUP BY b.prs_leverancier_nr,
             b.prs_bedrijf_naam,
             c.cnt_contract_looptijd_van,
             c.cnt_contract_omschrijving,
             c.cnt_contract_nummer,
             c.cnt_contract_nummer_intern,
             c.cnt_contract_versie,
             c.cnt_contract_document,
             c.cnt_contract_korting,
             kc2.cnt_kenmerkcontract_waarde,
             c.cnt_contract_termijnkosten,
             c.cnt_contract_looptijd_tot
    ORDER BY 1, 4;


CREATE OR REPLACE VIEW sggr_v_rap_cnt_periode_lic
AS
      SELECT b.prs_leverancier_nr
                 ax_nr,
             b.prs_bedrijf_naam
                 bedrijf,
                'C'
             || c.cnt_contract_nummer_intern
             || '.'
             || COALESCE (c.cnt_contract_versie, '0')
                 nr,
             c.cnt_contract_omschrijving
                 omschrijving,
             COALESCE (c.cnt_contract_nummer, c.cnt_contract_omschrijving)
                 referentie,
             c.cnt_contract_looptijd_van
                 ingangsdatum,
             DECODE (SUM (kc1.cnt_kenmerkcontract_waarde),
                     0, c.cnt_contract_termijnkosten,
                     SUM (kc1.cnt_kenmerkcontract_waarde))
                 jaarbedrag,
             c.cnt_contract_termijnkosten
                 termijnbedrag,
             (SELECT ct.cnt_termijn_omschrijving
                FROM cnt_termijn ct
               WHERE ct.cnt_termijn_key = c.cnt_contract_termijntermijn)
                 termijn,
             c.cnt_contract_document
                 opmerking,
             kc2.cnt_kenmerkcontract_waarde
                 indexdatum,
             c.cnt_contract_looptijd_tot
                 einddatum,
               c.cnt_contract_termijnkosten
             - DECODE (SUM (kc1.cnt_kenmerkcontract_waarde),
                       0, c.cnt_contract_termijnkosten,
                       SUM (kc1.cnt_kenmerkcontract_waarde))
                 controle
        FROM cnt_v_aanwezigcontract c,
             prs_bedrijf           b,
             cnt_kenmerkcontract   kc1,
             cnt_kenmerk           ck1,
             cnt_srtkenmerk        cks1,
             (SELECT kc2.cnt_contract_key, kc2.cnt_kenmerkcontract_waarde
                FROM cnt_kenmerkcontract kc2, cnt_kenmerk k2
               WHERE     kc2.cnt_kenmerk_key = k2.cnt_kenmerk_key
                     AND k2.cnt_srtkenmerk_key = 301             -- indexdatum
                     AND kc2.cnt_kenmerkcontract_verwijder IS NULL) kc2
       WHERE     c.ins_discipline_key IN (482)                      -- 482 lic
             AND c.cnt_contract_status = 0
             AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
             AND c.cnt_contract_key = kc1.cnt_contract_key
             AND kc1.cnt_kenmerk_key = ck1.cnt_kenmerk_key
             AND ck1.cnt_kenmerk_verwijder IS NULL
             AND ck1.cnt_srtkenmerk_key = cks1.cnt_srtkenmerk_key
             AND (   cks1.cnt_srtkenmerk_omschrijving LIKE '%rijs%'
                  OR cks1.cnt_srtkenmerk_omschrijving LIKE '%Hosting%'
                  OR cks1.cnt_srtkenmerk_omschrijving LIKE '%Korting%')
             AND c.cnt_contract_key = kc2.cnt_contract_key(+)
             AND c.cnt_contract_looptijd_van < SYSDATE + 50
             AND c.cnt_contract_looptijd_tot > SYSDATE + 50
    GROUP BY b.prs_leverancier_nr,
             b.prs_bedrijf_naam,
             c.cnt_contract_looptijd_van,
             c.cnt_contract_omschrijving,
             c.cnt_contract_nummer,
             c.cnt_contract_nummer_intern,
             c.cnt_contract_versie,
             c.cnt_contract_document,
             c.cnt_contract_looptijd_tot,
             kc2.cnt_kenmerkcontract_waarde,
             c.cnt_contract_termijnkosten,
             cnt_contract_termijntermijn
    UNION
      SELECT b.prs_leverancier_nr
                 ax_nr,
             b.prs_bedrijf_naam
                 bedrijf,
                'C'
             || c.cnt_contract_nummer_intern
             || '.'
             || COALESCE (c.cnt_contract_versie, '0')
                 nr,
             c.cnt_contract_omschrijving
                 omschrijving,
             COALESCE (c.cnt_contract_nummer, c.cnt_contract_omschrijving)
                 referentie,
             c.cnt_contract_looptijd_van
                 ingangsdatum,
             c.cnt_contract_kosten
                 jaarbedrag,
             c.cnt_contract_termijnkosten
                 termijnbedrag,
             (SELECT ct.cnt_termijn_omschrijving
                FROM cnt_termijn ct
               WHERE ct.cnt_termijn_key = c.cnt_contract_termijntermijn)
                 termijn,
             c.cnt_contract_document
                 opmerking,
             kc2.cnt_kenmerkcontract_waarde
                 indexdatum,
             c.cnt_contract_looptijd_tot
                 einddatum,
             c.cnt_contract_termijnkosten
        FROM cnt_v_aanwezigcontract c,
             prs_bedrijf           b,
             cnt_kenmerk           ck1,
             cnt_srtkenmerk        cks1,
             (SELECT kc2.cnt_contract_key, kc2.cnt_kenmerkcontract_waarde
                FROM cnt_kenmerkcontract kc2, cnt_kenmerk k2
               WHERE     kc2.cnt_kenmerk_key = k2.cnt_kenmerk_key
                     AND k2.cnt_srtkenmerk_key = 301             -- indexdatum
                     AND kc2.cnt_kenmerkcontract_verwijder IS NULL) kc2
       WHERE     c.ins_discipline_key IN (661)                 -- 661 specials
             AND c.cnt_contract_status = 0
             AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
             AND c.cnt_contract_key = kc2.cnt_contract_key(+)
             AND c.cnt_contract_looptijd_van < SYSDATE + 50
             AND c.cnt_contract_looptijd_tot > SYSDATE + 50
    GROUP BY b.prs_leverancier_nr,
             b.prs_bedrijf_naam,
             c.cnt_contract_looptijd_van,
             c.cnt_contract_omschrijving,
             c.cnt_contract_nummer,
             c.cnt_contract_nummer_intern,
             c.cnt_contract_versie,
             c.cnt_contract_document,
             c.cnt_contract_looptijd_tot,
             c.cnt_contract_termijnkosten,
             cnt_contract_kosten,
             cnt_kenmerkcontract_waarde,
             cnt_contract_termijntermijn
    ORDER BY 1, 4;

CREATE OR REPLACE VIEW SGGR_V_RAP_MLD_VERLOF
(
    MLD_MELDING_KEY,
    MELDING_DATUM,
    MELDING_OMSCHRIJVING,
    DATUM_VERLOF,
    DATUM_TM,
    STATUS,
    AANVRAGER_KEY,
    AANVRAGER,
    GOEDKEURDER_KEY,
    GOEDKEURDER,
    UREN,
    FASE,
    INCLUDE
)
AS
    SELECT *
      FROM (SELECT meld.mld_melding_key,
                   meld.mld_melding_datum,
                   meld.mld_melding_omschrijving,
                   meld.datum_verlof,
                   meld.datum_tm,
                   meld.mld_statuses_omschrijving,
                   meld.prs_perslid_key_voor,
                   meld.prs_perslid_naam_full_voor,
                   meld.prs_perslid_key,
                   meld.prs_perslid_naam_full,
                   meld.uren,
                   DECODE (
                       mld_melding_status,
                       0, reden.fac_usrdata_code || ' verlof: Ingediend',
                       2, reden.fac_usrdata_code || ' verlof: Ingediend',
                       3, reden.fac_usrdata_code || ' verlof: Ingediend',
                       4, reden.fac_usrdata_code || ' verlof: Geacepteerd',
                       7, reden.fac_usrdata_code || ' verlof: Geacepteerd',
                       reden.fac_usrdata_code || ' verlof: Verwerkt')
                       fase,
                   DECODE (mld_melding_status,  0, 2,  2, 2,  3, 2,  3)
                       include
              FROM (SELECT m.mld_melding_key,
                           mld_melding_datum,
                           mld_melding_omschrijving,
                           mld_melding_status,
                           datver.kenmerkwaarde
                               datum_verlof,
                           datver.mld_kenmerk_groep,
                           dattm.kenmerkwaarde
                               datum_tm,
                           mld_statuses_omschrijving,
                           m.prs_perslid_key_voor,
                           pf1.prs_perslid_naam_full
                               prs_perslid_naam_full_voor,
                           tra.prs_perslid_key,
                           pf2.prs_perslid_naam_full,
                           uren.kenmerkwaarde
                               uren,
                           DECODE (mld_melding_status,
                                   0, 2,
                                   2, 2,
                                   3, 2,
                                   3)
                               include
                      FROM mld_melding                  m,
                           prs_v_perslid_fullnames_all  pf1,
                           prs_v_perslid_fullnames_all  pf2,
                           mld_statuses                 st,
                           (SELECT fac_tracking_refkey, prs_perslid_key
                              FROM fac_srtnotificatie srt, fac_tracking tr
                             WHERE     tr.fac_srtnotificatie_key =
                                       srt.fac_srtnotificatie_key
                                   AND srt.fac_srtnotificatie_code = 'MLDACP')
                           tra,
                           (SELECT mld_melding_key,
                                   mld_kenmerk_groep,
                                   fac.safe_to_date (
                                       mld_kenmerkmelding_waarde,
                                       'DD-MM-YYYY')    kenmerkwaarde
                              FROM mld_kenmerkmelding km, mld_kenmerk k
                             WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                                   AND k.mld_srtkenmerk_key = 347
                                   AND km.mld_kenmerkmelding_waarde
                                           IS NOT NULL) datver,
                           (SELECT mld_melding_key,
                                   mld_kenmerk_groep,
                                   fac.safe_to_date (
                                       mld_kenmerkmelding_waarde,
                                       'DD-MM-YYYY')    kenmerkwaarde
                              FROM mld_kenmerkmelding km, mld_kenmerk k
                             WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                                   AND k.mld_srtkenmerk_key = 346
                                   AND km.mld_kenmerkmelding_waarde
                                           IS NOT NULL) dattm,
                           (SELECT mld_melding_key,
                                   mld_kenmerk_groep,
                                     fac.safe_to_number (
                                         mld_kenmerkmelding_waarde)
                                   * -1    kenmerkwaarde
                              FROM mld_kenmerkmelding km, mld_kenmerk k
                             WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                                   AND k.mld_srtkenmerk_key = 341
                                   AND km.mld_kenmerkmelding_waarde
                                           IS NOT NULL) uren
                     WHERE     m.mld_stdmelding_key = 241
                           AND m.mld_melding_status IN (0,
                                                        2,
                                                        3,
                                                        4,
                                                        5,
                                                        7,
                                                        9)
                           AND m.prs_perslid_key_voor = pf1.prs_perslid_key
                           AND datver.mld_melding_key = m.mld_melding_key
                           AND dattm.mld_melding_key = m.mld_melding_key
                           AND uren.mld_melding_key = m.mld_melding_key
                           AND datver.mld_kenmerk_groep =
                               dattm.mld_kenmerk_groep
                           AND datver.mld_kenmerk_groep =
                               uren.mld_kenmerk_groep
                           AND m.mld_melding_status = st.mld_statuses_key
                           AND m.mld_melding_key = tra.fac_tracking_refkey(+)
                           AND tra.prs_perslid_key = pf2.prs_perslid_key(+))
                   meld
                   LEFT OUTER JOIN
                   (SELECT mld_melding_key,
                           mld_kenmerk_groep,
                           mld_kenmerkmelding_waarde,
                           w.fac_usrdata_code
                      FROM mld_kenmerkmelding  km,
                           mld_kenmerk         k,
                           fac_usrdata         w
                     WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                           AND W.FAC_USRDATA_KEY = mld_kenmerkmelding_waarde
                           AND k.mld_srtkenmerk_key = 441
                           AND km.mld_kenmerkmelding_waarde IS NOT NULL)
                   reden
                       ON     meld.mld_melding_key = reden.mld_melding_key
                          AND meld.mld_kenmerk_groep =
                              reden.mld_kenmerk_groep
             WHERE COALESCE (reden.fac_usrdata_code, 'Apekool') NOT IN
                       ('Compensatie', 'Bijzonder'))
    UNION ALL
    SELECT NULL,
           ADD_MONTHS (TRUNC (SYSDATE, 'YYYY'), 0),
           NULL,
           ADD_MONTHS (TRUNC (SYSDATE, 'YYYY'), 0),
           ADD_MONTHS (TRUNC (SYSDATE, 'YYYY'), 12) - 1,
           'Beginstand',
           prs_perslid_key,
           prs_perslid_naam_full,
           NULL,
           NULL,
           fac.safe_to_number (pk.prs_kenmerklink_waarde),
           'Beginstand',
           1     include
      FROM prs_kenmerklink pk, prs_v_perslid_fullnames_all pf
     WHERE prs_kenmerk_key = 1060 AND pk.prs_link_key = pf.prs_perslid_key;

CREATE OR REPLACE VIEW PRS_V_SGF_AFDELING
(
    prs_afdeling_key,
    prs_afdeling_naam
)
AS
    SELECT prs_afdeling_key, prs_afdeling_naam
      FROM prs_v_aanwezigafdeling
     WHERE prs_afdeling_parentkey = 27;

CREATE OR REPLACE VIEW PRS_V_BUDGETHOUDER
(
    PRS_PERSLID_KEY,
    PRS_PERSLID_NAAM
)
AS
    SELECT prs_kostenplaats_key, prs_perslid_naam_full
      FROM prs_kostenplaats k, prs_v_perslid_fullnames p
     WHERE     prs_kostenplaats_begin < SYSDATE
           AND (   prs_kostenplaats_eind < SYSDATE
                OR prs_kostenplaats_eind IS NULL)
           AND prs_kostenplaats_verwijder IS NULL
           AND p.prs_perslid_key = k.prs_perslid_key;

-- SGGR#23236 - Inzetten FACILITOR voor administratieve processen SGF!

CREATE OR REPLACE PROCEDURE sggr_select_INDEXWERK (p_applname   IN VARCHAR2,
                                                   p_applrun    IN VARCHAR2)
AS
BEGIN
    NULL;
END;
/

CREATE OR REPLACE VIEW sggr_v_export_INDEXWERK
(
    RESULT,
    result_order
)
AS
    SELECT '', 0
      FROM DUAL
     WHERE 1 = 0;


CREATE OR REPLACE PROCEDURE sggr_export_indexwerk (p_applname   IN VARCHAR2,
                                                   p_applrun    IN VARCHAR2,
                                                   p_filedir    IN VARCHAR2,
                                                   p_filename   IN VARCHAR2)
AS
    CURSOR ccnt (p_splitsindexdatum DATE)
    IS
          SELECT    '['
                 || TO_CHAR (x.cnt_contract_nummer_intern)
                 || '|'
                 || x.cnt_contract_omschrijving
                 || '] '                        aanduiding,
                 x.cnt_contract_key,
                 x.cnt_contract_nummer_intern,
                 x.cnt_contract_versie,
                 x.cnt_contract_looptijd_tot    einddatum,
                 li.index_datum                 laatste_indexdatum,
                 x.cnt_contract_kosten,
                 x.cnt_contract_termijnkosten,
                 x.cnt_prs_bedrijf_key,
                 DECODE (x.cnt_prs_bedrijf_key,
                         1062, 2.0,
                         1901, 2,
                         1061, 2,
                         2901, 2,
                         1073, 2.5,
                         2.1)                   indexpct -- Voor 2019: 2,1%, voor AAFM (1062) 0,75%, voor KIEN (1901), YASK (1061) en VEBE (2901) 2%, UWVA (1073) 2,5%
            FROM (SELECT c.*
                    FROM cnt_v_aanwezigcontract c
                   WHERE     c.ins_discipline_key IN (481, 482, 501) -- SaaS/Onderhoud/Care
                         AND c.cnt_contract_status = 0       -- NIET Gesloten!
                         AND NOT EXISTS -- Beschouw alleen laatste versie van contracten
                                 (SELECT 1
                                    FROM cnt_v_aanwezigcontract
                                   WHERE     cnt_contract_nummer_intern =
                                             c.cnt_contract_nummer_intern
                                         AND cnt_contract_versie >
                                             COALESCE (c.cnt_contract_versie,
                                                       '0'))) x
                 LEFT JOIN
                 (SELECT cnt_contract_key,
                         fac.safe_to_date (cnt_kenmerkcontract_waarde,
                                           'dd-mm-yyyy')    index_datum
                    FROM cnt_kenmerkcontract kc, cnt_kenmerk k
                   WHERE     cnt_kenmerkcontract_verwijder IS NULL
                         AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
                         AND k.cnt_srtkenmerk_key = 301) li -- Laatste index-datum
                     ON x.cnt_contract_key = li.cnt_contract_key
           WHERE     x.cnt_contract_looptijd_tot >
                     ADD_MONTHS (p_splitsindexdatum, -1)
                 AND COALESCE (li.index_datum, SYSDATE) < p_splitsindexdatum
        ORDER BY TO_NUMBER (x.cnt_contract_nummer_intern);



    c_splitsindexdatum   DATE := TO_DATE ('01012019', 'ddmmyyyy');
    v_errorhint          VARCHAR2 (1000);
    v_errormsg           VARCHAR2 (1000);
    oracle_err_num       NUMBER;
    oracle_err_mes       VARCHAR2 (200);
    v_new_contract_key   NUMBER;
    termijnkorting       cnt_kenmerkcontract.cnt_kenmerkcontract_waarde%TYPE;
    oldtermijnkosten     cnt_contract.cnt_contract_termijnkosten%TYPE;
    newtermijnkosten     cnt_contract.cnt_contract_termijnkosten%TYPE;

    PROCEDURE upsert_cntkenmerk (p_contract_key     IN NUMBER,
                                 p_srtkenmerk_key   IN NUMBER,
                                 p_waarde           IN VARCHAR2)
    AS
        v_kenmerk_key              NUMBER;
        v_srtkenmerk_kenmerktype   VARCHAR2 (10);
        v_srtkenmerk_lengte        NUMBER;
        v_waarde                   VARCHAR2 (255);
        v_kenmerkcontract_key      NUMBER;
    BEGIN
        -- Bepaal kenmerk van meegegeven contract en soort; deze moet bestaan!
        SELECT cnt_kenmerk_key,
               cnt_srtkenmerk_kenmerktype,
               COALESCE (cnt_srtkenmerk_lengte, 255)
          INTO v_kenmerk_key, v_srtkenmerk_kenmerktype, v_srtkenmerk_lengte
          FROM cnt_contract c, cnt_kenmerk k, cnt_srtkenmerk sk
         WHERE     c.cnt_contract_key = p_contract_key
               AND c.ins_discipline_key = k.cnt_srtcontract_key
               AND k.cnt_kenmerk_verwijder IS NULL
               AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
               AND sk.cnt_srtkenmerk_verwijder IS NULL
               AND sk.cnt_srtkenmerk_key = p_srtkenmerk_key;

        v_waarde := SUBSTR (p_waarde, 1, v_srtkenmerk_lengte);

        BEGIN
            -- Bepaal bestaan/aanwezigheid huidige kenmerkwaarde?
            SELECT cnt_kenmerkcontract_key
              INTO v_kenmerkcontract_key
              FROM cnt_kenmerkcontract kc
             WHERE     kc.cnt_contract_key = p_contract_key
                   AND kc.cnt_kenmerk_key = v_kenmerk_key
                   AND kc.cnt_kenmerkcontract_verwijder IS NULL;
        EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
                IF p_waarde IS NULL
                THEN
                    RETURN;
                END IF;

                INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                 cnt_kenmerk_key,
                                                 cnt_kenmerkcontract_waarde)
                     VALUES (p_contract_key, v_kenmerk_key, v_waarde);

                RETURN;
        END;

        IF p_waarde IS NULL
        THEN
            --DELETE FROM   cnt_kenmerkcontract
            --      WHERE   cnt_kenmerkcontract_key = v_kenmerkcontract_key;
            UPDATE cnt_kenmerkcontract
               SET cnt_kenmerkcontract_verwijder = SYSDATE
             WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
        ELSE
            UPDATE cnt_kenmerkcontract
               SET cnt_kenmerkcontract_waarde = v_waarde,
                   cnt_kenmerkcontract_wijzig = SYSDATE
             WHERE cnt_kenmerkcontract_key = v_kenmerkcontract_key;
        END IF;
    END;
BEGIN
    -- Splitsen en indexeren FACILITOR-contracten.
    FOR rc IN ccnt (c_splitsindexdatum)
    LOOP
        BEGIN
            v_errorhint := 'Fout bij splitsen contract.';
            -- Splitsen kun je wel achterwege laten als het contract pas na de splitsdatum begint
            -- of voor de splitsdatum eindigt. Dat komt voor en geeft dan nu de warning
            -- "Fout bij bepalen nieuwe versie" in de volgende stap. dat is niet erg dus.
            cnt.splitscontract (rc.cnt_contract_key,
                                c_splitsindexdatum,
                                NULL,
                                NULL);

            COMMIT;

            -- Na splitsen wordt de nieuwe versie geïndexeerd.
            v_errorhint := 'Fout bij bepalen nieuwe versie.';

            BEGIN
                SELECT cnt_contract_key
                  INTO v_new_contract_key
                  FROM cnt_v_aanwezigcontract
                 WHERE     cnt_contract_nummer_intern =
                           rc.cnt_contract_nummer_intern
                       AND cnt_contract_versie >
                           COALESCE (rc.cnt_contract_versie, '0');
            EXCEPTION
                WHEN NO_DATA_FOUND
                THEN
                    -- Er is blijkbaar niet gesplitst (mogelijk contract begint pas na splitsdatum)
                    -- omdat prijspeil volgens laatste index toch oud is, moet die toch geindexdeerd worden
                    IF rc.einddatum > c_splitsindexdatum
                    THEN
                        v_new_contract_key := rc.cnt_contract_key;
                    END IF;
            END;

            v_errorhint := 'Fout bij toevoegen laatste indexdatum.';
            upsert_cntkenmerk (v_new_contract_key,
                               301,                     -- Laatste index-datum
                               TO_CHAR (c_splitsindexdatum, 'ddmmyyyy'));
            COMMIT;

            v_errorhint := 'Fout bij toevoegen laatste indexpercentage.';
            upsert_cntkenmerk (v_new_contract_key, 302, -- Laatste index-percentage
                                                        rc.indexpct);
            COMMIT;

            FOR rkc
                IN (  SELECT kc.cnt_kenmerkcontract_key,
                             kc.cnt_kenmerkcontract_waarde    cur_waarde,
                             ROUND (
                                   fac.safe_to_number (
                                       kc.cnt_kenmerkcontract_waarde)
                                 * ((100 + rc.indexpct) / 100),
                                 2)                           new_waarde
                        FROM cnt_kenmerkcontract kc,
                             cnt_kenmerk        k,
                             cnt_srtkenmerk     sk
                       WHERE     1 = 1
                             AND kc.cnt_contract_key = v_new_contract_key
                             AND kc.cnt_kenmerkcontract_verwijder IS NULL
                             AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
                             AND k.cnt_kenmerk_verwijder IS NULL
                             AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
                             AND sk.cnt_srtkenmerk_verwijder IS NULL
                             AND sk.cnt_srtkenmerk_kenmerktype = 'N'
                             AND (   sk.cnt_srtkenmerk_key = 241    -- Hosting
                                  OR (    sk.cnt_srtkenmerk_key = 221 -- Tarief Consultant
                                      AND rc.cnt_contract_nummer_intern NOT IN
                                              (42, 16)) -- ...behalve voor AAFM/AAIT, UWVA=> handmatig
                                  OR (    sk.cnt_srtkenmerk_key = 222 -- Tarief Specialist
                                      AND rc.cnt_contract_nummer_intern NOT IN
                                              (42, 16)) -- ...behalve voor AAFM/AAIT, UWVA=> handmatig
                                  OR sk.cnt_srtkenmerk_upper LIKE '%PRIJS%')
                    ORDER BY k.cnt_kenmerk_volgnummer)
            LOOP
                v_errorhint := 'Fout bij bijwerken prijsveld.';

                UPDATE cnt_kenmerkcontract
                   SET cnt_kenmerkcontract_waarde =
                           TO_CHAR (rkc.new_waarde, '999999D99')
                 WHERE cnt_kenmerkcontract_key = rkc.cnt_kenmerkcontract_key;
            END LOOP;

            COMMIT;


            -- Aanpassen van de totalen. Let op dat een evt kortingsbedrag (cnt_srtkenmerk_key=85)
            -- niet meegeindexeerd wordt, dus kun je niet zomaar het totaal indexeren

            v_errorhint := 'Fout bij bijwerken termijnbedrag.';

            SELECT cnt_contract_termijnkosten
              INTO oldtermijnkosten
              FROM cnt_contract
             WHERE cnt_contract_key = v_new_contract_key;

            DBMS_OUTPUT.PUT_LINE ('oldtermijn ' || oldtermijnkosten);

            BEGIN
                SELECT COALESCE (
                           fac.safe_to_number (kc.cnt_kenmerkcontract_waarde),
                           0)
                  INTO termijnkorting
                  FROM cnt_kenmerkcontract kc, cnt_kenmerk k
                 WHERE     kc.cnt_kenmerk_key = k.cnt_kenmerk_key
                       AND k.cnt_srtkenmerk_key = 85 -- het kortingsbedrag (is negatief bij korting) per termijn
                       AND kc.cnt_contract_key = v_new_contract_key;
            EXCEPTION
                WHEN NO_DATA_FOUND
                THEN
                    termijnkorting := 0;
            END;

            UPDATE cnt_contract
               SET cnt_contract_termijnkosten =
                       ROUND (
                               (  rc.cnt_contract_termijnkosten
                                - fac.safe_to_number (termijnkorting))
                             * ((100 + rc.indexpct) / 100)
                           + fac.safe_to_number (termijnkorting),
                           2)
             WHERE cnt_contract_key = v_new_contract_key;

            SELECT cnt_contract_termijnkosten
              INTO newtermijnkosten
              FROM cnt_contract
             WHERE cnt_contract_key = v_new_contract_key;

            DBMS_OUTPUT.PUT_LINE (
                'newtermijn ' || TO_CHAR (newtermijnkosten));

            --c.ins_discipline_key IN (481, 482, 501) -- SaaS/Onderhoud/Care = termijn per maand/jaar/maand
            v_errorhint := 'Fout bij bijwerken jaarbedrag.';

            UPDATE cnt_contract
               SET cnt_contract_kosten =
                         DECODE (ins_discipline_key,
                                 481, 12,
                                 501, 12,
                                 482, 1)
                       * cnt_contract_termijnkosten,
                   cnt_contract_termijntermijn =
                       DECODE (ins_discipline_key,
                               481, 3,
                               501, 3,
                               482, 10)                          -- mnd/mnd/jr
             WHERE cnt_contract_key = v_new_contract_key;

            v_errorhint := 'Fout bij bijwerken index-tracking (CNTUPD).';

            fac.trackaction (
                'CNTUPD',
                v_new_contract_key,
                NULL,
                NULL,
                   'Contract geïndexeerd met '
                || TO_CHAR (rc.indexpct, '0.00')
                || '%; termijnbedrag gewijzigd van €'
                || TO_CHAR (oldtermijnkosten)
                || ' naar €'
                || TO_CHAR (newtermijnkosten));
            COMMIT;
        EXCEPTION
            WHEN OTHERS
            THEN
                oracle_err_num := SQLCODE;
                oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
                v_errormsg :=
                       ' ORACLE (error '
                    || oracle_err_num
                    || '/'
                    || oracle_err_mes
                    || ')';
                fac.writelog (p_applname,
                              'W',
                              rc.aanduiding || v_errormsg,
                              v_errorhint);
                COMMIT;
        END;
    END LOOP;
EXCEPTION
    WHEN OTHERS
    THEN
        oracle_err_num := SQLCODE;
        oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
        v_errormsg :=
               'ORACLE (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
        fac.writelog (p_applname,
                      'E',
                      'Proces INDEXWERK afgebroken!',
                      v_errormsg);
        COMMIT;
END;
/

  -- Standaard volgorde van de kolommen in het CSV-formaat)
  -- Variabelelijst
  -- v_alg_locatie_code 1
  -- v_alg_gebouw_code 2
  -- v_alg_verdieping_volgnr 3
  -- v_alg_ruimte_nr 4
  -- v_prs_werkplek_volgnr 5
  -- v_prs_werkplek_omschrijving 6
  -- v_prs_afdeling_naam 7
  -- v_prs_perslid_naam 8
  -- v_prs_perslid_tussenvoegsel 9
  -- v_prs_perslid_voornaam 10
  -- v_prs_perslid_voorletters 11
  -- v_prs_perslid_partner_naam 12
  -- v_prs_perslid_partner_tussenv 13
  -- v_prs_naamgebruik_code 14             0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
  --                                       1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
  --                                       2 personen die de geboortenaam van de partner willen gebruiken
  --                                       3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
  -- v_prs_perslid_geslacht 15             Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
  -- v_prs_perslid_telefoonnr 16
  -- v_prs_perslid_mobiel 17
  -- v_prs_perslid_email 18
  -- v_prs_perslid_dienstverband 19
  -- v_prs_perslid_nr 20
  -- v_prs_srtperslid_omschrijving 21
  -- v_prs_perslid_oslogin 22
  -- v_prs_perslid_wachtwoord 23
  -- v_prs_perslid_titel 24
  -- v_prs_perslid_apikey 25
  -- v_dummy 26
  -- v_prs_kenmerk1 27
  -- v_prs_kenmerk2 28
  -- v_prs_kenmerk3 29
  -- v_prs_kenmerk4 30
  -- v_prs_kenmerk5 31
  -- v_prs_kenmerk6 32
  -- v_prs_kenmerk7 33
  -- v_prs_kenmerk8 34
  -- v_prs_kenmerk9 35
  -- v_prs_kenmerk10 36
  -- v_prs_kenmerk11 37
  -- v_prs_kenmerk12 38
  -- v_prs_kenmerk13 39
  -- v_prs_kenmerk14 40
  -- v_prs_kenmerk15 41
  -- v_prs_kenmerk16 42
  -- v_prs_kenmerk17 43
  -- v_prs_kenmerk18 44
  -- v_prs_kenmerk19 45
  -- v_prs_kenmerk20 46

CREATE OR REPLACE PROCEDURE sggr_import_prs (p_import_key IN NUMBER)
AS
    v_errormsg       VARCHAR2 (1000) := '-';
    v_errorhint      VARCHAR2 (1000) := '-';
    oracle_err_num   NUMBER;
    oracle_err_mes   VARCHAR2 (200);
BEGIN
    v_errorhint := 'Generieke import';

    -- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
    --"Personeelsnummer;Geslacht;Login;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Telefoonnummer;Mobiel;Email;Afdeling;Datumindienst;Datumuitdienst;Functie"
    prs.import_perslid (
        p_import_key,
           '0;0;0;0;0;0;11;4;5;6;'
        || '7;0;0;0;2;8;9;10;0;1;'
        || '14;3;0;0;0;0;12;13;0;0;'
        || '0;0;0;0;0;0;0;0;0;0;'
        || '0;0;0;0;0;0',
        '%Personeelsnummer;Geslacht;Login;Achternaam;Tussenvoegsel;Voorletters;Voornaam;Telefoonnummer;Mobiel;Email;Afdeling;Datumindienst;Datumuitdienst;Functie%');
EXCEPTION
    WHEN OTHERS
    THEN
        oracle_err_num := SQLCODE;
        oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
        v_errormsg :=
               'ORACLE (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ') ';
        fac.imp_writelog (p_import_key,
                          'E',
                          v_errormsg || v_errorhint,
                          'Inleesproces personen afgebroken!');
END sggr_import_prs;
/


CREATE OR REPLACE PROCEDURE sggr_update_prs (p_import_key IN NUMBER)
IS
    -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
    c_max_delta_percentage   NUMBER (10) := 20;                        -- 20%!
    v_count_prs_import       NUMBER (10);    -- #actieve personen  na  import!
    v_count_prs_actual       NUMBER (10);    -- #actieve personen voor import!

    -- Let op! Personen die niet meer in dienst zijn -> niet in fac_imp_perslid!
    -- Dubbele oslogins? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
    CURSOR c_del IS
          SELECT p.prs_perslid_key, p.prs_perslid_oslogin
            FROM prs_v_aanwezigperslid p
           WHERE     (   p.prs_perslid_oslogin IS NULL
                      OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
                 AND p.prs_perslid_oslogin2 IS NULL
                 AND NOT EXISTS
                         (SELECT 1
                            FROM fac_imp_perslid i
                           WHERE UPPER (i.prs_perslid_oslogin) =
                                 UPPER (p.prs_perslid_oslogin))
        ORDER BY 2, 1;
BEGIN
    -- Bepaal oslogin-match tussen Facilitor en RECENT importbestand ofwel het aantal
    -- actieve personen na import.
    -- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
    -- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
    -- worden gerapporteerd (nl. op basis van een oud bestand in FAC_IMP_PERSLID).
    SELECT COUNT (*)
      INTO v_count_prs_import
      FROM prs_v_aanwezigperslid p, fac_imp_perslid i
     WHERE     p.prs_perslid_oslogin IS NOT NULL
           AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin);

    -- Bepaal huidig aantal actieve personen in Facilitor.
    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_import / v_count_prs_actual) * 100) <
        (100 - c_max_delta_percentage))
    THEN
        fac.imp_writelog (
            p_import_key,
            'E',
            'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
               '- max. verschilpercentage = ['
            || TO_CHAR (c_max_delta_percentage)
            || '%]'
            || CHR (13)
            || CHR (10)
            || '- #personen/import = ['
            || TO_CHAR (v_count_prs_import)
            || ']'
            || CHR (13)
            || CHR (10)
            || '- #personen/huidig = ['
            || TO_CHAR (v_count_prs_actual)
            || ']');

        RETURN;
    END IF;

    -- Generieke update.
    prs.update_perslid (p_import_key, 'LOGIN', 'D');

    -- Verwijder personen die niet meer in de import voorkomen.
    FOR rec IN c_del
    LOOP
        prs.delete_perslid (p_import_key, rec.prs_perslid_key);
    END LOOP;

    -- Zolang SSO nog niet is ingeregeld, krijgt elke medewerker -met primaire
    -- login en zonder wachtwoord!- een dummy-wachtwoord!
    BEGIN
        EXECUTE IMMEDIATE 'ALTER TRIGGER prs_t_prs_perslid_b_iu DISABLE';

        BEGIN
            FOR c
                IN (SELECT prs_perslid_key
                      FROM prs_v_aanwezigperslid
                     WHERE     prs_perslid_key > 100
                           AND prs_perslid_oslogin IS NOT NULL
                           AND prs_perslid_salt IS NULL)
            LOOP
                prs.setpassword (c.prs_perslid_key, 'Ququlequ');
            END LOOP;
        END;

        EXECUTE IMMEDIATE 'ALTER TRIGGER prs_t_prs_perslid_b_iu ENABLE';
    END;
END sggr_update_prs;
/

-- View tbv rapportage voor het planbureau in Emmen, nodig voor het verwerken van verlofaanvragen van consultants

CREATE OR REPLACE VIEW sggr_v_rap_verlofplanbureau
(
    melding,
    meldingdatum,
    meldingomschrijving,
    status,
    perslid
)
AS
    SELECT DISTINCT m.mld_melding_key,
                    mld_melding_datum,
                    mld_melding_omschrijving,
                    mld_statuses_omschrijving,
                    pf1.prs_perslid_naam_full
      FROM mld_melding                  m,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pf1,
           mld_statuses                 st,
           (SELECT k.*
              FROM prs_kenmerklink k
             WHERE     K.prs_KENMERK_KEY = 1100
                   AND k.PRS_KENMERKLINK_WAARDE = '1') planbureau
     WHERE     m.mld_stdmelding_key = 241
           AND mld_melding_status IN (0,
                                      2,
                                      3,
                                      4)
           AND m.prs_perslid_key_voor = pf1.prs_perslid_key
           AND m.mld_melding_status = st.mld_statuses_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = planbureau.prs_link_key
           --AND p.prs_srtperslid_key IN (31, 2047, 3815, 3816, 4081)
           AND (m.mld_melding_flag <> 3 OR m.mld_melding_flag IS NULL);


--- Notificatie verlofaanvragen consultants voor het planbureau

CREATE OR REPLACE VIEW SGGR_V_NOTI_PLANBUREAU
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'planbureau@aareon.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_v_perslid_fullnames_all  pn,
           prs_perslid                  p,
           (SELECT k.*
              FROM prs_kenmerklink k
             WHERE     K.prs_KENMERK_KEY = 1100
                   AND k.PRS_KENMERKLINK_WAARDE = '1') planbureau
     WHERE     T.FAC_TRACKING_REFKEY = M.MLD_MELDING_KEY
           AND P.PRS_PERSLID_KEY = PN.PRS_PERSLID_KEY
           AND T.FAC_SRTNOTIFICATIE_KEY = 26         --- nieuwe verlofaanvraag
           AND N.FAC_SRTNOTIFICATIE_CODE = 'CUST01'
           AND M.MLD_STDMELDING_KEY = 241                   -- verlofaanvragen
           AND M.PRS_PERSLID_KEY_VOOR = P.PRS_PERSLID_KEY
           -- AND P.PRS_SRTPERSLID_KEY IN (31, 2047, 3815, 3816, 4081) -- alleen notificeren indien de aanvaag door een (IT) consultant gedaan is
           AND P.PRS_PERSLID_KEY = PLANBUREAU.PRS_LINK_KEY
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_PLANBUREAU')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_PLANBUREAU');

-- overzicht met te accepteren meldingen voor teamleiders/managers

CREATE OR REPLACE VIEW SGGR_V_RAP_ACC
(
    MLD_MELDING_KEY,
    MLD_MELDING_NR,
    MELDING,
    DATUM,
    STATUS,
    AANVRAGER,
    LEIDINGGEVENDE,
    FCLT_3D_USER_KEY
)
AS
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           mg.prs_perslid_naam_friendly      leidinggevende,
           mg.prs_perslid_key                AS fclt_3d_user_key
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_kenmerklink              kl,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm
     WHERE     (   m.mld_stdmelding_key IN (43,
                                            281,
                                            261,
                                            421,
                                            346) -- 43=inkoopverplichtingen, 281=aftrekbare kosten leaseauto's, 261=declaraties, 421=overurensheet, 346=Aanvraag hotelkamer
                OR sm.mld_ins_discipline_key IN (721, 821)) --- 731=vakgroep relatiegeschenken, 821=vakgroep aanvragen met acceptatie
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.prs_perslid_key_voor = kl.prs_link_key
           AND kl.prs_kenmerk_key = 1081
           AND fac.safe_to_number (kl.prs_kenmerklink_waarde) =
               mg.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND m.mld_melding_status IN (2, 3)
    UNION ALL
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           mg.prs_perslid_naam_friendly      leidinggevende,
           184                               AS fclt_3d_user_key
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_kenmerklink              kl,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm
     WHERE     m.mld_stdmelding_key = 201
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.prs_perslid_key_voor = kl.prs_link_key
           AND kl.prs_kenmerk_key = 1081
           AND mg.prs_perslid_key <> 281                        --- Peter Feij
           AND fac.safe_to_number (kl.prs_kenmerklink_waarde) =
               mg.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND m.mld_melding_status IN (2, 3)
    UNION ALL
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           mg.prs_perslid_naam_friendly      leidinggevende,
           161                               AS fclt_3d_user_key --- altijd Marcel Vrieling
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_kenmerklink              kl,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm
     WHERE     m.mld_stdmelding_key IN (321, 522) --- verwerking aanvraag HW/SW
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.prs_perslid_key_voor = kl.prs_link_key
           AND kl.prs_kenmerk_key = 1081
           AND fac.safe_to_number (kl.prs_kenmerklink_waarde) =
               mg.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND m.mld_melding_status IN (2, 3, 4);

CREATE OR REPLACE VIEW sggr_v_ICT_leverancier
(
    BEDRIJF_KEY,
    BEDRIJF_NAAM
)
AS
    SELECT L.PRS_BEDRIJF_KEY, L.PRS_BEDRIJF_NAAM
      FROM prs_bedrijf l
     WHERE     L.PRS_RELATIETYPE_KEY = 10                   -- ICT leverancier
           AND L.PRS_BEDRIJF_LEVERANCIER IS NOT NULL
           AND L.PRS_BEDRIJF_VERWIJDER IS NULL;

CREATE OR REPLACE VIEW SGGR_V_NOTI_ICT
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'Ict@aareon.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST04'
           AND m.mld_stdmelding_key IN (321, 522) -- Aanvraag hardware/software
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_ICT')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_ICT');

CREATE OR REPLACE VIEW SGGR_V_NOTI_DIR
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'jeroen.kuiper@aareon.com;johan.deboer@aareon.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn,
           prs_kenmerklink              kl,
           prs_perslid                  mgr
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST05'
           AND m.mld_stdmelding_key IN (301, 523)  -- Inkoop hardware/software
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND fac.safe_to_number (prs_kenmerklink_waarde) =
               mgr.prs_perslid_key
           AND mgr.prs_perslid_key <> 281                       --- Peter Feij
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
    UNION ALL
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'p.feij@facilitor.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn,
           prs_kenmerklink              kl,
           prs_perslid                  mgr
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST05'
           AND m.mld_stdmelding_key IN (301, 523)  -- Inkoop hardware/software
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND fac.safe_to_number (prs_kenmerklink_waarde) =
               mgr.prs_perslid_key
           AND mgr.prs_perslid_key = 281                        --- Peter Feij
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
    UNION ALL
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (
               lcl.x ('fac_srtnotificatie_oms',
                      n.fac_srtnotificatie_key,
                      n.fac_srtnotificatie_oms),
               '##STDMLD## ##KEY##',
               sm.mld_stdmelding_omschrijving || '/' || m.mld_melding_key),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'p.feij@facilitor.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           mld_stdmelding               sm,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn,
           prs_v_afdeling               a
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'MLD2B3'
           AND m.mld_stdmelding_key IN (361,
                                        161,
                                        101,
                                        122,
                                        162,
                                        201) --- 361=Aanvraag opleiding, 161=Nieuw abo, 101=Nieuwe opdr, 122=Uitbreiding opdr, 162=wijzigingen abo, 201=creditering
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND p.prs_afdeling_key = a.prs_afdeling_key
           AND a.prs_bedrijf_key = 1001                          --- Facilitor
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
    UNION ALL
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (
               lcl.x ('fac_srtnotificatie_oms',
                      n.fac_srtnotificatie_key,
                      n.fac_srtnotificatie_oms),
               '##STDMLD## ##KEY##',
               sm.mld_stdmelding_omschrijving || '/' || m.mld_melding_key),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           'jeroen.kuiper@aareon.com;johan.deboer@aareon.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           mld_stdmelding               sm,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn,
           prs_v_afdeling               a
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'MLD2B3'
           AND m.mld_stdmelding_key IN (361, 386) --- 361=Aanvraag opleiding, 386=Productmanagement Aareon
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND p.prs_afdeling_key = a.prs_afdeling_key
           AND A.PRS_BEDRIJF_KEY = 21                     --- Aareon Nederland
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_DIR');

CREATE OR REPLACE VIEW SGGR_V_RAP_DIR
(
    MLD_MELDING_KEY,
    MLD_MELDING_NR,
    MELDING,
    DATUM,
    STATUS,
    AANVRAGER,
    BEDRIJF,
    LEIDINGGEVENDE
)
AS
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           b.prs_bedrijf_naam,
           mg.prs_perslid_naam_friendly      leidinggevende
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_perslid                  pl,
           prs_v_afdeling               a,
           prs_bedrijf                  b,
           prs_kenmerklink              kl,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm
     WHERE     (   m.mld_stdmelding_key IN (261,
                                            281,
                                            43,
                                            421)
                OR sm.mld_ins_discipline_key IN (721, 821)) --inkoopverplichting, declaratie, aftrekbare kosten lease auto, overurensheet, vakgroep relatiegeschenken en aanvragen met acceptarie
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.prs_perslid_key_voor = kl.prs_link_key
           AND kl.prs_kenmerk_key = 1081
           AND kl.prs_kenmerklink_waarde = mg.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND m.mld_melding_status IN (2, 3)
           AND p.prs_perslid_key = pl.prs_perslid_key
           AND pl.prs_afdeling_key = a.prs_afdeling_key
           AND a.prs_bedrijf_key = b.prs_bedrijf_key
           AND mg.prs_perslid_key IN (121, 281)                    -- directie
    UNION ALL
    SELECT DISTINCT
           m.mld_melding_key,
           m.mld_melding_key                    meldingnr,
           sm.mld_stdmelding_omschrijving,
           TO_DATE (m.mld_melding_datum)        datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                                  status,
           p.prs_perslid_naam_friendly          aanvrager,
           b.prs_bedrijf_naam,
           manager.prs_perslid_naam_friendly    leidinggevende
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_perslid                  pl,
           prs_v_afdeling               a,
           prs_bedrijf                  b,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm,
           (SELECT kl.*, mg.*
              FROM prs_kenmerklink kl, prs_v_perslid_fullnames_all mg
             WHERE     kl.prs_kenmerklink_waarde = mg.prs_perslid_key
                   AND kl.prs_kenmerk_key = 1081) manager
     WHERE     m.mld_stdmelding_key IN (301,
                                        361,
                                        386,
                                        161,
                                        101,
                                        122,
                                        162,
                                        201,
                                        523) -- aanvraag hw/sw, opleidingsformulier, aanvraag productmanagement, nieuw abo, nieuwe opdr, uitbreiding opdr, wijziging abo, crediteringen
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND m.mld_melding_status IN (2, 3)
           AND p.prs_perslid_key = pl.prs_perslid_key
           AND pl.prs_afdeling_key = a.prs_afdeling_key
           AND a.prs_bedrijf_key = b.prs_bedrijf_key
           AND m.prs_perslid_key_voor = manager.prs_link_key(+);

CREATE OR REPLACE VIEW SGGR_V_NOTI_CRM
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           '2elijnKlantenMarkt@aareon.nl'
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 22
           AND n.fac_srtnotificatie_code = 'CUST01'
           AND m.mld_stdmelding_key = 241                   -- verlofaanvragen
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND P.PRS_AFDELING_KEY = 274                        ---CRM en Markt
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_CRM')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) = 'SGGR_V_NOTI_CRM');

-- Notificatie aan managers:
-- Acceptatie van declaratie vereist
-- Acceptatie van inkoopverplichting vereist

CREATE OR REPLACE VIEW SGGR_V_NOTI_MANAGER
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL                      sender,
           NULL                      receiver,
           REPLACE (n.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL                      xkey,
           mgr.prs_perslid_email     xemail,
           NULL                      xmobile
      FROM fac_tracking        t,
           mld_melding         m,
           fac_srtnotificatie  n,
           prs_perslid         p,
           prs_kenmerklink     kl,
           prs_perslid         mgr,
           mld_stdmelding      sm
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST02'
           AND m.mld_stdmelding_key IN (281, 261) -- declaratie, aftrekbare privékosten leaseauto,
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND prs_kenmerklink_waarde = mgr.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
    UNION ALL
    SELECT DISTINCT
           NULL                      sender,
           NULL                      receiver,
           REPLACE (n.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL                      xkey,
           mgr.prs_perslid_email     xemail,
           NULL                      xmobile
      FROM fac_tracking        t,
           mld_melding         m,
           fac_srtnotificatie  n,
           prs_perslid         p,
           prs_kenmerklink     kl,
           prs_perslid         mgr,
           mld_stdmelding      sm
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST03'
           AND (m.mld_stdmelding_key = 43 OR sm.mld_ins_discipline_key = 721) -- inkoopverplichting of vakgroep relatiegeschenken
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND prs_kenmerklink_waarde = mgr.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
    UNION ALL
    SELECT DISTINCT
           NULL                      sender,
           NULL                      receiver,
           REPLACE (n.fac_srtnotificatie_oms, '##KEY##', m.mld_melding_key),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL                      xkey,
           mgr.prs_perslid_email     xemail,
           NULL                      xmobile
      FROM fac_tracking        t,
           mld_melding         m,
           fac_srtnotificatie  n,
           prs_perslid         p,
           prs_kenmerklink     kl,
           prs_perslid         mgr,
           mld_stdmelding      sm
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST07'
           AND m.mld_stdmelding_key = 421                     -- overurensheet
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND prs_kenmerklink_waarde = mgr.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
    UNION ALL
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
              (REPLACE (n.fac_srtnotificatie_oms,
                        '##STDMELDINGOMSCHR##',
                        sm.mld_stdmelding_omschrijving))
           || '/'
           || m.mld_melding_key,
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           mgr.prs_perslid_email
               xemail,
           NULL
               xmobile
      FROM fac_tracking        t,
           mld_melding         m,
           fac_srtnotificatie  n,
           prs_perslid         p,
           prs_kenmerklink     kl,
           prs_perslid         mgr,
           mld_stdmelding      sm
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND t.fac_srtnotificatie_key = 26
           AND n.fac_srtnotificatie_code = 'CUST08'
           AND sm.mld_ins_discipline_key = 821 -- vakgroep aanvragen met acceptatie
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND prs_kenmerklink_waarde = mgr.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_MANAGER');

-- Informeren over verlofaanvragen na afmelden door administratie

CREATE OR REPLACE VIEW SGGR_V_NOTI_VERLOF_MGR
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT
           NULL
               sender,
           NULL
               receiver,
           REPLACE (n.fac_srtnotificatie_oms,
                    '##NAAM##',
                    pn.prs_perslid_naam_friendly),
           fac_srtnotificatie_code,
           n.fac_srtnotificatie_key,
           m.mld_melding_key,
           NULL
               xkey,
           mgr.prs_perslid_email
               xemail,
           NULL
               xmobile
      FROM fac_tracking                 t,
           mld_melding                  m,
           fac_srtnotificatie           n,
           prs_perslid                  p,
           prs_v_perslid_fullnames_all  pn,
           prs_kenmerklink              kl,
           prs_perslid                  mgr
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 22                         ---mldafm
           AND n.fac_srtnotificatie_code = 'CUST01'
           AND m.mld_stdmelding_key = 241                   -- verlofaanvragen
           AND p.prs_perslid_key = pn.prs_perslid_key
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND p.prs_perslid_key = kl.prs_link_key
           AND prs_kenmerk_key = 1081 -- kenmerk waarin de manager staat vermeld
           AND prs_kenmerklink_waarde = mgr.prs_perslid_key
           AND t.fac_tracking_datum >
               (SELECT   fac_notificatie_job_nextrun
                       - fac_notificatie_job_interval / 24
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_VERLOF_MGR')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'SGGR_V_NOTI_VERLOF_MGR');

CREATE OR REPLACE FORCE VIEW SGGR_V_RAPP_VERLOF
(
    MLD_MELDING_KEY,
    MLD_MELDING_NR,
    MELDING,
    DATUM,
    STATUS,
    AANVRAGER,
    LEIDINGGEVENDE,
    FCLT_3D_USER_KEY
)
AS
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           mg.prs_perslid_naam_friendly      leidinggevende,
           mg.prs_perslid_key                AS fclt_3d_user_key
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_kenmerklink              kl,
           prs_v_perslid_fullnames_all  mg,
           mld_stdmelding               sm
     WHERE     m.mld_stdmelding_key = 241
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND m.prs_perslid_key_voor = kl.prs_link_key
           AND kl.prs_kenmerk_key = 1081
           AND kl.prs_kenmerklink_waarde = mg.prs_perslid_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key;

CREATE OR REPLACE FORCE VIEW SGGR_V_RAPP_AANVR_HWSW
(
    MLD_MELDING_KEY,
    MLD_MELDING_NR,
    MELDING,
    DATUM,
    STATUS,
    AANVRAGER,
    KOSTENPLAATS
)
AS
    SELECT m.mld_melding_key,
           m.mld_melding_key                 meldingnr,
           sm.mld_stdmelding_omschrijving    melding,
           TO_DATE (m.mld_melding_datum)     datum,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END                               status,
           p.prs_perslid_naam_friendly       aanvrager,
           K.PRS_KOSTENPLAATS_NR
      FROM mld_melding                  m,
           prs_v_perslid_fullnames_all  p,
           prs_perslid                  l,
           mld_stdmelding               sm,
           prs_afdeling                 a,
           prs_kostenplaats             k
     WHERE     m.mld_stdmelding_key = 321
           AND m.prs_perslid_key_voor = p.prs_perslid_key
           AND P.PRS_PERSLID_KEY = L.PRS_PERSLID_KEY
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND L.PRS_AFDELING_KEY = A.PRS_AFDELING_KEY
           AND A.PRS_KOSTENPLAATS_KEY = K.PRS_KOSTENPLAATS_KEY;


--- overzicht van alle business units en teams:
---266 treasury/267 Handel en Logistiek/268 ICT services/270 Wonen/271 Consultancy/272 Vastgoed/273 Financiën/274 CRM en Markt/275 Appl. beheer

CREATE OR REPLACE VIEW SGGR_V_BUSINESS_UNITS
(
    AFDELING_KEY,
    AFDELING_OMSCHRIJVING
)
AS
    SELECT A.PRS_AFDELING_KEY, A.PRS_AFDELING_OMSCHRIJVING
      FROM PRS_AFDELING A
     WHERE     A.PRS_AFDELING_KEY IN (266,
                                      267,
                                      268,
                                      270,
                                      271,
                                      272,
                                      273,
                                      274,
                                      275)
           AND A.PRS_AFDELING_VERWIJDER IS NULL;

-- overzicht van alle BU managers. Functies:
-- teamleider support en ontwikkeling 3803/Teamleider Consultance 2052/Teamleider Treasury 3806/Unitmanagers 2050/Directeur Wonen 3807

CREATE OR REPLACE VIEW SGGR_V_MANAGERS_BU
(
    PERSLID_KEY,
    PERSLID_VOLNAAM
)
AS
      SELECT P.PRS_PERSLID_KEY, N.PRS_PERSLID_NAAM_FULL
        FROM PRS_V_PERSLID_FULLNAMES N, PRS_PERSLID P
       WHERE     N.PRS_PERSLID_KEY = P.PRS_PERSLID_KEY
             AND P.PRS_SRTPERSLID_KEY IN (3803,
                                          2052,
                                          3806,
                                          2050,
                                          3807)
    ORDER BY N.PRS_PERSLID_NAAM_FULL;

CREATE OR REPLACE PROCEDURE sggr_export_daily_task (p_applname   IN VARCHAR2,
                                                    p_applrun    IN VARCHAR2,
                                                    p_filedir    IN VARCHAR2,
                                                    p_filename   IN VARCHAR2)
AS
    CURSOR c IS
          SELECT *
            FROM fac_tracking t, ins_deel d
           WHERE     fac_tracking_refkey = d.ins_deel_key
                 AND d.ins_srtdeel_key = 481                          -- autos
                 AND fac_srtnotificatie_key IN (96, 97) -- uitgifte (insout) en inname (insinn)
        ORDER BY ins_deel_key, fac_tracking_datum;

    v_bestuurder                  VARCHAR2 (60);
    v_uitgifte                    DATE;
    v_inname                      DATE;
    v_reden                       VARCHAR2 (100);
    v_van                         VARCHAR2 (100);
    v_naar                        VARCHAR2 (100);
    v_km_uitgifte                 NUMBER (10);
    v_km_inname                   NUMBER (10);
    v_fac_tracking_uitgifte_key   NUMBER (10);
    v_fac_tracking_inname_key     NUMBER (10);
    v_dummy                       VARCHAR2 (1000);
    v_search                      VARCHAR2 (1000);
BEGIN
    DELETE sggr_autorit_registratie;

    FOR rec IN c
    LOOP
        BEGIN
            v_search := 'Reden van gebruik:';
            v_dummy := sggr.find_str (rec.fac_tracking_oms, v_search);
            v_reden := sggr.find_nieuw (v_dummy, v_reden);
            v_search := 'Van:';
            v_dummy := sggr.find_str (rec.fac_tracking_oms, v_search);
            v_van := sggr.find_nieuw (v_dummy, v_van);
            v_search := 'Naar:';
            v_dummy := sggr.find_str (rec.fac_tracking_oms, v_search);
            v_naar := sggr.find_nieuw (v_dummy, v_naar);
            v_search := 'Kilometerstand:';
            v_dummy := sggr.find_str (rec.fac_tracking_oms, v_search);

            IF v_dummy IS NULL
            THEN
                v_km_uitgifte := v_km_inname;
            ELSE
                v_km_uitgifte := sggr.find_oud (v_dummy, v_km_uitgifte);
                v_km_inname := sggr.find_nieuw (v_dummy, v_km_inname);
            END IF;

            v_search := 'is uitgegeven aan';
            v_dummy :=
                SUBSTR (sggr.find_str (rec.fac_tracking_oms, v_search),
                        0,
                        60);
            v_bestuurder := v_dummy;


            IF rec.fac_srtnotificatie_key = 96
            THEN
                -- Uitgifte
                v_uitgifte := rec.fac_tracking_datum;

                INSERT INTO sggr_autorit_registratie (
                                ins_deel_key,
                                bestuurder,
                                uitgifte,
                                reden,
                                van,
                                naar,
                                km_uitgifte,
                                fac_tracking_uitgifte_key)
                     VALUES (rec.fac_tracking_refkey,
                             v_bestuurder,
                             v_uitgifte,
                             v_reden,
                             v_van,
                             v_naar,
                             v_km_uitgifte,
                             rec.fac_tracking_key);

                v_fac_tracking_uitgifte_key := rec.fac_tracking_key;
            ELSE
                v_inname := rec.fac_tracking_datum;

                UPDATE sggr_autorit_registratie
                   SET inname = v_inname,
                       reden = COALESCE (v_reden, reden),
                       van = COALESCE (v_van, van),
                       naar = COALESCE (v_naar, naar),
                       km_uitgifte = COALESCE (v_km_uitgifte, km_uitgifte),
                       km_inname = v_km_inname,
                       fac_tracking_inname_key = rec.fac_tracking_key
                 WHERE fac_tracking_uitgifte_key =
                       v_fac_tracking_uitgifte_key;
            END IF;
        END;
    END LOOP;
END;
/

CREATE OR REPLACE VIEW SGGR_V_RAP_AUTO_REGISTRATIE
(
    TIMESTAMP,
    MAAND,
    AUTO,
    BESTUURDER,
    FCLT_D_DATUM,
    UITGIFTE_DATUM,
    UITGIFTE_TIJD,
    INNAME_DATUM,
    INNAME_TIJD,
    REDEN,
    VAN,
    NAAR,
    KM_UITGIFTE,
    KM_INNAME,
    KM_VERSCHIL
)
AS
    SELECT TO_CHAR (uitgifte, 'yyyymmddhh24mi')     timestamp,
           TO_CHAR (uitgifte, 'Month')              maand,
           ins_deel_omschrijving                    auto,
           bestuurder,
           TO_CHAR (uitgifte, 'dd-mm-yyyy')         filter,
           TO_CHAR (uitgifte, 'dd-mm-yyyy')         uitgifte_datum,
           TO_CHAR (uitgifte, 'hh24:mi')            uitgifte_tijd,
           TO_CHAR (inname, 'dd-mm-yyyy')           inname_datum,
           TO_CHAR (inname, 'hh24:mi')              inname_tijd,
           reden,
           van,
           naar,
           km_uitgifte,
           km_inname,
           km_inname - km_uitgifte                  km_verschil
      FROM sggr_autorit_registratie a, ins_deel d
     WHERE a.ins_deel_key = d.ins_deel_key;

-- SGGR#40017 inzicht in hotelreserveringen

CREATE OR REPLACE VIEW SGGR_V_RAPP_HOTELAANVRAGEN
(
    HTML_AANVRAAG_NR,
    HTML_ANNULERING_NR,
    HTML_WIJZIGING_NR,
    STD_MELDING,
    MLD_MELDING_DATUM,
    MLD_MELDING_ONDERWERP,
    MLD_MELDING_OMSCHRIJVING,
    FCLT_3D_USER_KEY,
    PRS_PERSLID_NAAM_FRIENDLY,
    STATUS,
    AANKOMSTDATUM,
    VERTREKDATUM,
    PLAATS,
    HOTEL_VOORKEUR,
    HTML_ANNULERING,
    HTML_WIJZIGING
)
AS
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           aankomstdatum.mld_kenmerkmelding_waarde
               aankomstdatum,
           vertrekdatum.mld_kenmerkmelding_waarde
               vertrekdatum,
           plaats.mld_kenmerkmelding_waarde
               plaats,
           voorkeur.mld_kenmerkmelding_waarde
               hotelvoorkeur,
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '441'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '561'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 346
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1381) aankomstdatum
               ON m.mld_melding_key = aankomstdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1382) vertrekdatum
               ON m.mld_melding_key = vertrekdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 835) plaats
               ON m.mld_melding_key = plaats.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 836) voorkeur
               ON m.mld_melding_key = voorkeur.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 441) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 561) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key
    UNION ALL
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           aankomstdatum.mld_kenmerkmelding_waarde
               aankomstdatum,
           vertrekdatum.mld_kenmerkmelding_waarde
               vertrekdatum,
           plaats.mld_kenmerkmelding_waarde
               plaats,
           '',
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '481'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '741'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 461
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1483) aankomstdatum
               ON m.mld_melding_key = aankomstdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1484) vertrekdatum
               ON m.mld_melding_key = vertrekdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1481) plaats
               ON m.mld_melding_key = plaats.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 481) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 741) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key
    UNION ALL
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           ''
               aankomstdatum,
           ''
               vertrekdatum,
           ''
               plaats,
           '',
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '761'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '781'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 721
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2021) hotel
               ON m.mld_melding_key = hotel.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2022) trein
               ON m.mld_melding_key = trein.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2041) vliegreis
               ON m.mld_melding_key = vliegreis.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 761) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 781) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key;

CREATE OR REPLACE VIEW SGGR_V_RAPP_HOTELAANVRAGEN_ALL
(
    HTML_AANVRAAG_NR,
    HTML_ANNULERING_NR,
    HTML_WIJZIGING_NR,
    STD_MELDING,
    MLD_MELDING_DATUM,
    MLD_MELDING_ONDERWERP,
    MLD_MELDING_OMSCHRIJVING,
    PRS_PERSLID_NAAM_FRIENDLY,
    STATUS,
    AANKOMSTDATUM,
    VERTREKDATUM,
    PLAATS,
    HOTEL_VOORKEUR,
    HTML_ANNULERING,
    HTML_WIJZIGING
)
AS
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           --    m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           aankomstdatum.mld_kenmerkmelding_waarde
               aankomstdatum,
           vertrekdatum.mld_kenmerkmelding_waarde
               vertrekdatum,
           plaats.mld_kenmerkmelding_waarde
               plaats,
           voorkeur.mld_kenmerkmelding_waarde
               hotelvoorkeur,
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fo&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '441'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fo&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '561'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 346
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1381) aankomstdatum
               ON m.mld_melding_key = aankomstdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1382) vertrekdatum
               ON m.mld_melding_key = vertrekdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 835) plaats
               ON m.mld_melding_key = plaats.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 836) voorkeur
               ON m.mld_melding_key = voorkeur.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 441) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 561) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key
    UNION ALL
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           --    m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           aankomstdatum.mld_kenmerkmelding_waarde
               aankomstdatum,
           vertrekdatum.mld_kenmerkmelding_waarde
               vertrekdatum,
           plaats.mld_kenmerkmelding_waarde
               plaats,
           '',
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '481'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'txt=Gegevens reservering: Plaats '
                   || plaats.mld_kenmerkmelding_waarde
                   || ', aankomstdatum: '
                   || aankomstdatum.mld_kenmerkmelding_waarde
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '741'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 461
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1483) aankomstdatum
               ON m.mld_melding_key = aankomstdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1484) vertrekdatum
               ON m.mld_melding_key = vertrekdatum.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 1481) plaats
               ON m.mld_melding_key = plaats.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 481) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 741) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key
    UNION ALL
    SELECT    '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || m.mld_melding_key
           || '")''>'
           || HTF.escape_sc (m.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || annulering.mld_melding_key
           || '")''>'
           || HTF.escape_sc (annulering.mld_melding_key)
           || '</a>',
              '<a class="details" onclick=''FcltMgr.openDetail("'
           || 'appl/mld/mld_melding.asp?urole=fe&'
           || 'mld_key='
           || wijziging.mld_melding_key
           || '")''>'
           || HTF.escape_sc (wijziging.mld_melding_key)
           || '</a>',
           m.mld_stdmelding_omschrijving,
           m.mld_melding_datum,
           m.mld_melding_onderwerp,
           m.mld_melding_omschrijving,
           --    m.prs_perslid_key_voor,
           m.prs_perslid_naam_friendly,
           CASE m.mld_melding_status
               WHEN 1 THEN 'Afgewezen'
               WHEN 2 THEN 'Nieuw'
               WHEN 3 THEN 'Te accepteren'
               WHEN 4 THEN 'In behandeling'
               WHEN 5 THEN 'Afgemeld'
               WHEN 6 THEN 'Historie'
               WHEN 7 THEN 'Uitgegeven'
           END
               status,
           ''
               aankomstdatum,
           ''
               vertrekdatum,
           ''
               plaats,
           '',
           CASE
               WHEN annulering.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '761'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te annuleren')
                   || '</a>'
               WHEN annulering.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_annulering,
           CASE
               WHEN wijziging.mld_melding_key IS NULL
               THEN
                      '<a class="details" onclick=''FcltMgr.openDetail("'
                   || 'appl/mld/mld_melding.asp?urole=fe&'
                   || 'start_key='
                   || m.mld_melding_key
                   || '&'
                   || 'mld_defaultstdmelding='
                   || '781'
                   || '")''>'
                   || HTF.escape_sc ('Klik hier om te wijzigen')
                   || '</a>'
               WHEN wijziging.mld_melding_key IS NOT NULL
               THEN
                   ''
           END
               html_wijziging
      FROM (SELECT mld.*,
                   p.prs_perslid_naam_friendly,
                   s.mld_stdmelding_omschrijving
              FROM mld_melding                  mld,
                   mld_stdmelding               s,
                   prs_v_perslid_fullnames_all  p
             WHERE     mld.mld_stdmelding_key = 721
                   AND mld.mld_stdmelding_key = s.mld_stdmelding_key
                   AND p.prs_perslid_key = mld.prs_perslid_key_voor) m
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2021) hotel
               ON m.mld_melding_key = hotel.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2022) treinreis
               ON m.mld_melding_key = treinreis.mld_melding_key
           LEFT JOIN
           (SELECT k.mld_melding_key, k.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding k, mld_kenmerk n
             WHERE     n.mld_kenmerk_key = k.mld_kenmerk_key
                   AND k.mld_kenmerk_key = 2041) vliegreis
               ON m.mld_melding_key = vliegreis.mld_melding_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 761) annulering
               ON m.mld_melding_key = annulering.mld_melding_start_key
           LEFT JOIN (SELECT a.*
                        FROM mld_melding a
                       WHERE mld_stdmelding_key = 781) wijziging
               ON m.mld_melding_key = wijziging.mld_melding_start_key;



CREATE OR REPLACE VIEW SGGR_V_RAP_METERSTANDEN
(
    METERNR,
    METEROMSCHR,
    MEETDATUM,
    OPMERKING,
    VERBRUIK,
    METERSTAND,
    VORIGE_STAND,
    BEREKEND_VERBRUIK,
    DEF_VERBRUIK
)
AS
      SELECT m.ins_deel_omschrijving,
             m.ins_deel_opmerking,
             c.ins_deelsrtcontrole_datum,
             c.ins_deelsrtcontrole_opmerking,
             verbruik.ins_kmdeelsrtcontr_waarde
                 verbr,
             meterstanden.ins_kmdeelsrtcontr_waarde
                 meterstand,
             (SELECT MAX (msp.ins_kmdeelsrtcontr_waarde)
                FROM ins_v_deel_gegevens mp,
                     ins_deelsrtcontrole cp,
                     ins_kmdeelsrtcontr msp,
                     ins_kenmerk        km
               WHERE     ins_srtgroep_key = 181
                     AND mp.ins_deel_key = cp.ins_deel_key
                     AND msp.ins_deelsrtcontrole_key =
                         cp.ins_deelsrtcontrole_key
                     AND mp.ins_deel_key = m.ins_deel_key
                     AND msp.ins_kenmerk_key = meterstanden.ins_kenmerk_key
                     AND msp.ins_kenmerk_key = km.ins_kenmerk_key
                     AND km.ins_srtkenmerk_key = 201 --- alleen meterstanden meenemen
                     AND cp.ins_deelsrtcontrole_datum <
                         c.ins_deelsrtcontrole_datum)
                 AS prev_meterstand,
             (  meterstanden.ins_kmdeelsrtcontr_waarde
              - (SELECT MAX (msp.ins_kmdeelsrtcontr_waarde)
                   FROM ins_v_deel_gegevens mp,
                        ins_deelsrtcontrole cp,
                        ins_kmdeelsrtcontr msp,
                        ins_kenmerk        km
                  WHERE     ins_srtgroep_key = 181
                        AND mp.ins_deel_key = cp.ins_deel_key
                        AND msp.ins_deelsrtcontrole_key =
                            cp.ins_deelsrtcontrole_key
                        AND mp.ins_deel_key = m.ins_deel_key
                        AND msp.ins_kenmerk_key = meterstanden.ins_kenmerk_key
                        AND msp.ins_kenmerk_key = km.ins_kenmerk_key
                        AND km.ins_srtkenmerk_key = 201 --- alleen meterstanden meenemen
                        AND cp.ins_deelsrtcontrole_datum <
                            c.ins_deelsrtcontrole_datum))
                 AS berekend_verbruik,
             COALESCE (
                 TO_NUMBER (verbruik.ins_kmdeelsrtcontr_waarde),
                 (  meterstanden.ins_kmdeelsrtcontr_waarde
                  - (SELECT MAX (msp.ins_kmdeelsrtcontr_waarde)
                       FROM ins_v_deel_gegevens mp,
                            ins_deelsrtcontrole cp,
                            ins_kmdeelsrtcontr msp,
                            ins_kenmerk        km
                      WHERE     ins_srtgroep_key = 181
                            AND mp.ins_deel_key = cp.ins_deel_key
                            AND msp.ins_deelsrtcontrole_key =
                                cp.ins_deelsrtcontrole_key
                            AND mp.ins_deel_key = m.ins_deel_key
                            AND msp.ins_kenmerk_key =
                                meterstanden.ins_kenmerk_key
                            AND msp.ins_kenmerk_key = km.ins_kenmerk_key
                            AND km.ins_srtkenmerk_key = 201 --- alleen meterstanden meenemen
                            AND cp.ins_deelsrtcontrole_datum <
                                c.ins_deelsrtcontrole_datum)))
                 AS def_verbruik
        FROM ins_v_deel_gegevens m,
             ins_deelsrtcontrole c,
             (SELECT msp.*
                FROM ins_kmdeelsrtcontr msp, ins_kenmerk km
               WHERE     msp.ins_kenmerk_key = km.ins_kenmerk_key
                     AND km.ins_srtkenmerk_key = 201) meterstanden,
             (SELECT msp.*
                FROM ins_kmdeelsrtcontr msp, ins_kenmerk km
               WHERE     msp.ins_kenmerk_key = km.ins_kenmerk_key
                     AND km.ins_srtkenmerk_key = 202) verbruik
       WHERE     ins_srtgroep_key = 181
             AND m.ins_deel_key = c.ins_deel_key
             AND meterstanden.ins_deelsrtcontrole_key(+) =
                 c.ins_deelsrtcontrole_key
             AND verbruik.ins_deelsrtcontrole_key(+) =
                 c.ins_deelsrtcontrole_key
    ORDER BY m.ins_deel_key, c.ins_deelsrtcontrole_datum DESC;

CREATE OR REPLACE FORCE VIEW SGGR_V_LICENCECOUNT
(
    CNT_CONTRACT_KEY,
    CUST,
    LICENCED_KEYUSER,
    LICENCED_FRONTEND
)
AS
      SELECT cnt_contract_key,
             SUBSTR (cnt_contract_omschrijving, 1, 4)
                 CUST,
             (SELECT cnt_kenmerkcontract_waarde
                FROM cnt_kenmerkcontract ck
               WHERE cnt_kenmerk_key = 26 AND cc.cnt_contract_key = ck.cnt_contract_key)
                 licenced_keyuser,
             (SELECT cnt_kenmerkcontract_waarde
                FROM cnt_kenmerkcontract ck
               WHERE cnt_kenmerk_key = 27 AND cc.cnt_contract_key = ck.cnt_contract_key)
                 licenced_frontend
        FROM cnt_contract cc
       WHERE ins_discipline_key = 481 -- FACILITOR SaaS
         AND cnt_contract_looptijd_tot > SYSDATE
    ORDER BY cnt_contract_omschrijving;

COMMIT;

------ 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