-- Customer specific once-script NYBU.
-- Vooral NYBU#30645, gebruik fin_verkoopfactuur voor facturatie RES
--
-- Support: +31 53 4800700

SET ECHO ON
SPOOL xNYBU20.lst
SET DEFINE OFF

-- Rapportage voor inzage in verkoopfactuurtabel
-- USER02 = 84
CREATE OR REPLACE VIEW nybu_v_rap_fin_verkoopfactuur AS SELECT 1 x FROM DUAL;
INSERT INTO fac_usrrap
            (fac_usrrap_omschrijving, fac_usrrap_view_name,
             fac_usrrap_in_huidige_locatie,
             fac_usrrap_template, fac_usrrap_macro,
             fac_usrrap_vraagbegindatum, fac_usrrap_vraageinddatum,
             fac_usrrap_functie,
             fac_usrrap_info,
             fac_functie_key,
             fac_usrrap_autorefresh
            )
     VALUES ('FIN: Verkoopfacturen', 'nybu_v_rap_fin_verkoopfactuur',
             NULL,
             NULL, NULL,
             0, 0,
             0,
             'Niet zonder filters gebruiken!',
             84,
             0
            );

-- Wat boekhouding: deze view gebruiken we niet meer.
DROP VIEW nybu_v_res_crediteringen;

-- Initiële vulling verkoopfactuurtabel. Crediteringen verliepen o.b.v. flexkenmerken waarin
-- de gefactureerde bedragen per deelreserveringn werden bijgehouden (excl BTW, BTW laag, BTW hoog)
-- Voortaan worden daarvoor de verkoopfactuurregels gebruikt, maar dan moeten die er wel zijn.
-- Daarom eenmalig verkoopfactuurregels aanmaken o.b.v. die flexkenmerken.
-- (Vind alle deelreserveringen met een gefactureerd bedrag excl btw. Maak een "ex BTW"-regel, plus
-- een "BTW hoog"-regel en een "BTW laag"-regel (indien van toepassing)
DELETE fin_verkoopfactuur;
INSERT INTO fin_verkoopfactuur (
   fin_verkoopfactuur_id,
   fin_verkoopfactuur_datum,
   fin_verkoopfactuur_omschr,
   fin_verkoopfactuur_xmlnode,
   fin_verkoopfactuur_refkey,
   prs_kostenplaats_nr,
   prs_kostenplaats_omschrijving,
   prs_kostenplaatsgrp_oms,
   prs_kostensoort_oms,
   prs_debiteur_naam,
   fin_verkoopfactuur_bedrag,
   fin_verkoopfactuur_btw,
   fin_btwtabelwaarde_code,
   fin_btwtabelwaarde_oms,
   fin_btwtabelwaarde_perc,
   fin_verkoopfactuur_maand,
   fin_verkoopfactuur_n1,
   fin_verkoopfactuur_n2,
   fin_verkoopfactuur_c1,
   fin_verkoopfactuur_c2,
   fin_verkoopfactuur_c3,
   fin_verkoopfactuur_d1
)
SELECT 'migratie',
       exp_datum,
       omschrijving,
       'reservering',
       res_rsv_ruimte_key,
       proj,
       proj,
       kostenplaats,
       grootboek,
       deb_nr,
       bedrag_ex,
       btw_bedrag,
       btw_code,
       btw_code,
       btw,
       periode,
       inex,
       0, -- debet
       reservering,
       klant,
       referentie,
       res_rsv_ruimte_van
  FROM (
   WITH base AS (
      SELECT COALESCE(b.prs_bedrijf_naam, k.prs_kostenplaats_omschrijving) klant,
             rr.res_rsv_ruimte_van,
             TO_CHAR(rr.res_rsv_ruimte_van, 'YYYYMM') periode,
             ks.prs_kostensoort_oms grootboek,
             kg.prs_kostenplaatsgrp_key kostenplaats_key,
             TRIM( SUBSTR(kg.prs_kostenplaatsgrp_oms, 1, 7) ) kostenplaats,
             COALESCE(b.prs_leverancier_nr, k.prs_kostenplaats_nr) deb_nr,
             k.prs_kostenplaats_key proj_key,
             k.prs_kostenplaats_nr proj,
             0 btw,
             ks.prs_kostensoort_btw,
             (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrtab_key = 42
                 AND fac.safe_to_number(fac_usrdata_code) = 0) btw_code,
             rr.res_reservering_key res_key,
             rr.res_rsv_ruimte_volgnr res_volgnr,
             kref.res_kenmerkreservering_waarde referentie,
             rr.res_reservering_key||'/'||rr.res_rsv_ruimte_volgnr reservering,
             rr.res_rsv_ruimte_key,
                DECODE(kref.res_kenmerkreservering_waarde,
                       NULL,'',
                       kref.res_kenmerkreservering_waarde||' ')
             || rr.res_rsv_ruimte_omschrijving descr,
              rr.res_reservering_key||'/'||rr.res_rsv_ruimte_volgnr||' - excl BTW' omschrijving,
             fac.safe_to_number(exp_excl.res_kenmerkreservering_waarde) bedrag_ex,
             0 btw_bedrag,
             k.prs_kostenplaats_extern inex,
             COALESCE( TO_DATE(exp_datum.res_kenmerkreservering_waarde, 'DD-MM-YYYY HH24:MI:SS'),
                       SYSDATE) exp_datum
        FROM res_rsv_ruimte rr,
             res_ruimte_opstelling ro,
             res_ruimte r,
             res_discipline di,
             prs_kostensoort ks,
             prs_kostenplaats k,
             prs_kostenplaatsgrp kg,
             (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
               WHERE k.res_srtkenmerk_key = 121 AND kw.res_kenmerk_key = k.res_kenmerk_key
                 AND kw.res_kenmerkwaarde_verwijder IS NULL
                 AND k.res_kenmerk_verwijder IS NULL) kref,
             (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
               WHERE k.res_srtkenmerk_key =  81 AND kw.res_kenmerk_key = k.res_kenmerk_key
                 AND kw.res_kenmerkwaarde_verwijder IS NULL
                 AND k.res_kenmerk_verwijder IS NULL) comp,
             (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
               WHERE k.res_srtkenmerk_key = 201 AND kw.res_kenmerk_key = k.res_kenmerk_key
                 AND kw.res_kenmerkwaarde_verwijder IS NULL
                 AND k.res_kenmerk_verwijder IS NULL) exp_excl,
             (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
               WHERE k.res_srtkenmerk_key = 202
                 AND kw.res_kenmerk_key = k.res_kenmerk_key
                 AND kw.res_kenmerkwaarde_verwijder IS NULL
                 AND k.res_kenmerk_verwijder IS NULL) exp_datum,
             prs_bedrijf b
       WHERE ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
         AND r.res_ruimte_key = ro.res_ruimte_key
         AND di.ins_discipline_key = r.res_discipline_key
         AND ks.prs_kostensoort_key(+) = di.prs_kostensoort_key
         AND k.prs_kostenplaats_key = rr.prs_kostenplaats_key
         AND kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key
         AND kref.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
         AND comp.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
         AND b.prs_bedrijf_key(+) = fac.safe_to_number(comp.res_kenmerkreservering_waarde)
         AND exp_excl.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
         AND exp_datum.res_rsv_ruimte_key(+) = rr.res_rsv_ruimte_key
   )
   SELECT *
     FROM base
   UNION ALL
   SELECT klant,
          res_rsv_ruimte_van,
          periode,
          grootboek,
          kostenplaats_key,
          kostenplaats,
          deb_nr,
          proj_key,
          proj,
          21 btw,
          prs_kostensoort_btw,
          (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrtab_key = 42
              AND fac.safe_to_number(fac_usrdata_code) = 21) btw_code,
          res_key,
          res_volgnr,
          referentie,
          reservering,
          b.res_rsv_ruimte_key,
          descr,
          reservering||' - BTW 21%' omschrijving,
          0 bedrag_ex,
          fac.safe_to_number(exp_hoog.res_kenmerkreservering_waarde) btw_bedrag,
          inex,
          exp_datum
     FROM base b,
          (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
            WHERE k.res_srtkenmerk_key = 222 AND kw.res_kenmerk_key = k.res_kenmerk_key
              AND kw.res_kenmerkwaarde_verwijder IS NULL
              AND k.res_kenmerk_verwijder IS NULL) exp_hoog
    WHERE exp_hoog.res_rsv_ruimte_key = b.res_rsv_ruimte_key
   UNION ALL
   SELECT klant,
          res_rsv_ruimte_van,
          periode,
          grootboek,
          kostenplaats_key,
          kostenplaats,
          deb_nr,
          proj_key,
          proj,
          21 btw,
          prs_kostensoort_btw,
          (SELECT fac_usrdata_omschr FROM fac_usrdata WHERE fac_usrtab_key = 42
              AND fac.safe_to_number(fac_usrdata_code) = 6) btw_code,
          res_key,
          res_volgnr,
          referentie,
          reservering,
          b.res_rsv_ruimte_key,
          descr,
          reservering||' - BTW 6%' omschrijving,
          0 bedrag_ex,
          fac.safe_to_number(exp_hoog.res_kenmerkreservering_waarde) btw_bedrag,
          inex,
          exp_datum
     FROM base b,
          (SELECT kw.* FROM res_kenmerkwaarde kw, res_kenmerk k
            WHERE k.res_srtkenmerk_key = 221 AND kw.res_kenmerk_key = k.res_kenmerk_key
              AND kw.res_kenmerkwaarde_verwijder IS NULL
              AND k.res_kenmerk_verwijder IS NULL) exp_hoog
    WHERE exp_hoog.res_rsv_ruimte_key = b.res_rsv_ruimte_key
)
ORDER BY reservering, omschrijving DESC;

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

COMMIT;

SPOOL OFF

@nybu.sql