-- Script containing combining all customer specific sql for LUDE: Ludens kinderopvang Utrecht
-- (c) 2014 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700

SPOOL xlude.lst
SET ECHO ON
SET DEFINE OFF

---------------------------------------------------------------------------------
--   INVESTERINGSBEGROTING                                                     --
---------------------------------------------------------------------------------

-- View voor kenmerkdomein 'Afdelingskostenplaatsen'
CREATE OR REPLACE VIEW lude_v_kpn_afd_invbegr
AS
   SELECT prs_kostenplaats_key,
             prs_kostenplaats_nr
          || ' '
          || prs_kostenplaats_omschrijving prs_kostenplaats_aanduiding
     FROM prs_v_aanwezigkostenplaats
    WHERE prs_kostenplaats_module = 'PRS'
      AND prs_kostenplaats_upper != 'NVT';

-- Rapportage "Begrotingsoverzicht"
-- Toont alle meldingen in vakgroeptype "Investeringsbegroting", plus alle opdrachten-met-kosten
-- bij reguliere meldingen op een investeringsbegroting-projectkostenplaats
-- LUDE#939: ook meldingen tonen waar (toch) geen kosten op gemaakt zijn
CREATE OR REPLACE VIEW lude_v_rap_invbegr
AS
   SELECT hide_f_sort,
          fclt_f_jaar,
          fclt_f_locatie,
          budget fclt_x_budget,
          prs_kostenplaats_limiet hide_f_limiet,
          DECODE( INSTR(budget, fclt_f_jaar),
                 0, '<font style="font-weight:bold;color:#f00">'||budget||'</font><br/>(gepland: '||gepland||')',
                 budget)
             html_budget,
          fclt_f_kostenplaats,
          html_nummer,
          omschrijving,
          fac.safe_to_number(
             DECODE (fclt_f_substatus,
                     'Geannuleerd', NULL,
                     'Afgewezen', NULL,
                     geraamd) )
             fclt_c_geraamd,
          fac.safe_to_number(
             DECODE (fclt_f_substatus,
                     'Geannuleerd', NULL,
                     'Afgewezen', NULL,
                     toegekend) )
             fclt_c_toegekend,
          fac.safe_to_number(
             DECODE(besteed,
                    0, NULL,
                    besteed) )
             fclt_c_besteed,
          fclt_f_substatus,
          fclt_f_status
     FROM (
      SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
             TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
             TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
             l.alg_locatie_omschrijving fclt_f_locatie,
             REPLACE(htf.escape_sc(km.prs_kostenplaats_omschrijving), '&'||'amp;', '&') budget,
             km.prs_kostenplaats_limiet,
             ka.prs_kostenplaats_aanduiding fclt_f_kostenplaats,
                '<a class="details" onclick=''FcltMgr.openDetail("'
             || 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
             || '")''>'
             || htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
             || '</a>'
                html_nummer,
             m.mld_melding_omschrijving omschrijving,
             fac.safe_to_number(geraamd.mld_kenmerkmelding_waarde) geraamd,
             fac.safe_to_number(toegekend.mld_kenmerkmelding_waarde) toegekend,
             COALESCE(o_open.mld_opdr_kosten,0) + COALESCE(o_klaar.mld_opdr_kosten,0) besteed,
             CASE
               WHEN status.mld_melding_key IS NOT NULL
                  THEN ud_status.fac_usrdata_omschr
               WHEN status.mld_melding_key IS NULL
                  THEN
                     CASE
                        WHEN m.mld_melding_status IN (0,2,3,4,7,99)
                           THEN
                              CASE
                                 WHEN COALESCE(o_open.mld_opdr_kosten,0) > 0
                                    THEN 'Uitgegeven'
                                 WHEN COALESCE(o_klaar.mld_opdr_kosten,0) > 0
                                    THEN 'Niet opgelost'
                                 WHEN toegekend.mld_melding_key IS NOT NULL
                                    THEN 'Toegekend'
                                 WHEN geraamd.mld_melding_key IS NOT NULL
                                    THEN 'Geraamd'
                                 ELSE
                                    'Aangevraagd'
                              END
                        ELSE
                           'Afgerond'
                     END
             END
                fclt_f_substatus,
             CASE
                WHEN m.mld_melding_status IN (0,2,3,4,7,99)
                THEN 'Open'
                ELSE 'Gesloten'
             END
                fclt_f_status
        FROM mld_melding m,
             mld_stdmelding sm,
             mld_discipline vg,
             ins_srtdiscipline vt,
             alg_locatie l,
             prs_kostenplaats km,
             -- Opdrachten die al klaar zijn (met kosten)
             (SELECT mld_melding_key,
                     SUM(mld_opdr_kosten) mld_opdr_kosten
                FROM mld_opdr
               WHERE mld_statusopdr_key NOT IN (1,2,3,4,5,8,10)
                 AND mld_opdr_kosten > 0
              GROUP BY mld_melding_key) o_klaar,
             -- Opdrachten die nog lopen (met kosten)
             (SELECT mld_melding_key,
                     SUM(mld_opdr_kosten) mld_opdr_kosten
                FROM mld_opdr
               WHERE mld_statusopdr_key NOT IN (1,2,6,7,9)
                 AND mld_opdr_kosten > 0
              GROUP BY mld_melding_key) o_open,
             lude_v_kpn_afd_invbegr ka,
             (SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
                 AND k.mld_srtkenmerk_key = 1
                 AND km.mld_kenmerkmelding_verwijder IS NULL) geraamd,
             (SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
                 AND k.mld_srtkenmerk_key = 2
                 AND km.mld_kenmerkmelding_verwijder IS NULL) toegekend,
             (SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
                 AND k.mld_srtkenmerk_key = 21
                 AND km.mld_kenmerkmelding_verwijder IS NULL) status,
             (SELECT km.* FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE k.mld_kenmerk_key = km.mld_kenmerk_key
                 AND k.mld_srtkenmerk_key = 42
                 AND km.mld_kenmerkmelding_verwijder IS NULL) kpn,
             (SELECT * FROM fac_usrdata
               WHERE fac_usrtab_key = 1) ud_status
       WHERE m.mld_melding_status != 1
         -- Afgemelde meldingen alleen meenemen als er geldige opdrachten (met of zonder kosten) bij zitten
         -- LUDE#32939: Nee, toch niet; ook meenemen zonder kosten
         AND NOT (    m.mld_melding_status IN (5,6)
                  AND NOT EXISTS (SELECT 1 FROM mld_opdr
                                   WHERE mld_melding_key = m.mld_melding_key
                                     --AND mld_opdr_kosten > 0
                                     AND mld_statusopdr_key NOT IN (1,2) ) )
         AND sm.mld_stdmelding_key = m.mld_stdmelding_key
         AND vg.ins_discipline_key = sm.mld_ins_discipline_key
         AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
         AND vt.ins_srtdiscipline_key = 1
         AND km.prs_kostenplaats_key = m.prs_kostenplaats_key
         AND geraamd.mld_melding_key(+) = m.mld_melding_key
         AND toegekend.mld_melding_key(+) = m.mld_melding_key
         AND status.mld_melding_key(+) = m.mld_melding_key
         AND ud_status.fac_usrdata_key(+) = fac.safe_to_number(status.mld_kenmerkmelding_waarde)
         AND kpn.mld_melding_key(+) = m.mld_melding_key
         AND ka.prs_kostenplaats_key(+) = fac.safe_to_number(kpn.mld_kenmerkmelding_waarde)
         AND l.alg_locatie_key = m.mld_alg_locatie_key
         AND o_open.mld_melding_key(+) = m.mld_melding_key
         AND o_klaar.mld_melding_key(+) = m.mld_melding_key
      UNION ALL
      SELECT TO_CHAR(m.mld_melding_einddatum, 'YYYY')||LPAD(TO_CHAR(m.mld_melding_key), 6, '0') hide_f_sort,
             TO_CHAR(m.mld_melding_einddatum, 'YYYY') fclt_f_jaar,
             TO_CHAR(m.mld_melding_einddatum, 'DD-MM-YYYY') gepland,
             l.alg_locatie_omschrijving fclt_f_locatie,
             htf.escape_sc(k.prs_kostenplaats_omschrijving) budget,
             k.prs_kostenplaats_limiet,
             NULL fclt_f_kostenplaats,
                '<a class="details" onclick=''FcltMgr.openDetail("'
             || 'appl/MLD/mld_melding.asp?urole=fo&'||'mld_key='||m.mld_melding_key
             || '")''>'
             || htf.escape_sc(vt.ins_srtdiscipline_prefix||m.mld_melding_key)
             || '</a>'
                html_nummer,
             m.mld_melding_omschrijving omschrijving,
             NULL geraamd,
             NULL toegekend,
             o.mld_opdr_kosten besteed,
             CASE
             WHEN m.mld_melding_status IN (0,2,3,4,7,99)
                THEN
                   CASE
                      WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (3,4,5,8,10)
                         THEN 'Uitgegeven'
                      WHEN o.mld_opdr_key IS NOT NULL AND o.mld_statusopdr_key IN (6,7,9)
                         THEN 'Niet opgelost'
                      ELSE 'Aangevraagd'
                   END
             ELSE
                'Afgemeld'
             END
                fclt_f_substatus,
             CASE
                WHEN m.mld_melding_status IN (0,2,3,4,7,99)
                THEN 'Open'
                ELSE 'Gesloten'
             END
                fclt_f_status
        FROM mld_opdr o,
             mld_melding m,
             mld_stdmelding sm,
             mld_discipline vg,
             ins_srtdiscipline vt,
             alg_locatie l,
             prs_kostenplaats k
       WHERE m.mld_melding_key = o.mld_melding_key
         AND m.mld_melding_status != 1
         AND sm.mld_stdmelding_key = m.mld_stdmelding_key
         AND vg.ins_discipline_key = sm.mld_ins_discipline_key
         AND vt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
         AND vt.ins_srtdiscipline_key != 1
         AND l.alg_locatie_key = m.mld_alg_locatie_key
         AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
         AND k.prs_kostenplaats_module = 'PRJ'
         AND o.mld_opdr_kosten > 0);

-- Rapportage "Budget per locatie"
-- Sommeert bovenstaande rapportage per budget en locatie
CREATE OR REPLACE VIEW lude_v_rap_invbegr_budg_loc
AS
   SELECT fclt_f_locatie||fclt_f_jaar||fclt_x_budget hide_f_sort,
          fclt_f_jaar, fclt_f_locatie,
          fclt_x_budget, html_budget,
          hide_f_limiet,
          SUM(fclt_c_toegekend) fclt_c_toegekend,
          SUM(DECODE(fclt_f_status,
                     'Open', fclt_c_besteed) )
             fclt_c_openstaand,
          SUM(DECODE(fclt_f_status,
                     'Gesloten', fclt_c_besteed) )
             fclt_c_uitgevoerd,
          SUM(fclt_c_besteed) fclt_c_besteed,
          SUM( COALESCE(fclt_c_besteed, fclt_c_toegekend) )
             fclt_c_prognose
     FROM lude_v_rap_invbegr
    WHERE fclt_f_substatus NOT IN ('Geannuleerd', 'Afgewezen')
   GROUP BY fclt_f_jaar, fclt_f_locatie, hide_f_limiet, fclt_x_budget, html_budget;

-- Rapportage "Budgetuitnuttig"
-- Beschikbaar budget per kostenplaats (categorie), uitgezet uitnutting.
-- Uitnutting = toegekend bedrag voor lopende meldingen, besteed bedrag voor afgesloten meldingen.
CREATE OR REPLACE VIEW lude_v_rap_invbegr_budg_uitnut
AS
   SELECT fclt_f_jaar,
          fclt_x_budget fclt_x_categorie,
          html_budget html_categorie,
          hide_f_limiet fclt_c_budget,
          SUM(fclt_c_toegekend) fclt_c_toegekend,
          SUM(fclt_c_openstaand) fclt_c_openstaand,
          SUM(fclt_c_uitgevoerd) fclt_c_uitgevoerd,
          SUM(fclt_c_besteed) fclt_c_besteed,
          SUM(fclt_c_prognose) fclt_c_prognose
     FROM lude_v_rap_invbegr_budg_loc
   GROUP BY fclt_f_jaar, hide_f_limiet, fclt_x_budget, html_budget;


---------------------------------------------------------------------------------
--   MJB (MeerJarenonderhoudsBegroting)                                        --
---------------------------------------------------------------------------------

-- Element = inspectie op MJB-object (component).
-- Elementen definieren met welke frequentie gebouwen/inventaris/apparatuur/... moeten
-- worden onderhouden/vervangen/...
-- Deze view levert alle inspecties op objectsoorten/-groepen in discipline "MJB", inclusief
-- periode, eenheidsprijs, eenheid, groep (categorie), verantwoordelijke (huurder/eigenaar)
-- en toelichting.
-- ins_discipline          MJB            41
CREATE OR REPLACE VIEW lude_v_mjb_elementen
AS
   SELECT ins_srtcontrole_key,
          sd.ins_srtdeel_key,
          sc.ins_srtcontrole_groep categorie,
          sdg.ins_srtdeel_omschrijving objectsoort,
          sc.ins_srtcontrole_omschrijving element,
          sc.ins_srtcontrole_kosten eenheidsprijs,
          sd.ins_srtdeel_eenheid eenheid,
          sc.ins_srtcontrole_periode periode,
          sc.ins_srtcontrole_opmerking verantwoordelijke,
          sc.ins_srtcontrole_info toelichting
     FROM ins_srtcontrole sc,
          ins_v_srtdeel_gegevens sdg,
          ins_srtdeel sd
    WHERE sc.ins_srtinstallatie_key =
                DECODE(sc.ins_srtcontrole_niveau,
                       'S', sdg.ins_srtdeel_key,
                       'G', sdg.ins_srtgroep_key,
                       'D', sdg.ins_discipline_key)
      AND sdg.ins_discipline_key = 41
      AND sd.ins_srtdeel_key = sdg.ins_srtdeel_key;

-- Rapportage met alle elementen
CREATE OR REPLACE VIEW lude_v_rap_mjb_elementen
AS
   SELECT categorie fclt_f_categorie,
          objectsoort fclt_f_objectsoort,
          element fclt_f_element,
          eenheidsprijs fclt_c_eenheidsprijs,
          eenheid,
          periode,
          verantwoordelijke fclt_f_verantwoordelijke,
          toelichting
     FROM lude_v_mjb_elementen;

-- Component = MJB-object met inspectie(s).
-- Componenten zijn bulkobjecten ("30 TL-armaturen") waarmee vastgelegd wordt wanneer
-- bepaalde zaken op lokaties zijn aangeschaft. M.b.v. de elementen wordt dan bepaald
-- wanneer ze vervangen/onderhouden moeten worden en wat dat naar verwachting gaat kosten.
-- Daarbij kan per inspectieresultaat de prijs overruled worden. Uitstel is mogelijk.
-- ins_discipline          MJB                        41
-- ins_kenmerk             Aantal                      6
-- ins_kenmerk             Uplift                      7
-- ins_srtkenmerk          Werkelijke eenh.prijs      22
CREATE OR REPLACE VIEW lude_v_mjb_componenten
AS
   SELECT alg_locatie_key,
          locatie,
          categorie,
          ins_srtdeel_key,
          objectsoort,
          e.ins_deel_key,
          element,
          aantal,
          COALESCE(werkelijk, eenheidsprijs) eenheidsprijs,
          eenheid,
          uplift,
          aantal * COALESCE(werkelijk, eenheidsprijs) * (1 + COALESCE(uplift, 0) / 100) totaalprijs,
          werkelijk,
          aanschaf,
          laatste,
          uitstel,
          periode,
          COALESCE(uitstel, COALESCE(laatste, aanschaf) + periode ) vervangingsjaar
--         ,verantwoordelijke
     FROM (
      SELECT l.alg_locatie_key,
             l.alg_locatie_omschrijving locatie,
             el.categorie categorie,
             sd.ins_srtdeel_key,
             sd.ins_srtdeel_omschrijving objectsoort,
             el.ins_srtcontrole_key,
             el.element element,
             d.ins_deel_key,
             fac.safe_to_number(aantal.ins_kenmerkdeel_waarde) aantal,
             el.eenheidsprijs eenheidsprijs,
             sd.ins_srtdeel_eenheid eenheid,
             fac.safe_to_number(uplift.ins_kenmerkdeel_waarde) uplift,
             fac.safe_to_number(TO_CHAR(d.ins_deel_aanmaak, 'YYYY')) aanschaf,
             el.periode periode,
             el.verantwoordelijke verantwoordelijke
        FROM ins_deel d,
             ins_srtdeel sd,
             ins_srtgroep sg,
             lude_v_mjb_elementen el,
             ins_v_alg_onroerendgoed og,
             alg_locatie l,
             (SELECT * FROM ins_kenmerkdeel
               WHERE ins_kenmerk_key = 6
                 AND ins_kenmerkdeel_verwijder IS NULL) aantal,
             (SELECT * FROM ins_kenmerkdeel
               WHERE ins_kenmerk_key = 7
                 AND ins_kenmerkdeel_verwijder IS NULL) uplift
       WHERE d.ins_deel_verwijder IS NULL
         AND sd.ins_srtdeel_key = d.ins_srtdeel_key
         AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
         AND sg.ins_discipline_key = 41
         AND og.alg_onrgoed_type = d.ins_alg_ruimte_type
         AND og.alg_onrgoed_keys = d.ins_alg_ruimte_key
         AND l.alg_locatie_key = og.alg_locatie_key
         AND el.ins_srtdeel_key(+) = sd.ins_srtdeel_key
         AND aantal.ins_deel_key = d.ins_deel_key
         AND uplift.ins_deel_key(+) = d.ins_deel_key ) e
   LEFT OUTER JOIN (
      SELECT dsc.ins_srtcontrole_key, dsc.ins_deel_key,
             fac.safe_to_number(TO_CHAR(dsc.ins_deelsrtcontrole_datum, 'YYYY')) laatste,
             NULL uitstel,                             -- respijt is depricated
             fac.safe_to_number(ins_kmdeelsrtcontr_waarde) werkelijk
        FROM ins_deelsrtcontrole dsc,
             ins_srtcontroledl_xcp xcp,
             (SELECT kdsc.* FROM ins_kmdeelsrtcontr kdsc, ins_kenmerk k
               WHERE k.ins_kenmerk_key = kdsc.ins_kenmerk_key
                 AND k.ins_srtkenmerk_key = 22
                 AND kdsc.ins_kmdeelsrtcontr_verwijder IS NULL) werkelijk
       WHERE werkelijk.ins_deelsrtcontrole_key(+) = dsc.ins_deelsrtcontrole_key
         AND xcp.ins_srtcontrole_key(+) = dsc.ins_srtcontrole_key
         AND xcp.ins_deel_key(+) = dsc.ins_deel_key
         AND dsc.ins_deelsrtcontrole_key =
                (SELECT MAX(ins_deelsrtcontrole_key) FROM ins_deelsrtcontrole
                  WHERE ins_deel_key = dsc.ins_deel_key
                    AND ins_srtcontrole_key = dsc.ins_srtcontrole_key) ) c
   ON     e.ins_deel_key = c.ins_deel_key
      AND e.ins_srtcontrole_key = c.ins_srtcontrole_key;

-- Rapportage met alle componenten
CREATE OR REPLACE VIEW lude_v_rap_mjb_componenten
AS
   SELECT locatie||COALESCE(categorie,'_')||objectsoort||vervangingsjaar hide_f_sort,
          locatie fclt_f_locatie,
          categorie fclt_f_categorie,
          objectsoort fclt_x_objectsoort,
             '<a class="details" onclick=''FcltMgr.openDetail("'
          || 'appl/INS/ins_deel.asp?urole=bo&'||'ins_key='||ins_deel_key
          || '")''>'
          || htf.escape_sc(objectsoort)
          || '</a>'
             html_object,
          element fclt_f_element,
          aantal,
          eenheidsprijs,
          'p/ '||eenheid eenheid,
          uplift,
          totaalprijs fclt_c_totaalprijs,
          TO_CHAR(aanschaf) aanschaf,
          TO_CHAR(laatste) uitgevoerd,
          TO_CHAR(periode) periode,
          TO_CHAR(uitstel) uitstel,
          TO_CHAR(vervangingsjaar) fclt_f_vervangingsjaar
--         ,verantwoordelijke
     FROM lude_v_mjb_componenten;

-- Gestylede rapportage die per jaar/locatie/categorie aangeeft hoeveel kiloeuro er
-- begroot moet worden voor MJB
CREATE OR REPLACE VIEW lude_v_rap_mjb_grid
AS
   SELECT grid.locatie || '-' || grid.categorie hide_f_regel,
          grid.locatie fclt_f_locatie,
          grid.categorie fclt_f_categorie,
          TO_CHAR(grid.jaar) fclt_f_jaar,
          COALESCE (comp.totaalprijs, 0) bedrag
     FROM (
         SELECT DISTINCT a.alg_locatie_key,
                j.jaar,
                a.alg_locatie_omschrijving locatie,
                e.categorie
           FROM (SELECT   alg_locatie_key,
                          alg_locatie_omschrijving
                   FROM   alg_v_aanweziglocatie
                 UNION ALL
                 SELECT   -1 alg_gebouw_key,
                          'Onbekend' alg_locatie_omschrijving
                   FROM   DUAL) a,
                ins_v_aanwezigdeel d,
                lude_v_mjb_elementen e,
                (SELECT n jaar
                   FROM (SELECT ROWNUM n FROM DUAL
                         CONNECT BY LEVEL <= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))+12)
                  WHERE n >= TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY'))-2) j
          WHERE e.ins_srtdeel_key = d.ins_srtdeel_key
            ORDER BY locatie, jaar
   ) grid
   LEFT OUTER JOIN (
      SELECT alg_locatie_key,
             categorie,
             SUM(totaalprijs/1000) totaalprijs,
             vervangingsjaar
        FROM lude_v_mjb_componenten
       WHERE vervangingsjaar IS NOT NULL
      GROUP BY alg_locatie_key, categorie, vervangingsjaar, periode
      UNION ALL
      SELECT alg_locatie_key,
             categorie,
             SUM(totaalprijs/1000) totaalprijs,
             vervangingsjaar + periode vervangingsjaar
        FROM lude_v_mjb_componenten
       WHERE vervangingsjaar IS NOT NULL
      GROUP BY alg_locatie_key, categorie, (vervangingsjaar +   periode)
      UNION ALL
      SELECT alg_locatie_key,
             categorie,
             SUM(totaalprijs/1000) totaalprijs,
             vervangingsjaar + 2*periode vervangingsjaar
        FROM lude_v_mjb_componenten
       WHERE vervangingsjaar IS NOT NULL
      GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 2*periode)
      UNION ALL
      SELECT alg_locatie_key,
             categorie,
             SUM(totaalprijs/1000) totaalprijs,
             vervangingsjaar + 3*periode vervangingsjaar
        FROM lude_v_mjb_componenten
       WHERE vervangingsjaar IS NOT NULL
      GROUP BY alg_locatie_key, categorie, (vervangingsjaar + 3*periode)
   ) comp
   ON     comp.alg_locatie_key = grid.alg_locatie_key
      AND comp.categorie = grid.categorie
      AND comp.vervangingsjaar = grid.jaar
;

BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('LUDE', 3); END;
/

COMMIT;

SPOOL OFF
