--
-- $Id$
--
-- Script containing customer specific sql statements for creating default projects in the FACILITOR database
--
-- NB: Importeren van default projecten wordt niet meer gedaan vanuit een csv-bestand.
--     Met #55491 staan default deelprojecten ook in de database, van waaruit deze gekopieerd kunnen
--     worden naar het gewenste project.
--     Daarom zijn deze procedures verwijderd.
--

DEFINE thisfile = 'TWYN_DEF_PRJ.SQL'
DEFINE dbuser   = '^TWYN'
DEFINE custid   = 'TWYN'

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 PROCEDURE twyn_import_projectcsv (p_import_key IN NUMBER)
AS
   c_delim                  VARCHAR2 (1) := ';';
   v_newline                fac_imp_file.fac_imp_file_line%TYPE;    -- Input line
   v_searchline             fac_imp_file.fac_imp_file_line%TYPE;    -- Input line voor zoeken op kolomnummer
   v_errormsg               VARCHAR2 (1000);
   v_errorhint              VARCHAR2 (1000);
   oracle_err_num           NUMBER;
   oracle_err_mes           VARCHAR2 (200);
   v_aanduiding             VARCHAR2 (200);
   header_is_valid          NUMBER (1) := 0;
   v_ongeldig               NUMBER (1) := 0;
   v_imp_count              NUMBER (5) := 0;

   -- Importvelden staan in de procedures.
   -- Overige velden:
   -- Keys
   k_project_code           VARCHAR2(20) := NULL;
   k_subproject_code        VARCHAR2(20) := NULL;
   k_rubriek_code           VARCHAR2(20) := NULL;
   k_groep_code             VARCHAR2(60) := NULL;
   k_soort_code             VARCHAR2(5)  := NULL;

   CURSOR c1
   IS
        SELECT   fac_imp_file_line
             ,   LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, '')))  regellengte
          FROM   FAC_IMP_FILE
         WHERE   fac_import_key = p_import_key
      ORDER BY   fac_imp_file_index;

   FUNCTION isNumeric(p_number IN VARCHAR2) RETURN NUMBER IS
      v_number NUMBER := 0;
   BEGIN
      IF (LENGTH(TRIM(TRANSLATE(p_number, ' +-.0123456789', ' '))) IS NULL) THEN
         v_number := 1;
      END IF;
      RETURN v_number;
   END; --isNumeric

   PROCEDURE imp_header( p_line          IN OUT VARCHAR2
                       , p_valid            OUT NUMBER)
   IS
      v_rubriek_code               VARCHAR2 (256); --001 RUBRIEK_CODE
      v_rubriek_omschr             VARCHAR2 (256); --002 RUBRIEK_OMSCHRIJVING
      v_groep_code                 VARCHAR2 (256); --003 GROEP_CODE
      v_groep_omschr               VARCHAR2 (256); --004 GROEP_OMSCHRIJVING
      v_soort_code                 VARCHAR2 (256); --005 SOORT_CODE
      v_soort_omschr               VARCHAR2 (256); --006 SOORT_OMSCHRIJVING
      v_soort_btw_perc             VARCHAR2 (256); --007 BTW_PERCENTAGE
      v_soort_btw_oms              VARCHAR2 (256); --008 BTW_OMSCHRIJVING
      s_valid_header               NUMBER(1);
   BEGIN
      s_valid_header := 0;
      fac.imp_getfield (p_line, c_delim, v_rubriek_code);
      fac.imp_getfield (p_line, c_delim, v_rubriek_omschr);
      fac.imp_getfield (p_line, c_delim, v_groep_code);
      fac.imp_getfield (p_line, c_delim, v_groep_omschr);
      fac.imp_getfield (p_line, c_delim, v_soort_code);
      fac.imp_getfield (p_line, c_delim, v_soort_omschr);
      fac.imp_getfield (p_line, c_delim, v_soort_btw_perc);
      fac.imp_getfield (p_line, c_delim, v_soort_btw_oms);
      --
      v_rubriek_code    := TRIM(UPPER(v_rubriek_code));
      v_rubriek_omschr  := TRIM(UPPER(v_rubriek_omschr));
      v_groep_code      := TRIM(UPPER(v_groep_code));
      v_groep_omschr    := TRIM(UPPER(v_groep_omschr));
      v_soort_code      := TRIM(UPPER(v_soort_code));
      v_soort_omschr    := TRIM(UPPER(v_soort_omschr));
      v_soort_btw_perc  := TRIM(UPPER(v_soort_btw_perc));
      v_soort_btw_oms   := TRIM(UPPER(v_soort_btw_oms));
      --
      IF (   v_rubriek_code    = 'RUBRIEK_CODE'
         AND v_rubriek_omschr  = 'RUBRIEK_OMSCHRIJVING'
         AND v_groep_code      = 'GROEP_CODE'
         AND v_groep_omschr    = 'GROEP_OMSCHRIJVING'
         AND v_soort_code      = 'SOORT_CODE'
         AND v_soort_omschr    = 'SOORT_OMSCHRIJVING'
         AND v_soort_btw_perc  = 'BTW_PERCENTAGE'
         AND v_soort_btw_oms   = 'BTW_OMSCHRIJVING'
         )
      THEN
         s_valid_header := 1;
      END IF;
      p_valid := s_valid_header;
   END; --imp_header

   PROCEDURE imp_rubriek( p_line         IN OUT VARCHAR2
                        , p_rubriek_code    OUT VARCHAR2)
   IS
      v_rubriek_code               VARCHAR2 (256); --001 RUBRIEK_CODE
      v_rubriek_omschr             VARCHAR2 (256); --002 RUBRIEK_OMSCHRIJVING
      s_project_nummer             VARCHAR2 (256); --:projectnummer      (discipline)
      s_subproject_code            VARCHAR2 (256); --:deelprojectnummer  (project)
      v_count_rubriek              NUMBER (3);
   BEGIN
      fac.imp_getfield (p_line, c_delim, v_rubriek_code);
      fac.imp_getfield (p_line, c_delim, v_rubriek_omschr);
      --
      p_rubriek_code := NULL;
      v_rubriek_code := TRIM(v_rubriek_code);
      IF (v_rubriek_code IS NOT NULL) THEN
         s_project_nummer  := '0';
         s_subproject_code := '0';
         --
         SELECT COUNT(*)
           INTO v_count_rubriek
           FROM twyn_imp_kostenrubriek
          WHERE bgt_project_code = s_subproject_code
            AND bgt_kostenrubriek_code = v_rubriek_code;
         --
         IF (v_count_rubriek = 0) THEN
            INSERT INTO twyn_imp_kostenrubriek
            (  bgt_project_discipline
            ,  bgt_project_code
            ,  bgt_kostenrubriek_code
            ,  bgt_kostenrubriek_oms
            )
            VALUES
            (  s_project_nummer
            ,  s_subproject_code
            ,  v_rubriek_code
            ,  TRIM(v_rubriek_omschr)
            );
            p_rubriek_code := v_rubriek_code;
         END IF;
      END IF;
   END; --imp_rubriek

   PROCEDURE imp_groep( p_line       IN OUT VARCHAR2
                      , p_groep_code    OUT VARCHAR2)
   IS
      v_groep_code                 VARCHAR2 (256); --003 GROEP_CODE
      v_groep_omschr               VARCHAR2 (256); --004 GROEP_OMSCHRIJVING
      s_project_nummer             VARCHAR2 (256); --:projectnummer      (discipline)
      s_subproject_code            VARCHAR2 (256); --:deelprojectnummer  (project)
      s_rubriek_code               VARCHAR2 (256); --001 RUBRIEK_CODE
      v_count_groep                NUMBER (3);
   BEGIN
      fac.imp_getfield (p_line, c_delim, v_groep_code);
      fac.imp_getfield (p_line, c_delim, v_groep_omschr);
      --
      p_groep_code := NULL;
      v_groep_code := TRIM(v_groep_code);
      IF (v_groep_code IS NOT NULL) THEN
         s_project_nummer  := '0';
         s_subproject_code := '0';
         fac.imp_getfield_nr(v_searchline, c_delim, 1, s_rubriek_code);
         --
         SELECT COUNT(*)
           INTO v_count_groep
           FROM twyn_imp_kostensoortgrp
          WHERE bgt_project_code = s_subproject_code
            AND bgt_kostenrubriek_code = TRIM(s_rubriek_code)
            AND prs_kostensoortgrp_altcode = v_groep_code;
         --
         IF (v_count_groep = 0) THEN
            INSERT INTO twyn_imp_kostensoortgrp
            (  bgt_project_discipline
            ,  bgt_project_code
            ,  bgt_kostenrubriek_code
            ,  prs_kostensoortgrp_altcode
            ,  prs_kostensoortgrp_oms
            )
            VALUES
            (  s_project_nummer
            ,  s_subproject_code
            ,  TRIM(s_rubriek_code)
            ,  v_groep_code
            ,  TRIM(v_groep_omschr)
            );
            p_groep_code := v_groep_code;
         END IF;
      END IF;
   END; -- imp_groep

   PROCEDURE imp_soort( p_line       IN OUT VARCHAR2
                      , p_soort_code    OUT VARCHAR2)
   IS
      v_soort_code                 VARCHAR2 (256); --005 SOORT_CODE
      v_soort_omschr               VARCHAR2 (256); --006 SOORT_OMSCHRIJVING
      v_soort_perc                 VARCHAR2 (256); --007 BTW_PERCENTAGE
      v_soort_perc_oms             VARCHAR2 (256); --008 BTW_OMSCHRIJVING
      s_project_nummer             VARCHAR2 (256); --:projectnummer      (discipline)
      s_subproject_code            VARCHAR2 (256); --:code subproject    (project)
      s_rubriek_code               VARCHAR2 (256); --001 RUBRIEK_CODE
      s_groep_code                 VARCHAR2 (256); --003 GROEP_CODE
      v_count_soort                NUMBER (3);
   BEGIN
      fac.imp_getfield (p_line, c_delim, v_soort_code);
      fac.imp_getfield (p_line, c_delim, v_soort_omschr);
      fac.imp_getfield (p_line, c_delim, v_soort_perc);
      fac.imp_getfield (p_line, c_delim, v_soort_perc_oms);
      --
      p_soort_code := NULL;
      v_soort_code := TRIM(v_soort_code);
      IF (v_soort_code IS NOT NULL) THEN
         s_project_nummer  := '0';
         s_subproject_code := '0';
         fac.imp_getfield_nr(v_searchline, c_delim, 1, s_rubriek_code);
         fac.imp_getfield_nr(v_searchline, c_delim, 3, s_groep_code);
         --
         SELECT COUNT(*)
           INTO v_count_soort
           FROM twyn_imp_kostensoort
          WHERE bgt_project_code = s_subproject_code
            AND bgt_kostenrubriek_code = TRIM(s_rubriek_code)
            AND prs_kostensoortgrp_altcode = TRIM(s_groep_code)
            AND prs_kostensoort_oms = v_soort_code;
         --
         IF (v_count_soort = 0) THEN
            INSERT INTO twyn_imp_kostensoort
            (  bgt_project_discipline
            ,  bgt_project_code
            ,  bgt_kostenrubriek_code
            ,  prs_kostensoortgrp_altcode
            ,  prs_kostensoort_oms
            ,  prs_kostensoort_opmerking
            ,  bgt_btw_code
            ,  bgt_btw_waarde
            )
            VALUES
            (  s_project_nummer
            ,  s_subproject_code
            ,  TRIM(s_rubriek_code)
            ,  TRIM(s_groep_code)
            ,  v_soort_code
            ,  TRIM(v_soort_omschr)
            ,  TRIM(v_soort_perc_oms)
            ,  fac.safe_To_Integer(v_soort_perc)
            );
         END IF;
         p_soort_code := v_soort_code;
      END IF;
   END; --imp_soort

BEGIN
   -- Eerst opruiming
   DELETE FROM twyn_imp_kostenrubriek;
   DELETE FROM twyn_imp_kostensoortgrp;
   DELETE FROM twyn_imp_kostensoort;
   --
   FOR rec IN c1
   LOOP
      BEGIN
         v_aanduiding := NULL;
         v_errorhint := 'Fout inlezen importregel';
         v_newline := rec.fac_imp_file_line;
         v_ongeldig := 0;
         v_imp_count := v_imp_count + 1;

         IF (header_is_valid = 0)
         THEN
            -- Controleren of het een geldige header is.
            -- Ge hiermee door totdat er een geldige header gevonden is, of het einde van het bestand bereikt is.
            v_searchline := v_newline;
            imp_header(v_newline, header_is_valid);
         ELSIF rec.regellengte > 1                   -- Lege regels overslaan!
         THEN
            -- Lees alle veldwaarden
            v_searchline := v_newline; -- bewaar de oorspronkelijke regel om in te kunnen zoeken.
            --
            v_aanduiding := 'RUBRIEK';
            imp_rubriek(v_newline, k_rubriek_code);
            --
            v_aanduiding := 'GROEP';
            imp_groep(v_newline, k_groep_code);
            --
            v_aanduiding := 'SOORT';
            imp_soort(v_newline, k_soort_code);
         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 || ' r.'|| v_imp_count || ')';
            fac.imp_writelog (p_import_key,
                              'W',
                              v_aanduiding || v_errormsg,
                              v_errorhint);
      END;
   END LOOP;
   --
   IF (header_is_valid = 0) THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Importbestand {0} bevat geen geldige header',
                        'Inlezen default projectinrichting niet gelukt!');
   END IF;
   --
   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 || ' r.'|| v_imp_count || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        v_aanduiding || v_errormsg,
                        'Inlezen default projectinrichting afgebroken!');
END;
/

CREATE OR REPLACE PROCEDURE twyn_update_projectcsv ( p_import_key  IN NUMBER
                                                   , p_project_key IN NUMBER)
IS
   g_errormsg        VARCHAR2 (1000);
   g_errorhint       VARCHAR2 (1000);
   oracle_err_num    NUMBER;
   oracle_err_mes    VARCHAR2 (200);
   g_aanduiding      VARCHAR2 (200);

   FUNCTION get_btw_key( p_code IN VARCHAR2
                       , p_perc IN NUMBER
                       ) RETURN NUMBER
   IS
      a_btw_key  fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
   BEGIN
      BEGIN
         SELECT fin_btwtabelwaarde_key
           INTO a_btw_key
           FROM fin_btwtabelwaarde
          WHERE fin_btwtabelwaarde_perc = p_perc;
       EXCEPTION
          WHEN NO_DATA_FOUND THEN
             INSERT INTO fin_btwtabelwaarde
             ( fin_btwtabelwaarde_code
             , fin_btwtabelwaarde_oms
             , fin_btwtabelwaarde_perc
             , fin_btwtabel_key
             )
             VALUES
             ( SUBSTR(p_code,1,1) || TO_CHAR(p_perc)
             , p_code
             , p_perc
             , (SELECT MAX(fin_btwtabel_key) FROM fin_btwtabel)
             )
             RETURNING fin_btwtabelwaarde_key INTO a_btw_key;
       END;
       RETURN a_btw_key;
   END; -- get_btw_key

   PROCEDURE update_rubriek( p_import_key  IN NUMBER
                           , p_project_key IN NUMBER)
   AS
      CURSOR c_rubriek
      IS
         SELECT bgt_project_discipline
              , bgt_project_code
              , bgt_kostenrubriek_code
              , bgt_kostenrubriek_oms
           FROM twyn_imp_kostenrubriek
          ORDER BY bgt_kostenrubriek_code;

      l_count_i      NUMBER(3) := 0;
      l_rubriek_key  NUMBER(10);
   BEGIN
      g_errormsg := NULL;
      FOR l_rec IN c_rubriek
      LOOP
         g_errormsg := 'Fout bij toevoegen rubriek ' || l_rec.bgt_kostenrubriek_code;
         BEGIN
            SELECT r.bgt_kostenrubriek_key
              INTO l_rubriek_key
              FROM bgt_kostenrubriek r
             WHERE r.bgt_kostenrubriek_code = l_rec.bgt_kostenrubriek_code
               AND r.bgt_project_key = p_project_key;
            --
            fac.imp_writelog ( p_import_key
                             , 'W'
                             , 'Rubriek [' || l_rec.bgt_kostenrubriek_code || '] bestaat al'
                             , NULL
                             );
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               g_errorhint := 'Toevoegen rubriek';
               INSERT INTO bgt_kostenrubriek
               (  bgt_project_key
               ,  bgt_kostenrubriek_code
               ,  bgt_kostenrubriek_oms
               )
               VALUES
               (  p_project_key
               ,  l_rec.bgt_kostenrubriek_code
               ,  l_rec.bgt_kostenrubriek_oms
               )
               RETURNING bgt_kostenrubriek_key INTO l_rubriek_key;
               --
               fac.imp_writelog ( p_import_key
                                , 'I'
                                , 'Rubriek [' || l_rec.bgt_kostenrubriek_code || '] toegevoegd'
                                , NULL
                                );
               l_count_i:= l_count_i + 1;
         END;
      END LOOP;
      fac.imp_writelog ( p_import_key, 'S', 'Rubriek: aantal regels toegevoegd: ' || TO_CHAR(l_count_i), NULL);
      COMMIT;
   END; -- update_rubriek

   PROCEDURE update_groep( p_import_key  IN NUMBER
                         , p_project_key IN NUMBER)
   AS
      CURSOR c_groep
      IS
         SELECT bgt_project_discipline
              , bgt_project_code
              , bgt_kostenrubriek_code
              , prs_kostensoortgrp_altcode
              , prs_kostensoortgrp_oms
           FROM twyn_imp_kostensoortgrp
          ORDER BY prs_kostensoortgrp_altcode;
      l_rubriek_key  bgt_kostenrubriek.bgt_kostenrubriek_key%TYPE;
      l_groep_key    prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE;
      l_rubriek_code bgt_kostenrubriek.bgt_kostenrubriek_code%TYPE;
      l_groep_code   prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
      l_count        NUMBER(3) := 0;
   BEGIN
      g_errormsg := NULL;
      FOR l_rec IN c_groep
      LOOP
         BEGIN
            l_rubriek_code := l_rec.bgt_kostenrubriek_code;
            g_errormsg := 'Fout bij opvragen rubriek ' || l_rubriek_code;
            SELECT bgt_kostenrubriek_key
              INTO l_rubriek_key
              FROM bgt_kostenrubriek r
             WHERE r.bgt_kostenrubriek_code = l_rubriek_code
               AND r.bgt_project_key = p_project_key;
            --
            l_groep_code := l_rec.prs_kostensoortgrp_altcode;
            g_errormsg := 'Fout bij toevoegen groep ' || l_groep_code;
            BEGIN
               SELECT prs_kostensoortgrp_key
                 INTO l_groep_key
                 FROM prs_kostensoortgrp
                WHERE bgt_kostenrubriek_key = l_rubriek_key
                  AND prs_kostensoortgrp_altcode = l_groep_code;
               --
               fac.imp_writelog ( p_import_key
                                , 'W'
                                , 'Groep [' || l_groep_code || '] bestaat al'
                                , NULL
                                );
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  g_errorhint := 'Toevoegen groep';
                  INSERT INTO prs_kostensoortgrp
                  (  prs_kostensoortgrp_oms
                  ,  prs_kostensoortgrp_altcode
                  ,  bgt_kostenrubriek_key
                  )
                  VALUES
                  (  l_rec.prs_kostensoortgrp_oms
                  ,  l_groep_code
                  ,  l_rubriek_key
                  )
                  RETURNING prs_kostensoortgrp_key INTO l_groep_key;
                  --
                  fac.imp_writelog ( p_import_key
                                   , 'I'
                                   , 'Groep [' || l_groep_code || ': ' || l_rec.prs_kostensoortgrp_oms || '] toegevoegd'
                                   , NULL
                                   );
                  l_count := l_count + 1;
            END;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               fac.imp_writelog ( p_import_key, 'W', 'Onbekende rubriek [' || l_rec.bgt_kostenrubriek_code || ']', NULL);
         END;
      END LOOP;
      fac.imp_writelog ( p_import_key, 'S', 'Groep: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
      COMMIT;
   END; --update_groep

   PROCEDURE update_soort( p_import_key  IN NUMBER
                         , p_project_key IN NUMBER)
   AS
      CURSOR c_soort
      IS
         SELECT bgt_project_discipline
              , bgt_project_code
              , bgt_kostenrubriek_code
              , prs_kostensoortgrp_altcode
              , prs_kostensoort_oms
              , prs_kostensoort_opmerking
              , bgt_btw_code
              , bgt_btw_waarde
           FROM twyn_imp_kostensoort
          ORDER BY prs_kostensoort_oms;
      l_groep_key    prs_kostensoortgrp.prs_kostensoortgrp_key%TYPE;
      l_soort_key    prs_kostensoort.prs_kostensoort_key%TYPE;
      l_groep_code   prs_kostensoortgrp.prs_kostensoortgrp_altcode%TYPE;
      l_soort_code   prs_kostensoort.prs_kostensoort_oms%TYPE;
      l_btw_key      fin_btwtabelwaarde.fin_btwtabelwaarde_key%TYPE;
      l_count        NUMBER(3) := 0;
   BEGIN
      g_errormsg := NULL;
      FOR l_rec IN c_soort
      LOOP
         BEGIN
            l_groep_code := l_rec.prs_kostensoortgrp_altcode;
            g_errormsg := 'Fout bij opvragen groep ' || l_groep_code;
            SELECT prs_kostensoortgrp_key
              INTO l_groep_key
              FROM bgt_kostenrubriek r
                 , prs_kostensoortgrp g
             WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key
               AND r.bgt_kostenrubriek_code = l_rec.bgt_kostenrubriek_code
               AND g.prs_kostensoortgrp_altcode = l_groep_code
               AND r.bgt_project_key = p_project_key;
            --
            l_soort_code := l_rec.prs_kostensoort_oms;
            g_errormsg := 'Fout bij toevoegen soort ' || l_soort_code;
            BEGIN
               SELECT prs_kostensoort_key
                 INTO l_soort_key
                 FROM prs_kostensoort
                WHERE prs_kostensoortgrp_key = l_groep_key
                  AND prs_kostensoort_altcode = l_soort_code;
               --
               fac.imp_writelog ( p_import_key
                                , 'W'
                                , 'Soort [' || l_soort_code || '] bestaat al'
                                , NULL
                                );
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  g_errorhint := 'Toevoegen soort';
                  l_btw_key := get_btw_key(l_rec.bgt_btw_code, l_rec.bgt_btw_waarde);
                  INSERT INTO prs_kostensoort
                  (  prs_kostensoort_oms
                  ,  prs_kostensoort_altcode
                  ,  prs_kostensoort_opmerking
                  ,  prs_kostensoortgrp_key
                  ,  fin_btwtabelwaarde_key
                  )
                  VALUES
                  (  l_rec.prs_kostensoort_opmerking
                  ,  l_soort_code
                  ,  l_soort_code
                  ,  l_groep_key
                  ,  l_btw_key
                  )
                  RETURNING prs_kostensoort_key INTO l_soort_key;
                  --
                  fac.imp_writelog ( p_import_key
                                   , 'I'
                                   , 'Soort [' || l_soort_code || ': ' || l_rec.prs_kostensoort_opmerking || '] toegevoegd'
                                   , NULL
                                   );
                  l_count := l_count + 1;
            END;
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               fac.imp_writelog ( p_import_key, 'W', 'Onbekende groep [' || l_groep_code || ']', NULL);
         END;
      END LOOP;
      fac.imp_writelog ( p_import_key, 'S', 'Soort: aantal regels toegevoegd: ' || TO_CHAR(l_count), NULL);
      COMMIT;
   END; --update_soort

BEGIN
   update_rubriek(p_import_key, p_project_key);
   update_groep(p_import_key, p_project_key);
   update_soort(p_import_key, p_project_key);
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      g_errormsg :=
            g_errormsg
         || ' ORACLE (error '
         || oracle_err_num
         || '/'
         || oracle_err_mes
         || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        g_aanduiding || g_errormsg,
                        'Verwerken default projectinrichting {0} afgebroken!');
      COMMIT;
END;
/

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