invoice-to-gp.xslt example
<!--
FOR DEMO USE ONLY
Copyright by Artem Saveliev artem@savelev.com
-->
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template match="/invoice">
<xsl:variable name="ext_price">
<xsl:for-each select="accounts/s/b/custvehicle/guser/store/orderz/orderzs[@o_status != -9 and @o_prodtype != 'J']">
<accum><xsl:value-of select="@quantity * (@unitprice + @fet) - @discount"/></accum>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="total_markdown">
<xsl:for-each select="accounts/s/b/custvehicle/guser/store/orderz/orderzs[@o_status != -9 and @o_prodtype != 'J']">
<accum><xsl:value-of select="@discount"/></accum>
</xsl:for-each>
</xsl:variable>
<eConnect xmlns:dt="urn:schemas-microsoft-com:datatypes">
<SOPTransactionType>
<taSopLineIvcInsert_Items>
<xsl:for-each select="accounts/s/b/custvehicle/guser/store/orderz/orderzs[@o_status != -9 and @o_prodtype != 'J']">
<taSopLineIvcInsert>
<SOPTYPE>3</SOPTYPE>
<SOPNUMBE><xsl:value-of select="../../../../../../../../accounts/s/b/@quoteno" /></SOPNUMBE>
<CUSTNMBR><xsl:value-of select="../../../../../../../../accounts/@accountNo" /></CUSTNMBR>
<DOCDATE><xsl:value-of select="../../../../../../../../accounts/s/b/custvehicle/guser/@quotedate" /></DOCDATE>
<LOCNCODE>STORE <xsl:value-of select="../../../../../../../../accounts/s/b/custvehicle/guser/store/@storeNumber" /></LOCNCODE>
<xsl:choose>
<xsl:when test="itemmaster/@mfgcode = ''">
<NONINVEN>1</NONINVEN>
<ITMTSHID>PART</ITMTSHID>
<UOFM>EACH</UOFM>
</xsl:when>
<xsl:otherwise>
<UOFM><xsl:value-of select="itemmaster/@UOFM" /></UOFM>
</xsl:otherwise>
</xsl:choose>
<MRKDNAMT><xsl:value-of select="@discount" /></MRKDNAMT>
<UNITPRCE><xsl:value-of select="@unitprice" /></UNITPRCE>
<SHIPMTHD><xsl:value-of select="../../../../../../../../accounts/s/b/custvehicle/guser/@shipVia"/></SHIPMTHD>
<ITEMNMBR><xsl:value-of select="@fullItemID" /></ITEMNMBR>
<QUANTITY><xsl:value-of select="@quantity" /></QUANTITY>
<XTNDPRCE><xsl:value-of select="format-number(@quantity * (@unitprice + @fet) - @discount, '#,##0.00')"/></XTNDPRCE>
</taSopLineIvcInsert>
</xsl:for-each>
</taSopLineIvcInsert_Items>
<xsl:if test="payment[@pmtMethod!='charge']">
<taCreateSopPaymentInsertRecord_Items>
<xsl:for-each select="payment[@pmtMethod!='charge']">
<taCreateSopPaymentInsertRecord>
<SOPTYPE>3</SOPTYPE>
<SOPNUMBE><xsl:value-of select="../accounts/s/b/@quoteno"/></SOPNUMBE>
<CUSTNMBR><xsl:value-of select="../accounts/@accountNo"/></CUSTNMBR>
<DOCDATE><xsl:value-of select="../accounts/s/b/custvehicle/guser/@quotedate"/></DOCDATE>
<DOCAMNT><xsl:value-of select="@amount"/></DOCAMNT>
<xsl:choose>
<xsl:when test="@pmtMethod = 'credit card' or @pmtMethod = 'debit card'">
<DOCNUMBR><xsl:value-of select="../accounts/s/b/custvehicle/guser/store/@storeNumber" />-<xsl:value-of select="@Authorization"/></DOCNUMBR>
<PYMTTYPE>6</PYMTTYPE>
<CARDNAME><xsl:value-of select="@cardType"/></CARDNAME>
<RCTNCCRD><xsl:value-of select="@cardNumber"/></RCTNCCRD>
<AUTHCODE><xsl:value-of select="@cardCode"/></AUTHCODE>
<EXPNDATE><xsl:value-of select="@cardYear"/>/<xsl:value-of select="@cardMonth"/>/01</EXPNDATE>
</xsl:when>
<xsl:when test="@pmtMethod = 'electronic check' or @pmtMethod = 'check'">
<DOCNUMBR><xsl:value-of select="../accounts/s/b/custvehicle/guser/store/@storeNumber" />-<xsl:value-of select="@checkNumber"/>-<xsl:value-of select="@paymentID"/></DOCNUMBR>
<PYMTTYPE>5</PYMTTYPE>
<CHEKNMBR><xsl:value-of select="@checkNumber"/></CHEKNMBR>
</xsl:when>
<xsl:otherwise>
<PYMTTYPE>4</PYMTTYPE>
</xsl:otherwise>
</xsl:choose>
</taCreateSopPaymentInsertRecord>
</xsl:for-each>
</taCreateSopPaymentInsertRecord_Items>
</xsl:if>
<taSopHdrIvcInsert>
<SOPTYPE>3</SOPTYPE>
<DOCID>SALES INVOICE</DOCID>
<SOPNUMBE><xsl:value-of select="accounts/s/b/@quoteno" /></SOPNUMBE>
<LOCNCODE>STORE <xsl:value-of select="accounts/s/b/custvehicle/guser/store/@storeNumber" /></LOCNCODE>
<DOCDATE><xsl:value-of select="accounts/s/b/custvehicle/guser/@quotedate" /></DOCDATE>
<CUSTNMBR><xsl:value-of select="accounts/@accountNo" /></CUSTNMBR>
<SUBTOTAL><xsl:value-of select="format-number(sum(msxsl:node-set($ext_price)/accum), '#,##0.00')"/></SUBTOTAL>
<DOCAMNT><xsl:value-of select="format-number(sum(msxsl:node-set($ext_price)/accum), '#,##0.00')"/></DOCAMNT>
<MRKDNAMT><xsl:value-of select="format-number(sum(msxsl:node-set($total_markdown)/accum), '#,##0.00')"/></MRKDNAMT>
<xsl:if test="accounts/s/b/custvehicle/guser/@Terms">
<PYMTRMID><xsl:value-of select="accounts/s/b/custvehicle/guser/@Terms"/></PYMTRMID>
</xsl:if>
<xsl:if test="accounts/s/b/custvehicle/guser/@TaxSchedule">
<TAXSCHID><xsl:value-of select="accounts/s/b/custvehicle/guser/@TaxSchedule"/></TAXSCHID>
</xsl:if>
<xsl:if test="payment[@pmtMethod!='charge']">
<PYMTRCVD><xsl:value-of select="sum(payment[@pmtMethod!='charge']/@amount)"/></PYMTRCVD>
</xsl:if>
<BACHNUMB>DAILY SALES 9</BACHNUMB>
<CREATETAXES>1</CREATETAXES>
</taSopHdrIvcInsert>
</SOPTransactionType>
</eConnect>
</xsl:template>
</xsl:stylesheet>