verbesserter SEPA Report
This commit is contained in:
parent
e0e5bbd8f3
commit
0ef5fff446
2 changed files with 216 additions and 24 deletions
171
reports/sepa/sepa-2.0.10.imixs-report
Normal file
171
reports/sepa/sepa-2.0.10.imixs-report
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -4,19 +4,22 @@
|
|||
<xsl:strip-space elements="*" />
|
||||
<xsl:output method="xml" indent="yes" encoding="UTF-8" standalone="yes" />
|
||||
<xsl:template match="/">
|
||||
<xsl:variable name="now" select="current-dateTime()" /> <Document
|
||||
<xsl:variable name="now" select="current-dateTime()" />
|
||||
<Document
|
||||
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03 pain.001.003.03.xsd">
|
||||
<CstmrCdtTrfInitn> <!-- generate header info --> <!-- compute count of invoices -->
|
||||
<CstmrCdtTrfInitn>
|
||||
<!-- generate header info -->
|
||||
<!-- compute count of invoices -->
|
||||
<xsl:variable name="count"
|
||||
select="count(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='$uniqueid']/value)" /> <!--
|
||||
compute total amount -->
|
||||
select="count(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='$uniqueid']/value)" />
|
||||
<!-- compute total amount -->
|
||||
<xsl:variable name="totalsum"
|
||||
select="xs:decimal(sum(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='invoice.total']/value))" /> <!--
|
||||
round to 2 digits -->
|
||||
<xsl:variable name="total" select="xs:decimal(round-half-to-even($totalsum, 2))" /> <!--
|
||||
shortcut for the sepa export document -->
|
||||
select="xs:decimal(sum(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='invoice.total']/value))" />
|
||||
<!-- round to 2 digits -->
|
||||
<xsl:variable name="total" select="xs:decimal(round-half-to-even($totalsum, 2))" />
|
||||
<!-- shortcut for the sepa export document -->
|
||||
<xsl:variable name="exportWorkitem"
|
||||
select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']" />
|
||||
<GrpHdr>
|
||||
|
|
@ -31,7 +34,8 @@
|
|||
<NbOfTxs>
|
||||
<xsl:value-of select="$count" />
|
||||
</NbOfTxs>
|
||||
<CtrlSum> <!-- round to 2 digits -->
|
||||
<CtrlSum>
|
||||
<!-- round to 2 digits -->
|
||||
<xsl:value-of select="$total" />
|
||||
</CtrlSum>
|
||||
<InitgPty>
|
||||
|
|
@ -50,7 +54,8 @@
|
|||
<NbOfTxs>
|
||||
<xsl:value-of select="$count" />
|
||||
</NbOfTxs>
|
||||
<CtrlSum> <!-- round to 2 digits -->
|
||||
<CtrlSum>
|
||||
<!-- round to 2 digits -->
|
||||
<xsl:value-of select="$total" />
|
||||
</CtrlSum>
|
||||
<PmtTpInf>
|
||||
|
|
@ -82,7 +87,8 @@
|
|||
</BIC>
|
||||
</FinInstnId>
|
||||
</DbtrAgt>
|
||||
<ChrgBr>SLEV</ChrgBr> <!-- generate CdtTrfTxInf for each invoice -->
|
||||
<ChrgBr>SLEV</ChrgBr>
|
||||
<!-- generate CdtTrfTxInf for each invoice -->
|
||||
<xsl:apply-templates
|
||||
select="/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]" />
|
||||
</PmtInf>
|
||||
|
|
@ -91,13 +97,13 @@
|
|||
</xsl:template> <!--
|
||||
This template builds sepa header info -->
|
||||
<xsl:template
|
||||
match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']"> <!--
|
||||
not in use -->
|
||||
match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']">
|
||||
<!-- not in use -->
|
||||
</xsl:template> <!--
|
||||
This template builds sepa payment info for each invoice -->
|
||||
<xsl:template
|
||||
match="/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]"> <!--
|
||||
round to 2 digits - geht nur mit sum funktion --> <xsl:variable
|
||||
match="/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]">
|
||||
<!-- round to 2 digits - geht nur mit sum funktion --> <xsl:variable
|
||||
name="wert1" select="xs:decimal(sum(item[@name='invoice.total']/value))" /> <xsl:variable
|
||||
name="wert2" select="xs:decimal(round-half-to-even($wert1,2))" /> <CdtTrfTxInf
|
||||
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03">
|
||||
|
|
@ -107,8 +113,8 @@
|
|||
<Amt>
|
||||
<InstdAmt>
|
||||
<xsl:attribute name="Ccy"><xsl:value-of
|
||||
select="item[@name='invoice.currency']/value" /></xsl:attribute> <!--
|
||||
round to 2 digits -->
|
||||
select="item[@name='invoice.currency']/value" /></xsl:attribute>
|
||||
<!-- round to 2 digits -->
|
||||
<xsl:value-of select="$wert2" />
|
||||
</InstdAmt>
|
||||
</Amt>
|
||||
|
|
@ -119,9 +125,20 @@
|
|||
</BIC>
|
||||
</FinInstnId>
|
||||
</CdtrAgt>
|
||||
<Cdtr> <!-- MAX70 -->
|
||||
<Cdtr>
|
||||
<!-- MAX70 -->
|
||||
<!-- Aenderung 1.Sep 2025 - Name wird aus BPartner Interface genommen
|
||||
partner.name if available -->
|
||||
<Nm>
|
||||
<xsl:value-of select="substring(item[@name='cdtr.name']/value, 1, 70)" />
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length(item[@name='partner.name']/value) > 0">
|
||||
<xsl:value-of
|
||||
select="substring(item[@name='partner.name']/value, 1, 70)" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="substring(item[@name='cdtr.name']/value, 1, 70)" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</Nm>
|
||||
</Cdtr>
|
||||
<CdtrAcct>
|
||||
|
|
@ -131,15 +148,19 @@
|
|||
</IBAN>
|
||||
</Id>
|
||||
</CdtrAcct>
|
||||
<RmtInf> <!-- Max140Text -->
|
||||
<RmtInf>
|
||||
<!-- Max140Text -->
|
||||
<Ustrd>
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length(item[@name='numsequencenumber']/value) > 0"> <!--
|
||||
neues format buchungsnummer / rechn.nr --> <xsl:value-of
|
||||
select="item[@name='numsequencenumber']/value" /><xsl:text> / </xsl:text><xsl:value-of
|
||||
<xsl:when test="string-length(item[@name='sequencenumber']/value) > 0">
|
||||
<!-- neues format buchungsnummer / rechn.nr -->
|
||||
<xsl:value-of
|
||||
select="item[@name='sequencenumber']/value" /><xsl:text> / </xsl:text><xsl:value-of
|
||||
select="item[@name='invoice.number']/value" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise> <!-- fallback --> <xsl:value-of
|
||||
<xsl:otherwise>
|
||||
<!-- fallback -->
|
||||
<xsl:value-of
|
||||
select="substring(item[@name='$workflowsummary']/value, 1, 140)" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
Loading…
Reference in a new issue