diff --git a/reports/sepa/sepa-2.0.10.imixs-report b/reports/sepa/sepa-2.0.10.imixs-report new file mode 100644 index 0000000..011992f --- /dev/null +++ b/reports/sepa/sepa-2.0.10.imixs-report @@ -0,0 +1,171 @@ +2020-11-23T18:53:40.409+01:000true2025-09-01T08:41:56.073+02:001c1eb4285-abe2-4ee4-983c-49fede520956-1756708916076c1eb4285-abe2-4ee4-983c-49fede52095612$uniqueid$modelversion$workflowgroup$taskid$workflowsummaryinvoice.numberinvoice.dateinvoice.totalinvoice.currencycdtr.namecdtr.ibancdtr.bicdbtr.namedbtr.ibandbtr.bicpayment.typenumsequencenumberUTF-8SEPA export executed by the SepaScheduler. See the XSL definition for details. sepatype:"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.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 --> + <!-- Aenderung 1.Sep 2025 - Name wird aus BPartner Interface genommen + partner.name if available --> + <Nm> + <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> + <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='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 + select="substring(item[@name='$workflowsummary']/value, 1, 140)" /> + </xsl:otherwise> + </xsl:choose> + </Ustrd> + </RmtInf> + </CdtTrfTxInf> + </xsl:template> +</xsl:stylesheet>/office-alexander-logistics/reports/sepa/sepa-2.0.5.xsl \ No newline at end of file diff --git a/reports/sepa/sepa-prod.xsl b/reports/sepa/sepa-2.0.10.xsl similarity index 73% rename from reports/sepa/sepa-prod.xsl rename to reports/sepa/sepa-2.0.10.xsl index 85a664f..5e7a9ee 100644 --- a/reports/sepa/sepa-prod.xsl +++ b/reports/sepa/sepa-2.0.10.xsl @@ -4,19 +4,22 @@ - + - + + + + select="count(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='$uniqueid']/value)" /> + - + select="xs:decimal(sum(/data/document[starts-with(normalize-space(item[@name = '$modelversion']/value),'rechnungseingang')]/item[@name='invoice.total']/value))" /> + + + @@ -31,7 +34,8 @@ - + + @@ -50,7 +54,8 @@ - + + @@ -82,7 +87,8 @@ - SLEV + SLEV + @@ -91,13 +97,13 @@ + match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']"> + + @@ -107,8 +113,8 @@ + select="item[@name='invoice.currency']/value" /> + @@ -119,9 +125,20 @@ - + + + - + + + + + + + + @@ -131,15 +148,19 @@ - + + - / + + / - + +