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>