--  aads18a
--
--
SET ECHO ON
SPOOL aads18a.lst
PROMPT $Revision$
ALTER SESSION SET nls_territory='america';
SET DEFINE OFF


DECLARE
    CURSOR c
   IS
    SELECT o.mld_opdr_key, kp.prs_kostenplaats_key
      FROM mld_melding m,
           mld_opdr o,
           fin_factuur f,
           prs_kostensoort ks,
           alg_v_allonroerendgoed aog,
           alg_onrgoedkenmerk ogk,
           fac_usrdata ud,
           prs_kostenplaats kp
      WHERE     f.mld_opdr_key = o.mld_opdr_key
            AND f.prs_kostensoort_key = ks.prs_kostensoort_key
            AND m.mld_melding_key = o.mld_melding_key
            AND ks.prs_kostensoort_upper LIKE 'ST ONDH%'
            AND aog.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
            AND ogk.alg_onrgoed_key = aog.alg_gebouw_key
            AND ogk.alg_kenmerk_key = 1063
            AND fac.safe_to_number (ogk.alg_onrgoedkenmerk_waarde) =
                  ud.fac_usrdata_key
            AND fac_usrdata_code = kp.prs_kostenplaats_nr
            AND kp.prs_kostenplaats_verwijder IS NULL
            AND coalesce(o.prs_kostenplaats_key,0) <> coalesce(kp.prs_kostenplaats_key,0)
            AND o.mld_statusopdr_key = 7;
BEGIN
   FOR rec IN c
   LOOP
      BEGIN
        UPDATE mld_opdr
          SET prs_kostenplaats_key = rec.prs_kostenplaats_key,
              mld_opdr_opmerking = mld_opdr_opmerking || CHR (13) || CHR (10)
      || '** Kostenplaats aangepast door exportfunctie **'
       WHERE mld_opdr_key = rec.mld_opdr_key
         AND COALESCE(prs_kostenplaats_key, -1) <> rec.prs_kostenplaats_key;
      EXCEPTION WHEN OTHERS THEN
         NULL; -- ignore
      END;
   END LOOP;
END;
/


CREATE OR REPLACE VIEW aaxx_v_factuur_gegevens2 (
   fin_factuur_key,
   opdracht_id,
   fin_factuur_datum,
   fin_factuur_nr,
   prs_bedrijf_key,
   fin_factuurregel_totaal,
   fin_factuurregel_btw,
   fin_factuurregel_nr,
   fin_factuur_debiteur_nr,
   fin_factuur_opmerking,
   fin_factuur_boekmaand,
   laatste_factuur,
   project_nummer,
   prs_kostensoort_refcode,
   prs_kostensoort_key,
   prs_kostenplaats_key,
   mld_opdr_key,
   cnt_contract_key
   )
AS
   SELECT f.fin_factuur_key,
          DECODE (cnt_contract_nummer,
             NULL, (SELECT    sd.ins_srtdiscipline_prefix
                           || m.mld_melding_key
                           || '/'
                           || o.mld_opdr_bedrijfopdr_volgnr
                    FROM mld_melding m,
                         ins_tab_discipline d,
                         ins_srtdiscipline sd
                    WHERE m.mld_melding_key = o.mld_melding_key
                          AND m.mld_ins_discipline_key = d.ins_discipline_key
                          AND d.ins_srtdiscipline_key =
                                sd.ins_srtdiscipline_key),
             'C' || TO_CHAR (cnt_contract_nummer))
             opdracht_id,
          f.fin_factuur_datum,
          f.fin_factuur_nr,
          COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
          fr.fin_factuurregel_totaal,
          fr.fin_factuurregel_btw,
          fr.fin_factuurregel_nr,
          f.fin_factuur_debiteur_nr,
          f.fin_factuur_opmerking,
          f.fin_factuur_boekmaand,
          COALESCE ( (SELECT fac.safe_to_number (fac_usrdata_code)
                      FROM fin_kenmerkfactuur fk, fac_usrdata ud
                      WHERE fk.fin_factuur_key = f.fin_factuur_key
                            AND f.fin_factuur_key = 2
                            AND fac.safe_to_number (fin_kenmerkfactuur_waarde) =
                                  fac_usrdata_key),
                    1
          ),
          TO_CHAR (DECODE (ot.mld_typeopdr_omschrijving,
                      'Projectorder', ( (SELECT    aaxx_get_user
                                                || sd.ins_srtdiscipline_prefix
                                                || m.mld_melding_key
                                         FROM mld_melding m,
                                              ins_tab_discipline d,
                                              ins_srtdiscipline sd
                                         WHERE m.mld_melding_key =
                                                  o.mld_melding_key
                                               AND m.mld_ins_discipline_key =
                                                     d.ins_discipline_key
                                               AND d.ins_srtdiscipline_key =
                                                     sd.ins_srtdiscipline_key)),
                      NULL)
          )
             projectnummer,
          DECODE (aaxx_get_user,
                  'NS',
                  DECODE (COALESCE (TO_CHAR (o.mld_opdr_datumbegin, 'yyyy'),
                                    TO_CHAR (c.cnt_contract_looptijd_tot,
                                             'yyyy'
                                    )
                          ),
                          '2009',
                          DECODE (SUBSTR (k.prs_kostensoort_upper, 1, 2),
                             'PR', '1350819',
                             '1350818'),
                          k.prs_kostensoort_refcode
                  ),
                  'DSM',
                  k.prs_kostensoort_refcode
          ),
          k.prs_kostensoort_key,
          COALESCE (o.prs_kostenplaats_key, c.prs_kostenplaats_key),
          o.mld_opdr_key,
          c.cnt_contract_key
   FROM fin_factuur f,
        fin_factuurregel fr,
        mld_opdr o,
        mld_typeopdr ot,
        cnt_contract c,
        prs_bedrijf b_o,
        prs_bedrijf b_c,
        prs_kostensoort k
   WHERE     f.fin_factuur_key = fr.fin_factuur_key
         AND f.mld_opdr_key = o.mld_opdr_key(+)
         AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
         AND f.cnt_contract_key = c.cnt_contract_key(+)
         AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
         AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
         AND f.prs_kostensoort_key = k.prs_kostensoort_key(+)
         AND f.fin_factuur_statuses_key = 7;


   INSERT INTO aaxx_verkoopbuffer
   (
       module, export_datum, prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, exact_code_gebouw
   )
   SELECT 'MLD',
          SYSDATE,
          DECODE (aaxx_get_user, 'DSM', aaxx_get_dep_code(k.prs_kostenplaats_nr), 'NS', SUBSTR (prs_kostenplaats_nr, 1, 30)),
          DECODE (aaxx_get_user, 'DSM', aaxx_get_dep_oms(k.prs_kostenplaats_nr),'NS', SUBSTR(prs_kostenplaats_nr, 1, 30)),
          ks.prs_kostensoort_oms,
          ks.prs_kostensoort_opmerking,
          ks.prs_kostensoort_refcode,
          (SELECT prs_kostensoortgrp_oms FROM prs_kostensoortgrp ksg WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
             sd.ins_srtdiscipline_prefix
          || m.mld_melding_key
          || '/'
          || mld_opdr_bedrijfopdr_volgnr
          || ' '
          || d.ins_discipline_omschrijving
          || ' ('
          || (SELECT mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding km, mld_kenmerk k
              WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                    AND k.mld_srtkenmerk_key = 143              -- opdrachtnummer
                    AND km.mld_melding_key = m.mld_melding_key)
          || ')'
             omschrijving,
          ROUND (fg.bedrag
                 * COALESCE ( (SELECT u.uplift
                               FROM aaxx_imp_uplift u
                               WHERE u.prs_leverancier_nr = b.prs_leverancier_nr
                                     AND UPPER(soort_order) = 'WO' 
                                     AND UPPER (u.prs_kostensoort_oms) =
                                           ks.prs_kostensoort_upper
                                     AND fg.fin_factuur_boekmaand =
                                              u.jaar
                                           || '-'
                                           || LTRIM (TO_CHAR (u.maand, '00'))),
                             DECODE (aaxx_get_user, 'DSM', 1, 'NS', 1.065)
                   ),
                 2
          ),
          btw,
          COALESCE(exact_code, alg_gebouw_code)
   FROM mld_opdr o,
        prs_bedrijf b,
        prs_kostenplaats k,
        mld_melding m,
        ins_tab_discipline d,
        ins_srtdiscipline sd,
        prs_kostensoort ks,
       -- aaxx_exp_factuur f,
        alg_gebouw g,
        alg_v_onroerendgoed og,
        (SELECT alg_onrgoed_key alg_gebouw_key,
                alg_onrgoedkenmerk_waarde exact_code
         FROM alg_onrgoedkenmerk
         WHERE alg_onrgoed_niveau = 'G' AND alg_kenmerk_key = 1009) exact,
        (SELECT fin_factuur_key,
                mld_opdr_key,
                SUM (fin_factuurregel_totaal) bedrag,
                aaxx_exp_btw(fin_factuurregel_totaal,fin_factuurregel_btw) btw,
                prs_kostenplaats_key,
                prs_kostensoort_key,
                fin_factuur_boekmaand
         FROM aaxx_v_factuur_gegevens2
         GROUP BY fin_factuur_key,
                  mld_opdr_key,
                  prs_kostenplaats_key,
                  prs_kostensoort_key,
                  fin_factuur_boekmaand,
                  fin_factuurregel_btw,
                  fin_factuurregel_totaal) fg
   WHERE     fg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
         AND fg.mld_opdr_key = o.mld_opdr_key
         AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
         AND og.alg_gebouw_key = g.alg_gebouw_key(+)
         AND og.alg_gebouw_key = exact.alg_gebouw_key(+)
        -- AND fg.fin_factuur_key = f.fin_factuur_key
         AND o.mld_melding_key = m.mld_melding_key
         AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
         AND m.mld_ins_discipline_key = d.ins_discipline_key
         AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
         AND (sd.ins_srtdiscipline_prefix = 'SA'
              OR (ks.prs_kostensoort_upper LIKE 'ST ONDH%'
                  AND o.mld_typeopdr_key = 167))    -- workorder
         AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+);
         



         
   INSERT INTO aaxx_verkoopbuffer
   (
       module, export_datum, prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoort_refcode, prs_kostensoortgrp_oms, omschrijving, bedrag, btw, exact_code_gebouw
   )         
    SELECT 'CNT',
           SYSDATE,
           DECODE (aaxx_get_user,
                   'DSM',
                   aaxx_get_dep_code (k.prs_kostenplaats_nr),
                   'NS',
                   SUBSTR (prs_kostenplaats_nr, 1, 30)
           ),
           DECODE (aaxx_get_user,
                   'DSM',
                   aaxx_get_dep_oms (k.prs_kostenplaats_nr),
                   'NS',
                   SUBSTR (prs_kostenplaats_nr, 1, 30)
           ),
           ks.prs_kostensoort_oms,
           ks.prs_kostensoort_opmerking,
           ks.prs_kostensoort_refcode,
           (SELECT prs_kostensoortgrp_oms
            FROM prs_kostensoortgrp ksg
            WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key),
              'C'
           || cnt_contract_nummer_intern
           || DECODE (cnt_contract_versie, NULL, '', '.' || cnt_contract_versie)
              omschrijving,
           ROUND (fg.bedrag * u.uplift, 2),
           btw,
           (SELECT MIN (alg_gebouw_code)
            FROM cnt_contract_plaats cp, alg_gebouw g
            WHERE     cp.cnt_contract_plaats_verwijder IS NULL
                  AND cp.cnt_contract_key = c.cnt_contract_key
                  AND cp.cnt_alg_plaats_code = 'G'
                  AND cp.cnt_alg_plaats_key = g.alg_gebouw_key)
    FROM cnt_contract c,
         prs_bedrijf b,
         prs_kostenplaats k,
         ins_tab_discipline d,
         prs_kostensoort ks,
       --  aaxx_exp_factuur f,
         aaxx_imp_uplift u,
         (SELECT fin_factuur_key,
                 cnt_contract_key,
                 SUM (fin_factuurregel_totaal) bedrag,
                 aaxx_exp_btw (fin_factuurregel_totaal, fin_factuurregel_btw) btw,
                 prs_kostenplaats_key,
                 prs_kostensoort_key,
                 fin_factuur_boekmaand
          FROM aaxx_v_factuur_gegevens2
          GROUP BY fin_factuur_key,
                   cnt_contract_key,
                   prs_kostenplaats_key,
                   prs_kostensoort_key,
                   fin_factuur_boekmaand,
                   fin_factuurregel_btw,
                   fin_factuurregel_totaal) fg
    WHERE     fg.prs_kostenplaats_key = k.prs_kostenplaats_key
          AND fg.cnt_contract_key = c.cnt_contract_key
        --  AND fg.fin_factuur_key = f.fin_factuur_key
          AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
          AND c.ins_discipline_key = d.ins_discipline_key
          AND u.prs_leverancier_nr = b.prs_leverancier_nr
          AND UPPER (soort_order) = 'CO'
          AND UPPER (u.prs_kostensoort_oms) = ks.prs_kostensoort_upper
          AND fg.fin_factuur_boekmaand =
                TO_CHAR (u.jaar) || '-' || LTRIM (TO_CHAR (u.maand, '00'))
          AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+);



drop VIEW aaxx_v_factuur_gegevens2;

COMMIT;

SPOOL OFF

