MARX#43987: Strukton Premium - SAP facturen
svn path=/Website/branches/v2017.2/; revision=35584
This commit is contained in:
114
CUST/MARX/xsl/F_PutFactuurSAP.xsl
Normal file
114
CUST/MARX/xsl/F_PutFactuurSAP.xsl
Normal file
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:ns0="urn:sap-com:document:sap:idoc:messages"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
|
||||
<xsl:output method="text" encoding="UTF-8"/>
|
||||
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:comment>woconr;leveranciernr;factuurnr;factuurdatum;onderwerp;opdrachtnr;omschrijving;bedrag;btwperc;btwbedrag;btw_verlegd;document;iban;G_iban;G_bedrag;kvk_nr;btw_nr;afleverdatum</xsl:comment>
|
||||
<xsl:for-each select="//ns0:INVOIC02/IDOC/E1EDP01">
|
||||
<xsl:value-of select="../E1EDKA1[PARVW='RG']/PARTN"/>;<xsl:value-of select="../E1EDKA1[PARVW='BK']/LIFNR"/>;<xsl:value-of select="../E1EDK01/BELNR"/>;<xsl:call-template name="get_factuurdatum"/>;;<xsl:call-template name="get_customer_po"/>;<xsl:call-template name="construct_factuurregel_omschr"/>;<xsl:value-of select="E1EDP26[QUALF='003']/BETRG"/>;<xsl:call-template name="VATInformation"/>;<xsl:call-template name="get_filename_attachment"/>;<xsl:value-of select="../E1EDK28[1]/ACNUM"/>;<xsl:value-of select="../E1EDK28[2]/ACNUM"/>;<xsl:call-template name="get_gbedrag"/>;<xsl:call-template name="get_kvk"/>;<xsl:call-template name="get_btwnr"/>;<xsl:call-template name="get_opleverdatum"/>; </xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_factuurdatum">
|
||||
<!-- Factuurdatum staat in formaat yyyymmdd, gaan we overzetten met streepjes ertussen, in dd-mm-yyyy -->
|
||||
<xsl:variable name="l_datum"><xsl:value-of select="../E1EDK02[QUALF='009']/DATUM"/></xsl:variable>
|
||||
<xsl:value-of select="substring($l_datum,7,2)"/>-<xsl:value-of select="substring($l_datum,5,2)"/>-<xsl:value-of select="substring($l_datum,1,4)"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_customer_po">
|
||||
<xsl:variable name="l_marnr"><xsl:value-of select="substring-before(../E1EDK02[QUALF='001']/BELNR,' / ')"/></xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$l_marnr != ''"><xsl:value-of select="$l_marnr"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="../E1EDK02[QUALF='001']/BELNR"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_filename_attachment">
|
||||
<xsl:choose>
|
||||
<xsl:when test="../Attachments/Attachment/@fileName != ''"><xsl:value-of select="../Attachments/Attachment/@fileName"/></xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="VATInformation">
|
||||
<!-- Deze template levert het gedeelte [btwperc;btwbedrag;btw_verlegd] op -->
|
||||
<!-- Let even op: geen voorgaande ; en zeker ook geen ; op einde, dat gebeurt in de aanroepende regel (hierboven dus) -->
|
||||
<!-- Let op: btw bedrag wordt niet uit SidB uit de node InvoiceLine aangeboden, dus deze is hier altijd leeg. -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="E1EDP04/MSATZ != ''"><xsl:value-of select="E1EDP04/MSATZ"/>;</xsl:when>
|
||||
<xsl:otherwise>21;</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<!-- BTW verlegd = Ja -->
|
||||
<xsl:when test="E1EDK05[KSCHL='ZWKA']/BETRG != '' or
|
||||
E1EDK05[KSCHL='ZWKA']/BETRG != '0' or
|
||||
E1EDK05[KSCHL='ZWKA']/BETRG != '0.00'">;Ja</xsl:when>
|
||||
<!-- BTW verlegd = Nee, veld btw_verlegd in CSV gewoon leeg laten-->
|
||||
<xsl:otherwise>;</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="construct_factuurregel_omschr">
|
||||
<xsl:call-template name="vrije_tekst">
|
||||
<xsl:with-param name="p_string">
|
||||
<xsl:if test="MENGE != ''"><xsl:value-of select="MENGE"/><xsl:text> </xsl:text></xsl:if>
|
||||
<xsl:if test="MENEE != ''"><xsl:value-of select="MENEE"/><xsl:text> </xsl:text></xsl:if>
|
||||
<xsl:if test="E1EDP19[QUALF='002']/IDTNR != ''"><xsl:value-of select="E1EDP19[QUALF='002']/IDTNR"/><xsl:text> - </xsl:text></xsl:if>
|
||||
<xsl:if test="E1EDP19[QUALF='002']/KTEXT != ''"><xsl:value-of select="E1EDP19[QUALF='002']/KTEXT"/></xsl:if>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_gbedrag">
|
||||
<xsl:value-of select="../E1EDK05[KSCHL='ZWKA']/BETRG"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_kvk">
|
||||
<xsl:variable name="l_kvk"><xsl:value-of select="substring-before(../E1EDKA1[PARVW='BK']/TELBX,' / ')"/></xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$l_kvk != ''"><xsl:value-of select="$l_kvk"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="../E1EDKA1[PARVW='BK']/TELBX"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_btwnr">
|
||||
<xsl:value-of select="../E1EDK01/EIGENUINR"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="get_opleverdatum">
|
||||
<xsl:value-of select="../E1EDK03[IDDAT='001']/DATUM"/>
|
||||
</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, '"')"><xsl:value-of select="substring-before($string, '"')"/>""<xsl:call-template name="escape_quote">
|
||||
<xsl:with-param name="string" select="substring-after($string, '"')"/></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, '
')"><xsl:value-of select="substring-before($string, '
')"/>@@<xsl:call-template name="escape_linebreaks">
|
||||
<xsl:with-param name="string" select="substring-after($string, '
')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$string"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
Reference in New Issue
Block a user