develop
			
			
		
		
							parent
							
								
									f24609a335
								
							
						
					
					
						commit
						d7a345b61d
					
				|  | @ -0,0 +1,52 @@ | ||||||
|  | .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.png | ||||||
|  |     :target: https://www.gnu.com/licenses/agpl | ||||||
|  |     :alt: License: AGPL-3 | ||||||
|  | 
 | ||||||
|  | ========================= | ||||||
|  | Bank Statement Parse Camt | ||||||
|  | ========================= | ||||||
|  | 
 | ||||||
|  | Module to import SEPA CAMT.053 and CAMT.054 Format bank statement files. | ||||||
|  | 
 | ||||||
|  | Based on the Banking addons framework. | ||||||
|  | 
 | ||||||
|  | .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas | ||||||
|  |     :alt: Try me on Runbot | ||||||
|  |     :target: https://runbot.odoo-community.org/runbot/174/11.0 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Bug Tracker | ||||||
|  | =========== | ||||||
|  | 
 | ||||||
|  | Bugs are tracked on `GitHub Issues <https://github.com/OCA/bank-statement-import/issues>`_. | ||||||
|  | In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smash it by providing a detailed and welcomed feedback. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Credits | ||||||
|  | ======= | ||||||
|  | 
 | ||||||
|  | Contributors | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | * Holger Brunn <hbrunn@therp.nl> | ||||||
|  | * Stefan Rijnhart <srijnhart@therp.nl> | ||||||
|  | * Ronald Portier <rportier@therp.nl> | ||||||
|  | * Andrea Stirpe <a.stirpe@onestein.nl> | ||||||
|  | * Maxence Groine <mgroine@fiefmanage.ch> | ||||||
|  | 
 | ||||||
|  | Do not contact contributors directly about support or help with technical issues. | ||||||
|  | 
 | ||||||
|  | Maintainer | ||||||
|  | ---------- | ||||||
|  | 
 | ||||||
|  | .. image:: https://odoo-community.org/logo.png | ||||||
|  |    :alt: Odoo Community Association | ||||||
|  |    :target: https://odoo-community.org | ||||||
|  | 
 | ||||||
|  | This module is maintained by the OCA. | ||||||
|  | 
 | ||||||
|  | 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. | ||||||
|  | 
 | ||||||
|  | To contribute to this module, please visit http://odoo-community.org. | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | from . import models | ||||||
|  | @ -0,0 +1,16 @@ | ||||||
|  | # © 2013-2017 Therp BV <http://therp.nl> | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | { | ||||||
|  |     'name': 'CAMT Format Bank Statements Import', | ||||||
|  |     'version': '11.0.1.1.0', | ||||||
|  |     'license': 'AGPL-3', | ||||||
|  |     'author': 'Odoo Community Association (OCA), Therp BV', | ||||||
|  |     'website': 'https://github.com/OCA/bank-statement-import', | ||||||
|  |     'category': 'Banking addons', | ||||||
|  |     'depends': [ | ||||||
|  |         'account_bank_statement_import', | ||||||
|  |     ], | ||||||
|  |     'data': [ | ||||||
|  |         'views/account_bank_statement_import.xml', | ||||||
|  |     ], | ||||||
|  | } | ||||||
|  | @ -0,0 +1,50 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | #	* account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 11.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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2015-07-24 21:51+0000\n" | ||||||
|  | "PO-Revision-Date: 2015-10-04 11:43+0200\n" | ||||||
|  | "Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Kontoauszug importieren" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # OCA Transbot <transbot@odoo-community.org>, 2018 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 11.0\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "PO-Revision-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "CAMT" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "Nombre a mostrar" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "ID" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importar extracto bancario" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "Última modificación en" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "account.bank.statement.import.camt.parser" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "CAMT en .zip" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # Mehdi Zarrinkolah <mehdi1811@gmail.com>, 2018 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 11.0\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "PO-Revision-Date: 2018-07-22 10:30+0000\n" | ||||||
|  | "Last-Translator: derKonig <fshahy@gmail.com>\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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "CAMT" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "نام صفحه نمایش" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "شناسه" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "ورود بیانیه بانکی" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "آخرین تغییر در" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "گزارش .حساب بانکی .وارد کننده .تقسیم کننده .تجزیه کننده" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "CAMT زیپ شده" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 2017 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 9.0c\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2016-12-10 05:00+0000\n" | ||||||
|  | "PO-Revision-Date: 2016-12-10 05:00+0000\n" | ||||||
|  | "Last-Translator: Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Tuo pankkiaineisto" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # OCA Transbot <transbot@odoo-community.org>, 2018 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 11.0\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "PO-Revision-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "CAMT" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "Nom affiché" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "ID" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importer Relevé Bancaire" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "Dernière modification le" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "CAMT zippé" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # OCA Transbot <transbot@odoo-community.org>, 2016 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 9.0c\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "PO-Revision-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importer Relevé" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # Alejandro Santana <alejandrosantana@anubia.es>, 2016 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 9.0c\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "PO-Revision-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "Last-Translator: Alejandro Santana <alejandrosantana@anubia.es>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importar extracto bancario" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # OCA Transbot <transbot@odoo-community.org>, 2018 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 11.0\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "PO-Revision-Date: 2018-06-08 08:27+0000\n" | ||||||
|  | "Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "CAMT" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "Naziv" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "ID" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Uvoz bankovnog izvoda" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "Zadnje modificirano" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "account.bank.statement.import.camt.parser" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "kompresirani CAMT" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2015-07-24 21:51+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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importuoti banko išrašą" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # Imre Kristoffer Eilertsen <imreeil42@gmail.com>, 2016 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: Odoo Server 9.0c\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "PO-Revision-Date: 2016-12-09 17:00+0000\n" | ||||||
|  | "Last-Translator: Imre Kristoffer Eilertsen <imreeil42@gmail.com>, 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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importer bankutsagn" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,59 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | # Erwin van der Ploeg <erwin@bas-solutions.nl>, 2015 | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2015-07-24 21:51+0000\n" | ||||||
|  | "PO-Revision-Date: 2018-12-03 10:43+0000\n" | ||||||
|  | "Last-Translator: Yung-Wa <yw.ng@onestein.nl>\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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | #, fuzzy | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "CAMT" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "Weergave naam" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | #, fuzzy | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "ID" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importeer bankafschrift" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "Laatst gewijzigd op" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | #, fuzzy | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "account.bank.statement.import.camt.parser" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "zip formaat CAMT" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2015-10-09 09:23+0000\n" | ||||||
|  | "PO-Revision-Date: 2015-10-09 00:26+0000\n" | ||||||
|  | "Last-Translator: danimaribeiro <danimaribeiro@gmail.com>\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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importar Extrato Bancário" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2016-08-18 10:27+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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Importar Extrato Bancário" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,55 @@ | ||||||
|  | # Translation of Odoo Server. | ||||||
|  | # This file contains the translation of the following modules: | ||||||
|  | # * account_bank_statement_import_camt_oca | ||||||
|  | # | ||||||
|  | # Translators: | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: bank-statement-import (8.0)\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2015-07-24 21:51+0000\n" | ||||||
|  | "PO-Revision-Date: 2015-07-25 12:19+0000\n" | ||||||
|  | "Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\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_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "CAMT" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_display_name | ||||||
|  | msgid "Display Name" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser_id | ||||||
|  | msgid "ID" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import | ||||||
|  | msgid "Import Bank Statement" | ||||||
|  | msgstr "Uvoz bančnega izpiska" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model.fields,field_description:account_bank_statement_import_camt_oca.field_account_bank_statement_import_camt_parser___last_update | ||||||
|  | msgid "Last Modified on" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.model,name:account_bank_statement_import_camt_oca.model_account_bank_statement_import_camt_parser | ||||||
|  | msgid "account.bank.statement.import.camt.parser" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #. module: account_bank_statement_import_camt_oca | ||||||
|  | #: model:ir.ui.view,arch_db:account_bank_statement_import_camt_oca.account_bank_statement_import_view | ||||||
|  | msgid "zipped CAMT" | ||||||
|  | msgstr "" | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | from . import parser | ||||||
|  | from . import account_bank_statement_import | ||||||
|  | @ -0,0 +1,40 @@ | ||||||
|  | """Add process_camt method to account.bank.statement.import.""" | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | import logging | ||||||
|  | from io import BytesIO | ||||||
|  | import zipfile | ||||||
|  | from odoo import api, models | ||||||
|  | 
 | ||||||
|  | _logger = logging.getLogger(__name__) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class AccountBankStatementImport(models.TransientModel): | ||||||
|  |     """Add process_camt method to account.bank.statement.import.""" | ||||||
|  |     _inherit = 'account.bank.statement.import' | ||||||
|  | 
 | ||||||
|  |     @api.model | ||||||
|  |     def _parse_file(self, data_file): | ||||||
|  |         """Parse a CAMT053 XML file.""" | ||||||
|  |         try: | ||||||
|  |             parser = self.env['account.bank.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(AccountBankStatementImport, self)._parse_file(data_file) | ||||||
|  | @ -0,0 +1,250 @@ | ||||||
|  | """Class to parse camt files.""" | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # Copyright 2017 Open Net Sàrl | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | import re | ||||||
|  | from lxml import etree | ||||||
|  | 
 | ||||||
|  | from odoo import models | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class CamtParser(models.AbstractModel): | ||||||
|  |     """Parser for camt bank statement import files.""" | ||||||
|  |     _name = '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 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 | ||||||
|  |         if transaction['name'] == '/': | ||||||
|  |             self.add_value_from_node( | ||||||
|  |                 ns, node, [ | ||||||
|  |                     './ns:RmtInf/ns:Ustrd|./ns:RtrInf/ns:AddtlInf', | ||||||
|  |                     './ns:AddtlNtryInf', | ||||||
|  |                     './ns:Refs/ns:InstrId', | ||||||
|  |                     './ns:RmtInf/ns:Strd/ns:CdtrRefInf/ns:Ref', | ||||||
|  |                 ], transaction, 'name', join_str='\n') | ||||||
|  |         # name | ||||||
|  |         self.add_value_from_node( | ||||||
|  |             ns, node, [ | ||||||
|  |                 './ns:AddtlTxInf', | ||||||
|  |             ], transaction, 'note', 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: | ||||||
|  |             self.add_value_from_node( | ||||||
|  |                 ns, party_node[0], './ns:Nm', 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', 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: | ||||||
|  |             # ABNAmro is known to mix up encodings | ||||||
|  |             root = etree.fromstring( | ||||||
|  |                 data.decode('iso-8859-15').encode('utf-8')) | ||||||
|  |         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 | ||||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.2 KiB | 
|  | @ -0,0 +1 @@ | ||||||
|  | (None, None, []) | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | (None, | ||||||
|  |  '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'}]}]) | ||||||
|  | @ -0,0 +1,34 @@ | ||||||
|  | (None, | ||||||
|  |  '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', | ||||||
|  |                      'note': 'MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014', | ||||||
|  |                      'partner_name': 'INSURANCE COMPANY TESTX', | ||||||
|  |                      'ref': '435005714488-ABNO33052620'}, | ||||||
|  |                     {'account_number': 'NL46ABNA0499998748', | ||||||
|  |                      'amount': -564.05, | ||||||
|  |                      'date': '2014-01-05', | ||||||
|  |                      'name': 'Direct Debit S14 0410', | ||||||
|  |                      'note': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', | ||||||
|  |                      'partner_name': 'Test Customer', | ||||||
|  |                      'ref': 'TESTBANK/NL/20141229/01206408'}, | ||||||
|  |                     {'account_number': 'NL46ABNA0499998748', | ||||||
|  |                      'amount': -100.0, | ||||||
|  |                      'date': '2014-01-05', | ||||||
|  |                      'name': 'Direct Debit S14 0410', | ||||||
|  |                      'note': 'Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408', | ||||||
|  |                      'partner_name': 'Test Customer', | ||||||
|  |                      'ref': 'TESTBANK/NL/20141229/01206407'}, | ||||||
|  |                     {'account_number': 'NL69ABNA0522123643', | ||||||
|  |                      'amount': 1405.31, | ||||||
|  |                      'date': '2014-01-05', | ||||||
|  |                      'name': 'INNDNL2U20140105000217200000708', | ||||||
|  |                      'note': '#RD PARTY MEDIA CUSNO 90782 4210773', | ||||||
|  |                      'partner_name': '3rd party Media', | ||||||
|  |                      'ref': '115'}]}]) | ||||||
|  | @ -0,0 +1,289 @@ | ||||||
|  | <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02"> | ||||||
|  |     <BkToCstmrStmt> | ||||||
|  |         <GrpHdr> | ||||||
|  |             <MsgId>TESTBANK/NL/1420561226673</MsgId> | ||||||
|  |             <CreDtTm>2014-01-06T16:20:26.673Z</CreDtTm> | ||||||
|  |         </GrpHdr> | ||||||
|  |         <Stmt> | ||||||
|  |             <Id>1234Test/1</Id> | ||||||
|  |             <LglSeqNb>2</LglSeqNb> | ||||||
|  |             <CreDtTm>2014-01-06T16:20:26.673Z</CreDtTm> | ||||||
|  |             <FrToDt> | ||||||
|  |                 <FrDtTm>2014-01-05T00:00:00.000Z</FrDtTm> | ||||||
|  |                 <ToDtTm>2014-01-05T23:59:59.999Z</ToDtTm> | ||||||
|  |             </FrToDt> | ||||||
|  |             <Acct> | ||||||
|  |                 <Id> | ||||||
|  |                     <IBAN>NL77ABNA0574908765</IBAN> | ||||||
|  |                 </Id> | ||||||
|  |                 <Nm>Example company</Nm> | ||||||
|  |                 <Svcr> | ||||||
|  |                     <FinInstnId> | ||||||
|  |                         <BIC>ABNANL2A</BIC> | ||||||
|  |                     </FinInstnId> | ||||||
|  |                 </Svcr> | ||||||
|  |             </Acct> | ||||||
|  |             <Bal> | ||||||
|  |                 <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                         <Cd>OPBD</Cd> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                 </Tp> | ||||||
|  |                 <Amt Ccy="EUR">15568.27</Amt> | ||||||
|  |                 <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |                 <Dt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </Dt> | ||||||
|  |             </Bal> | ||||||
|  |             <Bal> | ||||||
|  |                 <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                         <Cd>CLBD</Cd> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                 </Tp> | ||||||
|  |                 <Amt Ccy="EUR">15121.12</Amt> | ||||||
|  |                 <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |                 <Dt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </Dt> | ||||||
|  |             </Bal> | ||||||
|  |             <Ntry> | ||||||
|  |                 <Amt Ccy="EUR">754.25</Amt> | ||||||
|  |                 <CdtDbtInd>DBIT</CdtDbtInd> | ||||||
|  |                 <Sts>BOOK</Sts> | ||||||
|  |                 <BookgDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </BookgDt> | ||||||
|  |                 <ValDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </ValDt> | ||||||
|  |                 <BkTxCd> | ||||||
|  |                     <Domn> | ||||||
|  |                         <Cd>PMNT</Cd> | ||||||
|  |                         <Fmly> | ||||||
|  |                             <Cd>RDDT</Cd> | ||||||
|  |                             <SubFmlyCd>ESDD</SubFmlyCd> | ||||||
|  |                         </Fmly> | ||||||
|  |                     </Domn> | ||||||
|  |                     <Prtry> | ||||||
|  |                         <Cd>EI</Cd> | ||||||
|  |                     </Prtry> | ||||||
|  |                 </BkTxCd> | ||||||
|  |                 <NtryDtls> | ||||||
|  |                     <TxDtls> | ||||||
|  |                         <Refs> | ||||||
|  |                             <InstrId>INNDNL2U20141231000142300002844</InstrId> | ||||||
|  |                             <EndToEndId>435005714488-ABNO33052620</EndToEndId> | ||||||
|  |                             <MndtId>1880000341866</MndtId> | ||||||
|  |                         </Refs> | ||||||
|  |                         <AmtDtls> | ||||||
|  |                             <TxAmt> | ||||||
|  |                                 <Amt Ccy="EUR">754.25</Amt> | ||||||
|  |                             </TxAmt> | ||||||
|  |                         </AmtDtls> | ||||||
|  |                         <RltdPties> | ||||||
|  |                             <Cdtr> | ||||||
|  |                                 <Nm>INSURANCE COMPANY TESTX</Nm> | ||||||
|  |                                 <PstlAdr> | ||||||
|  |                                     <StrtNm>TEST STREET 20</StrtNm> | ||||||
|  |                                     <TwnNm>1234 AB TESTCITY</TwnNm> | ||||||
|  |                                     <Ctry>NL</Ctry> | ||||||
|  |                                 </PstlAdr> | ||||||
|  |                             </Cdtr> | ||||||
|  |                             <CdtrAcct> | ||||||
|  |                                 <Id> | ||||||
|  |                                     <IBAN>NL46ABNA0499998748</IBAN> | ||||||
|  |                                 </Id> | ||||||
|  |                             </CdtrAcct> | ||||||
|  |                         </RltdPties> | ||||||
|  |                         <RltdAgts> | ||||||
|  |                             <CdtrAgt> | ||||||
|  |                                 <FinInstnId> | ||||||
|  |                                     <BIC>ABNANL2A</BIC> | ||||||
|  |                                 </FinInstnId> | ||||||
|  |                             </CdtrAgt> | ||||||
|  |                         </RltdAgts> | ||||||
|  |                         <RmtInf> | ||||||
|  |                             <Ustrd>Insurance policy 857239PERIOD 01.01.2014 - 31.12.2014</Ustrd> | ||||||
|  |                         </RmtInf> | ||||||
|  |                         <AddtlTxInf>MKB Insurance 859239PERIOD 01.01.2014 - 31.12.2014</AddtlTxInf> | ||||||
|  |                     </TxDtls> | ||||||
|  |                 </NtryDtls> | ||||||
|  |             </Ntry> | ||||||
|  |             <Ntry> | ||||||
|  |                 <Amt Ccy="EUR">664.05</Amt> | ||||||
|  |                 <CdtDbtInd>DBIT</CdtDbtInd> | ||||||
|  |                 <RvslInd>true</RvslInd> | ||||||
|  |                 <Sts>BOOK</Sts> | ||||||
|  |                 <BookgDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </BookgDt> | ||||||
|  |                 <ValDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </ValDt> | ||||||
|  |                 <BkTxCd> | ||||||
|  |                     <Domn> | ||||||
|  |                         <Cd>PMNT</Cd> | ||||||
|  |                         <Fmly> | ||||||
|  |                             <Cd>IDDT</Cd> | ||||||
|  |                             <SubFmlyCd>UPDD</SubFmlyCd> | ||||||
|  |                         </Fmly> | ||||||
|  |                     </Domn> | ||||||
|  |                     <Prtry> | ||||||
|  |                         <Cd>EIST</Cd> | ||||||
|  |                     </Prtry> | ||||||
|  |                 </BkTxCd> | ||||||
|  |                 <NtryDtls> | ||||||
|  |                     <Btch> | ||||||
|  |                         <MsgId>2014/125</MsgId> | ||||||
|  |                         <PmtInfId>2018/125-20141229-NORM</PmtInfId> | ||||||
|  |                         <NbOfTxs>2</NbOfTxs> | ||||||
|  |                         <TtlAmt Ccy="EUR">664.05</TtlAmt> | ||||||
|  |                         <CdtDbtInd>DBIT</CdtDbtInd> | ||||||
|  |                     </Btch> | ||||||
|  |                     <TxDtls> | ||||||
|  |                         <Refs> | ||||||
|  |                             <InstrId>TESTBANK/NL/20141229/01206408</InstrId> | ||||||
|  |                             <EndToEndId>TESTBANK/NL/20141229/01206408</EndToEndId> | ||||||
|  |                             <MndtId>NL22ZZZ524885430000-C0125.1</MndtId> | ||||||
|  |                         </Refs> | ||||||
|  |                         <AmtDtls> | ||||||
|  |                             <TxAmt> | ||||||
|  |                                 <Amt Ccy="EUR">564.05</Amt> | ||||||
|  |                             </TxAmt> | ||||||
|  |                         </AmtDtls> | ||||||
|  |                         <RltdPties> | ||||||
|  |                             <Cdtr> | ||||||
|  |                                 <Nm>Test Customer</Nm> | ||||||
|  |                                 <PstlAdr> | ||||||
|  |                                     <Ctry>NL</Ctry> | ||||||
|  |                                 </PstlAdr> | ||||||
|  |                             </Cdtr> | ||||||
|  |                             <CdtrAcct> | ||||||
|  |                                 <Id> | ||||||
|  |                                     <IBAN>NL46ABNA0499998748</IBAN> | ||||||
|  |                                 </Id> | ||||||
|  |                             </CdtrAcct> | ||||||
|  |                         </RltdPties> | ||||||
|  |                         <RltdAgts> | ||||||
|  |                             <CdtrAgt> | ||||||
|  |                                 <FinInstnId> | ||||||
|  |                                     <BIC>ABNANL2A</BIC> | ||||||
|  |                                 </FinInstnId> | ||||||
|  |                             </CdtrAgt> | ||||||
|  |                         </RltdAgts> | ||||||
|  |                         <RmtInf> | ||||||
|  |                             <Ustrd>Direct Debit S14 0410</Ustrd> | ||||||
|  |                         </RmtInf> | ||||||
|  |                         <RtrInf> | ||||||
|  |                             <Rsn> | ||||||
|  |                                 <Cd>AC06</Cd> | ||||||
|  |                             </Rsn> | ||||||
|  |                         </RtrInf> | ||||||
|  |                         <AddtlTxInf>Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408</AddtlTxInf> | ||||||
|  |                     </TxDtls> | ||||||
|  |                     <TxDtls> | ||||||
|  |                         <Refs> | ||||||
|  |                             <InstrId>TESTBANK/NL/20141229/01206407</InstrId> | ||||||
|  |                             <EndToEndId>TESTBANK/NL/20141229/01206407</EndToEndId> | ||||||
|  |                             <MndtId>NL22ZZZ524885430000-C0125.2</MndtId> | ||||||
|  |                         </Refs> | ||||||
|  |                         <AmtDtls> | ||||||
|  |                             <TxAmt> | ||||||
|  |                                 <Amt Ccy="EUR">100.00</Amt> | ||||||
|  |                             </TxAmt> | ||||||
|  |                         </AmtDtls> | ||||||
|  |                         <RltdPties> | ||||||
|  |                             <Cdtr> | ||||||
|  |                                 <Nm>Test Customer</Nm> | ||||||
|  |                                 <PstlAdr> | ||||||
|  |                                     <Ctry>NL</Ctry> | ||||||
|  |                                 </PstlAdr> | ||||||
|  |                             </Cdtr> | ||||||
|  |                             <CdtrAcct> | ||||||
|  |                                 <Id> | ||||||
|  |                                     <IBAN>NL46ABNA0499998748</IBAN> | ||||||
|  |                                 </Id> | ||||||
|  |                             </CdtrAcct> | ||||||
|  |                         </RltdPties> | ||||||
|  |                         <RltdAgts> | ||||||
|  |                             <CdtrAgt> | ||||||
|  |                                 <FinInstnId> | ||||||
|  |                                     <BIC>ABNANL2A</BIC> | ||||||
|  |                                 </FinInstnId> | ||||||
|  |                             </CdtrAgt> | ||||||
|  |                         </RltdAgts> | ||||||
|  |                         <RmtInf> | ||||||
|  |                             <Ustrd>Direct Debit S14 0410</Ustrd> | ||||||
|  |                         </RmtInf> | ||||||
|  |                         <RtrInf> | ||||||
|  |                             <Rsn> | ||||||
|  |                                 <Cd>AC06</Cd> | ||||||
|  |                             </Rsn> | ||||||
|  |                         </RtrInf> | ||||||
|  |                         <AddtlTxInf>Direct debit S14 0410 AC07 Rek.nummer blokkade TESTBANK/NL/20141229/01206408</AddtlTxInf> | ||||||
|  |                     </TxDtls> | ||||||
|  |                 </NtryDtls> | ||||||
|  |             </Ntry> | ||||||
|  |             <Ntry> | ||||||
|  |                 <Amt Ccy="EUR">1405.31</Amt> | ||||||
|  |                 <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |                 <Sts>BOOK</Sts> | ||||||
|  |                 <BookgDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </BookgDt> | ||||||
|  |                 <ValDt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </ValDt> | ||||||
|  |                 <BkTxCd> | ||||||
|  |                     <Domn> | ||||||
|  |                         <Cd>PMNT</Cd> | ||||||
|  |                         <Fmly> | ||||||
|  |                             <Cd>RCDT</Cd> | ||||||
|  |                             <SubFmlyCd>ESCT</SubFmlyCd> | ||||||
|  |                         </Fmly> | ||||||
|  |                     </Domn> | ||||||
|  |                     <Prtry> | ||||||
|  |                         <Cd>ET</Cd> | ||||||
|  |                     </Prtry> | ||||||
|  |                 </BkTxCd> | ||||||
|  |                 <NtryDtls> | ||||||
|  |                     <TxDtls> | ||||||
|  |                         <Refs> | ||||||
|  |                             <InstrId>INNDNL2U20140105000217200000708</InstrId> | ||||||
|  |                             <EndToEndId>115</EndToEndId> | ||||||
|  |                         </Refs> | ||||||
|  |                         <AmtDtls> | ||||||
|  |                             <TxAmt> | ||||||
|  |                                 <Amt Ccy="EUR">1405.31</Amt> | ||||||
|  |                             </TxAmt> | ||||||
|  |                         </AmtDtls> | ||||||
|  |                         <RltdPties> | ||||||
|  |                             <Dbtr> | ||||||
|  |                                 <Nm>3rd party Media</Nm> | ||||||
|  |                                 <PstlAdr> | ||||||
|  |                                     <StrtNm>SOMESTREET 570-A</StrtNm> | ||||||
|  |                                     <TwnNm>1276 ML HOUSCITY</TwnNm> | ||||||
|  |                                     <Ctry>NL</Ctry> | ||||||
|  |                                 </PstlAdr> | ||||||
|  |                             </Dbtr> | ||||||
|  |                             <DbtrAcct> | ||||||
|  |                                 <Id> | ||||||
|  |                                     <IBAN>NL69ABNA0522123643</IBAN> | ||||||
|  |                                 </Id> | ||||||
|  |                             </DbtrAcct> | ||||||
|  |                         </RltdPties> | ||||||
|  |                         <RltdAgts> | ||||||
|  |                             <DbtrAgt> | ||||||
|  |                                 <FinInstnId> | ||||||
|  |                                     <BIC>ABNANL2A</BIC> | ||||||
|  |                                 </FinInstnId> | ||||||
|  |                             </DbtrAgt> | ||||||
|  |                         </RltdAgts> | ||||||
|  |                         <AddtlTxInf>#RD PARTY MEDIA CUSNO 90782 4210773</AddtlTxInf> | ||||||
|  |                     </TxDtls> | ||||||
|  |                 </NtryDtls> | ||||||
|  |             </Ntry> | ||||||
|  |         </Stmt> | ||||||
|  |     </BkToCstmrStmt> | ||||||
|  | </Document> | ||||||
|  | @ -0,0 +1,52 @@ | ||||||
|  | <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.04"> | ||||||
|  |     <BkToCstmrStmt> | ||||||
|  |         <GrpHdr> | ||||||
|  |             <MsgId>TESTBANK/NL/1420561226673</MsgId> | ||||||
|  |             <CreDtTm>2014-01-06T16:20:26.673Z</CreDtTm> | ||||||
|  |         </GrpHdr> | ||||||
|  |         <Stmt> | ||||||
|  |             <Id>1234Test/1</Id> | ||||||
|  |             <LglSeqNb>2</LglSeqNb> | ||||||
|  |             <CreDtTm>2014-01-06T16:20:26.673Z</CreDtTm> | ||||||
|  |             <FrToDt> | ||||||
|  |                 <FrDtTm>2014-01-05T00:00:00.000Z</FrDtTm> | ||||||
|  |                 <ToDtTm>2014-01-05T23:59:59.999Z</ToDtTm> | ||||||
|  |             </FrToDt> | ||||||
|  |             <Acct> | ||||||
|  |                 <Id> | ||||||
|  |                     <IBAN>NL77ABNA0574908765</IBAN> | ||||||
|  |                 </Id> | ||||||
|  |                 <Nm>Example company</Nm> | ||||||
|  |                 <Svcr> | ||||||
|  |                     <FinInstnId> | ||||||
|  |                         <BIC>ABNANL2A</BIC> | ||||||
|  |                     </FinInstnId> | ||||||
|  |                 </Svcr> | ||||||
|  |             </Acct> | ||||||
|  |             <Bal> | ||||||
|  |                 <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                         <Cd>OPBD</Cd> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                 </Tp> | ||||||
|  |                 <Amt Ccy="CHF">1520.76</Amt> | ||||||
|  |                 <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |                 <Dt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </Dt> | ||||||
|  |             </Bal> | ||||||
|  |             <Bal> | ||||||
|  |                 <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                         <Cd>CLBD</Cd> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                 </Tp> | ||||||
|  |                 <Amt Ccy="CHF">1520.76</Amt> | ||||||
|  |                 <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |                 <Dt> | ||||||
|  |                     <Dt>2014-01-05</Dt> | ||||||
|  |                 </Dt> | ||||||
|  |             </Bal> | ||||||
|  |         </Stmt> | ||||||
|  |     </BkToCstmrStmt> | ||||||
|  | </Document> | ||||||
|  | @ -0,0 +1,214 @@ | ||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.04" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.04 camt.053.001.04.xsd"> | ||||||
|  |   <BkToCstmrStmt> | ||||||
|  |     <GrpHdr> | ||||||
|  |       <MsgId>20170323312345678900000</MsgId> | ||||||
|  |       <CreDtTm>2017-03-23T14:47:00</CreDtTm> | ||||||
|  |       <MsgPgntn> | ||||||
|  |         <PgNb>1</PgNb> | ||||||
|  |         <LastPgInd>true</LastPgInd> | ||||||
|  |       </MsgPgntn> | ||||||
|  |       <AddtlInf>Test</AddtlInf> | ||||||
|  |     </GrpHdr> | ||||||
|  |     <Stmt> | ||||||
|  |       <Id>20170323123456789012345</Id> | ||||||
|  |       <ElctrncSeqNb>58</ElctrncSeqNb> | ||||||
|  |       <CreDtTm>2017-03-23T14:47:00</CreDtTm> | ||||||
|  |       <FrToDt> | ||||||
|  |         <FrDtTm>2017-03-23T00:00:00</FrDtTm> | ||||||
|  |         <ToDtTm>2017-03-23T23:59:59</ToDtTm> | ||||||
|  |       </FrToDt> | ||||||
|  |       <Acct> | ||||||
|  |         <Id> | ||||||
|  |           <IBAN>CH1111000000123456789</IBAN> | ||||||
|  |         </Id> | ||||||
|  |         <Ownr> | ||||||
|  |           <Nm>Open Net S. à r.l. Prilly</Nm> | ||||||
|  |         </Ownr> | ||||||
|  |       </Acct> | ||||||
|  |       <Bal> | ||||||
|  |         <Tp> | ||||||
|  |           <CdOrPrtry> | ||||||
|  |             <Cd>OPBD</Cd> | ||||||
|  |           </CdOrPrtry> | ||||||
|  |         </Tp> | ||||||
|  |         <Amt Ccy="CHF">75960.15</Amt> | ||||||
|  |         <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |         <Dt> | ||||||
|  |           <Dt>2017-03-22</Dt> | ||||||
|  |         </Dt> | ||||||
|  |       </Bal> | ||||||
|  |       <Bal> | ||||||
|  |         <Tp> | ||||||
|  |           <CdOrPrtry> | ||||||
|  |             <Cd>CLBD</Cd> | ||||||
|  |           </CdOrPrtry> | ||||||
|  |         </Tp> | ||||||
|  |         <Amt Ccy="CHF">79443.15</Amt> | ||||||
|  |         <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |         <Dt> | ||||||
|  |           <Dt>2017-03-23</Dt> | ||||||
|  |         </Dt> | ||||||
|  |       </Bal> | ||||||
|  |       <Ntry> | ||||||
|  |         <NtryRef>012345678</NtryRef> | ||||||
|  |         <Amt Ccy="CHF">3483.00</Amt> | ||||||
|  |         <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |         <RvslInd>false</RvslInd> | ||||||
|  |         <Sts>BOOK</Sts> | ||||||
|  |         <BookgDt> | ||||||
|  |           <Dt>2017-03-22</Dt> | ||||||
|  |         </BookgDt> | ||||||
|  |         <ValDt> | ||||||
|  |           <Dt>2017-03-23</Dt> | ||||||
|  |         </ValDt> | ||||||
|  |         <AcctSvcrRef>20170323001234567891234567891234</AcctSvcrRef> | ||||||
|  |         <BkTxCd> | ||||||
|  |           <Domn> | ||||||
|  |             <Cd>PMNT</Cd> | ||||||
|  |             <Fmly> | ||||||
|  |               <Cd>RCDT</Cd> | ||||||
|  |               <SubFmlyCd>VCOM</SubFmlyCd> | ||||||
|  |             </Fmly> | ||||||
|  |           </Domn> | ||||||
|  |         </BkTxCd> | ||||||
|  |         <NtryDtls> | ||||||
|  |           <Btch> | ||||||
|  |             <NbOfTxs>2</NbOfTxs> | ||||||
|  |           </Btch> | ||||||
|  |           <TxDtls> | ||||||
|  |             <Refs> | ||||||
|  |               <AcctSvcrRef>123456CHCAFEBABE</AcctSvcrRef> | ||||||
|  |               <Prtry> | ||||||
|  |                 <Tp>01</Tp> | ||||||
|  |                 <Ref>123456CHCAFEBABE</Ref> | ||||||
|  |               </Prtry> | ||||||
|  |             </Refs> | ||||||
|  |             <Amt Ccy="CHF">2187.00</Amt> | ||||||
|  |             <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |             <BkTxCd> | ||||||
|  |               <Domn> | ||||||
|  |                 <Cd>PMNT</Cd> | ||||||
|  |                 <Fmly> | ||||||
|  |                   <Cd>RCDT</Cd> | ||||||
|  |                   <SubFmlyCd>AUTT</SubFmlyCd> | ||||||
|  |                 </Fmly> | ||||||
|  |               </Domn> | ||||||
|  |             </BkTxCd> | ||||||
|  |             <RltdPties> | ||||||
|  |               <Dbtr> | ||||||
|  |                 <Nm>Banque Cantonale Vaudoise</Nm> | ||||||
|  |                 <PstlAdr> | ||||||
|  |                   <StrtNm>Place Saint-François</StrtNm> | ||||||
|  |                   <BldgNb>14</BldgNb> | ||||||
|  |                   <PstCd>1003</PstCd> | ||||||
|  |                   <TwnNm>Lausanne</TwnNm> | ||||||
|  |                   <Ctry>CH1</Ctry> | ||||||
|  |                 </PstlAdr> | ||||||
|  |               </Dbtr> | ||||||
|  |               <DbtrAcct> | ||||||
|  |                 <Id> | ||||||
|  |                   <IBAN>CH2222000000123456789</IBAN> | ||||||
|  |                 </Id> | ||||||
|  |               </DbtrAcct> | ||||||
|  |             </RltdPties> | ||||||
|  |             <RltdAgts> | ||||||
|  |               <DbtrAgt> | ||||||
|  |                 <FinInstnId> | ||||||
|  |                   <BICFI>POFICHBEXXX</BICFI> | ||||||
|  |                   <Nm>POSTFINANCE AG</Nm> | ||||||
|  |                   <PstlAdr> | ||||||
|  |                     <AdrLine>MINGERSTRASSE 20</AdrLine> | ||||||
|  |                     <AdrLine>3030 BERNE</AdrLine> | ||||||
|  |                   </PstlAdr> | ||||||
|  |                 </FinInstnId> | ||||||
|  |               </DbtrAgt> | ||||||
|  |             </RltdAgts> | ||||||
|  |             <RmtInf> | ||||||
|  |               <Strd> | ||||||
|  |                 <CdtrRefInf> | ||||||
|  |                   <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                       <Prtry>ISR Reference</Prtry> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                   </Tp> | ||||||
|  |                   <Ref>302388292000011111111111111</Ref> | ||||||
|  |                 </CdtrRefInf> | ||||||
|  |                 <AddtlRmtInf>?REJECT?0</AddtlRmtInf> | ||||||
|  |               </Strd> | ||||||
|  |             </RmtInf> | ||||||
|  |             <RltdDts> | ||||||
|  |               <AccptncDtTm>2017-03-22T20:00:00</AccptncDtTm> | ||||||
|  |             </RltdDts> | ||||||
|  |           </TxDtls> | ||||||
|  |           <TxDtls> | ||||||
|  |             <Refs> | ||||||
|  |               <AcctSvcrRef>123456CHCAFEBABE</AcctSvcrRef> | ||||||
|  |               <Prtry> | ||||||
|  |                 <Tp>01</Tp> | ||||||
|  |                 <Ref>123456CHCAFEBABE</Ref> | ||||||
|  |               </Prtry> | ||||||
|  |             </Refs> | ||||||
|  |             <Amt Ccy="CHF">1296.00</Amt> | ||||||
|  |             <CdtDbtInd>CRDT</CdtDbtInd> | ||||||
|  |             <BkTxCd> | ||||||
|  |               <Domn> | ||||||
|  |                 <Cd>PMNT</Cd> | ||||||
|  |                 <Fmly> | ||||||
|  |                   <Cd>RCDT</Cd> | ||||||
|  |                   <SubFmlyCd>AUTT</SubFmlyCd> | ||||||
|  |                 </Fmly> | ||||||
|  |               </Domn> | ||||||
|  |             </BkTxCd> | ||||||
|  |             <RltdPties> | ||||||
|  |               <Dbtr> | ||||||
|  |                 <Nm>Banque Cantonale Vaudoise</Nm> | ||||||
|  |                 <PstlAdr> | ||||||
|  |                   <StrtNm>Place Saint-François</StrtNm> | ||||||
|  |                   <BldgNb>14</BldgNb> | ||||||
|  |                   <PstCd>1003</PstCd> | ||||||
|  |                   <TwnNm>Lausanne</TwnNm> | ||||||
|  |                   <Ctry>CH2</Ctry> | ||||||
|  |                 </PstlAdr> | ||||||
|  |               </Dbtr> | ||||||
|  |               <DbtrAcct> | ||||||
|  |                 <Id> | ||||||
|  |                   <IBAN>CH3333000000123456789</IBAN> | ||||||
|  |                 </Id> | ||||||
|  |               </DbtrAcct> | ||||||
|  |             </RltdPties> | ||||||
|  |             <RltdAgts> | ||||||
|  |               <DbtrAgt> | ||||||
|  |                 <FinInstnId> | ||||||
|  |                   <BICFI>POFICHBEYYY</BICFI> | ||||||
|  |                   <Nm>POSTFINANCE AG</Nm> | ||||||
|  |                   <PstlAdr> | ||||||
|  |                     <AdrLine>MINGERSTRASSE 20</AdrLine> | ||||||
|  |                     <AdrLine>3030 BERNE</AdrLine> | ||||||
|  |                   </PstlAdr> | ||||||
|  |                 </FinInstnId> | ||||||
|  |               </DbtrAgt> | ||||||
|  |             </RltdAgts> | ||||||
|  |             <RmtInf> | ||||||
|  |               <Strd> | ||||||
|  |                 <CdtrRefInf> | ||||||
|  |                   <Tp> | ||||||
|  |                     <CdOrPrtry> | ||||||
|  |                       <Prtry>ISR Reference</Prtry> | ||||||
|  |                     </CdOrPrtry> | ||||||
|  |                   </Tp> | ||||||
|  |                   <Ref>302388292000022222222222222</Ref> | ||||||
|  |                 </CdtrRefInf> | ||||||
|  |                 <AddtlRmtInf>?REJECT?0</AddtlRmtInf> | ||||||
|  |               </Strd> | ||||||
|  |             </RmtInf> | ||||||
|  |             <RltdDts> | ||||||
|  |               <AccptncDtTm>2017-03-22T20:00:00</AccptncDtTm> | ||||||
|  |             </RltdDts> | ||||||
|  |           </TxDtls> | ||||||
|  |         </NtryDtls> | ||||||
|  |         <AddtlNtryInf>CRÉDIT GROUPÉ BVR TRAITEMENT DU 22.03.2017 NUMÉRO CLIENT 01-70884-3 PAQUET ID: 123456CHCAFEBABE</AddtlNtryInf> | ||||||
|  |       </Ntry> | ||||||
|  |     </Stmt> | ||||||
|  |   </BkToCstmrStmt> | ||||||
|  | </Document> | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | """Test import of bank statement for camt.053.""" | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | from . import test_import_bank_statement | ||||||
|  | @ -0,0 +1,150 @@ | ||||||
|  | """Run test to import camt.053 import.""" | ||||||
|  | # © 2013-2016 Therp BV <http://therp.nl> | ||||||
|  | # Copyright 2017 Open Net Sàrl | ||||||
|  | # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||||||
|  | import base64 | ||||||
|  | import difflib | ||||||
|  | import pprint | ||||||
|  | import tempfile | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | from odoo.tests.common import TransactionCase | ||||||
|  | from odoo.modules.module import get_module_resource | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TestParser(TransactionCase): | ||||||
|  |     """Tests for the camt parser itself.""" | ||||||
|  |     def setUp(self): | ||||||
|  |         super(TestParser, self).setUp() | ||||||
|  |         self.parser = self.env['account.bank.statement.import.camt.parser'] | ||||||
|  | 
 | ||||||
|  |     def _do_parse_test(self, inputfile, goldenfile): | ||||||
|  |         testfile = get_module_resource( | ||||||
|  |             'account_bank_statement_import_camt_oca', | ||||||
|  |             '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_bank_statement_import_camt_oca', | ||||||
|  |                     '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': '2014-01-05', | ||||||
|  |             'ref': '435005714488-ABNO33052620', | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'remote_account': 'NL46ABNA0499998748', | ||||||
|  |             'transferred_amount': -564.05, | ||||||
|  |             'value_date': '2014-01-05', | ||||||
|  |             'ref': 'TESTBANK/NL/20141229/01206408', | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'remote_account': 'NL46ABNA0499998748', | ||||||
|  |             'transferred_amount': -100.0, | ||||||
|  |             'value_date': '2014-01-05', | ||||||
|  |             'ref': 'TESTBANK/NL/20141229/01206407', | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'remote_account': 'NL69ABNA0522123643', | ||||||
|  |             'transferred_amount': 1405.31, | ||||||
|  |             'value_date': '2014-01-05', | ||||||
|  |             '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['account.journal'].create({ | ||||||
|  |             'name': 'Bank Journal - (test camt)', | ||||||
|  |             'code': 'TBNKCAMT', | ||||||
|  |             'type': 'bank', | ||||||
|  |             'bank_account_id': bank.id, | ||||||
|  |         }) | ||||||
|  | 
 | ||||||
|  |     def test_statement_import(self): | ||||||
|  |         """Test correct creation of single statement.""" | ||||||
|  |         testfile = get_module_resource( | ||||||
|  |             'account_bank_statement_import_camt_oca', | ||||||
|  |             'test_files', | ||||||
|  |             'test-camt053', | ||||||
|  |         ) | ||||||
|  |         with open(testfile, 'rb') as datafile: | ||||||
|  |             action = self.env['account.bank.statement.import'].create({ | ||||||
|  |                 'data_file': base64.b64encode(datafile.read()) | ||||||
|  |             }).import_file() | ||||||
|  | 
 | ||||||
|  |             for statement in self.env['account.bank.statement'].browse( | ||||||
|  |                 action['context']['statement_ids'] | ||||||
|  |             ): | ||||||
|  |                 self.assertTrue(any( | ||||||
|  |                     all( | ||||||
|  |                         line[key] == self.transactions[0][key] | ||||||
|  |                         for key in ['amount', 'date', 'ref'] | ||||||
|  |                     ) and | ||||||
|  |                     line.bank_account_id.acc_number == | ||||||
|  |                     self.transactions[0]['account_number'] | ||||||
|  |                     for line in statement.line_ids | ||||||
|  |                 )) | ||||||
|  | 
 | ||||||
|  |     def test_zip_import(self): | ||||||
|  |         """Test import of multiple statements from zip file.""" | ||||||
|  |         testfile = get_module_resource( | ||||||
|  |             'account_bank_statement_import_camt_oca', | ||||||
|  |             'test_files', | ||||||
|  |             'test-camt053.zip', | ||||||
|  |         ) | ||||||
|  |         with open(testfile, 'rb') as datafile: | ||||||
|  |             action = self.env['account.bank.statement.import'].create({ | ||||||
|  |                 'data_file': base64.b64encode(datafile.read()), | ||||||
|  |             }).import_file() | ||||||
|  | 
 | ||||||
|  |             for statement in self.env['account.bank.statement'].browse( | ||||||
|  |                 action['context']['statement_ids'] | ||||||
|  |             ): | ||||||
|  |                 self.assertTrue(statement.line_ids) | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <odoo> | ||||||
|  |     <record id="account_bank_statement_import_view" model="ir.ui.view"> | ||||||
|  |         <field name="model">account.bank.statement.import</field> | ||||||
|  |         <field name="inherit_id" ref="account_bank_statement_import.account_bank_statement_import_view" /> | ||||||
|  |         <field name="arch" type="xml"> | ||||||
|  |             <ul id="statement_format" position="inside"> | ||||||
|  |                 <li>CAMT</li> | ||||||
|  |                 <li>zipped CAMT</li> | ||||||
|  |             </ul> | ||||||
|  |         </field> | ||||||
|  |     </record> | ||||||
|  | </odoo> | ||||||
		Loading…
	
		Reference in New Issue