PIVP#89657 -- Probleem met export meldingen exact

svn path=/Customer/trunk/; revision=69624
This commit is contained in:
Norbert Wassink
2025-07-02 07:25:32 +00:00
parent 05d66009be
commit d2c460207a

View File

@@ -2719,6 +2719,10 @@ SELECT m.mld_melding_key melding_nr,
msm.mld_stdmelding_omschrijving melding_soort,
m.mld_melding_onderwerp melding_onderwerp,
m.mld_melding_datum melding_datum,
(SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.FAC_TRACKING_REFKEY=m.mld_melding_key
AND ft.FAC_SRTNOTIFICATIE_KEY=47) afmeld_datum,
fac.safe_to_number(mkm.mld_kenmerkmelding_waarde) factuurbedrag,
m.mld_melding_externsyncdate exact_exportdatum,
(SELECT a.prs_afdeling_omschrijving
@@ -3046,11 +3050,115 @@ AS
NULL
FROM pivp_v_nieuwegebruikers;
CREATE OR REPLACE FORCE VIEW PIVP_V_MLDEXPORT
(
MELDING_KEY,
STDMELDING,
VAGROEP,
VAKGROEPTYPE,
ONDERWERP,
AANMAAKDATUM,
AFMELDDATUM,
AANVRAGER,
BEDRIJF_KEY,
BEDRIJF_NAAM,
DEBITEURNR,
FACTUURBEDRAG,
VAKGROEP_CODE,
DIENSTENCODE,
PONUMMER,
FACTUURINFO,
P2PORDERNR,
EXTERN_SYNCDATE
)
AS
SELECT m.mld_melding_key
melding_key,
msm.mld_stdmelding_omschrijving
stdmelding,
md.ins_discipline_omschrijving
vagroep,
isd.ins_srtdiscipline_omschrijving
vakgroepType,
m.mld_melding_onderwerp
onderwerp,
m.mld_melding_datum
aanmaakdatum,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_srtnotificatie_key = 47 -- MLDAFM
AND ft.fac_tracking_refkey = m.mld_melding_key)
afmelddatum,
p.prs_perslid_key
aanvrager,
p.prs_afdeling_key
bedrijf_key,
pa.prs_afdeling_omschrijving
bedrijf_naam,
pa.prs_afdeling_naam
debiteurnr,
mkm.mld_kenmerkmelding_waarde
factuurbedrag,
SUBSTR (md.ins_discipline_omschrijving, 1, 6)
vakgroep_code,
(SELECT SUBSTR (d.FAC_USRDATA_OMSCHR, 0, 6)
FROM mld_kenmerk mk1,
mld_kenmerkmelding mkm1,
pivp_v_diensten d
WHERE UPPER (mk1.mld_kenmerk_omschrijving) = 'DIENSTEN CODE'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key
AND d.fac_usrdata_key =
fac.safe_to_number (mkm1.mld_kenmerkmelding_waarde))
dienstencode,
(SELECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER (mk1.mld_kenmerk_omschrijving) = 'UW REFERENTIE'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key)
ponummer,
(SELECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER (mk1.mld_kenmerk_omschrijving) = 'FACTUUR INFO'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key)
factuurinfo,
(SELECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER (mk1.mld_kenmerk_omschrijving) = 'P2P ORDERNR'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key)
p2pordernr,
m.mld_melding_externsyncdate extern_syncdate
FROM mld_melding m,
prs_perslid p,
prs_afdeling pa,
mld_stdmelding msm,
mld_discipline md,
ins_srtdiscipline isd,
mld_kenmerkmelding mkm,
mld_kenmerk mk
WHERE m.mld_melding_status = 5
AND m.prs_perslid_key = p.prs_perslid_key
AND pa.prs_afdeling_key = p.prs_afdeling_key
AND pa.prs_bedrijf_key <>
(SELECT prs_bedrijf_key -- alleen aanvrage die door niet PP medewrkers zijn gedaan
FROM prs_bedrijf pb
WHERE pb.prs_bedrijf_naam_upper = 'PIVOTPARK')
AND msm.mld_stdmelding_key = m.mld_stdmelding_key
AND md.ins_discipline_key = msm.mld_ins_discipline_key
AND isd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
-- AND m.mld_melding_einddatum BETWEEN TO_DATE('01-08-2022','dd-mm-yyyy') AND SYSDATE
AND UPPER (mk.mld_kenmerk_omschrijving) = 'FACTUUR BEDRAG'
AND mkm.mld_melding_key = m.mld_melding_key
AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key
AND fac.safe_to_number (mkm.mld_kenmerkmelding_waarde) > 0
AND m.mld_melding_externsyncdate IS NULL
ORDER BY p.prs_afdeling_key;
CREATE OR REPLACE VIEW PIVP_V_MLDEXPORT
CREATE OR REPLACE VIEW PIVP_V_MLDEXPORT_NEW
AS
SELECT m.mld_melding_key melding_key,
msm.mld_stdmelding_omschrijving stdmelding,
@@ -3090,6 +3198,21 @@ AS
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='P2P ORDERNR'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) p2pordernr,
(SElECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='ADMIN_KOSTEN'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) admin_kosten,
(SElECT mkm1.MLD_KENMERKMELDING_WAARDE
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving)='COORD_KOSTEN'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) coord_kosten,
(SElECT SUM(fac.safe_to_number(mkm1.MLD_KENMERKMELDING_WAARDE))
FROM mld_kenmerk mk1, mld_kenmerkmelding mkm1
WHERE UPPER(mk1.mld_kenmerk_omschrijving) LIKE 'LEV%_KOSTEN'
AND mkm1.mld_kenmerk_key = mk1.MLD_KENMERK_KEY
AND mkm1.mld_melding_key = m.mld_melding_key) lev_kosten,
m.mld_melding_externsyncdate extern_syncdate
FROM mld_melding m ,
prs_perslid p,
@@ -3933,6 +4056,184 @@ AS
CURSOR mld(p_startDate DATE, p_endDate DATE) IS
SELECT DISTINCT bedrijf_key , debiteurnr
FROM pivp_v_mldexport
WHERE afmelddatum BETWEEN p_startDate AND p_endDate;
CURSOR mld_regel( c_bedrijf_key NUMBER,
p_startDate DATE,
p_endDate DATE) IS
SELECT *
FROM pivp_v_mldexport
WHERE bedrijf_key=c_bedrijf_key
AND afmelddatum BETWEEN p_startDate AND p_endDate;
v_bestand VARCHAR2(100);
v_order_count NUMBER :=0;
v_amount_sum NUMBER:=0;
v_leverancier NUMBER;
v_sub_count NUMBER;
v_count NUMBER;
v_dagboek VARCHAR2(10);
v_startDate DATE;
v_endDate DATE;
v_factuurdatum DATE;
v_endmonth VARCHAR2(10);
v_currentmonth VARCHAR2(10);
v_currentyear VARCHAR2(10);
v_currenthuurder VARCHAR2(10);
v_factuurregel VARCHAR2(120);
BEGIN
v_dagboek:='70';
v_leverancier:=0;
v_count :=0;
v_sub_count:=0;
v_currenthuurder :='';
DELETE FROM fac_rapport
WHERE fac_rapport.fac_rapport_node LIKE 'EXM_MLD%';
-- Exports vinden plaats op maand basis
v_endmonth := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'MM'))-1);
v_currentyear := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')));
IF v_endmonth = '0' THEN
v_currentyear := TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))-1);
v_endmonth:='12';
END IF;
v_startdate := TO_DATE('01-01-'||v_currentyear,'DD-MM-YYYY');
v_enddate := LAST_DAY(TO_DATE('01-'||v_endmonth||'-'||v_currentyear,'DD-MM-YYYY'));
v_factuurdatum:=v_enddate;
-- IF v_currentmonth=1 OR v_currentmonth=4 OR v_currentmonth=7 OR v_currentmonth=10
-- THEN
/*CASE v_currentmonth
WHEN 1 THEN
v_startDate:= TO_DATE('01-10-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
v_endDate:= TO_DATE('31-12-'||TO_CHAR(TO_NUMBER(TO_CHAR(SYSDATE,'YYYY')-1)),'DD-MM-YYYY');
WHEN 4 THEN
v_startDate:= TO_DATE('01-01-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-03-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
WHEN 7 THEN
v_startDate:= TO_DATE('01-04-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate := TO_DATE('30-06-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
ELSE
v_startDate:= TO_DATE('01-07-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
v_endDate:= TO_DATE('30-09-'||TO_CHAR(SYSDATE,'YYYY'),'DD-MM-YYYY');
END CASE;
v_bestand:= 'EXM_MLD';
*/
-- PUUR OM EENVOUDIGER TE KUNNEN TESTEN
-- v_startDate:=TO_DATE('01-03-2023','DD-MM-YYYY');
-- v_endDate:=TO_DATE('31-03-2023','DD-MM-YYYY');
-- v_factuurdatum := TO_DATE('31-03-2023','DD-MM-YYYY');
v_bestand:= 'EXM_MLD';
FOR rec in mld(v_startDate, v_endDate)
LOOP
v_count:=v_count+1;
IF v_count=1 THEN
pivp.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pivp.add_xml_row (v_bestand, '<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-Schema.xsd">');
pivp.add_xml_row (v_bestand, '<Invoices companycode="003" companyname="Pivot Park">');
END IF;
FOR rec_regel IN mld_regel(rec.bedrijf_key,v_startDate, v_endDate)
LOOP
v_sub_count:=v_sub_count+1;
IF v_sub_count=1 THEN
pivp.add_xml_row (v_bestand, '<Invoice type="V" code="00">');
pivp.add_xml_element (v_bestand, 'Description', 'Geleverde diensten.');
IF LENGTH(rec_regel.ponummer)>1 THEN
pivp.add_xml_element(v_bestand, 'YourRef',rec_regel.ponummer);
END IF;
pivp.add_xml_row (v_bestand, '<Order type="V"/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Resource number="1"/>'); -- persoon waarop geboekt wordt in Exact
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N');
pivp.add_xml_row (v_bestand, '<OrderedBy>');
pivp.add_xml_row (v_bestand, '<Debtor code="' || xml.char_to_html(rec_regel.debiteurnr) || '"/>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</OrderedBy>');
END IF;
pivp.add_xml_row (v_bestand, '<InvoiceLine lineNo="' || v_sub_count || '" type="N" subtype="N">');
IF LENGTH(rec_regel.factuurinfo)>0 THEN
v_factuurregel:= rec_regel.melding_key||' - '||rec_regel.factuurinfo;
ELSE
IF LENGTH(rec_regel.onderwerp)>0 THEN
v_factuurregel:= rec_regel.melding_key||'('||rec_regel.dienstencode||')-'||rec_regel.onderwerp;
ELSE
v_factuurregel:= rec_regel.melding_key||'-'||rec_regel.vagroep;
END IF;
END IF;
IF LENGTH(rec_regel.ponummer)>0 THEN
v_factuurregel:= v_factuurregel ||' (Uw ref. '||SUBSTR(rec_regel.ponummer,0,15)||')';
END IF;
-- Vaste waardes die evt worden aangepast bij vervolg project
pivp.add_xml_row (v_bestand, '<Warehouse code=""/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Costcenter code=""/>');
pivp.add_xml_row (v_bestand, '<Costunit code=""/>');
pivp.add_xml_row (v_bestand, '<Project code=""/>');
pivp.add_xml_element (v_bestand, 'Text', SUBSTR(v_factuurregel,0,120));
pivp.add_xml_element (v_bestand, 'Description', 'P2P ordernr.:'||rec_regel.p2pordernr);
pivp.add_xml_row (v_bestand, '<Item code="' || rec_regel.dienstencode || '"/>');
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'Value', rec_regel.factuurbedrag);
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</Delivery>');
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
UPDATE mld_melding set mld_melding_externsyncdate=SYSDATE WHERE mld_melding_key=rec_regel.melding_key;
END LOOP;
IF v_sub_count>0 THEN
pivp.add_xml_row (v_bestand, '</Invoice>');
END IF;
v_sub_count:=0;
END LOOP;
IF v_count>0 THEN
pivp.add_xml_row (v_bestand, '</Invoices>');
pivp.add_xml_row (v_bestand, '</eExact>');
END IF;
IF v_count=0 THEN
-- We hebben niets om te exporteren dan gooien we ook XML tags weg.
DELETE FROM fac_rapport WHERE fac_rapport_node = v_bestand;
END IF;
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd.','Regels: '||v_count||' Periode : '||v_startDate||'-'||v_enddate);
--END IF;
END;
/
CREATE OR REPLACE PROCEDURE pivp_select_exact_mld_NEW(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR mld(p_startDate DATE, p_endDate DATE) IS
SELECT DISTINCT bedrijf_key , debiteurnr
FROM pivp_v_mldexport_new
WHERE afmelddatum BETWEEN p_startDate AND p_endDate
AND extern_syncdate IS NULL;
@@ -3940,7 +4241,7 @@ AS
p_startDate DATE,
p_endDate DATE) IS
SELECT *
FROM pivp_v_mldexport
FROM pivp_v_mldexport_new
WHERE bedrijf_key=c_bedrijf_key
AND afmelddatum BETWEEN p_startDate AND p_endDate;
@@ -4082,7 +4383,7 @@ BEGIN
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'Value', rec_regel.factuurbedrag);
pivp.add_xml_element (v_bestand, 'Value', rec_regel.lev_kosten);
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') );
@@ -4090,6 +4391,47 @@ BEGIN
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
IF rec_regel.admin_kosten >0 THEN
pivp.add_xml_row (v_bestand, '<InvoiceLine lineNo="' || v_sub_count || '" type="N" subtype="N">');
pivp.add_xml_row (v_bestand, '<Warehouse code=""/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Costcenter code=""/>');
pivp.add_xml_row (v_bestand, '<Costunit code=""/>');
pivp.add_xml_row (v_bestand, '<Project code=""/>');
pivp.add_xml_element (v_bestand, 'Text', 'Admin kosten');
pivp.add_xml_element (v_bestand, 'Description', 'P2P ordernr.:'||rec_regel.p2pordernr);
pivp.add_xml_row (v_bestand, '<Item code="FM-701"/>');
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'Value', rec_regel.admin_kosten);
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</Delivery>');
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
END IF;
IF rec_regel.coord_kosten >0 THEN
pivp.add_xml_row (v_bestand, '<InvoiceLine lineNo="' || v_sub_count || '" type="N" subtype="N">');
pivp.add_xml_row (v_bestand, '<Warehouse code=""/>'); -- vaste waarde
pivp.add_xml_row (v_bestand, '<Costcenter code=""/>');
pivp.add_xml_row (v_bestand, '<Costunit code=""/>');
pivp.add_xml_row (v_bestand, '<Project code=""/>');
pivp.add_xml_element (v_bestand, 'Text', 'Coordinatie kosten');
pivp.add_xml_element (v_bestand, 'Description', 'P2P ordernr.:'||rec_regel.p2pordernr);
pivp.add_xml_row (v_bestand, '<Item code="FM-702"/>');
pivp.add_xml_element (v_bestand, 'Quantity', '1' );
pivp.add_xml_row (v_bestand, '<Price>');
pivp.add_xml_row (v_bestand, '<Currency code="EUR"/>');
pivp.add_xml_element (v_bestand, 'Value', rec_regel.coord_kosten);
pivp.add_xml_row (v_bestand, '</Price>');
pivp.add_xml_row (v_bestand, '<Delivery>');
pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') );
pivp.add_xml_row (v_bestand, '</Delivery>');
pivp.add_xml_row (v_bestand, '</InvoiceLine>');
END IF;
pivp.add_xml_row (v_bestand, '<FreeFields>');
pivp.add_xml_row (v_bestand, '<FreeTexts>');
pivp.add_xml_row (v_bestand, '<FreeText number="1" label="Sequence number">'||v_factuurnr||'</FreeText>');