-- Customer specific once-script KFHT#34512.
--
-- (c) 2016 Facilitor B.V.
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL xKFHT34512.lst
SET DEFINE OFF

-- Eenmalig de charset van de EXACT-export (key=1) op utf-8 zetten!
UPDATE fac_export_app
   SET fac_export_app_charset = 'utf-8'
 WHERE fac_export_app_key = 1;

-- Eenmalig de charset van de EXACT-import (key=61) op utf-8 zetten!
UPDATE fac_import_app
   SET fac_import_app_charset = 'utf-8'
 WHERE fac_import_app_key = 61;

-- Speciale eenmalige versie om export te draaien over periode van 1-6-2016 t/m vandaag.
-- NIET VERGETEN om daarna dagelijkse export over gisteren weer te activeren (kfht.sql)!
CREATE OR REPLACE PROCEDURE kfht_select_exact (p_applname   IN VARCHAR2,
                                               p_applrun    IN VARCHAR2)
AS
   CURSOR c_opdr
   IS
        SELECT DISTINCT
               o.mld_melding_key,
               o.mld_opdr_bedrijfopdr_volgnr,
               sd.ins_srtdiscipline_prefix || TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
                  ticketnumber,
               ot.mld_typeopdr_omschrijving ordertype,
               a.prs_afdeling_omschrijving department,
               b.prs_bedrijf_naam supplier,
               SUBSTR (c.cnt_contract_nummer || DECODE (kl.jaarorder, NULL, '', '/' || kl.jaarorder), 1, 30)
                  contract,
               td.ins_discipline_omschrijving || ' / ' || sm.mld_stdmelding_omschrijving
                  reporttype,
               aog.alg_gebouw_code buildingcode,
               kp.prs_kostenplaats_nr costcenter,
               COALESCE (ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
                  costunit,
               o.mld_opdr_kosten costs,
               b.prs_leverancier_nr supplierreference,
               --TO_CHAR (fac.gettrackingdate ('ORDNEW', o.mld_opdr_key), 'dd-mm-yyyy hh24:mi:ss')
               TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy')
               || 'T' || TO_CHAR (o.mld_opdr_datumbegin, 'hh24:mi:ss')
                  issued,
               TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), 'dd-mm-yyyy')
               || 'T' || TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), 'hh24:mi:ss')
                  closed
          FROM mld_opdr o,
               fac_tracking t,
               mld_typeopdr ot,
               prs_bedrijf b,
               cnt_contract c,
               prs_kostenplaats kp,
               mld_melding m,
               mld_stdmelding sm,
               ins_tab_discipline td,
               ins_srtdiscipline sd,
               prs_kostensoort ksm,
               prs_kostensoort ksv,
               prs_perslid p,
               alg_v_allonrgoed_gegevens aog,
               prs_afdeling a,
               (SELECT prs_link_key, prs_kenmerklink_waarde jaarorder
                  FROM prs_v_aanwezigkenmerklink
                 WHERE prs_kenmerk_key = 1060) kl        -- Inkoopordernummer!
         WHERE     o.mld_statusopdr_key IN (6, 9, 7) -- Afgemeld/Afgerond/Verwerkt
               AND o.mld_opdr_key = t.fac_tracking_refkey
               AND t.fac_srtnotificatie_key IN (59, 61)       -- ORDAFM/ORDUPD
               --AND t.fac_tracking_datum > TRUNC (SYSDATE - 1) -- Export draait na middernacht!
               --AND t.fac_tracking_datum < TRUNC (SYSDATE) -- VAN 1-1-2016 TOT VANDAAG; SPECIALE EENMALIGE VERSIE!
               AND t.fac_tracking_datum BETWEEN TO_DATE ('010616', 'ddmmyy') AND TRUNC (SYSDATE) -- VAN 1-6-2016 TOT VANDAAG; SPECIALE EENMALIGE VERSIE!
               AND o.mld_typeopdr_key = ot.mld_typeopdr_key
               AND ot.mld_typeopdr_key != 8            -- Geen Offerteaanvraag
               AND o.mld_uitvoerende_keys = b.prs_bedrijf_key -- Geen Interne opdracht, tenzij
               AND b.prs_leverancier_nr IS NOT NULL -- Alleen bedrijven met leveranciernummer!
               AND o.cnt_contract_key = c.cnt_contract_key(+)
               AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
               AND o.mld_melding_key = m.mld_melding_key
               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
               AND sm.mld_ins_discipline_key = td.ins_discipline_key
               AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
               AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
               AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
               AND m.prs_perslid_key = p.prs_perslid_key
               AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
               AND p.prs_afdeling_key = a.prs_afdeling_key
               AND a.prs_afdeling_key = kl.prs_link_key(+)
      ORDER BY o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr;

   v_count   NUMBER;

   PROCEDURE add_row (p_regel IN VARCHAR2)
   AS
   BEGIN
      INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
          VALUES (SUBSTR (p_applname, 1, 12), v_count, p_regel);

      v_count := v_count + 1;
   END;

   PROCEDURE add_element (p_tag IN VARCHAR2, p_value IN VARCHAR2)
   AS
   BEGIN
      add_row(   '<'
              || p_tag
              || '>'
              || xml.char_to_html (p_value)
              || '</'
              || p_tag
              || '>');
   END;
BEGIN
   v_count := 0;

   DELETE fac_rapport
    WHERE fac_rapport_node = SUBSTR (p_applname, 1, 12);

   -- Header
   add_row ('<?xml version="1.0" encoding="utf-8" standalone="yes" ?>');
   add_row ('<eExact>');
   add_row ('<FacilitorImport>');
   --add_row ('<Tickets>');

   FOR rec IN c_opdr
   LOOP
      BEGIN
         add_row ('<Ticket>');
         add_element ('TicketNumber', rec.ticketnumber);
         add_element ('OrderType', rec.ordertype);
         add_element ('Department', rec.department);
         add_element ('Supplier', rec.supplier);
         add_element ('Contract', rec.contract);
         add_element ('ReportType', rec.reporttype);
         add_element ('BuildingCode', rec.buildingcode);
         add_element ('CostCenter', rec.costcenter);
         add_element ('CostUnit', rec.costunit);
         add_element ('Costs', rec.costs);
         add_element ('SupplierReference', rec.supplierreference);
         add_element ('Issued', rec.issued);
         add_element ('Closed', rec.closed);
         add_row ('</Ticket>');
         
         -- Markeer als geexporteerd?
      END;
   END LOOP;

   --add_row ('</Tickets>');
   add_row ('</FacilitorImport>');
   add_row ('</eExact>');
END;
/

COMMIT;
BEGIN adm.systrackscriptId('$Id$'); END;
/
SPOOL OFF
