Plugin: BX Service SEPA
- Maintainer: Diego Ruiz - Thomas Bayen - Carlos Ruiz - BX Service GmbH
- Sponsor: BX Service GmbH
- Status: Production, working with release 8.2 and 9.0
- License: GPLv2
- Sources: GitHub de.bxservice.sepa
This plugin allows you to generate SEPA files for:
- payments: Direct Deposit -> SEPA format pain.001.003.03
- collection: Direct Debit -> SEPA format pain.008.003.02
It is directly integrated with the functionalities Payment Selection + Payment Print/Export and Payment Selection (manual) to generate the corresponding SEPA files.
The plugin adds 1 field in Org Info:
- Creditor Identifier: this is required for Direct Debit (collection) to identify the CdtrSchmeId
Business Partner > Bank Account
And the plugin also adds 4 fields (required for Collection, these are not used for Payments) in Business Partner Bank Account:
- Mandate ID: The identifier for the SEPA Mandate
- Transferred: to identify if is first transfer, it starts false and is set to true after first transfer
- Document Date: The date of the Mandate
- SEPA SSD Scheme: If the mandate is B2B or COR1
The plugin requires two client configurable SysConfig keys:
- SEPA_SHIFT_DAYS: The number of days to add to the payment date when generating the file (default zero)
- SEPA_BANKHOLIDAY_KEYWORD: A keyword to look in the name of Calendar > Non Business Days to identify the bank holidays, for example %(TARGET2)%. This means the holidays will be marked with this keyword, for example Christmas (TARGET2) will be considered a bank holiday, while just Christmas will not.
Additional the plugin makes usage and requires a proper configuration of the following fields from core:
- Bank > Swift Code
- Bank > Bank Account > IBAN
- Business Partner > Bank Account > IBAN
- Bank > Account > Payment Export Class must be set to
After configuring properly the required fields mentioned above, it is simply to push the Export button in the Payment Print/Export form and the system will generate the file according to the SEPA standards.
The system generates approximately the following information (this is approximate, refer to the source code for the exact information):
for payments -> pain.001.003.03 -> Direct Deposit MsgId -> C_PaySelection.Created CreDtTm -> now() InitgPty -> AD_Org.Name or AD_Client.Name PmtInfId -> now() /TRF ReqdExctnDt -> C_PaySelection.PayDate + SysCfg_SEPA_SHIFT_DAYS (weekday MoToFr - not a holiday) - checking C_NonBusinessDay where name like %SysCfg_SEPA_BANKHOLIDAY_KEYWORD% Dbtr -> AD_Org.Name DbtrAcct -> C_BankAccount.IBAN FinInstnId -> C_Bank.SwiftCode PmtId/EndToEndId -> C_PaySelectionLine.C_Invoice.DocumentNo/ Ccy -> C_BankAccount.C_Currency_ID InstdAmt -> C_PaySelectionCheck.PayAmt FinInstnId -> C_BP_BankAccount.C_Bank.SwiftCode Cdtr -> C_BPartner.Name CdtrAcct -> C_BP_BankAccount.IBAN RmtInf/Ustrd -> C_PaySelectionLine. C_Invoice.DateInvoiced[dd.MM.yyyy] C_Invoice.DocumentNo / C_Order.OrderNo C_Invoice.POReference C_BPartner.ReferenceNo C_Invoice.GrandTotal C_PaySelectionLine.Description,... for collection -> pain.008.003.02 -> Direct Debit InitgPty -> AD_Org.Name or AD_Client.Name MsgId -> C_PaySelection.Created CreDtTm -> now() PmtInfId -> now() B2B|COR1 -FRST|RCUR ReqdColltnDt -> C_PaySelection.PayDate + SysCfg_SEPA_SHIFT_DAYS (weekday MoToFr - not a holiday) - checking C_NonBusinessDay where name like %SysCfg_SEPA_BANKHOLIDAY_KEYWORD% Cdtr/Nm -> AD_Org.Name CdtrAcct/Id -> C_BankAccount.IBAN FinInstnId -> C_Bank.SwiftCode Ccy -> C_BankAccount.C_Currency_ID InstdAmt -> C_PaySelectionCheck.PayAmt MndtId -> C_BP_BankAccount.MndtId DtOfSgntr -> C_BP_BankAccount.DateDoc CdtrSchmeId -> AD_OrgInfo.CreditorIdentifier DbtrAgt -> C_BP_BankAccount.C_Bank.SwiftCode Dbtr -> C_BPartner.Name DbtrAcct -> C_BP_BankAccount.IBAN RmtInf/Ustrd -> C_PaySelectionLine. C_Invoice.DateInvoiced[dd.MM.yyyy] C_Invoice.DocumentNo / C_Order.OrderNo C_Invoice.POReference C_BPartner.ReferenceNo C_Invoice.GrandTotal C_PaySelectionLine.Description,...