PCHX#80577 Facturen niet verwerkt, nu ook pchx_select_verpl_adm verbeterd

svn path=/Customer/trunk/; revision=62337
This commit is contained in:
Sander Schepers
2023-10-25 10:21:10 +00:00
parent 94de638b4d
commit 1d2562dbfd

View File

@@ -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,
'<?xml version="1.0" encoding="windows-1252"?>');
pchx.add_xml_row (v_bestand, '<eExact>');
pchx.add_xml_row (v_bestand, '<GLEntries>');
pchx.add_xml_row (
v_bestand,
'<GLEntry status="E" entry="'
|| xml.char_to_html (rec.bkstnr)
|| '">');
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,
'<Journal type="I" code="' || v_dagboeknr || '"/>');
--v_sub_count := 1;
pchx.add_xml_row (
v_bestand,
'<Creditor number="' || xml.char_to_html (rec.crdnr) || '"/>');
--Header xml
IF v_bkstnr_cur <> v_bkstnr_prev
THEN
pchx.add_xml_row (
v_bestand,
'<?xml version="1.0" encoding="windows-1252"?>');
pchx.add_xml_row (v_bestand, '<eExact>');
pchx.add_xml_row (v_bestand, '<GLEntries>');
pchx.add_xml_row (
v_bestand,
'<GLEntry status="E" entry="'
|| xml.char_to_html (rec.bkstnr)
|| '">');
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,
'<Journal type="I" code="' || v_dagboeknr || '"/>');
--v_sub_count := 1;
pchx.add_xml_row (
v_bestand,
'<Creditor number="' || xml.char_to_html (rec.crdnr) || '"/>');
END IF;
-- 1 of meerdere factuurregels
pchx.add_xml_row (
v_bestand,
'<FinEntryLine number="'
|| rec1.fin_factuurregel_nr
|| '" subtype="T" type="N">');
pchx.add_xml_element (
v_bestand,
'Date',
COALESCE (rec1.afw_datum, rec1.datum));
pchx.add_xml_row (
v_bestand,
'<GLAccount code="'
|| xml.char_to_html (rec1.reknr)
|| '"/>');
FOR rec1 IN c_sub (rec.fin_factuur_key)
LOOP
BEGIN
pchx.add_xml_row (
v_bestand,
'<FinEntryLine number="'
|| rec1.fin_factuurregel_nr
|| '" subtype="T" type="N">');
pchx.add_xml_element (
v_bestand,
'Date',
COALESCE (rec1.afw_datum, rec1.datum));
pchx.add_xml_row (
v_bestand,
'<GLAccount code="'
|| xml.char_to_html (rec1.reknr)
|| '"/>');
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Project code="'
|| rec1.projectnr
|| '" type="I" status="A">');
pchx.add_xml_element (v_bestand,
'Description',
rec1.projectnaam);
pchx.add_xml_row (v_bestand, '</Project>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Project code="'
|| rec1.projectnr
|| '" type="I" status="A">');
pchx.add_xml_element (v_bestand,
'Description',
rec1.projectnaam);
pchx.add_xml_row (v_bestand, '</Project>');
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,
'<Costcenter code="'
|| xml.char_to_html (rec1.afw_kostenplaats)
|| '"/>');
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,
'<Costcenter code="'
|| xml.char_to_html (rec1.afw_kostenplaats)
|| '"/>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Item code="'
|| xml.char_to_html (rec1.itemcode)
|| '"/>');
END IF;
IF pchx.get_user = 'PCHD'
THEN
pchx.add_xml_row (
v_bestand,
'<Item code="'
|| xml.char_to_html (rec1.itemcode)
|| '"/>');
END IF;
pchx.add_xml_row (v_bestand, '<Amount>');
pchx.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
pchx.add_xml_row (
v_bestand,
'<VAT code="'
|| xml.char_to_html (rec1.btw_code)
|| '"/>');
pchx.add_xml_row (v_bestand, '</Amount>');
pchx.add_xml_row (v_bestand, '<Payment>');
pchx.add_xml_element (v_bestand,
'Reference',
rec1.betaalref);
pchx.add_xml_element (v_bestand,
'InvoiceNumber',
rec1.bkstnr);
pchx.add_xml_row (v_bestand, '</Payment>');
pchx.add_xml_row (v_bestand, '<FinReferences>');
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, '</FinReferences>');
pchx.add_xml_row (v_bestand, '</FinEntryLine>');
--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, '<Amount>');
pchx.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
pchx.add_xml_row (
v_bestand,
'<VAT code="'
|| xml.char_to_html (rec1.btw_code)
|| '"/>');
pchx.add_xml_row (v_bestand, '</Amount>');
pchx.add_xml_row (v_bestand, '<Payment>');
pchx.add_xml_element (v_bestand,
'Reference',
rec1.betaalref);
pchx.add_xml_element (v_bestand,
'InvoiceNumber',
rec1.bkstnr);
pchx.add_xml_row (v_bestand, '</Payment>');
pchx.add_xml_row (v_bestand, '<FinReferences>');
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, '</FinReferences>');
pchx.add_xml_row (v_bestand, '</FinEntryLine>');
--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, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
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, '</GLEntry>');
pchx.add_xml_row (v_bestand, '</GLEntries>');
pchx.add_xml_row (v_bestand, '</eExact>');
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;