- 2024-01-11T14:31:52.923+01:00
- true
- 2024-08-26T12:38:07.329+02:00
- 1
- a36c52d3-25bc-4c43-8c41-e90e2fd47432-1724668687336
- a36c52d3-25bc-4c43-8c41-e90e2fd47432
- 8
- $uniqueid$modelversion$workflowgroup$taskid$workflowsummaryinvoice.numberinvoice.dateinvoice.totalinvoice.currencycdtr.namecdtr.ibancdtr.bicdbtr.namedbtr.ibandbtr.bicpayment.typenumsequencenumber
- UTF-8
- SEPA export executed by the SepaScheduler. See the XSL definition for details.
- sepa
- type:"workitem" AND $taskid:5500
- ReportEntity
- <?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.001.03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 pain.001.001.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="format-number(xs:decimal(round-half-to-even($totalsum, 2)), '0.00')" />
<!-- 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>
<!--
SHAR – Charges are shared between debtor and creditor
SLEV – Charges are handled according to service level
-->
<ChrgBr>SHAR</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="wert2"
select="format-number(xs:decimal(round-half-to-even(item[@name='invoice.total']/value, 2)), '0.00')" />
<CdtTrfTxInf
xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.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)" /> -->
<!-- entfernen der non ascii zeichen
<xsl:value-of
select="substring(replace(item[@name='cdtr.name']/value, '\P{IsBasicLatin}', ''), 1, 70)" />
-->
<xsl:value-of
select="substring(translate(
normalize-space(item[@name='cdtr.name']/value),
translate(item[@name='cdtr.name']/value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZĄĆĘŁÓŚŹŻŃabcdefghijklmnopqrstuvwxyząćęłóśźżń0123456789 /-?:().,''+''{}.', ''),''), 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='invoice.number']/value) > 0">
<xsl:value-of
select="substring(translate(
normalize-space(item[@name='invoice.number']/value),
translate(item[@name='invoice.number']/value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZĄĆĘŁÓŚŹŻŃabcdefghijklmnopqrstuvwxyząćęłóśźżń0123456789 /-?:().,''+''{}.', ''),''), 1, 140)" />
</xsl:when>
<xsl:otherwise>
<!-- fallback -->
<xsl:value-of
select="substring(item[@name='sequencenumber']/value, 1, 140)" />
</xsl:otherwise>
</xsl:choose>
</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</xsl:template>
</xsl:stylesheet>
- /office-alexander-logistics/reports/sepa/sepa-2.0.5.xsl