From 1d2562dbfdfaf27e26adad7dd4cef2fae5ff6532 Mon Sep 17 00:00:00 2001 From: Sander Schepers Date: Wed, 25 Oct 2023 10:21:10 +0000 Subject: [PATCH] PCHX#80577 Facturen niet verwerkt, nu ook pchx_select_verpl_adm verbeterd svn path=/Customer/trunk/; revision=62337 --- PCHX/pchx.sql | 278 ++++++++++++++++++++++++++------------------------ 1 file changed, 144 insertions(+), 134 deletions(-) diff --git a/PCHX/pchx.sql b/PCHX/pchx.sql index d918c5345..6e16f02fc 100644 --- a/PCHX/pchx.sql +++ b/PCHX/pchx.sql @@ -1812,29 +1812,28 @@ CREATE OR REPLACE PROCEDURE pchx_select_verpl_adm ( AS CURSOR c IS - SELECT bkstnr, - fin_factuur_key, - datum, - MAX (fact_oms25) fact_oms25, - administratie, - crdnr - FROM pchx_v_bron_export_exact_xml - WHERE administratie = p_administratie - AND track_verpl IS NULL - AND fin_factuur_statuses_key BETWEEN 1 AND 6 - GROUP BY bkstnr, - fin_factuur_key, - datum, - administratie, - crdnr; - - CURSOR c_sub ( - c_factuur_key IN NUMBER) - IS - SELECT * - FROM pchx_v_bron_export_exact_xml - WHERE administratie = p_administratie - AND fin_factuur_key = c_factuur_key; + SELECT f.bkstnr, + f.datum, + f.fact_oms25, + f.administratie, + f.crdnr, + f.fin_factuurregel_nr, + f.afw_datum, + f.reknr, + f.projectnaam, + f.regel_oms, + f.afw_kostenplaats, + f.kstdrcode, + f.itemcode, + f.bedrag_txt, + f.btw_code, + f.betaalref, + f.bedrag, + f.bedrag_incl, + f.projectnr + FROM pchx_v_bron_export_exact_xml f, pchx_exp_factuur e + WHERE f.administratie = p_administratie AND f.fin_factuur_key = e.fin_factuur_key + ORDER BY f.bkstnr; v_order_count NUMBER; v_amount_sum NUMBER (10, 2); @@ -1844,6 +1843,8 @@ AS v_bestand VARCHAR2 (30); v_dagboeknr VARCHAR2 (2); v_applname VARCHAR2 (2); + v_bkstnr_cur VARCHAR2 (30); + v_bkstnr_prev VARCHAR2 (30); BEGIN --Eerst maar de resultaten van vorige export opruimen @@ -1856,6 +1857,8 @@ BEGIN DELETE fac_rapport WHERE fac_rapport_node = v_bestand; + v_bkstnr_prev := 'empty'; + FOR rec IN c LOOP BEGIN @@ -1868,6 +1871,9 @@ BEGIN --PCHX#65429: Dagboeknr verschuift vanaf 2021 naar postitie 2 & 3 van het boekstuknummer (ipv positie 3 & 4). --Oude nog openstaande facturen (van 2020) moeten nog wel met positie 3&4, dat gaat via onderstaande case. --Na verloop van tijd mag dit weer opgeschoond worden en mag dit altijd: v_dagboeknr := SUBSTR (rec.bkstnr, 2, 2); + + v_bkstnr_cur := rec.bkstnr; + CASE WHEN SUBSTR (rec.bkstnr, 0, 2) = '20' THEN @@ -1886,127 +1892,131 @@ BEGIN IF v_count <> 0 THEN - pchx.add_xml_row ( - v_bestand, - ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row ( - v_bestand, - ''); - pchx.add_xml_element (v_bestand, 'Description', rec.fact_oms25); - pchx.add_xml_element (v_bestand, 'Date', rec.datum); - pchx.add_xml_element (v_bestand, - 'DocumentDate', - TO_CHAR (SYSDATE, 'YYYY-MM-DD')); - pchx.add_xml_row ( - v_bestand, - ''); - --v_sub_count := 1; - pchx.add_xml_row ( - v_bestand, - ''); + --Header xml + IF v_bkstnr_cur <> v_bkstnr_prev + THEN + pchx.add_xml_row ( + v_bestand, + ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row ( + v_bestand, + ''); + pchx.add_xml_element (v_bestand, 'Description', rec.fact_oms25); + pchx.add_xml_element (v_bestand, 'Date', rec.datum); + pchx.add_xml_element (v_bestand, + 'DocumentDate', + TO_CHAR (SYSDATE, 'YYYY-MM-DD')); + pchx.add_xml_row ( + v_bestand, + ''); + --v_sub_count := 1; + pchx.add_xml_row ( + v_bestand, + ''); + END IF; + + -- 1 of meerdere factuurregels + pchx.add_xml_row ( + v_bestand, + ''); + pchx.add_xml_element ( + v_bestand, + 'Date', + COALESCE (rec1.afw_datum, rec1.datum)); + pchx.add_xml_row ( + v_bestand, + ''); - FOR rec1 IN c_sub (rec.fin_factuur_key) - LOOP - BEGIN - pchx.add_xml_row ( - v_bestand, - ''); - pchx.add_xml_element ( - v_bestand, - 'Date', - COALESCE (rec1.afw_datum, rec1.datum)); - pchx.add_xml_row ( - v_bestand, - ''); + IF pchx.get_user = 'PCHD' + THEN + pchx.add_xml_row ( + v_bestand, + ''); + pchx.add_xml_element (v_bestand, + 'Description', + rec1.projectnaam); + pchx.add_xml_row (v_bestand, ''); + END IF; - IF pchx.get_user = 'PCHD' - THEN - pchx.add_xml_row ( - v_bestand, - ''); - pchx.add_xml_element (v_bestand, - 'Description', - rec1.projectnaam); - pchx.add_xml_row (v_bestand, ''); - END IF; + pchx.add_xml_element (v_bestand, + 'Description', + rec1.regel_oms25); - pchx.add_xml_element (v_bestand, - 'Description', - rec1.regel_oms25); + --Met PCHX#63945 wordt afwijkende kostenplaats gehaald vanuit de import en daarmee van de factuurregels. + -- Voorheen kreeg PCHH altijd 0100, bij PCHA en PCHW werd dit gehaald uit projectcode en bij de overige omgeving werd kostenplaats van bestelling/contract/opdracht overgenomen. + --Met PCHX#63945 moet dit dus, voor controledoeleinden in Exact, nu van de (door Exact aangeleverde) factuurregels. CASE + IF rec1.afw_kostenplaats IS NOT NULL + THEN + pchx.add_xml_row ( + v_bestand, + ''); + END IF; - --Met PCHX#63945 wordt afwijkende kostenplaats gehaald vanuit de import en daarmee van de factuurregels. - -- Voorheen kreeg PCHH altijd 0100, bij PCHA en PCHW werd dit gehaald uit projectcode en bij de overige omgeving werd kostenplaats van bestelling/contract/opdracht overgenomen. - --Met PCHX#63945 moet dit dus, voor controledoeleinden in Exact, nu van de (door Exact aangeleverde) factuurregels. CASE - IF rec1.afw_kostenplaats IS NOT NULL - THEN - pchx.add_xml_row ( - v_bestand, - ''); - END IF; + IF pchx.get_user = 'PCHD' + THEN + pchx.add_xml_row ( + v_bestand, + ''); + END IF; - IF pchx.get_user = 'PCHD' - THEN - pchx.add_xml_row ( - v_bestand, - ''); - END IF; + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt); + pchx.add_xml_row ( + v_bestand, + ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_element (v_bestand, + 'Reference', + rec1.betaalref); + pchx.add_xml_element (v_bestand, + 'InvoiceNumber', + rec1.bkstnr); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_element (v_bestand, 'YourRef', rec1.betaalref); + pchx.add_xml_element (v_bestand, + 'DocumentDate', + TO_CHAR (SYSDATE, 'YYYY-MM-DD')); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); + --v_sub_count := v_sub_count + 1; + v_amount_sum := v_amount_sum + rec1.bedrag; + v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl; - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt); - pchx.add_xml_row ( - v_bestand, - ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_element (v_bestand, - 'Reference', - rec1.betaalref); - pchx.add_xml_element (v_bestand, - 'InvoiceNumber', - rec1.bkstnr); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_element (v_bestand, 'YourRef', rec1.betaalref); - pchx.add_xml_element (v_bestand, - 'DocumentDate', - TO_CHAR (SYSDATE, 'YYYY-MM-DD')); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); - --v_sub_count := v_sub_count + 1; - v_amount_sum := v_amount_sum + rec1.bedrag; - v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl; + --Footer xml + IF v_bkstnr_cur <> v_bkstnr_prev + THEN + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); + pchx.add_xml_row (v_bestand, ''); - END; - -- END IF; - END LOOP; - - INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms) - SELECT rec.fin_factuur_key, fac_srtnotificatie_key, 'Verplichting verzonden naar Scansys' - FROM fac_srtnotificatie - WHERE fac_srtnotificatie_code = 'CUST10'; - - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); - pchx.add_xml_row (v_bestand, ''); + INSERT INTO fac_tracking (fac_tracking_refkey, fac_srtnotificatie_key, fac_tracking_oms) + SELECT rec.fin_factuur_key, fac_srtnotificatie_key, 'Verplichting verzonden naar Scansys' + FROM fac_srtnotificatie + WHERE fac_srtnotificatie_code = 'CUST10'; + END IF; + END IF; END; + v_bkstnr_prev := v_bkstnr_cur; v_order_count := v_order_count + 1; END LOOP;