From 249dd33b0f53fadd507a3e728bbd54a3a240bab8 Mon Sep 17 00:00:00 2001 From: Suzan Wiegerinck Date: Mon, 29 Mar 2021 13:26:08 +0000 Subject: [PATCH] NYBU#65991: Export vermaat eenmalig voor 5 weken svn path=/Customer/trunk/; revision=50542 --- NYBU/nybu.sql | 365 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 365 insertions(+) diff --git a/NYBU/nybu.sql b/NYBU/nybu.sql index 23e41e10e..18f7a52df 100644 --- a/NYBU/nybu.sql +++ b/NYBU/nybu.sql @@ -11617,6 +11617,371 @@ EXCEPTION END nybu_select_res_cat; / +CREATE OR REPLACE PROCEDURE nybu_select_res_cat_5w (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) +AS + v_aanduiding VARCHAR2 (200); + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + CURSOR c (c_tot DATE) + IS + SELECT klant, + res_rsv_ruimte_van, + periode, + grootboek, + kostenplaats_key, + kostenplaats, + deb_nr, + proj_key, + proj, + btw, + prs_kostensoort_btw, + res_key, + res_volgnr, + referentie, + res_rsv_ruimte_key, + descr, + aantal, + omschrijving, + soort, + btw_code, + SUM (prijs_ex) prijs_ex, + SUM (prijs_inc) prijs_inc, + SUM (btw_laag) btw_laag, + SUM (btw_hoog) btw_hoog, + SUM (korting) korting, + SUM (inex) inex + FROM (SELECT 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, + k.prs_kostenplaats_nr deb_nr, + k.prs_kostenplaats_key proj_key, + k.prs_kostenplaats_nr proj, + CASE + WHEN btw.perc > 9 + THEN + btw.perc + WHEN (btw.perc = 6 OR btw.perc = 9) + THEN + CASE + WHEN rra.res_rsv_artikel_levering < + TO_DATE ('1-1-2019', 'dd-mm-yyyy') + THEN + 6 + ELSE + 9 + END + ELSE + 0 + END + btw, + ks.prs_kostensoort_btw, + CASE + WHEN btw.perc > 9 + THEN + btw.btw_code + WHEN (btw.perc = 6 OR btw.perc = 9) + THEN + CASE + WHEN rra.res_rsv_artikel_levering < + TO_DATE ('1-1-2019', 'dd-mm-yyyy') + THEN + 'VL' + ELSE + btw.btw_code + END + ELSE + btw.btw_code + END + btw_code, + rr.res_reservering_key res_key, + rr.res_rsv_ruimte_volgnr res_volgnr, + NULL referentie, + rr.res_reservering_key + || '/' + || rr.res_rsv_ruimte_volgnr + reservering, + rr.res_rsv_ruimte_key, + rr.res_rsv_ruimte_omschrijving descr, + 1 aantal, + NVL ( + (SELECT r.res_ruimte_nr + FROM res_ruimte_opstelling ro, res_ruimte r + WHERE ro.res_ruimte_opstel_key = + rr.res_ruimte_opstel_key + AND r.res_ruimte_key = ro.res_ruimte_key), ---- NVL ipv coalesce aangepast nav Oracle bug #55835 + (SELECT 'Kamer ' + || alg_ruimte_nr + || ' (' + || alg_ruimte_omschrijving + || ')' + FROM alg_v_ruimte_gegevens rg + WHERE rg.alg_ruimte_key = rr.alg_ruimte_key)) + omschrijving, + 'catering' soort, + (rra.res_rsv_artikel_prijs + / ( (CASE + WHEN btw.perc > 9 + THEN + btw.perc + WHEN (btw.perc = 6 OR btw.perc = 9) + THEN + CASE + WHEN rra.res_rsv_artikel_levering < + TO_DATE ('1-1-2019', + 'dd-mm-yyyy') + THEN + 6 + ELSE + 9 + END + ELSE + 0 + END) + + 100)) + * 100 + prijs_ex, + rra.res_rsv_artikel_prijs prijs_inc, + DECODE ( + btw.perc, + 9, + rra.res_rsv_artikel_prijs + * (CASE + WHEN rra.res_rsv_artikel_levering < + TO_DATE ('1-1-2019', 'dd-mm-yyyy') + THEN + 6 + ELSE + 9 + END) + / (100 + + (CASE + WHEN rra.res_rsv_artikel_levering < + TO_DATE ('1-1-2019', 'dd-mm-yyyy') + THEN + 6 + ELSE + 9 + END)), + 0) + btw_laag, + DECODE ( + btw.perc, + 21, + rra.res_rsv_artikel_prijs + * btw.perc + / (100 + btw.perc), + 0) + btw_hoog, + 0 korting, + 0 inex + FROM res_rsv_ruimte rr, + prs_kostenplaats k, + prs_kostenplaatsgrp kg, + res_rsv_artikel rra, + res_artikel ra, + res_discipline di, + prs_kostensoort ks, + (SELECT fac.safe_to_number (fac_usrdata_upper) perc, + fac_usrdata_omschr btw_code + FROM fac_usrdata + WHERE fac_usrtab_key = 42 + AND fac_usrdata_verwijder IS NULL) btw + WHERE COALESCE (k.prs_kostenplaats_extern, 0) = 0 + AND kg.prs_kostenplaatsgrp_key = + k.prs_kostenplaatsgrp_key + AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key + AND rr.res_rsv_ruimte_dirtlevel = 0 + AND rr.res_rsv_ruimte_afgerond = 1 + AND rr.res_rsv_ruimte_verwijder IS NULL + AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key + AND rra.res_artikel_key = ra.res_artikel_key + AND ra.res_discipline_key = di.ins_discipline_key + AND ks.prs_kostensoort_key = di.prs_kostensoort_key + AND di.ins_discipline_key NOT IN (462, 581, 741) -- hotelkamers, inhuur voorzieningen, linnen + AND ra.res_artikel_btw = btw.perc + AND rra.res_rsv_artikel_prijs <> 0 + AND rra.res_rsv_artikel_levering < c_tot + AND NOT EXISTS -- flag reservering bevat catering op externe kostenplaats is niet gezet. + (SELECT res_kenmerkwaarde_key + FROM res_kenmerkwaarde kw, res_kenmerk k + WHERE kw.res_kenmerk_key = k.res_kenmerk_key + AND k.res_srtkenmerk_key = 321 -- Reservering bevat catering op externe kostenpaats. + AND kw.res_rsv_ruimte_key = + rr.res_rsv_ruimte_key + AND fac.safe_to_number ( + kw.res_kenmerkreservering_waarde) = + 1) + AND NOT EXISTS -- entry komt nog niet voor in de verkoopfactuurtabel + (SELECT fin_verkoopfactuur_key + FROM fin_verkoopfactuur vf + WHERE vf.fin_verkoopfactuur_xmlnode = + 'reservering' + AND vf.fin_verkoopfactuur_refkey = + rr.res_rsv_ruimte_key + AND COALESCE (vf.fin_verkoopfactuur_c4, + 'NOP') = 'catering')) + GROUP BY klant, + res_rsv_ruimte_van, + periode, + grootboek, + kostenplaats_key, + kostenplaats, + deb_nr, + proj_key, + proj, + btw, + prs_kostensoort_btw, + res_key, + res_volgnr, + referentie, + res_rsv_ruimte_key, + descr, + aantal, + omschrijving, + soort, + btw_code + ORDER BY res_rsv_ruimte_key, btw_code; + + v_teller NUMBER; + v_rap_count NUMBER; + v_kenmerk_key_laatste NUMBER; + v_ruimte_key_prev NUMBER; + v_verkoopfactuurkop_key NUMBER; + v_tot DATE; + v_van DATE; +BEGIN + v_teller := 0; + v_rap_count := 0; + + v_aanduiding := 'Init'; + v_errormsg := 'Periode bepalen'; + + SELECT TRUNC (MAX (fin_verkoopfactuur_d2)) + INTO v_van + FROM fin_verkoopfactuur + WHERE fin_verkoopfactuur_datum IS NOT NULL + AND fin_verkoopfactuur_c4 = 'catering'; + + -- We rekenen hier met periodes van 5 weken. + v_tot := v_van + 35; + + DELETE imp_log + WHERE imp_log_applicatie = p_applname; + + -- verwijder regels die nog niet verwerkt zijn + DELETE fin_verkoopfactuurkop + WHERE fin_verkoopfactuurkop_key IN + (SELECT fin_verkoopfactuurkop_key + FROM fin_verkoopfactuur + WHERE fin_verkoopfactuur_datum IS NULL + AND fin_verkoopfactuur_c4 = 'catering'); + + DELETE fin_verkoopfactuur + WHERE fin_verkoopfactuur_datum IS NULL + AND fin_verkoopfactuur_c4 = 'catering'; + + v_ruimte_key_prev := -1; + + FOR rec IN c (v_tot) + LOOP + IF rec.res_rsv_ruimte_key <> v_ruimte_key_prev + THEN + v_ruimte_key_prev := rec.res_rsv_ruimte_key; + + INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id) + VALUES (rec.res_key || '/' || rec.res_volgnr || '-c') + RETURNING fin_verkoopfactuurkop_key + INTO v_verkoopfactuurkop_key; + END IF; + + INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key, + 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_c4, + fin_verkoopfactuur_d1, + fin_verkoopfactuur_d2) + VALUES (v_verkoopfactuurkop_key, + TO_CHAR (SYSDATE, 'YYYY-MM-DD'), + NULL, + rec.omschrijving, + 'reservering', + rec.res_rsv_ruimte_key, + rec.proj, + rec.proj, + rec.kostenplaats, + rec.grootboek, + rec.deb_nr, + rec.prijs_ex, + rec.btw_hoog + rec.btw_laag, + rec.btw_code, + rec.btw_code, + rec.btw, + rec.periode, + rec.inex, + 0, -- debet + rec.res_key || '/' || rec.res_volgnr, + rec.klant, + rec.referentie, + 'catering', + rec.res_rsv_ruimte_van, + v_tot); + END LOOP; + + + fac.writelog (p_applname, + 'S', + 'Factuurregels gegenereerd', + ''); + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := + v_errorhint + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.writelog (p_applname, + 'E', + v_aanduiding || v_errormsg, + 'Onbekende fout!'); + COMMIT; +END nybu_select_res_cat_5w; +/ + + CREATE OR REPLACE VIEW nybu_v_exp_res_cat ( reservering,