PCHX#80577 Facturen niet verwerkt, pchx_select_verpl_adm hersteld
svn path=/Customer/trunk/; revision=62335
This commit is contained in:
316
PCHX/pchx.sql
316
PCHX/pchx.sql
@@ -15,7 +15,7 @@ SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||||
SPOOL &fcltlogfile
|
||||
WHENEVER SQLERROR EXIT;
|
||||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
---------------------------------------
|
||||
PROMPT &fcltcusttxt
|
||||
---------------------------------------
|
||||
@@ -1805,42 +1805,36 @@ AS
|
||||
WHERE fac_rapport_node = 'SCANSYS';
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pchx_select_scansys_adm (
|
||||
CREATE OR REPLACE PROCEDURE pchx_select_verpl_adm (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_administratie IN VARCHAR2)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
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;
|
||||
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_bkstnr VARCHAR2)
|
||||
CURSOR c_sub (
|
||||
c_factuur_key IN NUMBER)
|
||||
IS
|
||||
SELECT *
|
||||
FROM pchx_v_bron_export_exact_xml
|
||||
WHERE administratie = p_administratie
|
||||
AND bkstnr = c_bkstnr;
|
||||
WHERE administratie = p_administratie
|
||||
AND fin_factuur_key = c_factuur_key;
|
||||
|
||||
v_order_count NUMBER;
|
||||
v_amount_sum NUMBER (10, 2);
|
||||
@@ -1849,47 +1843,31 @@ AS
|
||||
--v_sub_count NUMBER; --Met PCHX#63945 wordt regelnummer vanuit de xml-import aangeleverd en moet ook conform worden doorgegeven.
|
||||
v_bestand VARCHAR2 (30);
|
||||
v_dagboeknr VARCHAR2 (2);
|
||||
v_bkstnr_cur VARCHAR2 (30);
|
||||
v_bkstnr_prev VARCHAR2 (30);
|
||||
v_applname VARCHAR2 (2);
|
||||
BEGIN
|
||||
--Eerst maar de resultaten van vorige export opruimen
|
||||
|
||||
v_order_count := 0;
|
||||
v_amount_sum := 0;
|
||||
v_amount_sum_incl := 0;
|
||||
v_count := 0;
|
||||
v_bestand := SUBSTR (p_applname, 1, 12);
|
||||
|
||||
-- Eerst opruiming
|
||||
-- PCHX#67175 In verband met notificatie toch geen opruiming
|
||||
--DELETE FROM imp_log
|
||||
-- WHERE imp_log_applicatie = p_applname;
|
||||
|
||||
DELETE fac_rapport
|
||||
WHERE fac_rapport_node = v_bestand;
|
||||
|
||||
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
|
||||
-- deze keys gebruikt kunnen worden.
|
||||
-- Verwijder alleen de records van de geselecteerde administratie
|
||||
DELETE pchx_exp_factuur e
|
||||
WHERE administratie = p_administratie;
|
||||
|
||||
INSERT INTO pchx_exp_factuur (fin_factuur_key, administratie)
|
||||
(SELECT DISTINCT fin_factuur_key, p_administratie
|
||||
FROM pchx_v_bron_export_exact_xml
|
||||
WHERE fin_factuur_statuses_key = 6
|
||||
AND administratie = p_administratie
|
||||
AND track_verpl IS NOT NULL);
|
||||
|
||||
v_bkstnr_prev := 'empty';
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
-- bepalen dagboeknr & boekstuknr
|
||||
-- We zetten hier administratie, boekstuknummer en ## voor,
|
||||
-- dit is nodig omdat de we bij het vullen van FAC_RAPPORT een toevoeging moeten hebben om
|
||||
-- de unieke bestandsnamen te kunnen bepalen.
|
||||
-- In add_xml_row en add_xml_element filteren we dit weer, zodat dit niet in de node komt.
|
||||
|
||||
--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
|
||||
@@ -1908,142 +1886,134 @@ BEGIN
|
||||
|
||||
IF v_count <> 0
|
||||
THEN
|
||||
--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="'
|
||||
|| rec.fin_factuurregel_nr
|
||||
|| '" subtype="T" type="N">');
|
||||
pchx.add_xml_element (
|
||||
v_bestand,
|
||||
'Date',
|
||||
COALESCE (rec.afw_datum, rec.datum));
|
||||
pchx.add_xml_row (
|
||||
v_bestand,
|
||||
'<GLAccount code="'
|
||||
|| xml.char_to_html (rec.reknr)
|
||||
|| '"/>');
|
||||
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) || '"/>');
|
||||
|
||||
--IF pchx.get_user = 'PCHD'
|
||||
--THEN
|
||||
pchx.add_xml_row (
|
||||
v_bestand,
|
||||
'<Project code="'
|
||||
|| rec.projectnr
|
||||
|| '" type="I" status="A">');
|
||||
pchx.add_xml_element (v_bestand,
|
||||
'Description',
|
||||
rec.projectnaam);
|
||||
pchx.add_xml_row (v_bestand, '</Project>');
|
||||
--END IF;
|
||||
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)
|
||||
|| '"/>');
|
||||
|
||||
pchx.add_xml_element (v_bestand,
|
||||
'Description',
|
||||
rec.regel_oms);
|
||||
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;
|
||||
|
||||
--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 rec.afw_kostenplaats IS NOT NULL
|
||||
THEN
|
||||
pchx.add_xml_row (
|
||||
v_bestand,
|
||||
'<Costcenter code="'
|
||||
|| xml.char_to_html (rec.afw_kostenplaats)
|
||||
|| '"/>');
|
||||
END IF;
|
||||
pchx.add_xml_element (v_bestand,
|
||||
'Description',
|
||||
rec1.regel_oms25);
|
||||
|
||||
IF pchx.get_user = 'PCHD'
|
||||
THEN
|
||||
pchx.add_xml_row (
|
||||
v_bestand,
|
||||
'<Costunit code="'
|
||||
|| xml.char_to_html (rec.kstdrcode)
|
||||
|| '"/>');
|
||||
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 (rec.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', rec.bedrag_txt);
|
||||
pchx.add_xml_row (
|
||||
v_bestand,
|
||||
'<VAT code="'
|
||||
|| xml.char_to_html (rec.btw_code)
|
||||
|| '"/>');
|
||||
pchx.add_xml_row (v_bestand, '</Amount>');
|
||||
pchx.add_xml_row (v_bestand, '<Payment>');
|
||||
pchx.add_xml_element (v_bestand,
|
||||
'Reference',
|
||||
rec.betaalref);
|
||||
pchx.add_xml_element (v_bestand,
|
||||
'InvoiceNumber',
|
||||
rec.bkstnr);
|
||||
pchx.add_xml_row (v_bestand, '</Payment>');
|
||||
pchx.add_xml_row (v_bestand, '<FinReferences>');
|
||||
pchx.add_xml_element (v_bestand, 'YourRef', rec.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 + rec.bedrag;
|
||||
v_amount_sum_incl := v_amount_sum_incl + rec.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 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;
|
||||
|
||||
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>');
|
||||
END IF;
|
||||
END;
|
||||
|
||||
v_bkstnr_prev := v_bkstnr_cur;
|
||||
v_order_count := v_order_count + 1;
|
||||
END LOOP;
|
||||
|
||||
|
||||
fac.writelog (
|
||||
p_applname,
|
||||
'S',
|
||||
'Exact export uitgevoerd. Aantal regels: '
|
||||
'Scansys verplichtingen export uitgevoerd. Aantal regels: '
|
||||
|| v_order_count
|
||||
|| ' Totaal bedrag: '
|
||||
|| v_amount_sum
|
||||
|
||||
Reference in New Issue
Block a user