BLST#83261 -- Nieuw koppelvlak FMIS-SAP

svn path=/Customer/trunk/; revision=65088
This commit is contained in:
Norbert Wassink
2024-06-12 10:46:01 +00:00
parent 4d9c20c44a
commit 4e2e0c1ac2

View File

@@ -2955,16 +2955,28 @@ AS
WHERE kg.prs_kostenplaatsgrp_key=k.prs_kostenplaatsgrp_key
AND k.prs_kostenplaats_key=bb.prs_kostenplaats_key) btw,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key = b.prs_perslid_key) besteller,
'Lyreco bestelling' omschrijving,
'Bestelling '||ins.INS_DISCIPLINE_OMSCHRIJVING omschrijving,
(SELECT bkb.bes_kenmerkbestell_waarde
FROM bes_kenmerk bk, bes_srtkenmerk bs, bes_kenmerkbestell bkb
WHERE bs.bes_srtkenmerk_upper='KLANTREFERENTIE'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_srtinstallatie_key=ins.ins_discipline_key
AND bk.bes_kenmerk_key=bkb.bes_kenmerk_key
AND bkb.bes_bestelling_key=bb.bes_bestelling_key) klantref
AND bkb.bes_bestelling_key=bb.bes_bestelling_key) klantref,
COALESCE((SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='ORDERSOORT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key),'ZFMI') ordersoort,
COALESCE((SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='CONDITIESOORT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key),'ZPRM') conditiesoort
FROM bes_bestelopdr b, bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling bb,prs_kostenplaats kstp,
(SELECT DISTINCT bsg.ins_discipline_key ins_discipline_key
(SELECT DISTINCT bsg.ins_discipline_key ins_discipline_key , ins_discipline_omschrijving
FROM bes_bestelopdr bo, bes_bestelopdr_item bboi, bes_bestelling_item bbi, bes_srtdeel bsd, bes_srtgroep bsg, ins_tab_discipline id
WHERE bo.bes_bestelopdr_key= p_bes_key
AND bboi.bes_bestelopdr_key=bo.bes_bestelopdr_key
@@ -2975,7 +2987,7 @@ AS
WHERE b.bes_bestelopdr_key=p_bes_key
AND boi.bes_bestelopdr_key = b.bes_bestelopdr_key
AND bbi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bb.bes_bestelling_key = bbi.bes_bestelling_key;
AND bb.bes_bestelling_key = bbi.bes_bestelling_key;
CURSOR sel_bes(p_bes_key NUMBER)
@@ -3064,7 +3076,7 @@ BEGIN
blst.add_xml_row (v_bestand, '<VerkooporderBes_new>');
blst.add_xml_element (v_bestand, 'BesKey', rec.bes_key);
blst.add_xml_element (v_bestand, 'ReserveringNr', v_aanvraagnr);
blst.add_xml_element (v_bestand, 'Ordersoort', 'ZFMI');
blst.add_xml_element (v_bestand, 'Ordersoort', rec.ordersoort);
blst.add_xml_element (v_bestand, 'LeverDatum', TO_CHAR (rec.leverdatum, 'YYYYMMDD'));
blst.add_xml_element (v_bestand, 'Omschrijving', rec.omschrijving);
blst.add_xml_element (v_bestand, 'DebiteurNr', rec.kostenplaats);
@@ -3078,9 +3090,9 @@ BEGIN
LOOP
blst.add_xml_row (v_bestand, '<ArtikelBes>');
blst.add_xml_element (v_bestand, 'Regelnummer', bes_art.posnr);
blst.add_xml_element (v_bestand, 'ArtikelNr', bes_art.meta_art);
blst.add_xml_element (v_bestand, 'ArtikelNr', COALESCE(bes_art.meta_art,bes_art.artikelNr));
blst.add_xml_element (v_bestand, 'Aantal', bes_art.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Conditiesoort', rec.conditiesoort);
blst.add_xml_element (v_bestand, 'CPV_Code', bes_art.CPV_code);
@@ -3099,7 +3111,7 @@ BEGIN
blst.add_xml_element (v_bestand, 'Prijs', v_prijs);
blst.add_xml_element (v_bestand, 'LevArt', bes_art.artikelNr);
blst.add_xml_element (v_bestand, 'Omschrijving', bes_art.omsch);
blst.add_xml_element (v_bestand, 'Leverdatum',bes_art.leverdatum);
blst.add_xml_element (v_bestand, 'Leverdatum',COALESCE(bes_art.leverdatum,TO_CHAR (rec.leverdatum, 'YYYYMMDD')));
blst.add_xml_row (v_bestand, '</ArtikelBes>');
v_artCounter := v_artCounter + 1;
END LOOP;
@@ -3158,7 +3170,33 @@ AS
WHERE alg.alg_gebouw_code = ma.mld_adres_gebouw_ruimte
AND ken.alg_onrgoed_key = alg.alg_gebouw_key
AND ken.alg_kenmerk_key = 1074)
land
land,
(SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='IKP_BERICHT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key) ikp_bericht,
(SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='VKP_BERICHT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key) vkp_bericht,
COALESCE(
(SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='ORDERSOORT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key),'ZFMI') ordersoort,
COALESCE(
(SELECT kb.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb, bes_kenmerk k, bes_srtkenmerk sk
WHERE sk.bes_srtkenmerk_upper='CONDITIESOORT'
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kb.bes_kenmerk_key = k.bes_kenmerk_key
AND kb.bes_bestelling_key=bb.bes_bestelling_key),'ZPRM') conditiesoort
FROM bes_bestelopdr b, bes_bestelopdr_item boi, bes_bestelling_item bbi, bes_bestelling bb, mld_adres ma
WHERE b.bes_bestelopdr_status=3
AND boi.bes_bestelopdr_key = b.bes_bestelopdr_key
@@ -3246,126 +3284,140 @@ BEGIN
--v_SAPID := 'BHCATERING';
v_guid := blst.getguid ();
v_aanvraagnr := blst.getAanvraagNr (rec.bes_key, 'BES');
v_bestand := v_base || '-' || v_counter || '-';
v_totalPrice := 0;
blst.add_xml_row (v_bestand,'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Inkooporderbes_new>');
blst.add_xml_row (v_bestand, '<Header>');
blst.add_xml_element (v_bestand,'ReserveringNr',v_aanvraagNr);
blst.add_xml_element (v_bestand, 'Aanmaakdatum', v_today);
blst.add_xml_row (v_bestand, '</Header>');
SELECT DISTINCT bsg.ins_discipline_key
INTO v_discipline_key
FROM bes_bestelopdr bo, bes_bestelopdr_item bboi, bes_bestelling_item bbi, bes_srtdeel bsd, bes_srtgroep bsg, ins_tab_discipline id
WHERE bo.bes_bestelopdr_key= rec.bes_key
AND bboi.bes_bestelopdr_key=bo.bes_bestelopdr_key
AND bbi.bes_bestelopdr_item_key = bboi.bes_bestelopdr_item_key
AND bsd.bes_srtdeel_key=bbi.bes_srtdeel_key
AND bsg.bes_srtgroep_key=bsd.bes_srtgroep_key
AND id.ins_discipline_key= bsg.ins_discipline_key;
IF rec.extern=1
THEN
SELECT bk.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk bs, bes_kenmerk bk
WHERE bs.bes_srtkenmerk_upper='SAP_ID_EXTERN'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_srtinstallatie_key=v_discipline_key
AND bk.bes_kenmerk_verwijder IS NULL;
ELSE
SELECT bk.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk bs, bes_kenmerk bk
WHERE bs.bes_srtkenmerk_upper='SAP_ID'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_srtinstallatie_key=v_discipline_key
AND bk.bes_kenmerk_verwijder IS NULL;
END IF;
IF v_kenmerk_key > 0
THEN
flx.setflex ('BES', v_kenmerk_key, rec.bes_bestel_key, v_aanvraagNr);
END IF;
--blst.add_xml_element (v_bestand,'ReserveringNr', blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand,'Omschrijving',rec.omschrijving);
-- blst.add_xml_element (v_bestand, 'BES_KEY', rec.bes_key);
blst.add_xml_element (v_bestand, 'Opmerking', rec.opmerking);
blst.add_xml_element (v_bestand, 'LeverancierNr', rec.leveranciernr);
blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV');
blst.add_xml_element (v_bestand, 'Besteller', rec.kostenplaats);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_row (v_bestand, '<AfleverAdres>');
blst.add_xml_element (v_bestand, 'RuimteId', '.'); -- heb geen ruimte bij een bes maar . mag ook
blst.add_xml_element (v_bestand, 'LandCode', rec.land);
blst.add_xml_element (v_bestand, 'Postcode', rec.postcode);
blst.add_xml_element (v_bestand, 'Plaats', rec.plaats);
blst.add_xml_element (v_bestand, 'Straat', rec.straat); -- nu moeten we het huisnr nog van het adres halen want SAP wil alleen de straat !
blst.add_xml_element (v_bestand, 'Nr', rec.nummer);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouwCode);
blst.add_xml_row (v_bestand, '</AfleverAdres>');
v_artCounter := 1;
FOR rec_art IN sel_bes (rec.bes_key)
LOOP
blst.add_xml_row (v_bestand, '<Item>');
blst.add_xml_element (v_bestand,'Regelnummer',v_artCounter);
blst.add_xml_element (v_bestand, 'Actie', '01');
blst.add_xml_element (v_bestand, 'ArtikelNr',rec_art.artikelNr);
blst.add_xml_element (v_bestand, 'Aantal', rec_art.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', 'ZPRM');
blst.add_xml_element (v_bestand, 'Prijs', rec_art.aantal*rec_art.prijs);
blst.add_xml_element (v_bestand, 'InkTotPrijs', 0);
blst.add_xml_element (v_bestand, 'ArtikelPrijs', rec_art.prijs);
blst.add_xml_element (v_bestand, 'InkoopPrijs', rec_art.prijs);
blst.add_xml_element (v_bestand, 'Omschrijving', rec_art.omsch);
blst.add_xml_element (v_bestand, 'LeverDatum', rec_art.leverdatum); -- leverdatum zoals lyreco aanleverd tijd staat altijd op 08:00:00
--blst.add_xml_element (v_bestand, 'TechnischeKey', 'Technisch materiaal'); -- kan komen te vervallen
blst.add_xml_element (v_bestand, 'Leverancier', 'LYRECO');
blst.add_xml_element (v_bestand, 'Artikelsoort', '1');
blst.add_xml_element (v_bestand, 'CatalogusID',rec_art.catalogus_id); -- Catalogus extern nr
blst.add_xml_element (v_bestand, 'Groep', rec_art.cpv_code); -- CPV code per artikel, komt per artikel
blst.add_xml_element (v_bestand, 'StartDatum', rec.leverdatum); -- alternatieve startdatum
blst.add_xml_element (v_bestand, 'EindDatum', rec.leverdatum); -- alternatieve einddatum
v_totalPrice := v_totalPrice + rec_art.prijs*rec_art.aantal;
blst.add_xml_row (v_bestand, '</Item>');
v_artCounter := v_artCounter + 1;
END LOOP;
blst.add_xml_element (v_bestand, 'TotaalPrijs', v_totalPrice);
blst.add_xml_row (v_bestand, '</Inkooporderbes_new>');
blst.add_xml_row (v_bestand, '</Facilitor>');
IF rec.extern = 1
IF (rec.ikp_bericht='1')
THEN
blst_select_bes_vkp_new (rec.bes_key,v_aanvraagnr, v_counter);
END IF;
v_bestand := v_base || '-' || v_counter || '-';
v_totalPrice := 0;
blst.add_xml_row (v_bestand,'<?xml version="1.0" encoding="windows-1252"?>');
blst.add_xml_row (v_bestand, '<Facilitor>');
blst.add_xml_row (v_bestand, '<SOAPEnvelope>');
blst.add_xml_element (v_bestand, 'Action', v_base);
blst.add_xml_element (v_bestand, 'GUID', v_guid);
blst.add_xml_element (v_bestand, 'User', 'FACILITOR');
blst.add_xml_row (v_bestand, '</SOAPEnvelope>');
blst.add_xml_row (v_bestand, '<Inkooporderbes_new>');
blst.add_xml_row (v_bestand, '<Header>');
blst.add_xml_element (v_bestand,'ReserveringNr',v_aanvraagNr);
blst.add_xml_element (v_bestand, 'Aanmaakdatum', v_today);
blst.add_xml_row (v_bestand, '</Header>');
--blst.add_xml_element (v_bestand,'ReserveringNr', blst.getAanvraagNr (TO_CHAR (rec.res_key)));
blst.add_xml_element (v_bestand,'Omschrijving',rec.omschrijving);
-- blst.add_xml_element (v_bestand, 'BES_KEY', rec.bes_key);
blst.add_xml_element (v_bestand, 'Opmerking', rec.opmerking);
blst.add_xml_element (v_bestand, 'LeverancierNr', rec.leveranciernr);
blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV');
blst.add_xml_element (v_bestand, 'Besteller', rec.kostenplaats);
blst.add_xml_element (v_bestand, 'UserID', v_SAPID);
blst.add_xml_row (v_bestand, '<AfleverAdres>');
blst.add_xml_element (v_bestand, 'RuimteId', '.'); -- heb geen ruimte bij een bes maar . mag ook
blst.add_xml_element (v_bestand, 'LandCode', rec.land);
blst.add_xml_element (v_bestand, 'Postcode', rec.postcode);
blst.add_xml_element (v_bestand, 'Plaats', rec.plaats);
blst.add_xml_element (v_bestand, 'Straat', rec.straat); -- nu moeten we het huisnr nog van het adres halen want SAP wil alleen de straat !
blst.add_xml_element (v_bestand, 'Nr', rec.nummer);
blst.add_xml_element (v_bestand, 'Gebouw', rec.gebouwCode);
blst.add_xml_row (v_bestand, '</AfleverAdres>');
v_artCounter := 1;
FOR rec_art IN sel_bes (rec.bes_key)
LOOP
blst.add_xml_row (v_bestand, '<Item>');
blst.add_xml_element (v_bestand,'Regelnummer',v_artCounter);
blst.add_xml_element (v_bestand, 'Actie', '01');
blst.add_xml_element (v_bestand, 'ArtikelNr',rec_art.artikelNr);
blst.add_xml_element (v_bestand, 'Aantal', rec_art.aantal);
blst.add_xml_element (v_bestand, 'Conditiesoort', rec.conditiesoort);
blst.add_xml_element (v_bestand, 'Prijs', rec_art.aantal*rec_art.prijs);
blst.add_xml_element (v_bestand, 'InkTotPrijs', 0);
blst.add_xml_element (v_bestand, 'ArtikelPrijs', rec_art.prijs);
blst.add_xml_element (v_bestand, 'InkoopPrijs', rec_art.prijs);
blst.add_xml_element (v_bestand, 'Omschrijving', rec_art.omsch);
blst.add_xml_element (v_bestand, 'LeverDatum', rec_art.leverdatum); -- leverdatum zoals lyreco aanleverd tijd staat altijd op 08:00:00
--blst.add_xml_element (v_bestand, 'TechnischeKey', 'Technisch materiaal'); -- kan komen te vervallen
blst.add_xml_element (v_bestand, 'Leverancier', 'LYRECO');
blst.add_xml_element (v_bestand, 'Artikelsoort', '1');
blst.add_xml_element (v_bestand, 'CatalogusID',rec_art.catalogus_id); -- Catalogus extern nr
blst.add_xml_element (v_bestand, 'Groep', rec_art.cpv_code); -- CPV code per artikel, komt per artikel
blst.add_xml_element (v_bestand, 'StartDatum', rec.leverdatum); -- alternatieve startdatum
blst.add_xml_element (v_bestand, 'EindDatum', rec.leverdatum); -- alternatieve einddatum
v_totalPrice := v_totalPrice + rec_art.prijs*rec_art.aantal;
blst.add_xml_row (v_bestand, '</Item>');
v_artCounter := v_artCounter + 1;
END LOOP;
blst.add_xml_element (v_bestand, 'TotaalPrijs', v_totalPrice);
blst.add_xml_row (v_bestand, '</Inkooporderbes_new>');
blst.add_xml_row (v_bestand, '</Facilitor>');
-- IF rec.extern = 1
-- THEN
-- blst_select_bes_vkp_new (rec.bes_key,v_aanvraagnr, v_counter);
-- END IF;
END IF;
IF rec.vkp_bericht='1'
OR (rec.ikp_bericht='1' AND rec.extern = 1 AND rec.vkp_bericht='1') -- fall back voor Lyreco bestellingen
THEN
blst_select_bes_vkp_new (rec.bes_key,v_aanvraagnr, v_counter);
END IF;
SELECT DISTINCT bsg.ins_discipline_key
INTO v_discipline_key
FROM bes_bestelopdr bo, bes_bestelopdr_item bboi, bes_bestelling_item bbi, bes_srtdeel bsd, bes_srtgroep bsg, ins_tab_discipline id
WHERE bo.bes_bestelopdr_key= rec.bes_key
AND bboi.bes_bestelopdr_key=bo.bes_bestelopdr_key
AND bbi.bes_bestelopdr_item_key = bboi.bes_bestelopdr_item_key
AND bsd.bes_srtdeel_key=bbi.bes_srtdeel_key
AND bsg.bes_srtgroep_key=bsd.bes_srtgroep_key
AND id.ins_discipline_key= bsg.ins_discipline_key;
IF rec.extern=1
THEN
SELECT bk.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk bs, bes_kenmerk bk
WHERE bs.bes_srtkenmerk_upper='SAP_ID_EXTERN'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_srtinstallatie_key=v_discipline_key
AND bk.bes_kenmerk_verwijder IS NULL;
ELSE
SELECT bk.bes_kenmerk_key
INTO v_kenmerk_key
FROM bes_srtkenmerk bs, bes_kenmerk bk
WHERE bs.bes_srtkenmerk_upper='SAP_ID'
AND bk.bes_srtkenmerk_key = bs.bes_srtkenmerk_key
AND bk.bes_srtinstallatie_key=v_discipline_key
AND bk.bes_kenmerk_verwijder IS NULL;
END IF;
IF v_kenmerk_key > 0
THEN
flx.setflex ('BES', v_kenmerk_key, rec.bes_bestel_key, v_aanvraagNr);
END IF;
v_counter := v_counter + 1;
v_counter := v_counter + 1;
UPDATE bes_bestelopdr
SET bes_bestelopdr_externsyncdate = SYSDATE,
bes_bestelopdr_externnr = v_aanvraagnr,
bes_bestelopdr_status=4
WHERE bes_bestelopdr_key = rec.bes_key;
UPDATE bes_bestelopdr
SET bes_bestelopdr_externsyncdate = SYSDATE,
bes_bestelopdr_externnr = v_aanvraagnr,
bes_bestelopdr_status=4
WHERE bes_bestelopdr_key = rec.bes_key;
fac.trackaction (
fac.trackaction (
'BESTRK',
rec.bes_bestel_key,
3,