diff --git a/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/sepa/TestSEPATransform.java b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/sepa/TestSEPATransform.java index 6590495..b86c34d 100644 --- a/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/sepa/TestSEPATransform.java +++ b/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/sepa/TestSEPATransform.java @@ -54,7 +54,7 @@ public class TestSEPATransform { @Test public void testBankPolski() throws IOException { String MODEL_PATH_XML = "sepa/beispiel-daten.xml"; - String MODEL_PATH_XSL = "sepa/sepa-2.0.6-pl.xsl"; + String MODEL_PATH_XSL = "sepa/sepa-2.0.7-pl.xsl"; try { XSLTester.transform(MODEL_PATH_XML, MODEL_PATH_XSL, "../reports/sepa/result_sepa02.xml"); } catch (Exception e) { diff --git a/reports/sepa/beispiel-daten.xml b/reports/sepa/beispiel-daten.xml index 33f056c..6f11146 100644 --- a/reports/sepa/beispiel-daten.xml +++ b/reports/sepa/beispiel-daten.xml @@ -67,7 +67,7 @@ DE74 5555 0000 0000 0282 73 - Supplier 1 + Supplier 1 młody trans xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Eyy XXXXXXXXX diff --git a/reports/sepa/result_sepa01.xml b/reports/sepa/result_sepa01.xml index f76cc56..77383c0 100644 --- a/reports/sepa/result_sepa01.xml +++ b/reports/sepa/result_sepa01.xml @@ -6,7 +6,7 @@ bf073e72asdf512c4d60af7740872036 - 2024-06-06T22:12:54 + 2024-06-18T16:38:12 3 655.90 @@ -23,7 +23,7 @@ SEPA - 2024-06-06 + 2024-06-18 Targo Bank diff --git a/reports/sepa/result_sepa02.xml b/reports/sepa/result_sepa02.xml index c927ec7..950e5ec 100644 --- a/reports/sepa/result_sepa02.xml +++ b/reports/sepa/result_sepa02.xml @@ -6,7 +6,7 @@ bf073e72asdf512c4d60af7740872036 - 2024-06-06T22:12:54 + 2024-06-19T11:35:23 3 655.90 @@ -23,7 +23,7 @@ SEPA - 2024-06-06 + 2024-06-19 Targo Bank @@ -51,8 +51,8 @@ - Supplier 1 - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + Supplier 1 mody trans + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx diff --git a/reports/sepa/sepa-2.0.7-pl.xsl b/reports/sepa/sepa-2.0.7-pl.xsl new file mode 100644 index 0000000..756bcd2 --- /dev/null +++ b/reports/sepa/sepa-2.0.7-pl.xsl @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -1 + + TRF + + + + + + + + + + SEPA + + + + + + + + + + + + + + + + + + + + + + + + + + SHAR + + + + + + + + + + + + + + + + + + + + + + + NOTPROVIDED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + \ No newline at end of file diff --git a/reports/sepa/sepa-2.0.7.imixs-report b/reports/sepa/sepa-2.0.7.imixs-report new file mode 100644 index 0000000..55b7dc0 --- /dev/null +++ b/reports/sepa/sepa-2.0.7.imixs-report @@ -0,0 +1,191 @@ +2024-01-11T14:31:52.923+01:00true2024-06-19T11:38:50.369+02:001a36c52d3-25bc-4c43-8c41-e90e2fd47432-1718789930378a36c52d3-25bc-4c43-8c41-e90e2fd474326$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.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)" /> + + </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>/office-alexander-logistics/reports/sepa/sepa-2.0.5.xsl \ No newline at end of file diff --git a/workflow/sepa-export-manual-pl-3.0.2.bpmn b/workflow/sepa-export-manual-pl-3.0.2.bpmn new file mode 100644 index 0000000..1ec323e --- /dev/null +++ b/workflow/sepa-export-manual-pl-3.0.2.bpmn @@ -0,0 +1,1122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + application.urlindex.jsf?workitem=$uniqueid + +]]> + + + application.urlindex.jsf?workitem=$uniqueid + +]]> + + + + + + + + + + The linked invoice workitem will be added to thhe $workitemref + + + + + + + + + + + IntermediateCatchEvent_6 + IntermediateCatchEvent_1 + IntermediateCatchEvent_7 + Task_2 + ExclusiveGateway_1 + Task_1 + StartEvent_2 + IntermediateCatchEvent_2 + IntermediateCatchEvent_18 + IntermediateCatchEvent_3 + Task_7 + Task_6 + EndEvent_3 + IntermediateCatchEvent_4 + IntermediateCatchEvent_5 + + textAnnotation_Ku1gIw + TextAnnotation_2 + TextAnnotation_3 + event_riC9aA + + + + + + $created (dbtr.name)]]> + + + true + + + + + + + + + + + + SEPA
+Bank: dbtr.name
+Created: $created
+IBAN/Currency: name
]]>
+
+ + + +
+ $workflowgroup - $workflowstatus]]> + SequenceFlow_2 + SequenceFlow_10 + sequenceFlow_Oy68GQ +
+ + + + + SequenceFlow_10 + SequenceFlow_17 + + + + + + $created (dbtr.name)]]> + + + true + + + + + + + + + + + + SEPA
+Bank: dbtr.name
+Created: $created
+IBAN/Currency: name
]]>
+
+ + + +
+ $workflowgroup - $workflowstatus]]> + SequenceFlow_19 + SequenceFlow_17 +
+ + + + + SequenceFlow_28 + SequenceFlow_18 + SequenceFlow_1 + + + + + + $created (dbtr.name)]]> + + + true + + + + + + + + + + + + + + + + + + + SEPA
+Bank: dbtr.name
+Created: $created
+IBAN/Currency: name
]]>
+
+ + + + + + +
+ $workflowgroup - $workflowstatus]]> + SequenceFlow_12 + SequenceFlow_7 + SequenceFlow_6 + SequenceFlow_8 + SequenceFlow_28 +
+ + + + + + + + + + + + + Invoice Controlling
]]> + + + + + + SequenceFlow_7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home + + (^rechnungseingang) + 5500 + 300 + +]]> + + + + + + + + + false + + + + SequenceFlow_4 + SequenceFlow_2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Invoice Controlling]]> + + + + + + + + + + + + false + + + + SequenceFlow_12 + + + + + + SequenceFlow_6 + + + + + + + + + + + + + + + + + + + + + SequenceFlow_8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + + + + + + + + + false + + + + + + + SequenceFlow_18 + SequenceFlow_5 + SequenceFlow_19 + + + + + + + + + + + $created (dbtr.name)]]> + + + + + + + + + + + + + + + + + + + SEPA
+Bank: dbtr.name
+Created: $created
+IBAN/Currency: name
]]>
+
+ + + + + + + + + +
+ $workflowgroup - $workflowstatus]]> + SequenceFlow_3 + SequenceFlow_11 + SequenceFlow_9 + SequenceFlow_4 + SequenceFlow_5 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SEPA-Body]]> + + + + SequenceFlow_1 + SequenceFlow_3 + + + DataOutput_2 + + + DataOutput_2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + SEPA-Body]]> + + + + + + + SequenceFlow_11 + + + DataOutput_1 + + + DataOutput_1 + + + + + + + + + + + + + + + + + + + + + + SequenceFlow_9 + + + + + + + The SEPA Export holds a list of referncees to all invoices in the item + '$workitemref' + + Instances are created grouped by the item 'dbtr.IBAN' + + The SEPA Export process runs on a scheduled basis (e.g. once a day) + + + + Contains Report Definition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + SEPA-Body]]> + + + + + + + + + DataOutput_1 + + + DataOutput_1 + + + sequenceFlow_Oy68GQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +