Browse Source

Merge pull request #200 from lefilament/12.0-mig-account_bank_statement_import_ofx

[12.0] [MIG] account bank statement import ofx
12.0
Alexis de Lattre 5 years ago
committed by GitHub
parent
commit
d8e028d181
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 67
      account_bank_statement_import_ofx/README.rst
  2. 2
      account_bank_statement_import_ofx/__init__.py
  3. 24
      account_bank_statement_import_ofx/__manifest__.py
  4. 33
      account_bank_statement_import_ofx/i18n/account_bank_statement_import_ofx.pot
  5. 42
      account_bank_statement_import_ofx/i18n/de.po
  6. 38
      account_bank_statement_import_ofx/i18n/es.po
  7. 38
      account_bank_statement_import_ofx/i18n/fi.po
  8. 42
      account_bank_statement_import_ofx/i18n/fr.po
  9. 39
      account_bank_statement_import_ofx/i18n/fr_CH.po
  10. 38
      account_bank_statement_import_ofx/i18n/gl.po
  11. 43
      account_bank_statement_import_ofx/i18n/lt_LT.po
  12. 39
      account_bank_statement_import_ofx/i18n/nb_NO.po
  13. 42
      account_bank_statement_import_ofx/i18n/nl.po
  14. 43
      account_bank_statement_import_ofx/i18n/pt_BR.po
  15. 39
      account_bank_statement_import_ofx/i18n/pt_PT.po
  16. 42
      account_bank_statement_import_ofx/i18n/sl.po
  17. 1
      account_bank_statement_import_ofx/models/__init__.py
  18. 14
      account_bank_statement_import_ofx/models/account_journal.py
  19. BIN
      account_bank_statement_import_ofx/static/description/icon.png
  20. 1
      account_bank_statement_import_ofx/tests/__init__.py
  21. 87
      account_bank_statement_import_ofx/tests/test_import_bank_statement.py
  22. 100
      account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx.ofx
  23. 101
      account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx_iban.ofx
  24. 100
      account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx_wrong.ofx
  25. 12
      account_bank_statement_import_ofx/views/view_account_bank_statement_import.xml
  26. 1
      account_bank_statement_import_ofx/wizard/__init__.py
  27. 93
      account_bank_statement_import_ofx/wizard/account_bank_statement_import.py

67
account_bank_statement_import_ofx/README.rst

@ -0,0 +1,67 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License: AGPL-3
=========================
Import OFX Bank Statement
=========================
This module adds support for the import of bank statements in `OFX format <https://en.wikipedia.org/wiki/Open_Financial_Exchange>`_.
Bank Statements may be generated containing a subset of the OFX information (only those transaction lines that are required for the
creation of the Financial Accounting records).
Installation
============
The module requires one additional python lib:
* `ofxparse <http://pypi.python.org/pypi/ofxparse>`_
Usage
=====
.. 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
Known issues / Roadmap
======================
* None
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 smashing it by providing a detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Odoo SA
* Alexis de Lattre <alexis@via.ecp.fr>
* Laurent Mignon <laurent.mignon@acsone.eu>
* Ronald Portier <rportier@therp.nl>
* Sylvain LE GAL <https://twitter.com/legalsylvain>
* Nicolas JEUDY <https://github.com/njeudy>
* Le Filament <https://github.com/lefilament>
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 https://odoo-community.org.

2
account_bank_statement_import_ofx/__init__.py

@ -0,0 +1,2 @@
from . import models
from . import wizard

24
account_bank_statement_import_ofx/__manifest__.py

@ -0,0 +1,24 @@
{
'name': 'Import OFX Bank Statement',
'category': 'Banking addons',
'version': '12.0.1.0.0',
'license': 'AGPL-3',
'author': 'Odoo SA,'
'Akretion,'
'La Louve,'
'GRAP,'
'Nicolas JEUDY,'
'Le Filament,'
'Odoo Community Association (OCA)',
'website': 'https://odoo-community.org/',
'depends': [
'account_bank_statement_import',
],
'data': [
'views/view_account_bank_statement_import.xml',
],
'external_dependencies': {
'python': ['ofxparse'],
},
'installable': True,
}

33
account_bank_statement_import_ofx/i18n/account_bank_statement_import_ofx.pot

@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr ""
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid "The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

42
account_bank_statement_import_ofx/i18n/de.po

@ -0,0 +1,42 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-11 21:55+0000\n"
"PO-Revision-Date: 2017-04-11 21:55+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_bank_statement_import_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Kontoauszug importieren"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr "Open Financial Exchange (.OFX Money)"
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"Das folgende Problem ist beim Importieren aufgetreten. Die Datei ist dürfte "
"ungültig sein.\n"
"\n"
"%s"

38
account_bank_statement_import_ofx/i18n/es.po

@ -0,0 +1,38 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# 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-05-29 00:50+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-bank-statement-"
"import-8-0/language/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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importar extracto bancario"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

38
account_bank_statement_import_ofx/i18n/fi.po

@ -0,0 +1,38 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-19 03:39+0000\n"
"PO-Revision-Date: 2017-03-19 03:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Tuo pankkiaineisto"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

42
account_bank_statement_import_ofx/i18n/fr.po

@ -0,0 +1,42 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-11 21:55+0000\n"
"PO-Revision-Date: 2017-04-11 21:55+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importer Relevé Bancaire"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr "Open Financial Exchange (.OFX Money)"
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"Le problème suivant est survenu lors de l'importation. Le fichier n'est pas "
"valide.\n"
"\n"
"%s"

39
account_bank_statement_import_ofx/i18n/fr_CH.po

@ -0,0 +1,39 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-19 03:39+0000\n"
"PO-Revision-Date: 2017-03-19 03:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importer Relevé"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

38
account_bank_statement_import_ofx/i18n/gl.po

@ -0,0 +1,38 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-19 03:39+0000\n"
"PO-Revision-Date: 2017-03-19 03:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importar extracto bancario"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

43
account_bank_statement_import_ofx/i18n/lt_LT.po

@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-11 21:55+0000\n"
"PO-Revision-Date: 2017-04-11 21:55+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Lithuanian (Lithuania) (https://www.transifex.com/oca/"
"teams/23907/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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importuoti banko išrašą"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"Klaida. Failas gali būti sugadintas arba negaliojantis.\n"
"\n"
" %s"

39
account_bank_statement_import_ofx/i18n/nb_NO.po

@ -0,0 +1,39 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-19 03:39+0000\n"
"PO-Revision-Date: 2017-03-19 03:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importer bankutsagn"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

42
account_bank_statement_import_ofx/i18n/nl.po

@ -0,0 +1,42 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-11 21:55+0000\n"
"PO-Revision-Date: 2017-04-11 21:55+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/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"
#. module: account_bank_statement_import_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importeer bankafschrift"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"Het volgende probleem is opgetreden tijdens de import. Het bestand is "
"waarschijnlijk niet juist.\n"
"\n"
"%s"

43
account_bank_statement_import_ofx/i18n/pt_BR.po

@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-21 01:42+0000\n"
"PO-Revision-Date: 2017-11-21 01:42+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/"
"teams/23907/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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importar Extrato Bancário"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"O seguinte problema ocorreu durante a importação. O arquivo não deve ser "
"válido.\n"
"\n"
"%s"

39
account_bank_statement_import_ofx/i18n/pt_PT.po

@ -0,0 +1,39 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-19 03:39+0000\n"
"PO-Revision-Date: 2017-03-19 03:39+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/"
"teams/23907/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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Importar Extrato Bancário"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""

42
account_bank_statement_import_ofx/i18n/sl.po

@ -0,0 +1,42 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_bank_statement_import_ofx
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-11 21:55+0000\n"
"PO-Revision-Date: 2017-04-11 21:55+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/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_ofx
#: model:ir.model,name:account_bank_statement_import_ofx.model_account_bank_statement_import
msgid "Import Bank Statement"
msgstr "Uvoz bančnega izpiska"
#. module: account_bank_statement_import_ofx
#: model:ir.ui.view,arch_db:account_bank_statement_import_ofx.view_account_bank_statement_import_form
msgid "Open Financial Exchange (.OFX Money)"
msgstr ""
#. module: account_bank_statement_import_ofx
#: code:addons/account_bank_statement_import_ofx/wizard/account_bank_statement_import.py:81
#, python-format
msgid ""
"The following problem occurred during import. The file might not be valid.\n"
"\n"
" %s"
msgstr ""
"Med uvozom je prišlo do težav. Datoteka ni veljavna.\n"
"\n"
" %s"

1
account_bank_statement_import_ofx/models/__init__.py

@ -0,0 +1 @@
from . import account_journal

14
account_bank_statement_import_ofx/models/account_journal.py

@ -0,0 +1,14 @@
from odoo import models
class AccountJournal(models.Model):
_inherit = "account.journal"
def _get_bank_statements_available_import_formats(self):
""" Adds ofx to supported import formats.
"""
rslt = super(
AccountJournal,
self)._get_bank_statements_available_import_formats()
rslt.append('ofx')
return rslt

BIN
account_bank_statement_import_ofx/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 6.1 KiB

1
account_bank_statement_import_ofx/tests/__init__.py

@ -0,0 +1 @@
from . import test_import_bank_statement

87
account_bank_statement_import_ofx/tests/test_import_bank_statement.py

@ -0,0 +1,87 @@
from odoo.tests.common import TransactionCase
from odoo.modules.module import get_module_resource
import base64
import datetime
class TestOfxFile(TransactionCase):
"""Tests for import bank statement ofx file format
(account.bank.statement.import)
"""
def setUp(self):
super(TestOfxFile, self).setUp()
self.absi_model = self.env['account.bank.statement.import']
self.abs_model = self.env['account.bank.statement']
self.j_model = self.env['account.journal']
self.absl_model = self.env['account.bank.statement.line']
cur = self.env.ref('base.USD')
self.env.ref('base.main_company').currency_id = cur.id
bank = self.env['res.partner.bank'].create({
'acc_number': '123456',
'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 OFX',
'code': 'BNK12',
'type': 'bank',
'bank_account_id': bank.id,
})
bank_iban_ofx = self.env['res.partner.bank'].create({
'acc_number': 'FR7630001007941234567890185',
'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': 'FR7630001007941234567890185',
'code': 'BNK13',
'type': 'bank',
'bank_account_id': bank_iban_ofx.id,
})
def test_wrong_ofx_file_import(self):
ofx_file_path = get_module_resource(
'account_bank_statement_import_ofx',
'tests/test_ofx_file/', 'test_ofx_wrong.ofx')
ofx_file_wrong = base64.b64encode(open(ofx_file_path, 'rb').read())
bank_statement = self.absi_model.create(
dict(data_file=ofx_file_wrong))
self.assertFalse(bank_statement._check_ofx(data_file=ofx_file_wrong))
def test_ofx_file_import(self):
ofx_file_path = get_module_resource(
'account_bank_statement_import_ofx',
'tests/test_ofx_file/', 'test_ofx.ofx')
ofx_file = base64.b64encode(open(ofx_file_path, 'rb').read())
bank_statement = self.absi_model.create(
dict(data_file=ofx_file))
bank_statement.import_file()
bank_st_record = self.abs_model.search(
[('name', 'like', '123456')])[0]
self.assertEqual(bank_st_record.balance_start, 2516.56)
self.assertEqual(bank_st_record.balance_end_real, 2156.56)
line = self.absl_model.search([
('name', '=', 'Agrolait'),
('statement_id', '=', bank_st_record.id)])[0]
self.assertEqual(line.ref, '219378')
self.assertEqual(line.date, datetime.date(2013, 8, 24))
def test_check_journal_bank_account(self):
ofx_file_path = get_module_resource(
'account_bank_statement_import_ofx',
'tests/test_ofx_file/', 'test_ofx_iban.ofx')
ofx_file = base64.b64encode(open(ofx_file_path, 'rb').read())
bank_st = self.absi_model.create(
dict(data_file=ofx_file))
journal_iban_ofx = self.j_model.search([
('name', '=', 'FR7630001007941234567890185')])
res = bank_st._check_journal_bank_account(journal_iban_ofx,
'12345678901')
self.assertTrue(res)
bank_st.with_context(journal_id=journal_iban_ofx.id).import_file()

100
account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx.ofx

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="ASCII"?>
<?OFX OFXHEADER="200" VERSION="211" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20130831165153.000[-8:PST]</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>000000123</BANKID>
<ACCTID>123456</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-80</TRNAMT>
<FITID>219378</FITID>
<NAME>Agrolait</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219379</FITID>
<NAME>China Export</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-100</TRNAMT>
<FITID>219380</FITID>
<NAME>Axelor Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219381</FITID>
<NAME>China Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>2156.56</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
<CREDITCARDMSGSRSV1>
<CCSTMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<CCSTMTRS>
<CURDEF>USD</CURDEF>
<CCACCTFROM>
<ACCTID>123412341234</ACCTID>
</CCACCTFROM>
<BANKTRANLIST>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>-562.00</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</CCSTMTRS>
</CCSTMTTRNRS>
</CREDITCARDMSGSRSV1>
</OFX>

101
account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx_iban.ofx

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="ASCII"?>
<?OFX OFXHEADER="200" VERSION="211" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20130831165153.000[-8:PST]</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>30001</BANKID>
<BRANCHID>00794</BRANCHID>
<ACCTID>12345678901</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-80</TRNAMT>
<FITID>219378</FITID>
<NAME>Agrolait</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219379</FITID>
<NAME>China Export</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-100</TRNAMT>
<FITID>219380</FITID>
<NAME>Axelor Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219381</FITID>
<NAME>China Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>2156.56</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
<CREDITCARDMSGSRSV1>
<CCSTMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<CCSTMTRS>
<CURDEF>USD</CURDEF>
<CCACCTFROM>
<ACCTID>123412341234</ACCTID>
</CCACCTFROM>
<BANKTRANLIST>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>-562.00</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</CCSTMTRS>
</CCSTMTTRNRS>
</CREDITCARDMSGSRSV1>
</OFX>

100
account_bank_statement_import_ofx/tests/test_ofx_file/test_ofx_wrong.ofx

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="ASCII"?>
<?OFX OFXHEADER="200" VERSION="211" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20130831165153.000[-8:PST]</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<!-- <CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>000000123</BANKID>
<ACCTID>123456</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM> -->
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-80</TRNAMT>
<FITID>219378</FITID>
<NAME>Agrolait</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<!-- <DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219379</FITID> -->
<NAME>China Export</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-100</TRNAMT>
<FITID>219380</FITID>
<NAME>Axelor Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<BANKTRANLIST>
<DTSTART>20130801</DTSTART>
<DTEND>20130831165153.000[-8:PST]</DTEND>
<STMTTRN>
<TRNTYPE>POS</TRNTYPE>
<DTPOSTED>20130824080000</DTPOSTED>
<TRNAMT>-90</TRNAMT>
<FITID>219381</FITID>
<NAME>China Scuba</NAME>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>2156.56</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
<CREDITCARDMSGSRSV1>
<CCSTMTTRNRS>
<TRNUID>0</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<CCSTMTRS>
<CURDEF>USD</CURDEF>
<CCACCTFROM>
<ACCTID>123412341234</ACCTID>
</CCACCTFROM>
<BANKTRANLIST>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>-562.00</BALAMT>
<DTASOF>20130831165153</DTASOF>
</LEDGERBAL>
</CCSTMTRS>
</CCSTMTTRNRS>
</CREDITCARDMSGSRSV1>
</OFX>

12
account_bank_statement_import_ofx/views/view_account_bank_statement_import.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_account_bank_statement_import_form" 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">
<xpath expr="//ul[@id='statement_format']" position="inside">
<li>Open Financial Exchange (.OFX Money)</li>
</xpath>
</field>
</record>
</odoo>

1
account_bank_statement_import_ofx/wizard/__init__.py

@ -0,0 +1 @@
from . import account_bank_statement_import

93
account_bank_statement_import_ofx/wizard/account_bank_statement_import.py

@ -0,0 +1,93 @@
import logging
import io
from odoo import api, models, _
from odoo.exceptions import UserError
from odoo.addons.base_iban.models.res_partner_bank import _map_iban_template
from odoo.addons.base_iban.models.res_partner_bank import validate_iban
_logger = logging.getLogger(__name__)
try:
from ofxparse import OfxParser
except ImportError:
_logger.debug("ofxparse not found.")
OfxParser = None
class AccountBankStatementImport(models.TransientModel):
_inherit = 'account.bank.statement.import'
def _check_journal_bank_account(self, journal, account_number):
res = super(
AccountBankStatementImport, self
)._check_journal_bank_account(journal, account_number)
if not res:
e_acc_num = journal.bank_account_id.sanitized_acc_number
e_acc_num = e_acc_num.replace(" ", "")
validate_iban(e_acc_num)
country_code = e_acc_num[:2].lower()
iban_template = _map_iban_template[country_code].replace(
" ", "")
e_acc_num = "".join(
[c for c, t in zip(e_acc_num, iban_template) if t == "C"])
res = (e_acc_num == account_number)
return res
@api.model
def _check_ofx(self, data_file):
if not OfxParser:
return False
try:
ofx = OfxParser.parse(io.BytesIO(data_file))
except Exception as e:
_logger.debug(e)
return False
return ofx
@api.model
def _prepare_ofx_transaction_line(self, transaction):
# Since ofxparse doesn't provide account numbers,
# we cannot provide the key 'bank_account_id',
# nor the key 'account_number'
# If you read odoo10/addons/account_bank_statement_import/
# account_bank_statement_import.py, it's the only 2 keys
# we can provide to match a partner.
vals = {
'date': transaction.date,
'name': transaction.payee + (
transaction.memo and ': ' + transaction.memo or ''),
'ref': transaction.id,
'amount': float(transaction.amount),
'unique_import_id': transaction.id,
}
return vals
def _parse_file(self, data_file):
ofx = self._check_ofx(data_file)
if not ofx:
return super(AccountBankStatementImport, self)._parse_file(
data_file)
transactions = []
total_amt = 0.00
try:
for transaction in ofx.account.statement.transactions:
vals = self._prepare_ofx_transaction_line(transaction)
if vals:
transactions.append(vals)
total_amt += vals['amount']
except Exception as e:
raise UserError(_(
"The following problem occurred during import. "
"The file might not be valid.\n\n %s") % e.message)
balance = float(ofx.account.statement.balance)
vals_bank_statement = {
'name': ofx.account.number,
'transactions': transactions,
'balance_start': balance - total_amt,
'balance_end_real': balance,
}
return ofx.account.statement.currency, ofx.account.number, [
vals_bank_statement]
Loading…
Cancel
Save