Merge pull request #112 from Noviat/18.0

Syncing from upstream Noviat/account_ebics (18.0)
This commit is contained in:
braintec authored and GitHub committed 2026-10-12 01:15:50 +02:00
commit 2d6774ef9c
65 files changed
+3363 -2809

No files matched your search

+6 -6
View File
@@ -15,12 +15,12 @@ Available addons
----------------
addon | version | maintainers | summary
--- | --- | --- | ---
[account_ebics](account_ebics/) | 18.0.1.2.1 | | EBICS banking protocol
[account_ebics_batch](account_ebics_batch/) | 18.0.1.0.1 | | EBICS Files automated import and processing
[account_ebics_batch_payment](account_ebics_batch_payment/) | 18.0.1.2.0 | | Upload Batch Payment via EBICS
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 18.0.1.0.1 | | Use OCA Bank Statement Import with account_ebics
[account_ebics_oe](account_ebics_oe/) | 18.0.1.0.0 | | Deploy account_ebics module on Odoo Enterprise
[account_ebics_payment_order](account_ebics_payment_order/) | 18.0.1.2.0 | | Upload Payment Order via EBICS
[account_ebics](account_ebics/) | 18.0.1.2.1 | | Download bank statements and upload payment files directly from Odoo, using the European EBICS standard
[account_ebics_batch](account_ebics_batch/) | 18.0.1.0.1 | | Download and process your EBICS files automatically, on a schedule
[account_ebics_batch_payment](account_ebics_batch_payment/) | 18.0.1.2.0 | | Send an Odoo Enterprise batch payment to the bank over EBICS
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 18.0.1.0.1 | | Process EBICS statement files with the OCA bank statement import
[account_ebics_oe](account_ebics_oe/) | 18.0.1.0.0 | | Place the EBICS menus in the Odoo Enterprise accounting application
[account_ebics_payment_order](account_ebics_payment_order/) | 18.0.1.2.0 | | Send an OCA payment order to the bank over EBICS
[//]: # (end addons)
+194 -148
View File
@@ -1,219 +1,265 @@
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: https://www.gnu.org/licenses/lgpl
:alt: License: LGPL-3
======================
EBICS banking protocol
EBICS Banking Protocol
======================
Implementation of the EBICS banking protocol.
**Exchange files directly with your banks from Odoo, with no portal and nobody logging in.**
This module facilitates the exchange of files with banks via the EBICS protocol.
EBICS, the Electronic Banking Internet Communication Standard, is the channel European
banks open to companies that want their software to talk to the bank. Bank statements are
downloaded on a schedule and payment files are uploaded from Odoo, authenticated by your
own cryptographic keys instead of a login page.
|
This module implements that protocol in Odoo. It is developed and maintained by
Noviat, and follows each new version of Odoo, which matters when a bank connection has to
survive your next migration.
Installation
If you are still working out whether EBICS is the right channel for you, we explain it
without the jargon, with screen recordings of the flow in Odoo, on
`noviat.com/ebics <https://www.noviat.com/ebics>`_.
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics/static/description/ebics_flow.png
:alt: Statements come down as camt.053 or camt.052 files, payment files go up as pain.001 or pain.008, and your keys stay on your own server
:width: 100%
What you get
============
The module depends upon
- **Statements that arrive on their own.** A scheduled task collects the files your bank
publishes, for every account, and processes them into bank statements.
- **Payments that leave the same way.** A payment batch or a payment order is uploaded to
the bank in the format the bank expects, without exporting a file and re-uploading it
somewhere else.
- **Several companies, one connection.** Keys are held per bank rather than per company:
when fifteen entities bank with the same institution, the bank sends a single daily file
carrying fifteen statements and the module puts each statement in the right company.
- **No bank credentials in Odoo.** The connection uses your own company keys, generated on
your side and kept on your server. Access to the EBICS configuration is a permission of
its own ('EBICS Manager'), separate from ordinary accounting rights.
- **A test mode, where your bank offers one.** French banks accept a test flag, so a file
can be submitted and validated before anything is switched to production. German and
Swiss banks generally do not: there the first payment is a real one, kept small and sent
to an account you control.
- **A trace of every exchange.** Each download and each upload is a record, with the file
it carried, the moment it happened and the user behind it.
- https://pypi.python.org/pypi/fintech
- https://pypi.python.org/pypi/cryptography
**EBICS 2.4**, **EBICS 2.5** and **EBICS 3.0** are supported. EBICS 3.0, the current
specification since December 2022, names what is exchanged with BTF instead of the
country-specific order type codes of EBICS 2.x. Many banks still run 2.4 or 2.5 in parallel.
Remark:
What travels over the link
==========================
The EBICS 'Test Mode' for uploading orders requires fintech 4.3.4 or higher for EBICS 2.x
and fintech 7.2.7 or higher for EBICS 3.0.
- **Coming in:** camt.053 for the end of day statement, camt.052 for intraday movements
where the bank offers them, and national formats such as the French CFONB.
- **Going out:** pain.001 for credit transfers and pain.008 for direct debits, generated by
Odoo from your payment batches.
SWIFT 3SKey support requires fintech 6.4 or higher.
We do not process MT940 statements: the format carries bank and country specific variations,
and the Odoo community stopped maintaining a general parser for it after Odoo 10. Where a
bank publishes camt.053 alongside it, which is now the usual case, that is the format to use.
|
Which banks
===========
We also recommend to consider the installation of the following modules:
Any bank that publishes an EBICS access point can be connected. The standard is maintained by
EBICS SC, a company held by the German, French, Swiss and Austrian banking bodies
(DK, CFONB, SIX and PSA), and it is the standard corporate channel in those countries.
|
To check a specific bank before you start, joonis publishes a public directory at
`joonis.de/en/fintech/banks <https://www.joonis.de/en/fintech/banks/>`_. Enter a BIC and it
returns the SEPA services the bank offers, the EBICS versions it supports and its Host-ID.
- account_ebics_oe
A bank missing from that directory is not a no: it is joonis' own list, not an official
register. Ask your bank whether it publishes an EBICS access point.
Required if you are running Odoo Enterprise
What it costs
=============
Cf. https://github.com/Noviat/account_ebics
**This module is free software**, published under LGPL-3. There is no licence fee, no
subscription and no per-connection charge from Noviat.
|
It does however rely on the `fintech <https://pypi.python.org/pypi/fintech>`_ library from
joonis, and that library requires a **commercial licence for production use**: as soon as
you upload SEPA files with more than five transactions, retrieve statements older than the
last three days, or use the distributed signature. The licence is contracted directly with
joonis, not with Noviat.
- account_ebics_batch
joonis charges a one-off setup fee plus a monthly fee per EBICS user id. Current pricing is
published on
`joonis.de <https://www.joonis.de/en/fintech/prices/>`_.
This module adds a cron job for the automated import of EBICS files.
Your bank may also charge a subscription for the EBICS channel itself. It varies from one
bank to another and is billed by the bank, separately from anything on the Odoo side.
Cf. https://github.com/Noviat/account_ebics
Requirements
============
|
The module depends on two Python libraries:
- account_ebics_batch_payment
- `fintech <https://pypi.python.org/pypi/fintech>`_
- `cryptography <https://pypi.python.org/pypi/cryptography>`_
Recommended if you are using the Odoo Enterprise account_batch_payment module
Because the connection needs a Python library and your key files on the server, it runs on
**Odoo.sh** or on an **on-premise** installation.
Cf. https://github.com/Noviat/account_ebics
The EBICS test mode for uploads requires fintech 4.3.4 or higher for EBICS 2.x and fintech
7.2.7 or higher for EBICS 3.0. SWIFT 3SKey support requires fintech 6.4 or higher, and the signature passphrase
fintech 7.3.1 or higher.
|
- account_usability
Recommended if you have multiple financial journals.
This module adds a number of accounting menu entries such as bank statement list view
which allows to see all statements downloaded via the ir.cron automated EBICS download.
Cf. https://github.com/OCA/account-financial-tools
|
- account_ebics_payment_order
Required if you are using the OCA account_payment_order module.
Cf. https://github.com/OCA/bank-payment
|
- account_ebics_oca_statement_import
Required if you are using the OCA Bank Statement import modules.
https://github.com/OCA/bank-statement-import
|
- account_statement_import_fr_cfonb
Required to handle french CFONB files.
Cf. https://github.com/OCA/l10n_france
|
- account_statement_import_camt
Required to handle camt.052 and camt.054 files.
Cf. https://github.com/OCA/bank-statement-import
|
Fintech license
Fintech licence
---------------
If you have a valid fintech.ebics license, you should add the following
licensing parameters to the [options] section of the odoo server configuration file:
With a fintech licence, add its parameters to the ``[options]`` section of the Odoo server
configuration file:
- ``fintech_register_name``: the name of the licensee;
- ``fintech_register_keycode``: the keycode of the licensed version.
- fintech_register_name
The name of the licensee.
- fintech_register_keycode
The keycode of the licensed version.
|
| Example:
|
::
Example::
; fintech
fintech_register_name = MyCompany
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L
|
Companion modules
=================
Cf. https://www.joonis.de/en/fintech/prices/
From this repository:
|
- **EBICS - Odoo Enterprise Integration** (``account_ebics_oe``): required on Odoo
Enterprise; installed automatically.
- **EBICS - Bank Statement Import (OCA)** (``account_ebics_oca_statement_import``):
matches the statements processed with the OCA statement import to the right bank
journal; installed automatically with ``account_statement_import_file``.
- **EBICS - Scheduled File Import** (``account_ebics_batch``): downloads and processes the
files of every connection on a schedule.
- **EBICS - Batch Payments (Odoo Enterprise)** (``account_ebics_batch_payment``): uploads
the batch payments of the Odoo Enterprise ``account_batch_payment`` module.
- **EBICS - Payment Orders (OCA)** (``account_ebics_payment_order``): uploads the payment
orders of the OCA ``account_payment_order`` module
(`OCA/bank-payment <https://github.com/OCA/bank-payment>`_).
To process the downloaded statements, install the module of each format you receive:
- **camt.053, camt.052 and camt.054**: ``account_statement_import_camt``
(`OCA/bank-statement-import <https://github.com/OCA/bank-statement-import>`_). For
camt.053, the Odoo Enterprise ``account_bank_statement_import_camt`` works too.
- **French CFONB**: ``account_statement_import_fr_cfonb``
(`OCA/l10n-france <https://github.com/OCA/l10n-france>`_).
Recommended with several financial journals: ``account_usability``
(`OCA/account-financial-tools <https://github.com/OCA/account-financial-tools>`_), which adds
accounting menus such as a list of all bank statements, including those downloaded by the
scheduled import.
Getting your bank online
========================
The configuration on the Odoo side takes fifteen to thirty minutes. What sets the pace of a
project is the bank, and it is almost never for a technical reason:
- **The bank opens the access.** You receive the host ID, the address of the access point,
your partner and user identifiers, and a letter carrying the hash values of the bank's keys.
- **INI and HIA.** Odoo generates your key pairs for signature, authentication and encryption,
sends the public keys to the bank and produces the initialisation letters, which you print,
sign and send. The bank compares them by hand with the keys it received online.
- **HPB.** Once the bank has activated your access, you retrieve its public keys and compare
their hash values with the letter it sent you. That comparison is what makes the channel
trustworthy.
- **The first exchange.** Statements come down first. Payments follow, as a test file where
the bank supports the test flag, otherwise as a real transfer of a small amount.
Count in weeks per bank rather than days, and start the contract and the paperwork early.
Configuration
=============
Go to **Settings > Users**
The menus are those of Odoo Enterprise; on Odoo Community, the application is called
*Invoicing* instead of *Accounting*.
Add the users that are authorised to maintain the EBICS configuration to the 'EBICS Manager' Group.
**Who may configure.** In *Settings > Users*, with the developer mode active, tick
**EBICS Manager** in the *Technical* section of the users who maintain the EBICS
configuration.
|
**File formats.** In *Accounting > Configuration > EBICS > EBICS File Formats*, check that the
formats you exchange with your banks are defined; the common ones are created at
installation. A missing format can be reported on
`GitHub <https://github.com/Noviat/account_ebics/issues>`_.
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS File Formats**
A download format can carry a **Download Process Method**, run by the *Process* button of a
downloaded file: ``camt.053``, ``camt.052``, ``camt.054`` and ``cfonb120``. Each needs the
module of its format (see Companion modules); Odoo tells you which one when it is missing.
Check if the EBICS File formats that you want to process in Odoo are defined.
**Bank connections.** In *Accounting > Configuration > EBICS > EBICS Configuration*, create one
connection per bank contract, with the identifiers your bank sent you.
Most commonly used formats for which support is available in Odoo should be there already.
Please open an issue on https://github.com/Noviat/account_ebics to report missing EBICS File Formats.
For File Formats of type 'Downloads' you can also specify a 'Download Process Method'.
This is the method that will be executed when hitting the 'Process' button on the downloaded file.
The following methods are currently available:
- cfonb120
- camt.053
- camt.052
- camt.054
All these methods require complimentary modules to be installed (cf. Installation section supra).
You'll get an error message when the required module is not installed on your Odoo instance.
|
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS Configuration**
Configure your EBICS configuration according to the contract with your bank.
|
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics/static/description/ebics_download.png
:alt: A downloaded camt.053 statement file in Odoo, before processing
:width: 100%
Usage
=====
Go to **Accounting > Bank and Cash > EBICS Processing**
The **EBICS Processing** menu, in the top bar of the Accounting application, lists the
downloaded and uploaded files and offers manual downloads and uploads.
|
Downloaded files are processed into bank statements. Uploads are launched from the payment
batch or the payment order, with the format set in the configuration: on the payment
mode for a payment order, on the journal's payment method for a batch payment.
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics/static/description/ebics_upload.png
:alt: Uploading a pain.001 SEPA credit transfer file over EBICS 3.0, with the test mode option
:width: 100%
Diagnostics
===========
Add the following to your Odoo config file in order to diagnose
issues with the EBICS connection with your bank:
To diagnose the connection with your bank, add this line to the Odoo server configuration
file::
log_handler = fintech.ebics:DEBUG
log_handler = fintech.ebics:DEBUG
|
EBICS Return Codes
EBICS return codes
------------------
During the processing of your EBICS upload/download, your bank may return an Error Code, e.g.
During an upload or a download, your bank may return an error code, for example::
EBICS Functional Error:
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)
EBICS Functional Error:
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)
A detailed explanation of the codes can be found on http://www.ebics.org.
You can also find this information in the doc folder of this module (file EBICS_Annex1_ReturnCodes).
|
The codes are explained on `ebics.org <https://www.ebics.org>`_ and in the ``doc`` folder of
this module (``EBICS_Annex1_ReturnCodes``).
Electronic Distributed Signature (EDS)
--------------------------------------
This is supported via external signing apps, e.g. BankingVEU:
Where your bank supports EBICS T, Odoo prepares the file and holds no signing credentials
at all: the payment is approved in your own signing application, which is what a segregation
of duties policy usually demands. Where it does not, which happens with German and Swiss
banks, the signing key sits on your Odoo server, and you can protect it with a separate
signature passphrase that is never stored and is asked for every signed transaction.
- https://play.google.com/store/apps/details?id=subsembly.bankingveu
- https://apps.apple.com/de/app/bankingveu/id1578694190
External signing apps include BankingVEU
(`Android <https://play.google.com/store/apps/details?id=subsembly.bankingveu>`_,
`iOS <https://apps.apple.com/de/app/bankingveu/id1578694190>`_).
Roadmap
=======
Known Issues / Roadmap
======================
- Import externally generated keys and certificates (today only the 3SKey signature
certificate).
- Support the SWIFT 3SKey signing JavaScript library
(`SConnect <https://www2.swift.com/3skey/help/sconnect.html>`_).
- The end user is currently not able to change his passphrases (only the users with 'EBICS Manager' rights can do so).
- Add support to import externally generated keys & certificates (currently only 3SKey signature certificate).
- Add support for SWIFT 3SKey signing javascript lib (SConnect, cf https://www2.swift.com/3skey/help/sconnect.html).
Issues and pull requests are welcome on
`GitHub <https://github.com/Noviat/account_ebics>`_.
Credits
=======
This module is developed and maintained by `Noviat <https://www.noviat.com>`_, Odoo
integrator in Belgium, specialised in accounting and finance since 2009.
We implement it, we configure the connection with your banks and we support you through the
first cycles. If you want help getting a bank online, tell us which banks you use:
https://www.noviat.com/ebics
+6 -2
View File
@@ -2,7 +2,11 @@
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "EBICS banking protocol",
"name": "EBICS Banking Protocol",
"summary": (
"Download bank statements and upload payment files directly from Odoo, "
"using the European EBICS standard"
),
"version": "18.0.1.2.1",
"license": "LGPL-3",
"author": "Noviat",
@@ -30,5 +34,5 @@
"cryptography",
]
},
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
}
+8 -9
View File
@@ -37,7 +37,7 @@ msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__swift_3skey_certificate
msgid "3SKey Certficate"
msgid "3SKey Certificate"
msgstr ""
#. module: account_ebics
@@ -301,7 +301,7 @@ msgstr ""
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__signature_class
msgid ""
"Default signature class.This default can be overriden for specific EBICS "
"Default signature class.This default can be overridden for specific EBICS "
"transactions (cf. File Formats)."
msgstr ""
@@ -560,8 +560,8 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
"EBICS Initialisation - Push this button when the public have been checked "
"for consistency."
"EBICS Initialisation - Push this button when the public bank keys have been "
"checked for consistency."
msgstr ""
#. module: account_ebics
@@ -1367,8 +1367,8 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"Set the EBICS Configuation record to 'Draft' before starting the Key Renewal"
" process."
"Set the EBICS Configuration record to 'Draft' before starting the Key "
"Renewal process."
msgstr ""
#. module: account_ebics
@@ -1484,7 +1484,7 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_config_view_form
msgid ""
"The EBICS configuration must be confirmed before it can used for bank "
"The EBICS configuration must be confirmed before it can be used for bank "
"transactions."
msgstr ""
@@ -1525,8 +1525,7 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"The current version of this module requires to X509 support when enabling "
"3SKey"
"The current version of this module requires X509 support when enabling 3SKey"
msgstr ""
#. module: account_ebics
File diff suppressed because it is too large. Load diff
+71 -31
View File
@@ -3,14 +3,14 @@
# * account_ebics
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2025, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-31 23:02+0000\n"
"PO-Revision-Date: 2026-08-02 02:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: French <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics/fr/>\n"
"Language: fr\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2026.7.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics
#. odoo-python
@@ -44,7 +44,7 @@ msgstr "'Date de fin' telle que saisie dans l'assistant de téléchargement."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__swift_3skey_certificate
msgid "3SKey Certficate"
msgid "3SKey Certificate"
msgstr "Certificat 3SKey"
#. module: account_ebics
@@ -323,7 +323,7 @@ msgstr "Au"
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__signature_class
msgid ""
"Default signature class.This default can be overriden for specific EBICS "
"Default signature class.This default can be overridden for specific EBICS "
"transactions (cf. File Formats)."
msgstr ""
"Classe de signature par défaut. Cette valeur par défaut peut être remplacée "
@@ -558,11 +558,11 @@ msgstr "Fichiers EBICS"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Functional Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Functional Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"Erreur fonctionnelle EBICS lors du téléchargement du format de fichier %"
"(name)s (%(order_type)s) :"
"Erreur fonctionnelle EBICS lors du téléchargement du format de fichier "
"%(name)s (%(order_type)s) :"
#. module: account_ebics
#. odoo-python
@@ -607,8 +607,8 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
"EBICS Initialisation - Push this button when the public have been checked "
"for consistency."
"EBICS Initialisation - Push this button when the public bank keys have been "
"checked for consistency."
msgstr ""
"Initialisation EBICS - Appuyez sur ce bouton lorsque la cohérence des clés "
"publiques a été vérifiée."
@@ -645,6 +645,8 @@ msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"Please contact your system administrator."
msgstr ""
"Le répertoire racine des clés EBICS %s n'est pas disponible.\n"
"Veuillez contacter votre administrateur système."
#. module: account_ebics
#: model:res.groups,name:account_ebics.group_ebics_manager
@@ -711,8 +713,8 @@ msgstr "Phrase secrète EBICS enregistrée"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Technical Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Technical Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"Erreur technique EBICS lors du téléchargement du format de fichier %(name)s "
"(%(order_type)s) :"
@@ -767,11 +769,11 @@ msgstr "Utilisateurs EBICS"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Verification Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Verification Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"Erreur de vérification EBICS lors du téléchargement du format de fichier %"
"(name)s (%(order_type)s) :"
"Erreur de vérification EBICS lors du téléchargement du format de fichier "
"%(name)s (%(order_type)s) :"
#. module: account_ebics
#. odoo-python
@@ -851,12 +853,12 @@ msgstr "Incompatibilité de version EBICS."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr ""
msgstr "Configuration EBICS"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr ""
msgstr "Configurations EBICS"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
@@ -919,8 +921,8 @@ msgstr ""
msgid ""
"Error detected during download of File Format %(name)s (%(order_type)s):"
msgstr ""
"Erreur détectée lors du téléchargement du format de fichier %(name)s (%"
"(order_type)s) :"
"Erreur détectée lors du téléchargement du format de fichier %(name)s "
"(%(order_type)s) :"
#. module: account_ebics
#. odoo-python
@@ -1225,8 +1227,8 @@ msgstr "Aucune banque définie pour le journal financier de la config EBICS"
#: code:addons/account_ebics/models/ebics_file.py:0
msgid "No financial journal found for Account Number %(nbr)s, Currency %(cc)s"
msgstr ""
"Aucun journal financier trouvé pour le numéro de compte %(nbr)s, devise %(cc)"
"s"
"Aucun journal financier trouvé pour le numéro de compte %(nbr)s, devise "
"%(cc)s"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_change_passphrase__note
@@ -1470,8 +1472,8 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"Set the EBICS Configuation record to 'Draft' before starting the Key Renewal "
"process."
"Set the EBICS Configuration record to 'Draft' before starting the Key "
"Renewal process."
msgstr ""
"Mettez l'enregistrement de configuration EBICS sur 'Brouillon' avant de "
"démarrer le processus de renouvellement de clé."
@@ -1604,7 +1606,7 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_config_view_form
msgid ""
"The EBICS configuration must be confirmed before it can used for bank "
"The EBICS configuration must be confirmed before it can be used for bank "
"transactions."
msgstr ""
"La configuration EBICS doit être confirmée avant de pouvoir être utilisée "
@@ -1651,8 +1653,7 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"The current version of this module requires to X509 support when enabling "
"3SKey"
"The current version of this module requires X509 support when enabling 3SKey"
msgstr ""
"La version actuelle de ce module nécessite la prise en charge de X509 lors "
"de l'activation de 3SKey"
@@ -1744,8 +1745,8 @@ msgstr "Erreur inconnue"
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "Unknown Error during download of File Format %(name)s (%(order_type)s):"
msgstr ""
"Erreur inconnue lors du téléchargement du format de fichier %(name)s (%"
"(order_type)s) :"
"Erreur inconnue lors du téléchargement du format de fichier %(name)s "
"(%(order_type)s) :"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file_format__type__up
@@ -1920,3 +1921,42 @@ msgid ""
msgstr ""
"erreur urlopen :\n"
" url '%(url)s' - %(val)s"
#~ msgid "3SKey Certficate"
#~ msgstr "Certificat 3SKey"
#~ msgid ""
#~ "Default signature class.This default can be overriden for specific EBICS "
#~ "transactions (cf. File Formats)."
#~ msgstr ""
#~ "Classe de signature par défaut. Cette valeur par défaut peut être "
#~ "remplacée pour des transactions EBICS spécifiques (cf. Formats de "
#~ "fichier)."
#~ msgid ""
#~ "EBICS Initialisation - Push this button when the public have been checked "
#~ "for consistency."
#~ msgstr ""
#~ "Initialisation EBICS - Appuyez sur ce bouton lorsque la cohérence des "
#~ "clés publiques a été vérifiée."
#~ msgid ""
#~ "Set the EBICS Configuation record to 'Draft' before starting the Key "
#~ "Renewal process."
#~ msgstr ""
#~ "Mettez l'enregistrement de configuration EBICS sur 'Brouillon' avant de "
#~ "démarrer le processus de renouvellement de clé."
#~ msgid ""
#~ "The EBICS configuration must be confirmed before it can used for bank "
#~ "transactions."
#~ msgstr ""
#~ "La configuration EBICS doit être confirmée avant de pouvoir être utilisée "
#~ "pour les transactions bancaires."
#~ msgid ""
#~ "The current version of this module requires to X509 support when enabling "
#~ "3SKey"
#~ msgstr ""
#~ "La version actuelle de ce module nécessite la prise en charge de X509 "
#~ "lors de l'activation de 3SKey"
+74 -34
View File
@@ -3,14 +3,14 @@
# * account_ebics
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2025, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-31 23:13+0000\n"
"PO-Revision-Date: 2026-08-02 02:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: Dutch <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics/nl/>\n"
"Language: nl\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.7.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics
#. odoo-python
@@ -44,7 +44,7 @@ msgstr "'Datum tot' zoals ingevoerd in de downloadwizard."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__swift_3skey_certificate
msgid "3SKey Certficate"
msgid "3SKey Certificate"
msgstr "3SKey-certificaat"
#. module: account_ebics
@@ -322,7 +322,7 @@ msgstr "Tot en met"
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__signature_class
msgid ""
"Default signature class.This default can be overriden for specific EBICS "
"Default signature class.This default can be overridden for specific EBICS "
"transactions (cf. File Formats)."
msgstr ""
"Standaard handtekeningklasse. Deze standaardwaarde kan worden overschreven "
@@ -557,11 +557,11 @@ msgstr "EBICS-bestanden"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Functional Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Functional Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"EBICS functionele fout tijdens het downloaden van bestandsformaat %(name)s (%"
"(order_type)s):"
"EBICS functionele fout tijdens het downloaden van bestandsformaat %(name)s "
"(%(order_type)s):"
#. module: account_ebics
#. odoo-python
@@ -606,8 +606,8 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
"EBICS Initialisation - Push this button when the public have been checked "
"for consistency."
"EBICS Initialisation - Push this button when the public bank keys have been "
"checked for consistency."
msgstr ""
"EBICS-initialisatie - Druk op deze knop wanneer de openbare sleutels op "
"consistentie zijn gecontroleerd."
@@ -644,6 +644,8 @@ msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"Please contact your system administrator."
msgstr ""
"De hoofdmap van de EBICS-sleutels %s is niet beschikbaar.\n"
"Neem contact op met uw systeembeheerder."
#. module: account_ebics
#: model:res.groups,name:account_ebics.group_ebics_manager
@@ -712,11 +714,11 @@ msgstr "Opgeslagen EBICS-wachtwoordzin"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Technical Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Technical Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"Technische EBICS-fout tijdens het downloaden van bestandsformaat %(name)s (%"
"(order_type)s):"
"Technische EBICS-fout tijdens het downloaden van bestandsformaat %(name)s "
"(%(order_type)s):"
#. module: account_ebics
#. odoo-python
@@ -767,11 +769,11 @@ msgstr "EBICS-gebruikers"
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"EBICS Verification Error during download of File Format %(name)s (%"
"(order_type)s):"
"EBICS Verification Error during download of File Format %(name)s "
"(%(order_type)s):"
msgstr ""
"EBICS-verificatiefout tijdens het downloaden van bestandsformaat %(name)s (%"
"(order_type)s):"
"EBICS-verificatiefout tijdens het downloaden van bestandsformaat %(name)s "
"(%(order_type)s):"
#. module: account_ebics
#. odoo-python
@@ -851,12 +853,12 @@ msgstr "EBICS-versie komt niet overeen."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr ""
msgstr "EBICS-configuratie"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr ""
msgstr "EBICS-configuraties"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
@@ -919,8 +921,8 @@ msgstr ""
msgid ""
"Error detected during download of File Format %(name)s (%(order_type)s):"
msgstr ""
"Fout gedetecteerd tijdens het downloaden van bestandsformaat %(name)s (%"
"(order_type)s):"
"Fout gedetecteerd tijdens het downloaden van bestandsformaat %(name)s "
"(%(order_type)s):"
#. module: account_ebics
#. odoo-python
@@ -1309,8 +1311,8 @@ msgid ""
"that these users will possess. \n"
"It is identified by the PartnerID."
msgstr ""
"Organisatie-eenheid (bedrijf of persoon) die een contract sluit met de bank. "
"\n"
"Organisatie-eenheid (bedrijf of persoon) die een contract sluit met de "
"bank. \n"
"In dit contract wordt afgesproken welke ordertypes (bestandsformaten) worden "
"gebruikt, welke rekeningen betrokken zijn, welke van de gebruikers van de "
"klant (abonnees) communiceren met de EBICS-bankserver en welke machtigingen "
@@ -1469,8 +1471,8 @@ msgstr "Status instellen op 'concept' vóór (her)initialisatie van de bankkey."
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"Set the EBICS Configuation record to 'Draft' before starting the Key Renewal "
"process."
"Set the EBICS Configuration record to 'Draft' before starting the Key "
"Renewal process."
msgstr ""
"Zet het EBICS-configuratierecord op 'Concept' voordat u het "
"keyvernieuwingsproces start."
@@ -1601,7 +1603,7 @@ msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_config_view_form
msgid ""
"The EBICS configuration must be confirmed before it can used for bank "
"The EBICS configuration must be confirmed before it can be used for bank "
"transactions."
msgstr ""
"De EBICS-configuratie moet worden bevestigd voordat deze kan worden gebruikt "
@@ -1648,8 +1650,7 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
msgid ""
"The current version of this module requires to X509 support when enabling "
"3SKey"
"The current version of this module requires X509 support when enabling 3SKey"
msgstr ""
"De huidige versie van deze module vereist X509-ondersteuning bij het "
"inschakelen van 3SKey"
@@ -1740,8 +1741,8 @@ msgstr "Onbekende fout"
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "Unknown Error during download of File Format %(name)s (%(order_type)s):"
msgstr ""
"Onbekende fout tijdens het downloaden van bestandsformaat %(name)s (%"
"(order_type)s):"
"Onbekende fout tijdens het downloaden van bestandsformaat %(name)s "
"(%(order_type)s):"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file_format__type__up
@@ -1815,7 +1816,8 @@ msgstr "Gebruikers"
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__user_ids
msgid "Users who are allowed to use this EBICS UserID for bank transactions."
msgstr "Gebruikers die deze EBICS-UserID mogen gebruiken voor banktransacties."
msgstr ""
"Gebruikers die deze EBICS-UserID mogen gebruiken voor banktransacties."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__to_verify
@@ -1912,3 +1914,41 @@ msgid ""
msgstr ""
"urlopen-fout:\n"
" url '%(url)s' - %(val)s"
#~ msgid "3SKey Certficate"
#~ msgstr "3SKey-certificaat"
#~ msgid ""
#~ "Default signature class.This default can be overriden for specific EBICS "
#~ "transactions (cf. File Formats)."
#~ msgstr ""
#~ "Standaard handtekeningklasse. Deze standaardwaarde kan worden "
#~ "overschreven voor specifieke EBICS-transacties (cf. Bestandsformaten)."
#~ msgid ""
#~ "EBICS Initialisation - Push this button when the public have been checked "
#~ "for consistency."
#~ msgstr ""
#~ "EBICS-initialisatie - Druk op deze knop wanneer de openbare sleutels op "
#~ "consistentie zijn gecontroleerd."
#~ msgid ""
#~ "Set the EBICS Configuation record to 'Draft' before starting the Key "
#~ "Renewal process."
#~ msgstr ""
#~ "Zet het EBICS-configuratierecord op 'Concept' voordat u het "
#~ "keyvernieuwingsproces start."
#~ msgid ""
#~ "The EBICS configuration must be confirmed before it can used for bank "
#~ "transactions."
#~ msgstr ""
#~ "De EBICS-configuratie moet worden bevestigd voordat deze kan worden "
#~ "gebruikt voor banktransacties."
#~ msgid ""
#~ "The current version of this module requires to X509 support when enabling "
#~ "3SKey"
#~ msgstr ""
#~ "De huidige versie van deze module vereist X509-ondersteuning bij het "
#~ "inschakelen van 3SKey"
+4 -4
View File
@@ -77,7 +77,7 @@ class EbicsUserID(models.Model):
required=True,
default="T",
help="Default signature class."
"This default can be overriden for specific "
"This default can be overridden for specific "
"EBICS transactions (cf. File Formats).",
)
transaction_rights = fields.Selection(
@@ -143,7 +143,7 @@ class EbicsUserID(models.Model):
help="Transactions for this user will be signed "
"by means of the SWIFT 3SKey token.",
)
swift_3skey_certificate = fields.Binary(string="3SKey Certficate")
swift_3skey_certificate = fields.Binary(string="3SKey Certificate")
swift_3skey_certificate_fn = fields.Char(string="3SKey Certificate Filename")
# X.509 Distinguished Name attributes used to
# create self-signed X.509 certificates
@@ -312,7 +312,7 @@ class EbicsUserID(models.Model):
if self.ebics_config_id.state != "draft":
raise UserError(
self.env._(
"Set the EBICS Configuation record to 'Draft' "
"Set the EBICS Configuration record to 'Draft' "
"before starting the Key Renewal process."
)
)
@@ -386,7 +386,7 @@ class EbicsUserID(models.Model):
raise UserError(
self.env._(
"The current version of this module "
"requires to X509 support when enabling 3SKey"
"requires X509 support when enabling 3SKey"
)
)
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

+199 -542
View File
@@ -1,573 +1,230 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-banking-protocol">
<h1>EBICS banking protocol</h1>
<p>Implementation of the EBICS banking protocol.</p>
<p>This module facilitates the exchange of files with banks via the EBICS protocol.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<div class="section" id="installation">
<h2>Installation</h2>
<p>The module depends upon</p>
<h1>EBICS Banking Protocol</h1>
<p><strong>Exchange files directly with your banks from Odoo, with no portal and nobody logging in.</strong></p>
<p>EBICS, the Electronic Banking Internet Communication Standard, is the channel European
banks open to companies that want their software to talk to the bank. Bank statements are
downloaded on a schedule and payment files are uploaded from Odoo, authenticated by your
own cryptographic keys instead of a login page.</p>
<p>This module implements that protocol in Odoo. It is developed and maintained by
Noviat, and follows each new version of Odoo, which matters when a bank connection has to
survive your next migration.</p>
<p>If you are still working out whether EBICS is the right channel for you, we explain it
without the jargon, with screen recordings of the flow in Odoo, on
<a class="reference external" href="https://www.noviat.com/ebics">noviat.com/ebics</a>.</p>
<img alt="Statements come down as camt.053 or camt.052 files, payment files go up as pain.001 or pain.008, and your keys stay on your own server" src="ebics_flow.png" style="width: 100%;" />
<div class="section" id="what-you-get">
<h2>What you get</h2>
<ul class="simple">
<li><a class="reference external" href="https://pypi.python.org/pypi/fintech">https://pypi.python.org/pypi/fintech</a></li>
<li><a class="reference external" href="https://pypi.python.org/pypi/cryptography">https://pypi.python.org/pypi/cryptography</a></li>
<li><strong>Statements that arrive on their own.</strong> A scheduled task collects the files your bank
publishes, for every account, and processes them into bank statements.</li>
<li><strong>Payments that leave the same way.</strong> A payment batch or a payment order is uploaded to
the bank in the format the bank expects, without exporting a file and re-uploading it
somewhere else.</li>
<li><strong>Several companies, one connection.</strong> Keys are held per bank rather than per company:
when fifteen entities bank with the same institution, the bank sends a single daily file
carrying fifteen statements and the module puts each statement in the right company.</li>
<li><strong>No bank credentials in Odoo.</strong> The connection uses your own company keys, generated on
your side and kept on your server. Access to the EBICS configuration is a permission of
its own ('EBICS Manager'), separate from ordinary accounting rights.</li>
<li><strong>A test mode, where your bank offers one.</strong> French banks accept a test flag, so a file
can be submitted and validated before anything is switched to production. German and
Swiss banks generally do not: there the first payment is a real one, kept small and sent
to an account you control.</li>
<li><strong>A trace of every exchange.</strong> Each download and each upload is a record, with the file
it carried, the moment it happened and the user behind it.</li>
</ul>
<p>Remark:</p>
<p>The EBICS 'Test Mode' for uploading orders requires fintech 4.3.4 or higher for EBICS 2.x
and fintech 7.2.7 or higher for EBICS 3.0.</p>
<p>SWIFT 3SKey support requires fintech 6.4 or higher.</p>
<div class="line-block">
<div class="line"><br /></div>
<p><strong>EBICS 2.4</strong>, <strong>EBICS 2.5</strong> and <strong>EBICS 3.0</strong> are supported. EBICS 3.0, the current
specification since December 2022, names what is exchanged with BTF instead of the
country-specific order type codes of EBICS 2.x. Many banks still run 2.4 or 2.5 in parallel.</p>
</div>
<p>We also recommend to consider the installation of the following modules:</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_ebics_oe</p>
<p>Required if you are running Odoo Enterprise</p>
<p>Cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_ebics_batch</p>
<p>This module adds a cron job for the automated import of EBICS files.</p>
<p>Cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_ebics_batch_payment</p>
<p>Recommended if you are using the Odoo Enterprise account_batch_payment module</p>
<p>Cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_usability</p>
<p>Recommended if you have multiple financial journals.
This module adds a number of accounting menu entries such as bank statement list view
which allows to see all statements downloaded via the ir.cron automated EBICS download.</p>
<p>Cf. <a class="reference external" href="https://github.com/OCA/account-financial-tools">https://github.com/OCA/account-financial-tools</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_ebics_payment_order</p>
<p>Required if you are using the OCA account_payment_order module.</p>
<p>Cf. <a class="reference external" href="https://github.com/OCA/bank-payment">https://github.com/OCA/bank-payment</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_ebics_oca_statement_import</p>
<p>Required if you are using the OCA Bank Statement import modules.</p>
<p><a class="reference external" href="https://github.com/OCA/bank-statement-import">https://github.com/OCA/bank-statement-import</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_statement_import_fr_cfonb</p>
<p>Required to handle french CFONB files.</p>
<p>Cf. <a class="reference external" href="https://github.com/OCA/l10n_france">https://github.com/OCA/l10n_france</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ul>
<li><p class="first">account_statement_import_camt</p>
<p>Required to handle camt.052 and camt.054 files.</p>
<p>Cf. <a class="reference external" href="https://github.com/OCA/bank-statement-import">https://github.com/OCA/bank-statement-import</a></p>
</li>
</ul>
<div class="line-block">
<div class="line"><br /></div>
</div>
<div class="section" id="fintech-license">
<h3>Fintech license</h3>
<p>If you have a valid fintech.ebics license, you should add the following
licensing parameters to the [options] section of the odoo server configuration file:</p>
<div class="section" id="what-travels-over-the-link">
<h2>What travels over the link</h2>
<ul class="simple">
<li>fintech_register_name</li>
<li><strong>Coming in:</strong> camt.053 for the end of day statement, camt.052 for intraday movements
where the bank offers them, and national formats such as the French CFONB.</li>
<li><strong>Going out:</strong> pain.001 for credit transfers and pain.008 for direct debits, generated by
Odoo from your payment batches.</li>
</ul>
<p>The name of the licensee.</p>
<ul class="simple">
<li>fintech_register_keycode</li>
</ul>
<p>The keycode of the licensed version.</p>
<div class="line-block">
<div class="line"><br /></div>
<div class="line">Example:</div>
<div class="line"><br /></div>
<p>We do not process MT940 statements: the format carries bank and country specific variations,
and the Odoo community stopped maintaining a general parser for it after Odoo 10. Where a
bank publishes camt.053 alongside it, which is now the usual case, that is the format to use.</p>
</div>
<div class="section" id="which-banks">
<h2>Which banks</h2>
<p>Any bank that publishes an EBICS access point can be connected. The standard is maintained by
EBICS SC, a company held by the German, French, Swiss and Austrian banking bodies
(DK, CFONB, SIX and PSA), and it is the standard corporate channel in those countries.</p>
<p>To check a specific bank before you start, joonis publishes a public directory at
<a class="reference external" href="https://www.joonis.de/en/fintech/banks/">joonis.de/en/fintech/banks</a>. Enter a BIC and it
returns the SEPA services the bank offers, the EBICS versions it supports and its Host-ID.</p>
<p>A bank missing from that directory is not a no: it is joonis' own list, not an official
register. Ask your bank whether it publishes an EBICS access point.</p>
</div>
<div class="section" id="what-it-costs">
<h2>What it costs</h2>
<p><strong>This module is free software</strong>, published under LGPL-3. There is no licence fee, no
subscription and no per-connection charge from Noviat.</p>
<p>It does however rely on the <a class="reference external" href="https://pypi.python.org/pypi/fintech">fintech</a> library from
joonis, and that library requires a <strong>commercial licence for production use</strong>: as soon as
you upload SEPA files with more than five transactions, retrieve statements older than the
last three days, or use the distributed signature. The licence is contracted directly with
joonis, not with Noviat.</p>
<p>joonis charges a one-off setup fee plus a monthly fee per EBICS user id. Current pricing is
published on
<a class="reference external" href="https://www.joonis.de/en/fintech/prices/">joonis.de</a>.</p>
<p>Your bank may also charge a subscription for the EBICS channel itself. It varies from one
bank to another and is billed by the bank, separately from anything on the Odoo side.</p>
</div>
<div class="section" id="requirements">
<h2>Requirements</h2>
<p>The module depends on two Python libraries:</p>
<ul class="simple">
<li><a class="reference external" href="https://pypi.python.org/pypi/fintech">fintech</a></li>
<li><a class="reference external" href="https://pypi.python.org/pypi/cryptography">cryptography</a></li>
</ul>
<p>Because the connection needs a Python library and your key files on the server, it runs on
<strong>Odoo.sh</strong> or on an <strong>on-premise</strong> installation.</p>
<p>The EBICS test mode for uploads requires fintech 4.3.4 or higher for EBICS 2.x and fintech
7.2.7 or higher for EBICS 3.0. SWIFT 3SKey support requires fintech 6.4 or higher, and the signature passphrase
fintech 7.3.1 or higher.</p>
<div class="section" id="fintech-licence">
<h3>Fintech licence</h3>
<p>With a fintech licence, add its parameters to the <tt class="docutils literal">[options]</tt> section of the Odoo server
configuration file:</p>
<ul class="simple">
<li><tt class="docutils literal">fintech_register_name</tt>: the name of the licensee;</li>
<li><tt class="docutils literal">fintech_register_keycode</tt>: the keycode of the licensed version.</li>
</ul>
<p>Example:</p>
<pre class="literal-block">
; fintech
fintech_register_name = MyCompany
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L
</pre>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>Cf. <a class="reference external" href="https://www.joonis.de/en/fintech/prices/">https://www.joonis.de/en/fintech/prices/</a></p>
<div class="line-block">
<div class="line"><br /></div>
</div>
</div>
<div class="section" id="companion-modules">
<h2>Companion modules</h2>
<p>From this repository:</p>
<ul class="simple">
<li><strong>EBICS - Odoo Enterprise Integration</strong> (<tt class="docutils literal">account_ebics_oe</tt>): required on Odoo
Enterprise; installed automatically.</li>
<li><strong>EBICS - Bank Statement Import (OCA)</strong> (<tt class="docutils literal">account_ebics_oca_statement_import</tt>):
matches the statements processed with the OCA statement import to the right bank
journal; installed automatically with <tt class="docutils literal">account_statement_import_file</tt>.</li>
<li><strong>EBICS - Scheduled File Import</strong> (<tt class="docutils literal">account_ebics_batch</tt>): downloads and processes the
files of every connection on a schedule.</li>
<li><strong>EBICS - Batch Payments (Odoo Enterprise)</strong> (<tt class="docutils literal">account_ebics_batch_payment</tt>): uploads
the batch payments of the Odoo Enterprise <tt class="docutils literal">account_batch_payment</tt> module.</li>
<li><strong>EBICS - Payment Orders (OCA)</strong> (<tt class="docutils literal">account_ebics_payment_order</tt>): uploads the payment
orders of the OCA <tt class="docutils literal">account_payment_order</tt> module
(<a class="reference external" href="https://github.com/OCA/bank-payment">OCA/bank-payment</a>).</li>
</ul>
<p>To process the downloaded statements, install the module of each format you receive:</p>
<ul class="simple">
<li><strong>camt.053, camt.052 and camt.054</strong>: <tt class="docutils literal">account_statement_import_camt</tt>
(<a class="reference external" href="https://github.com/OCA/bank-statement-import">OCA/bank-statement-import</a>). For
camt.053, the Odoo Enterprise <tt class="docutils literal">account_bank_statement_import_camt</tt> works too.</li>
<li><strong>French CFONB</strong>: <tt class="docutils literal">account_statement_import_fr_cfonb</tt>
(<a class="reference external" href="https://github.com/OCA/l10n-france">OCA/l10n-france</a>).</li>
</ul>
<p>Recommended with several financial journals: <tt class="docutils literal">account_usability</tt>
(<a class="reference external" href="https://github.com/OCA/account-financial-tools">OCA/account-financial-tools</a>), which adds
accounting menus such as a list of all bank statements, including those downloaded by the
scheduled import.</p>
</div>
<div class="section" id="getting-your-bank-online">
<h2>Getting your bank online</h2>
<p>The configuration on the Odoo side takes fifteen to thirty minutes. What sets the pace of a
project is the bank, and it is almost never for a technical reason:</p>
<ul class="simple">
<li><strong>The bank opens the access.</strong> You receive the host ID, the address of the access point,
your partner and user identifiers, and a letter carrying the hash values of the bank's keys.</li>
<li><strong>INI and HIA.</strong> Odoo generates your key pairs for signature, authentication and encryption,
sends the public keys to the bank and produces the initialisation letters, which you print,
sign and send. The bank compares them by hand with the keys it received online.</li>
<li><strong>HPB.</strong> Once the bank has activated your access, you retrieve its public keys and compare
their hash values with the letter it sent you. That comparison is what makes the channel
trustworthy.</li>
<li><strong>The first exchange.</strong> Statements come down first. Payments follow, as a test file where
the bank supports the test flag, otherwise as a real transfer of a small amount.</li>
</ul>
<p>Count in weeks per bank rather than days, and start the contract and the paperwork early.</p>
</div>
<div class="section" id="configuration">
<h2>Configuration</h2>
<p>Go to <strong>Settings &gt; Users</strong></p>
<p>Add the users that are authorised to maintain the EBICS configuration to the 'EBICS Manager' Group.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>Go to <strong>Accounting &gt; Configuration &gt; Miscellaneous &gt; EBICS &gt; EBICS File Formats</strong></p>
<p>Check if the EBICS File formats that you want to process in Odoo are defined.</p>
<p>Most commonly used formats for which support is available in Odoo should be there already.</p>
<p>Please open an issue on <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a> to report missing EBICS File Formats.</p>
<p>For File Formats of type 'Downloads' you can also specify a 'Download Process Method'.</p>
<p>This is the method that will be executed when hitting the 'Process' button on the downloaded file.</p>
<p>The following methods are currently available:</p>
<ul class="simple">
<li>cfonb120</li>
<li>camt.053</li>
<li>camt.052</li>
<li>camt.054</li>
</ul>
<p>All these methods require complimentary modules to be installed (cf. Installation section supra).</p>
<p>You'll get an error message when the required module is not installed on your Odoo instance.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>Go to <strong>Accounting &gt; Configuration &gt; Miscellaneous &gt; EBICS &gt; EBICS Configuration</strong></p>
<p>Configure your EBICS configuration according to the contract with your bank.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>The menus are those of Odoo Enterprise; on Odoo Community, the application is called
<em>Invoicing</em> instead of <em>Accounting</em>.</p>
<p><strong>Who may configure.</strong> In <em>Settings &gt; Users</em>, with the developer mode active, tick
<strong>EBICS Manager</strong> in the <em>Technical</em> section of the users who maintain the EBICS
configuration.</p>
<p><strong>File formats.</strong> In <em>Accounting &gt; Configuration &gt; EBICS &gt; EBICS File Formats</em>, check that the
formats you exchange with your banks are defined; the common ones are created at
installation. A missing format can be reported on
<a class="reference external" href="https://github.com/Noviat/account_ebics/issues">GitHub</a>.</p>
<p>A download format can carry a <strong>Download Process Method</strong>, run by the <em>Process</em> button of a
downloaded file: <tt class="docutils literal">camt.053</tt>, <tt class="docutils literal">camt.052</tt>, <tt class="docutils literal">camt.054</tt> and <tt class="docutils literal">cfonb120</tt>. Each needs the
module of its format (see Companion modules); Odoo tells you which one when it is missing.</p>
<p><strong>Bank connections.</strong> In <em>Accounting &gt; Configuration &gt; EBICS &gt; EBICS Configuration</em>, create one
connection per bank contract, with the identifiers your bank sent you.</p>
<img alt="A downloaded camt.053 statement file in Odoo, before processing" src="ebics_download.png" style="width: 100%;" />
</div>
<div class="section" id="usage">
<h2>Usage</h2>
<p>Go to <strong>Accounting &gt; Bank and Cash &gt; EBICS Processing</strong></p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>The <strong>EBICS Processing</strong> menu, in the top bar of the Accounting application, lists the
downloaded and uploaded files and offers manual downloads and uploads.</p>
<p>Downloaded files are processed into bank statements. Uploads are launched from the payment
batch or the payment order, with the format set in the configuration: on the payment
mode for a payment order, on the journal's payment method for a batch payment.</p>
<img alt="Uploading a pain.001 SEPA credit transfer file over EBICS 3.0, with the test mode option" src="ebics_upload.png" style="width: 100%;" />
</div>
<div class="section" id="diagnostics">
<h2>Diagnostics</h2>
<p>Add the following to your Odoo config file in order to diagnose
issues with the EBICS connection with your bank:</p>
<p>log_handler = fintech.ebics:DEBUG</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>To diagnose the connection with your bank, add this line to the Odoo server configuration
file:</p>
<pre class="literal-block">
log_handler = fintech.ebics:DEBUG
</pre>
<div class="section" id="ebics-return-codes">
<h3>EBICS Return Codes</h3>
<p>During the processing of your EBICS upload/download, your bank may return an Error Code, e.g.</p>
<p>EBICS Functional Error:
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)</p>
<p>A detailed explanation of the codes can be found on <a class="reference external" href="http://www.ebics.org">http://www.ebics.org</a>.
You can also find this information in the doc folder of this module (file EBICS_Annex1_ReturnCodes).</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<h3>EBICS return codes</h3>
<p>During an upload or a download, your bank may return an error code, for example:</p>
<pre class="literal-block">
EBICS Functional Error:
EBICS_NO_DOWNLOAD_DATA_AVAILABLE (code: 90005)
</pre>
<p>The codes are explained on <a class="reference external" href="https://www.ebics.org">ebics.org</a> and in the <tt class="docutils literal">doc</tt> folder of
this module (<tt class="docutils literal">EBICS_Annex1_ReturnCodes</tt>).</p>
</div>
<div class="section" id="electronic-distributed-signature-eds">
<h3>Electronic Distributed Signature (EDS)</h3>
<p>This is supported via external signing apps, e.g. BankingVEU:</p>
<p>Where your bank supports EBICS T, Odoo prepares the file and holds no signing credentials
at all: the payment is approved in your own signing application, which is what a segregation
of duties policy usually demands. Where it does not, which happens with German and Swiss
banks, the signing key sits on your Odoo server, and you can protect it with a separate
signature passphrase that is never stored and is asked for every signed transaction.</p>
<p>External signing apps include BankingVEU
(<a class="reference external" href="https://play.google.com/store/apps/details?id=subsembly.bankingveu">Android</a>,
<a class="reference external" href="https://apps.apple.com/de/app/bankingveu/id1578694190">iOS</a>).</p>
</div>
</div>
<div class="section" id="roadmap">
<h2>Roadmap</h2>
<ul class="simple">
<li><a class="reference external" href="https://play.google.com/store/apps/details?id=subsembly.bankingveu">https://play.google.com/store/apps/details?id=subsembly.bankingveu</a></li>
<li><a class="reference external" href="https://apps.apple.com/de/app/bankingveu/id1578694190">https://apps.apple.com/de/app/bankingveu/id1578694190</a></li>
<li>Import externally generated keys and certificates (today only the 3SKey signature
certificate).</li>
<li>Support the SWIFT 3SKey signing JavaScript library
(<a class="reference external" href="https://www2.swift.com/3skey/help/sconnect.html">SConnect</a>).</li>
</ul>
<p>Issues and pull requests are welcome on
<a class="reference external" href="https://github.com/Noviat/account_ebics">GitHub</a>.</p>
</div>
<div class="section" id="credits">
<h2>Credits</h2>
<p>This module is developed and maintained by <a class="reference external" href="https://www.noviat.com">Noviat</a>, Odoo
integrator in Belgium, specialised in accounting and finance since 2009.</p>
<p>We implement it, we configure the connection with your banks and we support you through the
first cycles. If you want help getting a bank online, tell us which banks you use:
<a class="reference external" href="https://www.noviat.com/ebics">https://www.noviat.com/ebics</a></p>
</div>
</div>
<div class="section" id="known-issues-roadmap">
<h2>Known Issues / Roadmap</h2>
<ul class="simple">
<li>The end user is currently not able to change his passphrases (only the users with 'EBICS Manager' rights can do so).</li>
<li>Add support to import externally generated keys &amp; certificates (currently only 3SKey signature certificate).</li>
<li>Add support for SWIFT 3SKey signing javascript lib (SConnect, cf <a class="reference external" href="https://www2.swift.com/3skey/help/sconnect.html">https://www2.swift.com/3skey/help/sconnect.html</a>).</li>
</ul>
</div>
</div>
</div>
</body>
</html>
+1 -1
View File
@@ -34,7 +34,7 @@
type="object"
class="oe_highlight"
groups="account_ebics.group_ebics_manager"
help="The EBICS configuration must be confirmed before it can used for bank transactions."
help="The EBICS configuration must be confirmed before it can be used for bank transactions."
/>
<field name="state" widget="statusbar" />
</header>
+1 -1
View File
@@ -49,7 +49,7 @@
string="Bank Keys Verified"
type="object"
class="oe_highlight"
help="EBICS Initialisation - Push this button when the public have been checked for consistency."
help="EBICS Initialisation - Push this button when the public bank keys have been checked for consistency."
/>
<button
name="change_passphrase"
+34 -33
View File
@@ -1,50 +1,51 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: https://www.gnu.org/licenses/agpl
:alt: License: AGPL-3
=============================
EBICS - Scheduled File Import
=============================
============================================
Module to enable batch import of EBICS files
============================================
**Your statements arrive without anyone asking for them.**
This module adds a cron job for the automated import of EBICS files.
This module adds a scheduled action that downloads and processes the EBICS files of every
confirmed connection. This is what turns EBICS from a manual download into something your
morning no longer depends on.
|
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics_batch/static/description/ebics_download.png
:alt: A downloaded camt.053 statement file in Odoo, ready to be processed
:width: 100%
A Log is created during the import in order to document import errors.
If errors have been detected, the Batch Import Log state is set to 'error'.
When all EBICS Files have been imported correctly, the Batch Import Log state is set to 'done'.
|
The user can reprocess the imported EBICS files in status 'draft' via the Log object 'REPROCESS' button until all errors have been cleared.
As an alternative, the user can force the Batch Import Log state to 'done'
(e.g. when the errors have been circumvented via manual encoding or the reprocessing of a single EBICS file).
|
Each run creates a **Batch Import Log**. When a file cannot be processed, the log is set to
*error* and records why; when every file is processed, it is set to *done*. From the log,
**Reprocess** retries the files still in draft until the errors are cleared. A log can also be
set to *done* by hand, for instance after a file was processed on its own or the movements
were entered manually.
Configuration
=============
Adapt the 'EBICS Batch Import' ir.cron job created during the module installation.
The scheduled action **EBICS Batch Import** is created **inactive** at installation, with a
daily interval. Activate it in *Settings > Technical > Automation > Scheduled Actions* (developer
mode), and adapt its interval if needed.
The cron job calls the following python method:
It calls the following method, on all confirmed connections::
|
model._batch_import()
.. code-block:: python
To limit it to some connections, pass their ids::
_batch_import()
model._batch_import(ebics_config_ids=[1, 3])
Part of the EBICS suite
=======================
The EBICS download will be performed on all confirmed EBICS connections.
This module extends **EBICS Banking Protocol** (``account_ebics``), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
https://github.com/Noviat/account_ebics
You can limit the automated operation to a subset of your EBICS connections via the ebics_config_ids parameter, e.g.
What EBICS is and what it changes, in plain language, with screen recordings of the flow:
https://www.noviat.com/ebics
|
.. code-block:: python
_batch_import(ebics_config_ids=[1,3])
Credits
=======
Developed and maintained by `Noviat <https://www.noviat.com>`_, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.
+3 -3
View File
@@ -2,13 +2,13 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "EBICS Files batch import",
"name": "EBICS - Scheduled File Import",
"version": "18.0.1.0.1",
"license": "AGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
"category": "Accounting & Finance",
"summary": "EBICS Files automated import and processing",
"summary": "Download and process your EBICS files automatically, on a schedule",
"depends": ["account_ebics"],
"data": [
"security/ir.model.access.csv",
@@ -17,5 +17,5 @@
"views/menu.xml",
],
"installable": True,
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
}
+228
View File
@@ -0,0 +1,228 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ebics_batch
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-10-11 20:25+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"Language-Team: German <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_batch/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__file_ids
msgid "Batch Import EBICS Files"
msgstr "Stapelimport EBICS-Dateien"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__note
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Batch Import Log"
msgstr "Stapelimportprotokoll"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__log_ids
msgid "Batch Import Log Items"
msgstr "Stapelimport-Protokollpositionen"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Batch Import Logs"
msgstr "Stapelimportprotokolle"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__log_id
msgid "Batch Object"
msgstr "Stapelobjekt"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__create_uid
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__create_date
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__date_from
msgid "Date From"
msgstr "Startdatum"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__date_to
msgid "Date To"
msgstr "Enddatum"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__display_name
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: account_ebics_batch
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log__state__done
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log_item__state__done
msgid "Done"
msgstr "Erledigt"
#. module: account_ebics_batch
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log__state__draft
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log_item__state__draft
msgid "Draft"
msgstr "Entwurf"
#. module: account_ebics_batch
#: model:ir.actions.server,name:account_ebics_batch.ir_cron_ebics_batch_import_ir_actions_server
msgid "EBICS Batch Import"
msgstr "EBICS-Stapelimport"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "EBICS Batch Import Log"
msgstr "EBICS-Stapelimportprotokoll"
#. module: account_ebics_batch
#: model:ir.actions.act_window,name:account_ebics_batch.ebics_batch_log_action
#: model:ir.ui.menu,name:account_ebics_batch.ebics_batch_log_menu
msgid "EBICS Batch Import Logs"
msgstr "EBICS-Stapelimportprotokolle"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__ebics_config_ids
msgid "EBICS Configurations"
msgstr "EBICS-Konfigurationen"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "EBICS Files"
msgstr "EBICS-Dateien"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__file_count
msgid "EBICS Files Count"
msgstr "Anzahl EBICS-Dateien"
#. module: account_ebics_batch
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log__state__error
#: model:ir.model.fields.selection,name:account_ebics_batch.selection__ebics_batch_log_item__state__error
msgid "Error"
msgstr "Fehler"
#. module: account_ebics_batch
#. odoo-python
#: code:addons/account_ebics_batch/models/ebics_batch_log.py:0
msgid "Error while processing EBICS connection '%s' :\n"
msgstr "Fehler bei der Verarbeitung der EBICS-Verbindung '%s':\n"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_search
msgid "Group By"
msgstr "Gruppieren nach"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__has_draft_files
msgid "Has Draft Files"
msgstr "Hat Entwurfsdateien"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__id
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__id
msgid "ID"
msgstr "ID"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__write_uid
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert von"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__write_date
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Mark Done"
msgstr "Als erledigt markieren"
#. module: account_ebics_batch
#. odoo-python
#: code:addons/account_ebics_batch/models/ebics_batch_log.py:0
msgid ""
"No EBICS UserID with stored passphrase found.\n"
"You should configure such a UserID for automated downloads."
msgstr ""
"Keine EBICS-Benutzer-ID mit gespeicherter Passphrase gefunden.\n"
"Sie sollten eine solche Benutzer-ID für automatische Downloads konfigurieren."
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__error_count
msgid "Number of Errors"
msgstr "Anzahl Fehler"
#. module: account_ebics_batch
#: model:ir.model,name:account_ebics_batch.model_ebics_batch_log_item
msgid "Object to store EBICS Batch Import Log Items"
msgstr ""
#. module: account_ebics_batch
#: model:ir.model,name:account_ebics_batch.model_ebics_batch_log
msgid "Object to store EBICS Batch Import Logs"
msgstr ""
#. module: account_ebics_batch
#. odoo-python
#: code:addons/account_ebics_batch/models/ebics_batch_log.py:0
msgid "Only log objects in state 'draft' can be deleted !"
msgstr "Nur Protokollobjekte im Status „Entwurf“ können gelöscht werden!"
#. module: account_ebics_batch
#. odoo-python
#: code:addons/account_ebics_batch/models/ebics_batch_log.py:0
msgid "Please set state to 'Confirm' and Reprocess this EBICS Import Log."
msgstr ""
"Bitte setzen Sie den Status auf „Bestätigen“ und verarbeiten Sie dieses "
"EBICS-Importprotokoll erneut."
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Reprocess"
msgstr "Erneut verarbeiten"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Reprocess 'draft' EBICS Files"
msgstr "EBICS-Dateien im Status „Entwurf“ erneut verarbeiten"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_search
msgid "Search EBICS Batch Import Log Files"
msgstr "EBICS-Stapelimportprotokolldateien suchen"
#. module: account_ebics_batch
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_form
msgid "Set to Draft"
msgstr "Auf Entwurf setzen"
#. module: account_ebics_batch
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log__state
#: model:ir.model.fields,field_description:account_ebics_batch.field_ebics_batch_log_item__state
#: model_terms:ir.ui.view,arch_db:account_ebics_batch.ebics_batch_log_view_search
msgid "State"
msgstr "Status"
Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

+35 -399
View File
@@ -1,406 +1,42 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/agpl"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a>
<div class="section" id="module-to-enable-batch-import-of-ebics-files">
<h1>Module to enable batch import of EBICS files</h1>
<p>This module adds a cron job for the automated import of EBICS files.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>A Log is created during the import in order to document import errors.
If errors have been detected, the Batch Import Log state is set to 'error'.</p>
<p>When all EBICS Files have been imported correctly, the Batch Import Log state is set to 'done'.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<p>The user can reprocess the imported EBICS files in status 'draft' via the Log object 'REPROCESS' button until all errors have been cleared.</p>
<p>As an alternative, the user can force the Batch Import Log state to 'done'
(e.g. when the errors have been circumvented via manual encoding or the reprocessing of a single EBICS file).</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-scheduled-file-import">
<h1>EBICS - Scheduled File Import</h1>
<p><strong>Your statements arrive without anyone asking for them.</strong></p>
<p>This module adds a scheduled action that downloads and processes the EBICS files of every
confirmed connection. This is what turns EBICS from a manual download into something your
morning no longer depends on.</p>
<img alt="A downloaded camt.053 statement file in Odoo, ready to be processed" src="ebics_download.png" style="width: 100%;" />
<p>Each run creates a <strong>Batch Import Log</strong>. When a file cannot be processed, the log is set to
<em>error</em> and records why; when every file is processed, it is set to <em>done</em>. From the log,
<strong>Reprocess</strong> retries the files still in draft until the errors are cleared. A log can also be
set to <em>done</em> by hand, for instance after a file was processed on its own or the movements
were entered manually.</p>
<div class="section" id="configuration">
<h2>Configuration</h2>
<p>Adapt the 'EBICS Batch Import' ir.cron job created during the module installation.</p>
<p>The cron job calls the following python method:</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<pre class="code python literal-block">
<span class="name">_batch_import</span><span class="punctuation">()</span>
<p>The scheduled action <strong>EBICS Batch Import</strong> is created <strong>inactive</strong> at installation, with a
daily interval. Activate it in <em>Settings &gt; Technical &gt; Automation &gt; Scheduled Actions</em> (developer
mode), and adapt its interval if needed.</p>
<p>It calls the following method, on all confirmed connections:</p>
<pre class="literal-block">
model._batch_import()
</pre>
<p>The EBICS download will be performed on all confirmed EBICS connections.</p>
<p>You can limit the automated operation to a subset of your EBICS connections via the ebics_config_ids parameter, e.g.</p>
<div class="line-block">
<div class="line"><br /></div>
</div>
<pre class="code python literal-block">
<span class="name">_batch_import</span><span class="punctuation">(</span><span class="name">ebics_config_ids</span><span class="operator">=</span><span class="punctuation">[</span><span class="literal number integer">1</span><span class="punctuation">,</span><span class="literal number integer">3</span><span class="punctuation">])</span>
<p>To limit it to some connections, pass their ids:</p>
<pre class="literal-block">
model._batch_import(ebics_config_ids=[1, 3])
</pre>
</div>
<div class="section" id="part-of-the-ebics-suite">
<h2>Part of the EBICS suite</h2>
<p>This module extends <strong>EBICS Banking Protocol</strong> (<tt class="docutils literal">account_ebics</tt>), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
<p>What EBICS is and what it changes, in plain language, with screen recordings of the flow:
<a class="reference external" href="https://www.noviat.com/ebics">https://www.noviat.com/ebics</a></p>
</div>
<div class="section" id="credits">
<h2>Credits</h2>
<p>Developed and maintained by <a class="reference external" href="https://www.noviat.com">Noviat</a>, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.</p>
</div>
</div>
</body>
</html>
+41 -13
View File
@@ -1,24 +1,52 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: https://www.gnu.org/licenses/lgpl
:alt: License: AGPL-3
========================================
EBICS - Batch Payments (Odoo Enterprise)
========================================
==============================
Upload Batch Payment via EBICS
==============================
**Send a payment batch to the bank from Odoo, without touching a file.**
This module allows to upload a Batch Payment to the bank via the EBICS protocol.
This module lets you upload an Odoo Enterprise batch payment to the bank over EBICS. You
validate the batch, Odoo generates the payment file in the format the bank expects and
submits it. Nothing is exported to a folder and nothing is uploaded to a portal, which also
means nothing can be altered on the way.
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics_batch_payment/static/description/ebics_upload.png
:alt: Uploading a payment file over EBICS, with the test mode option
:width: 100%
Installation
============
This module depends upon the following modules:
This module depends on:
- account_ebics (cf. https://github.com/Noviat/account_ebics)
- account_ebics_oe (cf. https://github.com/Noviat/account_ebics)
- account_batch_payment (Odoo Enterprise)
- ``account_ebics`` (https://github.com/Noviat/account_ebics);
- ``account_batch_payment`` (Odoo Enterprise).
Configuration
=============
On the bank journal, in the incoming and outgoing payment methods, show the optional
**EBICS File Format** column and set the format of each payment method, for example
pain.001 for SEPA credit transfers and pain.008 for direct debits. The formats offered are
those of the journal's confirmed EBICS connection.
Usage
=====
Create your Batch Payment and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the batch payment.
Validate the batch payment, then click **EBICS Upload**.
Part of the EBICS suite
=======================
This module extends **EBICS Banking Protocol** (``account_ebics``), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
https://github.com/Noviat/account_ebics
What EBICS is and what it changes, in plain language, with screen recordings of the flow:
https://www.noviat.com/ebics
Credits
=======
Developed and maintained by `Noviat <https://www.noviat.com>`_, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.
+3 -2
View File
@@ -2,7 +2,8 @@
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
{
"name": "Upload Batch Payment via EBICS",
"name": "EBICS - Batch Payments (Odoo Enterprise)",
"summary": "Send an Odoo Enterprise batch payment to the bank over EBICS",
"version": "18.0.1.2.0",
"license": "LGPL-3",
"author": "Noviat",
@@ -14,5 +15,5 @@
"views/account_batch_payment_views.xml",
],
"installable": True,
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
}
+73
View File
@@ -0,0 +1,73 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ebics_batch_payment
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-10-11 20:03+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"Language-Team: German <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_batch_payment/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
#: model:ir.model,name:account_ebics_batch_payment.model_account_batch_payment
msgid "Batch Payment"
msgstr "Sammelzahlung"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid "EBICS File Format"
msgstr "EBICS-Dateiformat"
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "EBICS Upload"
msgstr "EBICS-Upload"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid ""
"EBICS file format to pre-select when uploading a batch payment that uses "
"this payment method."
msgstr ""
"EBICS-Dateiformat, das beim Hochladen einer Stapelzahlung mit dieser "
"Zahlungsmethode vorausgewählt wird."
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
msgid "Hide Ebics Upload"
msgstr "EBICS-Upload ausblenden"
#. module: account_ebics_batch_payment
#: model:ir.model,name:account_ebics_batch_payment.model_account_journal
msgid "Journal"
msgstr "Journal"
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
msgid "No active EBICS configuration available for the selected bank."
msgstr "Keine aktive EBICS-Konfiguration für die ausgewählte Bank verfügbar."
#. module: account_ebics_batch_payment
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
msgid "Payment Methods"
msgstr "Zahlungsmethoden"
+2
View File
@@ -48,6 +48,8 @@ msgid ""
"EBICS file format to pre-select when uploading a batch payment that uses "
"this payment method."
msgstr ""
"Format de fichier EBICS à présélectionner lors du téléversement d'un "
"paiement groupé utilisant ce mode de paiement."
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
+2
View File
@@ -48,6 +48,8 @@ msgid ""
"EBICS file format to pre-select when uploading a batch payment that uses "
"this payment method."
msgstr ""
"EBICS-bestandsformaat dat vooraf wordt geselecteerd bij het uploaden van een"
" batchbetaling die deze betaalmethode gebruikt."
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

@@ -1,386 +1,43 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><object data="https://img.shields.io/badge/licence-LGPL--3-blue.svg" type="image/svg+xml">License: AGPL-3</object></a>
<div class="section" id="upload-batch-payment-via-ebics">
<h1>Upload Batch Payment via EBICS</h1>
<p>This module allows to upload a Batch Payment to the bank via the EBICS protocol.</p>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-batch-payments-odoo-enterprise">
<h1>EBICS - Batch Payments (Odoo Enterprise)</h1>
<p><strong>Send a payment batch to the bank from Odoo, without touching a file.</strong></p>
<p>This module lets you upload an Odoo Enterprise batch payment to the bank over EBICS. You
validate the batch, Odoo generates the payment file in the format the bank expects and
submits it. Nothing is exported to a folder and nothing is uploaded to a portal, which also
means nothing can be altered on the way.</p>
<img alt="Uploading a payment file over EBICS, with the test mode option" src="ebics_upload.png" style="width: 100%;" />
<div class="section" id="installation">
<h2>Installation</h2>
<p>This module depends upon the following modules:</p>
<p>This module depends on:</p>
<ul class="simple">
<li>account_ebics (cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>)</li>
<li>account_ebics_oe (cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>)</li>
<li>account_batch_payment (Odoo Enterprise)</li>
<li><tt class="docutils literal">account_ebics</tt> (<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>);</li>
<li><tt class="docutils literal">account_batch_payment</tt> (Odoo Enterprise).</li>
</ul>
</div>
<div class="section" id="configuration">
<h2>Configuration</h2>
<p>On the bank journal, in the incoming and outgoing payment methods, show the optional
<strong>EBICS File Format</strong> column and set the format of each payment method, for example
pain.001 for SEPA credit transfers and pain.008 for direct debits. The formats offered are
those of the journal's confirmed EBICS connection.</p>
</div>
<div class="section" id="usage">
<h2>Usage</h2>
<p>Create your Batch Payment and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the batch payment.</p>
<p>Validate the batch payment, then click <strong>EBICS Upload</strong>.</p>
</div>
<div class="section" id="part-of-the-ebics-suite">
<h2>Part of the EBICS suite</h2>
<p>This module extends <strong>EBICS Banking Protocol</strong> (<tt class="docutils literal">account_ebics</tt>), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
<p>What EBICS is and what it changes, in plain language, with screen recordings of the flow:
<a class="reference external" href="https://www.noviat.com/ebics">https://www.noviat.com/ebics</a></p>
</div>
<div class="section" id="credits">
<h2>Credits</h2>
<p>Developed and maintained by <a class="reference external" href="https://www.noviat.com">Noviat</a>, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.</p>
</div>
</div>
</div>
</body>
</html>
+29 -12
View File
@@ -1,17 +1,34 @@
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: https://www.gnu.org/licenses/lgpl
:alt: License: LGPL-3
===================================
EBICS - Bank Statement Import (OCA)
===================================
==========================================================
Deploy account_ebics module with OCA Bank Statement Import
==========================================================
**Each statement in the right journal, even when one file carries many.**
This module makes it possible to use the OCA account_statement_import wizard
in combination with 'account_ebics'.
This module connects the files downloaded over EBICS to the OCA bank statement import. When a
file holds the statements of several accounts or companies, each statement is created in the
right bank journal, including when the bank appends a currency code to the account number
(for example ``BE..EUR``). A file without transactions, or a statement already imported, gives
a warning on the EBICS file instead of a blocking error.
This module will be installed automatically when following modules are activated
on your odoo database :
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics_oca_statement_import/static/description/ebics_download.png
:alt: A downloaded camt.053 statement file in Odoo, ready to be processed
:width: 100%
- account_ebics
- account_statement_import_file
Installation
============
This module depends on:
- ``account_ebics`` (https://github.com/Noviat/account_ebics);
- ``account_statement_import_file`` (https://github.com/OCA/bank-statement-import).
It is installed automatically when both are installed, which is the case as soon as an OCA
statement import module such as ``account_statement_import_camt`` is installed.
Usage
=====
There is nothing to configure. Process a downloaded EBICS file, by hand with the **Process**
button or with the scheduled import: the bank statements are created in their journals. The
journal matching also applies to statements imported by hand with the OCA import.
@@ -2,8 +2,8 @@
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "account_ebics with OCA Bank Statement Imoort",
"summary": "Use OCA Bank Statement Import with account_ebics",
"name": "EBICS - Bank Statement Import (OCA)",
"summary": "Process EBICS statement files with the OCA bank statement import",
"version": "18.0.1.0.1",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -15,5 +15,5 @@
],
"installable": True,
"auto_install": True,
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
}
@@ -16,7 +16,7 @@ msgstr ""
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "Error detected while processing and EBICS File"
msgid "Error detected while processing an EBICS File"
msgstr ""
#. module: account_ebics_oca_statement_import
@@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ebics_oca_statement_import
#
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: German <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_oca_statement_import/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "Error detected while processing an EBICS File"
msgstr "Fehler bei der Verarbeitung einer EBICS-Datei festgestellt"
#. module: account_ebics_oca_statement_import
#: model:ir.model,name:account_ebics_oca_statement_import.model_account_statement_import
msgid "Import Bank Statement Files"
msgstr ""
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "Statement %(st_name)s dated %(date)s has already been imported."
msgstr "Kontoauszug %(st_name)s vom %(date)s wurde bereits importiert."
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any statement."
msgstr "Diese Datei enthält keinen Kontoauszug."
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any transaction."
msgstr "Diese Datei enthält keine Transaktionen."
#~ msgid "Error detected while processing and EBICS File"
#~ msgstr "Fehler bei der Verarbeitung einer EBICS-Datei festgestellt"
+10 -7
View File
@@ -3,14 +3,14 @@
# * account_ebics_oca_statement_import
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-31 23:02+0000\n"
"PO-Revision-Date: 2026-06-05 12:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: French <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_oca_statement_import/fr/>\n"
"Language: fr\n"
@@ -18,13 +18,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.15.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "Error detected while processing and EBICS File"
msgstr ""
msgid "Error detected while processing an EBICS File"
msgstr "Erreur détectée lors du traitement d'un fichier EBICS"
#. module: account_ebics_oca_statement_import
#: model:ir.model,name:account_ebics_oca_statement_import.model_account_statement_import
@@ -41,10 +41,13 @@ msgstr "Le relevé %(st_name)s daté du %(date)s a déjà été importé."
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any statement."
msgstr ""
msgstr "Ce fichier ne contient aucun relevé."
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any transaction."
msgstr "Ce fichier ne contient aucune transaction."
#~ msgid "Error detected while processing and EBICS File"
#~ msgstr "Erreur détectée lors du traitement d'un fichier EBICS"
+10 -7
View File
@@ -3,14 +3,14 @@
# * account_ebics_oca_statement_import
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-31 23:13+0000\n"
"PO-Revision-Date: 2026-06-05 12:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: Dutch <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_oca_statement_import/nl/>\n"
"Language: nl\n"
@@ -18,13 +18,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.15.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "Error detected while processing and EBICS File"
msgstr ""
msgid "Error detected while processing an EBICS File"
msgstr "Fout gedetecteerd bij het verwerken van een EBICS-bestand"
#. module: account_ebics_oca_statement_import
#: model:ir.model,name:account_ebics_oca_statement_import.model_account_statement_import
@@ -41,10 +41,13 @@ msgstr "Uittreksel %(st_name)s gedateerd %(date)s is al geïmporteerd."
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any statement."
msgstr ""
msgstr "Dit bestand bevat geen afschrift."
#. module: account_ebics_oca_statement_import
#. odoo-python
#: code:addons/account_ebics_oca_statement_import/wizards/account_statement_import.py:0
msgid "This file doesn't contain any transaction."
msgstr "Dit bestand bevat geen enkele transactie."
#~ msgid "Error detected while processing and EBICS File"
#~ msgstr "Fout gedetecteerd bij het verwerken van een EBICS-bestand"
Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

@@ -1,379 +1,27 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a>
<div class="section" id="deploy-account-ebics-module-with-oca-bank-statement-import">
<h1>Deploy account_ebics module with OCA Bank Statement Import</h1>
<p>This module makes it possible to use the OCA account_statement_import wizard
in combination with 'account_ebics'.</p>
<p>This module will be installed automatically when following modules are activated
on your odoo database :</p>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-bank-statement-import-oca">
<h1>EBICS - Bank Statement Import (OCA)</h1>
<p><strong>Each statement in the right journal, even when one file carries many.</strong></p>
<p>This module connects the files downloaded over EBICS to the OCA bank statement import. When a
file holds the statements of several accounts or companies, each statement is created in the
right bank journal, including when the bank appends a currency code to the account number
(for example <tt class="docutils literal"><span class="pre">BE..EUR</span></tt>). A file without transactions, or a statement already imported, gives
a warning on the EBICS file instead of a blocking error.</p>
<img alt="A downloaded camt.053 statement file in Odoo, ready to be processed" src="ebics_download.png" style="width: 100%;" />
<div class="section" id="installation">
<h2>Installation</h2>
<p>This module depends on:</p>
<ul class="simple">
<li>account_ebics</li>
<li>account_statement_import_file</li>
<li><tt class="docutils literal">account_ebics</tt> (<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>);</li>
<li><tt class="docutils literal">account_statement_import_file</tt> (<a class="reference external" href="https://github.com/OCA/bank-statement-import">https://github.com/OCA/bank-statement-import</a>).</li>
</ul>
<p>It is installed automatically when both are installed, which is the case as soon as an OCA
statement import module such as <tt class="docutils literal">account_statement_import_camt</tt> is installed.</p>
</div>
<div class="section" id="usage">
<h2>Usage</h2>
<p>There is nothing to configure. Process a downloaded EBICS file, by hand with the <strong>Process</strong>
button or with the scheduled import: the bank statements are created in their journals. The
journal matching also applies to statements imported by hand with the OCA import.</p>
</div>
</div>
</body>
</html>
@@ -60,7 +60,7 @@ class AccountStatementImport(models.TransientModel):
message = _("This file doesn't contain any transaction.")
if message:
log_msg = (
_("Error detected while processing and EBICS File")
_("Error detected while processing an EBICS File")
+ ":\n"
+ message
)
+28 -12
View File
@@ -1,16 +1,32 @@
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: https://www.gnu.org/licenses/lgpl
:alt: License: LGPL-3
===================================
EBICS - Odoo Enterprise Integration
===================================
==============================================
Deploy account_ebics module on Odoo Enterprise
==============================================
**Glue module. Install it and forget it.**
This module makes it possible to deploy the 'account_ebics'
module on Odoo Enterprise.
On Odoo Enterprise, this module places the **EBICS Processing** menu in the top bar of
the Accounting application.
This module will be installed automatically when following modules are activated
on your odoo database :
It is installed automatically when both of these modules are installed:
- account_ebics
- account_accountant
- ``account_ebics``;
- ``accountant`` (the Odoo Enterprise Accounting application).
There is nothing to configure.
Part of the EBICS suite
=======================
This module extends **EBICS Banking Protocol** (``account_ebics``), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
https://github.com/Noviat/account_ebics
What EBICS is and what it changes, in plain language, with screen recordings of the flow:
https://www.noviat.com/ebics
Credits
=======
Developed and maintained by `Noviat <https://www.noviat.com>`_, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.
+3 -3
View File
@@ -2,8 +2,8 @@
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
{
"name": "account_ebics on Odoo Enterprise",
"summary": "Deploy account_ebics module on Odoo Enterprise",
"name": "EBICS - Odoo Enterprise Integration",
"summary": "Place the EBICS menus in the Odoo Enterprise accounting application",
"version": "18.0.1.0.0",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -16,5 +16,5 @@
"data": ["views/account_ebics_menu.xml"],
"installable": True,
"auto_install": True,
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

+23 -375
View File
@@ -1,379 +1,27 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a>
<div class="section" id="deploy-account-ebics-module-on-odoo-enterprise">
<h1>Deploy account_ebics module on Odoo Enterprise</h1>
<p>This module makes it possible to deploy the 'account_ebics'
module on Odoo Enterprise.</p>
<p>This module will be installed automatically when following modules are activated
on your odoo database :</p>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-odoo-enterprise-integration">
<h1>EBICS - Odoo Enterprise Integration</h1>
<p><strong>Glue module. Install it and forget it.</strong></p>
<p>On Odoo Enterprise, this module places the <strong>EBICS Processing</strong> menu in the top bar of
the Accounting application.</p>
<p>It is installed automatically when both of these modules are installed:</p>
<ul class="simple">
<li>account_ebics</li>
<li>account_accountant</li>
<li><tt class="docutils literal">account_ebics</tt>;</li>
<li><tt class="docutils literal">accountant</tt> (the Odoo Enterprise Accounting application).</li>
</ul>
<p>There is nothing to configure.</p>
<div class="section" id="part-of-the-ebics-suite">
<h2>Part of the EBICS suite</h2>
<p>This module extends <strong>EBICS Banking Protocol</strong> (<tt class="docutils literal">account_ebics</tt>), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
<p>What EBICS is and what it changes, in plain language, with screen recordings of the flow:
<a class="reference external" href="https://www.noviat.com/ebics">https://www.noviat.com/ebics</a></p>
</div>
<div class="section" id="credits">
<h2>Credits</h2>
<p>Developed and maintained by <a class="reference external" href="https://www.noviat.com">Noviat</a>, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.</p>
</div>
</div>
</body>
</html>
+33 -13
View File
@@ -1,28 +1,48 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: https://www.gnu.org/licenses/lgpl
:alt: License: AGPL-3
============================
EBICS - Payment Orders (OCA)
============================
==============================
Upload Payment Order via EBICS
==============================
**Send an OCA payment order to the bank from Odoo, without touching a file.**
This module allows to upload a Payment Order to the bank via the EBICS protocol.
This module lets you upload a payment order of the OCA ``account_payment_order`` module to
the bank over EBICS.
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/18.0/account_ebics_payment_order/static/description/ebics_upload.png
:alt: Uploading a payment file over EBICS, with the test mode option
:width: 100%
Installation
============
This module depends upon the following modules (cf. apps.odoo.com):
This module depends on:
- account_ebics
- account_payment_order
- ``account_ebics`` (https://github.com/Noviat/account_ebics);
- ``account_payment_order`` (https://github.com/OCA/bank-payment).
Configuration
=============
Set the EBICS File Format on your Payment Modes.
Set the **EBICS File Format** on your payment modes.
Usage
=====
Create your Payment Order and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the payment order.
Create the payment order and generate the bank file, then upload it with the **EBICS
Upload** button of the payment order.
Part of the EBICS suite
=======================
This module extends **EBICS Banking Protocol** (``account_ebics``), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
https://github.com/Noviat/account_ebics
What EBICS is and what it changes, in plain language, with screen recordings of the flow:
https://www.noviat.com/ebics
Credits
=======
Developed and maintained by `Noviat <https://www.noviat.com>`_, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.
+3 -2
View File
@@ -2,7 +2,8 @@
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
{
"name": "Upload Payment Order via EBICS",
"name": "EBICS - Payment Orders (OCA)",
"summary": "Send an OCA payment order to the bank over EBICS",
"version": "18.0.1.2.0",
"license": "LGPL-3",
"author": "Noviat",
@@ -13,6 +14,6 @@
"views/account_payment_order_views.xml",
"views/account_payment_mode_views.xml",
],
"images": ["static/description/cover.png"],
"images": ["static/description/banner.png"],
"installable": True,
}
@@ -71,6 +71,6 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid ""
"This payment order doesn't contains attachments.\n"
"This payment order doesn't contain attachments.\n"
"Please generate first the Payment Order file."
msgstr ""
+94
View File
@@ -0,0 +1,94 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_ebics_payment_order
#
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: German <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_payment_order/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "EBICS File Format"
msgstr "EBICS-Dateiformat"
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "EBICS Upload"
msgstr "EBICS-Upload"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__hide_ebics_upload
msgid "Hide Ebics Upload"
msgstr "EBICS-Upload ausblenden"
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid "Missing EBICS File Format setting on your Payment Mode."
msgstr "Fehlende Einstellung für das EBICS-Dateiformat in Ihrem Zahlungsmodus."
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid "No active EBICS configuration available for the selected bank."
msgstr "Keine aktive EBICS-Konfiguration für die ausgewählte Bank verfügbar."
#. module: account_ebics_payment_order
#: model:ir.model,name:account_ebics_payment_order.model_account_payment_mode
msgid "Payment Modes"
msgstr ""
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
#: model:ir.model,name:account_ebics_payment_order.model_account_payment_order
msgid "Payment Order"
msgstr "Zahlungsauftrag"
#. module: account_ebics_payment_order
#: model:ir.model.fields,help:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "Select EBICS File Format to upload."
msgstr "Wählen Sie das hochzuladende EBICS-Dateiformat."
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid ""
"This payment order contains multiple attachments.\n"
"Please remove the obsolete attachments or upload the payment order file via "
"the EBICS Processing > EBICS Upload menu"
msgstr ""
"Dieser Zahlungsauftrag enthält mehrere Anhänge.\n"
"Bitte entfernen Sie die veralteten Anhänge oder laden Sie die "
"Zahlungsauftragsdatei über das Menü EBICS Processing > EBICS Upload hoch"
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid ""
"This payment order doesn't contain attachments.\n"
"Please generate first the Payment Order file."
msgstr ""
"Dieser Zahlungsauftrag enthält keine Anhänge.\n"
"Bitte erstellen Sie zuerst die Zahlungsauftragsdatei."
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
#~ msgstr ""
#~ "Dieser Zahlungsauftrag enthält keine Anhänge.\n"
#~ "Bitte erstellen Sie zuerst die Zahlungsauftragsdatei."
+19 -6
View File
@@ -3,13 +3,13 @@
# * account_ebics_payment_order
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-08-10 02:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: French <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_payment_order/fr/>\n"
"Language: fr\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2026.7.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
@@ -41,6 +41,7 @@ msgstr "Masquer le téléversement Ebics"
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid "Missing EBICS File Format setting on your Payment Mode."
msgstr ""
"Paramètre de format de fichier EBICS manquant sur votre mode de paiement."
#. module: account_ebics_payment_order
#. odoo-python
@@ -64,7 +65,7 @@ msgstr "Ordre de paiement"
#. module: account_ebics_payment_order
#: model:ir.model.fields,help:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "Select EBICS File Format to upload."
msgstr ""
msgstr "Sélectionnez le format de fichier EBICS à téléverser."
#. module: account_ebics_payment_order
#. odoo-python
@@ -74,11 +75,23 @@ msgid ""
"Please remove the obsolete attachments or upload the payment order file via "
"the EBICS Processing > EBICS Upload menu"
msgstr ""
"Cet ordre de paiement contient plusieurs pièces jointes.\n"
"Veuillez supprimer les pièces jointes obsolètes ou téléverser le fichier de "
"l'ordre de paiement via le menu EBICS Processing > EBICS Upload"
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid ""
"This payment order doesn't contains attachments.\n"
"This payment order doesn't contain attachments.\n"
"Please generate first the Payment Order file."
msgstr ""
"Cet ordre de paiement ne contient aucune pièce jointe.\n"
"Veuillez d'abord générer le fichier de l'ordre de paiement."
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
#~ msgstr ""
#~ "Cet ordre de paiement ne contient aucune pièce jointe.\n"
#~ "Veuillez d'abord générer le fichier de l'ordre de paiement."
+21 -8
View File
@@ -3,13 +3,13 @@
# * account_ebics_payment_order
#
# Weblate Translation Memory <noreply-mt-weblate-translation-memory@weblate.org>, 2026.
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2026-08-10 02:54+0000\n"
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
"memory@weblate.org>\n"
"PO-Revision-Date: 2026-10-11 21:14+0000\n"
"Last-Translator: Jérémy Didderen <jeremy.didderen@noviat.com>\n"
"Language-Team: Dutch <https://translation.noviat.io/projects/noviat-generic-"
"account-ebics-v18/account_ebics_payment_order/nl/>\n"
"Language: nl\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.7.1\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
@@ -40,13 +40,14 @@ msgstr "Ebics-upload verbergen"
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid "Missing EBICS File Format setting on your Payment Mode."
msgstr ""
msgstr "Instelling EBICS-bestandsformaat ontbreekt op uw betaalwijze."
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid "No active EBICS configuration available for the selected bank."
msgstr "Geen actieve EBICS-configuratie beschikbaar voor de geselecteerde bank."
msgstr ""
"Geen actieve EBICS-configuratie beschikbaar voor de geselecteerde bank."
#. module: account_ebics_payment_order
#: model:ir.model,name:account_ebics_payment_order.model_account_payment_mode
@@ -63,7 +64,7 @@ msgstr "Betalingsopdracht"
#. module: account_ebics_payment_order
#: model:ir.model.fields,help:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "Select EBICS File Format to upload."
msgstr ""
msgstr "Selecteer het te uploaden EBICS-bestandsformaat."
#. module: account_ebics_payment_order
#. odoo-python
@@ -73,11 +74,23 @@ msgid ""
"Please remove the obsolete attachments or upload the payment order file via "
"the EBICS Processing > EBICS Upload menu"
msgstr ""
"Deze betalingsopdracht bevat meerdere bijlagen.\n"
"Verwijder de verouderde bijlagen of upload het betalingsopdrachtbestand via "
"het menu EBICS Processing > EBICS Upload"
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
msgid ""
"This payment order doesn't contains attachments.\n"
"This payment order doesn't contain attachments.\n"
"Please generate first the Payment Order file."
msgstr ""
"Deze betalingsopdracht bevat geen bijlagen.\n"
"Genereer eerst het betalingsopdrachtbestand."
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
#~ msgstr ""
#~ "Deze betalingsopdracht bevat geen bijlagen.\n"
#~ "Genereer eerst het betalingsopdrachtbestand."
@@ -39,7 +39,7 @@ class AccountPaymentOrder(models.Model):
if not attach:
raise UserError(
self.env._(
"This payment order doesn't contains attachments."
"This payment order doesn't contain attachments."
"\nPlease generate first the Payment Order file."
)
)
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

@@ -1,389 +1,39 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><object data="https://img.shields.io/badge/licence-LGPL--3-blue.svg" type="image/svg+xml">License: AGPL-3</object></a>
<div class="section" id="upload-payment-order-via-ebics">
<h1>Upload Payment Order via EBICS</h1>
<p>This module allows to upload a Payment Order to the bank via the EBICS protocol.</p>
<!-- Generated from README.rst: edit the README, not this file. -->
<div class="section" id="ebics-payment-orders-oca">
<h1>EBICS - Payment Orders (OCA)</h1>
<p><strong>Send an OCA payment order to the bank from Odoo, without touching a file.</strong></p>
<p>This module lets you upload a payment order of the OCA <tt class="docutils literal">account_payment_order</tt> module to
the bank over EBICS.</p>
<img alt="Uploading a payment file over EBICS, with the test mode option" src="ebics_upload.png" style="width: 100%;" />
<div class="section" id="installation">
<h2>Installation</h2>
<p>This module depends upon the following modules (cf. apps.odoo.com):</p>
<p>This module depends on:</p>
<ul class="simple">
<li>account_ebics</li>
<li>account_payment_order</li>
<li><tt class="docutils literal">account_ebics</tt> (<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>);</li>
<li><tt class="docutils literal">account_payment_order</tt> (<a class="reference external" href="https://github.com/OCA/bank-payment">https://github.com/OCA/bank-payment</a>).</li>
</ul>
</div>
<div class="section" id="configuration">
<h2>Configuration</h2>
<p>Set the EBICS File Format on your Payment Modes.</p>
<p>Set the <strong>EBICS File Format</strong> on your payment modes.</p>
</div>
<div class="section" id="usage">
<h2>Usage</h2>
<p>Create your Payment Order and generate the bank file.
Upload the generated file via the 'EBICS Upload' button on the payment order.</p>
<p>Create the payment order and generate the bank file, then upload it with the <strong>EBICS
Upload</strong> button of the payment order.</p>
</div>
<div class="section" id="part-of-the-ebics-suite">
<h2>Part of the EBICS suite</h2>
<p>This module extends <strong>EBICS Banking Protocol</strong> (<tt class="docutils literal">account_ebics</tt>), the EBICS implementation
for Odoo developed and maintained by Noviat. Install it first:
<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a></p>
<p>What EBICS is and what it changes, in plain language, with screen recordings of the flow:
<a class="reference external" href="https://www.noviat.com/ebics">https://www.noviat.com/ebics</a></p>
</div>
<div class="section" id="credits">
<h2>Credits</h2>
<p>Developed and maintained by <a class="reference external" href="https://www.noviat.com">Noviat</a>, Odoo integrator in Belgium,
specialised in accounting and finance since 2009. We configure the connection with your banks
and support you through the first cycles.</p>
</div>
</div>
</div>
</body>
</html>