--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database

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

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

-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE aadb_select_daily_task (p_applname   IN   VARCHAR2, p_applrun    IN   VARCHAR2)
AS
BEGIN
   aaxx_daily_task (p_applname, p_applrun);
   aadb_insert_perslid_from_mld (p_applname, p_applrun);
END;
/

-- exact verkoop
CREATE OR REPLACE VIEW aadb_v_export_exact_verkoop    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aadb_select_exact_verkoop (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE aadb_export_exact_verkoop (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
END;
/

-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW aadb_v_export_exact_verkoop_vj    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aadb_select_exact_verkoop_vj (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE aadb_export_exact_verkoop_vj (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/


-- exact projecturen (XML)
CREATE OR REPLACE VIEW aadb_v_export_exact_uren (result, result_order)
AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml;
CREATE OR REPLACE PROCEDURE aadb_select_exact_uren (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2
)
AS
BEGIN
  aaxx_select_exact_uren_xml(p_applname, p_applrun, '');
END;
/

-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE aadb_export_verwerk_exact_uren (
   p_applname   IN   VARCHAR2,
   p_applrun    IN   VARCHAR2,
   p_filedir    IN   VARCHAR2,
   p_filename   IN   VARCHAR2
)
AS
BEGIN
  aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '');
END;
/


CREATE OR REPLACE VIEW aadb_v_afd_kostenplaats
(
   prs_kostenplaats_key,
   prs_kostenplaats_omschrijving
)
AS
   SELECT k.prs_kostenplaats_key,
          prs_kostenplaats_nr || ' ' || prs_kostenplaats_omschrijving
          || DECODE (
                (SELECT COUNT (prs_kostenplaats_key)
                   FROM prs_kostenplaats k1
                  WHERE k1.prs_kostenplaats_verwijder IS NULL
                    AND UPPER (k1.prs_kostenplaats_omschrijving) =
                           UPPER (k.prs_kostenplaats_omschrijving)),
                1,
                NULL,
                ' [' || p.prs_afdeling_omschrijving || ']')
             prs_kostenplaats_omschrijving
     FROM prs_kostenplaats k, prs_afdeling a, prs_afdeling p
    WHERE k.prs_kostenplaats_key = a.prs_kostenplaats_key
      AND prs_kostenplaats_verwijder IS NULL
      AND a.prs_afdeling_parentkey = p.prs_afdeling_key
      AND a.prs_afdeling_verwijder IS NULL;

CREATE OR REPLACE PROCEDURE aadb_insert_perslid_from_mld (
   p_applname   IN VARCHAR2,
   p_applrun    IN VARCHAR2)
IS
   CURSOR c
   IS
      SELECT (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 141)
                achternaam,
             (SELECT UPPER (SUBSTR (fac_usrdata_omschr, 1, 1))
                FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
               WHERE fac.safe_to_number(km.mld_kenmerkmelding_waarde) = ud.fac_usrdata_key
                 AND km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 142)
                geslacht,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 143)
                tussenvoegsel,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 144)
                voorletters,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 145)
                voornaam,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 146)
                titel,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 181)
                telefoon,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 182)
                mobiel,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 149)
                email,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 162)
                login,
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
                 AND km.mld_melding_key = m.mld_melding_key
                 AND k.mld_srtkenmerk_key = 163)
                organisatie,
             mld_melding_key
        FROM mld_melding m
       WHERE mld_stdmelding_key = 821 AND mld_melding_status IN (2, 3);

   v_prs_srtperslid_key   NUMBER (10);
   v_count                NUMBER (10);
   v_prs_afdeling_key     NUMBER (10);
   v_fac_profiel_key      NUMBER (10);
   v_facilitor_key        NUMBER (10);
   v_prs_perslid_key      NUMBER (10);
   v_wachtwoord           VARCHAR2 (20);
   v_error_msg            VARCHAR2 (1000);
BEGIN
   v_prs_srtperslid_key := 1;                                      -- onbekend
   v_fac_profiel_key := 3;                                         -- 500 euro
   v_facilitor_key := 4;                             -- key van Facilitor user
   v_error_msg := NULL;

   FOR rec IN c
   LOOP
      BEGIN
         BEGIN
            -- gegenereerde wachtwoorden worden na 7 dagen automatisch verwijderd.
            DELETE prs_kenmerklink
             WHERE prs_kenmerk_key = 1000
               AND prs_kenmerklink_aanmaak < SYSDATE -7;

            -- zoek de afdeling die hoort bij de kostenplaats die in de aanvraag gevuld is.
            SELECT MIN (prs_afdeling_key)
              INTO v_prs_afdeling_key
              FROM prs_afdeling
             WHERE prs_kostenplaats_key = rec.organisatie
               AND prs_afdeling_verwijder IS NULL;

            IF v_prs_afdeling_key IS NULL
            THEN
               v_error_msg := 'Geen geldige afdeling gevonden';
            ELSE
               SELECT COUNT (prs_perslid_key)
                 INTO v_count
                 FROM prs_perslid
                WHERE prs_perslid_oslogin = UPPER (rec.login)
                  AND prs_perslid_verwijder IS NULL;

               IF v_count <> 0
               THEN
                  v_error_msg := 'Persoon met deze login komt al voor.';
               ELSE
                  INSERT INTO prs_perslid (prs_perslid_module,
                                           prs_srtperslid_key,
                                           prs_afdeling_key,
                                           prs_perslid_naam,
                                           prs_perslid_voorletters,
                                           prs_perslid_tussenvoegsel,
                                           prs_perslid_voornaam,
                                           prs_perslid_telefoonnr,
                                           prs_perslid_mobiel,
                                           prs_perslid_email,
                                           prs_perslid_titel,
                                           prs_perslid_geslacht,
                                           fac_profiel_key,
                                           prs_perslid_oslogin)
                      VALUES ('PRS',
                              v_prs_srtperslid_key,
                              v_prs_afdeling_key,
                              SUBSTR (rec.achternaam, 1, 30),
                              SUBSTR (rec.voorletters, 1, 10),
                              SUBSTR (rec.tussenvoegsel, 1, 15),
                              SUBSTR (rec.voornaam, 1, 30),
                              SUBSTR (rec.telefoon, 1, 15),
                              SUBSTR (rec.mobiel, 1, 15),
                              SUBSTR (rec.email, 1, 200),
                              SUBSTR (rec.titel, 1, 15),
                              DECODE (rec.geslacht, 'M', 1, 0),
                              v_fac_profiel_key,
                              SUBSTR (rec.login, 1, 30))
                   RETURNING prs_perslid_key
                        INTO v_prs_perslid_key;
               END IF;
            END IF;
         EXCEPTION
            WHEN OTHERS
            THEN
               v_error_msg :=
                  'Onbekende fout opgetreden tijdens het toevoegen van de persoon.\nNeem contact op met de beheerder.';
               v_error_msg := v_error_msg + SUBSTR (SQLERRM, 1, 200);
         END;

         IF v_error_msg IS NULL
         THEN
            BEGIN
               -- accepteren van de melding.
               mld.setmeldingstatus (rec.mld_melding_key, 4, v_facilitor_key);
               mld.setmeldingstatus (rec.mld_melding_key, 5, v_facilitor_key);

               UPDATE mld_melding
                  SET mld_melding_opmerking = 'Persoon is aangemaakt.'
                WHERE mld_melding_key = rec.mld_melding_key;

               mld.mld_nextworkflowstep (rec.mld_melding_key, 0);

               SELECT DBMS_RANDOM.string ('A', 10) str
                 INTO v_wachtwoord
                 FROM DUAL;

               aaxx_set_kenmerk ('PRS',
                                 1000,
                                 v_prs_perslid_key,
                                 v_wachtwoord,
                                 NULL);

               prs.setpassword(v_prs_perslid_key, v_wachtwoord);

               fac.trackaction ('PRSNEW',
                                v_prs_perslid_key,
                                NULL,
                                NULL,
                                NULL);

               fac.putnotificationsrtprio (NULL,
                                           v_prs_perslid_key,
                                           'PRSNEW',
                                           v_prs_perslid_key,
                                           'Inloggegevens Facilitair Management Informatie Systeem',
                                           NULL,
                                           NULL,
                                           NULL,
                                           NULL,
                                           2,
                                           NULL);
            END;
         ELSE
            BEGIN
               mld.setmeldingstatus (rec.mld_melding_key, 1, v_facilitor_key);

               UPDATE mld_melding
                  SET mld_melding_opmerking = v_error_msg
                WHERE mld_melding_key = rec.mld_melding_key;
            END;
         END IF;
      END;
   END LOOP;
END aadb_insert_perslid_from_mld;
/

-- bundel catering
CREATE OR REPLACE VIEW aadb_v_catering_gebouw
(
   res_rsv_artikel_key,
   res_rsv_artikel_prijs,
   res_rsv_artikel_levering,
   prs_kostenplaats_key,
   alg_gebouw_key
)
AS
   SELECT rra.res_rsv_artikel_key,
          rra.res_rsv_artikel_prijs,
          rra.res_rsv_artikel_levering,
          rrr.prs_kostenplaats_key,
          v.alg_gebouw_key
     FROM res_rsv_ruimte rrr,
          res_rsv_artikel rra,
          alg_ruimte r,
          alg_verdieping v,
          alg_gebouw g,
          res_artikel ra,
          (  SELECT COALESCE (MAX (ir2a.alg_ruimte_key), irrr.alg_ruimte_key)
                       alg_ruimte_key,
                    irrr.res_rsv_ruimte_key
               FROM res_rsv_ruimte irrr, res_v_rsv_ruimte_2_alg_ruimte ir2a
              WHERE irrr.res_rsv_ruimte_key = ir2a.res_rsv_ruimte_key(+)
           GROUP BY irrr.res_rsv_ruimte_key, irrr.alg_ruimte_key) r2a
    WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
      AND r2a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
      AND r2a.alg_ruimte_key = r.alg_ruimte_key
      AND r.alg_verdieping_key = v.alg_verdieping_key
      AND v.alg_gebouw_key = g.alg_gebouw_key
      AND rra.res_rsv_artikel_verwijder IS NULL
      AND rra.res_status_bo_key = 5
      AND rra.res_artikel_key = ra.res_artikel_key;

CREATE OR REPLACE VIEW aadb_v_export_bundel_catering    (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_bundel_catering;
CREATE OR REPLACE PROCEDURE aadb_export_bundel_catering (
   p_applname   IN VARCHAR2,
   p_applrun    IN VARCHAR2,
   p_filedir    IN VARCHAR2,
   p_filename   IN VARCHAR2)
AS
   CURSOR c_gebouw (lev_date DATE)
   IS
        SELECT cg.alg_gebouw_key, g.alg_locatie_key
          FROM aadb_v_catering_gebouw cg, alg_gebouw g
         WHERE cg.alg_gebouw_key = g.alg_gebouw_key
           AND res_rsv_artikel_levering < lev_date
      GROUP BY cg.alg_gebouw_key, g.alg_locatie_key;

   CURSOR c_kostenplaats (
      lev_date                         DATE,
      c_alg_gebouw_key                 NUMBER)
   IS
        SELECT alg_gebouw_key,
               prs_kostenplaats_key,
               SUM (res_rsv_artikel_prijs) prijs
          FROM aadb_v_catering_gebouw
         WHERE res_rsv_artikel_levering < lev_date
           AND alg_gebouw_key = c_alg_gebouw_key
      GROUP BY alg_gebouw_key, prs_kostenplaats_key;

   c_catmld_uitvoertijd            mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(2, 'D');
   v_errormsg                      VARCHAR (200);
   v_errorhint                     VARCHAR (200);
   oracle_err_num                  NUMBER;
   oracle_err_mes                  VARCHAR2 (200);
   v_laatste_export                DATE;
   v_mld_melding_key               NUMBER;
   v_mld_opdr_key                  NUMBER;
   v_prs_bedrijf_key               NUMBER;
   v_prs_dienst_key                NUMBER;
   v_prs_kostenplaats_key          NUMBER;
   v_mld_opdr_bedrijfopdr_volgnr   NUMBER;
   v_aanvrager                     NUMBER;
   v_mld_workorder_key             NUMBER;
   v_mld_stdmelding_key            NUMBER;
   v_date                          DATE;
   v_count                         NUMBER;
BEGIN
   -- Facilitor
   v_aanvrager := 4;
   -- DB Schenker:AAFM kostenplaats key
   v_prs_kostenplaats_key := 141;
   -- stdmelding key voor recharge
   v_mld_stdmelding_key := 1441;
   -- key van opdrachttype workorder
   v_mld_workorder_key := 1;
   -- key van bedrijf Appèl
   v_prs_bedrijf_key := 750;

   v_errorhint := 'Bepaal einddatum';

   -- wat is de eerste dag van de huidige maand
   v_date := TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd');

   SELECT COUNT (mld_opdr_key)
     INTO v_count
     FROM mld_opdr
    WHERE mld_opdr_omschrijving =
             'Catering factuur tot: ' || TO_CHAR (v_date, 'dd-mm-yyyy');

   IF v_count > 0
   THEN
      fac.writelog (
         p_applname,
         'E',
         'Catering export is al eerder uitgevoerd.',
         'Controleer opdrachten met datum: '
         || TO_CHAR (v_date, 'dd-mm-yyyy'));
   ELSE
      FOR rec IN c_gebouw (v_date)
      LOOP
         -- controleer of ik een melding heb op dit gebouw
         BEGIN
            v_errorhint := 'Opzoeken catering melding';

            SELECT mld_melding_key
              INTO v_mld_melding_key
              FROM mld_melding, alg_v_onroerendgoed og
             WHERE mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
               AND og.alg_gebouw_key = rec.alg_gebouw_key
               AND mld_stdmelding_key = v_mld_stdmelding_key
               AND v_date BETWEEN mld_melding_datum
                              AND  mld_melding_einddatum + 1;
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               -- geen melding voor deze locatie gevonden. Dan maken we er maar een aan.

               v_errorhint := 'Aanmaken catering melding';

               BEGIN
                  INSERT INTO mld_melding (mld_melding_omschrijving,
                                           prs_perslid_key,
                                           prs_kostenplaats_key,
                                           mld_stdmelding_key,
                                           mld_alg_locatie_key,
                                           mld_alg_onroerendgoed_keys,
                                           mld_melding_einddatum,
                                           mld_melding_datum,
                                           mld_melding_t_uitvoertijd,
                                           mld_meldbron_key,
                                           mld_melding_module,
                                           mld_melding_spoed)
                      VALUES ('Catering factuur boekingen',
                              v_aanvrager,
                              v_prs_kostenplaats_key,
                              v_mld_stdmelding_key,
                              rec.alg_locatie_key,
                              rec.alg_gebouw_key,
                              TO_DATE (TO_CHAR (v_date, 'YYYY') || '1231',
                                       'YYYYMMDD'),
                              TO_DATE (TO_CHAR (v_date, 'YYYY') || '0101',
                                       'YYYYMMDD'),
                              c_catmld_uitvoertijd,
                              5,
                              'MLD',
                              3)
                   RETURNING mld_melding_key
                        INTO v_mld_melding_key;

                  BEGIN
                     mld.setmeldingstatus (v_mld_melding_key, 2, v_aanvrager);
                  END;

                  BEGIN
                     mld.setmeldingstatus (v_mld_melding_key, 4, v_aanvrager);
                  END;

                  UPDATE mld_melding
                     SET mld_melding_behandelaar_key = v_aanvrager
                   WHERE mld_melding_key = v_mld_melding_key;
               END;
         END;

         FOR rec_k IN c_kostenplaats (v_date, rec.alg_gebouw_key)
         LOOP
            BEGIN
               v_mld_opdr_bedrijfopdr_volgnr :=
                  mld.bepaalopdrmeldingvolgnr (v_mld_melding_key);

               v_errorhint :=
                  'Maak opdracht aan om factuur van cateraar te matchen';

               -- maak opdracht aan om cateringfactuur van leverancier te matchen
               INSERT INTO mld_opdr (mld_melding_key,
                                     prs_kostenplaats_key,
                                     mld_statusopdr_key,
                                     mld_typeopdr_key,
                                     prs_perslid_key,
                                     mld_uitvoerende_keys,
                                     mld_opdr_datumbegin,
                                     mld_opdr_einddatum,
                                     mld_opdr_module,
                                     mld_opdr_omschrijving,
                                     mld_opdr_materiaal,
                                     mld_opdr_kosten,
                                     mld_opdr_bedrijfopdr_volgnr)
               VALUES ( v_mld_melding_key,
                        rec_k.prs_kostenplaats_key,
                        5,                                     -- uitgegeven
                        v_mld_workorder_key,
                        v_aanvrager,
                        v_prs_bedrijf_key,
                        v_date - 1,
                        fac.datumtijdplusuitvoertijd (SYSDATE, 1, 'DAGEN'),
                        'MLD',
                        'Catering factuur tot: ' || TO_CHAR (v_date, 'dd-mm-yyyy'),
                        rec_k.prijs,
                        rec_k.prijs,
                        v_mld_opdr_bedrijfopdr_volgnr)
               RETURNING mld_opdr_key INTO v_mld_opdr_key;

                  INSERT INTO aaxx_bundel_catering_ref (mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, res_rsv_artikel_verwerkt)
                        SELECT v_mld_opdr_key, res_rsv_artikel_key, res_rsv_artikel_prijs, v_date
                            FROM aadb_v_catering_gebouw cg
                           WHERE cg.alg_gebouw_key = rec.alg_gebouw_key
                             AND coalesce(cg.prs_kostenplaats_key, -1) = coalesce (rec_k.prs_kostenplaats_key, -1)
                             AND res_rsv_artikel_levering < v_date;

                  UPDATE res_rsv_artikel rra
                     SET res_rsv_artikel_verwerkt = SYSDATE,
                         res_status_bo_key = 6
                   WHERE EXISTS
                            (SELECT mld_opdr_key
                               FROM aaxx_bundel_catering_ref bc
                              WHERE bc.mld_opdr_key  = v_mld_opdr_key
                                AND bc.res_rsv_artikel_key = rra.res_rsv_artikel_key);

               v_errorhint := 'Update melding status';
               mld.updatemeldingstatus (v_mld_melding_key, 0, v_aanvrager); -- Facilitor
               -- meld de opdracht af
               v_errorhint := 'Update opdracht status';
               MLD.setopdrachtstatus (v_mld_opdr_key, 6, v_aanvrager);

            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.writelog (p_applname, 'E', v_errormsg, v_errorhint);
            END;
         END LOOP;
      END LOOP;
   END IF;

   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

