--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)

DEFINE thisfile = 'AKZO.SQL'
DEFINE dbuser   = '^AKZO'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;

SELECT adm.getscriptspoolfile ('&thisfile') AS fcltlogfile FROM DUAL;

SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;

SELECT adm.checkscriptcust ('&dbuser') AS fcltcusttxt FROM DUAL;

WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF

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

CREATE OR REPLACE PACKAGE AKZO
AS
    PROCEDURE upsert_inskenmerk (p_deel_key         IN NUMBER,
                                 p_srtkenmerk_key   IN NUMBER,
                                 p_waarde           IN VARCHAR2);

    PROCEDURE mld_after_insert (p_melding_key IN NUMBER);

    PROCEDURE prs_mandaten;

    PROCEDURE prs_autorisaties;
END;
/

CREATE OR REPLACE PACKAGE BODY AKZO
AS
    PROCEDURE upsert_inskenmerk (p_deel_key         IN NUMBER,
                                 p_srtkenmerk_key   IN NUMBER,
                                 p_waarde           IN VARCHAR2)
    AS
        v_kenmerk_key       NUMBER;
        v_srtkenmerk_type   VARCHAR2 (1);
        v_waarde            VARCHAR2 (255);
        v_objectnaam        VARCHAR2 (30);
        v_kolomnaam         VARCHAR2 (30);
        v_kolomtxt          VARCHAR2 (30);
        v_errormsg          VARCHAR2 (1024);
        v_aanduiding        VARCHAR (200);
        sql_stmt            VARCHAR2 (1000);
        ccount              NUMBER;
        oracle_err_num      NUMBER;
        oracle_err_mes      VARCHAR2 (200);

        v_kenmerkdeel_key   NUMBER;
    BEGIN
        IF p_srtkenmerk_key IS NOT NULL AND p_waarde IS NOT NULL
        THEN
            v_errormsg :=
                'Fout bepalen kenmerk van soort [' || p_srtkenmerk_key || ']';

            SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
              INTO v_kenmerk_key, v_srtkenmerk_type
              FROM ins_deel                  d,
                   ins_srtdeel               sd,
                   ins_srtgroep              sg,
                   ins_v_aanwezigkenmerk     k,
                   ins_v_aanwezigsrtkenmerk  sk
             WHERE     d.ins_deel_key = p_deel_key
                   AND d.ins_srtdeel_key = sd.ins_srtdeel_key
                   AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
                   AND k.ins_srtkenmerk_key = p_srtkenmerk_key
                   AND (   (    k.ins_srtinstallatie_key = sd.ins_srtdeel_key
                            AND k.ins_kenmerk_niveau = 'S')
                        OR (    k.ins_srtinstallatie_key =
                                sg.ins_srtgroep_key
                            AND k.ins_kenmerk_niveau = 'G')
                        OR (    k.ins_srtinstallatie_key =
                                sg.ins_discipline_key
                            AND k.ins_kenmerk_niveau = 'D'))
                   AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;

            IF v_srtkenmerk_type IN ('R', 'S')
            THEN
                v_errormsg := 'Fout bepalen eigen tabel';

                SELECT COUNT (*)
                  INTO ccount
                  FROM ins_srtkenmerk sk, fac_kenmerkdomein d
                 WHERE     sk.ins_srtkenmerk_key = p_srtkenmerk_key
                       AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
                       AND d.fac_usrtab_key IS NOT NULL;

                v_errormsg :=
                    'Fout bepalen nieuwe waarde [' || p_waarde || ']';

                IF ccount = 1
                THEN                                            -- Eigen tabel
                    SELECT TO_CHAR (ud.fac_usrdata_key)
                      INTO v_waarde
                      FROM ins_srtkenmerk         sk,
                           fac_kenmerkdomein      d,
                           fac_v_aanwezigusrdata  ud
                     WHERE     sk.ins_srtkenmerk_key = p_srtkenmerk_key
                           AND sk.fac_kenmerkdomein_key =
                               d.fac_kenmerkdomein_key
                           AND d.fac_usrtab_key = ud.fac_usrtab_key
                           AND UPPER (TRIM (ud.fac_usrdata_omschr)) =
                               UPPER (p_waarde);
                ELSE     -- FACILITOR view/tabel waarbij we uitgaan van de key
                    v_waarde := p_waarde;
                END IF;
            ELSE                               -- C(haracter)/D(ate)/N(umeric)
                v_waarde := p_waarde;
            END IF;

            v_errormsg := 'Fout bepalen huidige waarde';

            SELECT COUNT (*), MAX (ins_kenmerkdeel_key)
              INTO ccount, v_kenmerkdeel_key
              FROM ins_v_aanwezigkenmerkdeel
             WHERE     ins_deel_key = p_deel_key
                   AND ins_kenmerk_key = v_kenmerk_key;

            IF ccount = 0
            THEN
                v_errormsg := 'Fout toevoegen waarde [' || v_waarde || ']';

                INSERT INTO ins_kenmerkdeel (ins_deel_key,
                                             ins_kenmerk_key,
                                             ins_kenmerkdeel_waarde)
                     VALUES (p_deel_key, v_kenmerk_key, v_waarde);
            ELSE
                v_errormsg := 'Fout bijwerken waarde [' || v_waarde || ']';

                UPDATE ins_kenmerkdeel
                   SET ins_kenmerkdeel_waarde = v_waarde
                 WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
            END IF;
        END IF;
    EXCEPTION
        WHEN OTHERS
        THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                   v_errormsg
                || ' ORACLE (error '
                || oracle_err_num
                || '/'
                || oracle_err_mes
                || ')';
            fac.imp_writelog ('p_deel_key',
                              'W',
                              v_aanduiding || v_errormsg,
                              'upsert_inskenmerk');
    END;

    PROCEDURE mld_after_insert (p_melding_key IN NUMBER)
    AS
        v_errormsg                VARCHAR2 (1024);
        v_stdmelding_key          NUMBER (10);
        v_discipline_key          NUMBER (10);
        v_srtgroep_key            NUMBER (10);
        v_srtdeel_key             NUMBER (10);
        v_srtdeel_code            VARCHAR2 (50);
        v_perslid_naam            VARCHAR (200);
        v_perslid_voornaam        VARCHAR (200);
        v_perslid_tussenvoegsel   VARCHAR (15);
        v_perslid_geslacht        NUMBER (10);
        v_perslid_telefoonnr      VARCHAR (15);
        v_perslid_email           VARCHAR (200);
        v_startdatum              DATE;
        v_vervaldatum             DATE;
        v_vervaldatum_oud         DATE;
        v_pas_voor                NUMBER (10);
        v_deel_key                NUMBER (10);
        v_deel_oms                VARCHAR2 (60);
        v_aanduiding              VARCHAR (200);
        v_bedrijf                 VARCHAR2 (60);
        oracle_err_num            NUMBER;
        oracle_err_mes            VARCHAR2 (200);

        CURSOR c_melding IS
            SELECT m.mld_melding_key,
                   m.mld_stdmelding_key,
                   m.prs_perslid_key_voor
              FROM mld_melding m
             WHERE m.mld_melding_key = p_melding_key;
    BEGIN
        v_aanduiding := '';

        FOR rec IN c_melding
        LOOP
            BEGIN
                v_stdmelding_key := rec.mld_stdmelding_key;

                IF v_stdmelding_key = 41 -- aanvragen nieuwe badge, die moet aangemaakt worden
                THEN
                    --- Welke badge wordt aangevraagd? op basis van een keuzelijst die alle objectsoorten toont
                    v_errormsg := 'Fout bepalen INS-objectsoort';

                    SELECT km.mld_kenmerkmelding_waarde,
                           sd.ins_srtdeel_code_upper
                      INTO v_srtdeel_key, v_srtdeel_code
                      FROM mld_kenmerkmelding km, ins_srtdeel sd
                     WHERE     km.mld_kenmerk_key = 62
                           AND km.mld_kenmerkmelding_waarde =
                               sd.ins_srtdeel_key
                           AND km.mld_melding_key = p_melding_key;

                    v_errormsg := 'Fout bepalen ingangsdatum badge';

                    --- ingangsdatum badge bepalen, kenmerk in de melding
                    SELECT fac.safe_to_date (km.mld_kenmerkmelding_waarde,
                                             'dd-mm-yyyy')
                      INTO v_startdatum
                      FROM mld_kenmerkmelding km
                     WHERE     km.mld_kenmerk_key = 81
                           AND km.mld_melding_key = p_melding_key;

                    v_errormsg := 'Fout bepalen einddatum t-badge';

                    --- als het om een tijdelijke badge gaat, dat moet direct de einddatum op vandaag+ 1 jaar gezet worden
                    --- Passen die beginnen met AN zijn voor intern en dus onbeperkt geldig
                    SELECT (CASE
                                WHEN ins_srtdeel_code_upper NOT LIKE 'AN%'
                                THEN
                                    ADD_MONTHS (TRUNC (v_startdatum), 12)
                                ELSE
                                    NULL
                            END)    eind_badge
                      INTO v_vervaldatum
                      FROM ins_srtdeel sd
                     WHERE sd.ins_srtdeel_key = v_srtdeel_key;

                    v_errormsg := 'Fout bepalen INS-discipline';

                    SELECT d.ins_discipline_key
                      INTO v_discipline_key
                      FROM ins_srtdeel         sd,
                           ins_srtgroep        sg,
                           ins_tab_discipline  d
                     WHERE     sd.ins_srtdeel_key = v_srtdeel_key
                           AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
                           AND d.ins_discipline_key = sg.ins_discipline_key
                           AND d.ins_discipline_module = 'INS';

                    v_errormsg := 'Fout bepalen INS-groepsoort';

                    SELECT sg.ins_srtgroep_key
                      INTO v_srtgroep_key
                      FROM ins_srtdeel sd, ins_srtgroep sg
                     WHERE     sd.ins_srtdeel_key = v_srtdeel_key
                           AND sg.ins_srtgroep_key = sd.ins_srtgroep_key;

                    v_errormsg := 'Fout toevoegen INS-object';

                    SELECT   MAX (fac.safe_to_number (ins_deel_omschrijving))
                           + 1
                      INTO v_deel_oms
                      FROM ins_deel d
                     WHERE     ins_deel_verwijder IS NULL
                           AND ins_deel_module = 'INS';


                    v_errormsg := 'Fout aanmaken externe medewerker';

                    --- voor wie wordt de pas aangevraagd?
                    SELECT p.prs_perslid_key
                      INTO v_pas_voor
                      FROM mld_kenmerkmelding km, prs_perslid p
                     WHERE     km.mld_kenmerk_key = 61
                           AND km.mld_kenmerkmelding_waarde =
                               p.prs_perslid_key
                           AND km.mld_melding_key = p_melding_key;

                    v_errormsg := 'Fout aanmaken pas';

                    INSERT INTO ins_deel (ins_discipline_key,
                                          ins_srtdeel_key,
                                          ins_deel_module,
                                          ins_deel_omschrijving,
                                          ins_deel_opmerking,
                                          ins_alg_ruimte_key,
                                          ins_alg_ruimte_type,
                                          ins_alg_locatie_key,
                                          ins_deel_aanmaak,
                                          ins_deel_vervaldatum)
                         VALUES (v_discipline_key,
                                 v_srtdeel_key,
                                 'INS',
                                 TO_CHAR (v_deel_oms),
                                 'Toegangspas Sassenheim',
                                 v_pas_voor,
                                 'P',
                                 NULL,
                                 v_startdatum,
                                 COALESCE (v_vervaldatum, NULL))
                      RETURNING ins_deel_key
                           INTO v_deel_key;

                    COMMIT;

                    --- noteren door wie de pas is aangevraagd, dat is de melder
                    akzo.upsert_inskenmerk (v_deel_key,
                                            21,
                                            rec.prs_perslid_key_voor);

                    --- bij een tijdelijke badge is bedrijf verplicht
                    --- bedrijf bepalen, kenmerk in de melding
                    SELECT COALESCE (km.prs_kenmerklink_waarde, 'AN SSH')
                      INTO v_bedrijf
                      FROM prs_perslid  p,
                           (SELECT km.prs_kenmerklink_waarde, km.prs_link_key
                              FROM prs_kenmerklink km
                             WHERE km.prs_kenmerklink_key = 1020) km
                     WHERE     km.prs_link_key(+) = p.prs_perslid_key
                           AND p.prs_perslid_key = v_pas_voor;

                    akzo.upsert_inskenmerk (v_deel_key, 41, v_bedrijf);

                    -- en dan mag de melding direct weer afgesloten worden
                    UPDATE mld_melding m
                       SET m.mld_melding_status = 5
                     WHERE m.mld_melding_key = p_melding_key;

                    COMMIT;
                END IF;

                IF v_stdmelding_key = 42                    -- verlengen badge
                THEN
                    v_errormsg := 'Fout bepalen te verlengen pas';

                    --- om welke pas gaat het
                    SELECT fac.safe_to_number (km.mld_kenmerkmelding_waarde)
                      INTO v_deel_key
                      FROM mld_kenmerkmelding km
                     WHERE     km.mld_kenmerk_key = 141
                           AND km.mld_melding_key = p_melding_key;

                    v_errormsg := 'Fout bepalen nieuwe einddatum t-badge';

                    --- nieuwe einddatum
                    SELECT fac.safe_to_date (km.mld_kenmerkmelding_waarde,
                                             'dd-mm-yyyy')
                      INTO v_vervaldatum
                      FROM mld_kenmerkmelding km
                     WHERE     km.mld_kenmerk_key = 142
                           AND km.mld_melding_key = p_melding_key;

                    --- oude vervaldatum
                    SELECT d.ins_deel_vervaldatum
                      INTO v_vervaldatum_oud
                      FROM ins_deel d
                     WHERE d.ins_deel_key = v_deel_key;

                    --- dan kan de pas bijgewerkt worden
                    UPDATE ins_deel d
                       SET ins_deel_vervaldatum = v_vervaldatum
                     WHERE d.ins_deel_key = v_deel_key;

                    -- Tracking
                    fac.trackaction (
                        'INSUPD',
                        v_deel_key,
                        NULL,
                        NULL,
                           'Vervaldatum bijgewerkt '
                        || v_vervaldatum_oud
                        || ' --> '
                        || v_vervaldatum);

                    -- en dan mag de melding direct weer afgesloten worden
                    UPDATE mld_melding m
                       SET m.mld_melding_status = 5
                     WHERE m.mld_melding_key = p_melding_key;

                    COMMIT;
                END IF;
            EXCEPTION
                WHEN OTHERS
                THEN
                    oracle_err_num := SQLCODE;
                    oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
                    v_errormsg :=
                           v_errormsg
                        || ' ORACLE (error '
                        || oracle_err_num
                        || '/'
                        || oracle_err_mes
                        || ')';
                    fac.imp_writelog (p_melding_key,
                                      'W',
                                      v_aanduiding || v_errormsg,
                                      '');

                    COMMIT;
            END;
        END LOOP;
    END;

    PROCEDURE prs_mandaten
    AS
        -- Alle AkzoNobel medewerkers die nog geen mandaten hebben
        CURSOR c IS
            SELECT prs_perslid_key
              FROM prs_perslid p
             WHERE     UPPER (p.prs_perslid_email) LIKE '%AKZONOBEL%'
                   AND prs_perslid_key NOT IN
                           (SELECT prs_perslid_key
                              FROM prs_perslidkostenplaats kpl);


        oracle_err_num   NUMBER;
        oracle_err_mes   VARCHAR2 (200);
        v_errormsg       VARCHAR2 (200);
    BEGIN
        FOR rec IN c
        LOOP
            v_errormsg := 'Fout toekennen mandaten ' || rec.prs_perslid_key;

            INSERT INTO prs_perslidkostenplaats (
                            prs_perslid_key,
                            prs_perslidkostenplaats_boeken,
                            prs_perslidkostenplaats_inzage)
                 VALUES (rec.prs_perslid_key, 1, 1);
        END LOOP;

        COMMIT;
    EXCEPTION
        WHEN OTHERS
        THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
            v_errormsg :=
                   'OTHERS (error '
                || oracle_err_num
                || '/'
                || oracle_err_mes
                || ')';
            fac.writelog ('Mandaten',
                          'E',
                          v_errormsg,
                          '');
    END;

    PROCEDURE prs_autorisaties
    AS
        -- Alle medewerkers zonder login of AkzoNobel mailadres moeten uit de _default autorisatie groep verwijderd worden
        CURSOR c IS
            SELECT p.prs_perslid_key
              FROM fac_gebruikersgroep g, prs_perslid p
             WHERE     g.fac_groep_key = 1
                   AND g.prs_perslid_key = p.prs_perslid_key
                   AND p.prs_perslid_oslogin IS NULL
                   AND (   UPPER (p.prs_perslid_email) NOT LIKE '%AKZONOBEL%'
                        OR p.prs_perslid_email IS NULL);


        oracle_err_num   NUMBER;
        oracle_err_mes   VARCHAR2 (200);
        v_errormsg       VARCHAR2 (200);
    BEGIN
        FOR rec IN c
        LOOP
            v_errormsg :=
                'Fout opschonen autorisatie ' || rec.prs_perslid_key;

            DELETE fac_gebruikersgroep g
             WHERE     g.fac_groep_key = 1
                   AND g.prs_perslid_key = rec.prs_perslid_key;
        END LOOP;

        COMMIT;
    EXCEPTION
        WHEN OTHERS
        THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
            v_errormsg :=
                   'OTHERS (error '
                || oracle_err_num
                || '/'
                || oracle_err_mes
                || ')';
            fac.writelog ('Mandaten',
                          'E',
                          v_errormsg,
                          '');
    END;
END;
/

CREATE OR REPLACE VIEW AKZO_V_T_PAS_AMSTERDAM
(
    INS_DEEL_OMSCHRIJVING,
    INS_DEEL_KEY,
    INS_DEEL_VERWIJDER
)
AS
      SELECT    p.prs_perslid_naam_full
             || ' / '
             || sd.ins_srtdeel_omschrijving
             || ' '
             || d.ins_deel_omschrijving,
             ins_deel_key,
             ins_deel_verwijder
        FROM ins_deel                   d,
             ins_srtdeel                sd,
             ins_srtgroep               sg,
             prs_v_perslid_fullnames_all p
       WHERE     d.ins_srtdeel_key = sd.ins_srtdeel_key
             AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
             AND sg.ins_srtgroep_key = 81
             AND d.ins_alg_ruimte_type = 'P'
             AND d.ins_alg_ruimte_key = p.prs_perslid_key
             AND d.ins_deel_actief = 1
             AND sd.ins_srtdeel_code_upper LIKE 'T-PAS' --- alleen tijdelijk passen kunnen worden verlengd
    ORDER BY p.prs_perslid_naam_full;
    
CREATE OR REPLACE VIEW AKZO_V_TIJDELIJK_PAS
(
    INS_DEEL_OMSCHRIJVING,
    INS_DEEL_KEY,
    INS_DEEL_VERWIJDER
)
AS
      SELECT    p.prs_perslid_naam_full
             || ' / '
             || sd.ins_srtdeel_omschrijving
             || ' '
             || d.ins_deel_omschrijving,
             ins_deel_key,
             ins_deel_verwijder
        FROM ins_deel                   d,
             ins_srtdeel                sd,
             ins_srtgroep               sg,
             prs_v_perslid_fullnames_all p
       WHERE     d.ins_srtdeel_key = sd.ins_srtdeel_key
             AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
             AND sg.ins_srtgroep_key = 1
             AND d.ins_alg_ruimte_type = 'P'
             AND d.ins_alg_ruimte_key = p.prs_perslid_key
             AND d.ins_deel_actief = 1
             AND sd.ins_srtdeel_code_upper NOT LIKE 'AN%' --- alleen tijdelijk passen kunnen worden verlengd
    ORDER BY p.prs_perslid_naam_full;

CREATE OR REPLACE VIEW AKZO_V_SOORT_PAS_SSH
(
    INS_SRTDEEL_KEY,
    INS_SRTDEEL_OMSCHRIJVING,
    INS_SRTDEEL_VERWIJDER
)
AS
    SELECT sd.ins_srtdeel_key,
           ins_srtdeel_omschrijving,
           ins_srtdeel_verwijder
      FROM ins_srtdeel sd, ins_srtgroep gr
     WHERE     sd.ins_srtgroep_key = gr.ins_srtgroep_key
           AND gr.ins_srtgroep_key = 1;

CREATE OR REPLACE VIEW AKZO_V_SOORT_PAS_AMS
(
    INS_SRTDEEL_KEY,
    INS_SRTDEEL_OMSCHRIJVING,
    INS_SRTDEEL_VERWIJDER
)
AS
    SELECT sd.ins_srtdeel_key,
           ins_srtdeel_omschrijving,
           ins_srtdeel_verwijder
      FROM ins_srtdeel sd, ins_srtgroep gr
     WHERE     sd.ins_srtgroep_key = gr.ins_srtgroep_key
           AND gr.ins_srtgroep_key = 81;

CREATE OR REPLACE VIEW AKZO_V_RAP_AANVR_BADGE
(
    PERSONTYPE,
    DISPLAYTYPE_CODE,
    DISPLAYTYPE_NAAM,
    PERSONEELSNUMMER,
    ROEPNAAM,
    VOORLETTERS,
    TUSSENVOEGSEL,
    ACHTERNAAM,
    DATUM_IN_DIENST,
    DATUM_UIT_DIENST,
    KOSTENPLAATS_CODE,
    KOSTENPLAATS_NAAM,
    BUSINESS_UNIT_AN_CODE,
    BUSINESS_UNIT_AN_NAAM,
    AFDELING_AKZO_CODE,
    AFDELING_AKZO_NAAM,
    FIRMANAAM,
    NEVENFUNCTIE_CODE,
    NEVENFUNCTIE_NAAM,
    WERKPLEK_CODE,
    WERKPLEK_NAAM,
    RUIMTE_CODE,
    RUIMTE_NAAM
)
AS
    SELECT UPPER (sd.ins_srtdeel_eenheid)                    persontype,
           ins_srtdeel_nr                                    displaytype_code,
           ins_srtdeel_omschrijving                          displaytype_naam,
           d.ins_deel_omschrijving                           personeelsnummer,
           p.prs_perslid_voornaam                            roepnaam,
           p.prs_perslid_voorletters                         voorletters,
           p.prs_perslid_tussenvoegsel                       tussenvoegsel,
           p.prs_perslid_naam                                achternaam,
           d.ins_deel_aanmaak                                datum_in_dienst,
           d.ins_deel_vervaldatum                            datum_uit_dienst,
           a.prs_afdeling_naam                               kostenplaats_code,
           a.prs_afdeling_omschrijving                       kostenplaats_naam,
           ''                                                business_unit_an_code,
           ru.reporting_unit                                 business_unit_an_naam,
           ''                                                afdeling_akzo_code,
           ''                                                afdeling_akzo_naam,
           bedrijf.ins_kenmerkdeel_waarde                    firmanaam,
           nevenfunctie_new.nevenf_code                      nevenfunctie_code,
           COALESCE (nevenfunctie_new.nevenf_omschr,
                     nevenfunctie.prs_kenmerklink_waarde)    nevenfunctie_naam,
           werkplek_new.werkplek_code                        werkplek_code,
           werkplek_new.werkplek_omschr                      werkplek_naam,
           werkplek.ruimte_nr                                ruimte_code,
           werkplek.alg_ruimte_omschrijving                  ruimte_naam
      FROM ins_deel      d,
           ins_srtdeel   sd,
           ins_srtgroep  sg,
           prs_perslid   p,
           prs_afdeling  a,
           (SELECT kl.prs_kenmerklink_waarde, kl.prs_link_key prs_perslid_key
              FROM prs_kenmerklink kl
             WHERE     kl.prs_kenmerk_key = 1040
                   AND kl.prs_kenmerklink_verwijder IS NULL) nevenfunctie,
           (SELECT ud.fac_usrdata_code       nevenf_code,
                   ud.fac_usrdata_omschr     nevenf_omschr,
                   kl.prs_link_key           prs_perslid_key
              FROM prs_kenmerklink kl, fac_usrdata ud
             WHERE     kl.prs_kenmerk_key = 1060
                   AND kl.prs_kenmerklink_verwijder IS NULL
                   AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key
                   AND ud.fac_usrtab_key = 241) nevenfunctie_new,
           (SELECT ud.fac_usrdata_code       werkplek_code,
                   ud.fac_usrdata_omschr     werkplek_omschr,
                   kl.prs_link_key           prs_perslid_key
              FROM prs_kenmerklink kl, fac_usrdata ud
             WHERE     kl.prs_kenmerk_key = 1080
                   AND kl.prs_kenmerklink_verwijder IS NULL
                   AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key
                   AND ud.fac_usrtab_key = 261) werkplek_new,
           (SELECT kd.ins_deel_key, kd.ins_kenmerkdeel_waarde
              FROM ins_kenmerkdeel kd
             WHERE     kd.ins_kenmerk_key = 41
                   AND kd.ins_kenmerkdeel_verwijder IS NULL) bedrijf,
           (SELECT min_pw.prs_perslid_key,
                   min_pw.prs_werkplek_key,
                   w.prs_werkplek_omschrijving,
                   g.alg_gebouw_code || '-' || r.alg_ruimte_nr     ruimte_nr,
                   r.alg_ruimte_omschrijving
              FROM prs_werkplek    w,
                   alg_ruimte      r,
                   alg_verdieping  v,
                   alg_gebouw      g,
                   (  SELECT prs_perslid_key,
                             MIN (prs_werkplek_key)     prs_werkplek_key
                        FROM prs_perslidwerkplek
                    GROUP BY prs_perslid_key) min_pw
             WHERE     w.prs_alg_ruimte_key = r.alg_ruimte_key
                   AND v.alg_verdieping_key = r.alg_verdieping_key
                   AND g.alg_gebouw_key = v.alg_gebouw_key
                   AND min_pw.prs_werkplek_key = w.prs_werkplek_key) werkplek,
           (SELECT kl.prs_link_key           prs_perslid_key,
                   ud.fac_usrdata_omschr     reporting_unit
              FROM prs_kenmerklink  kl,
                   prs_kenmerk      k,
                   fac_usrtab       ut,
                   fac_usrdata      ud
             WHERE     kl.prs_kenmerk_key = k.prs_kenmerk_key
                   AND k.prs_kenmerk_key = 1100
                   AND kl.prs_kenmerklink_niveau = 'P'
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND fac.safe_to_number (kl.prs_kenmerklink_waarde) =
                       ud.fac_usrdata_key) ru
     WHERE     d.ins_srtdeel_key = sd.ins_srtdeel_key
           AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
           AND sg.ins_srtgroep_key = 1                --- alleen passen Sassenheim
           AND d.ins_alg_ruimte_type = 'P'
           AND d.ins_alg_ruimte_key = p.prs_perslid_key
           AND d.ins_deel_actief = 1
           AND d.ins_deel_verwijder IS NULL
           AND p.prs_perslid_key = nevenfunctie.prs_perslid_key(+)
           AND p.prs_perslid_key = nevenfunctie_new.prs_perslid_key(+)
           AND p.prs_perslid_key = werkplek_new.prs_perslid_key(+)
           AND d.ins_deel_key = bedrijf.ins_deel_key(+)
           AND p.prs_afdeling_key = a.prs_afdeling_key
           AND p.prs_perslid_key = werkplek.prs_perslid_key(+)
           AND p.prs_perslid_key = ru.prs_perslid_key(+);

CREATE OR REPLACE PROCEDURE AKZO_SELECT_EXP_BADGE (p_applname   IN VARCHAR2,
                                                   p_applrun    IN VARCHAR2)
AS
    v_aanduiding            VARCHAR2 (200);
    v_errorhint             VARCHAR2 (1000);
    v_errormsg              VARCHAR2 (1000);
    oracle_err_num          NUMBER;
    oracle_err_mes          VARCHAR2 (200);


    CURSOR c_badges IS SELECT * FROM AKZO_V_RAP_AANVR_BADGE;

    v_teller                NUMBER;
    v_rap_count             NUMBER;
    v_kenmerk_key_laatste   NUMBER;
BEGIN
    v_teller := 0;
    v_rap_count := 0;

    v_aanduiding := 'Init';
    v_errormsg := 'Header';

    DELETE imp_log
     WHERE imp_log_applicatie = p_applname;

    DELETE fac_rapport
     WHERE fac_rapport_node = p_applname;

    -- Genereer headerregel
    INSERT INTO fac_rapport (fac_rapport_node,
                             fac_rapport_volgnr,
                             fac_rapport_regel,
                             fac_rapport_soort)
             VALUES (
                 p_applname,
                 v_rap_count,
                 'PersonType;Displaytype_Code;Displaytype_Naam;Personeelsnummer;Roepnaam;Voorletters;Tussenvoegsel;Achternaam;Datum_in_dienst;Datum_uit_dienst;Kostenplaats_Code;Kostenplaats_Naam;Business_Unit_AN_Code;Business_Unit_AN_Naam;Afdeling_Akzo_Code;Afdeling_Akzo_Naam;Firmanaam;Nevenfunctie_Code;Nevenfunctie_Naam;Werkplek_Code;Werkplek_Naam;Ruimte_Code;Ruimte_Naam',
                 0);

    -- Genereer sommatie-, specificatie- en creditregels voor debiteuren
    FOR rec IN c_badges
    LOOP
        v_errormsg := 'Per badge aanvraag een regel toevoegen';
        v_teller := v_teller + 1;
        v_aanduiding := v_teller || ': ' || rec.personeelsnummer;
        v_rap_count := v_rap_count + 1;

        -- Sommatieregel
        INSERT INTO fac_rapport (fac_rapport_node,
                                 fac_rapport_volgnr,
                                 fac_rapport_regel,
                                 fac_rapport_soort)
                 VALUES (
                     p_applname,
                     v_rap_count,
                        rec.persontype
                     || ';'
                     || rec.displaytype_code
                     || ';'
                     || rec.displaytype_naam
                     || ';'
                     || rec.personeelsnummer
                     || ';'
                     || rec.roepnaam
                     || ';'
                     || rec.voorletters
                     || ';'
                     || rec.tussenvoegsel
                     || ';'
                     || rec.achternaam
                     || ';'
                     || rec.datum_in_dienst
                     || ';'
                     || rec.datum_uit_dienst
                     || ';'
                     || rec.kostenplaats_code
                     || ';'
                     || rec.kostenplaats_naam
                     || ';'
                     || rec.business_unit_an_code
                     || ';'
                     || rec.business_unit_an_naam
                     || ';'
                     || rec.afdeling_akzo_code
                     || ';'
                     || rec.afdeling_akzo_naam
                     || ';'
                     || rec.firmanaam
                     || ';'
                     || rec.nevenfunctie_code
                     || ';'
                     || rec.nevenfunctie_naam
                     || ';'
                     || rec.werkplek_code
                     || ';'
                     || rec.werkplek_naam
                     || ';'
                     || rec.ruimte_code
                     || ';'
                     || rec.ruimte_naam,
                     0);
    END LOOP;

    COMMIT;
EXCEPTION
    WHEN OTHERS
    THEN
        oracle_err_num := SQLCODE;
        oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
        v_errormsg :=
               v_errorhint
            || ' ORACLE (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
        fac.writelog (p_applname,
                      'E',
                      v_aanduiding || v_errormsg,
                      'Onbekende fout!');
        COMMIT;
END akzo_select_exp_badge;
/

CREATE OR REPLACE VIEW AKZO_V_EXPORT_EXP_BADGE
(
    RESULT,
    RESULT_ORDER
)
AS
      SELECT fac_rapport_regel result, fac_rapport_volgnr result_order
        FROM fac_rapport
       WHERE fac_rapport_node = 'EXP_BADGE'
    ORDER BY fac_rapport_volgnr;

CREATE OR REPLACE VIEW AKZO_V_RAP_CATERING_DAGLIJST
(
    DATUM,
    HIDE_F_RSV_RUIMTE,
    LOCATIE,
    RESNR,
    HOST,
    DAG,
    RUIMTE,
    VAN,
    TOT,
    TIJD_CATERING,
    AANTAL,
    ARTIKELOMSCHRIJVING,
    ARTIKELOPMERKING,
    CATERING_LOCATIE,
    BIJZONDERHEDEN,
    RES_OPMERKINGEN,
    RES_OMSCHRIJVING
)
AS
    SELECT res_rsv_artikel_levering,
           r.res_rsv_ruimte_key,
           locatie.alg_locatie_omschrijving,
           r.res_reservering_key || '/' || r.res_rsv_ruimte_volgnr,
           prs_perslid_naam_full,
           TO_CHAR (res_rsv_ruimte_van, 'DAY')
               dag,
           r2a.ruimte_nr
               ruimte,
           res_rsv_ruimte_van
               ruimte_van,
           res_rsv_ruimte_tot
               ruimte_tot,
           TO_CHAR (res_rsv_artikel_levering, 'HH24:MI')
               levering_catering,
           aantal,
           DECODE (UPPER (artikeloms),
                   'SPECIAL', artikeloms || ': ' || specialomschr,
                   artikeloms)
               artikeloms,
           artikelopm,
           r2a.ruimte_nr
               catering_locatie,
           bijzonderheden,
           r2a.ruimte_opmerking,
           r2a.ruimte_omschrijving
      FROM (SELECT rr.res_reservering_key,
                   rr.res_rsv_ruimte_volgnr,
                   rr.res_rsv_ruimte_key,
                   rr.res_rsv_ruimte_van,
                   rr.res_rsv_ruimte_tot,
                   ra.res_rsv_artikel_key,
                   ra.res_rsv_artikel_levering,
                   act.res_srtactiviteit_key,
                   a.res_artikel_key,
                   a.res_artikel_nr                  artikelnr,
                   a.res_artikel_omschrijving        artikeloms,
                   a.res_artikel_opmerking           artikelopm,
                   d.ins_discipline_key,
                   d.ins_discipline_omschrijving     catalogus,
                   ra.res_status_bo_key              status,
                   ra.res_rsv_artikel_aantal         aantal,
                   a.res_artikel_eenheid             eenheid,
                   pf.prs_perslid_key,
                   pf.prs_perslid_naam_full,
                   opmerking.bijzonderheden          bijzonderheden,
                   special.specialomschr
              FROM res_rsv_artikel          ra,
                   res_artikel              a,
                   res_discipline           d,
                   res_rsv_ruimte           rr,
                   res_activiteit           act,
                   prs_v_perslid_fullnames  pf,
                   (SELECT kw.res_rsv_ruimte_key,
                           res_kenmerkreservering_waarde     bijzonderheden
                      FROM res_kenmerk        k,
                           res_srtkenmerk     sk,
                           res_kenmerkwaarde  kw
                     WHERE     k.res_srtkenmerk_key = sk.res_srtkenmerk_key
                           AND res_srtkenmerk_upper = 'BIJZONDERHEDEN'
                           AND kw.res_kenmerk_key = k.res_kenmerk_key)
                   opmerking,
                   (SELECT ka.res_rsv_artikel_key,
                           res_kenmerkartikel_waarde     specialomschr
                      FROM res_kenmerkartikel  ka,
                           res_kenmerk         k,
                           res_srtkenmerk      sk
                     WHERE     k.res_kenmerk_key = ka.res_kenmerk_key
                           AND sk.res_srtkenmerk_key = k.res_srtkenmerk_key
                           AND ka.res_kenmerkartikel_verwijder IS NULL
                           AND sk.res_srtkenmerk_upper =
                               'OMSCHRIJVING ARTIKEL') special
             WHERE     ra.res_rsv_artikel_verwijder IS NULL
                   AND ra.res_rsv_ruimte_key =
                       opmerking.res_rsv_ruimte_key(+)
                   AND ra.res_rsv_artikel_key =
                       special.res_rsv_artikel_key(+)
                   AND a.res_artikel_key = ra.res_artikel_key
                   AND d.ins_discipline_key = a.res_discipline_key
                   AND d.ins_discipline_min_level = 2
                   AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
                   AND act.res_activiteit_key = rr.res_activiteit_key
                   AND pf.prs_perslid_key = rr.res_rsv_ruimte_host_key) r,
           (  SELECT res_rsv_ruimte_key,
                     MAX (r.res_rsv_ruimte_omschrijving)
                         ruimte_omschrijving,
                     MAX (r.res_rsv_ruimte_opmerking)
                         ruimte_opmerking,
                     MAX (o.res_opstelling_omschrijving)
                         opstelling,
                     MAX (ro.res_ruimte_opstel_bezoekers)
                         capaciteit,
                     MAX (ra.alg_ruimte_key)
                         alg_ruimte_key,
                     MAX (rr.res_ruimte_nr)
                         ruimte_nr
                FROM res_rsv_ruimte       r,
                     res_ruimte_opstelling ro,
                     res_opstelling       o,
                     res_ruimte           rr,
                     res_alg_ruimte       ra
               WHERE     r.res_rsv_ruimte_verwijder IS NULL
                     AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
                     AND ro.res_ruimte_key = rr.res_ruimte_key
                     AND ro.res_opstelling_key = o.res_opstelling_key(+)
                     AND rr.res_ruimte_key = ra.res_ruimte_key
            GROUP BY res_rsv_ruimte_key
            UNION ALL
            SELECT res_rsv_ruimte_key,
                   rrr.res_rsv_ruimte_omschrijving     ruimte_omschrijving,
                   rrr.res_rsv_ruimte_opmerking        ruimte_opmerking,
                   ''                                  opstelling,
                   NULL                                capaciteit,
                   rrr.alg_ruimte_key,
                   r.alg_ruimte_nr
              FROM res_rsv_ruimte rrr, alg_ruimte r
             WHERE     rrr.alg_ruimte_key IS NOT NULL
                   AND r.alg_ruimte_key = rrr.alg_ruimte_key) r2a,
           (SELECT l.alg_locatie_key,
                   alg_locatie_code,
                   alg_locatie_omschrijving,
                   r.alg_ruimte_key
              FROM alg_locatie     l,
                   alg_gebouw      g,
                   alg_verdieping  v,
                   alg_ruimte      r
             WHERE     l.alg_locatie_key = g.alg_locatie_key
                   AND g.alg_gebouw_key = v.alg_gebouw_key
                   AND v.alg_verdieping_key = r.alg_verdieping_key) locatie
     WHERE     locatie.alg_ruimte_key = r2a.alg_ruimte_key
           AND r.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+);

CREATE OR REPLACE VIEW AKZO_V_RAP_CATERING_LABELS
AS
      SELECT datum                                                           hide_f_datum,
             hide_f_rsv_ruimte,
             resnr,
             HOST,
             van,
             TO_CHAR (van, 'dd-mm-yyyy')                                     datum,
             tijd_catering,
             catering_locatie,
             res_omschrijving,
             bijzonderheden,
             LISTAGG (aantal || 'x ' || artikelomschrijving, CHR (10))
                 WITHIN GROUP (ORDER BY hide_f_rsv_ruimte, tijd_catering)    catering
        FROM AKZO_V_RAP_CATERING_DAGLIJST
       WHERE locatie = 'Sassenheim'
    GROUP BY datum,
             hide_f_rsv_ruimte,
             resnr,
             van,
             TO_CHAR (van, 'dd-mm-yyyy'),
             HOST,
             ruimte,
             tijd_catering,
             catering_locatie,
             res_omschrijving,
             bijzonderheden;

CREATE OR REPLACE PROCEDURE akzo_daily
AS
BEGIN
    -- mandaat voor alle AN medewerkers
    akzo.prs_mandaten ();

    -- medewerkers zonder AN mailadres of login verwijderen uit _default
    akzo.prs_autorisaties ();
END;
/

CREATE OR REPLACE PROCEDURE akzo_import_perslid (p_import_key IN NUMBER)
AS
    oracle_err_num     NUMBER;
    oracle_err_mes     VARCHAR2 (200);
    v_errormsg         VARCHAR2 (400);
    v_errorhint        VARCHAR2 (400);
    v_aantal_in_FCLT   NUMBER;
BEGIN
    v_errorhint := 'Generieke update';
    -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
    prs.import_perslid (
        p_import_key,
           '1;2;3;4;5;6;7;8;9;11;'
        || '10;0;0;0;0;13;14;15;0;17;'
        || '16;0;0;12;0;0;0;0;0;0;'
        || '0;0;0;0;0;0;0;0;0;0;'
        || '0;0;0;0;0;0',
        'Locatiecode;Gebouwcode;Bouwlaagvolgnummer;Ruimtenummer;Werkplekvolgnummer;Omschrijving;Afdelingscode;PersoonAchternaam;Tussenvoegsel;Voorletters;Voornaam;Titel/Aanhef;Telefoonnummer;Mobiel;Email;Functie;Personeelsnummer;Loginnaam;Password');


    COMMIT;
EXCEPTION
    WHEN OTHERS
    THEN
        oracle_err_num := SQLCODE;
        oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
        v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
        fac.imp_writelog (p_import_key,
                          'E',
                          v_errormsg,
                          v_errorhint);
END;
/

CREATE OR REPLACE PROCEDURE akzo_update_perslid (p_import_key IN NUMBER)
IS
    c_fielddelimitor              VARCHAR2 (1) := ';';

    v_errormsg                    VARCHAR2 (1000);
    v_errorhint                   VARCHAR2 (1000);
    oracle_err_num                NUMBER;
    oracle_err_mes                VARCHAR2 (200);
    v_aanduiding                  VARCHAR2 (200);
    v_sleutelkolom                VARCHAR2 (200);

    v_count                       NUMBER (10);
    v_ongeldig                    NUMBER (1);
    v_count_update                NUMBER (10);
    v_count_error                 NUMBER (10);
    v_count_tot                   NUMBER (10);
    v_wpcount_error               NUMBER (10);

    --
    v_perslid_key                 NUMBER (10);
    v_perslid_nr                  VARCHAR2 (100);
    v_afdeling_key                NUMBER (10);
    v_srtperslid_key              NUMBER (10);
    v_prs_perslid_naam            VARCHAR2 (200);
    v_prs_perslid_tussenvoegsel   VARCHAR2 (200);
    v_kostenplaats_nr             VARCHAR2 (100);

    v_locatie_key                 NUMBER (10);
    v_gebouw_key                  NUMBER (10);
    v_verdieping_key              NUMBER (10);
    v_ruimte_key                  NUMBER (10);
    v_space                       VARCHAR2 (1);

    --- import van perslid
    CURSOR c_imp_perslid IS
        SELECT *
          FROM fac_imp_perslid ip;
BEGIN
    v_count_update := 0;
    v_count_tot := 0;
    v_count_error := 0;
    v_wpcount_error := 0;

    SELECT COUNT (*) INTO v_count FROM fac_imp_perslid;

    IF v_count < 500
    THEN
        fac.imp_writelog (
            p_import_key,
            'E',
               'Het aantal te importeren personen is te klein ('
            || TO_CHAR (v_count)
            || ')',
            'Zie Specificatie');
        RETURN;
    END IF;

    ----------------------------------------------------
    --- BEGIN STANDAARD IMPORT -------------------------
    ----------------------------------------------------
    FOR rec IN c_imp_perslid
    LOOP
        BEGIN
            v_aanduiding := '';
            v_errormsg := '';
            v_errorhint := '';
            v_count_tot := v_count_tot + 1;

            v_aanduiding :=
                   rec.prs_perslid_naam
                || '|'
                || rec.prs_perslid_voornaam
                || '| ';
            v_errormsg := '';

            v_errorhint := 'Fout bij bepalen functie';

            SELECT prs_srtperslid_key
              INTO v_srtperslid_key
              FROM prs_srtperslid
             WHERE     prs_srtperslid_verwijder IS NULL
                   AND UPPER (prs_srtperslid_omschrijving) =
                       UPPER (rec.prs_srtperslid_omschrijving);

            IF rec.prs_perslid_email IS NOT NULL
            THEN
                v_sleutelkolom := 'EMAIL';
            ELSE
                v_sleutelkolom := 'NR';
            END IF;

            v_errorhint :=
                'Afdeling niet gevonden [' || rec.prs_afdeling_naam || ']';

            SELECT a.prs_afdeling_key
              INTO v_afdeling_key
              FROM prs_v_aanwezigafdeling_boom b, prs_afdeling a
             WHERE     UPPER (a.prs_afdeling_naam) =
                       UPPER (rec.prs_afdeling_naam)
                   AND a.prs_afdeling_verwijder IS NULL
                   AND a.prs_afdeling_key = b.prs_afdeling_key;

            v_space := '';

            -- kijk hoe we met partnernamen moeten omgaan:
            IF rec.prs_perslid_naamgebruik_code = 0
            THEN
                -- normaal gebruik van naam. Eigen naam wordt gebruikt
                v_prs_perslid_naam := rec.prs_perslid_naam;
                v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel;
            ELSIF rec.prs_perslid_naamgebruik_code = 1
            THEN
                -- personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
                IF rec.prs_perslid_tussenvoegsel IS NOT NULL
                THEN
                    v_space := ' ';
                END IF;

                v_prs_perslid_naam :=
                       rec.prs_perslid_partner_naam
                    || ' - '
                    || rec.prs_perslid_tussenvoegsel
                    || v_space
                    || rec.prs_perslid_naam;
                v_prs_perslid_tussenvoegsel :=
                    rec.prs_perslid_partner_tussenv;
            ELSIF rec.prs_perslid_naamgebruik_code = 2
            THEN
                -- personen die de geboortenaam van de partner willen gebruiken
                v_prs_perslid_naam := rec.prs_perslid_partner_naam;
                v_prs_perslid_tussenvoegsel :=
                    rec.prs_perslid_partner_tussenv;
            ELSIF rec.prs_perslid_naamgebruik_code = 3
            THEN
                -- personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
                IF rec.prs_perslid_partner_tussenv IS NOT NULL
                THEN
                    v_space := ' ';
                END IF;

                v_prs_perslid_naam :=
                       rec.prs_perslid_naam
                    || ' - '
                    || rec.prs_perslid_partner_tussenv
                    || v_space
                    || rec.prs_perslid_partner_naam;
                v_prs_perslid_tussenvoegsel := rec.prs_perslid_tussenvoegsel;
            END IF;

            IF LENGTH (v_prs_perslid_naam) > 60
            THEN
                v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 60);
                fac.imp_writelog (
                    p_import_key,
                    'W',
                       rec.prs_perslid_naam
                    || '|'
                    || rec.prs_perslid_voornaam
                    || '| '
                    || 'Samengestelde achternaam is te lang',
                       'Aanduiding wordt afgebroken tot ['
                    || v_prs_perslid_naam
                    || ']');
            END IF;

            -- v_sleutelkolom
            --   NR     = prs_perslid_nr
            --   LOGIN  = prs_perslid_oslogin
            v_errorhint := 'Kijken of de persoon al bestaat';

            SELECT MAX (prs_perslid_key), COUNT (*)
              INTO v_perslid_key, v_count
              FROM prs_perslid
             WHERE     prs_perslid_verwijder IS NULL
                   AND (   (    UPPER (v_sleutelkolom) = 'NR'
                            AND UPPER (prs_perslid_nr) =
                                UPPER (rec.prs_perslid_nr))
                        OR (    UPPER (v_sleutelkolom) = 'EMAIL'
                            AND UPPER (prs_perslid_email) =
                                UPPER (rec.prs_perslid_email)));

            IF (v_count = 0)
            THEN
                v_errorhint := 'Fout bij toevoegen persoon';

                INSERT INTO prs_perslid (prs_perslid_module,
                                         prs_srtperslid_key,
                                         prs_afdeling_key,
                                         prs_perslid_naam,
                                         prs_perslid_voorletters,
                                         prs_perslid_tussenvoegsel,
                                         prs_perslid_voornaam,
                                         prs_perslid_telefoonnr,
                                         prs_perslid_mobiel,
                                         prs_perslid_email,
                                         prs_perslid_nr,
                                         prs_perslid_geslacht,
                                         prs_perslid_titel,
                                         prs_perslid_dienstverband,
                                         prs_perslid_oslogin,
                                         prs_perslid_apikey)
                     VALUES ('PRS',
                             v_srtperslid_key,
                             v_afdeling_key,
                             v_prs_perslid_naam,
                             rec.prs_perslid_voorletters,
                             v_prs_perslid_tussenvoegsel,
                             rec.prs_perslid_voornaam,
                             rec.prs_perslid_telefoonnr,
                             rec.prs_perslid_mobiel,
                             rec.prs_perslid_email,
                             rec.prs_perslid_nr,
                             rec.prs_perslid_geslacht,
                             rec.prs_perslid_titel,
                             rec.prs_perslid_dienstverband,
                             rec.prs_perslid_oslogin,
                             rec.prs_perslid_apikey)
                  RETURNING prs_perslid_key
                       INTO v_perslid_key;

                prs.setpassword (v_perslid_key, rec.prs_perslid_wachtwoord);

                COMMIT;
                v_count_update := v_count_update + 1;
            ELSIF v_count = 1
            THEN
                UPDATE prs_perslid
                   SET prs_srtperslid_key = v_srtperslid_key,
                       prs_afdeling_key = v_afdeling_key,
                       prs_perslid_naam = v_prs_perslid_naam,
                       prs_perslid_voorletters = rec.prs_perslid_voorletters,
                       prs_perslid_tussenvoegsel =
                           v_prs_perslid_tussenvoegsel,
                       prs_perslid_voornaam = rec.prs_perslid_voornaam,
                       prs_perslid_nr = rec.prs_perslid_nr,
                       prs_perslid_dienstverband =
                           rec.prs_perslid_dienstverband,
                       prs_perslid_geslacht = rec.prs_perslid_geslacht,
                       prs_perslid_titel = rec.prs_perslid_titel,
                       prs_perslid_telefoonnr = rec.prs_perslid_telefoonnr,
                       prs_perslid_mobiel = rec.prs_perslid_mobiel,
                       prs_perslid_email = rec.prs_perslid_email,
                       prs_perslid_oslogin = rec.prs_perslid_oslogin,
                       prs_perslid_apikey = rec.prs_perslid_apikey
                 WHERE prs_perslid_key = v_perslid_key;

                IF rec.prs_perslid_wachtwoord IS NOT NULL
                THEN
                    prs.setpassword (v_perslid_key,
                                     rec.prs_perslid_wachtwoord);
                END IF;
            END IF;

            -- Voor CUST-postprocessing (van de kenmerken) is het handig te onthouden:
            UPDATE fac_imp_perslid
               SET prs_perslid_key = v_perslid_key
             WHERE     fac_import_key = rec.fac_import_key
                   AND fac_imp_file_index = rec.fac_imp_file_index;

            COMMIT;                      -- persoon in ieder geval toegevoegd.

            v_aanduiding :=
                   rec.prs_perslid_nr
                || '|'
                || rec.prs_perslid_naam
                || '|'
                || rec.prs_perslid_voornaam
                || '|'
                || rec.alg_locatie_code
                || '|'
                || rec.alg_gebouw_code
                || '|'
                || rec.alg_verdieping_volgnr
                || '|'
                || rec.alg_ruimte_nr
                || ' - ';

            v_locatie_key := NULL;
            v_gebouw_key := NULL;
            v_verdieping_key := NULL;
            v_ruimte_key := NULL;

            v_errorhint := 'Fout bij bepalen locatie';

            SELECT MAX (alg_locatie_key)
              INTO v_locatie_key
              FROM alg_v_aanweziglocatie
             WHERE UPPER (alg_locatie_code) = UPPER (rec.alg_locatie_code);

            v_errorhint := 'Fout bij bepalen gebouw';

            SELECT MAX (alg_gebouw_key)
              INTO v_gebouw_key
              FROM alg_v_aanweziggebouw
             WHERE     UPPER (alg_gebouw_code) = UPPER (rec.alg_gebouw_code)
                   AND alg_locatie_key = v_locatie_key;

            v_errorhint := 'Fout bij bepalen verdieping';

            SELECT MAX (alg_verdieping_key)
              INTO v_verdieping_key
              FROM alg_v_aanwezigverdieping
             WHERE     UPPER (alg_verdieping_volgnr) =
                       UPPER (rec.alg_verdieping_volgnr)
                   AND alg_gebouw_key = v_gebouw_key;

            v_errorhint := 'Fout bij bepalen beoogde ruimte';

            SELECT MAX (alg_ruimte_key)
              INTO v_ruimte_key
              FROM alg_v_aanwezigruimte r
             WHERE     r.alg_ruimte_upper_nr = UPPER (rec.alg_ruimte_nr)
                   AND r.alg_verdieping_key = v_verdieping_key;

            -- standaard ruimte moet door cust gedeelte van deFout bij bepalen beoogde ruimte import ingevuld worden.

            -- als er een locatie ingevuld is willen we ook een ruimte vinden.
            IF v_ruimte_key IS NULL AND rec.alg_locatie_code IS NOT NULL
            THEN
                fac.imp_writelog (
                    p_import_key,
                    'W',
                    v_aanduiding || ' Ruimte kan niet gevonden worden',
                    'Controleer locatie,gebouw en verdieping');
            END IF;

            -- fouten bij het bepalen van de werkplek worden als waarschuwing weergegeven.
            BEGIN
                v_errorhint := 'Fout bij het aanpassen van de werkplek';
                PRS.movetoruimte (v_perslid_key, v_ruimte_key, 'A');
            EXCEPTION
                WHEN OTHERS
                THEN
                    v_wpcount_error := v_wpcount_error + 1;
                    oracle_err_num := SQLCODE;
                    oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
                    v_errormsg :=
                           ' (ORACLE error number = <'
                        || ORACLE_err_num
                        || '> ORACLE error message = <'
                        || ORACLE_err_mes
                        || '>)';
                    fac.imp_writelog (p_import_key,
                                      'W',
                                      v_aanduiding || v_errormsg,
                                      v_errorhint);
            END;
        EXCEPTION
            WHEN OTHERS
            THEN
                v_count_error := v_count_error + 1;
                oracle_err_num := SQLCODE;
                oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
                v_errormsg :=
                       ' (ORACLE error number = <'
                    || ORACLE_err_num
                    || '> ORACLE error message = <'
                    || ORACLE_err_mes
                    || '>)';
                fac.imp_writelog (p_import_key,
                                  'E',
                                  v_aanduiding || v_errormsg,
                                  v_errorhint);
                COMMIT;                                         -- tbv logging
        END;
    END LOOP;

    fac.imp_writelog (
        p_import_key,
        'S',
           'Persoon: verwerkte regels zonder foutmelding: '
        || TO_CHAR (v_count_tot - v_count_error),
        '');

    fac.imp_writelog (
        p_import_key,
        'S',
           'Persoon: verwerkte regels met foutmelding: '
        || TO_CHAR (v_count_error),
        '');

    fac.imp_writelog (
        p_import_key,
        'S',
           'Werkplek: verwerkte regels met foutmelding: '
        || TO_CHAR (v_wpcount_error),
        '');
END;
/

CREATE OR REPLACE VIEW AKZO_V_NOTI_INS_TBADGE
(
    CODE,
    SENDER,
    RECEIVER,
    TEXT,
    KEY,
    XKEY
)
AS
SELECT 'CUST01',
       NULL,
       aanvrager,
          'Tijdelijke badge verloopt: '
       || vervaldatum
       || ' (badgenummer: '
       || pasnr
       || ', pashouder: '
       || pashouder_naam
       || ')',
       pashouder,
       NULL
  FROM (SELECT d.ins_deel_key,
               d.ins_deel_omschrijving          pasnr,
               d.ins_deel_vervaldatum           vervaldatum,
               d.ins_alg_ruimte_key             pashouder,
               aanvr.prs_perslid_key            aanvrager,
               ph.prs_perslid_naam_friendly     pashouder_naam
          FROM ins_deel                     d,
               ins_srtdeel                  sd,
               (SELECT kd.ins_deel_key, ins_kenmerkdeel_waarde
                  FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_srtkenmerk sk
                 WHERE     k.ins_kenmerk_key = kd.ins_kenmerk_key
                       AND sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key
                       AND sk.ins_srtkenmerk_upper = 'PAS AANGEVRAAGD DOOR')
               kd,
               prs_perslid                  aanvr,
               prs_v_perslid_fullnames_all  ph
         WHERE     d.ins_srtdeel_key = sd.ins_srtdeel_key
               AND d.ins_deel_key = kd.ins_deel_key
               AND d.ins_alg_ruimte_key = ph.prs_perslid_key
               AND kd.ins_kenmerkdeel_waarde = aanvr.prs_perslid_key
               AND d.ins_alg_ruimte_type = 'P'
               AND sd.ins_srtdeel_code_upper NOT LIKE 'AN%'
               AND sd.ins_srtgroep_key IN (1, 181)
               AND d.ins_deel_verwijder IS NULL
               AND d.ins_deel_actief = 1
               AND TRUNC (d.ins_deel_vervaldatum) = TRUNC (SYSDATE + 14)) PAS;

CREATE OR REPLACE VIEW AKZO_V_THEMA_VLOERAFWERKING
(
    ALG_RUIMTE_KEY,
    WAARDE
)
AS
    SELECT r.alg_ruimte_key, va.fac_usrdata_omschr
      FROM alg_ruimte  r,
           (SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr
              FROM alg_onrgoedkenmerk    ok,
                   fac_usrdata           ud,
                   fac_kenmerkdomein     rk,
                   alg_kenmerk           k,
                   alg_v_aanwezigruimte  rr
             WHERE     rk.fac_usrtab_key = ud.fac_usrtab_key
                   AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
                   AND TO_CHAR (ud.fac_usrdata_key) =
                       ok.alg_onrgoedkenmerk_waarde
                   AND k.alg_kenmerk_key = 1001
                   AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va
     WHERE va.alg_ruimte_key = r.alg_ruimte_key;

CREATE OR REPLACE VIEW AKZO_V_NOTI_BADGE_SSH
(
    SENDER,
    RECEIVER,
    TEXT,
    CODE,
    FAC_SRTNOTIFICATIE_KEY,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT DISTINCT NULL                                      sender,
                    NULL                                      receiver,
                    sm.mld_stdmelding_omschrijving,
                    fac_srtnotificatie_code,
                    n.fac_srtnotificatie_key,
                    m.mld_melding_key,
                    NULL                                      xkey,
                    'BeveiligingSassenheim@akzonobel.com'     xemail,
                    NULL                                      xmobile
      FROM fac_tracking        t,
           mld_melding         m,
           mld_stdmelding      sm,
           fac_srtnotificatie  n
     WHERE     t.fac_tracking_refkey = m.mld_melding_key
           AND t.fac_srtnotificatie_key = 50
           AND n.fac_srtnotificatie_code = 'CUST02'
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND sm.mld_stdmelding_key IN (41, 42)  -- Aanvraag/ Verlengen badge
           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) =
                       'AKZO_V_NOTI_BADGE_SSH')
           AND t.fac_tracking_datum <
               (SELECT fac_notificatie_job_nextrun
                  FROM fac_notificatie_job
                 WHERE UPPER (fac_notificatie_job_view) =
                       'AKZO_V_NOTI_BADGE_SSH');

CREATE OR REPLACE VIEW AKZO_V_RUIMTE
(
    ALG_RUIMTE_KEY,
    ALG_RUIMTE_OMSCHRIJVING,
    ALG_RUIMTE_VERWIJDER
)
AS
    SELECT r.alg_ruimte_key,
              g.alg_gebouw_code
           || '-'
           || v.alg_verdieping_code
           || '-'
           || r.alg_ruimte_nr
           || ' '
           || r.alg_ruimte_omschrijving,
           r.alg_ruimte_verwijder
      FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
     WHERE     g.alg_locatie_key = 1
           AND v.alg_gebouw_key = g.alg_gebouw_key
           AND r.alg_verdieping_key = v.alg_verdieping_key;

CREATE OR REPLACE VIEW AKZO_V_KOSTENPLAATS
(
    PRS_KOSTENPLAATS_KEY,
    PRS_KOSTENPLAATS_OMSCHRIJVING,
    PRS_KOSTENPLAATS_VERWIJDER
)
AS
    SELECT prs_kostenplaats_key,
           prs_kostenplaats_upper || ' - ' || prs_kostenplaats_omschrijving,
           prs_kostenplaats_verwijder
      FROM prs_kostenplaats kp;

---------- Rittenadministratie ----------
-----------------------------------------

CREATE OR REPLACE VIEW AKZO_V_RIT_TARIEFGROEP
AS
    SELECT fac_usrdata_key                                     akzo_v_rit_tariefgroep_key,
           fac_usrdata_code                                    akzo_v_rit_tariefgroep_naam,
           fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr,
                                             1,
                                               INSTR (fac_usrdata_omschr,
                                                      '-',
                                                      1,
                                                      1)
                                             - 1)))            c_tarief,
           fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr,
                                               INSTR (fac_usrdata_omschr,
                                                      '-',
                                                      1,
                                                      1)
                                             + 1,
                                               INSTR (fac_usrdata_omschr,
                                                      '-',
                                                      1,
                                                      2)
                                             - 1
                                             - INSTR (fac_usrdata_omschr,
                                                      '-',
                                                      1,
                                                      1))))    km_tarief,
           fac.safe_to_number (TRIM (SUBSTR (fac_usrdata_omschr,
                                               INSTR (fac_usrdata_omschr,
                                                      '-',
                                                      1,
                                                      2)
                                             + 1)))            uur_tarief
      FROM fac_usrdata
     WHERE     fac_usrtab_key = 81
           AND fac_usrdata_volgnr > 0
           AND fac_usrdata_verwijder IS NULL;

CREATE OR REPLACE VIEW AKZO_V_RIT_ADRES
(
    MLD_ADRES_KEY,
    MLD_ADRES_NAAM,
    MLD_ADRES_UPPER,
    MLD_ADRES_BEZOEK_ADRES,
    MLD_ADRES_BEZOEK_PLAATS,
    MLD_ADRES_PLAATS_ADRES_NAAM
)
AS
    SELECT mld_adres_key,
           mld_adres_naam,
           mld_adres_upper,
           mld_adres_bezoek_adres,
           mld_adres_bezoek_plaats,
              mld_adres_bezoek_plaats
           || ', '
           || mld_adres_bezoek_adres
           || DECODE (SUBSTR (mld_adres_naam, 1, 5),
                      SUBSTR (mld_adres_bezoek_plaats, 1, 5), '',
                      ', ' || mld_adres_naam)    mld_adres_plaats_adres_naam
      FROM mld_adres
     WHERE mld_adres_verwijder IS NULL;

CREATE OR REPLACE VIEW AKZO_V_RITTEN_RESERVERING_GEG
(
    RES_RESERVERING_KEY,
    RES_RSV_RUIMTE_KEY,
    RES_RSV_RUIMTE_VOLGNR,
    CHAUFFEUR,
    OMSCHRIJVING,
    OPMERKING,
    AUTO,
    DATUM_VAN,
    TIJD_VAN,
    DATUM_TOT,
    TIJD_TOT,
    GASTHEERVROUW,
    PRS_PERSLID_KEY,
    PRS_AFDELING_NAAM,
    PRS_KOSTENPLAATS_NR,
    PRS_KOSTENPLAATS_OMSCHRIJVING
)
AS
    SELECT res.res_reservering_key,
           ruim.res_rsv_ruimte_key,
           ruim.res_rsv_ruimte_volgnr,
           chauf.res_ruimte_nr
               AS chauffeur,
           ruim.res_rsv_ruimte_omschrijving
               AS omschrijving,
           ruim.res_rsv_ruimte_opmerking
               AS opmerking,
           auto.ins_deel_omschrijving
               AS auto,
           ruim.res_rsv_ruimte_van
               datum_van,
           TO_CHAR (ruim.res_rsv_ruimte_van, 'HH24:MI')
               tijd_van,
           ruim.res_rsv_ruimte_tot
               datum_tot,
           TO_CHAR (ruim.res_rsv_ruimte_tot, 'HH24:MI')
               tijd_tot,
              p.prs_perslid_naam
           || DECODE (COALESCE (p.prs_perslid_voorletters, ''),
                      '', '',
                      ', ' || p.prs_perslid_voorletters)
           || DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''),
                      '', '',
                      ' ' || p.prs_perslid_tussenvoegsel)
           || DECODE (COALESCE (p.prs_perslid_voornaam, ''),
                      '', '',
                      ' (' || p.prs_perslid_voornaam || ')')
               gastheervrouw,
           p.prs_perslid_key,
           afd.prs_afdeling_naam,
           kpl.prs_kostenplaats_nr,
           kpl.prs_kostenplaats_omschrijving
      FROM res_v_aanwezigreservering  res,
           res_v_aanwezigrsv_ruimte   ruim,
           res_v_aanwezigrsv_deel     deel,
           (SELECT INS_DI.ins_discipline_key,
                   INS_SG.ins_srtgroep_key,
                   INS_SD.ins_srtdeel_key,
                      INS_SD.ins_srtdeel_code
                   || ' - '
                   || INS_SD.ins_srtdeel_omschrijving,
                   INS_DE.ins_alg_locatie_key,
                   INS_AO.alg_gebouw_key,
                   INS_AO.alg_verdieping_key,
                   INS_AO.alg_ruimte_key,
                   INS_AO.prs_werkplek_key,
                   INS_AO.alg_terreinsector_key,
                   INS_AO.alg_plaatsaanduiding,
                   INS_DE.ins_deel_key,
                   INS_DE.ins_deel_omschrijving,
                   RES_DE.res_deel_key,
                   RES_DE.res_deel_eenheid,
                   RES_DE.res_deel_prijs,
                   DECODE (RES_DE.res_deel_key, NULL, 0, 1)
              FROM ins_v_aanwezigdeel   INS_DE,
                   ins_tab_discipline   INS_DI,
                   ins_v_alg_overzicht  INS_AO,
                   ins_srtdeel          INS_SD,
                   ins_srtgroep         INS_SG,
                   res_v_aanwezigdeel   RES_DE
             WHERE     INS_DE.ins_deel_key = RES_DE.res_ins_deel_key(+)
                   AND INS_DE.ins_deel_module = 'INS'
                   AND INS_DE.ins_deel_parent_key IS NULL
                   AND INS_AO.alg_onroerendgoed_keys =
                       INS_DE.ins_alg_ruimte_key
                   AND INS_AO.alg_onroerendgoed_type =
                       INS_DE.ins_alg_ruimte_type
                   AND INS_AO.alg_locatie_key = INS_DE.ins_alg_locatie_key
                   AND INS_SD.ins_srtdeel_key = INS_DE.ins_srtdeel_key
                   AND INS_SG.ins_srtgroep_key = INS_SD.ins_srtgroep_key
                   AND INS_DI.ins_discipline_key = INS_DE.ins_discipline_key
                   AND INS_DE.ins_discipline_key IN
                           (SELECT ins_discipline_key FROM ins_discipline))
           auto,
           res_ruimte_opstelling      opstel,
           res_ruimte                 chauf,
           prs_perslid                p,
           prs_afdeling               afd,
           prs_kostenplaats           kpl
     WHERE     res.res_reservering_key = ruim.res_reservering_key
           AND ruim.res_rsv_ruimte_key = deel.res_rsv_ruimte_key(+)
           AND deel.res_deel_key = auto.res_deel_key(+)
           AND ruim.res_ruimte_opstel_key = opstel.res_ruimte_opstel_key
           AND opstel.res_ruimte_key = chauf.res_ruimte_key
           AND p.prs_perslid_key = ruim.res_rsv_ruimte_host_key
           AND p.prs_afdeling_key = afd.prs_afdeling_key
           AND ruim.prs_kostenplaats_key = kpl.prs_kostenplaats_key(+)
           -- activiteit Rit
           AND ruim.res_activiteit_key = 210;

CREATE OR REPLACE VIEW AKZO_V_RITTEN_RAPPORTAGE
(
    RES_RESERVERING_KEY,
    RES_RSV_RUIMTE_VOLGNR,
    RES_RSV_RUIMTE_KEY,
    CHAUFFEUR,
    OMSCHRIJVING,
    OPMERKING,
    AUTO,
    DATUM_VAN,
    TIJD_VAN,
    DATUM_TOT,
    TIJD_TOT,
    PRS_PERSLID_KEY,
    GASTHEERVROUW,
    PRS_AFDELING_NAAM,
    PRS_KOSTENPLAATS_NR,
    PRS_KOSTENPLAATS_OMSCHRIJVING,
    AFWIJKEND_VAN_TIJD,
    VIA_TIJD,
    AFWIJKEND_TOT_TIJD,
    STANDAARD_VAN,
    STANDAARD_VAN_PLAATSNAAM,
    AFWIJKEND_VAN_PLAATS,
    AFWIJKEND_VAN_ADRES,
    STANDAARD_VIA,
    STANDAARD_VIA_PLAATSNAAM,
    AFWIJKEND_VIA_PLAATS,
    AFWIJKEND_VIA_ADRES,
    STANDAARD_NAAR,
    STANDAARD_NAAR_PLAATSNAAM,
    AFWIJKEND_NAAR_PLAATS,
    AFWIJKEND_NAAR_ADRES,
    CHAUFF_VAN_TIJD,
    CHAUFF_TOT_TIJD,
    CHAUFF_KM,
    DOORBELAST_UREN,
    DOORBELAST_KM
)
AS
    SELECT ritres.res_reservering_key,
           ritres.res_rsv_ruimte_volgnr,
           ritres.res_rsv_ruimte_key,
           ritres.chauffeur,
           ritres.omschrijving,
           ritres.opmerking,
           ritres.auto,
           ritres.datum_van,
           ritres.tijd_van,
           ritres.datum_tot,
           ritres.tijd_tot,
           ritres.prs_perslid_key,
           ritres.gastheervrouw,
           ritres.prs_afdeling_naam,
           ritres.prs_kostenplaats_nr,
           ritres.prs_kostenplaats_omschrijving,
           -- 'Vertrektijd (afwijkend)'
           (SELECT fd.fac_usrdata_omschr
              FROM fac_usrdata fd, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 88
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       fd.fac_usrdata_key)         afwijkend_van_tijd,
           -- 'Via-tijd'
           (SELECT fd.fac_usrdata_omschr
              FROM fac_usrdata fd, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 94
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       fd.fac_usrdata_key)         via_tijd,
           -- 'Aankomsttijd (afwijkend)'
           (SELECT fd.fac_usrdata_omschr
              FROM fac_usrdata fd, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 100
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       fd.fac_usrdata_key)         afwijkend_tot_tijd,
           -- 'Standaard vertrekplaats'
           (SELECT van.mld_adres_plaats_adres_naam
              FROM res_kenmerkwaarde k, akzo_v_rit_adres van
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 83
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       van.mld_adres_key)          standaard_van,
           -- 'Standaard vertrekplaats'
           (SELECT van.mld_adres_bezoek_plaats
              FROM res_kenmerkwaarde k, akzo_v_rit_adres van
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 83
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       van.mld_adres_key)          standaard_van_plaatsnaam,
           -- 'Vertrekplaatsnaam (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 86)     afwijkend_van_plaats,
           -- 'Vertrekadres (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 87)     afwijkend_van_adres,
           -- 'Standaard via-adres'
           (SELECT van.mld_adres_plaats_adres_naam
              FROM res_kenmerkwaarde k, akzo_v_rit_adres van
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 90
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       van.mld_adres_key)          standaard_via,
           -- 'Standaard via-adres'
           (SELECT van.mld_adres_bezoek_plaats
              FROM res_kenmerkwaarde k, akzo_v_rit_adres van
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 90
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       van.mld_adres_key)          standaard_via_plaatsnaam,
           -- 'Via-plaatsnaam (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 92)     afwijkend_via_plaats,
           -- 'Via-adres (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 93)     afwijkend_via_adres,
           -- 'Standaard aankomstplaats'
           (SELECT naar.mld_adres_plaats_adres_naam
              FROM akzo_v_rit_adres naar, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 96
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       naar.mld_adres_key)         standaard_naar,
           -- 'Standaard aankomstplaats'
           (SELECT naar.mld_adres_bezoek_plaats
              FROM akzo_v_rit_adres naar, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 96
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       naar.mld_adres_key)         standaard_naar_plaatsnaam,
           -- 'Aankomstplaatsnaam (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 98)     afwijkend_naar_plaats,
           -- 'Aankomstadres (afwijkend)'
           (SELECT k.res_kenmerkreservering_waarde
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 99)     afwijkend_naar_adres,
           -- 'Vertrektijd (werkelijk)'
           (SELECT fd.fac_usrdata_omschr
              FROM fac_usrdata fd, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 103
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       fd.fac_usrdata_key)         chauff_van_tijd,
           -- 'Aankomsttijd (werkelijk)'
           (SELECT fd.fac_usrdata_omschr
              FROM fac_usrdata fd, res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 104
                   AND fac.safe_to_number (k.res_kenmerkreservering_waarde) =
                       fd.fac_usrdata_key)         chauff_tot_tijd,
           -- 'Gereden km'
           (SELECT fac.safe_to_number (
                       REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 105)    chauff_km,
           -- 'Aantal uren'
           (SELECT fac.safe_to_number (
                       REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 108)    doorbelast_uren,
           -- 'Aantal km'
           (SELECT fac.safe_to_number (
                       REPLACE (k.res_kenmerkreservering_waarde, ',', '.'))
              FROM res_kenmerkwaarde k
             WHERE     k.res_rsv_ruimte_key = ritres.res_rsv_ruimte_key
                   AND k.res_kenmerk_key = 107)    doorbelast_km
      FROM akzo_v_ritten_reservering_geg ritres;

CREATE OR REPLACE VIEW AKZO_V_RIT_GEPLANDE_RITTEN
(
    DATUM,
    DAG,
    STARTTIJD,
    VIATIJD,
    TOTTIJD,
    VAN,
    VIA,
    NAAR,
    FCLT_F_OPDRACHTGEVER,
    FCLT_F_CHAUFFEUR,
    FCLT_F_AUTO,
    TOELICHTINGEN,
    HIDE_F_RESERVERINGKEY,
    HIDE_F_RESERVERINGVOLGNR,
    HIDE_F_GASTHEERVROUW,
    FCLT_F_KOSTENPLAATS,
    HIDE_F_AFDELING
)
AS
    SELECT datum_van
               datum,
           DECODE (TO_CHAR (datum_van, 'D'),
                   1, 'Zondag',
                   2, 'Maandag',
                   3, 'Dinsdag',
                   4, 'Woensdag',
                   5, 'Donderdag',
                   6, 'Vrijdag',
                   7, 'Zaterdag',
                   '')
               AS Dag,
           COALESCE (chauff_van_tijd, afwijkend_van_tijd, tijd_van)
               AS Starttijd,
           via_tijd
               AS Viatijd,
           COALESCE (chauff_tot_tijd, afwijkend_tot_tijd, tijd_tot)
               AS Tottijd,
           DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres,
                   ', ', standaard_van,
                   afwijkend_van_plaats || ', ' || afwijkend_van_adres)
               AS Van,
           DECODE (afwijkend_via_plaats || ', ' || afwijkend_via_adres,
                   ', ', standaard_via,
                   afwijkend_via_plaats || ', ' || afwijkend_via_adres)
               AS Via,
           DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres,
                   ', ', standaard_naar,
                   afwijkend_naar_plaats || ', ' || afwijkend_naar_adres)
               AS Naar,
           prs_afdeling_naam
               AS fclt_f_Opdrachtgever,
           chauffeur
               AS fclt_f_chauffeur,
           auto
               AS fclt_f_auto,
           opmerking
               AS Toelichtingen,
           res_reservering_key
               AS hide_f_reserveringkey,
           res_rsv_ruimte_volgnr
               AS hide_f_reserveringvolgnr,
           gastheervrouw
               AS hide_f_gastheervrouw,
           prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
               AS fclt_f_kostenplaats,
           prs_afdeling_naam
               AS hide_f_afdeling
      FROM akzo_v_ritten_rapportage;

CREATE OR REPLACE VIEW AKZO_V_RIT_GEPLANDE_RITTEN
(
    DATUM,
    DAG,
    STARTTIJD,
    VIATIJD,
    TOTTIJD,
    VAN,
    VIA,
    NAAR,
    FCLT_F_OPDRACHTGEVER,
    FCLT_F_CHAUFFEUR,
    FCLT_F_AUTO,
    TOELICHTINGEN,
    HIDE_F_RESERVERINGKEY,
    HIDE_F_RESERVERINGVOLGNR,
    HIDE_F_GASTHEERVROUW,
    FCLT_F_KOSTENPLAATS,
    HIDE_F_AFDELING
)
AS
    SELECT datum_van
               datum,
           DECODE (TO_CHAR (datum_van, 'D'),
                   1, 'Zondag',
                   2, 'Maandag',
                   3, 'Dinsdag',
                   4, 'Woensdag',
                   5, 'Donderdag',
                   6, 'Vrijdag',
                   7, 'Zaterdag',
                   '')
               AS Dag,
           COALESCE (chauff_van_tijd, afwijkend_van_tijd, tijd_van)
               AS Starttijd,
           via_tijd
               AS Viatijd,
           COALESCE (chauff_tot_tijd, afwijkend_tot_tijd, tijd_tot)
               AS Tottijd,
           DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres,
                   ', ', standaard_van,
                   afwijkend_van_plaats || ', ' || afwijkend_van_adres)
               AS Van,
           DECODE (afwijkend_via_plaats || ', ' || afwijkend_via_adres,
                   ', ', standaard_via,
                   afwijkend_via_plaats || ', ' || afwijkend_via_adres)
               AS Via,
           DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres,
                   ', ', standaard_naar,
                   afwijkend_naar_plaats || ', ' || afwijkend_naar_adres)
               AS Naar,
           prs_afdeling_naam
               AS fclt_f_Opdrachtgever,
           chauffeur
               AS fclt_f_chauffeur,
           auto
               AS fclt_f_auto,
           opmerking
               AS Toelichtingen,
           res_reservering_key
               AS hide_f_reserveringkey,
           res_rsv_ruimte_volgnr
               AS hide_f_reserveringvolgnr,
           gastheervrouw
               AS hide_f_gastheervrouw,
           prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
               AS fclt_f_kostenplaats,
           prs_afdeling_naam
               AS hide_f_afdeling
      FROM akzo_v_ritten_rapportage;

CREATE OR REPLACE VIEW AKZO_V_RIT_KM_SPEC
(
    FCLT_F_CHAUFFEUR,
    FCLT_F_VOERTUIG,
    DAG,
    DATUM,
    VERTREK,
    AANKOMST,
    FCLT_F_OPDRACHTGEVER,
    VAN,
    NAAR,
    KILOMETERS
)
AS
    SELECT chauffeur
               AS fclt_f_chauffeur,
           auto
               AS fclt_f_voertuig,
           DECODE (TO_CHAR (datum_van, 'D'),
                   1, 'Zondag',
                   2, 'Maandag',
                   3, 'Dinsdag',
                   4, 'Woensdag',
                   5, 'Donderdag',
                   6, 'Vrijdag',
                   7, 'Zaterdag',
                   '')
               AS Dag,
           datum_van
               datum,
           chauff_van_tijd
               AS Vertrek,
           chauff_tot_tijd
               AS Aankomst,
           prs_afdeling_naam
               AS fclt_f_Opdrachtgever,
           DECODE (afwijkend_van_plaats || ', ' || afwijkend_van_adres,
                   ', ', standaard_van,
                   afwijkend_van_plaats || ', ' || afwijkend_van_adres)
               AS Van,
           DECODE (afwijkend_naar_plaats || ', ' || afwijkend_naar_adres,
                   ', ', standaard_naar,
                   afwijkend_naar_plaats || ', ' || afwijkend_naar_adres)
               AS Naar,
           TO_NUMBER (chauff_km)
               AS Kilometers
      FROM akzo_v_ritten_rapportage;

CREATE OR REPLACE VIEW AKZO_V_RITTEN_DOORBELASTING
(
    RES_RESERVERING_KEY,
    RES_RSV_RUIMTE_VOLGNR,
    RES_RSV_RUIMTE_KEY,
    STATUS,
    TARIEFGROEP,
    C_TARIEF,
    KM_TARIEF,
    UUR_TARIEF
)
AS
    SELECT res.res_reservering_key,
           ruim.res_rsv_ruimte_volgnr,
           ruim.res_rsv_ruimte_key,
           stat.res_status_bo_omschrijving           status,
           tariefgrp.akzo_v_rit_tariefgroep_naam     tariefgroep,
           tariefgrp.c_tarief,
           tariefgrp.km_tarief,
           tariefgrp.uur_tarief
      FROM res_v_aanwezigreservering  res,
           res_v_aanwezigrsv_ruimte   ruim,
           res_status_bo              stat,
           akzo_v_rit_tariefgroep     tariefgrp,
           res_kenmerkwaarde          k_tariefgrp
     WHERE     res.res_reservering_key = ruim.res_reservering_key
           AND ruim.res_status_bo_key = stat.res_status_bo_key
           -- key van kenmerk Tariefgroep
           AND k_tariefgrp.res_kenmerk_key = 109
           AND fac.safe_to_number (k_tariefgrp.res_kenmerkreservering_waarde) =
               tariefgrp.akzo_v_rit_tariefgroep_key
           AND ruim.res_rsv_ruimte_key = k_tariefgrp.res_rsv_ruimte_key
           -- key van activiteit Rit
           AND ruim.res_activiteit_key = 210;

CREATE OR REPLACE VIEW AKZO_V_RITTEN_ALL_DOORBELAST
(
    RES_RESERVERING_KEY,
    RES_RSV_RUIMTE_VOLGNR,
    RES_RSV_RUIMTE_KEY,
    CHAUFFEUR,
    OMSCHRIJVING,
    OPMERKING,
    AUTO,
    DATUM_VAN,
    TIJD_VAN,
    DATUM_TOT,
    TIJD_TOT,
    PRS_PERSLID_KEY,
    GASTHEERVROUW,
    PRS_AFDELING_NAAM,
    PRS_KOSTENPLAATS_NR,
    PRS_KOSTENPLAATS_OMSCHRIJVING,
    AFWIJKEND_VAN_TIJD,
    VIA_TIJD,
    AFWIJKEND_TOT_TIJD,
    STANDAARD_VAN,
    STANDAARD_VAN_PLAATSNAAM,
    AFWIJKEND_VAN_PLAATS,
    AFWIJKEND_VAN_ADRES,
    STANDAARD_VIA,
    STANDAARD_VIA_PLAATSNAAM,
    AFWIJKEND_VIA_PLAATS,
    AFWIJKEND_VIA_ADRES,
    STANDAARD_NAAR,
    STANDAARD_NAAR_PLAATSNAAM,
    AFWIJKEND_NAAR_PLAATS,
    AFWIJKEND_NAAR_ADRES,
    CHAUFF_VAN_TIJD,
    CHAUFF_TOT_TIJD,
    CHAUFF_KM,
    DOORBELAST_UREN,
    DOORBELAST_KM,
    STATUS,
    TARIEFGROEP,
    C_TARIEF,
    KM_TARIEF,
    UUR_TARIEF,
    TOTAAL
)
AS
    SELECT rit_rap."RES_RESERVERING_KEY",
           rit_rap."RES_RSV_RUIMTE_VOLGNR",
           rit_rap."RES_RSV_RUIMTE_KEY",
           rit_rap."CHAUFFEUR",
           rit_rap."OMSCHRIJVING",
           rit_rap."OPMERKING",
           rit_rap."AUTO",
           rit_rap."DATUM_VAN",
           rit_rap."TIJD_VAN",
           rit_rap."DATUM_TOT",
           rit_rap."TIJD_TOT",
           rit_rap."PRS_PERSLID_KEY",
           rit_rap."GASTHEERVROUW",
           rit_rap."PRS_AFDELING_NAAM",
           rit_rap."PRS_KOSTENPLAATS_NR",
           rit_rap."PRS_KOSTENPLAATS_OMSCHRIJVING",
           rit_rap."AFWIJKEND_VAN_TIJD",
           rit_rap."VIA_TIJD",
           rit_rap."AFWIJKEND_TOT_TIJD",
           rit_rap."STANDAARD_VAN",
           rit_rap."STANDAARD_VAN_PLAATSNAAM",
           rit_rap."AFWIJKEND_VAN_PLAATS",
           rit_rap."AFWIJKEND_VAN_ADRES",
           rit_rap."STANDAARD_VIA",
           rit_rap."STANDAARD_VIA_PLAATSNAAM",
           rit_rap."AFWIJKEND_VIA_PLAATS",
           rit_rap."AFWIJKEND_VIA_ADRES",
           rit_rap."STANDAARD_NAAR",
           rit_rap."STANDAARD_NAAR_PLAATSNAAM",
           rit_rap."AFWIJKEND_NAAR_PLAATS",
           rit_rap."AFWIJKEND_NAAR_ADRES",
           rit_rap."CHAUFF_VAN_TIJD",
           rit_rap."CHAUFF_TOT_TIJD",
           rit_rap."CHAUFF_KM",
           rit_rap."DOORBELAST_UREN",
           rit_rap."DOORBELAST_KM",
           rit_doorb.status,
           rit_doorb.tariefgroep,
           rit_doorb.c_tarief,
           rit_doorb.km_tarief,
           rit_doorb.uur_tarief,
           ROUND (
               (  rit_doorb.c_tarief
                + (  rit_doorb.km_tarief
                   * COALESCE (fac.safe_to_number (rit_rap.doorbelast_km), 0))
                + (  rit_doorb.uur_tarief
                   * COALESCE (fac.safe_to_number (rit_rap.doorbelast_uren),
                               0))),
               2)    AS totaal
      FROM akzo_v_ritten_rapportage     rit_rap,
           akzo_v_ritten_doorbelasting  rit_doorb
     WHERE rit_rap.res_rsv_ruimte_key = rit_doorb.res_rsv_ruimte_key(+);

CREATE OR REPLACE VIEW AKZO_V_RIT_KOSTENOVERZICHT
(
    CODE,
    DATUM,
    VAN,
    NAAR,
    FCLT_F_CHAUFFEUR,
    FCLT_F_VOERTUIG,
    FCLT_F_OPDRACHTGEVER,
    KM,
    UREN,
    STATUS,
    TARIEFGROEP,
    TOTAAL
)
AS
    SELECT TO_CHAR (res_reservering_key)
               AS Code,
           datum_van
               datum,
           COALESCE (afwijkend_van_plaats, standaard_van_plaatsnaam)
               AS Van,
           COALESCE (afwijkend_naar_plaats, standaard_naar_plaatsnaam)
               AS Naar,
           chauffeur
               AS fclt_f_chauffeur,
           auto
               AS fclt_f_voertuig,
           prs_afdeling_naam
               AS fclt_f_Opdrachtgever,
           fac.safe_to_number (doorbelast_km)
               AS Km,
           fac.safe_to_number (doorbelast_uren)
               AS Uren,
           status,
           tariefgroep,
           totaal
      FROM akzo_v_ritten_all_doorbelast;

----- Einde rittenadministratie ---------
-----------------------------------------

CREATE OR REPLACE VIEW AKZO_V_RAP_MIJN_WP_RESERVERING
(
    RES_RSV_RUIMTE_HOST_KEY,
    RES_RSV_RUIMTE_VAN,
    RES_RSV_RUIMTE_TOT,
    ALG_LOCATIE_OMSCHRIJVING,
    ALG_GEBOUW_OMSCHRIJVING,
    ALG_VERDIEPING_OMSCHRIJVING,
    ALG_RUIMTE_NR,
    RES_DEEL_OMSCHRIJVING,
    ALG_RUIMTE_AANDUIDING,
    RES_RSV_RUIMTE_KEY
)
AS
    SELECT rrr.res_rsv_ruimte_host_key,
           rrr.res_rsv_ruimte_van,
           rrr.res_rsv_ruimte_tot,
           rg.alg_locatie_omschrijving,
           rg.alg_gebouw_omschrijving,
           rg.alg_verdieping_omschrijving,
           rg.alg_ruimte_nr,
           rd.res_deel_omschrijving,
           rg.alg_ruimte_aanduiding,
           rrr.res_rsv_ruimte_key
      FROM res_rsv_ruimte         rrr,
           res_rsv_deel           rrd,
           res_deel               rd,
           alg_v_ruimte_gegevens  rg
     WHERE     rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
           AND rrd.res_deel_key = rd.res_deel_key
           AND rrr.alg_ruimte_key = rg.alg_ruimte_key
           AND rrr.res_activiteit_key = 230
           AND rrr.res_rsv_ruimte_verwijder IS NULL
           AND rrd.res_rsv_deel_verwijder IS NULL
           AND rrr.res_rsv_ruimte_van > = TRUNC (SYSDATE);

CREATE OR REPLACE VIEW AKZO_V_AFD_AMSTERDAM
(
    prs_afdeling_key,
    prs_afdeling_omschrijving,
    prs_afdeling_verwijder
)
AS
    SELECT prs_afdeling_key,
           prs_afdeling_omschrijving,
           prs_afdeling_verwijder
      FROM prs_afdeling a, prs_kostenplaats kp
     WHERE     kp.prs_kostenplaats_key = a.prs_kostenplaats_key
           AND kp.prs_kostenplaats_nr = '00000';
           
CREATE OR REPLACE VIEW akzo_v_perslid_names
(
    prs_perslid_key,
    prs_afdeling_naam,
    prs_afdeling_omschrijving,
    prs_perslid_functie,
    prs_perslid_naam_full,
    prs_perslid_naam_friendly
)
AS
    SELECT p.prs_perslid_key,
           prs_a.prs_afdeling_naam,
           prs_a.prs_afdeling_omschrijving,
           prs_s.prs_srtperslid_omschrijving,
              prs_perslid_naam
           || DECODE (p.prs_perslid_voorletters,
                      NULL, '',
                      ', ' || p.prs_perslid_voorletters)
           || DECODE (p.prs_perslid_tussenvoegsel,
                      NULL, '',
                      ' ' || p.prs_perslid_tussenvoegsel)
           || DECODE (p.prs_perslid_voornaam,
                      NULL, '',
                      ' (' || p.prs_perslid_voornaam || ')')
               prs_perslid_naam_full,
              DECODE (p.prs_perslid_voornaam,
                      NULL, '',
                      p.prs_perslid_voornaam || ' ')
           || DECODE (p.prs_perslid_tussenvoegsel,
                      NULL, '',
                      p.prs_perslid_tussenvoegsel || ' ')
           || prs_perslid_naam
           || ' - '
           || prs_a.prs_afdeling_omschrijving
           || ' ('
           || prs_a.prs_afdeling_naam
           || ')'
               prs_perslid_naam_friendly
      FROM prs_v_aanwezigperslid p, prs_afdeling prs_a, prs_srtperslid prs_s
     WHERE     p.prs_afdeling_key = prs_a.prs_afdeling_key
           AND p.prs_srtperslid_key = prs_s.prs_srtperslid_key;        

CREATE OR REPLACE VIEW AKZO_V_NOTI_AANVR_CAT
(
    CODE,
    SENDER,
    RECEIVER,
    TEXT,
    KEY,
    XKEY,
    XEMAIL,
    XMOBILE
)
AS
    SELECT sn.fac_srtnotificatie_code,
           3,                                               --- Facilitor
           NULL                                             receiver,
              'Reservering '
           || res.res_reservering_key
           || '/'
           || rrr.res_rsv_ruimte_volgnr
           || ' bevat een aanvraag voor een buffetlunch'    text,
           res.res_reservering_key                          key,
           rra.res_rsv_ruimte_key                           xkey,
           'rest.sassenheim@akzonobel.com'                  xemail,
           NULL                                             xmobile
      FROM res_v_aanwezigrsv_artikel  rra,
           res_artikel                ra,
           ins_tab_discipline         c,
           fac_srtnotificatie         sn,
           res_reservering            res,
           res_v_aanwezigrsv_ruimte   rrr,
           fac_notificatie_job        nj
     WHERE     rra.res_artikel_key = ra.res_artikel_key
           AND ra.res_discipline_key = c.ins_discipline_key
           AND c.ins_discipline_key = 264
           AND sn.fac_srtnotificatie_code = 'CUST03'
           AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key(+)
           AND rrr.res_reservering_key = res.res_reservering_key
           AND UPPER (fac_notificatie_job_view) = 'AKZO_V_NOTI_AANVR_CAT'
           AND (   (    rra.res_rsv_artikel_aanmaak >
                        nj.fac_notificatie_job_lastrun
                    AND rra.res_rsv_artikel_aanmaak <
                        nj.fac_notificatie_job_nextrun)
                OR nj.fac_notificatie_job_lastrun IS NULL);
                           
------ 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