Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src
README.md
pom.xml
sepa-export.png

README.md

imixs-sepa-adapter

The imixs-sepa-adapter provides services to export workflow invoice data into a sepa file.

Model Based Configuration

The imixs-sepa-adapter can be combined with different kind of workflow models. The SEPA export is configured by the SEPA Model

This model must at least define an inital Task with the following Events:

  • SEPA Export Start = 100
  • SEPA Export Finished = 200
  • SEPA Export Failed = 300

Other tasks and events can be defined based on the required business logic.

The SepaScheduler

The SEPA export is managed by the SepaScheduler which is an implementation of the interface org.imxis.workflow.scheduler.Scheduler. The scheduler configuration object must at least provide the following items:

  • _model_version = model version for the SEPA export
  • _initial_task = inital task ID
  • _dbtr_IBAN = default debitor IBAN
  • _dbtr_BIC = default debitor BIC
  • _dbtr_NAME = default debitor NAME

Aligned to the SEPA standard an invoice processed by the SepaScheduler should provide the following items.

  • _cdtr_IBAN = default debitor IBAN
  • _cdtr_BIC = default debitor BIC
  • _cdtr_NAME = default debitor NAME
  • _subject = invoice/topic

Note: These are recommended default item names. The items can be change to the spec of an application and XSL template.

Data Source

The start event (100) must be linked to a report definition. The report describes the data source and the template to translate the data source into a SEPA file format. See the following example for a data source query defined by a report:

(type:"workitem" AND $modelversion:"invoice-1.0.0")

This example configuration will select all invoices form the Model invoice-1.0.0.

Grouping the Data Source

The SeapScheduler automatically groups the data source by the attribute _dbtr_iban. This feature is optional and used to generate separate process instances for each debitor.

Updating Invoices

In the sepa model the events finished (200) and failed (300) can be combined with an "invoice_update" definition:

<item name="invoice_update">
	<modelversion>1.0.0</modelversion>
	<processid>5800</processid>
	<activityid>100</activityid>
</item>

The SepaScheduler automatically link the invoices with the sepa export Workitem. This definition is equals to the SplitAndJoin "subprocess_update" except with the item tag which is not supported for SEPA.

XSL Transformation

The sepa file is generated using the imixs-report functionality. The sepa report is assigned with a XSLT file to generate the output. The sepa file format is standardized. See details here.

XML Data Source

The xml data source is generated by the set of selected invoices defined by report definition and the sepa-export workitem itself. So the numer of data entries is the count of invoices +1.

To identify the type of document you can make use of the xsl select statement:

....
<xsl:template
	match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'SEPA-Export']">
	....
</xsl:template>

<xsl:template
	match="/data/document[normalize-space(item[@name = '$workflowgroup']/value) = 'Rechnungseingang']">
	....
</xsl:template>
.....

XSD pain.001.003.03

To align the resulting sepa.xml file with the XSD pain.001.003.03, we do transform some of the origin data from the XML source.

MsgId: The tags 'MsgId' and 'PmtInfId' may not be longer as 35 characters. For that reason we remove the '-' from the $uniqueid to shorten the message ids.

...
<MsgId>
	<xsl:value-of
		select="replace($exportWorkitem/item[@name='$uniqueid']/value, '-', '')" />
</MsgId>
...

IBAN: The tags 'iban' may not contain blanks which in genaral is valid to input iban. For that reason we remove the ' ' from the coresponding items.

...
<CdtrAcct>
	<Id>
		<IBAN>
			<xsl:value-of select="replace(item[@name='_cdtr_iban']/value, ' ', '')" />
		</IBAN>
	</Id>
</CdtrAcct>
...

Development

Maven

The imxis-adapter-sepa module can be added into an applicaton module. The module provides CDI and EJB components. Optional the module contains also JSF pages to be used for frontends.

Add the following maven dependency into a parent project:

<!-- SEPA Adapter -->
<dependency>
	<groupId>org.imixs.workflow</groupId>
	<artifactId>imixs-adapters-sepa</artifactId>
	<version>${org.imixs.adapters.version}</version>
	<scope>provided</scope>
</dependency>
You can’t perform that action at this time.