See the example of SORTOI code below:
<?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" /> <xsl:param name="WarehouseList" /> <!--Comma Seperated list of warehouses to use. Should come for operator profile --> <xsl:param name="CustRequestDate" /> <xsl:param name="OrderDate" /> <xsl:param name="RequestedShipDate" /> <xsl:param name="InvoiceDateEntered" /> <xsl:param name="InvoiceTerms" /> <xsl:param name="FreightCost" /> <xsl:param name="FreightValue" /> <xsl:param name="Discount1" /> <xsl:param name="Discount2" /> <xsl:param name="Discount3" /> <xsl:param name="AlternateReference" /> <xsl:param name="UseStockDescSupplied" /> <xsl:param name="MiscTax" /> <xsl:param name="OrderStatus" /> <xsl:param name="TypeOfOrder" /> <xsl:param name="OrderType" /> <xsl:param name="MultiShipCode" /> <xsl:param name="OrderMethod" /> <!-- Main Loop Builds Order Header and Calls Stock Lines, FreightLines and Misc Lines --> <xsl:template match="/"> <SalesOrders xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="SORTOI.XSD"> <Orders> <OrderHeader> <AlternateReference> <xsl:value-of select="normalize-space($AlternateReference)" /> </AlternateReference> <RequestedShipDate> <xsl:value-of select="$RequestedShipDate" /> </RequestedShipDate> <CustomerPoNumber> <xsl:variable name="POValue" select="normalize-space(/SalesOrder/OrderHeader/PO)" /> <xsl:if test="$POValue =''"> WEB<xsl:value-of select="/SalesOrder/OrderHeader/OrderHeader_ID" /> </xsl:if> <xsl:if test="$POValue !=''"> <xsl:value-of select="$POValue" /> </xsl:if> </CustomerPoNumber> <OrderActionType>A</OrderActionType> <!-- Use e.net defaults <Supplier>A</Supplier> --> <Customer> <xsl:value-of select="/SalesOrder/OrderHeader/CustomerNumber" /> </Customer> <OrderDate> <xsl:value-of select="$OrderDate" /> </OrderDate> <ShippingInstrs> <xsl:value-of select="/SalesOrder/OrderHeader/ShippingMethodName" /> </ShippingInstrs> <ShippingInstrsCode> <xsl:value-of select="/SalesOrder/OrderHeader/ShippingInstructionCode" /> </ShippingInstrsCode> <CustomerName> <xsl:value-of select="/SalesOrder/OrderHeader/Name" /> </CustomerName> <xsl:if test="$MultiShipCode=''"> <ShipAddress1> <xsl:value-of select="/SalesOrder/OrderHeader/Address1" /> </ShipAddress1> <ShipAddress2> <xsl:value-of select="/SalesOrder/OrderHeader/Address2" /> </ShipAddress2> <ShipAddress3> <xsl:value-of select="/SalesOrder/OrderHeader/Address3" /> </ShipAddress3> <ShipAddress4> <xsl:value-of select="/SalesOrder/OrderHeader/Address4" /> </ShipAddress4> <ShipAddress5> <xsl:value-of select="/SalesOrder/OrderHeader/Address5" /> </ShipAddress5> <ShipPostalCode> <xsl:value-of select="/SalesOrder/OrderHeader/Zip" /> </ShipPostalCode> </xsl:if> <xsl:if test="$MultiShipCode!=''"> <ShipAddress1 /> <ShipAddress2 /> <ShipAddress3 /> <ShipAddress4 /> <ShipAddress5 /> <ShipPostalCode /> <MultiShipCode> <xsl:value-of select="$MultiShipCode" /> </MultiShipCode> </xsl:if> <Email> <xsl:value-of select="/SalesOrder/OrderHeader/Email" /> </Email> <OrderDiscPercent1> <xsl:value-of select="$Discount1" /> </OrderDiscPercent1> <OrderDiscPercent2> <xsl:value-of select="$Discount2" /> </OrderDiscPercent2> <OrderDiscPercent3> <xsl:value-of select="$Discount3" /> </OrderDiscPercent3> <Warehouse> <xsl:value-of select="$WarehouseList" /> </Warehouse> <SpecialInstrs> <xsl:value-of select="/SalesOrder/OrderHeader/SpecialInstructions" /> </SpecialInstrs> <Area> <xsl:value-of select="/SalesOrder/OrderHeader/TaxArea" /> </Area> <State> <xsl:value-of select="/SalesOrder/OrderHeader/TaxState" /> </State> <CountyZip> <xsl:value-of select="/SalesOrder/OrderHeader/TaxCountyZip" /> </CountyZip> <City> <xsl:value-of select="/SalesOrder/OrderHeader/TaxCity" /> </City> <InvoiceTerms> <xsl:value-of select="$InvoiceTerms" /> </InvoiceTerms> <OrderComments> <xsl:value-of select="/SalesOrder/OrderHeader/Comments" /> </OrderComments> <OrderStatus> <xsl:value-of select="$OrderStatus" /> </OrderStatus> <TypeOfOrder> <xsl:value-of select="$TypeOfOrder" /> </TypeOfOrder> <OrderType> <xsl:value-of select="$OrderType" /> </OrderType> </OrderHeader> <OrderDetails> <!-- get Line Items --> <xsl:call-template name="detail"> <xsl:with-param name="i" select="0" /> </xsl:call-template> <!-- get Shipping, Provide it the current line item--> <xsl:call-template name="Freight"> <xsl:with-param name="LnNum" select="count(//OrderDetails)" /> <xsl:with-param name="FreightValue" select="/SalesOrder/OrderHeader/ShippingCost" /> </xsl:call-template> <!-- get GiftcertificateValue, Provide it the current line item--> <xsl:variable name="GiftcertificateValue" select="/SalesOrder/OrderHeader/GiftCertificateValue" /> <xsl:variable name="GiftCertificateNumber" select="/SalesOrder/OrderHeader/GiftCertificateNumber" /> <xsl:variable name="GiftCertificateDescription" select="/SalesOrder/OrderHeader/GiftCertificateDescription" /> <xsl:if test="$GiftcertificateValue!='0.00000'"> <xsl:call-template name="MisItems"> <xsl:with-param name="LnNum" select="count(//OrderDetails)+1" /> <xsl:with-param name="Misvalue" select="$GiftcertificateValue" /> <xsl:with-param name="MisDesc" select="concat('WEB PROMO: ',$GiftCertificateNumber)" /> <xsl:with-param name="MiscCost" select="0" /> <xsl:with-param name="MiscProdClass" select="'_OTH'" /> </xsl:call-template> </xsl:if> </OrderDetails> </Orders> </SalesOrders> </xsl:template> <!-- OrderDetails Loop Builds Order Detail, tracking its Line # --> <xsl:template match="//OrderDetails" name="detail"> <xsl:for-each select="//OrderDetails"> <xsl:variable name ="UnitPrice" select="UnitPrice" /> <xsl:variable name ="LinePrice" select="LinePrice" /> <xsl:variable name ="item_description" select="item_description" /> <xsl:variable name ="CustomerPrice" select="CustomerPrice" /> <xsl:variable name ="DiscountPrice" select="DiscountPrice" /> <xsl:variable name ="NotTaxable" select="NotTaxable" /> <xsl:variable name ="ItemType" select="ItemType" /> <xsl:if test="$ItemType='A' or $ItemType='B' or $ItemType='C' or $ItemType='P'"> <StockLine> <CustomerPoLine> <xsl:value-of select="LineNumber" /> </CustomerPoLine> <LineActionType>A</LineActionType> <StockCode> <xsl:value-of select="StockCode" /> </StockCode> <xsl:if test="ItemWarehouse!=''"> <Warehouse> <xsl:value-of select="ItemWarehouse"/> </Warehouse> </xsl:if> <xsl:variable name="description" select="$UseStockDescSupplied" /> <xsl:if test="$description!=''"> <StockDescription> <xsl:value-of select="substring($item_description, 1,30)" /> </StockDescription> </xsl:if> <OrderQty> <xsl:value-of select="Quantity" /> </OrderQty> <OrderUom> <xsl:value-of select="Unit" /> </OrderUom> <xsl:if test="$NotTaxable = 'false'"> <StockNotTaxable></StockNotTaxable> </xsl:if> <xsl:if test="$NotTaxable = 'true'"> <StockNotTaxable>Y</StockNotTaxable> </xsl:if> <Price> <xsl:value-of select="$LinePrice" /> </Price> <PriceUom> <xsl:value-of select="Unit" /> </PriceUom> <xsl:variable name="StockCode" select="StockCode"></xsl:variable> <LineDiscPercent1> <xsl:value-of select="//SalesOrder/Discounts[@StockCode=$StockCode]/DiscountPct1" /> </LineDiscPercent1> <LineDiscPercent2> <xsl:value-of select="//SalesOrder/Discounts[@StockCode=$StockCode]/DiscountPct2" /> </LineDiscPercent2> <LineDiscPercent3> <xsl:value-of select="//SalesOrder/Discounts[@StockCode=$StockCode]/DiscountPct3" /> </LineDiscPercent3> <xsl:variable name="GSTTax" select="//SalesOrder/Discounts[@StockCode=$StockCode]/GSTTaxCode" /> <xsl:if test="GSTTax!=''"> <StockFstCode> <xsl:value-of select="//SalesOrder/Discounts[@StockCode=$StockCode]/GSTTaxCode" /> </StockFstCode> </xsl:if> </StockLine> </xsl:if> <xsl:if test="$ItemType='M'"> <MiscChargeLine> <CustomerPoLine> <xsl:value-of select="LineNumber" /> </CustomerPoLine> <LineActionType>A</LineActionType> <MiscChargeValue> <xsl:value-of select="format-number($LinePrice,'#.##')" /> </MiscChargeValue> <MiscChargeCost> </MiscChargeCost> <MiscQuantity>1</MiscQuantity> <MiscProductClass>_OTH</MiscProductClass> <!-- <xsl:value-of select="_OTH" /> </MiscProductClass> --> <MiscDescription> <xsl:value-of select="substring($item_description, 1,30)" /> </MiscDescription> <MiscNotTaxable> <xsl:value-of select="$MiscTax" /> </MiscNotTaxable> </MiscChargeLine> </xsl:if> <xsl:if test="$ItemType='O'"> <CommentLine> <CustomerPoLine> <xsl:value-of select="LineNumber"/> </CustomerPoLine> <LineActionType>A</LineActionType> <Comment> <xsl:value-of select="substring($item_description, 1,30)" /> </Comment> <AttachedLineNumber>1</AttachedLineNumber> <CommentType/> </CommentLine> </xsl:if> </xsl:for-each> </xsl:template> <!-- FreightLine for shipping called after line items --> <xsl:template name="Freight"> <xsl:param name="LnNum" /> <xsl:variable name="ShippingCost" select="//ShippingCost" /> <xsl:if test="format-number($ShippingCost,'#.##')!='NaN'"> <FreightLine> <CustomerPoLine> <xsl:value-of select="$LnNum +1" /> </CustomerPoLine> <LineActionType>A</LineActionType> <FreightValue> <xsl:value-of select="format-number($ShippingCost,'#.##')" /> </FreightValue> <FreightCost> <xsl:value-of select="format-number($ShippingCost,'#.##')" /> </FreightCost> </FreightLine> </xsl:if> </xsl:template> <!-- Mis for shipping called after Line items and Freight duplicate calls for diffrent charges. LnNum --> <xsl:template name="MisItems"> <xsl:param name="LnNum" /> <xsl:param name="Misvalue" /> <xsl:param name="MisDesc" /> <xsl:param name="MiscCost" /> <xsl:param name="MiscProdClass" /> <MiscChargeLine> <CustomerPoLine> <xsl:value-of select="$LnNum +1" /> </CustomerPoLine> <LineActionType>A</LineActionType> <MiscChargeValue> <xsl:value-of select="format-number($Misvalue,'#.##')" /> </MiscChargeValue> <MiscChargeCost> <xsl:value-of select="format-number($MiscCost,'#.##')" /> </MiscChargeCost> <MiscQuantity>1</MiscQuantity> <MiscProductClass> <xsl:value-of select="$MiscProdClass" /> </MiscProductClass> <MiscDescription> <xsl:value-of select="$MisDesc" /> </MiscDescription> <MiscNotTaxable> <xsl:value-of select="$MiscTax" /> </MiscNotTaxable> </MiscChargeLine> </xsl:template> </xsl:stylesheet>
This document is copyrighted by Dovetail Internet Technologies, LLC., the developers of CyberStore (www.CyberStoreForSYSPRO.com).
The name SYSPRO and other information contained in this document and the application are used with the permission of SYSPRO Impact Software, Inc. (www.syspro.com) Published Thursday, December 14, 2023