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 00000000..b2f9a88d --- /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 00000000..0650744f --- /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 00000000..9048d6e5 --- /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 00000000..fa665276 --- /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 00000000..efda2d60 --- /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 00000000..f485733d --- /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 00000000..265ef328 --- /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 00000000..a3cea4a4 --- /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 00000000..6052e06f --- /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 00000000..a031758f --- /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 00000000..4cded7be --- /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 00000000..f1cce84a --- /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 00000000..3688d441 --- /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 00000000..1de73ef5 --- /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 00000000..a0f9e29f --- /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 00000000..9b4fa11e --- /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 00000000..15aaf59d --- /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 00000000..f1dfeb00 --- /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 00000000..1fe7a2a7 --- /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 00000000..9846f90a --- /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 00000000..55ff4dc6 --- /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 00000000..a213da96 --- /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 00000000..313e5c17 --- /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 00000000..2c66b7a2 --- /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 00000000..32d01b27 --- /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 00000000..c795774e --- /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 00000000..d3c233b7 --- /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 00000000..ca89faa5 --- /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 00000000..6b7fc096 --- /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 00000000..c51d6bb7 --- /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 00000000..1f15c84c --- /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 00000000..03f8f629 --- /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 00000000..cf7c38f2 --- /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 00000000..bb3456ae --- /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 00000000..0ccc1094 --- /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 00000000..f3044a28 --- /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 2c66b7a2..0ee3e739 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -65,7 +65,7 @@ class CamtParser(models.AbstractModel): "./ns:Refs/ns:InstrId", ], transaction, - "name", + "payment_ref", join_str="\n", ) # name @@ -130,12 +130,14 @@ class CamtParser(models.AbstractModel): 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 @@ class CamtParser(models.AbstractModel): 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 6b7fc096..37b60b30 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 c51d6bb7..528f4f61 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 0ccc1094..5e7b3a13 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 pprint 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 @@ class TestImport(TransactionCase): } ) - @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 @@ class TestImport(TransactionCase): ) ) - @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 0ee3e739..0fdbeb27 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -219,8 +219,6 @@ class CamtParser(models.AbstractModel): 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 37b60b30..44418034 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 528f4f61..4c116025 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 5e7b3a13..cda12fa9 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 @@ class TestImport(TransactionCase): ) 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 @@ class TestImport(TransactionCase): [("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 9048d6e5..d4d056df 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 a0f9e29f..b95bc041 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 00000000..8f3919c3 --- /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 8f3919c3..167ec693 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 b2f9a88d..7317caee 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 d4d056df..8166c37b 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 fa665276..2c107f55 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 167ec693..cb19c4ec 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 a213da96..bbb40208 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 @@ class AccountBankStatementImport(models.TransientModel): ) 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 d3c233b7..3f5beede 100644 --- a/account_statement_import_camt/static/description/index.html +++ b/account_statement_import_camt/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! 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 @@ ul.auto-toc {

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 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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 cda12fa9..135c3a68 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 @@ 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"] + @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 7317caee..80256a6c 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 0fdbeb27..ecbd8d86 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -204,7 +204,15 @@ class CamtParser(models.AbstractModel): ) 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 32d01b27..d869e5dd 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 3f5beede..8c536f98 100644 --- a/account_statement_import_camt/static/description/index.html +++ b/account_statement_import_camt/static/description/index.html @@ -401,7 +401,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

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 00000000..6a00cb5a --- /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 00000000..0dd09338 --- /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 135c3a68..2fccda9e 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 @@ class TestParser(TransactionCase): 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 ecbd8d86..ac700289 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -6,7 +6,7 @@ import re from lxml import etree -from odoo import models +from odoo import _, models class CamtParser(models.AbstractModel): @@ -68,7 +68,103 @@ class CamtParser(models.AbstractModel): "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 @@ class CamtParser(models.AbstractModel): 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 @@ class CamtParser(models.AbstractModel): "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 @@ class CamtParser(models.AbstractModel): "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 00000000..792d6b00 --- /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 44418034..a993ba3a 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 4c116025..73172a6c 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 6a00cb5a..ac60bdb1 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 ac700289..15b52673 100644 --- a/account_statement_import_camt/models/parser.py +++ b/account_statement_import_camt/models/parser.py @@ -193,12 +193,13 @@ class CamtParser(models.AbstractModel): ) 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 @@ class CamtParser(models.AbstractModel): "%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 a993ba3a..ed46eb92 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 73172a6c..4124b70f 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 ac60bdb1..79e01712 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 80256a6c..7890133d 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 8166c37b..d1168a84 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 d869e5dd..168338a7 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 00000000..70bc307a --- /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 8c536f98..98713919 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