MARX#39622: Roadmap: AX-Bestellingen via Mareon laten verlopen

svn path=/Website/branches/v2016.3/; revision=33007
This commit is contained in:
Marcel Bourseau
2017-03-01 16:05:04 +00:00
parent c8af95f594
commit ee9886f8dd
4 changed files with 372 additions and 0 deletions

66
CUST/MARX/xsl/AX_TU.xsl Normal file
View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:template match="bestelopdracht">
<!--Facilitor custom XSL template for cXML bestelopdracht-->
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.gs1.nl">
<OrderHeader>
<OrderVersion>008</OrderVersion>
<OrderTypeCode>220</OrderTypeCode>
<Document>
<DocumentNumber><xsl:value-of select='bestelling/kenmerk[@key=6]'/></DocumentNumber>
<Date><xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/></Date>
</Document>
<ScenarioCode>X1</ScenarioCode>
<ProjectNumber/>
<EndCustomerOrderNumber><xsl:value-of select="id"/></EndCustomerOrderNumber>
<Supplier>
<GLN><xsl:value-of select='bedrijf/leverancier_nr'/></GLN>
</Supplier>
<Buyer>
<GLN><xsl:value-of select='bestelling/voor/afdeling/bedrijf/leverancier_nr'/></GLN>
</Buyer>
<DeliveryParty>
<PartyName><xsl:value-of select='bestelling/kenmerk[@key=1]'/></PartyName>
<StreetAndNumber><xsl:value-of select='bestelling/kenmerk[@key=3]'/></StreetAndNumber>
<Postcode><xsl:value-of select='bestelling/kenmerk[@key=4]'/></Postcode>
<CityName><xsl:value-of select='bestelling/kenmerk[@key=5]'/></CityName>
</DeliveryParty>
</OrderHeader>
<xsl:for-each select="bestelopdrachtitem">
<xsl:sort select="bestelitem/kenmerk[@key='8']"/>
<xsl:element name="OrderLine">
<LineItemNumber><xsl:value-of select="bestelitem/kenmerk[@key='8']"/></LineItemNumber>
<GTIN><xsl:value-of select="bestelitem/srtdeel/artikel_nummer"/></GTIN>
<OrderedQuantity>
<Quantity><xsl:value-of select="aantal"/></Quantity>
<MeasureUnitQualifier><xsl:value-of select="bestelitem/srtdeel/eenheid"/></MeasureUnitQualifier>
</OrderedQuantity>
</xsl:element>
</xsl:for-each>
</Order>
</xsl:template>
<xsl:template match="facilitor">
<xsl:apply-templates select="bestelopdracht"/>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$mode='getExtension'">
<xsl:element name="format">
<xsl:element name="extension">xml</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="facilitor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://www.gs1.nl" version="1.0">
<xsl:output method="text" encoding="UTF-8"/>
<!-- bes_bestelling_memo alvast gereserveerd, nu nog leeg gelaten, indien gevuld komt die in bes_bestelling_opmerking C320 terecht -->
<!-- bes_orderline_art_code kan naast GTIN worden gebruikt, de naam XML-tag (node) is onbekend en hier is SidB term gebruikt (SuppliersTradeItemId), kan evt zo worden aangepast. GTIN of dit veld komt in bes_srtdeel_nr C32 terecht -->
<!-- bes_orderline_art_descr wordt nog niet gevuld, komt wel in bes_srtdeel_omschrijving C100 terecht indien gevuld -->
<!-- bes_orderline_art_prijs is leeg komt als 0 in bes_srtdeel_prijs_prijs terecht -->
<!-- bes_orderline_art_btw wordt nu hard op 21 gezet gezien dat vanuit AX dit niet wordt aangeleverd en komt in bes_srtdeel_btw terecht -->
<!-- Let op: namespace ns1 is zomaar een naam, en is nodig vanwege die default lege namespace die in de input XML staat -->
<xsl:template match="ns1:Order">gln_supplier;gln_buyer;bes_afleveradres_code;bes_afleveradres_straat_huisnr;bes_afleveradres_postcode;bes_afleveradres_plaats;bes_bestelling_memo;bes_ordernr;bes_aflever_datumbes_orderline_nr;bes_orderline_gtin;bes_orderline_art_code;bes_orderline_art_descr;bes_orderline_art_eenheid;bes_orderline_art_aantal;bes_orderline_art_prijs;bes_orderline_art_btw
<xsl:for-each select="ns1:OrderLine"><xsl:value-of select="../ns1:OrderHeader/ns1:Supplier/ns1:GLN"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:Buyer/ns1:GLN"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:DeliveryParty/ns1:PartyName"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:DeliveryParty/ns1:StreetAndNumber"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:DeliveryParty/ns1:Postcode"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:DeliveryParty/ns1:CityName"/>;;<xsl:value-of select="../ns1:OrderHeader/ns1:Document/ns1:DocumentNumber"/>;<xsl:value-of select="../ns1:OrderHeader/ns1:Document/ns1:Date"/>;<xsl:value-of select="ns1:LineItemNumber"/>;<xsl:value-of select="ns1:GTIN"/>;<xsl:value-of select="ns1:SuppliersTradeItemId"/>;;<xsl:value-of select="ns1:OrderedQuantity/ns1:MeasureUnitQualifier"/>;<xsl:value-of select="ns1:OrderedQuantity/ns1:Quantity"/>;;21;&#10;</xsl:for-each>
</xsl:template>
<xsl:template name="vrije_tekst">
<xsl:param name="p_string"/>
<xsl:variable name="l_string_esc_quotes"><xsl:call-template name="escape_quote"><xsl:with-param name="string" select="$p_string"/></xsl:call-template></xsl:variable>
<xsl:variable name="l_string_esc_linebreaks"><xsl:call-template name="escape_linebreaks"><xsl:with-param name="string" select="$l_string_esc_quotes"/></xsl:call-template></xsl:variable>"<xsl:value-of select="$l_string_esc_linebreaks"/>"</xsl:template>
<xsl:template name="escape_quote">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '&quot;')"><xsl:value-of select="substring-before($string, '&quot;')"/>&quot;&quot;<xsl:call-template name="escape_quote">
<xsl:with-param name="string" select="substring-after($string, '&quot;')"/></xsl:call-template></xsl:when>
<xsl:otherwise><xsl:value-of select="$string"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="escape_linebreaks">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '&#xA;')"><xsl:value-of select="substring-before($string, '&#xA;')"/>@@<xsl:call-template name="escape_linebreaks">
<xsl:with-param name="string" select="substring-after($string, '&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$string"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*">
<xsl:choose>
<!-- Zonder prefix en facilitor-node, dan -->
<!-- als response: toevoegen envelop! -->
<!-- als update: 1-op-1 door! -->
<xsl:when test="substring-before(name(),concat(':', local-name()))='' and local-name()='Order'">
<xsl:value-of select="name()"/>
<xsl:apply-templates select="ns1:Order"/>
</xsl:when>
<!--xsl:when test="local-name()='Envelope'">
<xsl:apply-templates select="soap:Envelope"/>
</xsl:when-->
<!-- Met prefix, dus insert/update: prefix weg + evt. velden "injecteren"! -->
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:template match="bestelopdracht">
<!--Facilitor custom XSL template for cXML bestelopdracht-->
<Order xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.gs1.nl/order/insbou/004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gs1.nl/order/insbou/004 Order_insbou004.xsd">
<OrderType>220</OrderType>
<OrderNumber><xsl:value-of select='bestelling/kenmerk[@key=6]'/></OrderNumber>
<OrderDate><xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/></OrderDate>
<OrderTime><xsl:value-of select="datum/tijd"/>:00</OrderTime>
<ScenarioTypeCode>X1</ScenarioTypeCode>
<EndCustomerOrderNumber><xsl:value-of select="id"/></EndCustomerOrderNumber>
<Buyer>
<GLN><xsl:value-of select='bestelling/voor/afdeling/bedrijf/leverancier_nr'/></GLN>
</Buyer>
<Supplier>
<GLN><xsl:value-of select='bedrijf/leverancier_nr'/></GLN>
</Supplier>
<DeliveryParty>
<Name><xsl:value-of select='bestelling/kenmerk[@key=1]'/></Name>
<StreetAndNumber><xsl:value-of select='bestelling/kenmerk[@key=3]'/></StreetAndNumber>
<PostalCode><xsl:value-of select='bestelling/kenmerk[@key=4]'/></PostalCode>
<City><xsl:value-of select='bestelling/kenmerk[@key=5]'/></City>
<LocationDescription><xsl:value-of select='bestelling/kenmerk[@key=1]'/></LocationDescription>
</DeliveryParty>
<xsl:for-each select="bestelopdrachtitem">
<xsl:sort select="bestelitem/kenmerk[@key='8']"/>
<OrderLine>
<LineNumber><xsl:value-of select="bestelitem/kenmerk[@key='8']"/></LineNumber>
<OrderedQuantity><xsl:value-of select="aantal"/></OrderedQuantity>
<OrderedQuantityUoM><xsl:value-of select="bestelitem/srtdeel/eenheid"/></OrderedQuantityUoM>
<LineIdentification><xsl:value-of select="bestelitem/kenmerk[@key='8']"/></LineIdentification>
<TradeItemIdentification>
<GTIN><xsl:value-of select="bestelitem/srtdeel/artikel_nummer"/></GTIN>
</TradeItemIdentification>
<DeliveryDateTimeInformation>
<RequiredDeliveryDate><xsl:value-of select="../bestelling/leverdatum/jaar"/>-<xsl:value-of select="../bestelling/leverdatum/maand"/>-<xsl:value-of select="../bestelling/leverdatum/dag"/></RequiredDeliveryDate>
</DeliveryDateTimeInformation>
</OrderLine>
</xsl:for-each>
</Order>
</xsl:template>
<xsl:template match="facilitor">
<xsl:apply-templates select="bestelopdracht"/>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$mode='getExtension'">
<xsl:element name="format">
<xsl:element name="extension">xml</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="facilitor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

177
CUST/MARX/xsl/cXML.xsl Normal file
View File

@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:decimal-format name="european" decimal-separator="." grouping-separator=","/>
<xsl:param name="mode"/>
<xsl:template match="bestelopdracht">
<!--Facilitor custom XSL template for cXML bestelopdracht-->
<xsl:element name="cXML">
<xsl:attribute name="version">1.2.016</xsl:attribute>
<xsl:attribute name="payloadID">
<xsl:value-of select="key"/>
</xsl:attribute>
<xsl:attribute name="timestamp">
<xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/>T<xsl:value-of select="datum/tijd"/>:00+01:00</xsl:attribute>
<xsl:attribute name="xml:lang">NL</xsl:attribute>
<Header>
<From>
<xsl:element name="Credential">
<xsl:attribute name="domain">
<xsl:value-of select='bestelling/voor/afdeling/bedrijf/naam'/>
</xsl:attribute>
<!--Klantcode / GLN van de woco -->
<Identity><xsl:value-of select='bestelling/voor/afdeling/bedrijf/leverancier_nr'/></Identity>
</xsl:element>
</From>
<To>
<xsl:element name="Credential">
<xsl:attribute name="domain">
<xsl:value-of select="bedrijf/naam"/>
</xsl:attribute>
<!--Klantcode / GLN van de leverancier -->
<Identity><xsl:value-of select='bedrijf/leverancier_nr'/></Identity>
</xsl:element>
</To>
<Sender>
<Credential domain="Mareon">
<Identity><xsl:value-of select="id"/></Identity>
</Credential>
<UserAgent/>
</Sender>
</Header>
<Request>
<OrderRequest>
<xsl:element name="OrderRequestHeader">
<xsl:attribute name="orderID">
<xsl:value-of select='bestelling/kenmerk[@key=6]'/>
</xsl:attribute>
<xsl:attribute name="orderDate">
<xsl:value-of select="datum/jaar"/>-<xsl:value-of select="datum/maand"/>-<xsl:value-of select="datum/dag"/>
</xsl:attribute>
<Total>
<Money currency="EUR">
<xsl:value-of select="format-number(sum(bestelopdrachtitem/totaal), '0.00', 'european')"/>
</Money>
</Total>
<ShipTo>
<xsl:element name="Address">
<xsl:attribute name="addressID">
<xsl:value-of select='bestelling/kenmerk[@key=1]'/>
</xsl:attribute>
<Name xml:lang="NL"><xsl:value-of select='bestelling/kenmerk[@key=1]'/></Name>
<PostalAddress>
<DeliverTo>
<xsl:value-of select='bestelling/voor/afdeling/bedrijf/naam'/>
</DeliverTo>
<Street>
<xsl:value-of select='bestelling/kenmerk[@key=3]'/>
</Street>
<City>
<xsl:value-of select='bestelling/kenmerk[@key=5]'/>
</City>
<State/>
<PostalCode>
<xsl:value-of select='bestelling/kenmerk[@key=4]'/>
</PostalCode>
<Country isoCountryCode="NL"/>
</PostalAddress>
</xsl:element>
</ShipTo>
<!--
<BillTo>
<xsl:element name="Address">
<xsl:attribute name="addressID">SKAF</xsl:attribute>
<Name xml:lang="NL">
<xsl:value-of select="afleveradres/naam"/>
</Name>
<PostalAddress>
<Street>
<xsl:value-of select="factuuradres/post_adres"/>
</Street>
<City>
<xsl:value-of select="factuuradres/post_plaats"/>
</City>
<State/>
<PostalCode>
<xsl:value-of select="factuuradres/post_postcode"/>
</PostalCode>
<Country isoCountryCode="NL"/>
</PostalAddress>
</xsl:element>
</BillTo>
-->
<!--
<Contact>
<Name xml:lang="NL">
<xsl:value-of select="bestelling/aanvrager/naam_full"/>
</Name>
<Email>
<xsl:value-of select="bestelling/aanvrager/email"/>
</Email>
</Contact>
-->
<Extrinsic name="MareonOrderId">
<xsl:value-of select="id"/>
</Extrinsic>
</xsl:element>
<xsl:for-each select="bestelopdrachtitem">
<xsl:sort select="bestelitem/kenmerk[@key='8']"/>
<xsl:element name="ItemOut">
<xsl:attribute name="quantity">
<xsl:value-of select="aantal"/>
</xsl:attribute>
<xsl:attribute name="lineNumber">
<xsl:value-of select="bestelitem/kenmerk[@key='8']"/>
</xsl:attribute>
<xsl:attribute name="requestedDeliveryDate">
<xsl:value-of select="../bestelling/leverdatum/jaar"/>-<xsl:value-of select="../bestelling/leverdatum/maand"/>-<xsl:value-of select="../bestelling/leverdatum/dag"/>
</xsl:attribute>
<ItemID>
<SupplierPartID>
<xsl:value-of select="bestelitem/srtdeel/artikel_nummer"/>
</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice>
<Money currency="EUR">
<xsl:value-of select="format-number(prijs, '0.00', 'european')"/>
</Money>
</UnitPrice>
<Description xml:lang="NL">
<xsl:value-of select="bestelitem/srtdeel/omschrijving"/>
</Description>
<UnitOfMeasure>
<xsl:value-of select="bestelitem/srtdeel/eenheid"/>
</UnitOfMeasure>
<Classification domain=""/>
</ItemDetail>
</xsl:element>
</xsl:for-each>
</OrderRequest>
</Request>
</xsl:element>
</xsl:template>
<xsl:template match="facilitor">
<xsl:apply-templates select="bestelopdracht"/>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$mode='getExtension'">
<xsl:element name="format">
<xsl:element name="extension">xml</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="facilitor"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>