-- Script containing customer generic configuration sql statements for all DCOL accounts
-- $Revision$
-- $Id$
--

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

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

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

CREATE OR REPLACE VIEW dcol_v_rap_import_log
(
   fclt_f_applicatie,
   datum,
   fclt_f_status,
   omschrijving,
   hint
)
AS
   SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
          imp_log_datum,
          imp_log_status,
          imp_log_omschrijving,
          imp_log_hint
     FROM imp_log il, fac_import fi, fac_import_app fia
    WHERE il.fac_import_key = fi.fac_import_key(+)
          AND fi.fac_import_app_key = fia.fac_import_app_key(+);

/* Formatted on 16-6-2014 21:48:12 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE dcol_import_bedrijf (p_import_key IN NUMBER)
AS
   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
BEGIN
   fac_import_ext_bedrijf (p_import_key);
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        v_errormsg,
                        'Inleesproces relaties afgebroken!');
END dcol_import_bedrijf;
/

CREATE OR REPLACE PROCEDURE dcol_update_bedrijf (p_import_key IN NUMBER)
AS
   v_errormsg       VARCHAR2 (1000) := '-';
   v_errorhint      VARCHAR2 (1000) := '-';
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
   v_count          NUMBER (10);
   v_count_tot      NUMBER (10);
   v_count_new      NUMBER (10);
   v_count_upd      NUMBER (10);
   v_count_del      NUMBER (10);
   v_aanduiding     VARCHAR2 (200) := '-';

   -- SUBPROC
   PROCEDURE add_bedrijf (p_import_key IN NUMBER)
   AS
      CURSOR c1
      IS
         SELECT *
           FROM fac_imp_ext_bedrijf ib
          WHERE NOT EXISTS
                   (SELECT 1
                      FROM fac_imp_ext_bedrijf
                     WHERE UPPER (prs_bedrijf_naam) =
                              UPPER (ib.prs_bedrijf_naam)
                           AND prs_leverancier_nr < ib.prs_leverancier_nr);

      v_bedrijf_key   NUMBER (10);
   BEGIN
      v_count_tot := 0;
      v_count_new := 0;
      v_count_upd := 0;

      FOR rec IN c1
      LOOP
         BEGIN
            v_count_tot := v_count_tot + 1;
            v_aanduiding :=
                  '['
               || rec.prs_bedrijf_naam
               || '|'
               || rec.prs_leverancier_nr
               || '] ';

            v_errorhint := 'Fout bepalen bedrijf';

            IF rec.prs_leverancier_nr IS NULL
            THEN
               fac.imp_writelog (
                  p_import_key,
                  'W',
                  v_aanduiding || 'Leveranciernummer ongedefinieerd!',
                  v_errorhint);
               COMMIT;
            ELSE
               SELECT COUNT ( * )
                 INTO v_count
                 FROM prs_v_aanwezigbedrijf
                WHERE UPPER (prs_leverancier_nr) =
                         UPPER (rec.prs_leverancier_nr);

               IF v_count = 0
               THEN
                  v_errorhint := 'Fout toevoegen bedrijf';

                  INSERT INTO prs_bedrijf (prs_bedrijf_naam,
                                           prs_leverancier_nr,
                                           prs_bedrijf_bezoek_adres,
                                           prs_bedrijf_bezoek_postcode,
                                           prs_bedrijf_bezoek_plaats,
                                           prs_bedrijf_bezoek_land,
                                           prs_bedrijf_post_adres,
                                           prs_bedrijf_post_postcode,
                                           prs_bedrijf_post_plaats,
                                           prs_bedrijf_post_land,
                                           prs_bedrijf_telefoon,
                                           prs_bedrijf_fax,
                                           prs_bedrijf_email,
                                           prs_bedrijf_contact_persoon,
                                           prs_bedrijf_contact_telefoon,
                                           prs_bedrijf_contact_fax,
                                           prs_bedrijf_leverancier,
                                           prs_bedrijf_uitvoerende,
                                           prs_bedrijf_contract,
                                           prs_bedrijf_huurder,
                                           prs_bedrijf_ingids,
                                           prs_bedrijf_uurloon,
                                           prs_overeenkomst_nr,
                                           prs_overeenkomst_datum,
                                           prs_bedrijf_opmerking)
                      VALUES (rec.prs_bedrijf_naam,
                              rec.prs_leverancier_nr,
                              rec.prs_bedrijf_bezoek_adres,
                              rec.prs_bedrijf_bezoek_postcode,
                              rec.prs_bedrijf_bezoek_plaats,
                              rec.prs_bedrijf_bezoek_land,
                              rec.prs_bedrijf_post_adres,
                              rec.prs_bedrijf_post_postcode,
                              rec.prs_bedrijf_post_plaats,
                              rec.prs_bedrijf_post_land,
                              rec.prs_bedrijf_telefoon,
                              rec.prs_bedrijf_fax,
                              rec.prs_bedrijf_email,
                              rec.prs_bedrijf_contact_persoon,
                              rec.prs_bedrijf_contact_telefoon,
                              rec.prs_bedrijf_contact_fax,
                              DECODE (rec.prs_bedrijf_leverancier,
                                      1, 1,
                                      NULL),
                              DECODE (rec.prs_bedrijf_uitvoerende,
                                      1, 1,
                                      NULL),
                              DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
                              DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
                              DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
                              rec.prs_bedrijf_uurloon,
                              rec.prs_overeenkomst_nr,
                              rec.prs_overeenkomst_datum,
                              rec.prs_bedrijf_opmerking);

                  v_count_new := v_count_new + 1;
               ELSE                                             -- v_count > 0
                  SELECT prs_bedrijf_key
                    INTO v_bedrijf_key
                    FROM prs_v_aanwezigbedrijf
                   WHERE UPPER (prs_leverancier_nr) =
                            UPPER (rec.prs_leverancier_nr);

                  v_errorhint := 'Fout bijwerken bedrijf';

                  UPDATE prs_bedrijf
                     SET prs_bedrijf_naam =
                            COALESCE (rec.prs_bedrijf_naam, prs_bedrijf_naam),
                         prs_bedrijf_bezoek_adres =
                            COALESCE (rec.prs_bedrijf_bezoek_adres,
                                      prs_bedrijf_bezoek_adres),
                         prs_bedrijf_bezoek_postcode =
                            COALESCE (rec.prs_bedrijf_bezoek_postcode,
                                      prs_bedrijf_bezoek_postcode),
                         prs_bedrijf_bezoek_plaats =
                            COALESCE (rec.prs_bedrijf_bezoek_plaats,
                                      prs_bedrijf_bezoek_plaats),
                         prs_bedrijf_bezoek_land =
                            COALESCE (rec.prs_bedrijf_bezoek_land,
                                      prs_bedrijf_bezoek_land),
                         prs_bedrijf_post_adres =
                            COALESCE (rec.prs_bedrijf_post_adres,
                                      prs_bedrijf_post_adres),
                         prs_bedrijf_post_postcode =
                            COALESCE (rec.prs_bedrijf_post_postcode,
                                      prs_bedrijf_post_postcode),
                         prs_bedrijf_post_plaats =
                            COALESCE (rec.prs_bedrijf_post_plaats,
                                      prs_bedrijf_post_plaats),
                         prs_bedrijf_post_land =
                            COALESCE (rec.prs_bedrijf_post_land,
                                      prs_bedrijf_post_land),
                         prs_bedrijf_telefoon =
                            COALESCE (rec.prs_bedrijf_telefoon,
                                      prs_bedrijf_telefoon),
                         prs_bedrijf_fax =
                            COALESCE (rec.prs_bedrijf_fax, prs_bedrijf_fax),
                         prs_bedrijf_email =
                            COALESCE (rec.prs_bedrijf_email,
                                      prs_bedrijf_email),
                         prs_bedrijf_contact_persoon =
                            COALESCE (rec.prs_bedrijf_contact_persoon,
                                      prs_bedrijf_contact_persoon),
                         prs_bedrijf_contact_telefoon =
                            COALESCE (rec.prs_bedrijf_contact_telefoon,
                                      prs_bedrijf_contact_telefoon),
                         prs_bedrijf_contact_fax =
                            COALESCE (rec.prs_bedrijf_contact_fax,
                                      prs_bedrijf_contact_fax),
                         prs_bedrijf_leverancier =
                            DECODE (rec.prs_bedrijf_leverancier, 1, 1, NULL),
                         prs_bedrijf_uitvoerende =
                            DECODE (rec.prs_bedrijf_uitvoerende, 1, 1, NULL),
                         prs_bedrijf_contract =
                            DECODE (rec.prs_bedrijf_contract, 1, 1, NULL),
                         prs_bedrijf_huurder =
                            DECODE (rec.prs_bedrijf_huurder, 1, 1, NULL),
                         prs_bedrijf_ingids =
                            DECODE (rec.prs_bedrijf_ingids, 1, 1, NULL),
                         prs_bedrijf_uurloon =
                            COALESCE (rec.prs_bedrijf_uurloon,
                                      prs_bedrijf_uurloon),
                         prs_overeenkomst_nr =
                            COALESCE (rec.prs_overeenkomst_nr,
                                      prs_overeenkomst_nr),
                         prs_overeenkomst_datum =
                            COALESCE (rec.prs_overeenkomst_datum,
                                      prs_overeenkomst_datum),
                         prs_bedrijf_opmerking =
                            COALESCE (rec.prs_bedrijf_opmerking,
                                      prs_bedrijf_opmerking)
                   WHERE prs_bedrijf_key = v_bedrijf_key;

                  v_count_upd := v_count_upd + 1;
               END IF;
            --COMMIT;
            END IF;
         EXCEPTION
            WHEN OTHERS
            THEN
               oracle_err_num := SQLCODE;
               oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
               v_errormsg :=
                     'ORACLE (error '
                  || oracle_err_num
                  || '/'
                  || oracle_err_mes
                  || ')';
               fac.imp_writelog (p_import_key,
                                 'E',
                                 v_aanduiding || v_errormsg,
                                 v_errorhint);
               COMMIT;
         END;
      END LOOP;

      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: #ingelezen: ' || TO_CHAR (v_count_tot),
                        '');
      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: #toegevoegd: ' || TO_CHAR (v_count_new),
                        '');
      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: #bijgewerkt: ' || TO_CHAR (v_count_upd),
                        '');
      COMMIT;
   END;

   -- SUBPROC
   PROCEDURE del_bedrijf (p_import_key IN NUMBER)
   AS
      CURSOR c1
      IS
         SELECT *
           FROM prs_v_aanwezigbedrijf b
          WHERE b.prs_bedrijf_intern IS NULL
                AND b.prs_leverancier_nr IS NOT NULL
                AND NOT EXISTS
                      (SELECT 1
                         FROM fac_imp_ext_bedrijf
                        WHERE prs_leverancier_nr = b.prs_leverancier_nr);

      v_bedrijf_key   NUMBER (10);
   BEGIN
      v_count_del := 0;

      FOR rec IN c1
      LOOP
         BEGIN
            v_aanduiding := '[' || rec.prs_bedrijf_naam || '] ';

            v_errorhint := 'Fout verwijderen bedrijf';

            UPDATE prs_bedrijf
               SET prs_bedrijf_verwijder = SYSDATE
             WHERE prs_bedrijf_key = rec.prs_bedrijf_key;

            v_count_del := v_count_del + 1;

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

      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: #verwijderd: ' || TO_CHAR (v_count_del),
                        '');
      COMMIT;
   END;
-- MAIN
BEGIN
   add_bedrijf (p_import_key);
--del_bedrijf (p_import_key);
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        v_aanduiding || v_errormsg,
                        'Importproces relaties afgebroken!');
END dcol_update_bedrijf;
/

/* Formatted on 9-9-2014 16:06:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW dcol_v_medewerkers
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT pf.prs_perslid_key, pf.prs_perslid_naam_full
     FROM prs_perslid p, prs_v_perslid_fullnames_all pf
    WHERE p.prs_perslid_key = pf.prs_perslid_key
          AND SUBSTR (p.prs_perslid_oslogin, 1, 1) != '_';





/* Formatted on 3-8-2017 09:26:27 (QP5 v5.313) */

CREATE OR REPLACE VIEW DCOL_V_NOTI_CNTREMINDER
(
    CODE,
    SENDER,
    RECEIVER,
    TEXT,
    KEY,
    PAR1,
    PAR2,
    XKEY
)
AS
    SELECT 'CNTMAI',
           '',
           c.prs_perslid_key_beh,
              'Rappèl: Contract '
           || c.cnt_contract_nummer_intern
           || ' ('
           || c.cnt_contract_omschrijving
           || ' '
           || b.prs_bedrijf_naam
           || ')'
           || ' moet uiterlijk per '
           || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
                       'DD-MM-YYYY')
           || ' worden verlengd of opgezegd.',
           c.cnt_contract_key,
           c.cnt_contract_nummer_intern,
           cnt.cnt_getopzegdatum (c.cnt_contract_key),
           NULL
      FROM cnt_v_aanwezigcontract c, prs_bedrijf b
     WHERE     c.cnt_contract_status = 0
           AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
                            AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
           AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
    UNION
    SELECT 'CNTMAI',
           '',
           c.prs_perslid_key_eig,
              'Rappèl: Contract '
           || c.cnt_contract_nummer_intern
           || ' ('
           || c.cnt_contract_omschrijving
           || ' '
           || b.prs_bedrijf_naam
           || ')'
           || ' moet uiterlijk per '
           || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
                       'DD-MM-YYYY')
           || ' worden verlengd of opgezegd.',
           c.cnt_contract_key,
           c.cnt_contract_nummer_intern,
           cnt.cnt_getopzegdatum (c.cnt_contract_key),
           NULL
      FROM cnt_v_aanwezigcontract c, prs_bedrijf b
     WHERE     c.cnt_contract_status = 0
           AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
                            AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
           AND c.prs_perslid_key_eig IS NOT NULL
           AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
    UNION
    SELECT 'CNTMAI',
           '',
           fac.safe_to_number (kl.prs_kenmerklink_waarde),
              'Rappèl: Contract '
           || c.cnt_contract_nummer_intern
           || ' ('
           || c.cnt_contract_omschrijving
           || ' '
           || b.prs_bedrijf_naam
           || ')'
           || ' moet uiterlijk per '
           || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
                       'DD-MM-YYYY')
           || ' worden verlengd of opgezegd.',
           c.cnt_contract_key,
           c.cnt_contract_nummer_intern,
           cnt.cnt_getopzegdatum (c.cnt_contract_key),
           NULL
      FROM cnt_v_aanwezigcontract  c,
           prs_bedrijf             b,
           prs_afdeling            a,
           prs_kenmerklink         kl
     WHERE     c.cnt_contract_status = 0
           AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
                            AND cnt.cnt_getopzegdatum (c.cnt_contract_key))
           AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
           AND a.prs_afdeling_verwijder IS NULL
           AND c.prs_afdeling_key_eig = a.prs_afdeling_key -- Bestaande afdeling!
           AND kl.prs_kenmerklink_verwijder IS NULL
           --AND kl.prs_kenmerklink_niveau = 'A'
           AND kl.prs_kenmerk_key = 1060                            -- Manager
           AND a.prs_afdeling_key = kl.prs_link_key;


/* Formatted on 9-8-2017 14:27:23 (QP5 v5.136.908.31019) */

CREATE OR REPLACE VIEW DCOL_V_EVAL_CNTREMINDER
(
    CODE,
    SENDER,
    RECEIVER,
    TEXT,
    KEY,
    PAR1,
    PAR2,
    XKEY
)
AS
SELECT 'CNTMAI',
       '',
       c.prs_perslid_key_beh,
          'Evaluatie: Contract '
       || c.cnt_contract_nummer_intern
       || ' nadert '
       || LOWER (csk.cnt_srtkenmerk_omschrijving)
       || ' datum ('
       || c.cnt_contract_omschrijving
       || ' '
       || b.prs_bedrijf_naam
       || ')'
       || ' op '
       || ckc.cnt_kenmerkcontract_waarde
       || ' ',
       c.cnt_contract_key,
       c.cnt_contract_nummer_intern,
       cnt.cnt_getopzegdatum (c.cnt_contract_key),
       NULL
  FROM cnt_kenmerkcontract ckc,
       cnt_kenmerk ck,
       cnt_srtkenmerk csk,
       cnt_v_aanwezigcontract c,
       prs_bedrijf b
WHERE     ck.cnt_kenmerk_key = ckc.cnt_kenmerk_key
       AND csk.cnt_srtkenmerk_key = ck.cnt_srtkenmerk_key
       AND c.cnt_contract_status = 0
       AND ck.cnt_srtkenmerk_key IN (4, 6, 14)
       AND ckc.cnt_contract_key = c.cnt_contract_key
       AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
       AND cnt_contract_looptijd_tot >= SYSDATE
       AND fac.safe_to_date (ckc.cnt_kenmerkcontract_waarde, 'DD-MM-YYYY') <=
            SYSDATE + 60
UNION
SELECT 'CNTMAI',
       '',
       c.prs_perslid_key_eig,
          'Evaluatie: Contract '
       || c.cnt_contract_nummer_intern
       || ' nadert '
       || LOWER (csk.cnt_srtkenmerk_omschrijving)
       || ' datum ('
       || c.cnt_contract_omschrijving
       || ' '
       || b.prs_bedrijf_naam
       || ')'
       || ' op '
       || ckc.cnt_kenmerkcontract_waarde
       || ' ',
       c.cnt_contract_key,
       c.cnt_contract_nummer_intern,
       cnt.cnt_getopzegdatum (c.cnt_contract_key),
       NULL
  FROM cnt_kenmerkcontract ckc,
       cnt_kenmerk ck,
       cnt_srtkenmerk csk,
       cnt_v_aanwezigcontract c,
       prs_bedrijf b
WHERE     ck.cnt_kenmerk_key = ckc.cnt_kenmerk_key
       AND c.cnt_contract_status = 0
       AND csk.cnt_srtkenmerk_key = ck.cnt_srtkenmerk_key
       AND ck.cnt_srtkenmerk_key IN (4, 6, 14)
       AND ckc.cnt_contract_key = c.cnt_contract_key
       AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
       AND fac.safe_to_date (ckc.cnt_kenmerkcontract_waarde, 'DD-MM-YYYY') <=
             SYSDATE + 60
       AND cnt_contract_looptijd_tot >= SYSDATE
UNION
SELECT 'CNTMAI',
       '',
       fac.safe_to_number (kl.prs_kenmerklink_waarde),
          'Evaluatie: Contract '
       || c.cnt_contract_nummer_intern
       || ' nadert '
       || LOWER (csk.cnt_srtkenmerk_omschrijving)
       || ' datum ('
       || c.cnt_contract_omschrijving
       || ' '
       || b.prs_bedrijf_naam
       || ')'
       || ' op '
       || ckc.cnt_kenmerkcontract_waarde
       || ' ',
       c.cnt_contract_key,
       c.cnt_contract_nummer_intern,
       cnt.cnt_getopzegdatum (c.cnt_contract_key),
       NULL
  FROM cnt_kenmerkcontract ckc,
       cnt_kenmerk ck,
       cnt_srtkenmerk csk,
       cnt_v_aanwezigcontract c,
       prs_bedrijf b,
       prs_kenmerklink kl,
       prs_afdeling a
WHERE     ck.cnt_kenmerk_key = ckc.cnt_kenmerk_key
       AND c.cnt_contract_status = 0
       AND csk.cnt_srtkenmerk_key = ck.cnt_srtkenmerk_key
       AND ck.cnt_srtkenmerk_key IN (4, 6, 14)
       AND ckc.cnt_contract_key = c.cnt_contract_key
       AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
       AND fac.safe_to_date (ckc.cnt_kenmerkcontract_waarde, 'DD-MM-YYYY') <=
             SYSDATE + 60
       AND cnt_contract_looptijd_tot >= SYSDATE
       AND kl.prs_kenmerklink_verwijder IS NULL
       AND kl.prs_kenmerk_key = 1060
       AND a.prs_afdeling_key = kl.prs_link_key
       AND c.prs_afdeling_key_eig = a.prs_afdeling_key;


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