Merge pull request #110 from Noviat/17.0
Syncing from upstream Noviat/account_ebics (17.0)
No files matched your search
@@ -15,12 +15,12 @@ Available addons
|
||||
----------------
|
||||
addon | version | maintainers | summary
|
||||
--- | --- | --- | ---
|
||||
[account_ebics](account_ebics/) | 17.0.1.3.0 | | EBICS banking protocol
|
||||
[account_ebics_batch](account_ebics_batch/) | 17.0.1.0.1 | | EBICS Files automated import and processing
|
||||
[account_ebics_batch_payment](account_ebics_batch_payment/) | 17.0.1.1.0 | | Upload Batch Payment via EBICS
|
||||
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 17.0.1.0.1 | | Use OCA Bank Statement Import with account_ebics
|
||||
[account_ebics_oe](account_ebics_oe/) | 17.0.1.0.0 | | Deploy account_ebics module on Odoo Enterprise
|
||||
[account_ebics_payment_order](account_ebics_payment_order/) | 17.0.1.2.0 | | Upload Payment Order via EBICS
|
||||
[account_ebics](account_ebics/) | 17.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/) | 17.0.1.0.1 | | Download and process your EBICS files automatically, on a schedule
|
||||
[account_ebics_batch_payment](account_ebics_batch_payment/) | 17.0.1.1.0 | | Send an Odoo Enterprise batch payment to the bank over EBICS
|
||||
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 17.0.1.0.1 | | Process EBICS statement files with the OCA bank statement import
|
||||
[account_ebics_oe](account_ebics_oe/) | 17.0.1.0.0 | | Place the EBICS menus in the Odoo Enterprise accounting application
|
||||
[account_ebics_payment_order](account_ebics_payment_order/) | 17.0.1.2.0 | | Send an OCA payment order to the bank over EBICS
|
||||
|
||||
[//]: # (end addons)
|
||||
|
||||
|
||||
@@ -1,219 +1,266 @@
|
||||
.. 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/17.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 odoo server configuration file:
|
||||
With a fintech licence, add its parameters to the ``[options]`` section of the Odoo server
|
||||
configuration file:
|
||||
|
||||
- ``fintech_register_name``: the name of the licensee;
|
||||
- ``fintech_register_keycode``: the keycode of the licensed version.
|
||||
|
||||
- fintech_register_name
|
||||
|
||||
The name of the licensee.
|
||||
|
||||
- fintech_register_keycode
|
||||
|
||||
The keycode of the licensed version.
|
||||
|
||||
|
|
||||
| Example:
|
||||
|
|
||||
|
||||
::
|
||||
Example::
|
||||
|
||||
; fintech
|
||||
fintech_register_name = MyCompany
|
||||
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L
|
||||
|
||||
|
|
||||
Companion modules
|
||||
=================
|
||||
|
||||
Cf. https://www.joonis.de/en/fintech/prices/
|
||||
From this repository:
|
||||
|
||||
|
|
||||
- **EBICS - Odoo Enterprise Integration** (``account_ebics_oe``): required on Odoo
|
||||
Enterprise; installed automatically.
|
||||
- **EBICS - Bank Statement Import (OCA)** (``account_ebics_oca_statement_import``):
|
||||
matches the statements processed with the OCA statement import to the right bank
|
||||
journal; installed automatically with ``account_statement_import_file``.
|
||||
- **EBICS - Scheduled File Import** (``account_ebics_batch``): downloads and processes the
|
||||
files of every connection on a schedule.
|
||||
- **EBICS - Batch Payments (Odoo Enterprise)** (``account_ebics_batch_payment``): uploads
|
||||
the batch payments of the Odoo Enterprise ``account_batch_payment`` module.
|
||||
- **EBICS - Payment Orders (OCA)** (``account_ebics_payment_order``): uploads the payment
|
||||
orders of the OCA ``account_payment_order`` module
|
||||
(`OCA/bank-payment <https://github.com/OCA/bank-payment>`_).
|
||||
|
||||
To process the downloaded statements, install the module of each format you receive:
|
||||
|
||||
- **camt.053, camt.052 and camt.054**: ``account_statement_import_camt``
|
||||
(`OCA/bank-statement-import <https://github.com/OCA/bank-statement-import>`_). For
|
||||
camt.053, the Odoo Enterprise ``account_bank_statement_import_camt`` works too.
|
||||
- **French CFONB**: ``account_statement_import_fr_cfonb``
|
||||
(`OCA/l10n-france <https://github.com/OCA/l10n-france>`_).
|
||||
|
||||
Recommended with several financial journals: ``account_usability``
|
||||
(`OCA/account-financial-tools <https://github.com/OCA/account-financial-tools>`_), which adds
|
||||
accounting menus such as a list of all bank statements, including those downloaded by the
|
||||
scheduled import.
|
||||
|
||||
Getting your bank online
|
||||
========================
|
||||
|
||||
The configuration on the Odoo side takes fifteen to thirty minutes. What sets the pace of a
|
||||
project is the bank, and it is almost never for a technical reason:
|
||||
|
||||
- **The bank opens the access.** You receive the host ID, the address of the access point,
|
||||
your partner and user identifiers, and a letter carrying the hash values of the bank's keys.
|
||||
- **INI and HIA.** Odoo generates your key pairs for signature, authentication and encryption,
|
||||
sends the public keys to the bank and produces the initialisation letters, which you print,
|
||||
sign and send. The bank compares them by hand with the keys it received online.
|
||||
- **HPB.** Once the bank has activated your access, you retrieve its public keys and compare
|
||||
their hash values with the letter it sent you. That comparison is what makes the channel
|
||||
trustworthy.
|
||||
- **The first exchange.** Statements come down first. Payments follow, as a test file where
|
||||
the bank supports the test flag, otherwise as a real transfer of a small amount.
|
||||
|
||||
Count in weeks per bank rather than days, and start the contract and the paperwork early.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to **Settings > Users**
|
||||
The menus are those of Odoo Enterprise; on Odoo Community, the application is called
|
||||
*Invoicing* instead of *Accounting*.
|
||||
|
||||
Add the users that are authorised to maintain the EBICS configuration to the 'EBICS Manager' Group.
|
||||
**Who may configure.** In *Settings > Users*, with the developer mode active, tick
|
||||
**EBICS Manager** in the *Technical* section of the users who maintain the EBICS
|
||||
configuration.
|
||||
|
||||
|
|
||||
**File formats.** In *Accounting > Configuration > EBICS > EBICS File Formats*, check that the
|
||||
formats you exchange with your banks are defined; the common ones are created at
|
||||
installation. A missing format can be reported on
|
||||
`GitHub <https://github.com/Noviat/account_ebics/issues>`_.
|
||||
|
||||
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS File Formats**
|
||||
A download format can carry a **Download Process Method**, run by the *Process* button of a
|
||||
downloaded file: ``camt.053``, ``camt.052``, ``camt.054`` and ``cfonb120``. Each needs the
|
||||
module of its format (see Companion modules); Odoo tells you which one when it is missing.
|
||||
|
||||
Check if the EBICS File formats that you want to process in Odoo are defined.
|
||||
**Bank connections.** In *Accounting > Configuration > EBICS > EBICS Configuration*, create one
|
||||
connection per bank contract, with the identifiers your bank sent you.
|
||||
|
||||
Most commonly used formats for which support is available in Odoo should be there already.
|
||||
|
||||
Please open an issue on https://github.com/Noviat/account_ebics to report missing EBICS File Formats.
|
||||
|
||||
For File Formats of type 'Downloads' you can also specify a 'Download Process Method'.
|
||||
|
||||
This is the method that will be executed when hitting the 'Process' button on the downloaded file.
|
||||
|
||||
The following methods are currently available:
|
||||
|
||||
- cfonb120
|
||||
- camt.053
|
||||
- camt.052
|
||||
- camt.054
|
||||
|
||||
All these methods require complimentary modules to be installed (cf. Installation section supra).
|
||||
|
||||
You'll get an error message when the required module is not installed on your Odoo instance.
|
||||
|
||||
|
|
||||
|
||||
Go to **Accounting > Configuration > Miscellaneous > EBICS > EBICS Configuration**
|
||||
|
||||
Configure your EBICS configuration according to the contract with your bank.
|
||||
|
||||
|
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/17.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. For a payment order, the format comes from its payment mode;
|
||||
for a batch payment, Odoo proposes the connection's upload format and you confirm it in
|
||||
the upload window.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/17.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
|
||||
@@ -2,7 +2,11 @@
|
||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "EBICS banking protocol",
|
||||
"name": "EBICS Banking Protocol",
|
||||
"summary": (
|
||||
"Download bank statements and upload payment files directly from Odoo, "
|
||||
"using the European EBICS standard"
|
||||
),
|
||||
"version": "17.0.1.3.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
@@ -30,5 +34,5 @@
|
||||
"cryptography",
|
||||
]
|
||||
},
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
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,231 @@
|
||||
<!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.16: http://docutils.sourceforge.net/" />
|
||||
<title>README.rst</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
|
||||
See http://docutils.sf.net/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 odoo server configuration file:</p>
|
||||
<div class="section" id="what-travels-over-the-link">
|
||||
<h2>What travels over the link</h2>
|
||||
<ul class="simple">
|
||||
<li>fintech_register_name</li>
|
||||
<li><strong>Coming in:</strong> camt.053 for the end of day statement, camt.052 for intraday movements
|
||||
where the bank offers them, and national formats such as the French CFONB.</li>
|
||||
<li><strong>Going out:</strong> pain.001 for credit transfers and pain.008 for direct debits, generated by
|
||||
Odoo from your payment batches.</li>
|
||||
</ul>
|
||||
<p>The name of the licensee.</p>
|
||||
<ul class="simple">
|
||||
<li>fintech_register_keycode</li>
|
||||
</ul>
|
||||
<p>The keycode of the licensed version.</p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
<div class="line">Example:</div>
|
||||
<div class="line"><br /></div>
|
||||
<p>We do not process MT940 statements: the format carries bank and country specific variations,
|
||||
and the Odoo community stopped maintaining a general parser for it after Odoo 10. Where a
|
||||
bank publishes camt.053 alongside it, which is now the usual case, that is the format to use.</p>
|
||||
</div>
|
||||
<div class="section" id="which-banks">
|
||||
<h2>Which banks</h2>
|
||||
<p>Any bank that publishes an EBICS access point can be connected. The standard is maintained by
|
||||
EBICS SC, a company held by the German, French, Swiss and Austrian banking bodies
|
||||
(DK, CFONB, SIX and PSA), and it is the standard corporate channel in those countries.</p>
|
||||
<p>To check a specific bank before you start, joonis publishes a public directory at
|
||||
<a class="reference external" href="https://www.joonis.de/en/fintech/banks/">joonis.de/en/fintech/banks</a>. Enter a BIC and it
|
||||
returns the SEPA services the bank offers, the EBICS versions it supports and its Host-ID.</p>
|
||||
<p>A bank missing from that directory is not a no: it is joonis' own list, not an official
|
||||
register. Ask your bank whether it publishes an EBICS access point.</p>
|
||||
</div>
|
||||
<div class="section" id="what-it-costs">
|
||||
<h2>What it costs</h2>
|
||||
<p><strong>This module is free software</strong>, published under LGPL-3. There is no licence fee, no
|
||||
subscription and no per-connection charge from Noviat.</p>
|
||||
<p>It does however rely on the <a class="reference external" href="https://pypi.python.org/pypi/fintech">fintech</a> library from
|
||||
joonis, and that library requires a <strong>commercial licence for production use</strong>: as soon as
|
||||
you upload SEPA files with more than five transactions, retrieve statements older than the
|
||||
last three days, or use the distributed signature. The licence is contracted directly with
|
||||
joonis, not with Noviat.</p>
|
||||
<p>joonis charges a one-off setup fee plus a monthly fee per EBICS user id. Current pricing is
|
||||
published on
|
||||
<a class="reference external" href="https://www.joonis.de/en/fintech/prices/">joonis.de</a>.</p>
|
||||
<p>Your bank may also charge a subscription for the EBICS channel itself. It varies from one
|
||||
bank to another and is billed by the bank, separately from anything on the Odoo side.</p>
|
||||
</div>
|
||||
<div class="section" id="requirements">
|
||||
<h2>Requirements</h2>
|
||||
<p>The module depends on two Python libraries:</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://pypi.python.org/pypi/fintech">fintech</a></li>
|
||||
<li><a class="reference external" href="https://pypi.python.org/pypi/cryptography">cryptography</a></li>
|
||||
</ul>
|
||||
<p>Because the connection needs a Python library and your key files on the server, it runs on
|
||||
<strong>Odoo.sh</strong> or on an <strong>on-premise</strong> installation.</p>
|
||||
<p>The EBICS test mode for uploads requires fintech 4.3.4 or higher for EBICS 2.x and fintech
|
||||
7.2.7 or higher for EBICS 3.0. SWIFT 3SKey support requires fintech 6.4 or higher, and the signature passphrase
|
||||
fintech 7.3.1 or higher.</p>
|
||||
<div class="section" id="fintech-licence">
|
||||
<h3>Fintech licence</h3>
|
||||
<p>With a fintech licence, add its parameters to the <tt class="docutils literal">[options]</tt> section of the Odoo server
|
||||
configuration file:</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal">fintech_register_name</tt>: the name of the licensee;</li>
|
||||
<li><tt class="docutils literal">fintech_register_keycode</tt>: the keycode of the licensed version.</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<pre class="literal-block">
|
||||
; fintech
|
||||
fintech_register_name = MyCompany
|
||||
fintech_register_keycode = AB1CD-E2FG-3H-IJ4K-5L
|
||||
</pre>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
<p>Cf. <a class="reference external" href="https://www.joonis.de/en/fintech/prices/">https://www.joonis.de/en/fintech/prices/</a></p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="companion-modules">
|
||||
<h2>Companion modules</h2>
|
||||
<p>From this repository:</p>
|
||||
<ul class="simple">
|
||||
<li><strong>EBICS - Odoo Enterprise Integration</strong> (<tt class="docutils literal">account_ebics_oe</tt>): required on Odoo
|
||||
Enterprise; installed automatically.</li>
|
||||
<li><strong>EBICS - Bank Statement Import (OCA)</strong> (<tt class="docutils literal">account_ebics_oca_statement_import</tt>):
|
||||
matches the statements processed with the OCA statement import to the right bank
|
||||
journal; installed automatically with <tt class="docutils literal">account_statement_import_file</tt>.</li>
|
||||
<li><strong>EBICS - Scheduled File Import</strong> (<tt class="docutils literal">account_ebics_batch</tt>): downloads and processes the
|
||||
files of every connection on a schedule.</li>
|
||||
<li><strong>EBICS - Batch Payments (Odoo Enterprise)</strong> (<tt class="docutils literal">account_ebics_batch_payment</tt>): uploads
|
||||
the batch payments of the Odoo Enterprise <tt class="docutils literal">account_batch_payment</tt> module.</li>
|
||||
<li><strong>EBICS - Payment Orders (OCA)</strong> (<tt class="docutils literal">account_ebics_payment_order</tt>): uploads the payment
|
||||
orders of the OCA <tt class="docutils literal">account_payment_order</tt> module
|
||||
(<a class="reference external" href="https://github.com/OCA/bank-payment">OCA/bank-payment</a>).</li>
|
||||
</ul>
|
||||
<p>To process the downloaded statements, install the module of each format you receive:</p>
|
||||
<ul class="simple">
|
||||
<li><strong>camt.053, camt.052 and camt.054</strong>: <tt class="docutils literal">account_statement_import_camt</tt>
|
||||
(<a class="reference external" href="https://github.com/OCA/bank-statement-import">OCA/bank-statement-import</a>). For
|
||||
camt.053, the Odoo Enterprise <tt class="docutils literal">account_bank_statement_import_camt</tt> works too.</li>
|
||||
<li><strong>French CFONB</strong>: <tt class="docutils literal">account_statement_import_fr_cfonb</tt>
|
||||
(<a class="reference external" href="https://github.com/OCA/l10n-france">OCA/l10n-france</a>).</li>
|
||||
</ul>
|
||||
<p>Recommended with several financial journals: <tt class="docutils literal">account_usability</tt>
|
||||
(<a class="reference external" href="https://github.com/OCA/account-financial-tools">OCA/account-financial-tools</a>), which adds
|
||||
accounting menus such as a list of all bank statements, including those downloaded by the
|
||||
scheduled import.</p>
|
||||
</div>
|
||||
<div class="section" id="getting-your-bank-online">
|
||||
<h2>Getting your bank online</h2>
|
||||
<p>The configuration on the Odoo side takes fifteen to thirty minutes. What sets the pace of a
|
||||
project is the bank, and it is almost never for a technical reason:</p>
|
||||
<ul class="simple">
|
||||
<li><strong>The bank opens the access.</strong> You receive the host ID, the address of the access point,
|
||||
your partner and user identifiers, and a letter carrying the hash values of the bank's keys.</li>
|
||||
<li><strong>INI and HIA.</strong> Odoo generates your key pairs for signature, authentication and encryption,
|
||||
sends the public keys to the bank and produces the initialisation letters, which you print,
|
||||
sign and send. The bank compares them by hand with the keys it received online.</li>
|
||||
<li><strong>HPB.</strong> Once the bank has activated your access, you retrieve its public keys and compare
|
||||
their hash values with the letter it sent you. That comparison is what makes the channel
|
||||
trustworthy.</li>
|
||||
<li><strong>The first exchange.</strong> Statements come down first. Payments follow, as a test file where
|
||||
the bank supports the test flag, otherwise as a real transfer of a small amount.</li>
|
||||
</ul>
|
||||
<p>Count in weeks per bank rather than days, and start the contract and the paperwork early.</p>
|
||||
</div>
|
||||
<div class="section" id="configuration">
|
||||
<h2>Configuration</h2>
|
||||
<p>Go to <strong>Settings > 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>, with the developer mode active, tick
|
||||
<strong>EBICS Manager</strong> in the <em>Technical</em> section of the users who maintain the EBICS
|
||||
configuration.</p>
|
||||
<p><strong>File formats.</strong> In <em>Accounting > 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. For a payment order, the format comes from its payment mode;
|
||||
for a batch payment, Odoo proposes the connection's upload format and you confirm it in
|
||||
the upload window.</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>
|
||||
@@ -1,50 +1,51 @@
|
||||
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/agpl
|
||||
:alt: License: AGPL-3
|
||||
=============================
|
||||
EBICS - Scheduled File Import
|
||||
=============================
|
||||
|
||||
============================================
|
||||
Module to enable batch import of EBICS files
|
||||
============================================
|
||||
**Your statements arrive without anyone asking for them.**
|
||||
|
||||
This module adds a cron job for the automated import of EBICS files.
|
||||
This module adds a scheduled action that downloads and processes the EBICS files of every
|
||||
confirmed connection. This is what turns EBICS from a manual download into something your
|
||||
morning no longer depends on.
|
||||
|
||||
|
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/17.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 AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
{
|
||||
"name": "EBICS Files batch import",
|
||||
"name": "EBICS - Scheduled File Import",
|
||||
"version": "17.0.1.0.1",
|
||||
"license": "AGPL-3",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
"category": "Accounting & Finance",
|
||||
"summary": "EBICS Files automated import and processing",
|
||||
"summary": "Download and process your EBICS files automatically, on a schedule",
|
||||
"depends": ["account_ebics"],
|
||||
"data": [
|
||||
"security/ir.model.access.csv",
|
||||
@@ -17,5 +17,5 @@
|
||||
"views/menu.xml",
|
||||
],
|
||||
"installable": True,
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
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/agpl"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a>
|
||||
<div class="section" id="module-to-enable-batch-import-of-ebics-files">
|
||||
<h1>Module to enable batch import of EBICS files</h1>
|
||||
<p>This module adds a cron job for the automated import of EBICS files.</p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
<p>A Log is created during the import in order to document import errors.
|
||||
If errors have been detected, the Batch Import Log state is set to 'error'.</p>
|
||||
<p>When all EBICS Files have been imported correctly, the Batch Import Log state is set to 'done'.</p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
<p>The user can reprocess the imported EBICS files in status 'draft' via the Log object 'REPROCESS' button until all errors have been cleared.</p>
|
||||
<p>As an alternative, the user can force the Batch Import Log state to 'done'
|
||||
(e.g. when the errors have been circumvented via manual encoding or the reprocessing of a single EBICS file).</p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
<!-- Generated from README.rst: edit the README, not this file. -->
|
||||
<div class="section" id="ebics-scheduled-file-import">
|
||||
<h1>EBICS - Scheduled File Import</h1>
|
||||
<p><strong>Your statements arrive without anyone asking for them.</strong></p>
|
||||
<p>This module adds a scheduled action that downloads and processes the EBICS files of every
|
||||
confirmed connection. This is what turns EBICS from a manual download into something your
|
||||
morning no longer depends on.</p>
|
||||
<img alt="A downloaded camt.053 statement file in Odoo, ready to be processed" src="ebics_download.png" style="width: 100%;" />
|
||||
<p>Each run creates a <strong>Batch Import Log</strong>. When a file cannot be processed, the log is set to
|
||||
<em>error</em> and records why; when every file is processed, it is set to <em>done</em>. From the log,
|
||||
<strong>Reprocess</strong> retries the files still in draft until the errors are cleared. A log can also be
|
||||
set to <em>done</em> by hand, for instance after a file was processed on its own or the movements
|
||||
were entered manually.</p>
|
||||
<div class="section" id="configuration">
|
||||
<h2>Configuration</h2>
|
||||
<p>Adapt the 'EBICS Batch Import' ir.cron job created during the module installation.</p>
|
||||
<p>The cron job calls the following python method:</p>
|
||||
<div class="line-block">
|
||||
<div class="line"><br /></div>
|
||||
</div>
|
||||
<pre class="code python literal-block">
|
||||
<span class="name">_batch_import</span><span class="punctuation">()</span>
|
||||
<p>The scheduled action <strong>EBICS Batch Import</strong> is created <strong>inactive</strong> at installation, with a
|
||||
daily interval. Activate it in <em>Settings > 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/licence-LGPL--3-blue.svg
|
||||
:target: https://www.gnu.org/licenses/lgpl
|
||||
:alt: License: AGPL-3
|
||||
========================================
|
||||
EBICS - Batch Payments (Odoo Enterprise)
|
||||
========================================
|
||||
|
||||
==============================
|
||||
Upload Batch Payment via EBICS
|
||||
==============================
|
||||
**Send a payment batch to the bank from Odoo, without touching a file.**
|
||||
|
||||
This module allows to upload a Batch Payment to the bank via the EBICS protocol.
|
||||
This module lets you upload an Odoo Enterprise batch payment to the bank over EBICS. You
|
||||
validate the batch, Odoo generates the payment file in the format the bank expects and
|
||||
submits it. Nothing is exported to a folder and nothing is uploaded to a portal, which also
|
||||
means nothing can be altered on the way.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/17.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
|
||||
=============
|
||||
|
||||
Link the bank journal to a confirmed EBICS connection (field **Bank Accounts** of the
|
||||
EBICS Configuration) holding the upload formats you use, for example pain.001 and
|
||||
pain.008. At upload, Odoo proposes the connection's format, the only one or the one
|
||||
matching the file name, and you can change it in the upload window.
|
||||
|
||||
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,7 +2,8 @@
|
||||
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "Upload Batch Payment via EBICS",
|
||||
"name": "EBICS - Batch Payments (Odoo Enterprise)",
|
||||
"summary": "Send an Odoo Enterprise batch payment to the bank over EBICS",
|
||||
"version": "17.0.1.1.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
@@ -11,5 +12,5 @@
|
||||
"depends": ["account_ebics", "account_batch_payment"],
|
||||
"data": ["views/account_batch_payment_views.xml"],
|
||||
"installable": True,
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
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"><object data="https://img.shields.io/badge/licence-LGPL--3-blue.svg" type="image/svg+xml">License: AGPL-3</object></a>
|
||||
<div class="section" id="upload-batch-payment-via-ebics">
|
||||
<h1>Upload Batch Payment via EBICS</h1>
|
||||
<p>This module allows to upload a Batch Payment to the bank via the EBICS protocol.</p>
|
||||
<!-- Generated from README.rst: edit the README, not this file. -->
|
||||
<div class="section" id="ebics-batch-payments-odoo-enterprise">
|
||||
<h1>EBICS - Batch Payments (Odoo Enterprise)</h1>
|
||||
<p><strong>Send a payment batch to the bank from Odoo, without touching a file.</strong></p>
|
||||
<p>This module lets you upload an Odoo Enterprise batch payment to the bank over EBICS. You
|
||||
validate the batch, Odoo generates the payment file in the format the bank expects and
|
||||
submits it. Nothing is exported to a folder and nothing is uploaded to a portal, which also
|
||||
means nothing can be altered on the way.</p>
|
||||
<img alt="Uploading a payment file over EBICS, with the test mode option" src="ebics_upload.png" style="width: 100%;" />
|
||||
<div class="section" id="installation">
|
||||
<h2>Installation</h2>
|
||||
<p>This module depends upon the following modules:</p>
|
||||
<p>This module depends on:</p>
|
||||
<ul class="simple">
|
||||
<li>account_ebics (cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>)</li>
|
||||
<li>account_ebics_oe (cf. <a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>)</li>
|
||||
<li>account_batch_payment (Odoo Enterprise)</li>
|
||||
<li><tt class="docutils literal">account_ebics</tt> (<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>);</li>
|
||||
<li><tt class="docutils literal">account_batch_payment</tt> (Odoo Enterprise).</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="configuration">
|
||||
<h2>Configuration</h2>
|
||||
<p>Link the bank journal to a confirmed EBICS connection (field <strong>Bank Accounts</strong> of the
|
||||
EBICS Configuration) holding the upload formats you use, for example pain.001 and
|
||||
pain.008. At upload, Odoo proposes the connection's format, the only one or the one
|
||||
matching the file name, and you can change it in the upload window.</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>
|
||||
@@ -1,17 +1,34 @@
|
||||
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/lgpl
|
||||
:alt: License: LGPL-3
|
||||
===================================
|
||||
EBICS - Bank Statement Import (OCA)
|
||||
===================================
|
||||
|
||||
==========================================================
|
||||
Deploy account_ebics module with OCA Bank Statement Import
|
||||
==========================================================
|
||||
**Each statement in the right journal, even when one file carries many.**
|
||||
|
||||
This module makes it possible to use the OCA account_statement_import wizard
|
||||
in combination with 'account_ebics'.
|
||||
This module connects the files downloaded over EBICS to the OCA bank statement import. When a
|
||||
file holds the statements of several accounts or companies, each statement is created in the
|
||||
right bank journal, including when the bank appends a currency code to the account number
|
||||
(for example ``BE..EUR``). A file without transactions, or a statement already imported, gives
|
||||
a warning on the EBICS file instead of a blocking error.
|
||||
|
||||
This module will be installed automatically when following modules are activated
|
||||
on your odoo database :
|
||||
.. image:: https://raw.githubusercontent.com/Noviat/account_ebics/17.0/account_ebics_oca_statement_import/static/description/ebics_download.png
|
||||
:alt: A downloaded camt.053 statement file in Odoo, ready to be processed
|
||||
:width: 100%
|
||||
|
||||
- account_ebics
|
||||
- account_statement_import_file
|
||||
Installation
|
||||
============
|
||||
|
||||
This module depends on:
|
||||
|
||||
- ``account_ebics`` (https://github.com/Noviat/account_ebics);
|
||||
- ``account_statement_import_file`` (https://github.com/OCA/bank-statement-import).
|
||||
|
||||
It is installed automatically when both are installed, which is the case as soon as an OCA
|
||||
statement import module such as ``account_statement_import_camt`` is installed.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
There is nothing to configure. Process a downloaded EBICS file, by hand with the **Process**
|
||||
button or with the scheduled import: the bank statements are created in their journals. The
|
||||
journal matching also applies to statements imported by hand with the OCA import.
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "account_ebics with OCA Bank Statement Imoort",
|
||||
"summary": "Use OCA Bank Statement Import with account_ebics",
|
||||
"name": "EBICS - Bank Statement Import (OCA)",
|
||||
"summary": "Process EBICS statement files with the OCA bank statement import",
|
||||
"version": "17.0.1.0.1",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -15,5 +15,5 @@
|
||||
],
|
||||
"installable": True,
|
||||
"auto_install": True,
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
After Width: | Height: | Size: 75 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,379 +1,27 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.20.1: https://docutils.sourceforge.io/" />
|
||||
<title>README.rst</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
|
||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: grey; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document">
|
||||
|
||||
|
||||
<a class="reference external image-reference" href="https://www.gnu.org/licenses/lgpl"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a>
|
||||
<div class="section" id="deploy-account-ebics-module-with-oca-bank-statement-import">
|
||||
<h1>Deploy account_ebics module with OCA Bank Statement Import</h1>
|
||||
<p>This module makes it possible to use the OCA account_statement_import wizard
|
||||
in combination with 'account_ebics'.</p>
|
||||
<p>This module will be installed automatically when following modules are activated
|
||||
on your odoo database :</p>
|
||||
<!-- Generated from README.rst: edit the README, not this file. -->
|
||||
<div class="section" id="ebics-bank-statement-import-oca">
|
||||
<h1>EBICS - Bank Statement Import (OCA)</h1>
|
||||
<p><strong>Each statement in the right journal, even when one file carries many.</strong></p>
|
||||
<p>This module connects the files downloaded over EBICS to the OCA bank statement import. When a
|
||||
file holds the statements of several accounts or companies, each statement is created in the
|
||||
right bank journal, including when the bank appends a currency code to the account number
|
||||
(for example <tt class="docutils literal"><span class="pre">BE..EUR</span></tt>). A file without transactions, or a statement already imported, gives
|
||||
a warning on the EBICS file instead of a blocking error.</p>
|
||||
<img alt="A downloaded camt.053 statement file in Odoo, ready to be processed" src="ebics_download.png" style="width: 100%;" />
|
||||
<div class="section" id="installation">
|
||||
<h2>Installation</h2>
|
||||
<p>This module depends on:</p>
|
||||
<ul class="simple">
|
||||
<li>account_ebics</li>
|
||||
<li>account_statement_import_file</li>
|
||||
<li><tt class="docutils literal">account_ebics</tt> (<a class="reference external" href="https://github.com/Noviat/account_ebics">https://github.com/Noviat/account_ebics</a>);</li>
|
||||
<li><tt class="docutils literal">account_statement_import_file</tt> (<a class="reference external" href="https://github.com/OCA/bank-statement-import">https://github.com/OCA/bank-statement-import</a>).</li>
|
||||
</ul>
|
||||
<p>It is installed automatically when both are installed, which is the case as soon as an OCA
|
||||
statement import module such as <tt class="docutils literal">account_statement_import_camt</tt> is installed.</p>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h2>Usage</h2>
|
||||
<p>There is nothing to configure. Process a downloaded EBICS file, by hand with the <strong>Process</strong>
|
||||
button or with the scheduled import: the bank statements are created in their journals. The
|
||||
journal matching also applies to statements imported by hand with the OCA import.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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``;
|
||||
- ``account_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 (http://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "account_ebics on Odoo Enterprise",
|
||||
"summary": "Deploy account_ebics module on Odoo Enterprise",
|
||||
"name": "EBICS - Odoo Enterprise Integration",
|
||||
"summary": "Place the EBICS menus in the Odoo Enterprise accounting application",
|
||||
"version": "17.0.1.0.0",
|
||||
"author": "Noviat",
|
||||
"website": "https://www.noviat.com/",
|
||||
@@ -16,5 +16,5 @@
|
||||
"data": ["views/account_ebics_menu.xml"],
|
||||
"installable": True,
|
||||
"auto_install": True,
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
}
|
||||
|
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">account_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/17.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,7 +2,8 @@
|
||||
# License LGPL-3 or later (https://www.gnu.org/licenses/lgpl).
|
||||
|
||||
{
|
||||
"name": "Upload Payment Order via EBICS",
|
||||
"name": "EBICS - Payment Orders (OCA)",
|
||||
"summary": "Send an OCA payment order to the bank over EBICS",
|
||||
"version": "17.0.1.2.0",
|
||||
"license": "LGPL-3",
|
||||
"author": "Noviat",
|
||||
@@ -13,6 +14,6 @@
|
||||
"views/account_payment_order_views.xml",
|
||||
"views/account_payment_mode_views.xml",
|
||||
],
|
||||
"images": ["static/description/cover.png"],
|
||||
"images": ["static/description/banner.png"],
|
||||
"installable": True,
|
||||
}
|
||||
|
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>
|
||||