sepa konfigurationen aufgeräumt

This commit is contained in:
Ralph Soika 2025-08-01 15:26:25 +02:00
parent 9cefd51ccb
commit a152fdd461
35 changed files with 1278 additions and 542 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,374 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<document xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<item name="$created">
<value xsi:type="xs:dateTime">2024-01-11T14:31:52.923+01:00</value>
</item>
<item name="$file">
<value xsi:nil="true" />
</item>
<item name="$isauthor">
<value xsi:type="xs:boolean">true</value>
</item>
<item name="$modified">
<value xsi:type="xs:dateTime">2024-02-21T12:40:56.424+01:00</value>
</item>
<item name="$snapshot.history">
<value xsi:type="xs:int">1</value>
</item>
<item name="$snapshot.overwritefilecontent">
<value xsi:type="xs:string"></value>
</item>
<item name="$snapshotid">
<value xsi:type="xs:string">a36c52d3-25bc-4c43-8c41-e90e2fd47432-1708515656428</value>
</item>
<item name="$uniqueid">
<value xsi:type="xs:string">a36c52d3-25bc-4c43-8c41-e90e2fd47432</value>
</item>
<item name="$version">
<value xsi:type="xs:int">3</value>
</item>
<item name="attributes">
<value xsi:type="xmlItem">
<value xsi:type="xs:string">$uniqueid</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">$modelversion</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">$workflowgroup</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">$taskid</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">$workflowsummary</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">invoice.number</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">invoice.date</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">invoice.total</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">invoice.currency</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">cdtr.name</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">cdtr.iban</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">cdtr.bic</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">dbtr.name</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">dbtr.iban</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">dbtr.bic</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">payment.type</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
<value xsi:type="xmlItem">
<value xsi:type="xs:string">numsequencenumber</value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
<value xsi:type="xs:string"></value>
</value>
</item>
<item name="contenttype">
<value xsi:type="xs:string"></value>
</item>
<item name="encoding">
<value xsi:type="xs:string">UTF-8</value>
</item>
<item name="txtdescription">
<value xsi:type="xs:string">SEPA export executed by the SepaScheduler. See the XSL
definition for details. </value>
</item>
<item name="txtname">
<value xsi:type="xs:string">sepa</value>
</item>
<item name="txtquery">
<value xsi:type="xs:string">type:"workitem" AND $taskid:5500 </value>
</item>
<item name="type">
<value xsi:type="xs:string">ReportEntity</value>
</item>
<item name="xsl">
<value xsi:type="xs:string">&lt;?xml version="1.0" encoding="UTF-8"
standalone="yes"?&gt;&#13;
&lt;xsl:stylesheet&#13;
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&#13;
xmlns:xs="http://www.w3.org/2001/XMLSchema"&#13;
version="2.0"&gt;&#13;
&lt;xsl:strip-space elements="*" /&gt;&#13;
&lt;xsl:output method="xml" indent="yes" encoding="UTF-8" standalone="yes" /&gt;&#13;
&#13;
&lt;xsl:template match="/"&gt;&#13;
&lt;xsl:variable name="now" select="current-dateTime()" /&gt;&#13;
&#13;
&lt;Document&#13;
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.07"&#13;
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#13;
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.07
pain.001.001.07.xsd"&gt;&#13;
&lt;CstmrCdtTrfInitn&gt;&#13;
&#13;
&lt;!-- generate header info --&gt;&#13;
&lt;!-- compute count of invoices --&gt;&#13;
&lt;xsl:variable name="count"&#13;
select="count(/data/document[starts-with(normalize-space(item[@name =
'$modelversion']/value),'rechnungseingang')]/item[@name='$uniqueid']/value)" /&gt;&#13;
&lt;!-- compute total amount --&gt;&#13;
&lt;xsl:variable name="totalsum"&#13;
select="xs:decimal(sum(/data/document[starts-with(normalize-space(item[@name =
'$modelversion']/value),'rechnungseingang')]/item[@name='invoice.total']/value))"
/&gt;&#13;
&lt;!-- round to 2 digits --&gt;&#13;
&lt;xsl:variable name="total"&#13;
select="xs:decimal(round-half-to-even($totalsum, 2))" /&gt;&#13;
&#13;
&lt;!-- shortcut for the sepa export document --&gt;&#13;
&lt;xsl:variable name="exportWorkitem"&#13;
select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) =
'SEPA-Export']" /&gt;&#13;
&#13;
&lt;GrpHdr&gt;&#13;
&lt;MsgId&gt;&#13;
&lt;xsl:value-of&#13;
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" /&gt;&#13;
&lt;/MsgId&gt;&#13;
&lt;CreDtTm&gt;&#13;
&lt;xsl:value-of&#13;
select="format-dateTime($now, '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')" /&gt;&#13;
&lt;/CreDtTm&gt;&#13;
&lt;NbOfTxs&gt;&#13;
&lt;xsl:value-of select="$count" /&gt;&#13;
&lt;/NbOfTxs&gt;&#13;
&lt;CtrlSum&gt;&#13;
&lt;!-- round to 2 digits --&gt;&#13;
&lt;xsl:value-of select="$total" /&gt;&#13;
&lt;/CtrlSum&gt;&#13;
&lt;InitgPty&gt;&#13;
&lt;Nm&gt;&#13;
&lt;xsl:value-of&#13;
select="$exportWorkitem/item[@name='dbtr.name']/value" /&gt;&#13;
&lt;/Nm&gt;&#13;
&lt;/InitgPty&gt;&#13;
&lt;/GrpHdr&gt;&#13;
&#13;
&lt;PmtInf&gt;&#13;
&lt;PmtInfId&gt;&#13;
&lt;xsl:value-of&#13;
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" /&gt;&#13;
&lt;xsl:text&gt;-1&lt;/xsl:text&gt;&#13;
&lt;/PmtInfId&gt;&#13;
&lt;PmtMtd&gt;TRF&lt;/PmtMtd&gt;&#13;
&lt;NbOfTxs&gt;&#13;
&lt;xsl:value-of select="$count" /&gt;&#13;
&lt;/NbOfTxs&gt;&#13;
&lt;CtrlSum&gt;&#13;
&lt;!-- round to 2 digits --&gt;&#13;
&lt;xsl:value-of select="$total" /&gt;&#13;
&lt;/CtrlSum&gt;&#13;
&lt;PmtTpInf&gt;&#13;
&lt;SvcLvl&gt;&#13;
&lt;Cd&gt;SEPA&lt;/Cd&gt;&#13;
&lt;/SvcLvl&gt;&#13;
&lt;/PmtTpInf&gt;&#13;
&lt;ReqdExctnDt&gt;&#13;
&lt;xsl:value-of&#13;
select="format-dateTime($now, '[Y0001]-[M01]-[D01]')" /&gt;&#13;
&lt;/ReqdExctnDt&gt;&#13;
&lt;Dbtr&gt;&#13;
&lt;Nm&gt;&#13;
&lt;xsl:value-of&#13;
select="$exportWorkitem/item[@name='dbtr.name']/value" /&gt;&#13;
&lt;/Nm&gt;&#13;
&lt;/Dbtr&gt;&#13;
&lt;DbtrAcct&gt;&#13;
&lt;Id&gt;&#13;
&lt;IBAN&gt;&#13;
&lt;xsl:value-of&#13;
select="replace($exportWorkitem/item[@name='dbtr.iban']/value, ' ', '')" /&gt;&#13;
&lt;/IBAN&gt;&#13;
&lt;/Id&gt;&#13;
&lt;/DbtrAcct&gt;&#13;
&lt;DbtrAgt&gt;&#13;
&lt;FinInstnId&gt;&#13;
&lt;BICFI&gt;&#13;
&lt;xsl:value-of&#13;
select="replace($exportWorkitem/item[@name='dbtr.bic']/value, ' ', '')" /&gt;&#13;
&lt;/BICFI&gt;&#13;
&lt;/FinInstnId&gt;&#13;
&lt;/DbtrAgt&gt;&#13;
&lt;!-- &#13;
SHAR Charges are shared between debtor and creditor&#13;
SLEV Charges are handled according to service level&#13;
--&gt;&#13;
&lt;ChrgBr&gt;SHAR&lt;/ChrgBr&gt;&#13;
&lt;!-- generate CdtTrfTxInf for each invoice --&gt;&#13;
&lt;xsl:apply-templates&#13;
select="/data/document[starts-with(normalize-space(item[@name =
'$modelversion']/value),'rechnungseingang')]" /&gt;&#13;
&lt;/PmtInf&gt;&#13;
&lt;/CstmrCdtTrfInitn&gt;&#13;
&lt;/Document&gt;&#13;
&lt;/xsl:template&gt;&#13;
&#13;
&#13;
&lt;!-- This template builds sepa header info --&gt;&#13;
&lt;xsl:template&#13;
match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) =
'SEPA-Export']"&gt;&#13;
&lt;!-- not in use --&gt;&#13;
&lt;/xsl:template&gt;&#13;
&#13;
&#13;
&lt;!-- This template builds sepa payment info for each invoice --&gt;&#13;
&lt;xsl:template&#13;
match="/data/document[starts-with(normalize-space(item[@name =
'$modelversion']/value),'rechnungseingang')]"&gt;&#13;
&#13;
&lt;!-- round to 2 digits - geht nur mit sum funktion --&gt;&#13;
&lt;xsl:variable&#13;
name="wert1"&#13;
select="xs:decimal(sum(item[@name='invoice.total']/value))" /&gt;&#13;
&lt;xsl:variable name="wert2"&#13;
select="xs:decimal(round-half-to-even($wert1,2))" /&gt;&#13;
&lt;CdtTrfTxInf&#13;
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03"&gt;&#13;
&lt;PmtId&gt;&#13;
&lt;EndToEndId&gt;NOTPROVIDED&lt;/EndToEndId&gt;&#13;
&lt;/PmtId&gt;&#13;
&lt;Amt&gt;&#13;
&lt;InstdAmt&gt;&#13;
&lt;xsl:attribute name="Ccy"&gt;&lt;xsl:value-of&#13;
select="item[@name='invoice.currency']/value" /&gt;&lt;/xsl:attribute&gt;&#13;
&lt;!-- round to 2 digits --&gt;&#13;
&lt;xsl:value-of select="$wert2" /&gt;&#13;
&lt;/InstdAmt&gt;&#13;
&lt;/Amt&gt;&#13;
&lt;CdtrAgt&gt;&#13;
&lt;FinInstnId&gt;&#13;
&lt;BICFI&gt;&#13;
&lt;xsl:value-of select="replace(item[@name='cdtr.bic']/value, ' ', '')" /&gt;&#13;
&lt;/BICFI&gt;&#13;
&lt;/FinInstnId&gt;&#13;
&lt;/CdtrAgt&gt;&#13;
&lt;Cdtr&gt;&#13;
&lt;!-- MAX70 --&gt;&#13;
&lt;Nm&gt;&#13;
&lt;xsl:value-of select="substring(item[@name='cdtr.name']/value, 1, 70)" /&gt;&#13;
&lt;/Nm&gt;&#13;
&lt;/Cdtr&gt;&#13;
&lt;CdtrAcct&gt;&#13;
&lt;Id&gt;&#13;
&lt;IBAN&gt;&#13;
&lt;xsl:value-of select="replace(item[@name='cdtr.iban']/value, ' ', '')" /&gt;&#13;
&lt;/IBAN&gt;&#13;
&lt;/Id&gt;&#13;
&lt;/CdtrAcct&gt;&#13;
&lt;RmtInf&gt;&#13;
&lt;!-- Max140Text --&gt;&#13;
&lt;Ustrd&gt;&#13;
&lt;xsl:choose&gt;&#13;
&lt;xsl:when test="string-length(item[@name='numsequencenumber']/value) &gt; 0"&gt;&#13;
&lt;!-- neues format buchungsnummer / rechn.nr --&gt;&#13;
&lt;xsl:value-of&#13;
select="item[@name='numsequencenumber']/value" /&gt;&lt;xsl:text&gt; /
&lt;/xsl:text&gt;&lt;xsl:value-of&#13;
select="item[@name='invoice.number']/value" /&gt;&#13;
&lt;/xsl:when&gt;&#13;
&lt;xsl:otherwise&gt;&#13;
&lt;!-- fallback --&gt;&#13;
&lt;xsl:value-of&#13;
select="substring(item[@name='$workflowsummary']/value, 1, 140)" /&gt;&#13;
&lt;/xsl:otherwise&gt;&#13;
&lt;/xsl:choose&gt;&#13;
&lt;/Ustrd&gt;&#13;
&lt;/RmtInf&gt;&#13;
&lt;/CdtTrfTxInf&gt;&#13;
&#13;
&lt;/xsl:template&gt;&#13;
&#13;
&lt;/xsl:stylesheet&gt;</value>
</item>
<item name="xslresource">
<value xsi:type="xs:string">/office-alexander-logistics/reports/sepa/sepa-2.0.5.xsl</value>
</item>
</document>

File diff suppressed because one or more lines are too long

150
reports/sepa/sepa-2.0.9.xsl Normal file
View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
<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
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 -->
<xsl:variable name="count"
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 -->
<xsl:variable name="exportWorkitem"
select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']" />
<GrpHdr>
<MsgId>
<xsl:value-of
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" />
</MsgId>
<CreDtTm>
<xsl:value-of
select="format-dateTime($now, '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')" />
</CreDtTm>
<NbOfTxs>
<xsl:value-of select="$count" />
</NbOfTxs>
<CtrlSum> <!-- round to 2 digits -->
<xsl:value-of select="$total" />
</CtrlSum>
<InitgPty>
<Nm>
<xsl:value-of select="$exportWorkitem/item[@name='dbtr.name']/value" />
</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>
<xsl:value-of
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" />
<xsl:text>-1</xsl:text>
</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>
<xsl:value-of select="$count" />
</NbOfTxs>
<CtrlSum> <!-- round to 2 digits -->
<xsl:value-of select="$total" />
</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>
<xsl:value-of select="format-dateTime($now, '[Y0001]-[M01]-[D01]')" />
</ReqdExctnDt>
<Dbtr>
<Nm>
<xsl:value-of select="$exportWorkitem/item[@name='dbtr.name']/value" />
</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>
<xsl:value-of
select="replace($exportWorkitem/item[@name='dbtr.iban']/value, ' ', '')" />
</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of
select="replace($exportWorkitem/item[@name='dbtr.bic']/value, ' ', '')" />
</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr> <!-- generate CdtTrfTxInf for each invoice -->
<xsl:apply-templates
select="/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]" />
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
</xsl:template> <!--
This template builds sepa header info -->
<xsl:template
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
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">
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt>
<xsl:attribute name="Ccy"><xsl:value-of
select="item[@name='invoice.currency']/value" /></xsl:attribute> <!--
round to 2 digits -->
<xsl:value-of select="$wert2" />
</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of select="replace(item[@name='cdtr.bic']/value, ' ', '')" />
</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr> <!-- MAX70 -->
<Nm>
<xsl:value-of select="substring(item[@name='cdtr.name']/value, 1, 70)" />
</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>
<xsl:value-of select="replace(item[@name='cdtr.iban']/value, ' ', '')" />
</IBAN>
</Id>
</CdtrAcct>
<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
select="item[@name='invoice.number']/value" />
</xsl:when>
<xsl:otherwise> <!-- fallback --> <xsl:value-of
select="substring(item[@name='$workflowsummary']/value, 1, 140)" />
</xsl:otherwise>
</xsl:choose>
</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</xsl:template>
</xsl:stylesheet>

150
reports/sepa/sepa-prod.xsl Normal file
View file

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
<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
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 -->
<xsl:variable name="count"
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 -->
<xsl:variable name="exportWorkitem"
select="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']" />
<GrpHdr>
<MsgId>
<xsl:value-of
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" />
</MsgId>
<CreDtTm>
<xsl:value-of
select="format-dateTime($now, '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')" />
</CreDtTm>
<NbOfTxs>
<xsl:value-of select="$count" />
</NbOfTxs>
<CtrlSum> <!-- round to 2 digits -->
<xsl:value-of select="$total" />
</CtrlSum>
<InitgPty>
<Nm>
<xsl:value-of select="$exportWorkitem/item[@name='dbtr.name']/value" />
</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>
<xsl:value-of
select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" />
<xsl:text>-1</xsl:text>
</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>
<xsl:value-of select="$count" />
</NbOfTxs>
<CtrlSum> <!-- round to 2 digits -->
<xsl:value-of select="$total" />
</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>
<xsl:value-of select="format-dateTime($now, '[Y0001]-[M01]-[D01]')" />
</ReqdExctnDt>
<Dbtr>
<Nm>
<xsl:value-of select="$exportWorkitem/item[@name='dbtr.name']/value" />
</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>
<xsl:value-of
select="replace($exportWorkitem/item[@name='dbtr.iban']/value, ' ', '')" />
</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of
select="replace($exportWorkitem/item[@name='dbtr.bic']/value, ' ', '')" />
</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr> <!-- generate CdtTrfTxInf for each invoice -->
<xsl:apply-templates
select="/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]" />
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
</xsl:template> <!--
This template builds sepa header info -->
<xsl:template
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
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">
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt>
<xsl:attribute name="Ccy"><xsl:value-of
select="item[@name='invoice.currency']/value" /></xsl:attribute> <!--
round to 2 digits -->
<xsl:value-of select="$wert2" />
</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of select="replace(item[@name='cdtr.bic']/value, ' ', '')" />
</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr> <!-- MAX70 -->
<Nm>
<xsl:value-of select="substring(item[@name='cdtr.name']/value, 1, 70)" />
</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>
<xsl:value-of select="replace(item[@name='cdtr.iban']/value, ' ', '')" />
</IBAN>
</Id>
</CdtrAcct>
<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
select="item[@name='invoice.number']/value" />
</xsl:when>
<xsl:otherwise> <!-- fallback --> <xsl:value-of
select="substring(item[@name='$workflowsummary']/value, 1, 140)" />
</xsl:otherwise>
</xsl:choose>
</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2025-07-30T22:01:52</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
<Nm>Targo Bank</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>bf073e72asdf512c4d60af7740872036-1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2025-07-30</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SA11555500000000055273</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>AAXADEMM</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SHAR</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">290.40</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 mody trans xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>4711/2020XX07000175</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">292.44</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 MIK-TRANS JAN SLABY xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>4711</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">73.06</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 2 Eyy XXXXXXXXX</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000055273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>7000005/20200700017-xxxAA-5</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>

View file

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2025-07-30T10:13:45</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
<Nm>Targo Bank</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>bf073e72asdf512c4d60af7740872036-1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2025-07-30</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SA11555500000000055273</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>AAXADEMM</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SHAR</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">290.40</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 mody trans xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
<PstlAdr>
<Ctry>DE</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>4711/2020XX07000175</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">292.44</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 MIK-TRANS JAN SLABY xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
<PstlAdr>
<Ctry>IT</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>4711</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">73.06</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 2 Eyy XXXXXXXXX</Nm>
<PstlAdr>
<Ctry>PL</Ctry>
</PstlAdr>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000055273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>7000005/20200700017-xxxAA-5</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
<Purp>
<Prtry>FRGN</Prtry>
</Purp>
</CstmrCdtTrfInitn>
</Document>

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03 pain.001.003.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2025-07-30T22:01:52</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
<Nm>Targo Bank</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>bf073e72asdf512c4d60af7740872036-1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2025-07-30</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SA11555500000000055273</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>AAXADEMM</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">290.40</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 młody trans
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice Example-1 Test_123</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">292.44</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 MIK-TRANS" JAN SLABY
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice Example-1</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">73.06</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 2 Eyy XXXXXXXXX</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000055273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice Example-2</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>

View file

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.03.xsd">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2024-10-16T08:59:57</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
<Nm>Targo Bank</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>bf073e72asdf512c4d60af7740872036-1</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2024-10-16</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>SA11555500000000055273</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>AAXADEMM</BIC>
</FinInstnId>
</DbtrAgt>
<ChrgBr>SHAR</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">290.40</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 mody trans xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>2020XX07000175</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">292.44</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 1 MIK-TRANS JAN SLABY xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000028273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>4711</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="EUR">73.06</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>XXXADEMM</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Supplier 2 Eyy XXXXXXXXX</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE74555500000000055273</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>202007000175</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>