From 64a0eb0aa7ca84373b843dd1c98be6ccd78806fe Mon Sep 17 00:00:00 2001 From: Iryna Vyshnevska Date: Mon, 11 Jan 2021 15:35:19 +0200 Subject: [PATCH 01/24] [MIG][14.0] account_statement_import_camt_oca --- account_statement_import_camt/README.rst | 78 ++++ account_statement_import_camt/__init__.py | 1 + account_statement_import_camt/__manifest__.py | 12 + .../i18n/account_statement_import_camt.pot | 88 ++++ account_statement_import_camt/i18n/de.po | 97 ++++ account_statement_import_camt/i18n/es.po | 97 ++++ account_statement_import_camt/i18n/fa.po | 98 ++++ account_statement_import_camt/i18n/fi.po | 96 ++++ account_statement_import_camt/i18n/fr.po | 96 ++++ account_statement_import_camt/i18n/fr_CH.po | 97 ++++ account_statement_import_camt/i18n/gl.po | 96 ++++ account_statement_import_camt/i18n/hr.po | 98 ++++ account_statement_import_camt/i18n/lt_LT.po | 97 ++++ account_statement_import_camt/i18n/nb_NO.po | 97 ++++ account_statement_import_camt/i18n/nl.po | 101 +++++ account_statement_import_camt/i18n/pt_BR.po | 96 ++++ account_statement_import_camt/i18n/pt_PT.po | 96 ++++ account_statement_import_camt/i18n/sl.po | 97 ++++ .../models/__init__.py | 5 + .../models/account_bank_statement_line.py | 27 ++ .../models/account_journal.py | 15 + .../models/account_statement_import.py | 37 ++ .../models/bank_statement.py | 13 + .../models/parser.py | 269 +++++++++++ .../readme/CONTRIBUTORS.rst | 6 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 424 ++++++++++++++++++ .../test_files/golden-camt053-no-ntry.pydata | 1 + .../test_files/golden-camt053-txdtls.pydata | 18 + .../test_files/golden-camt053.pydata | 34 ++ .../test_files/test-camt053 | 289 ++++++++++++ .../test_files/test-camt053-no-ntry | 52 +++ .../test_files/test-camt053-txdtls | 214 +++++++++ .../test_files/test-camt053.zip | Bin 0 -> 3111 bytes .../tests/__init__.py | 1 + .../tests/test_import_bank_statement.py | 172 +++++++ .../views/account_bank_statement_import.xml | 16 + 38 files changed, 3132 insertions(+) create mode 100644 account_statement_import_camt/README.rst create mode 100644 account_statement_import_camt/__init__.py create mode 100644 account_statement_import_camt/__manifest__.py create mode 100644 account_statement_import_camt/i18n/account_statement_import_camt.pot create mode 100644 account_statement_import_camt/i18n/de.po create mode 100644 account_statement_import_camt/i18n/es.po create mode 100644 account_statement_import_camt/i18n/fa.po create mode 100644 account_statement_import_camt/i18n/fi.po create mode 100644 account_statement_import_camt/i18n/fr.po create mode 100644 account_statement_import_camt/i18n/fr_CH.po create mode 100644 account_statement_import_camt/i18n/gl.po create mode 100644 account_statement_import_camt/i18n/hr.po create mode 100644 account_statement_import_camt/i18n/lt_LT.po create mode 100644 account_statement_import_camt/i18n/nb_NO.po create mode 100644 account_statement_import_camt/i18n/nl.po create mode 100644 account_statement_import_camt/i18n/pt_BR.po create mode 100644 account_statement_import_camt/i18n/pt_PT.po create mode 100644 account_statement_import_camt/i18n/sl.po create mode 100644 account_statement_import_camt/models/__init__.py create mode 100644 account_statement_import_camt/models/account_bank_statement_line.py create mode 100644 account_statement_import_camt/models/account_journal.py create mode 100644 account_statement_import_camt/models/account_statement_import.py create mode 100644 account_statement_import_camt/models/bank_statement.py create mode 100644 account_statement_import_camt/models/parser.py create mode 100644 account_statement_import_camt/readme/CONTRIBUTORS.rst create mode 100644 account_statement_import_camt/readme/DESCRIPTION.rst create mode 100644 account_statement_import_camt/static/description/icon.png create mode 100644 account_statement_import_camt/static/description/index.html create mode 100644 account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata create mode 100644 account_statement_import_camt/test_files/golden-camt053-txdtls.pydata create mode 100644 account_statement_import_camt/test_files/golden-camt053.pydata create mode 100644 account_statement_import_camt/test_files/test-camt053 create mode 100644 account_statement_import_camt/test_files/test-camt053-no-ntry create mode 100644 account_statement_import_camt/test_files/test-camt053-txdtls create mode 100644 account_statement_import_camt/test_files/test-camt053.zip create mode 100644 account_statement_import_camt/tests/__init__.py create mode 100644 account_statement_import_camt/tests/test_import_bank_statement.py create mode 100644 account_statement_import_camt/views/account_bank_statement_import.xml diff --git a/account_statement_import_camt/README.rst b/account_statement_import_camt/README.rst new file mode 100644 index 000000000..b2f9a88da --- /dev/null +++ b/account_statement_import_camt/README.rst @@ -0,0 +1,78 @@ +================================== +CAMT Format Bank Statements Import +================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github + :target: https://github.com/OCA/bank-statement-import/tree/14.0/account_statement_import_camt + :alt: OCA/bank-statement-import +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/174/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Module to import SEPA CAMT.053 and CAMT.054 Format bank statement files. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Therp BV + +Contributors +~~~~~~~~~~~~ + +* Holger Brunn +* Stefan Rijnhart +* Ronald Portier +* Andrea Stirpe +* Maxence Groine +* Iryna Vyshnevska + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/bank-statement-import `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt/__init__.py b/account_statement_import_camt/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/account_statement_import_camt/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/account_statement_import_camt/__manifest__.py b/account_statement_import_camt/__manifest__.py new file mode 100644 index 000000000..9048d6e58 --- /dev/null +++ b/account_statement_import_camt/__manifest__.py @@ -0,0 +1,12 @@ +# Copyright 2013-2017 Therp BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +{ + "name": "CAMT Format Bank Statements Import", + "version": "14.0.1.0.0", + "license": "AGPL-3", + "author": "Therp BV, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/bank-statement-import", + "category": "Banking addons", + "depends": ["account_statement_import"], + "data": ["views/account_bank_statement_import.xml"], +} diff --git a/account_statement_import_camt/i18n/account_statement_import_camt.pot b/account_statement_import_camt/i18n/account_statement_import_camt.pot new file mode 100644 index 000000000..fa6652760 --- /dev/null +++ b/account_statement_import_camt/i18n/account_statement_import_camt.pot @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/de.po b/account_statement_import_camt/i18n/de.po new file mode 100644 index 000000000..efda2d603 --- /dev/null +++ b/account_statement_import_camt/i18n/de.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2015-10-04 11:43+0200\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: French (http://www.transifex.com/oca/OCA-bank-statement-" +"import-8-0/language/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.8.3\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Kontoauszug importieren" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Kontoauszug importieren" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Kontoauszug importieren" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/es.po b/account_statement_import_camt/i18n/es.po new file mode 100644 index 000000000..f485733d5 --- /dev/null +++ b/account_statement_import_camt/i18n/es.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2018-06-08 08:27+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +#, fuzzy +msgid "Account Bank Statement Import CAMT parser" +msgstr "account.bank.statement.import.camt.parser" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "CAMT" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "Nombre a mostrar" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "Última modificación en" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "CAMT en .zip" diff --git a/account_statement_import_camt/i18n/fa.po b/account_statement_import_camt/i18n/fa.po new file mode 100644 index 000000000..265ef328b --- /dev/null +++ b/account_statement_import_camt/i18n/fa.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# Mehdi Zarrinkolah , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2018-07-22 10:30+0000\n" +"Last-Translator: derKonig \n" +"Language-Team: Persian (https://www.transifex.com/oca/teams/23907/fa/)\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.0.1\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +#, fuzzy +msgid "Account Bank Statement Import CAMT parser" +msgstr "گزارش .حساب بانکی .وارد کننده .تقسیم کننده .تجزیه کننده" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "ورود بیانیه بانکی" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "ورود بیانیه بانکی" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "CAMT" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "نام صفحه نمایش" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "شناسه" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "ورود بیانیه بانکی" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "آخرین تغییر در" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "CAMT زیپ شده" diff --git a/account_statement_import_camt/i18n/fi.po b/account_statement_import_camt/i18n/fi.po new file mode 100644 index 000000000..a3cea4a44 --- /dev/null +++ b/account_statement_import_camt/i18n/fi.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# Jarmo Kortetjärvi , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2016-12-10 05:00+0000\n" +"Last-Translator: Jarmo Kortetjärvi , 2017\n" +"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Tuo pankkiaineisto" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Tuo pankkiaineisto" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Tuo pankkiaineisto" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/fr.po b/account_statement_import_camt/i18n/fr.po new file mode 100644 index 000000000..6052e06f9 --- /dev/null +++ b/account_statement_import_camt/i18n/fr.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2018-06-08 08:27+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importer Relevé Bancaire" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importer Relevé Bancaire" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "CAMT" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importer Relevé Bancaire" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "CAMT zippé" diff --git a/account_statement_import_camt/i18n/fr_CH.po b/account_statement_import_camt/i18n/fr_CH.po new file mode 100644 index 000000000..a031758fd --- /dev/null +++ b/account_statement_import_camt/i18n/fr_CH.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (Switzerland) (https://www.transifex.com/oca/" +"teams/23907/fr_CH/)\n" +"Language: fr_CH\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importer Relevé" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importer Relevé" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importer Relevé" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/gl.po b/account_statement_import_camt/i18n/gl.po new file mode 100644 index 000000000..4cded7be1 --- /dev/null +++ b/account_statement_import_camt/i18n/gl.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# Alejandro Santana , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Alejandro Santana , 2016\n" +"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importar extracto bancario" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/hr.po b/account_statement_import_camt/i18n/hr.po new file mode 100644 index 000000000..f1cce84a0 --- /dev/null +++ b/account_statement_import_camt/i18n/hr.po @@ -0,0 +1,98 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# OCA Transbot , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2018-06-08 08:27+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +#, fuzzy +msgid "Account Bank Statement Import CAMT parser" +msgstr "account.bank.statement.import.camt.parser" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Uvoz bankovnog izvoda" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Uvoz bankovnog izvoda" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "CAMT" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "Naziv" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Uvoz bankovnog izvoda" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "Zadnje modificirano" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "kompresirani CAMT" diff --git a/account_statement_import_camt/i18n/lt_LT.po b/account_statement_import_camt/i18n/lt_LT.po new file mode 100644 index 000000000..3688d441a --- /dev/null +++ b/account_statement_import_camt/i18n/lt_LT.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2015-07-24 07:41+0000\n" +"Last-Translator: <>\n" +"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/oca/OCA-bank-" +"statement-import-8-0/language/lt_LT/)\n" +"Language: lt_LT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importuoti banko išrašą" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importuoti banko išrašą" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importuoti banko išrašą" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/nb_NO.po b/account_statement_import_camt/i18n/nb_NO.po new file mode 100644 index 000000000..1de73ef57 --- /dev/null +++ b/account_statement_import_camt/i18n/nb_NO.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# Imre Kristoffer Eilertsen , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2016-12-09 17:00+0000\n" +"Last-Translator: Imre Kristoffer Eilertsen , 2016\n" +"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/" +"teams/23907/nb_NO/)\n" +"Language: nb_NO\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importer bankutsagn" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importer bankutsagn" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importer bankutsagn" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/nl.po b/account_statement_import_camt/i18n/nl.po new file mode 100644 index 000000000..a0f9e29fb --- /dev/null +++ b/account_statement_import_camt/i18n/nl.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +# Erwin van der Ploeg , 2015 +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2018-12-03 10:43+0000\n" +"Last-Translator: Yung-Wa \n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-statement-" +"import-8-0/language/nl/)\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.3\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +#, fuzzy +msgid "Account Bank Statement Import CAMT parser" +msgstr "account.bank.statement.import.camt.parser" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importeer bankafschrift" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importeer bankafschrift" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +#, fuzzy +msgid "CAMT" +msgstr "CAMT" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "Weergave naam" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +#, fuzzy +msgid "ID" +msgstr "ID" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importeer bankafschrift" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "Laatst gewijzigd op" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "zip formaat CAMT" diff --git a/account_statement_import_camt/i18n/pt_BR.po b/account_statement_import_camt/i18n/pt_BR.po new file mode 100644 index 000000000..9b4fa11e8 --- /dev/null +++ b/account_statement_import_camt/i18n/pt_BR.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2015-10-09 00:26+0000\n" +"Last-Translator: danimaribeiro \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-bank-" +"statement-import-8-0/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/pt_PT.po b/account_statement_import_camt/i18n/pt_PT.po new file mode 100644 index 000000000..15aaf59d7 --- /dev/null +++ b/account_statement_import_camt/i18n/pt_PT.po @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2015-07-24 07:41+0000\n" +"Last-Translator: <>\n" +"Language-Team: Portuguese (Portugal) (http://www.transifex.com/oca/OCA-bank-" +"statement-import-8-0/language/pt_PT/)\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Importar Extrato Bancário" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/i18n/sl.po b/account_statement_import_camt/i18n/sl.po new file mode 100644 index 000000000..f1dfeb001 --- /dev/null +++ b/account_statement_import_camt/i18n/sl.po @@ -0,0 +1,97 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: bank-statement-import (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-16 08:08+0000\n" +"PO-Revision-Date: 2015-07-25 12:19+0000\n" +"Last-Translator: Matjaž Mozetič \n" +"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-bank-statement-" +"import-8-0/language/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3);\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +#, fuzzy +msgid "Bank Statement" +msgstr "Uvoz bančnega izpiska" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +#, fuzzy +msgid "Bank Statement Line" +msgstr "Uvoz bančnega izpiska" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +#, fuzzy +msgid "Import Bank Statement Files" +msgstr "Uvoz bančnega izpiska" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" diff --git a/account_statement_import_camt/models/__init__.py b/account_statement_import_camt/models/__init__.py new file mode 100644 index 000000000..1fe7a2a7f --- /dev/null +++ b/account_statement_import_camt/models/__init__.py @@ -0,0 +1,5 @@ +from . import parser +from . import account_bank_statement_line +from . import account_statement_import +from . import account_journal +from . import bank_statement diff --git a/account_statement_import_camt/models/account_bank_statement_line.py b/account_statement_import_camt/models/account_bank_statement_line.py new file mode 100644 index 000000000..9846f90ae --- /dev/null +++ b/account_statement_import_camt/models/account_bank_statement_line.py @@ -0,0 +1,27 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class AccountBankStatementLine(models.Model): + + _inherit = "account.bank.statement.line" + + def write(self, vals): + """ + Purpose of this hook is catch updates for records with name == '/' + + In reconciliation_widget_preprocess, there is attempt to assign + partner into statement line, this assignment relies on name, + during import name setup to '/' for records without it + and this makes search results wrong and partner assignment randomly + """ + if ( + self.env.context.get("no_reassign_empty_name") + and len(self) == 1 + and len(vals.keys()) == 1 + and "partner_id" in vals + and self.name == "/" + ): + return True + return super().write(vals) diff --git a/account_statement_import_camt/models/account_journal.py b/account_statement_import_camt/models/account_journal.py new file mode 100644 index 000000000..55ff4dc65 --- /dev/null +++ b/account_statement_import_camt/models/account_journal.py @@ -0,0 +1,15 @@ +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, models + + +class AccountJournal(models.Model): + _inherit = "account.journal" + + def _get_bank_statements_available_import_formats(self): + res = super( + AccountJournal, self + )._get_bank_statements_available_import_formats() + res.extend([_("camt.053.001.02"), _("camt.054.001.02")]) + return res diff --git a/account_statement_import_camt/models/account_statement_import.py b/account_statement_import_camt/models/account_statement_import.py new file mode 100644 index 000000000..a213da968 --- /dev/null +++ b/account_statement_import_camt/models/account_statement_import.py @@ -0,0 +1,37 @@ +# Copyright 2013-2016 Therp BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +import logging +import zipfile +from io import BytesIO + +from odoo import models + +_logger = logging.getLogger(__name__) + + +class AccountBankStatementImport(models.TransientModel): + _inherit = "account.statement.import" + + def _parse_file(self, data_file): + """Parse a CAMT053 XML file.""" + try: + parser = self.env["account.statement.import.camt.parser"] + _logger.debug("Try parsing with camt.") + return parser.parse(data_file) + except ValueError: + try: + with zipfile.ZipFile(BytesIO(data_file)) as data: + currency = None + account_number = None + transactions = [] + for member in data.namelist(): + currency, account_number, new = self._parse_file( + data.open(member).read() + ) + transactions.extend(new) + return currency, account_number, transactions + except (zipfile.BadZipFile, ValueError): + pass + # Not a camt file, returning super will call next candidate: + _logger.debug("Statement file was not a camt file.", exc_info=True) + return super()._parse_file(data_file) diff --git a/account_statement_import_camt/models/bank_statement.py b/account_statement_import_camt/models/bank_statement.py new file mode 100644 index 000000000..313e5c170 --- /dev/null +++ b/account_statement_import_camt/models/bank_statement.py @@ -0,0 +1,13 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class AccountBankStatement(models.Model): + + _inherit = "account.bank.statement" + + def reconciliation_widget_preprocess(self): + return super( + AccountBankStatement, self.with_context(no_reassign_empty_name=True) + ).reconciliation_widget_preprocess() diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py new file mode 100644 index 000000000..2c66b7a2d --- /dev/null +++ b/account_statement_import_camt/models/parser.py @@ -0,0 +1,269 @@ +"""Class to parse camt files.""" +# Copyright 2013-2016 Therp BV +# Copyright 2017 Open Net Sàrl +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +import re + +from lxml import etree + +from odoo import models + + +class CamtParser(models.AbstractModel): + _name = "account.statement.import.camt.parser" + _description = "Account Bank Statement Import CAMT parser" + + def parse_amount(self, ns, node): + """Parse element that contains Amount and CreditDebitIndicator.""" + if node is None: + return 0.0 + sign = 1 + amount = 0.0 + sign_node = node.xpath("ns:CdtDbtInd", namespaces={"ns": ns}) + if not sign_node: + sign_node = node.xpath("../../ns:CdtDbtInd", namespaces={"ns": ns}) + if sign_node and sign_node[0].text == "DBIT": + sign = -1 + amount_node = node.xpath("ns:Amt", namespaces={"ns": ns}) + if not amount_node: + amount_node = node.xpath( + "./ns:AmtDtls/ns:TxAmt/ns:Amt", namespaces={"ns": ns} + ) + if amount_node: + amount = sign * float(amount_node[0].text) + return amount + + def add_value_from_node(self, ns, node, xpath_str, obj, attr_name, join_str=None): + """Add value to object from first or all nodes found with xpath. + + If xpath_str is a list (or iterable), it will be seen as a series + of search path's in order of preference. The first item that results + in a found node will be used to set a value.""" + if not isinstance(xpath_str, (list, tuple)): + xpath_str = [xpath_str] + for search_str in xpath_str: + found_node = node.xpath(search_str, namespaces={"ns": ns}) + if found_node: + if isinstance(found_node[0], str): + attr_value = found_node[0] + elif join_str is None: + attr_value = found_node[0].text + else: + attr_value = join_str.join([x.text for x in found_node]) + obj[attr_name] = attr_value + break + + def parse_transaction_details(self, ns, node, transaction): + """Parse TxDtls node.""" + # message + self.add_value_from_node( + ns, + node, + [ + "./ns:RmtInf/ns:Ustrd|./ns:RtrInf/ns:AddtlInf", + "./ns:AddtlNtryInf", + "./ns:Refs/ns:InstrId", + ], + transaction, + "name", + join_str="\n", + ) + # name + self.add_value_from_node( + ns, node, ["./ns:AddtlTxInf"], transaction, "payment_ref", join_str="\n" + ) + # eref + self.add_value_from_node( + ns, + node, + [ + "./ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref", + "./ns:Refs/ns:EndToEndId", + "./ns:Ntry/ns:AcctSvcrRef", + ], + transaction, + "ref", + ) + amount = self.parse_amount(ns, node) + if amount != 0.0: + transaction["amount"] = amount + # remote party values + party_type = "Dbtr" + party_type_node = node.xpath("../../ns:CdtDbtInd", namespaces={"ns": ns}) + if party_type_node and party_type_node[0].text != "CRDT": + party_type = "Cdtr" + party_node = node.xpath( + "./ns:RltdPties/ns:%s" % party_type, namespaces={"ns": ns} + ) + if party_node: + name_node = node.xpath( + "./ns:RltdPties/ns:%s/ns:Nm" % party_type, namespaces={"ns": ns} + ) + if name_node: + self.add_value_from_node( + ns, party_node[0], "./ns:Nm", transaction, "partner_name" + ) + else: + self.add_value_from_node( + ns, + party_node[0], + "./ns:PstlAdr/ns:AdrLine", + transaction, + "partner_name", + ) + # Get remote_account from iban or from domestic account: + account_node = node.xpath( + "./ns:RltdPties/ns:%sAcct/ns:Id" % party_type, namespaces={"ns": ns} + ) + if account_node: + iban_node = account_node[0].xpath("./ns:IBAN", namespaces={"ns": ns}) + if iban_node: + transaction["account_number"] = iban_node[0].text + else: + self.add_value_from_node( + ns, + account_node[0], + "./ns:Othr/ns:Id", + transaction, + "account_number", + ) + + def parse_entry(self, ns, node): + """Parse an Ntry node and yield transactions""" + transaction = {"name": "/", "amount": 0} # fallback defaults + self.add_value_from_node(ns, node, "./ns:BookgDt/ns:Dt", transaction, "date") + amount = self.parse_amount(ns, node) + if amount != 0.0: + transaction["amount"] = amount + self.add_value_from_node(ns, node, "./ns:AddtlNtryInf", transaction, "name") + self.add_value_from_node( + ns, + node, + [ + "./ns:NtryDtls/ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref", + "./ns:NtryDtls/ns:Btch/ns:PmtInfId", + "./ns:NtryDtls/ns:TxDtls/ns:Refs/ns:AcctSvcrRef", + ], + transaction, + "ref", + ) + + details_nodes = node.xpath("./ns:NtryDtls/ns:TxDtls", namespaces={"ns": ns}) + if len(details_nodes) == 0: + yield transaction + return + transaction_base = transaction + for node in details_nodes: + transaction = transaction_base.copy() + self.parse_transaction_details(ns, node, transaction) + yield transaction + + def get_balance_amounts(self, ns, node): + """Return opening and closing balance. + + Depending on kind of balance and statement, the balance might be in a + different kind of node: + OPBD = OpeningBalance + PRCD = PreviousClosingBalance + ITBD = InterimBalance (first ITBD is start-, second is end-balance) + CLBD = ClosingBalance + """ + start_balance_node = None + end_balance_node = None + for node_name in ["OPBD", "PRCD", "CLBD", "ITBD"]: + code_expr = ( + './ns:Bal/ns:Tp/ns:CdOrPrtry/ns:Cd[text()="%s"]/../../..' % node_name + ) + balance_node = node.xpath(code_expr, namespaces={"ns": ns}) + if balance_node: + if node_name in ["OPBD", "PRCD"]: + start_balance_node = balance_node[0] + elif node_name == "CLBD": + end_balance_node = balance_node[0] + else: + if not start_balance_node: + start_balance_node = balance_node[0] + if not end_balance_node: + end_balance_node = balance_node[-1] + return ( + self.parse_amount(ns, start_balance_node), + self.parse_amount(ns, end_balance_node), + ) + + def parse_statement(self, ns, node): + """Parse a single Stmt node.""" + result = {} + self.add_value_from_node( + ns, + node, + ["./ns:Acct/ns:Id/ns:IBAN", "./ns:Acct/ns:Id/ns:Othr/ns:Id"], + result, + "account_number", + ) + self.add_value_from_node(ns, node, "./ns:Id", result, "name") + self.add_value_from_node( + ns, node, ["./ns:Acct/ns:Ccy", "./ns:Bal/ns:Amt/@Ccy"], result, "currency" + ) + result["balance_start"], result["balance_end_real"] = self.get_balance_amounts( + ns, node + ) + entry_nodes = node.xpath("./ns:Ntry", namespaces={"ns": ns}) + transactions = [] + for entry_node in entry_nodes: + transactions.extend(self.parse_entry(ns, entry_node)) + result["transactions"] = transactions + result["date"] = None + if transactions: + result["date"] = sorted( + transactions, key=lambda x: x["date"], reverse=True + )[0]["date"] + return result + + def check_version(self, ns, root): + """Validate validity of camt file.""" + # Check whether it is camt at all: + re_camt = re.compile(r"(^urn:iso:std:iso:20022:tech:xsd:camt." r"|^ISO:camt.)") + if not re_camt.search(ns): + raise ValueError("no camt: " + ns) + # Check whether version 052 ,053 or 054: + re_camt_version = re.compile( + r"(^urn:iso:std:iso:20022:tech:xsd:camt.054." + r"|^urn:iso:std:iso:20022:tech:xsd:camt.053." + r"|^urn:iso:std:iso:20022:tech:xsd:camt.052." + r"|^ISO:camt.054." + r"|^ISO:camt.053." + r"|^ISO:camt.052.)" + ) + if not re_camt_version.search(ns): + raise ValueError("no camt 052 or 053 or 054: " + ns) + # Check GrpHdr element: + root_0_0 = root[0][0].tag[len(ns) + 2 :] # strip namespace + if root_0_0 != "GrpHdr": + raise ValueError("expected GrpHdr, got: " + root_0_0) + + def parse(self, data): + """Parse a camt.052 or camt.053 or camt.054 file.""" + try: + root = etree.fromstring(data, parser=etree.XMLParser(recover=True)) + except etree.XMLSyntaxError: + try: + # ABNAmro is known to mix up encodings + root = etree.fromstring(data.decode("iso-8859-15").encode("utf-8")) + except etree.XMLSyntaxError: + root = None + if root is None: + raise ValueError("Not a valid xml file, or not an xml file at all.") + ns = root.tag[1 : root.tag.index("}")] + self.check_version(ns, root) + statements = [] + currency = None + account_number = None + for node in root[0][1:]: + statement = self.parse_statement(ns, node) + if len(statement["transactions"]): + if "currency" in statement: + currency = statement.pop("currency") + if "account_number" in statement: + account_number = statement.pop("account_number") + statements.append(statement) + return currency, account_number, statements diff --git a/account_statement_import_camt/readme/CONTRIBUTORS.rst b/account_statement_import_camt/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..32d01b271 --- /dev/null +++ b/account_statement_import_camt/readme/CONTRIBUTORS.rst @@ -0,0 +1,6 @@ +* Holger Brunn +* Stefan Rijnhart +* Ronald Portier +* Andrea Stirpe +* Maxence Groine +* Iryna Vyshnevska diff --git a/account_statement_import_camt/readme/DESCRIPTION.rst b/account_statement_import_camt/readme/DESCRIPTION.rst new file mode 100644 index 000000000..c795774ec --- /dev/null +++ b/account_statement_import_camt/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Module to import SEPA CAMT.053 and CAMT.054 Format bank statement files. diff --git a/account_statement_import_camt/static/description/icon.png b/account_statement_import_camt/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/account_statement_import_camt/static/description/index.html b/account_statement_import_camt/static/description/index.html new file mode 100644 index 000000000..d3c233b73 --- /dev/null +++ b/account_statement_import_camt/static/description/index.html @@ -0,0 +1,424 @@ + + + + + + +CAMT Format Bank Statements Import + + + +
+

CAMT Format Bank Statements Import

+ + +

Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runbot

+

Module to import SEPA CAMT.053 and CAMT.054 Format bank statement files.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/bank-statement-import project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata b/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata new file mode 100644 index 000000000..ca89faa50 --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053-no-ntry.pydata @@ -0,0 +1 @@ +(None, None, []) diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata new file mode 100644 index 000000000..6b7fc096e --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -0,0 +1,18 @@ +('CHF', + 'CH1111000000123456789', + [{'balance_end_real': 79443.15, + 'balance_start': 75960.15, + 'date': '2017-03-22', + 'name': '20170323123456789012345', + 'transactions': [{'account_number': 'CH2222000000123456789', + 'amount': 2187.0, + 'date': '2017-03-22', + 'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'partner_name': 'Banque Cantonale Vaudoise', + 'ref': '302388292000011111111111111'}, + {'account_number': 'CH3333000000123456789', + 'amount': 1296.0, + 'date': '2017-03-22', + 'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'partner_name': 'Banque Cantonale Vaudoise', + 'ref': '302388292000022222222222222'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata new file mode 100644 index 000000000..c51d6bb70 --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -0,0 +1,34 @@ +('EUR', + 'NL77ABNA0574908765', + [{'balance_end_real': 15121.12, + 'balance_start': 15568.27, + 'date': '2014-01-05', + 'name': '1234Test/1', + 'transactions': [{'account_number': 'NL46ABNA0499998748', + 'amount': -754.25, + 'date': '2014-01-05', + 'name': 'Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014', + 'partner_name': 'INSURANCE COMPANY TESTX', + 'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', + 'ref': '435005714488-ABNO33052620'}, + {'account_number': 'NL46ABNA0499998748', + 'amount': -564.05, + 'date': '2014-01-05', + 'name': 'Direct Debit S14 0410', + 'partner_name': 'Test Customer', + 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', + 'ref': 'TESTBANK/NL/20141229/01206408'}, + {'account_number': 'NL46ABNA0499998748', + 'amount': -100.0, + 'date': '2014-01-05', + 'name': 'Direct Debit S14 0410', + 'partner_name': 'Test Customer', + 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', + 'ref': 'TESTBANK/NL/20141229/01206407'}, + {'account_number': 'NL69ABNA0522123643', + 'amount': 1405.31, + 'date': '2014-01-05', + 'name': 'INNDNL2U20140105000217200000708', + 'partner_name': '3rd party Media', + 'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773', + 'ref': '115'}]}]) diff --git a/account_statement_import_camt/test_files/test-camt053 b/account_statement_import_camt/test_files/test-camt053 new file mode 100644 index 000000000..1f15c84ce --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053 @@ -0,0 +1,289 @@ + + + + TESTBANK/NL/1420561226673 + 2014-01-06T16:20:26.673Z + + + 1234Test/1 + 2 + 2014-01-06T16:20:26.673Z + + 2014-01-05T00:00:00.000Z + 2014-01-05T23:59:59.999Z + + + + NL77ABNA0574908765 + + Example company + + + ABNANL2A + + + + + + + OPBD + + + 15568.27 + CRDT +
+
2014-01-05
+ +
+ + + + CLBD + + + 15121.12 + CRDT +
+
2014-01-05
+ +
+ + 754.25 + DBIT + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + RDDT + ESDD + + + + EI + + + + + + INNDNL2U20141231000142300002844 + 435005714488-ABNO33052620 + 1880000341866 + + + + 754.25 + + + + + INSURANCE COMPANY TESTX + + TEST STREET 20 + 1234 AB TESTCITY + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014 + + MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014 + + +
+ + 664.05 + DBIT + true + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + IDDT + UPDD + + + + EIST + + + + + 2014/125 + 2018/125-20141229-NORM + 2 + 664.05 + DBIT + + + + TESTBANK/NL/20141229/01206408 + TESTBANK/NL/20141229/01206408 + NL22ZZZ524885430000-C0125.1 + + + + 564.05 + + + + + Test Customer + + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Direct Debit S14 0410 + + + + AC06 + + + Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408 + + + + TESTBANK/NL/20141229/01206407 + TESTBANK/NL/20141229/01206407 + NL22ZZZ524885430000-C0125.2 + + + + 100.00 + + + + + Test Customer + + NL + + + + + NL46ABNA0499998748 + + + + + + + ABNANL2A + + + + + Direct Debit S14 0410 + + + + AC06 + + + Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408 + + +
+ + 1405.31 + CRDT + BOOK + +
2014-01-05
+
+ +
2014-01-05
+
+ + + PMNT + + RCDT + ESCT + + + + ET + + + + + + INNDNL2U20140105000217200000708 + 115 + + + + 1405.31 + + + + + 3rd party Media + + SOMESTREET 570-A + 1276 ML HOUSCITY + NL + + + + + NL69ABNA0522123643 + + + + + + + ABNANL2A + + + + #RD PARTY MEDIA CUSNO 90782 4210773 + + +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053-no-ntry b/account_statement_import_camt/test_files/test-camt053-no-ntry new file mode 100644 index 000000000..03f8f629b --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053-no-ntry @@ -0,0 +1,52 @@ + + + + TESTBANK/NL/1420561226673 + 2014-01-06T16:20:26.673Z + + + 1234Test/1 + 2 + 2014-01-06T16:20:26.673Z + + 2014-01-05T00:00:00.000Z + 2014-01-05T23:59:59.999Z + + + + NL77ABNA0574908765 + + Example company + + + ABNANL2A + + + + + + + OPBD + + + 1520.76 + CRDT +
+
2014-01-05
+ +
+ + + + CLBD + + + 1520.76 + CRDT +
+
2014-01-05
+ +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053-txdtls b/account_statement_import_camt/test_files/test-camt053-txdtls new file mode 100644 index 000000000..cf7c38f2b --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt053-txdtls @@ -0,0 +1,214 @@ + + + + + 20170323312345678900000 + 2017-03-23T14:47:00 + + 1 + true + + Test + + + 20170323123456789012345 + 58 + 2017-03-23T14:47:00 + + 2017-03-23T00:00:00 + 2017-03-23T23:59:59 + + + + CH1111000000123456789 + + + Open Net S. à r.l. Prilly + + + + + + OPBD + + + 75960.15 + CRDT +
+
2017-03-22
+ +
+ + + + CLBD + + + 79443.15 + CRDT +
+
2017-03-23
+ +
+ + 012345678 + 3483.00 + CRDT + false + BOOK + +
2017-03-22
+
+ +
2017-03-23
+
+ 20170323001234567891234567891234 + + + PMNT + + RCDT + VCOM + + + + + + 2 + + + + 123456CHCAFEBABE + + 01 + 123456CHCAFEBABE + + + 2187.00 + CRDT + + + PMNT + + RCDT + AUTT + + + + + + Banque Cantonale Vaudoise + + Place Saint-François + 14 + 1003 + Lausanne + CH1 + + + + + CH2222000000123456789 + + + + + + + POFICHBEXXX + POSTFINANCE AG + + MINGERSTRASSE 20 + 3030 BERNE + + + + + + + + + + ISR Reference + + + 302388292000011111111111111 + + ?REJECT?0 + + + + 2017-03-22T20:00:00 + + + + + 123456CHCAFEBABE + + 01 + 123456CHCAFEBABE + + + 1296.00 + CRDT + + + PMNT + + RCDT + AUTT + + + + + + Banque Cantonale Vaudoise + + Place Saint-François + 14 + 1003 + Lausanne + CH2 + + + + + CH3333000000123456789 + + + + + + + POFICHBEYYY + POSTFINANCE AG + + MINGERSTRASSE 20 + 3030 BERNE + + + + + + + + + + ISR Reference + + + 302388292000022222222222222 + + ?REJECT?0 + + + + 2017-03-22T20:00:00 + + + + CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE +
+
+
+
diff --git a/account_statement_import_camt/test_files/test-camt053.zip b/account_statement_import_camt/test_files/test-camt053.zip new file mode 100644 index 0000000000000000000000000000000000000000..ccf5b3c2ba72ad03cc137edcf2ee55f67b7a2952 GIT binary patch literal 3111 zcmeH}=T{S08pZ=5FccF7R764P14xk;5EP_{0RmY=5O4w{AVr!$C=oHlAWJhyReBE! zAqJ!U#$s;Q+O;qQmC7X$#CFp;S53XKp3 z@bIyK0Kng`kJ*<4=k&#UW|xqT(@Tov5YUyorl#QtnL>GL823Dkl9(M6fc0cI%(|Ni z6Q^GLcu71wsM2}%?CvjH!8b!s<&9$V%#|&29fp7$*Z6H3|gs9r@Iab`}w zn70^AGxt!43sw21&ugEeu5!s zB=aSvS|O$Bs(_1W`3N!7kW{?C+9uvd?a-AuvRv(>X!goeIdlV;b{mCeyP1vK$0=9p zhvGziT|Owbw0q_obsli0rv4Sr^-c(wMC`04QcZhDwWKHp@XFHQlHEbhsWMKSBZZOw zA}>C4#%A3WrP-sj`HDO4lA-;!yrBVX&3%#eOMKMU@+IV(nv7lhYS%{;$3{6@D@-?8 zj%$0W-f~sSJ^sQi^P9;MO$$IZFznJn;)6b5Ft;O?XIp3Wvr?Mxgx4Co_F1d*^z6>W z16A~WLf`!H5cIp~GA4ZCR{`G`WEw$zws*gec}$;&fZM zo5o5(B`9uG=!A2Ina*WDMms&g&>^6!qHt5;GqTVR1>*Ec+Z)I*wlOs-1v{7k(SD7cx&3TX>4UUU|z4aL*H}d*MEMlY`)`QpML{Lh>UZ>Y$ z#RRHb?tB{p^?Uws=MQd|l>2$Th%nhp47tF`Rx7B!RoxbGo{x9Ijt)~YQ+V444% zPzs&KG$xTJ)T2(Qz^8|QRB}mXgGS2uVz8>+^ZoN75^~j6MqhVW51<$wUzWDyF|J1 zirME@jT#|^OHAAz3aV0H+~Jxv^`tk-VY6f-Rl*g=@Y-F-Ba{e9gU80nOv-XmG14&C zV(E)5%on5Y=I7h_Gab0duA42{ST}8V<9on@o5adK;Lj4$TmL;iTZRlaNcE zF1&6LTv;hka~iWF8};~H>r~tMthOl-2An0f&eCUPY+h! z>c3ZOHlMoCRY`(}DnQqY19eBIViuA`HhKm_r5I4{dR+8rdB$SfS*>Oa_D7-8&b&W) z{U@*guX)YGD-Hakf-SLEya527J(Uu_PrqBYLI0@RzhO7R`d`NX9R>ex{Ae#A{?quM b!LVoiJE4HE2JwIY3-8{k*?V1uzi)p7q~E=A literal 0 HcmV?d00001 diff --git a/account_statement_import_camt/tests/__init__.py b/account_statement_import_camt/tests/__init__.py new file mode 100644 index 000000000..bb3456ae9 --- /dev/null +++ b/account_statement_import_camt/tests/__init__.py @@ -0,0 +1 @@ +from . import test_import_bank_statement diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py new file mode 100644 index 000000000..0ccc10945 --- /dev/null +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -0,0 +1,172 @@ +# Copyright 2013-2016 Therp BV +# Copyright 2017 Open Net Sàrl +# Copyright 2020 Camptocamp +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +import base64 +import difflib +import pprint +import tempfile +from datetime import date + +import mock + +from odoo.modules.module import get_module_resource +from odoo.tests.common import TransactionCase + + +class TestParser(TransactionCase): + """Tests for the camt parser itself.""" + + def setUp(self): + super(TestParser, self).setUp() + self.parser = self.env["account.statement.import.camt.parser"] + + def _do_parse_test(self, inputfile, goldenfile): + testfile = get_module_resource( + "account_statement_import_camt", "test_files", inputfile + ) + with open(testfile, "rb") as data: + res = self.parser.parse(data.read()) + with tempfile.NamedTemporaryFile(mode="w+", suffix=".pydata") as temp: + pprint.pprint(res, temp, width=160) + goldenfile_res = get_module_resource( + "account_statement_import_camt", "test_files", goldenfile + ) + with open(goldenfile_res, "r") as golden: + temp.seek(0) + diff = list( + difflib.unified_diff( + golden.readlines(), temp.readlines(), golden.name, temp.name + ) + ) + if len(diff) > 2: + self.fail( + "actual output doesn't match expected " + + "output:\n%s" % "".join(diff) + ) + + def test_parse(self): + self._do_parse_test("test-camt053", "golden-camt053.pydata") + + def test_parse_txdtls(self): + self._do_parse_test("test-camt053-txdtls", "golden-camt053-txdtls.pydata") + + def test_parse_no_ntry(self): + self._do_parse_test("test-camt053-no-ntry", "golden-camt053-no-ntry.pydata") + + +class TestImport(TransactionCase): + """Run test to import camt import.""" + + transactions = [ + { + "account_number": "NL46ABNA0499998748", + "amount": -754.25, + "date": date(year=2014, month=1, day=5), + "ref": "435005714488-ABNO33052620", + }, + { + "remote_account": "NL46ABNA0499998748", + "transferred_amount": -564.05, + "value_date": date(year=2014, month=1, day=5), + "ref": "TESTBANK/NL/20141229/01206408", + }, + { + "remote_account": "NL46ABNA0499998748", + "transferred_amount": -100.0, + "value_date": date(year=2014, month=1, day=5), + "ref": "TESTBANK/NL/20141229/01206407", + }, + { + "remote_account": "NL69ABNA0522123643", + "transferred_amount": 1405.31, + "value_date": date(year=2014, month=1, day=5), + "ref": "115", + }, + ] + + def setUp(self): + super(TestImport, self).setUp() + bank = self.env["res.partner.bank"].create( + { + "acc_number": "NL77ABNA0574908765", + "partner_id": self.env.ref("base.main_partner").id, + "company_id": self.env.ref("base.main_company").id, + "bank_id": self.env.ref("base.res_bank_1").id, + } + ) + self.env["res.partner.bank"].create( + { + "acc_number": "NL46ABNA0499998748", + "partner_id": self.env.ref("base.main_partner").id, + "company_id": self.env.ref("base.main_company").id, + "bank_id": self.env.ref("base.res_bank_1").id, + } + ) + self.env["account.journal"].create( + { + "name": "Bank Journal - (test camt)", + "code": "TBNKCAMT", + "type": "bank", + "bank_account_id": bank.id, + "currency_id": self.env.ref("base.EUR").id, + } + ) + + @mock.patch( + "odoo.addons.account.models.sequence_mixin." + "SequenceMixin._constrains_date_sequence", + side_effect=False, + ) + def test_statement_import(self, constraint): + """Test correct creation of single statement.""" + testfile = get_module_resource( + "account_statement_import_camt", "test_files", "test-camt053" + ) + with open(testfile, "rb") as datafile: + camt_file = base64.b64encode(datafile.read()) + + self.env["account.statement.import"].create( + { + "statement_filename": "test import", + "statement_file": camt_file, + } + ).import_file_button() + + bank_st_record = self.env["account.bank.statement"].search( + [("name", "=", "1234Test/1")], limit=1 + ) + statement_lines = bank_st_record.line_ids + self.assertTrue( + any( + all( + line[key] == self.transactions[0][key] + for key in ["amount", "date", "ref"] + ) + # TODO and bank_account_id was removed from line + # and line.bank_account_id.acc_number + # == self.transactions[0]["account_number"] + for line in statement_lines + ) + ) + + @mock.patch( + "odoo.addons.account.models.sequence_mixin." + "SequenceMixin._constrains_date_sequence", + side_effect=False, + ) + def test_zip_import(self, constraint): + """Test import of multiple statements from zip file.""" + testfile = get_module_resource( + "account_statement_import_camt", "test_files", "test-camt053.zip" + ) + with open(testfile, "rb") as datafile: + camt_file = base64.b64encode(datafile.read()) + self.env["account.statement.import"].create( + {"statement_filename": "test import", "statement_file": camt_file} + ).import_file_button() + bank_st_record = self.env["account.bank.statement"].search( + [("name", "in", ["1234Test/2", "1234Test/3"])] + ) + + self.assertTrue(all([st.line_ids for st in bank_st_record])) diff --git a/account_statement_import_camt/views/account_bank_statement_import.xml b/account_statement_import_camt/views/account_bank_statement_import.xml new file mode 100644 index 000000000..f3044a28a --- /dev/null +++ b/account_statement_import_camt/views/account_bank_statement_import.xml @@ -0,0 +1,16 @@ + + + + account.statement.import + + +
    +
  • CAMT
  • +
  • zipped CAMT
  • +
+
+
+
From 574eb9a1c0bc98a7b91b2610f448ebacabc223f0 Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Sun, 17 Jan 2021 17:03:27 +0100 Subject: [PATCH 02/24] [14.0][FIX]camt import --- account_statement_import_camt/models/parser.py | 10 +++++++--- .../test_files/golden-camt053-txdtls.pydata | 12 ++++++++---- .../test_files/golden-camt053.pydata | 16 ++++++++-------- .../tests/test_import_bank_statement.py | 17 ++--------------- 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py index 2c66b7a2d..0ee3e7391 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -65,7 +65,7 @@ def parse_transaction_details(self, ns, node, transaction): "./ns:Refs/ns:InstrId", ], transaction, - "name", + "payment_ref", join_str="\n", ) # name @@ -130,12 +130,14 @@ def parse_transaction_details(self, ns, node, transaction): def parse_entry(self, ns, node): """Parse an Ntry node and yield transactions""" - transaction = {"name": "/", "amount": 0} # fallback defaults + transaction = {"payment_ref": "/", "amount": 0} # fallback defaults self.add_value_from_node(ns, node, "./ns:BookgDt/ns:Dt", transaction, "date") amount = self.parse_amount(ns, node) if amount != 0.0: transaction["amount"] = amount - self.add_value_from_node(ns, node, "./ns:AddtlNtryInf", transaction, "name") + self.add_value_from_node( + ns, node, "./ns:AddtlNtryInf", transaction, "narration" + ) self.add_value_from_node( ns, node, @@ -217,6 +219,8 @@ def parse_statement(self, ns, node): result["date"] = sorted( transactions, key=lambda x: x["date"], reverse=True )[0]["date"] + for seq, vals in enumerate(transactions, start=1): + vals["sequence"] = seq return result def check_version(self, ns, root): diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata index 6b7fc096e..37b60b300 100644 --- a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -7,12 +7,16 @@ 'transactions': [{'account_number': 'CH2222000000123456789', 'amount': 2187.0, 'date': '2017-03-22', - 'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', 'partner_name': 'Banque Cantonale Vaudoise', - 'ref': '302388292000011111111111111'}, + 'payment_ref': '/', + 'ref': '302388292000011111111111111', + 'sequence': 1}, {'account_number': 'CH3333000000123456789', 'amount': 1296.0, 'date': '2017-03-22', - 'name': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', 'partner_name': 'Banque Cantonale Vaudoise', - 'ref': '302388292000022222222222222'}]}]) + 'payment_ref': '/', + 'ref': '302388292000022222222222222', + 'sequence': 2}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata index c51d6bb70..528f4f61b 100644 --- a/account_statement_import_camt/test_files/golden-camt053.pydata +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -7,28 +7,28 @@ 'transactions': [{'account_number': 'NL46ABNA0499998748', 'amount': -754.25, 'date': '2014-01-05', - 'name': 'Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014', 'partner_name': 'INSURANCE COMPANY TESTX', 'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', - 'ref': '435005714488-ABNO33052620'}, + 'ref': '435005714488-ABNO33052620', + 'sequence': 1}, {'account_number': 'NL46ABNA0499998748', 'amount': -564.05, 'date': '2014-01-05', - 'name': 'Direct Debit S14 0410', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206408'}, + 'ref': 'TESTBANK/NL/20141229/01206408', + 'sequence': 2}, {'account_number': 'NL46ABNA0499998748', 'amount': -100.0, 'date': '2014-01-05', - 'name': 'Direct Debit S14 0410', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206407'}, + 'ref': 'TESTBANK/NL/20141229/01206407', + 'sequence': 3}, {'account_number': 'NL69ABNA0522123643', 'amount': 1405.31, 'date': '2014-01-05', - 'name': 'INNDNL2U20140105000217200000708', 'partner_name': '3rd party Media', 'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773', - 'ref': '115'}]}]) + 'ref': '115', + 'sequence': 4}]}]) diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py index 0ccc10945..5e7b3a135 100644 --- a/account_statement_import_camt/tests/test_import_bank_statement.py +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -8,8 +8,6 @@ import tempfile from datetime import date -import mock - from odoo.modules.module import get_module_resource from odoo.tests.common import TransactionCase @@ -113,19 +111,13 @@ def setUp(self): } ) - @mock.patch( - "odoo.addons.account.models.sequence_mixin." - "SequenceMixin._constrains_date_sequence", - side_effect=False, - ) - def test_statement_import(self, constraint): + def test_statement_import(self): """Test correct creation of single statement.""" testfile = get_module_resource( "account_statement_import_camt", "test_files", "test-camt053" ) with open(testfile, "rb") as datafile: camt_file = base64.b64encode(datafile.read()) - self.env["account.statement.import"].create( { "statement_filename": "test import", @@ -150,12 +142,7 @@ def test_statement_import(self, constraint): ) ) - @mock.patch( - "odoo.addons.account.models.sequence_mixin." - "SequenceMixin._constrains_date_sequence", - side_effect=False, - ) - def test_zip_import(self, constraint): + def test_zip_import(self): """Test import of multiple statements from zip file.""" testfile = get_module_resource( "account_statement_import_camt", "test_files", "test-camt053.zip" From 01b69c0e28e7d08f24acd913ce59a4b5bdbfa5e8 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 2 Feb 2021 09:42:39 +0100 Subject: [PATCH 03/24] [FIX] Fix same eror in camt54 module --- account_statement_import_camt/models/parser.py | 2 -- .../test_files/golden-camt053-txdtls.pydata | 6 ++---- .../test_files/golden-camt053.pydata | 12 ++++-------- .../tests/test_import_bank_statement.py | 4 +++- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py index 0ee3e7391..0fdbeb278 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -219,8 +219,6 @@ def parse_statement(self, ns, node): result["date"] = sorted( transactions, key=lambda x: x["date"], reverse=True )[0]["date"] - for seq, vals in enumerate(transactions, start=1): - vals["sequence"] = seq return result def check_version(self, ns, root): diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata index 37b60b300..444180341 100644 --- a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -10,13 +10,11 @@ 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', 'partner_name': 'Banque Cantonale Vaudoise', 'payment_ref': '/', - 'ref': '302388292000011111111111111', - 'sequence': 1}, + 'ref': '302388292000011111111111111'}, {'account_number': 'CH3333000000123456789', 'amount': 1296.0, 'date': '2017-03-22', 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', 'partner_name': 'Banque Cantonale Vaudoise', 'payment_ref': '/', - 'ref': '302388292000022222222222222', - 'sequence': 2}]}]) + 'ref': '302388292000022222222222222'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata index 528f4f61b..4c1160252 100644 --- a/account_statement_import_camt/test_files/golden-camt053.pydata +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -9,26 +9,22 @@ 'date': '2014-01-05', 'partner_name': 'INSURANCE COMPANY TESTX', 'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', - 'ref': '435005714488-ABNO33052620', - 'sequence': 1}, + 'ref': '435005714488-ABNO33052620'}, {'account_number': 'NL46ABNA0499998748', 'amount': -564.05, 'date': '2014-01-05', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206408', - 'sequence': 2}, + 'ref': 'TESTBANK/NL/20141229/01206408'}, {'account_number': 'NL46ABNA0499998748', 'amount': -100.0, 'date': '2014-01-05', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206407', - 'sequence': 3}, + 'ref': 'TESTBANK/NL/20141229/01206407'}, {'account_number': 'NL69ABNA0522123643', 'amount': 1405.31, 'date': '2014-01-05', 'partner_name': '3rd party Media', 'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773', - 'ref': '115', - 'sequence': 4}]}]) + 'ref': '115'}]}]) diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py index 5e7b3a135..cda12fa99 100644 --- a/account_statement_import_camt/tests/test_import_bank_statement.py +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -118,6 +118,7 @@ def test_statement_import(self): ) with open(testfile, "rb") as datafile: camt_file = base64.b64encode(datafile.read()) + self.env["account.statement.import"].create( { "statement_filename": "test import", @@ -156,4 +157,5 @@ def test_zip_import(self): [("name", "in", ["1234Test/2", "1234Test/3"])] ) - self.assertTrue(all([st.line_ids for st in bank_st_record])) + self.assertTrue(all([st.line_ids for st in bank_st_record])) + self.assertEqual(bank_st_record[0].line_ids.mapped("sequence"), [1, 2, 3]) From e70eb4a094e26a74678e090170daa09c71e6ec0a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Feb 2021 08:43:16 +0000 Subject: [PATCH 04/24] account_statement_import_camt 14.0.1.1.0 --- account_statement_import_camt/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_statement_import_camt/__manifest__.py b/account_statement_import_camt/__manifest__.py index 9048d6e58..d4d056dfe 100644 --- a/account_statement_import_camt/__manifest__.py +++ b/account_statement_import_camt/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "CAMT Format Bank Statements Import", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "license": "AGPL-3", "author": "Therp BV, Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", From 2b0029ed819e179e4456305d5624fb6b39c7bfac Mon Sep 17 00:00:00 2001 From: Bosd Date: Fri, 23 Apr 2021 16:27:19 +0000 Subject: [PATCH 05/24] Translated using Weblate (Dutch) Currently translated at 75.0% (9 of 12 strings) Translation: bank-statement-import-14.0/bank-statement-import-14.0-account_statement_import_camt Translate-URL: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt/nl/ --- account_statement_import_camt/i18n/nl.po | 25 +++++++++++------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/account_statement_import_camt/i18n/nl.po b/account_statement_import_camt/i18n/nl.po index a0f9e29fb..b95bc0412 100644 --- a/account_statement_import_camt/i18n/nl.po +++ b/account_statement_import_camt/i18n/nl.po @@ -9,22 +9,22 @@ msgstr "" "Project-Id-Version: bank-statement-import (8.0)\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-04-16 08:08+0000\n" -"PO-Revision-Date: 2018-12-03 10:43+0000\n" -"Last-Translator: Yung-Wa \n" -"Language-Team: Dutch (http://www.transifex.com/oca/OCA-bank-statement-" -"import-8-0/language/nl/)\n" +"PO-Revision-Date: 2021-04-23 18:47+0000\n" +"Last-Translator: Bosd \n" +"Language-Team: Dutch (http://www.transifex.com/oca/" +"OCA-bank-statement-import-8-0/language/nl/)\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.3\n" +"X-Generator: Weblate 4.3.2\n" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser #, fuzzy msgid "Account Bank Statement Import CAMT parser" -msgstr "account.bank.statement.import.camt.parser" +msgstr "Account Bank Statement Import CAMT parser" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_bank_statement @@ -36,11 +36,10 @@ msgstr "Importeer bankafschrift" #: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line #, fuzzy msgid "Bank Statement Line" -msgstr "Importeer bankafschrift" +msgstr "bankafschrift regel" #. module: account_statement_import_camt #: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view -#, fuzzy msgid "CAMT" msgstr "CAMT" @@ -59,20 +58,18 @@ msgstr "Weergave naam" #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id -#, fuzzy msgid "ID" msgstr "ID" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_statement_import -#, fuzzy msgid "Import Bank Statement Files" -msgstr "Importeer bankafschrift" +msgstr "Importeer bankafschrift bestanden" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_journal msgid "Journal" -msgstr "" +msgstr "Dagboek" #. module: account_statement_import_camt #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update @@ -87,13 +84,13 @@ msgstr "Laatst gewijzigd op" #: code:addons/account_statement_import_camt/models/account_journal.py:0 #, python-format msgid "camt.053.001.02" -msgstr "" +msgstr "camt.053.001.02" #. module: account_statement_import_camt #: code:addons/account_statement_import_camt/models/account_journal.py:0 #, python-format msgid "camt.054.001.02" -msgstr "" +msgstr "camt.054.001.02" #. module: account_statement_import_camt #: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view From e81843c438d33f8ec7afc7973511c811f479ad85 Mon Sep 17 00:00:00 2001 From: Sergio Zanchetta Date: Thu, 25 Nov 2021 16:57:44 +0000 Subject: [PATCH 06/24] Added translation using Weblate (Italian) --- account_statement_import_camt/i18n/it.po | 89 ++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 account_statement_import_camt/i18n/it.po diff --git a/account_statement_import_camt/i18n/it.po b/account_statement_import_camt/i18n/it.po new file mode 100644 index 000000000..8f3919c3f --- /dev/null +++ b/account_statement_import_camt/i18n/it.po @@ -0,0 +1,89 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_statement_import_camt +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser +msgid "Account Bank Statement Import CAMT parser" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "CAMT" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name +msgid "Display Name" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id +msgid "ID" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_statement_import +msgid "Import Bank Statement Files" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model,name:account_statement_import_camt.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_statement_import_camt +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update +#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update +msgid "Last Modified on" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.053.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: code:addons/account_statement_import_camt/models/account_journal.py:0 +#, python-format +msgid "camt.054.001.02" +msgstr "" + +#. module: account_statement_import_camt +#: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view +msgid "zipped CAMT" +msgstr "" From 6ffc3d52973b9a12f0fb027e12a447c1da8df9c5 Mon Sep 17 00:00:00 2001 From: Sergio Zanchetta Date: Thu, 25 Nov 2021 16:59:13 +0000 Subject: [PATCH 07/24] Translated using Weblate (Italian) Currently translated at 83.3% (10 of 12 strings) Translation: bank-statement-import-14.0/bank-statement-import-14.0-account_statement_import_camt Translate-URL: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt/it/ --- account_statement_import_camt/i18n/it.po | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/account_statement_import_camt/i18n/it.po b/account_statement_import_camt/i18n/it.po index 8f3919c3f..167ec693a 100644 --- a/account_statement_import_camt/i18n/it.po +++ b/account_statement_import_camt/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-11-25 17:36+0000\n" +"Last-Translator: Sergio Zanchetta \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_statement_import_camt_parser @@ -22,17 +24,17 @@ msgstr "" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_bank_statement msgid "Bank Statement" -msgstr "" +msgstr "Estratto conto bancario" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_bank_statement_line msgid "Bank Statement Line" -msgstr "" +msgstr "Riga estratto conto bancario" #. module: account_statement_import_camt #: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view msgid "CAMT" -msgstr "" +msgstr "CAMT" #. module: account_statement_import_camt #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name @@ -41,7 +43,7 @@ msgstr "" #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: account_statement_import_camt #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id @@ -50,17 +52,17 @@ msgstr "" #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id msgid "ID" -msgstr "" +msgstr "ID" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_statement_import msgid "Import Bank Statement Files" -msgstr "" +msgstr "Importazione file estratto conto bancario" #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_journal msgid "Journal" -msgstr "" +msgstr "Registro" #. module: account_statement_import_camt #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update @@ -69,19 +71,19 @@ msgstr "" #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update #: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: account_statement_import_camt #: code:addons/account_statement_import_camt/models/account_journal.py:0 #, python-format msgid "camt.053.001.02" -msgstr "" +msgstr "camt.053.001.02" #. module: account_statement_import_camt #: code:addons/account_statement_import_camt/models/account_journal.py:0 #, python-format msgid "camt.054.001.02" -msgstr "" +msgstr "camt.054.001.02" #. module: account_statement_import_camt #: model_terms:ir.ui.view,arch_db:account_statement_import_camt.account_statement_import_view From f4b1d0afc92ecbefbf71dc74676ffeaef59efe7d Mon Sep 17 00:00:00 2001 From: Maksym Yankin Date: Wed, 26 Jan 2022 15:11:41 +0200 Subject: [PATCH 08/24] [MIG] account_statement_import_camt: Migration to 15.0 --- account_statement_import_camt/README.rst | 10 +++--- account_statement_import_camt/__manifest__.py | 2 +- .../i18n/account_statement_import_camt.pot | 29 +--------------- account_statement_import_camt/i18n/it.po | 2 +- .../models/account_statement_import.py | 1 + .../static/description/index.html | 6 ++-- .../tests/test_import_bank_statement.py | 34 +++++++++++-------- 7 files changed, 31 insertions(+), 53 deletions(-) diff --git a/account_statement_import_camt/README.rst b/account_statement_import_camt/README.rst index b2f9a88da..7317caee4 100644 --- a/account_statement_import_camt/README.rst +++ b/account_statement_import_camt/README.rst @@ -14,13 +14,13 @@ CAMT Format Bank Statements Import :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/14.0/account_statement_import_camt + :target: https://github.com/OCA/bank-statement-import/tree/15.0/account_statement_import_camt :alt: OCA/bank-statement-import .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/bank-statement-import-14-0/bank-statement-import-14-0-account_statement_import_camt + :target: https://translation.odoo-community.org/projects/bank-statement-import-15-0/bank-statement-import-15-0-account_statement_import_camt :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/14.0 + :target: https://runbot.odoo-community.org/runbot/174/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -73,6 +73,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt/__manifest__.py b/account_statement_import_camt/__manifest__.py index d4d056dfe..8166c37b4 100644 --- a/account_statement_import_camt/__manifest__.py +++ b/account_statement_import_camt/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "CAMT Format Bank Statements Import", - "version": "14.0.1.1.0", + "version": "15.0.1.0.0", "license": "AGPL-3", "author": "Therp BV, Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", diff --git a/account_statement_import_camt/i18n/account_statement_import_camt.pot b/account_statement_import_camt/i18n/account_statement_import_camt.pot index fa6652760..2c107f559 100644 --- a/account_statement_import_camt/i18n/account_statement_import_camt.pot +++ b/account_statement_import_camt/i18n/account_statement_import_camt.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -33,24 +33,6 @@ msgstr "" msgid "CAMT" msgstr "" -#. module: account_statement_import_camt -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__display_name -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__display_name -msgid "Display Name" -msgstr "" - -#. module: account_statement_import_camt -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement__id -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line__id -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal__id -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import__id -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser__id -msgid "ID" -msgstr "" - #. module: account_statement_import_camt #: model:ir.model,name:account_statement_import_camt.model_account_statement_import msgid "Import Bank Statement Files" @@ -61,15 +43,6 @@ msgstr "" msgid "Journal" msgstr "" -#. module: account_statement_import_camt -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_bank_statement_line____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_journal____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import____last_update -#: model:ir.model.fields,field_description:account_statement_import_camt.field_account_statement_import_camt_parser____last_update -msgid "Last Modified on" -msgstr "" - #. module: account_statement_import_camt #: code:addons/account_statement_import_camt/models/account_journal.py:0 #, python-format diff --git a/account_statement_import_camt/i18n/it.po b/account_statement_import_camt/i18n/it.po index 167ec693a..cb19c4ece 100644 --- a/account_statement_import_camt/i18n/it.po +++ b/account_statement_import_camt/i18n/it.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 15.0\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-11-25 17:36+0000\n" "Last-Translator: Sergio Zanchetta \n" diff --git a/account_statement_import_camt/models/account_statement_import.py b/account_statement_import_camt/models/account_statement_import.py index a213da968..bbb40208c 100644 --- a/account_statement_import_camt/models/account_statement_import.py +++ b/account_statement_import_camt/models/account_statement_import.py @@ -30,6 +30,7 @@ def _parse_file(self, data_file): ) transactions.extend(new) return currency, account_number, transactions + # pylint: disable=except-pass except (zipfile.BadZipFile, ValueError): pass # Not a camt file, returning super will call next candidate: diff --git a/account_statement_import_camt/static/description/index.html b/account_statement_import_camt/static/description/index.html index d3c233b73..3f5beedef 100644 --- a/account_statement_import_camt/static/description/index.html +++ b/account_statement_import_camt/static/description/index.html @@ -367,7 +367,7 @@

CAMT Format Bank Statements Import

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/bank-statement-import Translate me on Weblate Try me on Runbot

Module to import SEPA CAMT.053 and CAMT.054 Format bank statement files.

Table of contents

@@ -386,7 +386,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -415,7 +415,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/bank-statement-import project on GitHub.

+

This module is part of the OCA/bank-statement-import project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py index cda12fa99..135c3a680 100644 --- a/account_statement_import_camt/tests/test_import_bank_statement.py +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -15,9 +15,10 @@ class TestParser(TransactionCase): """Tests for the camt parser itself.""" - def setUp(self): - super(TestParser, self).setUp() - self.parser = self.env["account.statement.import.camt.parser"] + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.parser = cls.env["account.statement.import.camt.parser"] def _do_parse_test(self, inputfile, goldenfile): testfile = get_module_resource( @@ -83,31 +84,34 @@ class TestImport(TransactionCase): }, ] - def setUp(self): - super(TestImport, self).setUp() - bank = self.env["res.partner.bank"].create( + @classmethod + def setUpClass(cls): + super().setUpClass() + eur = cls.env.ref("base.EUR") + eur.write({"active": True}) + bank = cls.env["res.partner.bank"].create( { "acc_number": "NL77ABNA0574908765", - "partner_id": self.env.ref("base.main_partner").id, - "company_id": self.env.ref("base.main_company").id, - "bank_id": self.env.ref("base.res_bank_1").id, + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, } ) - self.env["res.partner.bank"].create( + cls.env["res.partner.bank"].create( { "acc_number": "NL46ABNA0499998748", - "partner_id": self.env.ref("base.main_partner").id, - "company_id": self.env.ref("base.main_company").id, - "bank_id": self.env.ref("base.res_bank_1").id, + "partner_id": cls.env.ref("base.main_partner").id, + "company_id": cls.env.ref("base.main_company").id, + "bank_id": cls.env.ref("base.res_bank_1").id, } ) - self.env["account.journal"].create( + cls.env["account.journal"].create( { "name": "Bank Journal - (test camt)", "code": "TBNKCAMT", "type": "bank", "bank_account_id": bank.id, - "currency_id": self.env.ref("base.EUR").id, + "currency_id": eur.id, } ) From 9d3bc053300ea019c97cb10e4af0963210a4aa58 Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Tue, 1 Feb 2022 11:02:54 +0100 Subject: [PATCH 09/24] [IMP] account_statement_import_camt: look for currency under Ntry Encountered in a Camt.054 statement: currency listed under /BkToCstmrDbtCdtNtfctn/Ntfctn/Ntry/Amt/@Ccy --- account_statement_import_camt/README.rst | 2 +- .../models/parser.py | 10 +- .../readme/CONTRIBUTORS.rst | 2 +- .../static/description/index.html | 2 +- .../test_files/golden-camt054.pydata | 13 ++ .../test_files/test-camt054 | 127 ++++++++++++++++++ .../tests/test_import_bank_statement.py | 3 + 7 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 account_statement_import_camt/test_files/golden-camt054.pydata create mode 100644 account_statement_import_camt/test_files/test-camt054 diff --git a/account_statement_import_camt/README.rst b/account_statement_import_camt/README.rst index 7317caee4..80256a6c7 100644 --- a/account_statement_import_camt/README.rst +++ b/account_statement_import_camt/README.rst @@ -54,7 +54,7 @@ Contributors ~~~~~~~~~~~~ * Holger Brunn -* Stefan Rijnhart +* Stefan Rijnhart * Ronald Portier * Andrea Stirpe * Maxence Groine diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py index 0fdbeb278..ecbd8d861 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -204,7 +204,15 @@ def parse_statement(self, ns, node): ) self.add_value_from_node(ns, node, "./ns:Id", result, "name") self.add_value_from_node( - ns, node, ["./ns:Acct/ns:Ccy", "./ns:Bal/ns:Amt/@Ccy"], result, "currency" + ns, + node, + [ + "./ns:Acct/ns:Ccy", + "./ns:Bal/ns:Amt/@Ccy", + "./ns:Ntry/ns:Amt/@Ccy", + ], + result, + "currency", ) result["balance_start"], result["balance_end_real"] = self.get_balance_amounts( ns, node diff --git a/account_statement_import_camt/readme/CONTRIBUTORS.rst b/account_statement_import_camt/readme/CONTRIBUTORS.rst index 32d01b271..d869e5dd7 100644 --- a/account_statement_import_camt/readme/CONTRIBUTORS.rst +++ b/account_statement_import_camt/readme/CONTRIBUTORS.rst @@ -1,5 +1,5 @@ * Holger Brunn -* Stefan Rijnhart +* Stefan Rijnhart * Ronald Portier * Andrea Stirpe * Maxence Groine diff --git a/account_statement_import_camt/static/description/index.html b/account_statement_import_camt/static/description/index.html index 3f5beedef..8c536f98b 100644 --- a/account_statement_import_camt/static/description/index.html +++ b/account_statement_import_camt/static/description/index.html @@ -401,7 +401,7 @@

Authors

Contributors

  • Holger Brunn <hbrunn@therp.nl>
  • -
  • Stefan Rijnhart <srijnhart@therp.nl>
  • +
  • Stefan Rijnhart <stefan.rijnhart@opener.amsterdam>
  • Ronald Portier <rportier@therp.nl>
  • Andrea Stirpe <a.stirpe@onestein.nl>
  • Maxence Groine <mgroine@fiefmanage.ch>
  • diff --git a/account_statement_import_camt/test_files/golden-camt054.pydata b/account_statement_import_camt/test_files/golden-camt054.pydata new file mode 100644 index 000000000..6a00cb5af --- /dev/null +++ b/account_statement_import_camt/test_files/golden-camt054.pydata @@ -0,0 +1,13 @@ +('EUR', + 'NL77ABNA0574908765', + [{'balance_end_real': 0.0, + 'balance_start': 0.0, + 'date': '2022-01-26', + 'name': '20220120000000000000000', + 'transactions': [{'account_number': 'NL46ABNA0499998748', + 'amount': 5.0, + 'date': '2022-01-26', + 'narration': 'Additional entry info', + 'partner_name': 'Test Customer', + 'payment_ref': 'MIB InstrId305-312MM20211231v1', + 'ref': '000000000000000000000000003'}]}]) diff --git a/account_statement_import_camt/test_files/test-camt054 b/account_statement_import_camt/test_files/test-camt054 new file mode 100644 index 000000000..0dd093381 --- /dev/null +++ b/account_statement_import_camt/test_files/test-camt054 @@ -0,0 +1,127 @@ + + + + + 20220126375204763458853 + 2022-01-26T23:40:40 + + 1 + true + + SPS/1.7/PROD + + + 20220120000000000000000 + 2022-01-26T23:40:40 + + 2022-01-26T00:00:00 + 2022-01-26T23:59:59 + + + OTHR + + + + NL77ABNA0574908765 + + + Example company + + + + NL0000000000000000000 + 5.00 + CRDT + false + BOOK + +
    2022-01-26
    +
    + +
    2022-01-26
    +
    + 98888208N8 + + + PMNT + + RCDT + VCOM + + + + + + 1 + + + + 15180015077602405 + MIB InstrId305-312MM20211231v1 + ENDTOENDID-01 + + 00 + 20220120000000000000001 + + + 5.00 + CRDT + + + PMNT + + RCDT + ATXN + + + + + + Test Customer + + Test street 1 + 1234 AB Test city + + + + + NL46ABNA0499998748 + + + + + + + + NZNCC020368 + + Test Bank + + Test street 5 + 1234 AB Test city + + + + + + + + + + QRR + + + 000000000000000000000000003 + + + + + 2022-01-26T20:00:00 + + + + Additional entry info +
    +
    +
    +
    diff --git a/account_statement_import_camt/tests/test_import_bank_statement.py b/account_statement_import_camt/tests/test_import_bank_statement.py index 135c3a680..2fccda9ef 100644 --- a/account_statement_import_camt/tests/test_import_bank_statement.py +++ b/account_statement_import_camt/tests/test_import_bank_statement.py @@ -47,6 +47,9 @@ def _do_parse_test(self, inputfile, goldenfile): def test_parse(self): self._do_parse_test("test-camt053", "golden-camt053.pydata") + def test_parse_camt054(self): + self._do_parse_test("test-camt054", "golden-camt054.pydata") + def test_parse_txdtls(self): self._do_parse_test("test-camt053-txdtls", "golden-camt053-txdtls.pydata") From c3279f44a0c576846316e8108e9baa3556f2028a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=A9o=20Goddet?= Date: Mon, 10 Jan 2022 23:18:44 +0100 Subject: [PATCH 10/24] [IMP] account_bank_statement_import_camt: more infos in narration with this commit, the narration field is filled with infos find in the camt file such as reversal indicator, return reason, cheque number, ... before only a banking ref was present. The transaction type field is also filled. --- .../models/parser.py | 190 +++++++++++++++++- .../newsfragment/1_verbose_narration.feature | 15 ++ .../test_files/golden-camt053-txdtls.pydata | 32 ++- .../test_files/golden-camt053.pydata | 63 +++++- .../test_files/golden-camt054.pydata | 17 +- 5 files changed, 301 insertions(+), 16 deletions(-) create mode 100644 account_statement_import_camt/readme/newsfragment/1_verbose_narration.feature diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py index ecbd8d861..ac7002896 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -6,7 +6,7 @@ from lxml import etree -from odoo import models +from odoo import _, models class CamtParser(models.AbstractModel): @@ -68,7 +68,103 @@ def parse_transaction_details(self, ns, node, transaction): "payment_ref", join_str="\n", ) - # name + + self.add_value_from_node( + ns, + node, + ["./ns:RmtInf/ns:Ustrd"], + transaction["narration"], + "%s (RmtInf/Ustrd)" % _("Unstructured Reference"), + join_str=" ", + ) + self.add_value_from_node( + ns, + node, + ["./ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref"], + transaction["narration"], + "%s (RmtInf/Strd/CdtrRefInf/Ref)" % _("Structured Reference"), + join_str=" ", + ) + self.add_value_from_node( + ns, + node, + ["./ns:AddtlTxInf"], + transaction["narration"], + "%s (AddtlTxInf)" % _("Additional Transaction Information"), + join_str=" ", + ) + self.add_value_from_node( + ns, + node, + ["./ns:RtrInf/ns:Rsn/ns:Cd"], + transaction["narration"], + "%s (RtrInf/Rsn/Cd)" % _("Return Reason Code"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:RtrInf/ns:Rsn/ns:Cd"], + transaction["narration"], + "%s (RtrInf/Rsn/Prtry)" % _("Return Reason Code (Proprietary)"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:RtrInf/ns:AddtlInf"], + transaction["narration"], + "%s (RtrInf/AddtlInf)" % _("Return Reason Additional Information"), + join_str=" ", + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:MsgId"], + transaction["narration"], + "%s (Refs/MsgId)" % _("Msg Id"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:AcctSvcrRef"], + transaction["narration"], + "%s (Refs/AcctSvcrRef)" % _("Account Servicer Reference"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:EndToEndId"], + transaction["narration"], + "%s (Refs/EndToEndId)" % _("End To End Id"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:InstrId"], + transaction["narration"], + "%s (Refs/InstrId)" % _("Instructed Id"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:TxId"], + transaction["narration"], + "%s (Refs/TxId)" % _("Transaction Identification"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:MntId"], + transaction["narration"], + "%s (Refs/MntId)" % _("Mandate Id"), + ) + self.add_value_from_node( + ns, + node, + ["./ns:Refs/ns:ChqNb"], + transaction["narration"], + "%s (Refs/ChqNb)" % _("Cheque Number"), + ) + self.add_value_from_node( ns, node, ["./ns:AddtlTxInf"], transaction, "payment_ref", join_str="\n" ) @@ -111,6 +207,24 @@ def parse_transaction_details(self, ns, node, transaction): transaction, "partner_name", ) + self.add_value_from_node( + ns, + party_node[0], + "./ns:PstlAdr/ns:StrtNm|" + "./ns:PstlAdr/ns:BldgNb|" + "./ns:PstlAdr/ns:BldgNm|" + "./ns:PstlAdr/ns:PstBx|" + "./ns:PstlAdr/ns:PstCd|" + "./ns:PstlAdr/ns:TwnNm|" + "./ns:PstlAdr/ns:TwnLctnNm|" + "./ns:PstlAdr/ns:DstrctNm|" + "./ns:PstlAdr/ns:CtrySubDvsn|" + "./ns:PstlAdr/ns:Ctry|" + "./ns:PstlAdr/ns:AdrLine", + transaction["narration"], + "%s (PstlAdr)" % _("Postal Address"), + join_str=" | ", + ) # Get remote_account from iban or from domestic account: account_node = node.xpath( "./ns:RltdPties/ns:%sAcct/ns:Id" % party_type, namespaces={"ns": ns} @@ -128,16 +242,37 @@ def parse_transaction_details(self, ns, node, transaction): "account_number", ) + def generate_narration(self, transaction): + # this block ensure compatibility with v13 + transaction["narration"] = { + "%s (RltdPties/Nm)" + % _("Partner Name"): transaction.get("partner_name", ""), + "%s (RltdPties/Acct)" + % _("Partner Account Number"): transaction.get("partner_name", ""), + "%s (BookgDt)" % _("Transaction Date"): transaction.get("date", ""), + _("Reference"): transaction.get("ref", ""), + _("Communication"): transaction.get("name", ""), + "%s (BkTxCd)" + % _("Transaction Type"): transaction.get("transaction_type", ""), + **transaction["narration"], + } + + transaction["narration"] = "\n".join( + ["%s: %s" % (key, val) for key, val in transaction["narration"].items()] + ) + def parse_entry(self, ns, node): """Parse an Ntry node and yield transactions""" - transaction = {"payment_ref": "/", "amount": 0} # fallback defaults + transaction = { + "payment_ref": "/", + "amount": 0, + "narration": {}, + "transaction_type": {}, + } # fallback defaults self.add_value_from_node(ns, node, "./ns:BookgDt/ns:Dt", transaction, "date") amount = self.parse_amount(ns, node) if amount != 0.0: transaction["amount"] = amount - self.add_value_from_node( - ns, node, "./ns:AddtlNtryInf", transaction, "narration" - ) self.add_value_from_node( ns, node, @@ -150,14 +285,57 @@ def parse_entry(self, ns, node): "ref", ) + # enrich the notes with some more infos when they are available + self.add_value_from_node( + ns, + node, + "./ns:AddtlNtryInf", + transaction["narration"], + "%s (AddtlNtryInf)" % _("Additional Entry Information"), + ) + self.add_value_from_node( + ns, + node, + "./ns:RvslInd", + transaction["narration"], + "%s (RvslInd)" % _("Reversal Indicator"), + ) + + self.add_value_from_node( + ns, + node, + "./ns:BkTxCd/ns:Domn/ns:Cd", + transaction["transaction_type"], + "Code", + ) + self.add_value_from_node( + ns, + node, + "./ns:BkTxCd/ns:Domn/ns:Fmly/ns:Cd", + transaction["transaction_type"], + "FmlyCd", + ) + self.add_value_from_node( + ns, + node, + "./ns:BkTxCd/ns:Domn/ns:Fmly/ns:SubFmlyCd", + transaction["transaction_type"], + "SubFmlyCd", + ) + transaction["transaction_type"] = ( + "-".join(transaction["transaction_type"].values()) or "" + ) + details_nodes = node.xpath("./ns:NtryDtls/ns:TxDtls", namespaces={"ns": ns}) if len(details_nodes) == 0: + self.generate_narration(transaction) yield transaction return transaction_base = transaction for node in details_nodes: transaction = transaction_base.copy() self.parse_transaction_details(ns, node, transaction) + self.generate_narration(transaction) yield transaction def get_balance_amounts(self, ns, node): diff --git a/account_statement_import_camt/readme/newsfragment/1_verbose_narration.feature b/account_statement_import_camt/readme/newsfragment/1_verbose_narration.feature new file mode 100644 index 000000000..792d6b009 --- /dev/null +++ b/account_statement_import_camt/readme/newsfragment/1_verbose_narration.feature @@ -0,0 +1,15 @@ +The narration field now contains a lot of information as key: value pairs. See code for complete list of parsed values. + + Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise + Partner Account Number (RltdPties/Acct): Banque Cantonale Vaudoise + Transaction Date (BookgDt): 2017-03-22 + Reference: 302388292000022222222222222 + Communication: + Transaction Type (BkTxCd): PMNT-RCDT-VCOM + Additional Entry Information (AddtlNtryInf): CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE + Reversal Indicator (RvslInd): false + Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 302388292000022222222222222 + Account Servicer Reference (Refs/AcctSvcrRef): 123456CHCAFEBABE + Postal Address (PstlAdr): Place Saint-François | 14 | 1003 | Lausanne | CH2 + +The previous value is available at `Additional Entry Information (AddtlNtryInf):` diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata index 444180341..a993ba3ac 100644 --- a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -7,14 +7,38 @@ 'transactions': [{'account_number': 'CH2222000000123456789', 'amount': 2187.0, 'date': '2017-03-22', - 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): Banque Cantonale Vaudoise\n' + 'Transaction Date (BookgDt): 2017-03-22\n' + 'Reference: 302388292000011111111111111\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: ' + '123456CHCAFEBABE\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 302388292000011111111111111\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 123456CHCAFEBABE\n' + 'Postal Address (PstlAdr): Place Saint-François | 14 | 1003 | Lausanne | CH1', 'partner_name': 'Banque Cantonale Vaudoise', 'payment_ref': '/', - 'ref': '302388292000011111111111111'}, + 'ref': '302388292000011111111111111', + 'transaction_type': 'PMNT-RCDT-VCOM'}, {'account_number': 'CH3333000000123456789', 'amount': 1296.0, 'date': '2017-03-22', - 'narration': 'CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE', + 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): Banque Cantonale Vaudoise\n' + 'Transaction Date (BookgDt): 2017-03-22\n' + 'Reference: 302388292000022222222222222\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: ' + '123456CHCAFEBABE\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 302388292000022222222222222\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 123456CHCAFEBABE\n' + 'Postal Address (PstlAdr): Place Saint-François | 14 | 1003 | Lausanne | CH2', 'partner_name': 'Banque Cantonale Vaudoise', 'payment_ref': '/', - 'ref': '302388292000022222222222222'}]}]) + 'ref': '302388292000022222222222222', + 'transaction_type': 'PMNT-RCDT-VCOM'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata index 4c1160252..73172a6c1 100644 --- a/account_statement_import_camt/test_files/golden-camt053.pydata +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -7,24 +7,79 @@ 'transactions': [{'account_number': 'NL46ABNA0499998748', 'amount': -754.25, 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): INSURANCE COMPANY TESTX\n' + 'Partner Account Number (RltdPties/Acct): INSURANCE COMPANY TESTX\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: 435005714488-ABNO33052620\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RDDT-ESDD\n' + 'Unstructured Reference (RmtInf/Ustrd): Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014\n' + 'Additional Transaction Information (AddtlTxInf): MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014\n' + 'End To End Id (Refs/EndToEndId): 435005714488-ABNO33052620\n' + 'Instructed Id (Refs/InstrId): INNDNL2U20141231000142300002844\n' + 'Postal Address (PstlAdr): TEST STREET 20 | 1234 AB TESTCITY | NL', 'partner_name': 'INSURANCE COMPANY TESTX', 'payment_ref': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', - 'ref': '435005714488-ABNO33052620'}, + 'ref': '435005714488-ABNO33052620', + 'transaction_type': 'PMNT-RDDT-ESDD'}, {'account_number': 'NL46ABNA0499998748', 'amount': -564.05, 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: TESTBANK/NL/20141229/01206408\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-IDDT-UPDD\n' + 'Reversal Indicator (RvslInd): true\n' + 'Unstructured Reference (RmtInf/Ustrd): Direct Debit S14 0410\n' + 'Additional Transaction Information (AddtlTxInf): Direct debit S14 0410 AC07 Rek.nummer blokkade ' + 'TESTBANK/NL/20141229/01206408\n' + 'Return Reason Code (RtrInf/Rsn/Cd): AC06\n' + 'Return Reason Code (Proprietary) (RtrInf/Rsn/Prtry): AC06\n' + 'End To End Id (Refs/EndToEndId): TESTBANK/NL/20141229/01206408\n' + 'Instructed Id (Refs/InstrId): TESTBANK/NL/20141229/01206408\n' + 'Postal Address (PstlAdr): NL', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206408'}, + 'ref': 'TESTBANK/NL/20141229/01206408', + 'transaction_type': 'PMNT-IDDT-UPDD'}, {'account_number': 'NL46ABNA0499998748', 'amount': -100.0, 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: TESTBANK/NL/20141229/01206407\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-IDDT-UPDD\n' + 'Reversal Indicator (RvslInd): true\n' + 'Unstructured Reference (RmtInf/Ustrd): Direct Debit S14 0410\n' + 'Additional Transaction Information (AddtlTxInf): Direct debit S14 0410 AC07 Rek.nummer blokkade ' + 'TESTBANK/NL/20141229/01206408\n' + 'Return Reason Code (RtrInf/Rsn/Cd): AC06\n' + 'Return Reason Code (Proprietary) (RtrInf/Rsn/Prtry): AC06\n' + 'End To End Id (Refs/EndToEndId): TESTBANK/NL/20141229/01206407\n' + 'Instructed Id (Refs/InstrId): TESTBANK/NL/20141229/01206407\n' + 'Postal Address (PstlAdr): NL', 'partner_name': 'Test Customer', 'payment_ref': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', - 'ref': 'TESTBANK/NL/20141229/01206407'}, + 'ref': 'TESTBANK/NL/20141229/01206407', + 'transaction_type': 'PMNT-IDDT-UPDD'}, {'account_number': 'NL69ABNA0522123643', 'amount': 1405.31, 'date': '2014-01-05', + 'narration': 'Partner Name (RltdPties/Nm): 3rd party Media\n' + 'Partner Account Number (RltdPties/Acct): 3rd party Media\n' + 'Transaction Date (BookgDt): 2014-01-05\n' + 'Reference: 115\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-ESCT\n' + 'Additional Transaction Information (AddtlTxInf): #RD PARTY MEDIA CUSNO 90782 4210773\n' + 'End To End Id (Refs/EndToEndId): 115\n' + 'Instructed Id (Refs/InstrId): INNDNL2U20140105000217200000708\n' + 'Postal Address (PstlAdr): SOMESTREET 570-A | 1276 ML HOUSCITY | NL', 'partner_name': '3rd party Media', 'payment_ref': '#RD PARTY MEDIA CUSNO 90782 4210773', - 'ref': '115'}]}]) + 'ref': '115', + 'transaction_type': 'PMNT-RCDT-ESCT'}]}]) diff --git a/account_statement_import_camt/test_files/golden-camt054.pydata b/account_statement_import_camt/test_files/golden-camt054.pydata index 6a00cb5af..ac60bdb10 100644 --- a/account_statement_import_camt/test_files/golden-camt054.pydata +++ b/account_statement_import_camt/test_files/golden-camt054.pydata @@ -7,7 +7,20 @@ 'transactions': [{'account_number': 'NL46ABNA0499998748', 'amount': 5.0, 'date': '2022-01-26', - 'narration': 'Additional entry info', + 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Transaction Date (BookgDt): 2022-01-26\n' + 'Reference: 000000000000000000000000003\n' + 'Communication: \n' + 'Transaction Type (BkTxCd): PMNT-RCDT-VCOM\n' + 'Additional Entry Information (AddtlNtryInf): Additional entry info\n' + 'Reversal Indicator (RvslInd): false\n' + 'Structured Reference (RmtInf/Strd/CdtrRefInf/Ref): 000000000000000000000000003\n' + 'Account Servicer Reference (Refs/AcctSvcrRef): 15180015077602405\n' + 'End To End Id (Refs/EndToEndId): ENDTOENDID-01\n' + 'Instructed Id (Refs/InstrId): MIB InstrId305-312MM20211231v1\n' + 'Postal Address (PstlAdr): Test street 1 | 1234 AB Test city', 'partner_name': 'Test Customer', 'payment_ref': 'MIB InstrId305-312MM20211231v1', - 'ref': '000000000000000000000000003'}]}]) + 'ref': '000000000000000000000000003', + 'transaction_type': 'PMNT-RCDT-VCOM'}]}]) From 7dbe7fd522ba0965a51c47ed2e02f2f230eb729c Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Mon, 13 Feb 2023 18:41:28 +0100 Subject: [PATCH 11/24] account_statement_import_camt - fix counterparty data --- account_statement_import_camt/models/parser.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/account_statement_import_camt/models/parser.py b/account_statement_import_camt/models/parser.py index ac7002896..15b526739 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -193,12 +193,13 @@ def parse_transaction_details(self, ns, node, transaction): ) if party_node: name_node = node.xpath( - "./ns:RltdPties/ns:%s/ns:Nm" % party_type, namespaces={"ns": ns} + "./ns:RltdPties/ns:{pt}/ns:Nm | ./ns:RltdPties/ns:{pt}/ns:Pty/ns:Nm".format( + pt=party_type + ), + namespaces={"ns": ns}, ) if name_node: - self.add_value_from_node( - ns, party_node[0], "./ns:Nm", transaction, "partner_name" - ) + transaction["partner_name"] = name_node[0].text else: self.add_value_from_node( ns, @@ -248,7 +249,7 @@ def generate_narration(self, transaction): "%s (RltdPties/Nm)" % _("Partner Name"): transaction.get("partner_name", ""), "%s (RltdPties/Acct)" - % _("Partner Account Number"): transaction.get("partner_name", ""), + % _("Partner Account Number"): transaction.get("account_number", ""), "%s (BookgDt)" % _("Transaction Date"): transaction.get("date", ""), _("Reference"): transaction.get("ref", ""), _("Communication"): transaction.get("name", ""), From 6b7167571f1a2000d3a0ddeb7912740f9755c082 Mon Sep 17 00:00:00 2001 From: Luc De Meyer Date: Mon, 13 Feb 2023 22:57:37 +0100 Subject: [PATCH 12/24] fix camt unit tests --- .../test_files/golden-camt053-txdtls.pydata | 4 ++-- .../test_files/golden-camt053.pydata | 8 ++++---- .../test_files/golden-camt054.pydata | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata index a993ba3ac..ed46eb922 100644 --- a/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata +++ b/account_statement_import_camt/test_files/golden-camt053-txdtls.pydata @@ -8,7 +8,7 @@ 'amount': 2187.0, 'date': '2017-03-22', 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' - 'Partner Account Number (RltdPties/Acct): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): CH2222000000123456789\n' 'Transaction Date (BookgDt): 2017-03-22\n' 'Reference: 302388292000011111111111111\n' 'Communication: \n' @@ -27,7 +27,7 @@ 'amount': 1296.0, 'date': '2017-03-22', 'narration': 'Partner Name (RltdPties/Nm): Banque Cantonale Vaudoise\n' - 'Partner Account Number (RltdPties/Acct): Banque Cantonale Vaudoise\n' + 'Partner Account Number (RltdPties/Acct): CH3333000000123456789\n' 'Transaction Date (BookgDt): 2017-03-22\n' 'Reference: 302388292000022222222222222\n' 'Communication: \n' diff --git a/account_statement_import_camt/test_files/golden-camt053.pydata b/account_statement_import_camt/test_files/golden-camt053.pydata index 73172a6c1..4124b70fa 100644 --- a/account_statement_import_camt/test_files/golden-camt053.pydata +++ b/account_statement_import_camt/test_files/golden-camt053.pydata @@ -8,7 +8,7 @@ 'amount': -754.25, 'date': '2014-01-05', 'narration': 'Partner Name (RltdPties/Nm): INSURANCE COMPANY TESTX\n' - 'Partner Account Number (RltdPties/Acct): INSURANCE COMPANY TESTX\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' 'Transaction Date (BookgDt): 2014-01-05\n' 'Reference: 435005714488-ABNO33052620\n' 'Communication: \n' @@ -26,7 +26,7 @@ 'amount': -564.05, 'date': '2014-01-05', 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' - 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' 'Transaction Date (BookgDt): 2014-01-05\n' 'Reference: TESTBANK/NL/20141229/01206408\n' 'Communication: \n' @@ -48,7 +48,7 @@ 'amount': -100.0, 'date': '2014-01-05', 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' - 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' 'Transaction Date (BookgDt): 2014-01-05\n' 'Reference: TESTBANK/NL/20141229/01206407\n' 'Communication: \n' @@ -70,7 +70,7 @@ 'amount': 1405.31, 'date': '2014-01-05', 'narration': 'Partner Name (RltdPties/Nm): 3rd party Media\n' - 'Partner Account Number (RltdPties/Acct): 3rd party Media\n' + 'Partner Account Number (RltdPties/Acct): NL69ABNA0522123643\n' 'Transaction Date (BookgDt): 2014-01-05\n' 'Reference: 115\n' 'Communication: \n' diff --git a/account_statement_import_camt/test_files/golden-camt054.pydata b/account_statement_import_camt/test_files/golden-camt054.pydata index ac60bdb10..79e01712d 100644 --- a/account_statement_import_camt/test_files/golden-camt054.pydata +++ b/account_statement_import_camt/test_files/golden-camt054.pydata @@ -8,7 +8,7 @@ 'amount': 5.0, 'date': '2022-01-26', 'narration': 'Partner Name (RltdPties/Nm): Test Customer\n' - 'Partner Account Number (RltdPties/Acct): Test Customer\n' + 'Partner Account Number (RltdPties/Acct): NL46ABNA0499998748\n' 'Transaction Date (BookgDt): 2022-01-26\n' 'Reference: 000000000000000000000000003\n' 'Communication: \n' From 34fee51a1d7669f6cb7be387f15cdec29d7621ab Mon Sep 17 00:00:00 2001 From: sonhd91 Date: Fri, 2 Dec 2022 14:53:49 +0700 Subject: [PATCH 13/24] [16.0][MIG] account_statement_import_camt: Migrate to version 16.0 --- account_statement_import_camt/README.rst | 22 ++++++---- account_statement_import_camt/__manifest__.py | 4 +- .../readme/CONTRIBUTORS.rst | 3 ++ .../readme/CREDITS.rst | 1 + .../static/description/index.html | 42 +++++++++++++------ .../views/account_bank_statement_import.xml | 2 +- 6 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 account_statement_import_camt/readme/CREDITS.rst diff --git a/account_statement_import_camt/README.rst b/account_statement_import_camt/README.rst index 80256a6c7..7890133d5 100644 --- a/account_statement_import_camt/README.rst +++ b/account_statement_import_camt/README.rst @@ -14,14 +14,14 @@ CAMT Format Bank Statements Import :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github - :target: https://github.com/OCA/bank-statement-import/tree/15.0/account_statement_import_camt + :target: https://github.com/OCA/bank-statement-import/tree/16.0/account_statement_import_camt :alt: OCA/bank-statement-import .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/bank-statement-import-15-0/bank-statement-import-15-0-account_statement_import_camt + :target: https://translation.odoo-community.org/projects/bank-statement-import-16-0/bank-statement-import-16-0-account_statement_import_camt :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/174/15.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/webui/builds.html?repo=OCA/bank-statement-import&target_branch=16.0 + :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -59,6 +59,14 @@ Contributors * Andrea Stirpe * Maxence Groine * Iryna Vyshnevska +* `Trobz `_: + + * Son Ho + +Other credits +~~~~~~~~~~~~~ + +The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp Maintainers ~~~~~~~~~~~ @@ -73,6 +81,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/bank-statement-import `_ project on GitHub. +This module is part of the `OCA/bank-statement-import `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/account_statement_import_camt/__manifest__.py b/account_statement_import_camt/__manifest__.py index 8166c37b4..d1168a843 100644 --- a/account_statement_import_camt/__manifest__.py +++ b/account_statement_import_camt/__manifest__.py @@ -2,11 +2,11 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). { "name": "CAMT Format Bank Statements Import", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "license": "AGPL-3", "author": "Therp BV, Odoo Community Association (OCA)", "website": "https://github.com/OCA/bank-statement-import", "category": "Banking addons", - "depends": ["account_statement_import"], + "depends": ["account_statement_import_file"], "data": ["views/account_bank_statement_import.xml"], } diff --git a/account_statement_import_camt/readme/CONTRIBUTORS.rst b/account_statement_import_camt/readme/CONTRIBUTORS.rst index d869e5dd7..168338a7e 100644 --- a/account_statement_import_camt/readme/CONTRIBUTORS.rst +++ b/account_statement_import_camt/readme/CONTRIBUTORS.rst @@ -4,3 +4,6 @@ * Andrea Stirpe * Maxence Groine * Iryna Vyshnevska +* `Trobz `_: + + * Son Ho diff --git a/account_statement_import_camt/readme/CREDITS.rst b/account_statement_import_camt/readme/CREDITS.rst new file mode 100644 index 000000000..70bc307ad --- /dev/null +++ b/account_statement_import_camt/readme/CREDITS.rst @@ -0,0 +1 @@ +The migration of this module from 15.0 to 16.0 was financially supported by Camptocamp diff --git a/account_statement_import_camt/static/description/index.html b/account_statement_import_camt/static/description/index.html index 8c536f98b..98713919a 100644 --- a/account_statement_import_camt/static/description/index.html +++ b/account_statement_import_camt/static/description/index.html @@ -3,7 +3,7 @@ - + CAMT Format Bank Statements Import