INSERT INTO aaxx_verkoopbuffer (module,
                                export_datum,
                                prs_kostenplaats_nr,
                                debiteur,
                                prs_kostensoort_oms,
                                prs_kostensoort_opmerking,
                                prs_kostensoort_refcode,
                                prs_kostensoortgrp_oms,
                                omschrijving,
                                bedrag,
                                btw,
                                fin_btwtabelwaarde_code,
                                opdr_jaar,
                                exact_code_gebouw,
                                groepering,
                                subregelvolgorde)
   SELECT 'CNT',
          SYSDATE,
          DECODE (
             aaxx_get_user,
             'DBS',
             DECODE (
                ks.prs_kostensoort_upper,
                'CV EIG BOUW PL',
                '913757',
                'CV EIG INST PL',
                '913757',
                SUBSTR (aaxx_get_lev2_dep_code (k.prs_kostenplaats_nr), 1, 6)),
             'LB',
             exact_code,
             'DOW',
             k.prs_kostenplaats_nr,
             'NS',
             SUBSTR (prs_kostenplaats_nr, 1, 30),
             'SABIC',
             aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
             'VL',
             aaxx_get_top_dep_code (k.prs_kostenplaats_nr))
             prs_kostenplaats_nr,
          DECODE (
             aaxx_get_user,
             'DBS',
             DECODE (
                ks.prs_kostensoort_upper,
                'CV EIG BOUW PL',
                '913757',
                'CV EIG INST PL',
                '913757',
                SUBSTR (aaxx_get_lev2_dep_code (k.prs_kostenplaats_nr), 1, 6)),
             'LB',
             DECODE (g.alg_locatie_key,
                     1, '911928',                    -- Worldwide Headquarters
                     2, '911927',                                -- Maasvlakte
                     3, '911930',                                    -- Botlek
                     4, '911929'                                   -- Moerdijk
                                ),
             'DOW',
             SUBSTR (aaxx_get_top_dep_code (k.prs_kostenplaats_nr), 1, 6),
             'NS',
             SUBSTR (prs_kostenplaats_nr, 1, 30),
             'SABIC',
             (SELECT DISTINCT prs_leverancier_nr
                FROM prs_bedrijf b, prs_afdeling a
               WHERE b.prs_bedrijf_key = a.prs_bedrijf_key
                 AND b.prs_bedrijf_verwijder IS NULL
                 AND a.prs_afdeling_verwijder IS NULL
                 AND a.prs_afdeling_naam =
                        aaxx_get_top_dep_code (k.prs_kostenplaats_nr)),
             'VL',
             aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
             'ZCN',
             '912069')
             debiteur,
          ks.prs_kostensoort_oms
          || DECODE (TO_CHAR (opdr_datum, 'YYYY'),
                     TO_CHAR (TO_NUMBER (TO_CHAR (SYSDATE, 'yyyy')) - 1),
                     ' VJ',
                     ''),
          ks.prs_kostensoort_opmerking,
          vk_prs_kostensoort_refcode,
          DECODE (
             aaxx_get_user,
             'DOW',
             'Service Charges',
             'ZCN',
             DECODE (
                ks.prs_kostensoortgrp_key,
                2,
                'Servicekosten',                              -- Core Variable
                61,
                'Servicekosten',                      -- Core Variable Enduser
                41,
                'Servicekosten',                           -- Under Management
                21,
                DECODE (SUBSTR (ks.prs_kostensoort_upper, 1, 7),
                        'NC INV ', 'Investeringen',
                        'NC PROJ', 'Projecten')),
             (SELECT prs_kostensoortgrp_oms
                     || DECODE (
                           aaxx_get_user,
                           'LB',
                           ' ' || exact_code,
                           'SABIC',
                           ' '
                           || aaxx_get_top_dep_code (k.prs_kostenplaats_nr))
                FROM prs_kostensoortgrp ksg
               WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key))
             prs_kostensoortgrp_oms,
          'C' || cnt_contract_nummer_intern
          || DECODE (cnt_contract_versie,
                     NULL, '',
                     '.' || cnt_contract_versie)
             omschrijving,
          DECODE (aaxx_get_user,
                  'NS', ROUND (fg.bedrag * 1.065, 2),
                  fg.bedrag),
          0 btw,                                                 -- deprecated
          DECODE (aaxx_get_user,
                  'SABIC',
                  DECODE (prs_kostensoort_upper, 'CV OP VERV', 2, 5),
                  fin_btwtabelwaarde_code)
             fin_btwtabelwaarde_code,                            -- AADS#21168
          TO_CHAR (opdr_datum, 'YYYY'),
          DECODE (aaxx_get_user,
                  'LB', (SELECT alg_locatie_code
                           FROM alg_locatie l
                          WHERE l.alg_locatie_key = g.alg_locatie_key),
                  'VL', exact_code,
                  'DOW', '',
                  'SABIC', exact_code,
                  'ZCN', exact_code,
                  alg_gebouw_code)
             exact_code,
          SUBSTR (
             DECODE (
                aaxx_get_user,
                'DBS',
                DECODE (ks.prs_kostensoort_upper,
                        'CV EIG BOUW PL', '913757',
                        'CV EIG INST PL', '913757',
                        aaxx_get_lev2_dep_code (k.prs_kostenplaats_nr)),
                'DOW',
                'DOW',
                DECODE (SUBSTR (ks.prs_kostensoort_upper, 1, 5),
                        'NC P ', 'NCP',
                        'NC/CV')
                || SUBSTR (aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
                           1,
                           6),
                'SABIC',
                aaxx_get_top_dep_code (k.prs_kostenplaats_nr),
                'ZCN',
                ks.prs_kostensoortgrp_key,
                ''),
             1,
             12)
             groepering,
          DECODE (aaxx_get_user,
                  'LB', prs_kostensoort_oms || '1',
                  'DOW', 'A' || prs_kostensoort_oms,
                  '')
             subregelvolgorde
     FROM cnt_contract c,
          prs_bedrijf b,
          prs_kostenplaats k,
          ins_tab_discipline d,
          prs_kostensoort ks,
          -- aaxx_exp_factuur f,
          (SELECT cnt_contract_key,
                  alg_gebouw_code,
                  exact_code,
                  ag.alg_gebouw_key,
                  ag.alg_locatie_key
             FROM (  SELECT cnt_contract_key,
                            MIN (cp.cnt_alg_plaats_key) cnt_alg_plaats_key
                       FROM cnt_contract_plaats cp
                      WHERE cp.cnt_contract_plaats_verwijder IS NULL
                        AND cp.cnt_alg_plaats_code = 'G'
                   GROUP BY cnt_contract_key) cp,
                  alg_gebouw ag,
                  aaxx_v_exact_code_gebouw ae
            WHERE cp.cnt_alg_plaats_key = ag.alg_gebouw_key
              AND cp.cnt_alg_plaats_key = ae.alg_gebouw_key) g,
          (  SELECT fin_factuur_key,
                    cnt_contract_key,
                    SUM (fin_factuurregel_totaal) bedrag,
                    fin_factuurregel_btw btw,
                    aaxx_get_verkoop_btw_code (fin_btwtabelwaarde_key)
                       fin_btwtabelwaarde_code,
                    prs_kostenplaats_key,
                    prs_kostensoort_key,
                    vk_prs_kostensoort_refcode,
                    fin_factuur_boekmaand,
                    opdr_datum,
                    fin_factuur_datum
               FROM aaxx_v_factuur_gegevens
              WHERE fin_factuur_statuses_key = 7
           GROUP BY fin_factuur_key,
                    cnt_contract_key,
                    prs_kostenplaats_key,
                    prs_kostensoort_key,
                    fin_factuur_boekmaand,
                    opdr_datum,
                    fin_factuur_datum,
                    fin_factuurregel_btw,
                    fin_btwtabelwaarde_key,
                    fin_btwtabelwaarde_code,
                    vk_prs_kostensoort_refcode,
                    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 c.cnt_contract_key = g.cnt_contract_key(+)
      AND fg.prs_kostensoort_key = ks.prs_kostensoort_key(+)
      AND ( (aaxx_get_user = 'LB'
         AND ks.prs_kostensoort_upper LIKE 'NC%'            --  LyondellBasell
         AND ks.prs_kostensoort_upper <> 'NC DERDEN'
         AND ks.prs_kostensoort_upper <> 'NC PROJ')
        OR (aaxx_get_user = 'DBS'
        AND ks.prs_kostensoort_upper IN
                  ('CV AFVAL REST',
                   'CV OND',
                   'CV GEB NIET PLAN',
                   'CV INSTAL NIET PLAN',
                   'CV TERR VERHARD',
                   'CV TERR NIET PL',
                   'CV OND TERR',
                   'CV TERR OVR',
                   'CV CONS REST',
                   'CV CONS SERV',
                   'CV CONS OVR',
                   'CV CONS AUT',
                   'CV BEWAK',
                   'CV PREV CAL',
                   'CV BEWAK OVR',
                   'CV SCH',
                   'CV SCH GLAS',
                   'CV SCH OVR',
                   'CV VGM',
                   'CV GROEN',
                   'CV EIG BOUW PL',
                   'CV EIG INST PL',
                   'NC PROJ'))
        OR (aaxx_get_user = 'DOW'
        AND (ks.prs_kostensoort_upper = 'COR VAR CATE COFFE'
          OR ks.prs_kostensoort_upper = 'COR VAR IND CLO'
          OR ks.prs_kostensoort_upper = 'COR VAR MAIL SERVICES'
          OR ks.prs_kostensoort_upper = 'COR VAR VENDING'))
        OR (aaxx_get_user = 'SABIC'
        AND c.cnt_contract_looptijd_van >= TO_DATE ('20140101', 'yyyymmdd') --  Voor sabic geldt voor 2014 een ander mechanisme (AASA#28673)
        AND ks.prs_kostensoort_upper LIKE 'CV %'
        AND (c.cnt_contract_looptijd_van >= TO_DATE ('20150101', 'yyyymmdd') --  Voor sabic geldt voor 2015 een ander mechanisme (AASA#31618)
          OR (ks.prs_kostensoort_upper <> 'CV CONS REST'
          AND ks.prs_kostensoort_upper <> 'CV CONS AUT'
          AND ks.prs_kostensoort_upper <> 'CV SCH OVR'
          AND ks.prs_kostensoort_upper <> 'CV DOC POST'
          AND ks.prs_kostensoort_upper <> 'CV AFVAL REST'
          AND ks.prs_kostensoort_upper <> 'CV CHIP')))
        OR (aaxx_get_user = 'VL'
        AND ks.prs_kostensoort_upper IN
                  ('CV OND',
                   'CV TERR OVR',
                   'CV BEWAK OVR',
                   'CV BOUW PLAN',
                   'CV CONS REST',
                   'CV CONS OVR',
                   'CV SCH',
                   'CV WP',
                   'CV GEB NIET PLAN',
                   'CV CONS SERV',
                   'CV SCH GLAS',
                   'CV KART',
                   'CV INSTAL PLAN',
                   'CV BEWAK',
                   'CV VERH',
                   'CV GROEN',
                   'CV INSTAL NIET PLAN',
                   'CV PREV CAL',
                   'CV DOC POST',
                   'CV BEW',
                   'CV TERR VERHARD',
                   'CV REC',
                   'CV DOC REP',
                   'CV VERV PERS',
                   'CV OND TERR',
                   'CV ACHT OND',
                   'NC ACHT OND',
                   'CV EIG INST PL',
                   'CV EIG BOUW PL',
                   'NC INV BOUW',
                   'NC INV WP',
                   'NC INV INST'))
        OR (aaxx_get_user = 'ZCN'
        AND (ks.prs_kostensoort_upper LIKE 'CV %'
          OR ks.prs_kostensoort_upper LIKE 'CVE %'
          OR ks.prs_kostensoort_upper LIKE 'NC INV %'
          OR ks.prs_kostensoort_upper LIKE 'NC PROJ%')))
      AND c.cnt_contract_looptijd_van >= TO_DATE ('20150101', 'yyyymmdd')
      AND (ks.prs_kostensoort_upper = 'CV CONS REST'
        OR ks.prs_kostensoort_upper = 'CV CONS AUT'
        OR ks.prs_kostensoort_upper = 'CV SCH OVR'
        OR ks.prs_kostensoort_upper = 'CV DOC POST'
        OR ks.prs_kostensoort_upper = 'CV AFVAL REST'
        OR ks.prs_kostensoort_upper = 'CV CHIP');