MARX#43987: Strukton Premium - SAP facturen

svn path=/Website/branches/v2017.2/; revision=35584
This commit is contained in:
Marcel Bourseau
2017-10-06 08:25:49 +00:00
parent 15567eed39
commit bc0a46f7a5

View 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"/>;&#10;</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, '&quot;')"><xsl:value-of select="substring-before($string, '&quot;')"/>&quot;&quot;<xsl:call-template name="escape_quote">
<xsl:with-param name="string" select="substring-after($string, '&quot;')"/></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, '&#xA;')"><xsl:value-of select="substring-before($string, '&#xA;')"/>@@<xsl:call-template name="escape_linebreaks">
<xsl:with-param name="string" select="substring-after($string, '&#xA;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$string"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>