From d2c460207a29cccd4c2582fbfccef4d7fd0209ef Mon Sep 17 00:00:00 2001 From: Norbert Wassink Date: Wed, 2 Jul 2025 07:25:32 +0000 Subject: [PATCH] PIVP#89657 -- Probleem met export meldingen exact svn path=/Customer/trunk/; revision=69624 --- PIVP/PIVP.sql | 366 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 354 insertions(+), 12 deletions(-) diff --git a/PIVP/PIVP.sql b/PIVP/PIVP.sql index c80d0b393..c8425bfda 100644 --- a/PIVP/PIVP.sql +++ b/PIVP/PIVP.sql @@ -2714,18 +2714,22 @@ where beschikbaar.alg_gebouw_code= bezet.alg_gebouw_code; CREATE OR REPLACE VIEW PIVP_V_MLD_FACT_RAP AS SELECT m.mld_melding_key melding_nr, - isd.ins_srtdiscipline_omschrijving melding_vakgroep , + isd.ins_srtdiscipline_omschrijving melding_vakgroep , md.ins_discipline_omschrijving melding_groep, msm.mld_stdmelding_omschrijving melding_soort, - m.mld_melding_onderwerp melding_onderwerp, - m.mld_melding_datum melding_datum, - fac.safe_to_number(mkm.mld_kenmerkmelding_waarde) factuurbedrag, - m.mld_melding_externsyncdate exact_exportdatum, + 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 FROM prs_afdeling a, prs_perslid p WHERE p.prs_perslid_key=m.prs_perslid_key - AND a.prs_afdeling_key = p.prs_afdeling_key) huurder + AND a.prs_afdeling_key = p.prs_afdeling_key) huurder FROM mld_melding m, mld_stdmelding msm, mld_discipline md, @@ -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, @@ -3089,7 +3197,22 @@ AS 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, + 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, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + 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, ''); + 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, ''); -- vaste waarde + pivp.add_xml_row (v_bestand, ''); -- persoon waarop geboekt wordt in Exact + + + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'CalcIncludeVAT', 'N'); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(v_factuurdatum,'YYYY-MM-DD') ); + pivp.add_xml_row (v_bestand, ''); + + + END IF; + pivp.add_xml_row (v_bestand, ''); + + + 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, ''); -- vaste waarde + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + + 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, ''); + pivp.add_xml_element (v_bestand, 'Quantity', '1' ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Value', rec_regel.factuurbedrag); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + + + 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, ''); + END IF; + + + v_sub_count:=0; + + END LOOP; + IF v_count>0 THEN + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + 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,13 +4383,54 @@ BEGIN pivp.add_xml_element (v_bestand, 'Quantity', '1' ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); - 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, ''); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') ); pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, ''); - + + + IF rec_regel.admin_kosten >0 THEN + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); -- vaste waarde + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + + 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, ''); + pivp.add_xml_element (v_bestand, 'Quantity', '1' ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Value', rec_regel.admin_kosten); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + END IF; + IF rec_regel.coord_kosten >0 THEN + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); -- vaste waarde + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + + 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, ''); + pivp.add_xml_element (v_bestand, 'Quantity', '1' ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Value', rec_regel.coord_kosten); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_element (v_bestand, 'Date', TO_CHAR(rec_regel.afmelddatum, 'YYYY-MM-DD') ); + pivp.add_xml_row (v_bestand, ''); + pivp.add_xml_row (v_bestand, ''); + END IF; pivp.add_xml_row (v_bestand, ''); pivp.add_xml_row (v_bestand, '');