<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:asp="remove">

  <xsl:output method="text" encoding="ISO-8859-1"/>

  <xsl:template match="/Document">

    <xsl:variable name="blank" select="''"/>

    <xsl:variable name="seperator" select="','"/>

    <xsl:variable name="orderdate" select="OrderDate"/>

    <xsl:variable name="accountingcustomercode" select="AccountingCustomerCode"/>

    <xsl:variable name="ordernumber" select="OrderNumber"/>

    <xsl:variable name="expecteddeliverydate" select="ExpectedDeliveryDate"/>

    <xsl:variable name="suppliername" select="Parties/PartyIdentifier[Type='SHIPFROM']/Name"/>

    <xsl:variable name="customername" select="Parties/PartyIdentifier[Type='SHIPTO']/Name"/>

    <xsl:variable name="deliverystreet1" select="Parties/PartyIdentifier[Type='SHIPTO']/Street1"/>

    <xsl:variable name="deliverystreet2" select="Parties/PartyIdentifier[Type='SHIPTO']/Street2"/>

    <xsl:variable name="deliverysuburb" select="Parties/PartyIdentifier[Type='SHIPTO']/Suburb"/>

    <xsl:variable name="deliverystate" select="Parties/PartyIdentifier[Type='SHIPTO']/State"/>

    <xsl:variable name="deliverypostcode" select="Parties/PartyIdentifier[Type='SHIPTO']/PostCode"/>

      <xsl:variable name="deliverycountry" select="Parties/PartyIdentifier[Type='SHIPTO']/Country"/>

    <xsl:variable name="contactname" select="Parties/PartyIdentifier[Type='SHIPTO']/ContactName"/>


    <xsl:value-of select="concat('&quot;','BEGINREC','&quot;')"/>

    <xsl:text>

</xsl:text>


    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'SENDERNAME'"/>

      <xsl:with-param name="value" select="AccountingCustomerAccountingID"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'INPUTTYPE'"/>

      <xsl:with-param name="value" select="'PURCHASE ORDER'"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'INPUTKEY'"/>

      <xsl:with-param name="value" select="OrderNumber"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'SUPPLIER'"/>

      <xsl:with-param name="value" select="''"/>

    </xsl:call-template>

    <!-- <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'ATTN'"/>

      <xsl:with-param name="value" select="''"/>

    </xsl:call-template>-->

    <xsl:call-template name="display-namevaluedate">

      <xsl:with-param name="name" select="'DATEREQUIRED'"/>

      <xsl:with-param name="value" select="OrderDate"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'OURCONTACT'"/>

      <xsl:with-param name="value" select="$contactname"/>

    </xsl:call-template>

    <!-- <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'COMMENTS'"/>

      <xsl:with-param name="value" select="Comment"/>

    </xsl:call-template> -->

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DNAME'"/>

      <xsl:with-param name="value" select="$customername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DADDR1'"/>

      <xsl:with-param name="value" select="$deliverystreet1"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DADDR2'"/>

      <xsl:with-param name="value" select="$deliverystreet2"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DADDR3'"/>

      <xsl:with-param name="value" select="$deliverysuburb"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DSTATE'"/>

      <xsl:with-param name="value" select="$deliverystate"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DPCODE'"/>

      <xsl:with-param name="value" select="$deliverypostcode"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'DCOUNTRY'"/>

      <xsl:with-param name="value" select="$deliverycountry"/>

    </xsl:call-template>

  <!--  <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PNAME'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PADDR1'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PADDR2'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PADDR3'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PSTATE'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PPCODE'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'PCOUNTRY'"/>

      <xsl:with-param name="value" select="$suppliername"/>

    </xsl:call-template>-->

    <xsl:call-template name="display-namevaluestring">

      <xsl:with-param name="name" select="'SHIPPING'"/>

      <xsl:with-param name="value" select="SupplierFreightCompanyCode"/>

    </xsl:call-template>

    <xsl:for-each select="Lines/Line">

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('ITEMCODE_SENDER',position())"/>

        <xsl:with-param name="value" select="BarCode"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('ITEMCODE_RECEIVER',position())"/>

        <xsl:with-param name="value" select="MatchedItemCode"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('ITEMDESC',position())"/>

        <xsl:with-param name="value" select="ItemDescription"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('ITEMQTY',position())"/>

        <xsl:with-param name="value" select="QuantityAccepted"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('UNIT',position())"/>

        <xsl:with-param name="value" select="UnitUoM"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('UNITQTY',position())"/>

        <xsl:with-param name="value" select="'1'"/>

      </xsl:call-template>

      <xsl:call-template name="display-namevaluestring">

        <xsl:with-param name="name" select="concat('PRICEEX',position())"/>

        <xsl:with-param name="value" select="ActualUnitPriceExTax"/>

      </xsl:call-template>

    </xsl:for-each>

    


  </xsl:template>



  <xsl:template name="display-namevaluestring">

    <xsl:param name="name"/>

    <xsl:param name="value"/>



    <xsl:variable name="encodedvalue">

        <xsl:call-template name="replace-string">

          <xsl:with-param name="text" select="$value"/>

          <xsl:with-param name="replace" select="'&quot;'" />

          <xsl:with-param name="with" select="'&quot;&quot;'"/>

        </xsl:call-template>

    </xsl:variable>


    <xsl:value-of select="concat('&quot;',$name,'&quot;,&quot;', $encodedvalue,'&quot;')"/>

      <xsl:text>

</xsl:text>

  </xsl:template>


  <xsl:template name="display-namevaluedate">

    <xsl:param name="name"/>

    <xsl:param name="value"/>


    <xsl:choose>

      <xsl:when test="substring($value,5,1)='-' or substring($value,5,1)='/' ">

        <xsl:value-of select="concat('&quot;',$name,'&quot;,&quot;',substring($value,9,2),substring($value,6,2),substring($value,1,4),'&quot;')"/>

      </xsl:when>

      <xsl:otherwise>

        <xsl:value-of select="concat('&quot;',$name,'&quot;,&quot;',substring($value,1,2),substring($value,4,2),substring($value,7,4),'&quot;')"/>

      </xsl:otherwise>

    </xsl:choose>


    <xsl:text>

</xsl:text>

  </xsl:template>

  

  <xsl:template name="display-string">

    <xsl:param name="value"/>


    <xsl:value-of select="translate($value,',',' ')"/>

  </xsl:template>



  <xsl:template name="display-date">

    <xsl:param name="value"/>


    <xsl:choose>

      <xsl:when test="substring($value,5,1)='-' or substring($value,5,1)='/' ">

        <xsl:value-of select="concat(substring($value,9,2),'-',substring($value,6,2),'-',substring($value,1,4))"/>

      </xsl:when>

      <xsl:otherwise>

        <xsl:value-of select="concat(substring($value,1,2),'-',substring($value,4,2),'-',substring($value,7,4))"/>

      </xsl:otherwise>

    </xsl:choose>

  </xsl:template>

  

  

<xsl:template name="replace-string">

    <xsl:param name="text"/>

    <xsl:param name="replace"/>

    <xsl:param name="with"/>

    <xsl:choose>

      <xsl:when test="contains($text,$replace)">

        <xsl:value-of select="substring-before($text,$replace)"/>

        <xsl:value-of select="$with"/>

        <xsl:call-template name="replace-string">

          <xsl:with-param name="text"

select="substring-after($text,$replace)"/>

          <xsl:with-param name="replace" select="$replace"/>

          <xsl:with-param name="with" select="$with"/>

        </xsl:call-template>

      </xsl:when>

      <xsl:otherwise>

        <xsl:value-of select="$text"/>

      </xsl:otherwise>

    </xsl:choose>

  </xsl:template>



</xsl:stylesheet>