-- Script containing customer specific configuration sql statements for NFIT Nefit Buderus Deventer
-- (c) 2010-2006 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700

set echo on
SPOOL xNFIT.LST

-- View van opdrachten die inmiddels afgemeld zijn, zodat de berichten uit de statusinformatie verwijderd kunnen worden
CREATE OR REPLACE VIEW nfit_v_statusinf_del (webusermesskey,
                                             opdracht)
AS
SELECT DISTINCT wum.web_user_message_key webusermesskey,
       sd.ins_srtdiscipline_prefix || o.mld_melding_key opdracht
  FROM mld_opdr o,
       mld_melding m,
       mld_stdmelding std,
       mld_discipline md,
       ins_srtdiscipline sd,
	     web_user_messages wum
 WHERE m.mld_melding_key = o.mld_melding_key
   AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
   AND m.mld_stdmelding_key = std.mld_stdmelding_key
   AND md.ins_discipline_key = std.mld_ins_discipline_key
   AND o.mld_statusopdr_key IN (6, 7)  -- afgemeld of verwerkt
   AND wum.prs_perslid_key_receiver = m.prs_perslid_key
   AND 'Opdracht ' || sd.ins_srtdiscipline_prefix || o.mld_melding_key
       || ' dient te worden afgemeld.' = wum.web_user_mess_dsc
ORDER BY 2;

/* Formatted on 20-7-2010 10:31:47 (QP5 v5.136.908.31019) */
CREATE OR REPLACE FORCE VIEW nfit_v_iqbs
(
   bestellingkey,
   bestelopdrkey,
   bestelopdrprefix,
   bestelopdrnummer,
   crediteurennummer,
   bedrag,
   projectnummer,
   kostensoort,
   kostenplaats,
   budget,
   afdelingscode,
   status,
   teexporteren
)
AS
     SELECT   b.bes_bestelling_key bestellingkey,
              bo.bes_bestelopdr_key bestelopdrkey,
              '11' bestelopdrprefix,
              '11' || b.bes_bestelling_key bestelopdrnummer,
              (SELECT   b.prs_leverancier_nr
                 FROM   prs_bedrijf b
                WHERE   b.prs_bedrijf_key = bo.prs_bedrijf_key)
                 crediteurennummer,
              TO_CHAR (
                 SUM( (NVL (boi.bes_bestelopdr_item_aantalontv, 0) - NVL (boi.bes_bestelopdr_item_aantalexp, 0))
                     * NVL (boi.bes_bestelopdr_item_prijs, 0)),
                 '9999999990.99'
              )
                 bedrag,
              (SELECT   kbl.bes_kenmerkbestell_waarde
                 FROM   bes_kenmerkbestell kbl, bes_kenmerk bk
                WHERE       kbl.bes_kenmerk_key = bk.bes_kenmerk_key
                        AND bk.bes_srtkenmerk_key = 2
                        AND kbl.bes_bestelling_key = b.bes_bestelling_key)
                 projectnummer,
              NVL (
                 (SELECT   ks.prs_kostensoort_oms
                    FROM   bes_kenmerkbestell kbl, prs_kostensoort ks, bes_kenmerk bk
                   WHERE       kbl.bes_kenmerkbestell_waarde = ks.prs_kostensoort_key
                           AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key
                           AND bk.bes_srtkenmerk_key = 27
                           AND kbl.bes_bestelling_key = b.bes_bestelling_key),
                 (SELECT   prs_kostensoort_oms
                    FROM   prs_kostensoort kst
                   WHERE   kst.prs_kostensoort_key = itd.prs_kostensoort_key)
              )
                 kostensoort,
              (SELECT   k.prs_kostenplaats_nr
                 FROM   prs_kostenplaats k
                WHERE   k.prs_kostenplaats_key = b.prs_kostenplaats_key)
                 kostenplaats,
              (SELECT   kbl.bes_kenmerkbestell_waarde
                 FROM   bes_kenmerkbestell kbl, bes_kenmerk bk
                WHERE       kbl.bes_kenmerk_key = bk.bes_kenmerk_key
                        AND bk.bes_srtkenmerk_key = 23
                        AND kbl.bes_bestelling_key = b.bes_bestelling_key)
                 budget,
              (SELECT   a.prs_afdeling_naam
                 FROM   prs_afdeling a, prs_perslid p
                WHERE   p.prs_perslid_key = b.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key)
                 afdelingscode,
              bo.bes_bestelopdr_status status,
              (SELECT   fud.fac_usrdata_omschr
                 FROM   bes_kenmerkbestell kbl, fac_usrdata fud, bes_kenmerk bk
                WHERE       kbl.bes_kenmerkbestell_waarde = fud.fac_usrdata_key
                        AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key
                        AND bk.bes_srtkenmerk_key = 28
                        AND kbl.bes_bestelling_key = b.bes_bestelling_key)
                 teexporteren
       FROM   bes_bestelling b,
              bes_bestelling_item bi,
              bes_bestelopdr_item boi,
              bes_bestelopdr bo,
              bes_srtdeel isd,
              bes_srtgroep isg,
              ins_tab_discipline itd
      WHERE       b.bes_bestelling_key = bi.bes_bestelling_key
              AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
              AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
              AND isd.bes_srtdeel_key = bi.bes_srtdeel_key
              AND itd.ins_discipline_key = isg.ins_discipline_key
              AND isg.bes_srtgroep_key = isd.bes_srtgroep_key
              AND bo.bes_bestelopdr_status IN (4, 6)
              AND (SELECT   fud.fac_usrdata_omschr
                     FROM   bes_kenmerkbestell kbl, fac_usrdata fud, bes_kenmerk bk
                    WHERE       kbl.bes_kenmerkbestell_waarde = fud.fac_usrdata_key
                            AND kbl.bes_kenmerk_key = bk.bes_kenmerk_key
                            AND bk.bes_srtkenmerk_key = 28
                            AND kbl.bes_bestelling_key = b.bes_bestelling_key) = 'Ja'                   -- te_exporteren
              AND (NVL (boi.bes_bestelopdr_item_aantalontv, 0) - NVL (boi.bes_bestelopdr_item_aantalexp, 0)) > 0
              AND (SELECT   a1.prs_afdeling_key1
                     FROM   bes_bestelling b1, prs_perslid p1, prs_v_afdeling_boom a1
                    WHERE       b1.prs_perslid_key = p1.prs_perslid_key
                            AND p1.prs_afdeling_key = a1.prs_afdeling_key
                            AND b1.bes_bestelling_key = b.bes_bestelling_key) = 3                  -- business unit TTNL
   GROUP BY   b.bes_bestelling_key,
              bo.bes_bestelopdr_key,
              b.prs_kostenplaats_key,
              b.prs_perslid_key,
              bo.bes_bestelopdr_status,
              bo.prs_bedrijf_key,
              itd.prs_kostensoort_key
   UNION
   SELECT   m.mld_melding_key bestellingkey,
            mo.mld_opdr_key bestelopdrkey,
            (SELECT   sd.ins_srtdiscipline_prefix
               FROM   mld_discipline md, ins_srtdiscipline sd
              WHERE   sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
                      AND md.ins_discipline_key = std.mld_ins_discipline_key)
               bestelopdrprefix,
            (SELECT   sd.ins_srtdiscipline_prefix
               FROM   mld_discipline md, ins_srtdiscipline sd
              WHERE   sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
                      AND md.ins_discipline_key = std.mld_ins_discipline_key)
            || mo.mld_melding_key
               bestelopdrnummer,
            (SELECT   b.prs_leverancier_nr
               FROM   prs_bedrijf b
              WHERE   b.prs_bedrijf_key = mo.mld_uitvoerende_keys)
               crediteurennummer,
            TO_CHAR (mld_opdr_kosten, '9999999990.99') bedrag,
            (SELECT   v.mld_kenmerkopdr_waarde
               FROM   mld_kenmerkopdr v, mld_kenmerk mk
              WHERE       v.mld_kenmerk_key = mk.mld_kenmerk_key
                      AND mk.mld_srtkenmerk_key = 53
                      AND v.mld_opdr_key = mo.mld_opdr_key)
               projectnummer,
            NVL (
               (SELECT   ks.prs_kostensoort_oms
                  FROM   mld_kenmerkopdr v, prs_kostensoort ks, mld_kenmerk mk
                 WHERE       v.mld_kenmerkopdr_waarde = ks.prs_kostensoort_key
                         AND v.mld_kenmerk_key = mk.mld_kenmerk_key
                         AND mk.mld_srtkenmerk_key = 29
                         AND v.mld_opdr_key = mo.mld_opdr_key),
               NVL (
                  (SELECT   prs_kostensoort_oms
                     FROM   prs_kostensoort kst, mld_stdmelding stdm
                    WHERE   kst.prs_kostensoort_key = stdm.prs_kostensoort_key
                            AND stdm.mld_stdmelding_key = m.mld_stdmelding_key),
                  (SELECT   prs_kostensoort_oms
                     FROM   prs_kostensoort kst, ins_tab_discipline di
                    WHERE       kst.prs_kostensoort_key = di.prs_kostensoort_key
                            AND di.ins_discipline_key = std.mld_ins_discipline_key)
               )
            )
               kostensoort,
            (SELECT   k.prs_kostenplaats_nr
               FROM   prs_kostenplaats k
              WHERE   k.prs_kostenplaats_key = mo.prs_kostenplaats_key)
               kostenplaats,
            (SELECT   v.mld_kenmerkopdr_waarde
               FROM   mld_kenmerkopdr v, mld_kenmerk mk
              WHERE       v.mld_kenmerk_key = mk.mld_kenmerk_key
                      AND mk.mld_srtkenmerk_key = 52
                      AND v.mld_opdr_key = mo.mld_opdr_key)
               budget,
            (SELECT   a.prs_afdeling_naam
               FROM   prs_afdeling a, prs_perslid p
              WHERE   p.prs_perslid_key = m.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key)
               afdelingscode,
            mo.mld_statusopdr_key status,
            (SELECT   fud.fac_usrdata_omschr
               FROM   mld_kenmerkopdr v, fac_usrdata fud, mld_kenmerk mk
              WHERE       v.mld_kenmerkopdr_waarde = fud.fac_usrdata_key
                      AND v.mld_kenmerk_key = mk.mld_kenmerk_key
                      AND mk.mld_srtkenmerk_key = 30
                      AND v.mld_opdr_key = mo.mld_opdr_key)
               teexporteren
     FROM   mld_melding m, mld_opdr mo, mld_stdmelding std
    WHERE       mo.mld_melding_key = m.mld_melding_key
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND mo.mld_statusopdr_key IN (6)                                                    -- 5 niet voor meldingen
            AND (SELECT   fud.fac_usrdata_omschr
                   FROM   mld_kenmerkopdr v, fac_usrdata fud, mld_kenmerk mk
                  WHERE       v.mld_kenmerkopdr_waarde = fud.fac_usrdata_key
                          AND v.mld_kenmerk_key = mk.mld_kenmerk_key
                          AND mk.mld_srtkenmerk_key = 30
                          AND v.mld_opdr_key = mo.mld_opdr_key) = 'Ja'                                  -- te_exporteren
            AND (SELECT   a1.prs_afdeling_key1
                   FROM   mld_melding m1, prs_perslid p1, prs_v_afdeling_boom a1
                  WHERE       fac.gettrackinguserkey ('MLDNEW', m1.mld_melding_key) = p1.prs_perslid_key
                          AND p1.prs_afdeling_key = a1.prs_afdeling_key
                          AND m1.mld_melding_key = m.mld_melding_key) = 3                          -- business unit TTNL
   ORDER BY   3, 1;

CREATE OR REPLACE PROCEDURE nfit_select_statusinf_del (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
  -- View heeft alles al. geen acties nodig
  NULL;
END;
/

-- Export voor het verwijderen van berichten uit de statusinformatie, van opdrachten die inmiddels afgemeld zijn
CREATE OR REPLACE PROCEDURE nfit_export_statusinf_del (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
   DELETE FROM web_user_messages
         WHERE web_user_message_key IN (SELECT webusermesskey FROM nfit_v_statusinf_del);
END;
/

CREATE OR REPLACE PROCEDURE nfit_select_iqbs (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
  -- View heeft alles al. geen acties nodig
  NULL;
END;
/

/* Formatted on 20-4-2012 13:00:15 (QP5 v5.115.810.9015) */
CREATE OR REPLACE VIEW nfit_v_export_iqbs
(
   RESULT,
   result_order
)
AS
   SELECT      bestelopdrnummer
            || ';'
            || crediteurennummer
            || ';'
            || bedrag
            || ';'
            || projectnummer
            || ';'
            || kostensoort
            || ';'
            || kostenplaats
            || ';'
            || budget
            || ';'
            || afdelingscode
               regel,
            ROWNUM
     FROM   nfit_v_iqbs;

/* Formatted on 20-4-2012 13:16:44 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE nfit_export_iqbs (p_applname   IN VARCHAR2,
                                              p_applrun    IN VARCHAR2,
                                              p_filedir    IN VARCHAR2,
                                              p_filename   IN VARCHAR2)
AS
   CURSOR exportregels
   IS
      SELECT   bestellingkey,
               bestelopdrkey,
               bestelopdrnummer,
                  bestelopdrnummer
               || ';'
               || crediteurennummer
               || ';'
               || bedrag
               || ';'
               || projectnummer
               || ';'
               || kostensoort
               || ';'
               || kostenplaats
               || ';'
               || budget
               || ';'
               || afdelingscode
                  regel,
               status
        FROM   nfit_v_iqbs;

   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
   l_cnt            NUMBER;
BEGIN
   l_cnt := 0;

   FOR expregel IN exportregels
   LOOP
      BEGIN
         IF (SUBSTR (expregel.regel, 1, 2) = '11')     -- catalogus bestelling
         THEN
            -- Aantal te exporteren aanpassen
            -- Deze moet gelijk worden aan het aantal dat is ontvangen
            -- TODO, maar hoe? Of is dit gewoon goed zo?
            UPDATE   bes_bestelopdr_item
               SET   bes_bestelopdr_item_aantalexp =
                        bes_bestelopdr_item_aantalontv
             WHERE   bes_bestelopdr_key = expregel.bestelopdrkey;

            COMMIT;

            -- Als van een item alles geleverd is dan kan status ook op AV
            -- Eerst op TV zodat ook bestelaanvragen op TV komen door trigger
            bes.updatebestelopdrstatus (expregel.bestellingkey, NULL);

            COMMIT;

            -- Dit gaat niet automatisch als alle items op AV staan
            IF (expregel.status = 6)     -- status bestelopdr is "Geleverd TV"
            THEN
               -- Bestelopdracht AV verklaren als status is 6 (Geleverd TV)
               bes.setbestelopdrstatus (expregel.bestelopdrkey, 7, NULL);
               -- Bestelling_items AV verklaren als bestelopdracht AV is
               -- Bestelling AV verklaren als bestel_items AV is
               bes.updatebestellingstatus (expregel.bestellingkey, NULL);

               COMMIT;
            END IF;
         ELSIF expregel.status = 6         -- incidentele bestelling meldingen
         THEN
            -- Meldingsopdracht AV verklaren als status is 6 (Geleverd TV)
            mld.setopdrachtstatus (expregel.bestelopdrkey, 7, NULL);

            COMMIT;
         END IF;

         l_cnt := l_cnt + 1;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname,
                          'E',
                          v_errormsg,
                          '');
      END;
   END LOOP;

   fac.writelog (p_applname,
                 'I',
                 'Aantal geschreven records: ' || l_cnt,
                 '');
   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog (p_applname,
                    'E',
                    v_errormsg,
                    '');
      COMMIT;
END;
/
-- IMPORT NFIT#005

-- View van de import/export logging
CREATE OR REPLACE VIEW NFIT_V_IMPLOG
AS
   SELECT   COALESCE (ia.fac_import_app_code, l.imp_log_applicatie)
               fclt_f_applicatie,
            l.imp_log_datum log_datum,
            l.imp_log_status fclt_f_status,
            l.imp_log_omschrijving omschrijving,
            l.imp_log_hint hint
     FROM   imp_log l,
            (  SELECT   fac_import_app_key, MAX (fac_import_key) fac_import_key
                 FROM   fac_import
             GROUP BY   fac_import_app_key) i,
            fac_import_app ia
    WHERE   l.fac_import_key = i.fac_import_key
            AND i.fac_import_app_key = ia.fac_import_app_key;

-- NFIT#15424
-- View van contracten met financiele details
CREATE OR REPLACE VIEW nfit_v_cntlijst_fin (hide_f_cnt_contract_key,
                                            contract_nummer,
                                            fclt_f_contract_soort,
                                            beschrijving,
                                            fclt_f_uitvoerder,
                                            fclt_f_eigenaar,
                                            fclt_f_status,
                                            einddatum,
                                            financiele_verplichting,
                                            fclt_f_termijn,
                                            fclt_3d_discipline_key
                                           )
AS
SELECT c.cnt_contract_key,
       c.cnt_contract_nummer_intern contract_nummer,
       d.ins_discipline_omschrijving,
       c.cnt_contract_omschrijving omschrijving,
       COALESCE (b.prs_bedrijf_naam, afd2.prs_afdeling_naam) uitvoerder,
       afd.prs_afdeling_naam eigenaar,
       CASE cnt.cnt_contract_status (c.cnt_contract_looptijd_van,
                                     cnt.cnt_getrappeldatum (c.cnt_contract_key),
                                     cnt.cnt_getopzegdatum (c.cnt_contract_key),
                                     c.cnt_contract_looptijd_tot)
       WHEN 0 THEN 'Aankomend'
       WHEN 1 THEN 'Actueel'
       WHEN 2 THEN 'Rappel'
       WHEN 3 THEN 'In opzegtermijn'
       WHEN 4 THEN 'Verlopen'
       END status,
       TO_CHAR (c.cnt_contract_looptijd_tot, 'DD-MM-YYYY') einddatum,
       fac.safe_to_number ((SELECT kc.cnt_kenmerkcontract_waarde
          FROM cnt_kenmerkcontract kc,
               cnt_kenmerk ck
         WHERE kc.cnt_kenmerk_key = ck.cnt_kenmerk_key
           AND ck.cnt_srtkenmerk_key = 90
           AND kc.cnt_contract_key = c.cnt_contract_key)) financiele_verplichting,
       COALESCE((SELECT fud.fac_usrdata_omschr
                   FROM cnt_kenmerkcontract kc,
                        cnt_kenmerk ck,
                        fac_usrdata fud
                           WHERE kc.cnt_kenmerk_key = ck.cnt_kenmerk_key
           AND ck.cnt_srtkenmerk_key = 34
                    AND kc.cnt_contract_key = c.cnt_contract_key
                    AND FAC.SAFE_TO_NUMBER(kc.cnt_kenmerkcontract_waarde) = fud.fac_usrdata_key), ' ') termijn,
       d.ins_discipline_key fclt_3d_discipline_key
  FROM prs_v_aanwezigbedrijf b,
       cnt_v_aanwezigcontract c,
       prs_v_aanwezigafdeling afd,
       prs_v_aanwezigafdeling afd2,
       cnt_v_aanwezigdiscipline d
 WHERE b.prs_bedrijf_key(+) = c.cnt_prs_bedrijf_key
   AND c.cnt_prs_afdeling_key = afd2.prs_afdeling_key(+)
   AND afd.prs_afdeling_key(+) = c.prs_afdeling_key_eig
   AND c.ins_discipline_key = d.ins_discipline_key;

-- Importeren leveranciersgegevens
/* Formatted on 20-4-2012 12:02:24 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE nfit_import_baan (p_import_key IN NUMBER)
AS
   v_newline              VARCHAR2 (1000);                      -- Import line
   v_field                VARCHAR2 (100);                      -- Import field
   c_fielddelimitor       VARCHAR2 (1) := '|';              -- Field seperator
   v_errormsg             VARCHAR2 (1000);
   oracle_err_num         NUMBER;
   oracle_err_mes         VARCHAR2 (200);
   header_is_valid        BOOLEAN;
   -- De importvelden
   v_bedrijfsnaam         VARCHAR2 (100);
   v_post_adres           VARCHAR2 (100);
   v_post_postcode        VARCHAR2 (100);
   v_post_plaats          VARCHAR2 (100);
   v_post_land            VARCHAR2 (100);
   v_telefoon             VARCHAR2 (100);
   v_contactpersoon       VARCHAR2 (100);
   v_leveranciersnummer   VARCHAR2 (100);
   v_bezoek_adres         VARCHAR2 (100);
   v_bezoek_postcode      VARCHAR2 (100);
   v_bezoek_plaats        VARCHAR2 (100);
   v_bezoek_land          VARCHAR2 (100);
   v_fax                  VARCHAR2 (100);
   v_branche_code         VARCHAR2 (100);
   v_betalingsconditie    VARCHAR2 (100);
   v_taal                 VARCHAR2 (100);

   CURSOR c1
   IS
        SELECT   *
          FROM   fac_imp_file
         WHERE   fac_import_key = p_import_key
      ORDER BY   fac_imp_file_index;
BEGIN
   header_is_valid := TRUE;                               -- No header present

   DELETE FROM   nfit_imp_baan;

   COMMIT;

   FOR rec1 IN c1
   LOOP
      BEGIN
         v_newline := rec1.fac_imp_file_line;
         -- Lees alle veldwaarden
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijfsnaam);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_post_adres);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_post_postcode);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_post_plaats);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_post_land);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_telefoon);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_contactpersoon);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_leveranciersnummer);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_adres);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_postcode);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_plaats);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bezoek_land);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_fax);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_branche_code);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_betalingsconditie);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_taal);

         IF (header_is_valid = FALSE)
         THEN
            header_is_valid := TRUE;
         ELSE
            IF v_leveranciersnummer IS NOT NULL
            THEN
               INSERT INTO nfit_imp_baan (bedrijfsnaam,
                                          post_adres,
                                          post_postcode,
                                          post_plaats,
                                          post_land,
                                          telefoon,
                                          contactpersoon,
                                          leveranciersnummer,
                                          bezoek_adres,
                                          bezoek_postcode,
                                          bezoek_plaats,
                                          bezoek_land,
                                          fax,
                                          branche_code,
                                          betalingsconditie,
                                          taal)
                 VALUES   (SUBSTR (TRIM (v_bedrijfsnaam), 1, 60),
                           SUBSTR (TRIM (v_post_adres), 1, 35),
                           SUBSTR (TRIM (v_post_postcode), 1, 12),
                           SUBSTR (TRIM (v_post_plaats), 1, 35),
                           SUBSTR (TRIM (v_post_land), 1, 30),
                           SUBSTR (TRIM (v_telefoon), 1, 20),
                           SUBSTR (TRIM (v_contactpersoon), 1, 30),
                           SUBSTR (TRIM (v_leveranciersnummer), 1, 20),
                           SUBSTR (TRIM (v_bezoek_adres), 1, 35),
                           SUBSTR (TRIM (v_bezoek_postcode), 1, 12),
                           SUBSTR (TRIM (v_bezoek_plaats), 1, 30),
                           SUBSTR (TRIM (v_bezoek_land), 1, 30),
                           SUBSTR (TRIM (v_fax), 1, 20),
                           SUBSTR (TRIM (v_branche_code), 1, 30),
                           SUBSTR (TRIM (v_betalingsconditie), 1, 30),
                           SUBSTR (TRIM (v_taal), 1, 30));
            END IF;
         END IF;
      END;
   END LOOP;

   IF (header_is_valid = FALSE)
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Ongeldig importbestand',
                        'Geen header of header niet volgens specificatie!');
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        v_errormsg,
                        '');
      COMMIT;
END nfit_import_baan;
/


-- Updaten leveranciersgegevens
CREATE OR REPLACE PROCEDURE nfit_update_baan (p_import_key IN NUMBER)
AS
   /*
   1. Technische documentatie: FSN#1426.doc (09-10-2006)
   */
   -- Constanten
   c_maxvariation                NUMBER                               := 20;
   c_commitbuffer                NUMBER                               := 1000;
   -- om de zoveel committen
   v_buffercount                 NUMBER                               := 0;

   CURSOR c_bedr_del
   IS
      SELECT   b.prs_bedrijf_key,
               b.prs_bedrijf_naam,b.prs_bedrijf_intern
          FROM prs_bedrijf b,
               nfit_imp_baan bn
         WHERE b.prs_leverancier_nr = bn.leveranciersnummer(+)
           AND b.prs_bedrijf_naam IS NOT NULL
           AND bn.bedrijfsnaam IS NULL
           AND b.prs_bedrijf_leverancier IS NOT NULL
           AND b.prs_bedrijf_verwijder IS NULL
      ORDER BY 2, 1;

   CURSOR c_bedr_upd
   IS
      SELECT   b.prs_bedrijf_key prs_bedrijf_key,
               bn.bedrijfsnaam prs_bedrijf_naam,
               bn.post_postcode prs_bedrijf_post_postcode,
               bn.post_adres prs_bedrijf_post_adres,
               bn.post_plaats prs_bedrijf_post_plaats,
               bn.post_land prs_bedrijf_post_land,
               bn.telefoon prs_bedrijf_telefoon,
               bn.contactpersoon prs_bedrijf_contact_persoon,
               bn.leveranciersnummer prs_leverancier_nr,
               bn.bezoek_adres prs_bedrijf_bezoek_adres,
               bn.bezoek_postcode prs_bedrijf_bezoek_postcode,
               bn.bezoek_plaats prs_bedrijf_bezoek_plaats,
               bn.bezoek_land prs_bedrijf_bezoek_land,
               bn.fax prs_bedrijf_fax,
               bn.branche_code branche_code,
               bn.betalingsconditie betalingsconditie,
               bn.taal taal
          FROM nfit_imp_baan bn,
               prs_bedrijf b
         WHERE bn.leveranciersnummer = b.prs_leverancier_nr(+)
           AND b.prs_bedrijf_verwijder(+) IS NULL
           --AND bn.leveranciersnummer LIKE 'AC0016'
      ORDER BY bn.bedrijfsnaam, b.prs_leverancier_nr;


   v_kenmerk_branche_code_key      NUMBER (10);
   v_kenmerk_bconditie_key         NUMBER (10);
   v_kenmerk_taal_key              NUMBER (10);
   v_bedrijf_key                   NUMBER (10);
   v_kenmerklink_branche_key       NUMBER (10);
   v_kenmerklink_bconditie_key     NUMBER (10);
   v_kenmerklink_taal_key          NUMBER (10);
   v_find                          NUMBER (10);

   rec_bedr_del                    c_bedr_del%ROWTYPE;
   rec_bedr_upd                    c_bedr_upd%ROWTYPE;
   oracle_err_num                  NUMBER;
   oracle_err_mes                  VARCHAR2 (200);
   v_errormsg                      VARCHAR2 (1024);
   v_errorhint                     VARCHAR2 (1024);
   v_action                        VARCHAR (10);
   v_count                         NUMBER (10);
   v_update                        BOOLEAN;
   v_aktie                         VARCHAR (10);
   v_bedrijf_count_imp             NUMBER;
   v_bedrijf_count_fclt            NUMBER;
   v_bedrijf_newcount_fclt         NUMBER;
   currentversion                  fac_module.fac_module_version%TYPE;
   l_validatie                     NUMBER;
BEGIN
   v_update := TRUE;

   SELECT MAX (fac_module_version)
     INTO currentversion
     FROM fac_module;

   fac.imp_writelog (p_import_key, 'I', 'Facilitor Crediteuren import version ' || currentversion, '$Revision$');

   -- #Import
   SELECT DECODE (COUNT (*), 0, 1, COUNT (*))   -- DECODE ivm vermijden deling door 0
     INTO v_bedrijf_count_imp
     FROM nfit_imp_baan;

   -- Informatieve logging, zien we gelijk hoe laat het was
   fac.imp_writelog (p_import_key, 'S', 'Aantal ingelezen crediteuren: ' || TO_CHAR (v_bedrijf_count_imp), '');

   -- #Actieve crediteuren
   SELECT DECODE (COUNT (*), 0, 1, COUNT (*))   -- DECODE ivm vermijden deling door 0
     INTO v_bedrijf_count_fclt
     FROM prs_bedrijf
    WHERE prs_bedrijf_verwijder IS NULL
      AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%';

   -- v_baan_count_fclt = 1 bij initiele situatie (of er is maar 1 crediteur aanwezig = > ook doorgaan!)
   -- IF    v_baan_count_imp = 1
   --   OR 100 * ABS (v_baan_count_imp - v_baan_count_fclt) / v_baan_count_fclt > c_maxvariation
   IF ((v_bedrijf_count_fclt <> 1) AND 1=2
      AND ((v_bedrijf_count_imp = 1)
          OR (100 * ABS (v_bedrijf_count_imp - v_bedrijf_count_fclt) / v_bedrijf_count_fclt > c_maxvariation)))
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                           'Het verschil tussen de actieve crediteuren ('
                        || TO_CHAR (v_bedrijf_count_fclt)
                        || ') en te importeren aantallen ('
                        || TO_CHAR (v_bedrijf_count_imp)
                        || ') is te groot',
                           'Zie Specificaties: De afwijking is teveel en bedraagt '
                        || TO_CHAR (100 * ABS (v_bedrijf_count_fclt - v_bedrijf_count_imp) / v_bedrijf_count_fclt,
                                    '9999999D9'
                                   )
                        || '%.'
                       );
      RETURN;
   END IF;

   -- Controle: kenmerk "Branchecode" aanwezig?
   IF v_update
   THEN
      BEGIN
         v_errormsg := 'kenmerk "Branchecode" bestaat niet';

         -- Bepaal de key van kenmerk "Branchecode"
         -- kenmerk_key is 1023
         SELECT prs_kenmerk_key
           INTO v_kenmerk_branche_code_key
           FROM prs_kenmerk
          WHERE prs_kenmerk_omschrijving = 'Branchecode'
            AND prs_kenmerk_niveau = 'B'
            AND prs_kenmerk_kenmerktype = 'C';
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            v_errorhint := 'kenmerk "Branchecode" aanmaken';
            fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);

            -- Kenmerk bestaat kennelijk niet, maak 'm maar aan
            INSERT INTO prs_kenmerk
                        (prs_kenmerk_niveau,
                         prs_kenmerk_volgnr,
                         prs_kenmerk_omschrijving,
                         prs_kenmerk_hint,
                         prs_kenmerk_kenmerktype,
                         prs_kenmerk_lengte
                        )
                 VALUES ('B',
                         110,
                         'Branchecode',
                         'Branchecode',
                         'C',
                         30
                        );
            COMMIT;

            -- Wat is de key van deze nieuwe geworden?
            SELECT prs_kenmerk_key
              INTO v_kenmerk_branche_code_key
              FROM prs_kenmerk
             WHERE prs_kenmerk_omschrijving = 'Branchecode'
               AND prs_kenmerk_niveau = 'B'
               AND prs_kenmerk_kenmerktype = 'C'
               AND prs_kenmerk_verwijder IS NULL;
         WHEN OTHERS
         THEN
            v_errorhint := 'kenmerk_key van kenmerk "Branchecode" kan niet bepaald worden';
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            v_update := FALSE;
      END;
   END IF;


   -- Controle: kenmerk "Betalingsconditie" aanwezig?
   IF v_update
   THEN
      BEGIN
         v_errormsg := 'kenmerk "Betalingsconditie" bestaat niet';

         -- Bepaal de key van kenmerk "Betalingsconditie"
         -- kenmerk_key is 1022
         SELECT prs_kenmerk_key
           INTO v_kenmerk_bconditie_key
           FROM prs_kenmerk
          WHERE prs_kenmerk_omschrijving = 'Betalingsconditie'
            AND prs_kenmerk_niveau = 'B'
            AND prs_kenmerk_kenmerktype = 'C';
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            v_errorhint := 'kenmerk "Betalingsconditie" aanmaken';
            fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);

            -- Kenmerk bestaat kennelijk niet, maak 'm maar aan
            INSERT INTO prs_kenmerk
                        (prs_kenmerk_niveau,
                         prs_kenmerk_volgnr,
                         prs_kenmerk_omschrijving,
                         prs_kenmerk_hint,
                         prs_kenmerk_kenmerktype,
                         prs_kenmerk_lengte
                        )
                 VALUES ('B',
                         100,
                         'Betalingsconditie',
                         'Betalingsvoorwaarde',
                         'C',
                         30
                        );
            COMMIT;

            -- Wat is de key van deze nieuwe geworden?
            SELECT prs_kenmerk_key
              INTO v_kenmerk_bconditie_key
              FROM prs_kenmerk
             WHERE prs_kenmerk_omschrijving = 'Betalingsconditie'
               AND prs_kenmerk_niveau = 'B'
               AND prs_kenmerk_kenmerktype = 'C'
               AND prs_kenmerk_verwijder IS NULL;
         WHEN OTHERS
         THEN
            v_errorhint := 'kenmerk_key van kenmerk "Betalingsconditie" kan niet bepaald worden';
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            v_update := FALSE;
      END;
   END IF;


   -- Controle: kenmerk "Taal" aanwezig?
   IF v_update
   THEN
      BEGIN
         v_errormsg := 'kenmerk "Taal" bestaat niet';

         -- Bepaal de key van kenmerk "Taal"
         -- kenmerk_key is 1042
         SELECT prs_kenmerk_key
           INTO v_kenmerk_taal_key
           FROM prs_kenmerk
          WHERE prs_kenmerk_omschrijving = 'Taal'
            AND prs_kenmerk_niveau = 'B'
            AND prs_kenmerk_kenmerktype = 'C';
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            v_errorhint := 'kenmerk "Taal" aanmaken';
            fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);

            -- Kenmerk bestaat kennelijk niet, maak 'm maar aan
            INSERT INTO prs_kenmerk
                        (prs_kenmerk_niveau,
                         prs_kenmerk_volgnr,
                         prs_kenmerk_omschrijving,
                         prs_kenmerk_hint,
                         prs_kenmerk_kenmerktype,
                         prs_kenmerk_lengte
                        )
                 VALUES ('B',
                         120,
                         'Taal',
                         'Taal',
                         'C',
                         30
                        );
            COMMIT;

            -- Wat is de key van deze nieuwe geworden?
            SELECT prs_kenmerk_key
              INTO v_kenmerk_taal_key
              FROM prs_kenmerk
             WHERE prs_kenmerk_omschrijving = 'Taal'
               AND prs_kenmerk_niveau = 'B'
               AND prs_kenmerk_kenmerktype = 'C'
               AND prs_kenmerk_verwijder IS NULL;
         WHEN OTHERS
         THEN
            v_errorhint := 'kenmerk_key van kenmerk "Taal" kan niet bepaald worden';
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            v_update := FALSE;
      END;
   END IF;


   -- Delete
   v_errormsg := 'Try to open cursor';
   v_action := 'DELETE';

   FOR rec_bedr_del IN c_bedr_del
   LOOP
      BEGIN
         v_bedrijf_key := rec_bedr_del.prs_bedrijf_key;
         v_errormsg := 'Inactiveren van het bedrijf is NIET gelukt';
         v_errorhint := 'Inactiveren van het bedrijf is NIET gelukt. Bedrijf met bedrijfsnaam ' || rec_bedr_del.prs_bedrijf_naam;

         UPDATE prs_bedrijf
            SET prs_bedrijf_naam = SUBSTR ('INACTIEF: ' || prs_bedrijf_naam, 1, 60)
          WHERE prs_bedrijf_key = v_bedrijf_key
            AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%';
         COMMIT;

         fac.imp_writelog (p_import_key,
                           'C',
                           'Bedrijf als INACTIEF gemarkeerd of was al INACTIEF, bedrijfscode: ' || rec_bedr_del.prs_bedrijf_naam,
                           ''
                          );
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
            v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
      END;
   END LOOP;


   COMMIT;
   -- Update
   v_errormsg := 'Try to open cursor';
   v_action := 'UPDATE';

   FOR rec_bedr_upd IN c_bedr_upd
   LOOP
      BEGIN
         v_errorhint := 'Het bedrijf kan niet bepaald worden ' || rec_bedr_upd.prs_bedrijf_naam;
         -- Init
         v_update := TRUE;
         v_bedrijf_key := 0;

         IF rec_bedr_upd.prs_bedrijf_key IS NULL
         THEN
            v_aktie := 'INSERT';
            v_errormsg := 'Bedrijfsgegevens kunnen niet toegevoegd worden';
         ELSE
            v_aktie := 'UPDATE';
            v_errormsg := 'Bedrijfsgegevens kunnen niet gewijzigd worden';
         END IF;

         -- *** Controle verplichte gegevens + ophalen extra informatie ***
         -- Controle: PRS_LEVERANCIER_NR
         IF v_update AND rec_bedr_upd.prs_leverancier_nr IS NULL
         THEN
            v_errorhint := 'Bedrijf heeft geen prs_leverancier_nr; bedrijfsnaam: ' || rec_bedr_upd.prs_bedrijf_naam;
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            v_update := FALSE;
         END IF;

         -- Controle: PRS_BEDRIJF_NAAM
         IF rec_bedr_upd.prs_bedrijf_naam IS NULL
         THEN
            v_errorhint := 'Bedrijf heeft geen bedrijfsnaam; bedrijfsnaam/leveranciersnummer: '
                        || rec_bedr_upd.prs_bedrijf_naam
                        || '/'
                        || rec_bedr_upd.prs_leverancier_nr;
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            v_update := FALSE;
         END IF;

         -- *** Daadwerkelijk insert/update prs_bedrijf ***
         IF v_update
         THEN
            BEGIN
               IF v_aktie = 'INSERT'
               THEN
                  v_errormsg := 'Bedrijf kan niet worden toegevoegd';

                  -- De volgende flexkenmerken toevoegen
                  -- bedr.branche_code,
                  -- bedr.betalingsconditie,
                  -- bedr.taal.
                  INSERT INTO prs_bedrijf
                              (prs_bedrijf_naam,
                               prs_bedrijf_post_adres,
                               prs_bedrijf_post_postcode,
                               prs_bedrijf_post_plaats,
                               prs_bedrijf_post_land,
                               prs_bedrijf_telefoon,
                               prs_bedrijf_contact_persoon,
                               prs_leverancier_nr,
                               prs_bedrijf_bezoek_adres,
                               prs_bedrijf_bezoek_postcode,
                               prs_bedrijf_bezoek_plaats,
                               prs_bedrijf_bezoek_land,
                               prs_bedrijf_fax,
                               prs_bedrijf_leverancier,
                               prs_bedrijf_uitvoerende,
                               prs_bedrijf_contract
                              )
                       VALUES (rec_bedr_upd.prs_bedrijf_naam,
                               rec_bedr_upd.prs_bedrijf_post_adres,
                               rec_bedr_upd.prs_bedrijf_post_postcode,
                               rec_bedr_upd.prs_bedrijf_post_plaats,
                               rec_bedr_upd.prs_bedrijf_post_land,
                               rec_bedr_upd.prs_bedrijf_telefoon,
                               rec_bedr_upd.prs_bedrijf_contact_persoon,
                               rec_bedr_upd.prs_leverancier_nr,
                               rec_bedr_upd.prs_bedrijf_bezoek_adres,
                               rec_bedr_upd.prs_bedrijf_bezoek_postcode,
                               rec_bedr_upd.prs_bedrijf_bezoek_plaats,
                               rec_bedr_upd.prs_bedrijf_bezoek_land,
                               rec_bedr_upd.prs_bedrijf_fax,
                               1,
                               1,
                               1
                              );
                  COMMIT;

                  fac.imp_writelog (p_import_key,
                                    'C',
                                    'Nieuw bedrijf toegevoegd',
                                       'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr
                                   );

                  -- Wat is de key van deze nieuwe geworden?
                  SELECT prs_bedrijf_key
                    INTO v_bedrijf_key
                    FROM prs_bedrijf
                   WHERE prs_leverancier_nr = rec_bedr_upd.prs_leverancier_nr
                     AND prs_bedrijf_naam = rec_bedr_upd.prs_bedrijf_naam
                     AND prs_bedrijf_verwijder IS NULL;
               ELSE  -- v_aktie = 'UPDATE'
                  v_errormsg := 'Bedrijf kan niet worden gewijzigd';

                  UPDATE prs_bedrijf
                     SET prs_bedrijf_naam = rec_bedr_upd.prs_bedrijf_naam,
                         prs_bedrijf_post_adres = rec_bedr_upd.prs_bedrijf_post_adres,
                         prs_bedrijf_post_postcode = rec_bedr_upd.prs_bedrijf_post_postcode,
                         prs_bedrijf_post_plaats = rec_bedr_upd.prs_bedrijf_post_plaats,
                         prs_bedrijf_post_land = rec_bedr_upd.prs_bedrijf_post_land,
                         prs_bedrijf_telefoon = rec_bedr_upd.prs_bedrijf_telefoon,
                         prs_bedrijf_contact_persoon = rec_bedr_upd.prs_bedrijf_contact_persoon,
                         prs_bedrijf_bezoek_adres = rec_bedr_upd.prs_bedrijf_bezoek_adres,
                         prs_bedrijf_bezoek_postcode = rec_bedr_upd.prs_bedrijf_bezoek_postcode,
                         prs_bedrijf_bezoek_plaats = rec_bedr_upd.prs_bedrijf_bezoek_plaats,
                         prs_bedrijf_bezoek_land = rec_bedr_upd.prs_bedrijf_bezoek_land,
                         prs_bedrijf_fax = rec_bedr_upd.prs_bedrijf_fax,
                         prs_bedrijf_leverancier = 1,
                         prs_bedrijf_uitvoerende = 1,
                         prs_bedrijf_contract = 1
                   WHERE prs_bedrijf_key = rec_bedr_upd.prs_bedrijf_key
                     AND prs_leverancier_nr = rec_bedr_upd.prs_leverancier_nr;
/*                     AND (   prs_bedrijf_naam <> rec_bedr_upd.prs_bedrijf_naam
                          OR prs_bedrijf_post_adres <> rec_bedr_upd.prs_bedrijf_post_adres
                          OR prs_bedrijf_post_postcode <> rec_bedr_upd.prs_bedrijf_post_postcode
                          OR prs_bedrijf_post_plaats <> rec_bedr_upd.prs_bedrijf_post_plaats
                          OR prs_bedrijf_post_land <> rec_bedr_upd.prs_bedrijf_post_land
                          OR prs_bedrijf_telefoon <> rec_bedr_upd.prs_bedrijf_telefoon
                          OR prs_bedrijf_contact_persoon <> rec_bedr_upd.prs_bedrijf_contact_persoon
                          OR prs_bedrijf_bezoek_adres <> rec_bedr_upd.prs_bedrijf_bezoek_adres
                          OR prs_bedrijf_bezoek_postcode <> rec_bedr_upd.prs_bedrijf_bezoek_postcode
                          OR prs_bedrijf_bezoek_plaats <> rec_bedr_upd.prs_bedrijf_bezoek_plaats
                          OR prs_bedrijf_bezoek_land <> rec_bedr_upd.prs_bedrijf_bezoek_land
                          OR prs_bedrijf_fax <> rec_bedr_upd.prs_bedrijf_fax
                          OR prs_bedrijf_naam IS NULL
                          OR prs_bedrijf_post_adres IS NULL
                          OR prs_bedrijf_post_postcode IS NULL
                          OR prs_bedrijf_post_plaats IS NULL
                          OR prs_bedrijf_post_land IS NULL
                          OR prs_bedrijf_telefoon IS NULL
                          OR prs_bedrijf_contact_persoon IS NULL
                          OR prs_bedrijf_bezoek_adres IS NULL
                          OR prs_bedrijf_bezoek_postcode IS NULL
                          OR prs_bedrijf_bezoek_plaats IS NULL
                          OR prs_bedrijf_bezoek_land IS NULL
                          OR prs_bedrijf_fax IS NULL
                         ); */
                  COMMIT;

                  fac.imp_writelog (p_import_key,
                                    'C',
                                    'Bedrijven bijgewerkt (indien nodig)',
                                       'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr
                                   );

                  -- Wat is de key van dit bedrijf?
                  v_bedrijf_key := rec_bedr_upd.prs_bedrijf_key;
               END IF;
            EXCEPTION
               WHEN OTHERS
               THEN
                  oracle_err_num := SQLCODE;
                  oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
                  v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
                  v_errorhint := ' {' || v_errormsg || '}; bedrijfsnaam/leveranciersnummer: '
                              || rec_bedr_upd.prs_bedrijf_naam
                              || '/'
                              || rec_bedr_upd.prs_leverancier_nr;
                  v_update := FALSE;
                  fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            END;
         END IF;

         -- *** insert/update van de drie kenmerken van de bedrijf ***
         IF v_update
         THEN
            BEGIN
               IF v_aktie = 'INSERT'
               THEN
                  v_errormsg := 'Kenmerken kunnen niet worden toegevoegd';

                  -- De volgende flexkenmerken toevoegen
                  -- bedr.branche_code,
                  -- bedr.betalingsconditie,
                  -- bedr.taal.
                  IF rec_bedr_upd.branche_code IS NOT NULL
                  THEN
                     INSERT INTO prs_kenmerklink
                                 (prs_link_key,
                                  prs_kenmerklink_niveau,
                                  prs_kenmerk_key,
                                  prs_kenmerklink_waarde
                                 )
                          VALUES (v_bedrijf_key,
                                  'B',
                                  v_kenmerk_branche_code_key,
                                  rec_bedr_upd.branche_code
                                 );
                     COMMIT;
                  END IF;

                  IF rec_bedr_upd.betalingsconditie IS NOT NULL
                  THEN
                     INSERT INTO prs_kenmerklink
                                 (prs_link_key,
                                  prs_kenmerklink_niveau,
                                  prs_kenmerk_key,
                                  prs_kenmerklink_waarde
                                 )
                          VALUES (v_bedrijf_key,
                                  'B',
                                  v_kenmerk_bconditie_key,
                                  rec_bedr_upd.betalingsconditie
                                 );
                     COMMIT;
                  END IF;

                  IF rec_bedr_upd.taal IS NOT NULL
                  THEN
                     INSERT INTO prs_kenmerklink
                                 (prs_link_key,
                                  prs_kenmerklink_niveau,
                                  prs_kenmerk_key,
                                  prs_kenmerklink_waarde
                                 )
                          VALUES (v_bedrijf_key,
                                  'B',
                                  v_kenmerk_taal_key,
                                  rec_bedr_upd.taal
                                 );
                     COMMIT;
                  END IF;

                  fac.imp_writelog (p_import_key,
                                    'C',
                                    'Nieuwe kenmerken toegevoegd (indien waarde aanwezig) ',
                                       'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr
                                   );

               ELSE  -- v_aktie = 'UPDATE'(kenmerkenlinken kunnen aanwezig zijn)
                  v_errormsg := 'Kenmerk(en) kunnen niet worden gewijzigd';

                  v_find := 1;
                  BEGIN
                     -- Bepaal de key van het kenmerk "Branche_code"
                     SELECT prs_kenmerklink_key
                       INTO v_kenmerklink_branche_key
                       FROM prs_kenmerklink
                      WHERE prs_link_key = v_bedrijf_key
                        AND prs_kenmerk_key = v_kenmerk_branche_code_key
                        AND prs_kenmerklink_niveau = 'B';
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        v_find := 0;
                     WHEN OTHERS
                     THEN
                        v_errorhint := 'Fout bij het aanmaken van kenmerklink "Branche_code"'
                                    || TO_CHAR(v_kenmerk_branche_code_key)
                                    || 'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr;
                        v_update := FALSE;
                  END;

                  IF v_update AND v_find = 1
                  THEN
                     IF rec_bedr_upd.branche_code IS NOT NULL
                     THEN
                        UPDATE prs_kenmerklink
                           SET prs_kenmerklink_waarde = rec_bedr_upd.branche_code
                         WHERE prs_kenmerklink_key = v_kenmerklink_branche_key
                           AND prs_kenmerklink_waarde <> rec_bedr_upd.branche_code;
                        COMMIT;
                     ELSE
                        DELETE prs_kenmerklink
                        WHERE prs_kenmerklink_key = v_kenmerklink_branche_key;
                        COMMIT;
                     END IF;
                  ELSE
                     -- Kenmerklink bestaat kennelijk niet, maak 'm aan
                     IF rec_bedr_upd.branche_code IS NOT NULL AND v_find = 0
                     THEN
                        INSERT INTO prs_kenmerklink
                                    (prs_link_key,
                                     prs_kenmerklink_niveau,
                                     prs_kenmerk_key,
                                     prs_kenmerklink_waarde
                                    )
                             VALUES (v_bedrijf_key,
                                     'B',
                                     v_kenmerk_branche_code_key,
                                     rec_bedr_upd.branche_code
                                    );
                        COMMIT;
                     END IF;
                  END IF;


                  v_find := 1;
                  BEGIN
                     -- Bepaal de key van het kenmerk "Betalingsconditie"
                     SELECT prs_kenmerklink_key
                       INTO v_kenmerklink_bconditie_key
                       FROM prs_kenmerklink
                      WHERE prs_link_key = v_bedrijf_key
                        AND prs_kenmerk_key = v_kenmerk_bconditie_key
                        AND prs_kenmerklink_niveau = 'B';
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        v_find := 0;
                     WHEN OTHERS
                     THEN
                        v_errorhint := 'Fout bij het aanmaken van kenmerklink "Betalingsconditie" '
                           || TO_CHAR(v_kenmerk_bconditie_key)
                                    || 'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr;
                        v_update := FALSE;
                  END;

                  IF v_update AND v_find = 1
                  THEN
                     IF rec_bedr_upd.betalingsconditie IS NOT NULL
                     THEN
                        UPDATE prs_kenmerklink
                           SET prs_kenmerklink_waarde = rec_bedr_upd.betalingsconditie
                         WHERE prs_kenmerklink_key = v_kenmerklink_bconditie_key
                           AND prs_kenmerklink_waarde <> rec_bedr_upd.betalingsconditie;
                        COMMIT;
                     ELSE
                        DELETE prs_kenmerklink
                        WHERE prs_kenmerklink_key = v_kenmerklink_bconditie_key;
                        COMMIT;
                     END IF;
                  ELSE
                     -- Kenmerklink bestaat kennelijk niet, maak 'm aan
                     IF rec_bedr_upd.betalingsconditie IS NOT NULL AND v_find = 0
                     THEN
                        INSERT INTO prs_kenmerklink
                                    (prs_link_key,
                                     prs_kenmerklink_niveau,
                                     prs_kenmerk_key,
                                     prs_kenmerklink_waarde
                                    )
                             VALUES (v_bedrijf_key,
                                     'B',
                                     v_kenmerk_bconditie_key,
                                     rec_bedr_upd.betalingsconditie
                                    );
                        COMMIT;
                     END IF;
                  END IF;

                  v_find := 1;
                  BEGIN
                     -- Bepaal de key van het kenmerk "Taal"
                     SELECT prs_kenmerklink_key
                       INTO v_kenmerklink_taal_key
                       FROM prs_kenmerklink
                      WHERE prs_link_key = v_bedrijf_key
                        AND prs_kenmerk_key = v_kenmerk_taal_key
                        AND prs_kenmerklink_niveau = 'B';
                  EXCEPTION
                     WHEN NO_DATA_FOUND
                     THEN
                        v_find := 0;
                     WHEN OTHERS
                     THEN
                        v_errorhint := 'Fout bij het aanmaken van kenmerklink "Taal"'
                                    || TO_CHAR(v_kenmerk_taal_key)
                                    || 'bedrijfsnaam/leveranciersnummer: '
                                    || rec_bedr_upd.prs_bedrijf_naam
                                    || '/'
                                    || rec_bedr_upd.prs_leverancier_nr;
                        v_update := FALSE;
                  END;

                  IF v_update AND v_find = 1
                  THEN
                     IF rec_bedr_upd.taal IS NOT NULL
                     THEN
                        UPDATE prs_kenmerklink
                           SET prs_kenmerklink_waarde = rec_bedr_upd.taal
                         WHERE prs_kenmerklink_key = v_kenmerklink_taal_key
                           AND prs_kenmerklink_waarde <> rec_bedr_upd.taal;
                        COMMIT;
                     ELSE
                        DELETE prs_kenmerklink
                        WHERE prs_kenmerklink_key = v_kenmerklink_taal_key;
                        COMMIT;
                     END IF;
                  ELSE
                     -- Kenmerklink bestaat kennelijk niet, maak 'm aan
                     IF rec_bedr_upd.taal IS NOT NULL AND v_find = 0
                     THEN
                        INSERT INTO prs_kenmerklink
                                    (prs_link_key,
                                     prs_kenmerklink_niveau,
                                     prs_kenmerk_key,
                                     prs_kenmerklink_waarde
                                    )
                             VALUES (v_bedrijf_key,
                                     'B',
                                     v_kenmerk_taal_key,
                                     rec_bedr_upd.taal
                                    );
                        COMMIT;
                     END IF;
                  END IF;

               END IF;
            EXCEPTION
               WHEN OTHERS
               THEN
                  oracle_err_num := SQLCODE;
                  oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
                  v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
                  v_errorhint := ' {' || v_errormsg || '}; bedrijfsnaam/leveranciersnummer: '
                              || rec_bedr_upd.prs_bedrijf_naam
                              || '/'
                              || rec_bedr_upd.prs_leverancier_nr;

                  v_update := FALSE;
                  fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
            END;
         END IF;

         v_buffercount := v_buffercount + 1;

         IF v_buffercount >= c_commitbuffer
         THEN
            COMMIT;
            v_buffercount := 0;
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
            v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
            v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
            fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
      END;
   END LOOP;

   SELECT COUNT (*)
     INTO v_bedrijf_newcount_fclt
     FROM prs_bedrijf
    WHERE prs_bedrijf_verwijder IS NULL
    AND prs_bedrijf_naam NOT LIKE 'INACTIEF:%';

   fac.imp_writelog (p_import_key,
                     'S',
                        'Aantal actieve crediteuren vooraf: '
                     || TO_CHAR (v_bedrijf_count_fclt)
                     || '  nu: '
                     || TO_CHAR (v_bedrijf_newcount_fclt),
                     ''
                    );

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

-- NFIT#12061 view voor notificatie op het moment dat het contract de rappeldatum bereikt naar:
-- de beheerder van het contract,
-- de budgethouder van de kostenplaats van de afdeling van het contract
-- en naar Erwin of Sabine (Inkoper)
CREATE OR REPLACE VIEW NFIT_V_NOTI_CNTREMINDER
(CODE, SENDER, RECEIVER, TEXT, KEY,
 PAR1, PAR2, XKEY)
AS
SELECT '', '',
       c.prs_perslid_key_beh naam,
       '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.' bericht,
        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 b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
   AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key))
UNION
SELECT '', '',
       (SELECT kp.prs_perslid_key
          FROM prs_afdeling a,
               prs_kostenplaats kp
         WHERE a.prs_kostenplaats_key = kp.prs_kostenplaats_key
           AND a.prs_afdeling_key = c.prs_afdeling_key_eig) naam,
       '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.' bericht,
        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 b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
   AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key))
UNION
-- Sabine of Erwin
SELECT '', '',
       (SELECT p.prs_perslid_key
          FROM cnt_kenmerkcontract kc,
               cnt_kenmerk ck,
               fac_usrdata fud,
               prs_v_aanwezigperslid p
         WHERE c.cnt_contract_key = kc.cnt_contract_key
           AND kc.cnt_kenmerk_key = ck.cnt_kenmerk_key
           AND kc.cnt_kenmerkcontract_waarde = fud.fac_usrdata_key
           AND p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam = fud.fac_usrdata_omschr
           AND kc.cnt_contract_key = c.cnt_contract_key
           AND ck.cnt_srtkenmerk_key = 21) naam,
       '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.' bericht,
        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 b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
   AND (SYSDATE BETWEEN cnt.cnt_getRappeldatum(c.cnt_contract_key) AND cnt.cnt_getOpzegdatum(c.cnt_contract_key));


-- NFIT#12639: Notificatiejob voor afmelden van incidentele bestelling (2 dagen na verwachte leverdatum)
-- kenmerkkey van afleverdatum is 59 voor NFIT
/* Formatted on 20-7-2010 10:33:50 (QP5 v5.136.908.31019) */
CREATE OR REPLACE FORCE VIEW nfit_v_noti_mldopdr_afm
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
   SELECT   'ORDAFM',
            '',
            m.prs_perslid_key melder,
            'Opdracht ' || sd.ins_srtdiscipline_prefix || m.mld_melding_key || ' dient te worden afgemeld. '
            || (SELECT   vsk.mld_srtkenmerk_omschrijving || ': ' || v.mld_kenmerkopdr_waarde
                  FROM   mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk
                 WHERE       v.mld_opdr_key = o.mld_opdr_key
                         AND vk.mld_srtkenmerk_key = 21
                         AND v.mld_kenmerk_key = vk.mld_kenmerk_key
                         AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key)
            || ', '
            || (SELECT   vsk.mld_srtkenmerk_omschrijving || ': ' || b.prs_bedrijf_naam
                  FROM   mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk, prs_bedrijf b
                 WHERE       v.mld_opdr_key = o.mld_opdr_key
                         AND vk.mld_srtkenmerk_key = 24
                         AND v.mld_kenmerk_key = vk.mld_kenmerk_key
                         AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key
                         AND v.mld_kenmerkopdr_waarde = b.prs_bedrijf_key)
               melding,
            o.mld_opdr_key,
            o.mld_opdr_key
     FROM   mld_opdr o, mld_kenmerkopdr ko, mld_melding m, mld_stdmelding std, mld_discipline md, ins_srtdiscipline sd
    WHERE       o.mld_opdr_key = ko.mld_opdr_key
            AND m.mld_melding_key = o.mld_melding_key
            AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND md.ins_discipline_key = std.mld_ins_discipline_key
            AND ko.mld_kenmerk_key = 59
            AND TO_DATE (ko.mld_kenmerkopdr_waarde || ' 00:00:00', 'dd-mm-yyyy hh24:mi:ss') + 2 <= SYSDATE
            AND o.mld_statusopdr_key IN (5,8)
            AND NOT EXISTS
                  (SELECT   1
                     FROM   web_user_messages
                    WHERE   prs_perslid_key_receiver = m.prs_perslid_key
                            AND   'Opdracht '
                               || sd.ins_srtdiscipline_prefix
                               || m.mld_melding_key
                               || ' dient te worden afgemeld. '
                               || (SELECT      vsk.mld_srtkenmerk_omschrijving
                                            || ': '
                                            || v.mld_kenmerkopdr_waarde
                                     FROM   mld_kenmerkopdr v, mld_kenmerk vk, mld_srtkenmerk vsk
                                    WHERE       v.mld_opdr_key = o.mld_opdr_key
                                            AND vk.mld_srtkenmerk_key = 21
                                            AND v.mld_kenmerk_key = vk.mld_kenmerk_key
                                            AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key)
                               || ', '
                               || (SELECT   vsk.mld_srtkenmerk_omschrijving || ': ' || b.prs_bedrijf_naam
                                     FROM   mld_kenmerkopdr v,
                                            mld_kenmerk vk,
                                            mld_srtkenmerk vsk,
                                            prs_bedrijf b
                                    WHERE       v.mld_opdr_key = o.mld_opdr_key
                                            AND vk.mld_srtkenmerk_key = 24
                                            AND v.mld_kenmerk_key = vk.mld_kenmerk_key
                                            AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key
                                            AND v.mld_kenmerkopdr_waarde = b.prs_bedrijf_key) = web_user_mess_dsc);


-- NFIT#12562: Notificatiejob voor het registreren van een incidentele bestelling
-- Eens per uur (is minimum) checken of er nieuwe incidentele bestellingen zijn geregistreerd
-- kenmerkkey van interne_besteller is 21 voor NFIT
-- kenmerkkey van gewenste_leverancier is 24 voor NFIT
-- Voor een goede werking van deze notificatiejob dient de notificatie MLDNEW uitgeschakeld te worden
CREATE OR REPLACE VIEW NFIT_V_NOTI_MLD_REG
(CODE, SENDER, RECEIVER, TEXT, KEY, XKEY)
AS
SELECT 'MLDNEW',
       '',
       m.prs_perslid_key melder,
          'Uw melding '
       || sd.ins_srtdiscipline_prefix
       || m.mld_melding_key
       || ' ('
       || md.ins_discipline_omschrijving
       || '/'
       || sd.ins_srtdiscipline_omschrijving
       || ') is geregistreerd, '
       || (SELECT    vsk.mld_srtkenmerk_omschrijving
                  || ': '
                  || v.mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding v,
                  mld_kenmerk vk,
                  mld_srtkenmerk vsk
            WHERE v.mld_melding_key = m.mld_melding_key
              AND vk.mld_srtkenmerk_key = 21
              AND v.mld_kenmerk_key = vk.mld_kenmerk_key
              AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key)
       || ', '
       || (SELECT vsk.mld_srtkenmerk_omschrijving || ': '
                  || b.prs_bedrijf_naam
             FROM mld_kenmerkmelding v,
                  mld_kenmerk vk,
                  mld_srtkenmerk vsk,
                  prs_bedrijf b
            WHERE v.mld_melding_key = m.mld_melding_key
              AND vk.mld_srtkenmerk_key = 24
              AND v.mld_kenmerk_key = vk.mld_kenmerk_key
              AND vk.mld_srtkenmerk_key = vsk.mld_srtkenmerk_key
              AND v.mld_kenmerkmelding_waarde = b.prs_bedrijf_key) text,
       m.mld_melding_key,
       m.mld_melding_key
  FROM mld_melding m,
       mld_stdmelding std,
       mld_discipline md,
       ins_srtdiscipline sd
 WHERE sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
   AND m.mld_stdmelding_key = std.mld_stdmelding_key
   AND md.ins_discipline_key = std.mld_ins_discipline_key
   AND m.mld_melding_datum >
          (  COALESCE
                  ((SELECT fac_notificatie_job_nextrun
                      FROM fac_notificatie_job
                     WHERE fac_notificatie_job_view LIKE 'NFIT_V_NOTI_MLD_REG'),
                   SYSDATE
                  )
           - (SELECT fac_notificatie_job_interval
                FROM fac_notificatie_job
               WHERE fac_notificatie_job_view LIKE 'NFIT_V_NOTI_MLD_REG')/24
          )
   AND 1 NOT IN (
          SELECT 1
            FROM web_user_messages
           WHERE prs_perslid_key_receiver = m.prs_perslid_key
             AND    'Uw melding '
                 || sd.ins_srtdiscipline_prefix
                 || m.mld_melding_key
                 || ' ('
                 || md.ins_discipline_omschrijving
                 || '/'
                 || sd.ins_srtdiscipline_omschrijving
                 || ') is geregistreerd' = web_user_mess_dsc);

-- NFIT#16975
CREATE OR REPLACE FORCE VIEW nfit_v_leverancier (prs_bedrijf_key, leverancier)
AS
   SELECT   prs_bedrijf_key, prs_bedrijf_naam || '-' || prs_bedrijf_bezoek_plaats leverancier
     FROM   prs_v_aanwezigbedrijf
    WHERE   prs_bedrijf_leverancier = 1 AND prs_bedrijf_naam NOT LIKE 'INACTIEF%';

-- Dit is de bonusversie (omdat men niet zo netjes is met de bedrijfsnamen)
-- Wordt nog niet gebruikt, maar zou kunnen (vooruitzien is..)
CREATE OR REPLACE FORCE VIEW nfit_v_leverancieric (prs_bedrijf_key, leverancier)
AS
   SELECT   prs_bedrijf_key, INITCAP(prs_bedrijf_naam) || '-' || prs_bedrijf_bezoek_plaats leverancier
     FROM   prs_v_aanwezigbedrijf
    WHERE   prs_bedrijf_leverancier = 1 AND prs_bedrijf_naam NOT LIKE 'INACTIEF%';

BEGIN fac.registercustversion('NFIT', 23); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
COMMIT;
SPOOL OFF
