Merge pull request #113 from Noviat/19.0
Syncing from upstream Noviat/account_ebics (19.0)
No files matched your search
@@ -15,11 +15,11 @@ Available addons
|
||||
----------------
|
||||
addon | version | maintainers | summary
|
||||
--- | --- | --- | ---
|
||||
[account_ebics](account_ebics/) | 19.0.1.2.0 | | EBICS banking protocol
|
||||
[account_ebics_batch](account_ebics_batch/) | 19.0.1.0.1 | | EBICS Files automated import and processing
|
||||
[account_ebics_batch_payment](account_ebics_batch_payment/) | 19.0.1.2.0 | | Upload Batch Payment via EBICS
|
||||
[account_ebics_oe](account_ebics_oe/) | 19.0.1.0.0 | | Deploy account_ebics module on Odoo Enterprise
|
||||
[account_ebics_payment_order](account_ebics_payment_order/) | 19.0.1.0.0 | | Upload Payment Order via EBICS
|
||||
[account_ebics](account_ebics/) | 19.0.1.3.0 | | Download bank statements and upload payment files directly from Odoo, using the European EBICS standard
|
||||
[account_ebics_batch](account_ebics_batch/) | 19.0.1.0.1 | | Download and process your EBICS files automatically, on a schedule
|
||||
[account_ebics_batch_payment](account_ebics_batch_payment/) | 19.0.1.3.0 | | Send an Odoo Enterprise batch payment to the bank over EBICS
|
||||
[account_ebics_oe](account_ebics_oe/) | 19.0.1.0.0 | | Place the EBICS menus in the Odoo Enterprise accounting application
|
||||
[account_ebics_payment_order](account_ebics_payment_order/) | 19.0.1.1.0 | | Send an OCA payment order to the bank over EBICS
|
||||
|
||||
[//]: # (end addons)
|
||||
|
||||
|
||||
@@ -1,219 +1,261 @@
|
||||
.. 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/19.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 - 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*, add the users who maintain the EBICS
|
||||
configuration to the **EBICS Manager** group.
|
||||
|
||||
|
|
||||
**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/19.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/19.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
|
||||
@@ -1,5 +1,8 @@
|
||||
import functools
|
||||
import logging
|
||||
|
||||
from odoo import api
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
@@ -7,3 +10,22 @@ try:
|
||||
from . import wizards
|
||||
except Exception:
|
||||
_logger.warning("Import Error, check if fintech lib has been installed")
|
||||
|
||||
|
||||
@functools.cached_property
|
||||
def neutralized(self):
|
||||
return bool(
|
||||
self["ir.config_parameter"].sudo().get_param("database.is_neutralized")
|
||||
or self["ir.ui.view"]
|
||||
.sudo()
|
||||
.search_count(
|
||||
[
|
||||
("key", "in", ("web.neutralize_banner", "website.neutralize_ribbon")),
|
||||
("active", "=", True),
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
api.Environment.neutralized = neutralized
|
||||
neutralized.__set_name__(api.Environment, "neutralized")
|
||||
@@ -2,8 +2,10 @@
|
||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "EBICS banking protocol",
|
||||
"version": "19.0.1.2.0",
|
||||
"name": "EBICS Banking Protocol",
|
||||
"summary": "Download bank statements and upload payment "
|
||||
"files directly from Odoo, using the European EBICS standard",
|
||||
"version": "19.0.1.3.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -29,5 +31,5 @@
|
||||
"cryptography",
|
||||
]
|
||||
},
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
@@ -25,6 +25,13 @@ msgstr ""
|
||||
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid ""
|
||||
"'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
|
||||
msgid "'Date From' as entered in the download wizard."
|
||||
@@ -370,6 +377,7 @@ msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
|
||||
@@ -621,9 +629,8 @@ msgid "EBICS Mark as Downloaded"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid "EBICS OrderID: %s"
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
@@ -859,6 +866,11 @@ msgid ""
|
||||
"statement."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
@@ -1236,6 +1248,11 @@ msgstr ""
|
||||
msgid "Origin: %s"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
|
||||
msgid "Pain State"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/models/ebics_userid.py:0
|
||||
@@ -1640,6 +1657,11 @@ msgstr ""
|
||||
msgid "Upload Only"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
|
||||
msgid "Uploaded"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
|
||||
msgid ""
|
||||
|
||||
@@ -8,7 +8,7 @@ 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-04 12:17+0000\n"
|
||||
"PO-Revision-Date: 2026-10-11 20:00+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"Language-Team: French <https://translation.noviat.io/projects/noviat-generic-"
|
||||
@@ -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 5.15.1\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
@@ -32,6 +32,14 @@ msgstr " a"
|
||||
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
|
||||
msgstr "%(st_cnt)s relevé bancaire%(sp)s été importé : "
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid "'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
|
||||
msgstr ""
|
||||
"'%(filename)s' a été téléversé via EBICS (ID de commande : "
|
||||
"%(order_number)s)."
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
|
||||
msgid "'Date From' as entered in the download wizard."
|
||||
@@ -394,6 +402,7 @@ msgstr "Téléchargement et envoi"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
|
||||
@@ -672,10 +681,9 @@ msgid "EBICS Mark as Downloaded"
|
||||
msgstr "Marquer EBICS comme téléchargé"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid "EBICS OrderID: %s"
|
||||
msgstr "ID de commande EBICS : %s"
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "ID de commande EBICS"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_config__ebics_partner
|
||||
@@ -918,6 +926,11 @@ msgstr ""
|
||||
"'Traiter'. Par exemple, spécifiez camt.053 pour importer un fichier camt.053 "
|
||||
"et créer un relevé bancaire."
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
@@ -1325,6 +1338,11 @@ msgstr ""
|
||||
msgid "Origin: %s"
|
||||
msgstr "Origine : %s"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
|
||||
msgid "Pain State"
|
||||
msgstr "Statut pain"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/models/ebics_userid.py:0
|
||||
@@ -1784,6 +1802,11 @@ msgstr "Format de téléversement"
|
||||
msgid "Upload Only"
|
||||
msgstr "Téléversement uniquement"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
|
||||
msgid "Uploaded"
|
||||
msgstr "Téléchargé"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
|
||||
msgid ""
|
||||
@@ -1923,5 +1946,8 @@ msgstr ""
|
||||
"erreur urlopen :\n"
|
||||
" url '%(url)s' - %(val)s"
|
||||
|
||||
#~ msgid "EBICS OrderID: %s"
|
||||
#~ msgstr "ID de commande EBICS : %s"
|
||||
|
||||
#~ msgid "Group By"
|
||||
#~ msgstr "Regrouper par"
|
||||
@@ -8,7 +8,7 @@ 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-04 12:17+0000\n"
|
||||
"PO-Revision-Date: 2026-10-11 20:00+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"Language-Team: Dutch <https://translation.noviat.io/projects/noviat-generic-"
|
||||
@@ -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 5.15.1\n"
|
||||
"X-Generator: Weblate 2026.9.1\n"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
@@ -32,6 +32,12 @@ msgstr " heeft"
|
||||
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
|
||||
msgstr "%(st_cnt)s rekeninguittreksel%(sp)s geïmporteerd: "
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid "'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
|
||||
msgstr "'%(filename)s' is geüpload via EBICS (order-ID: %(order_number)s)."
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
|
||||
msgid "'Date From' as entered in the download wizard."
|
||||
@@ -393,6 +399,7 @@ msgstr "Downloaden en uploaden"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
|
||||
@@ -671,10 +678,9 @@ msgid "EBICS Mark as Downloaded"
|
||||
msgstr "EBICS markeren als gedownload"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
msgid "EBICS OrderID: %s"
|
||||
msgstr "EBICS-order-ID: %s"
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "EBICS-order-ID"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_config__ebics_partner
|
||||
@@ -918,6 +924,11 @@ msgstr ""
|
||||
"knop 'Verwerken'. Geef bijv. camt.053 op om een camt.053-bestand te "
|
||||
"importeren en een rekeninguittreksel aan te maken."
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
|
||||
@@ -1325,6 +1336,11 @@ msgstr ""
|
||||
msgid "Origin: %s"
|
||||
msgstr "Oorsprong: %s"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
|
||||
msgid "Pain State"
|
||||
msgstr "Pain-status"
|
||||
|
||||
#. module: account_ebics
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics/models/ebics_userid.py:0
|
||||
@@ -1780,6 +1796,11 @@ msgstr "Uploadformaat"
|
||||
msgid "Upload Only"
|
||||
msgstr "Alleen uploaden"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
|
||||
msgid "Uploaded"
|
||||
msgstr "Geupload"
|
||||
|
||||
#. module: account_ebics
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
|
||||
msgid ""
|
||||
@@ -1916,5 +1937,8 @@ msgstr ""
|
||||
"urlopen-fout:\n"
|
||||
" url '%(url)s' - %(val)s"
|
||||
|
||||
#~ msgid "EBICS OrderID: %s"
|
||||
#~ msgstr "EBICS-order-ID: %s"
|
||||
|
||||
#~ msgid "Group By"
|
||||
#~ msgstr "Groepeer op"
|
||||
@@ -70,6 +70,12 @@ class EbicsFile(models.Model):
|
||||
readonly=True,
|
||||
)
|
||||
note = fields.Text(string="Notes")
|
||||
ebics_order_number = fields.Char(string="EBICS OrderID", readonly=True)
|
||||
pain_state = fields.Selection(
|
||||
[("draft", "Draft"), ("uploaded", "Uploaded"), ("error", "Error")],
|
||||
default="draft",
|
||||
readonly=True,
|
||||
)
|
||||
note_process = fields.Text(
|
||||
string="Process Notes",
|
||||
readonly=True,
|
||||
|
||||
|
After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 19 KiB |
@@ -1,573 +1,226 @@
|
||||
<!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 - 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 > 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 > Configuration > Miscellaneous > EBICS > 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 > Configuration > Miscellaneous > EBICS > 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 > Users</em>, add the users who maintain the EBICS
|
||||
configuration to the <strong>EBICS Manager</strong> group.</p>
|
||||
<p><strong>File formats.</strong> In <em>Accounting > Configuration > EBICS > 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 > Configuration > EBICS > 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 > Bank and Cash > 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 & 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>
|
||||
@@ -135,6 +135,10 @@
|
||||
string="Upload Date"
|
||||
invisible="context.get('ebics_mode') == 'down'"
|
||||
/>
|
||||
<field
|
||||
name="ebics_order_number"
|
||||
invisible="context.get('ebics_mode') != 'up'"
|
||||
/>
|
||||
<field name="user_id" />
|
||||
<field name="ebics_userid_id" />
|
||||
</group>
|
||||
|
||||
@@ -406,11 +406,9 @@ class EbicsXfer(models.TransientModel):
|
||||
self.note += self.env._(
|
||||
"EBICS File has been uploaded (OrderID %s).", OrderID
|
||||
)
|
||||
ef_note = self.env._("EBICS OrderID: %s", OrderID)
|
||||
ef_note = ""
|
||||
if self.env.context.get("origin"):
|
||||
ef_note += "\n" + self.env._(
|
||||
"Origin: %s", self.env.context["origin"]
|
||||
)
|
||||
ef_note = self.env._("Origin: %s", self.env.context["origin"])
|
||||
suffix = self.format_id.suffix
|
||||
fn = self.upload_fname
|
||||
if suffix and not fn.endswith(suffix):
|
||||
@@ -430,6 +428,9 @@ class EbicsXfer(models.TransientModel):
|
||||
}
|
||||
self._update_ef_vals(ef_vals)
|
||||
ebics_file = self.env["ebics.file"].create(ef_vals)
|
||||
ebics_file.write(
|
||||
{"ebics_order_number": OrderID, "pain_state": "uploaded"}
|
||||
)
|
||||
|
||||
except EbicsFunctionalError:
|
||||
e = exc_info()
|
||||
@@ -458,16 +459,32 @@ class EbicsXfer(models.TransientModel):
|
||||
OrderID = self.ebics_config_id._get_order_number()
|
||||
self.ebics_config_id.sudo()._update_order_number(OrderID)
|
||||
|
||||
ebics_file and self._payment_order_postprocess(ebics_file)
|
||||
ebics_file and self._payment_upload_postprocess(ebics_file)
|
||||
return ebics_file
|
||||
|
||||
def _payment_order_postprocess(self, ebics_file):
|
||||
active_model = self.env.context.get("model")
|
||||
def _payment_upload_postprocess(self, ebics_file):
|
||||
ctx = self.env.context
|
||||
active_model = ctx.get("model")
|
||||
active_id = ctx.get("id")
|
||||
payment_doc = None
|
||||
if active_model == "account.payment.order":
|
||||
order = self.env["account.payment.order"].browse(
|
||||
self.env.context["active_id"]
|
||||
payment_doc = self.env["account.payment.order"].browse(active_id)
|
||||
payment_doc.generated2uploaded()
|
||||
elif active_model == "account.batch.payment":
|
||||
payment_doc = self.env["account.batch.payment"].browse(active_id)
|
||||
if payment_doc:
|
||||
payment_doc.ebics_file_id = ebics_file
|
||||
self._payment_upload_chatter_message(payment_doc, ebics_file)
|
||||
|
||||
def _payment_upload_chatter_message(self, payment_doc, ebics_file):
|
||||
payment_doc.message_post(
|
||||
body=self.env._(
|
||||
"'%(filename)s' has been uploaded via EBICS"
|
||||
" (OrderID: %(order_number)s).",
|
||||
filename=ebics_file.name,
|
||||
order_number=ebics_file.ebics_order_number,
|
||||
)
|
||||
order.generated2uploaded()
|
||||
)
|
||||
|
||||
def _setup_client(self):
|
||||
self.ebics_config_id._check_ebics_keys()
|
||||
|
||||
@@ -1,50 +1,51 @@
|
||||
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/lgpl
|
||||
:alt: License: LGPL-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/19.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.
|
||||
@@ -2,13 +2,13 @@
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "EBICS Files batch import",
|
||||
"name": "EBICS - Scheduled File Import",
|
||||
"version": "19.0.1.0.1",
|
||||
"license": "LGPL-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",
|
||||
@@ -16,5 +16,5 @@
|
||||
"views/ebics_batch_log_views.xml",
|
||||
"views/menu.xml",
|
||||
],
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
# 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.
|
||||
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-10-11 21:18+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-v19/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 durch"
|
||||
|
||||
#. 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: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 durch"
|
||||
|
||||
#. 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"
|
||||
|
After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 19 KiB |
@@ -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/lgpl"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--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 > Technical > Automation > 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>
|
||||
@@ -1,24 +1,52 @@
|
||||
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/lgpl
|
||||
:alt: License: LGPL-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/19.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.
|
||||
@@ -2,8 +2,9 @@
|
||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "Upload Batch Payment via EBICS",
|
||||
"version": "19.0.1.2.0",
|
||||
"name": "EBICS - Batch Payments (Odoo Enterprise)",
|
||||
"summary": "Send an Odoo Enterprise batch payment to the bank over EBICS",
|
||||
"version": "19.0.1.3.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -13,5 +14,5 @@
|
||||
"views/account_journal_views.xml",
|
||||
"views/account_batch_payment_views.xml",
|
||||
],
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
@@ -28,12 +28,22 @@ msgstr ""
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: 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 ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
|
||||
@@ -41,6 +51,16 @@ msgstr ""
|
||||
msgid "EBICS Upload"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
|
||||
msgid "EBICS Upload Status"
|
||||
msgstr ""
|
||||
|
||||
#. 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
|
||||
@@ -49,6 +69,11 @@ msgid ""
|
||||
"this payment method."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
|
||||
msgid "Ebics File Format"
|
||||
@@ -83,3 +108,13 @@ msgstr ""
|
||||
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
|
||||
msgid "Payment Methods"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload Status"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,128 @@
|
||||
# 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.
|
||||
# Jérémy Didderen <jeremy.didderen@noviat.com>, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 19.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-10-11 21:19+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-v19/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_batch_payment__display_name
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__display_name
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__display_name
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Anzeigename"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "EBICS-Konfiguration"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: 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
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "EBICS-Auftrags-ID"
|
||||
|
||||
#. 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,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "EBICS-Upload-Datei"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
|
||||
msgid "EBICS Upload Status"
|
||||
msgstr "EBICS-Upload-Status"
|
||||
|
||||
#. 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_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "EBICS-Upload-Info"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
|
||||
msgid "Ebics File Format"
|
||||
msgstr "EBICS-Dateiformat"
|
||||
|
||||
#. 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.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__id
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__id
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__id
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. 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"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload File"
|
||||
msgstr "Datei hochladen"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload Status"
|
||||
msgstr "Upload-Status"
|
||||
@@ -3,14 +3,14 @@
|
||||
# * account_ebics_batch_payment
|
||||
#
|
||||
# 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-06 10:54+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"PO-Revision-Date: 2026-10-11 21:18+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-v19/account_ebics_batch_payment/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_batch_payment
|
||||
#. odoo-python
|
||||
@@ -35,12 +35,22 @@ msgstr "Paiement par lot"
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "Configuration EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: 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 "Format de fichier EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "ID de commande EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
|
||||
@@ -48,6 +58,16 @@ msgstr "Format de fichier EBICS"
|
||||
msgid "EBICS Upload"
|
||||
msgstr "Téléversement EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "Fichier de téléversement EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
|
||||
msgid "EBICS Upload Status"
|
||||
msgstr "Statut du téléversement EBICS"
|
||||
|
||||
#. 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
|
||||
@@ -55,11 +75,18 @@ 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_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "Infos de téléversement EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
|
||||
msgid "Ebics File Format"
|
||||
msgstr ""
|
||||
msgstr "Format de fichier EBICS"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
|
||||
@@ -91,3 +118,13 @@ msgstr ""
|
||||
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
|
||||
msgid "Payment Methods"
|
||||
msgstr "Modes de paiement"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload File"
|
||||
msgstr "Charger un fichier"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload Status"
|
||||
msgstr "Statut du téléversement"
|
||||
@@ -3,14 +3,14 @@
|
||||
# * account_ebics_batch_payment
|
||||
#
|
||||
# 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-06 10:54+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"PO-Revision-Date: 2026-10-11 21:18+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-v19/account_ebics_batch_payment/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_batch_payment
|
||||
#. odoo-python
|
||||
@@ -35,12 +35,22 @@ msgstr "Batchbetaling"
|
||||
msgid "Display Name"
|
||||
msgstr "Weergavenaam"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "EBICS-configuratie"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: 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-bestandsformaat"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "EBICS-order-ID"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
|
||||
@@ -48,6 +58,16 @@ msgstr "EBICS-bestandsformaat"
|
||||
msgid "EBICS Upload"
|
||||
msgstr "EBICS-upload"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "EBICS-uploadbestand"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
|
||||
msgid "EBICS Upload Status"
|
||||
msgstr "EBICS-uploadstatus"
|
||||
|
||||
#. 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
|
||||
@@ -55,11 +75,18 @@ 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_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "EBICS-uploadinfo"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
|
||||
msgid "Ebics File Format"
|
||||
msgstr ""
|
||||
msgstr "EBICS-bestandsformaat"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
|
||||
@@ -91,3 +118,13 @@ msgstr ""
|
||||
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
|
||||
msgid "Payment Methods"
|
||||
msgstr "Betaalmethodes"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload File"
|
||||
msgstr "Bestand uploaden"
|
||||
|
||||
#. module: account_ebics_batch_payment
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
|
||||
msgid "Upload Status"
|
||||
msgstr "Uploadstatus"
|
||||
@@ -8,19 +8,47 @@ from odoo.exceptions import UserError
|
||||
class AccountBatchPayment(models.Model):
|
||||
_inherit = "account.batch.payment"
|
||||
|
||||
ebics_config_id = fields.Many2one(
|
||||
comodel_name="ebics.config",
|
||||
related="journal_id.ebics_config_id",
|
||||
)
|
||||
ebics_file_id = fields.Many2one(
|
||||
comodel_name="ebics.file",
|
||||
string="EBICS Upload File",
|
||||
readonly=True,
|
||||
)
|
||||
ebics_pain_state = fields.Selection(
|
||||
related="ebics_file_id.pain_state",
|
||||
string="EBICS Upload Status",
|
||||
)
|
||||
ebics_order_number = fields.Char(
|
||||
related="ebics_file_id.ebics_order_number",
|
||||
string="EBICS OrderID",
|
||||
)
|
||||
hide_ebics_upload = fields.Boolean(
|
||||
compute="_compute_hide_ebics_upload", default=True
|
||||
)
|
||||
|
||||
@api.depends("journal_id.ebics_config_id", "file_generation_enabled", "state")
|
||||
@api.depends(
|
||||
"journal_id.ebics_config_id",
|
||||
"file_generation_enabled",
|
||||
"state",
|
||||
"ebics_file_id.pain_state",
|
||||
)
|
||||
def _compute_hide_ebics_upload(self):
|
||||
for rec in self:
|
||||
rec.hide_ebics_upload = (
|
||||
not rec.journal_id.ebics_config_id
|
||||
self.env.neutralized
|
||||
or not rec.journal_id.ebics_config_id
|
||||
or not rec.file_generation_enabled
|
||||
or rec.state != "sent"
|
||||
or rec.ebics_pain_state == "uploaded"
|
||||
)
|
||||
|
||||
def export_batch_payment(self):
|
||||
self.filtered("ebics_file_id").write({"ebics_file_id": False})
|
||||
return super().export_batch_payment()
|
||||
|
||||
def ebics_upload(self):
|
||||
self.ensure_one()
|
||||
ctx = self.env.context.copy()
|
||||
@@ -38,6 +66,8 @@ class AccountBatchPayment(models.Model):
|
||||
"default_upload_data": self.export_file,
|
||||
"default_upload_fname": self.export_filename,
|
||||
"origin": origin,
|
||||
"model": self._name,
|
||||
"id": self.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
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"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></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>
|
||||
@@ -14,6 +14,19 @@
|
||||
class="oe_highlight"
|
||||
/>
|
||||
</button>
|
||||
<notebook position="inside">
|
||||
<page
|
||||
string="EBICS upload info"
|
||||
name="ebics"
|
||||
invisible="not ebics_config_id"
|
||||
>
|
||||
<group name="ebics_info">
|
||||
<field name="ebics_file_id" string="Upload File" />
|
||||
<field name="ebics_pain_state" string="Upload Status" />
|
||||
<field name="ebics_order_number" />
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -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.
|
||||
@@ -2,8 +2,8 @@
|
||||
# License LGPL-3 or later (https://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": "19.0.1.0.0",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -15,5 +15,5 @@
|
||||
],
|
||||
"data": ["views/account_ebics_menu.xml"],
|
||||
"auto_install": True,
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
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-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>
|
||||
@@ -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/19.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.
|
||||
@@ -2,8 +2,9 @@
|
||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "Upload Payment Order via EBICS",
|
||||
"version": "19.0.1.0.0",
|
||||
"name": "EBICS - Payment Orders (OCA)",
|
||||
"summary": "Send an OCA payment order to the bank over EBICS",
|
||||
"version": "19.0.1.1.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -13,5 +14,5 @@
|
||||
"views/account_payment_order_views.xml",
|
||||
"views/account_payment_mode_views.xml",
|
||||
],
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
@@ -19,11 +19,21 @@ msgstr ""
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr ""
|
||||
|
||||
#. 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 ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
|
||||
@@ -31,6 +41,16 @@ msgstr ""
|
||||
msgid "EBICS Upload"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr ""
|
||||
|
||||
#. 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"
|
||||
@@ -86,3 +106,8 @@ msgid ""
|
||||
"This payment order doesn't contains attachments.\n"
|
||||
"Please generate first the Payment Order file."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "Upload File"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,125 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * 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 19.0+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2026-10-11 21:19+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-v19/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__display_name
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Anzeigename"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "EBICS-Konfiguration"
|
||||
|
||||
#. 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
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "EBICS-Auftrags-ID"
|
||||
|
||||
#. 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__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "EBICS-Upload-Datei"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "EBICS-Upload-Info"
|
||||
|
||||
#. 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
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__id
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. 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 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."
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "Upload File"
|
||||
msgstr "Datei hochladen"
|
||||
@@ -3,11 +3,12 @@
|
||||
# * 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-07-25 17:54+0000\n"
|
||||
"PO-Revision-Date: 2026-10-11 21:18+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"Language-Team: French <https://translation.noviat.io/projects/noviat-generic-"
|
||||
@@ -17,7 +18,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__display_name
|
||||
@@ -25,11 +26,21 @@ msgstr ""
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "Configuration EBICS"
|
||||
|
||||
#. 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 "Format de fichier EBICS"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "ID de commande EBICS"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
|
||||
@@ -37,6 +48,16 @@ msgstr "Format de fichier EBICS"
|
||||
msgid "EBICS Upload"
|
||||
msgstr "Téléversement EBICS"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "Fichier de téléversement EBICS"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "Infos de téléversement EBICS"
|
||||
|
||||
#. 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"
|
||||
@@ -53,6 +74,7 @@ msgstr "Identifiant"
|
||||
#: 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
|
||||
@@ -76,7 +98,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
|
||||
@@ -86,6 +108,9 @@ 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
|
||||
@@ -94,3 +119,10 @@ 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."
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "Upload File"
|
||||
msgstr "Téléverser le fichier"
|
||||
@@ -3,11 +3,12 @@
|
||||
# * 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-07-25 17:54+0000\n"
|
||||
"PO-Revision-Date: 2026-10-11 21:18+0000\n"
|
||||
"Last-Translator: Weblate Translation Memory <noreply-mt-weblate-translation-"
|
||||
"memory@weblate.org>\n"
|
||||
"Language-Team: Dutch <https://translation.noviat.io/projects/noviat-generic-"
|
||||
@@ -17,7 +18,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__display_name
|
||||
@@ -25,11 +26,21 @@ msgstr ""
|
||||
msgid "Display Name"
|
||||
msgstr "Weergavenaam"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
|
||||
msgid "EBICS Config"
|
||||
msgstr "EBICS-configuratie"
|
||||
|
||||
#. 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-bestandsformaat"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
|
||||
msgid "EBICS OrderID"
|
||||
msgstr "EBICS-order-ID"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#. odoo-python
|
||||
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
|
||||
@@ -37,6 +48,16 @@ msgstr "EBICS-bestandsformaat"
|
||||
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__ebics_file_id
|
||||
msgid "EBICS Upload File"
|
||||
msgstr "EBICS-uploadbestand"
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "EBICS upload info"
|
||||
msgstr "EBICS-uploadinfo"
|
||||
|
||||
#. 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"
|
||||
@@ -52,7 +73,7 @@ msgstr "ID"
|
||||
#. 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
|
||||
@@ -76,7 +97,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
|
||||
@@ -86,6 +107,9 @@ 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
|
||||
@@ -94,3 +118,10 @@ 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."
|
||||
|
||||
#. module: account_ebics_payment_order
|
||||
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
|
||||
msgid "Upload File"
|
||||
msgstr "Bestand uploaden"
|
||||
@@ -8,6 +8,19 @@ from odoo.exceptions import UserError
|
||||
class AccountPaymentOrder(models.Model):
|
||||
_inherit = "account.payment.order"
|
||||
|
||||
ebics_config_id = fields.Many2one(
|
||||
comodel_name="ebics.config",
|
||||
related="journal_id.ebics_config_id",
|
||||
)
|
||||
ebics_file_id = fields.Many2one(
|
||||
comodel_name="ebics.file",
|
||||
string="EBICS Upload File",
|
||||
readonly=True,
|
||||
)
|
||||
ebics_order_number = fields.Char(
|
||||
related="ebics_file_id.ebics_order_number",
|
||||
string="EBICS OrderID",
|
||||
)
|
||||
hide_ebics_upload = fields.Boolean(
|
||||
compute="_compute_hide_ebics_upload", default=True
|
||||
)
|
||||
@@ -16,7 +29,9 @@ class AccountPaymentOrder(models.Model):
|
||||
def _compute_hide_ebics_upload(self):
|
||||
for rec in self:
|
||||
rec.hide_ebics_upload = (
|
||||
not rec.journal_id.ebics_config_id or rec.state != "generated"
|
||||
self.env.neutralized
|
||||
or not rec.journal_id.ebics_config_id
|
||||
or rec.state != "generated"
|
||||
)
|
||||
|
||||
def ebics_upload(self):
|
||||
@@ -29,7 +44,8 @@ class AccountPaymentOrder(models.Model):
|
||||
)
|
||||
ctx.update(
|
||||
{
|
||||
"active_model": self._name,
|
||||
"model": self._name,
|
||||
"id": self.id,
|
||||
"default_format_id": ebics_format_id.id,
|
||||
}
|
||||
)
|
||||
|
||||
|
After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 310 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
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>
|
||||
@@ -17,6 +17,18 @@
|
||||
class="oe_highlight"
|
||||
/>
|
||||
</button>
|
||||
<notebook position="inside">
|
||||
<page
|
||||
string="EBICS upload info"
|
||||
name="ebics"
|
||||
invisible="not ebics_config_id"
|
||||
>
|
||||
<group name="ebics_info">
|
||||
<field name="ebics_file_id" string="Upload File" />
|
||||
<field name="ebics_order_number" />
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||